|
|
|
Имя переменной = имя массива, Получить все значения из одноименного массива |
|
|
фонарик |
24.11.2020, 21:51
|
Apprentice
Сообщений: 145
Регистрация: 23.11.2011 Группа: Пользователи Наличность: 0
Пользователь №: 14.305
|
В переменную $var присваивается значение, которое соответствует имени массива. Обратиться к какому-либо значению одноименного массива можно просто %$var[1] А как, например, узнать размер одноименного массива, чтобы можно было в цикле перебрать все его значения? Подскажите пожалуйста. Код set $var vegetables
init_arr %fruits apple, orange, pineapple, banana init_arr %vegetables potato, tomato, onion init_arr %berry strawberry, raspberry, blueberry
|
|
|
|
фонарик |
24.11.2020, 22:34
|
Apprentice
Сообщений: 145
Регистрация: 23.11.2011 Группа: Пользователи Наличность: 0
Пользователь №: 14.305
|
lua я не осиляю, привык к обычным скриптам да и быстродействие в них мне не нужно. Помнится, на javascript я использовал данный способ, по-моему, у меня так строились взаимозависимые списки раскрывающиеся.
Мне нужно персонажу задать динамический маршрут из динамичной точки где он находится, в динамическую точку назначения. Грубо говоря, есть 16 квадратов (каждый комната). 4 ряда. Разное кол-во комнат в ряду. Из каждой комнаты есть проходы в другие комнаты (в смежные). Я хотел задать массив для каждой комнаты, задать массиву все проходы в этой комнате. Каждый проход чтобы равнялся другому массиву, чтобы можно было таким образом просчитать методом перебора путь, пока не совпадет с конечной комнатой. Как по другому решить эту задачу теперь вообще не знаю.
|
|
|
|
фонарик |
25.11.2020, 15:17
|
Apprentice
Сообщений: 145
Регистрация: 23.11.2011 Группа: Пользователи Наличность: 0
Пользователь №: 14.305
|
Даа, спасибо вам в очередной раз DarkMaster за всегда полезные советы и наводки. Нашел я скрипт господина cirus, посмотрел что он делает, аж глаз задергался (IMG: style_emoticons/default/shok.gif) У меня задача намного проще, как оказалось. И вы правильно заметили: логика самое главное. Я понял, что изобретал правильный велосипед, хоть и не являюсь носителем правильной логики. Отсюда, наверное, и странные вопросы у меня.
|
|
|
|
фонарик |
4.12.2020, 23:11
|
Apprentice
Сообщений: 145
Регистрация: 23.11.2011 Группа: Пользователи Наличность: 0
Пользователь №: 14.305
|
Цитата А как, например, узнать размер одноименного массива Случайно как-то, методом тыка обнаружил возможность: Код set $var vegetables
init_arr %fruits apple, orange, pineapple, banana init_arr %vegetables potato, tomato, onion init_arr %berry strawberry, raspberry, blueberry
eval (set %TempArr %$var) msg size(%TempArr) А дальше с массивом TempArr можно работать как с нормальным. Может кому пригодится (IMG: style_emoticons/default/biggrin.gif)
|
|
|
|
фонарик |
5.4.2021, 13:24
|
Apprentice
Сообщений: 145
Регистрация: 23.11.2011 Группа: Пользователи Наличность: 0
Пользователь №: 14.305
|
А как на Lua решить подобную задачу? Волшебный eval там вовсе какой-то не волшебным оказался (IMG: style_emoticons/default/sad.gif) Цитата --lua log ("clear") log ("mode compact")
local choice_ = {'Раз', 'Два', 'Три'} local defaultNum = 1 local TmpChoice = "choice_" .. defaultNum log(TmpChoice) --выведет текст choice_1 Если мне надо из кусков текста собрать что-то, что за собой хранит нужный набор данных, как это делается? Жаль здесь нет темы что-то типа "Общие вопросы" или в таком духе. Постоянно возникает тьма каких-то мимолетных вопросов, не заслуживающих отдельного топика (IMG: style_emoticons/default/unsure.gif)
|
|
|
|
Madeus |
5.4.2021, 13:42
|
Apprentice
Сообщений: 283
Регистрация: 19.11.2019 Группа: Пользователи Наличность: 8459
Пользователь №: 19.451
Возраст: 32
|
Цитата(фонарик @ 5.4.2021, 13:24) А как на Lua решить подобную задачу? Волшебный eval там вовсе какой-то не волшебным оказался (IMG: style_emoticons/default/sad.gif) Если мне надо из кусков текста собрать что-то, что за собой хранит нужный набор данных, как это делается? Жаль здесь нет темы что-то типа "Общие вопросы" или в таком духе. Постоянно возникает тьма каких-то мимолетных вопросов, не заслуживающих отдельного топика (IMG: style_emoticons/default/unsure.gif) Если правильно понял что ты хочешь Код --lua log ("clear") log ("mode compact")
local choice_ = {'Раз', 'Два', 'Три'} local defaultNum = 1 local TmpChoice = choice_[defaultNum] log(TmpChoice)
|
|
|
|
DarkMaster |
5.4.2021, 14:13
|
Модератор UOPilot
Сообщений: 9.465
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27680
Пользователь №: 11.279
|
Цитата Жаль здесь нет темы что-то типа "Общие вопросы" или в таком духе. Постоянно возникает тьма каких-то мимолетных вопросов, не заслуживающих отдельного топика Как-то она появилась. Это одна из двух-трех закрытых мной тем за прошедшие 10 лет. Просто потому, что потом получается свалка. Любой вопрос заслуживает темы хотя бы потому, что потом можно будет найти ответ снова. В мегасвалке - нет. Цитата Если мне надо из кусков текста собрать что-то, что за собой хранит нужный набор данных, как это делается? loadstring (string [, chunkname]) Similar to load, but gets the chunk from the given string. To load and run a given string, use the idiom assert(loadstring(s))() When absent, chunkname defaults to the given string.
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
фонарик |
5.4.2021, 15:12
|
Apprentice
Сообщений: 145
Регистрация: 23.11.2011 Группа: Пользователи Наличность: 0
Пользователь №: 14.305
|
Чтобы получить нужный тебе ответ, нужно задать правильный вопрос. С этим всегда сложно. Почистить весь кеш из головы, убрать все второстепенное, оставить самое важное. Сейчас я понял что задал неправильный вопрос. Вот есть массивы Код local choice_1 = {'Раз', 'Два', 'Три'} local choice_2 = {'Котик', 'Мишка', 'Тигрёнок'} Как видно они отличаются цифровым номером. Допустим, есть код который возвращает число, например 1 или 2 в виде переменной Код Дальше мне нужно обратиться соответственно к массиву choice_2. Я пытался получить имя массива при помощи конкатенации Код local TmpChoice = "choice_" .. defaultNum Теперь TmpChoice имеет правильное имя: choice_2. Но это не массив choice_2, а просто строковая переменная. А как получить доступ именно к массиву?Да, DarkMaster по моему примеру на простых скриптах пилота говорил мне выше, что это неправильно когда имя массива динамическое. Но меня это не расстраивает, и на скриптинге пилота мне удалось разрешить этот вопрос. 8 пост в этой теме. А как сделать тоже самое на Lua ? eval тут не работает, он строки не превращает в одноимённые массивы (IMG: style_emoticons/default/sad.gif)
|
|
|
|
DarkMaster |
5.4.2021, 23:52
|
Модератор UOPilot
Сообщений: 9.465
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27680
Пользователь №: 11.279
|
Цитата Аха, понял smile.gif Ребят спасибо вам большое thanks.gif Оказывается, так можно было )) На самом деле можно вообще свинячить. Код --lua log(_G) local f = "fantasy" _G["my_crazy_"..f] = {"кутяпликов","ловить", "пора", time = 10} log(my_crazy_fantasy[1]) log(my_crazy_fantasy.time) end_script () _G это таблица со всеми глобальными именами. Там содеражтся все глобальные переменные, загруженные модули и т.д. Соответственно мы можем создать некоторый элемент с произвольным именем. Единственное, он будет глобальным, что не правильно, но допустимо, а в некоторых случаях необходимо. фонарик, вообще с таким подходом именования массивов ты подал идею шикарного прикола. Это написать какой-нибудь баг через поднобное именование и отдать тестеру. Ищи где проблема. Можно вешаться) Фишка в том, что даже если ты примитивно ударишь поиском чтобы найти все обращения к массиву, то ты не найдешь этого))) имя то сгенерированное и на этапе генерации там вообще, что угодно может быть. А потом массив из неоткуда и забаганный. Так, мне срочно нужен тестер, который не читает данный форум)))
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|