Помощь - Поиск - Пользователи - Календарь
Полная версия: Prompt динамической длинны
UoKit.com Форумы > Кликер > UO Pilot
DarkMaster
Есть некий массив %arr, его длинна неизвестна и может меняться. С помощью prompt необходимо выбрать один из элементов массива %arr. Идеи?
Zeleax
1) Надо в пожелания добавить возможность создания prompt из массива.
2) а сейчас может можно извратиться: записать из массива в полноценный скрипт на диск, а потом его загрузить (load_script) и использовать в кач-ве подпрограммы
DarkMaster
в принципе 2 вариант допустим. тут главное результат вернуть нормальный.
WKnight
3) как временное решение: завести пачку переменных по максимальному количеству элементов массива, в промпт передавать эти переменные, предварительно инициализированные элементами массива.
DarkMaster
Цитата
3) как временное решение: завести пачку переменных по максимальному количеству элементов массива, в промпт передавать эти переменные, предварительно инициализированные элементами массива.

Тогда появляется другой косяк. Все что в промпте идет после пустых переменных отсекается(там не только массив), но это проще перекроить уже.
cirus
Delete
DarkMaster
Крут! Нужная вещь.
cirus
Чуть подправил. При повторном вызове 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                       //результат выбора
фонарик
Подскажите пожалуйста, а как быть если вариант выбора содержит пробелы между словами? Не могу придумать чтобы работало 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                       //результат выбора

Изображение
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.