Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Prompt динамической длинны
DarkMaster
сообщение 14.4.2012, 13:25
Сообщение #1


***********

Модератор UOPilot
Сообщений: 9.465
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27680
Пользователь №: 11.279



Есть некий массив %arr, его длинна неизвестна и может меняться. С помощью prompt необходимо выбрать один из элементов массива %arr. Идеи?


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 14.4.2012, 16:54
Сообщение #2


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



1) Надо в пожелания добавить возможность создания prompt из массива.
2) а сейчас может можно извратиться: записать из массива в полноценный скрипт на диск, а потом его загрузить (load_script) и использовать в кач-ве подпрограммы


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 14.4.2012, 17:02
Сообщение #3


***********

Модератор UOPilot
Сообщений: 9.465
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27680
Пользователь №: 11.279



в принципе 2 вариант допустим. тут главное результат вернуть нормальный.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
WKnight
сообщение 15.4.2012, 14:20
Сообщение #4


********

Разработчик UO Pilot'а
Сообщений: 1.639
Регистрация: 9.1.2006
Группа: Пользователи
Наличность: 0
Пользователь №: 4.688



3) как временное решение: завести пачку переменных по максимальному количеству элементов массива, в промпт передавать эти переменные, предварительно инициализированные элементами массива.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 15.4.2012, 15:38
Сообщение #5


***********

Модератор UOPilot
Сообщений: 9.465
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27680
Пользователь №: 11.279



Цитата
3) как временное решение: завести пачку переменных по максимальному количеству элементов массива, в промпт передавать эти переменные, предварительно инициализированные элементами массива.

Тогда появляется другой косяк. Все что в промпте идет после пустых переменных отсекается(там не только массив), но это проще перекроить уже.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 12.2.2016, 4:34
Сообщение #6


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26702
Пользователь №: 16.971
Возраст: 29



Delete
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 12.2.2016, 4:36
Сообщение #7


***********

Модератор UOPilot
Сообщений: 9.465
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27680
Пользователь №: 11.279



Крут! Нужная вещь.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 19.2.2016, 2:27
Сообщение #8


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26702
Пользователь №: 16.971
Возраст: 29



Чуть подправил. При повторном вызове eval выдавал ошибку, т. к. существующая переменная #a воспринималась как число, а не имя переменной.
код
Код
set %a [1] 123
set %a [2] 456
set %a [3] 789
set %a [4] abc
set %a [5] def

set $a         //очищаем строку
for #i 1 size(%a)
   set $a $a %a[#i]       //создаём строку из всех элементов массива
end_for

set $b "prompt ($a ())"
set %b [1] "#a"          
eval (set %b[1] $b)              //выводим prompt
log #a                       //результат выбора
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
фонарик
сообщение 26.9.2021, 13:59
Сообщение #9


****

Apprentice
Сообщений: 145
Регистрация: 23.11.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 14.305



Подскажите пожалуйста, а как быть если вариант выбора содержит пробелы между словами? Не могу придумать чтобы работало (IMG:style_emoticons/default/sad.gif)
Код
set %a [1] Дядя Вася
set %a [2] 'Раз ковбой'
set %a [3] "Два ковбой"

set $a         //очищаем строку
for #i 1 size(%a)
   set $a $a %a[#i]       //создаём строку из всех элементов массива
end_for

set $b "prompt ($a ())"
set %b [1] "#a"
eval (set %b[1] $b)              //выводим prompt
log #a                       //результат выбора

(IMG:https://i115.fastpic.org/thumb/2021/0926/8e/888639f7f8b253a407d72f65b82f308e.jpeg)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 19.4.2024, 7:08
Designed by Nickostyle