|
Форум Обсуждение аддонов Разработка аддонов WoW Локальные переменные |
Локальные переменные |
Здравствуйте! Сегодня мы будем учиться использовать локальные переменные в тексте.
Полезные ссылки: Инструкция по созданию toc файла - тык Ссылка на предыдущие статью - тык Скачать notepad++ - тык API функции - тык Делаем папку для аддона в ней TOC, LUA файлы. Открываем LUA файл и меняем кодировку на UTF-8. Теперь делаем саму локальную переменную. (У нас их будет 3 т.е 1. Версия аддона 2. Название аддона 3. Автор) Первая локальная переменная - это версия аддона: Code local addonversion = "1.1" В скобочках пишем версию аддона. Вторая переменная у нас название аддона: Code local addonname = "Scruffy" В скобочках пишем название аддона. И третья переменная у нас автор аддона: Code local author = "Nyll" В скобках пишем свой ник. Теперь я покажу, как использовать переменные в коде, а именно в тексте. Первый пример будет только использование версии аддона. Создаем функцию: Code function test_addon_version(msg) В функции пишем: Code print("Аддон Scruffy "..addonversion..".") Т.е мы вписуем локальную переменную так: "..addonversion.." Теперь закрываем функцию: Code end И делаем слеш команду для ее активации: Code SlashCmdList["TESTING"] = test_addon_version; SLASH_TESTING1 = "/testv"; Теперь покажу как использовать 2 локальных переменных, а именно: Название аддона и версию аддона. Так как и в первый раз создаем функцию: Code function test_addon_version(msg) В ней пишем: Code print("Аддон "..addonname.." v"..addonversion..".") Вот вы видите, что мы теперь использовали 2 локальных переменных: "..addonversion.." и "..addonname.." Закрываем функцию: Code end И делаем слеш команду: Code SlashCmdList["TESTINGG"] = test_addon_name; SLASH_TESTINGG1 = "/testn" Теперь будем использовать все 3 локальных переменных: Версию, Название аддона, Автора. Создаем функцию: Code function test_addon_author(msg) В ней пишем: Code print("Аддон "..addonname.." v"..addonversion.." создал: "..author..".") Вот теперь мы использовали 3 локальных переменных: "..addonname..", "..addonversion..", "..author.." Теперь закрываем функцию: Code end И делаем слеш команду: Code SlashCmdList["TESTINGGG"] = test_addon_author; SLASH_TESTINGGG1 = "/testa" Вот как у меня выглядит код: Вот и конец статьи, след статья будет в след пятницу. Удачи вам! Прикрепления:
9186991.png
(41.1 Kb)
Маме беркута привет!
|
Quote (EnerGO) Возможно тупйо вопрос НО что дает данный аддон ? Вопрос действительно тупой. Посмотри на название темы. В аддоне, обычно, используются: 1. LUA 2. XML 3. WOW API: http://api.wowjp.net/ Если знать это, то ты сможешь написать аддон. Можно даже без 2й составляющей. Основа - это LUA, - на нем пишутся все скрипты. Посмотри в название, данный урок, в большей мере, направлен на то, чтобы показать, как создавать локальные переменные в LUA и потом использовать их. Также, показаны описания функций. LUA используется очень широко: скриптовка НПС в играх, при написании аддонов для других игр (rift etc.), подключается при работе с нескриптовыми языками программирования... К примеру, если писать адекватный калькулятор с разбором текста, для выполнения самих подсчетов можно ЛУА использовать и не составлять никаких парсеров. По сути, будет только оболочка и подключение скрипта луа, который состоит их 2х строк. Такие вещи можно было увидеть во всех предыдущих статьях, практически, так что, кто понимал предыдущий код, нового для себя тут ничего не увидит. Кто хочет научиться писать аддоны: учите синтаксис луа, начинайте читать статьи NYLL с первой и научитесь использовать вовапи... Надеюсь, что хоть кто-то это понимает. Не мог сдержаться просто. Ответ по теме: данный аддон инициализирует 3 различные слэш команды: /testv, /testn, /testa.
Сообщение # 4 написано 18.02.2012 в 23:11
|
Quote (S|er|G) а мне вот интересно, как будет выглядеть функция, которая будет брать значение, которое задаст сам пользователь Не знаю, насколько понял вопрос. Существует много вариантов ввода есть. Самый простой, на мой взгляд - через ту же слэш команду. Прототип обработчика слэш команды имеет вид: Code function handler(msg, edit) Второй параметр не всегда пишут, но, нужно. Первый параметр msg - это то, что ты ввел в слэш команде. Code SLASH_TEST1 = '/testme'; local function handler(msg, editbox) if msg == 'www' then print('VAR1'); else print('VAR2'); end end SlashCmdList["TEST"] = handler; Теперь, если ты параметром слэш команды передашь www, то получишь сообщение от аддона VAR1, иначе - VAR2. Code /testme www Ввести данные можно через эдитбоксы и т.п.
Сообщение # 7 написано 20.02.2012 в 21:21
|
чем локальная переменная отличается от простой переменной ?
ссылка на локальную переменную действительна только в пределах луа файла ? насколько я знаю, локальные переменные весят в памяти и после выполнения скрипта или я не прав ?
Сообщение # 8 написано 10.01.2013 в 11:56
|
Глобальная переменная видна из всех файлов программы, т.е. можно получить доступ к ней свободно(тем самым непреднамеренно навредить ей). Локальные видны внутри какой-то структуры программы(класс, метод, цикл, условия, структура и т.д.). Вообще лучше использовать локальные, но если уж сильно нужно, то можна глобальные, но такие переменные в основном используются как константы(например в мат. функциях, или неизменяемые пути к БД, файлам и т.д.). В общем использовать тот или иной вид переменной зависит от задачи, но рекомендуется пользоваться локальными.
Сообщение # 11 написано 09.08.2019 в 13:22
|
Хотелось бы добавить, что использование большого количества глобальных переменных в lua может повлиять на производительность (если интересно, можно почитать про _G), не думаю, что это как-то скажется в работе маленького аддона, но если проект большой и многопоточный, то может сыграть роль. И, если судить по моему опыту, когда в lua очень нужно поюзать глобальную переменную, то лучше её поюзать, а не писать ещё тонну кода для передачи этой переменной. p.s.: если задаетесь такими вопросами, то советую почитать Роберту Иерузалимски Программирование на lua p.s.s.: пример со структурой и классом не очень корректный. Реализация класса на lua это либо проявление большого интереса к lua, либо крайняя степень отчаянья (прим. upvalues тоже может привести к проблемам оптимизации).
Сообщение # 12 написано 10.08.2019 в 18:30
|
| |||
| |||