|
Форум Обсуждение аддонов Разработка аддонов WoW Условие |
Условие |
Здравствуйте. Сегодня мы будем изучать условие "if".
Инструкция по созданию toc файла - тык Ссылка на предыдущие статью - тык Скачать notepad++ - тык API функции - тык Применять данное условие можно везде С помощью условий можно сделать много вещей: проверки и т.д Сегодня я покажу вам пару примеров работы с условием "if". Начнем с проверки на ошибку. Допустим, мы хотим написать аддон, который будет приветствовать по таргету. Создаем функцию: Code function hellotarget() Делаем локальную переменную, которая будет выводить имя персонажа, находящегося в таргете: Code local name = UnitName("target") Дальше делаем сообщение: Code SendChatMessage("Привет "..name.." как твои дела?") Закрываем функцию "end". Делаем следующую слеш команду: Code SlashCmdList["HELLO_TARGET"] = hellotarget SLASH_ HELLO_TARGET1 = "/thello" У нас есть "привет" по таргету. Но что делать, если у вас нету никого в таргете? При включении функции "Ошибки сценария луа", вам выдаст ошибку, но при этом нечего не произойдет. Давайте исправим это. Создаем событие. (Событие if должно закрываться с помощью "end") Code if (not name) then print("Ошибка! Не выбран персонаж") return end Этим выражениям мы даем понять клиенту, что если у нас нету "name" или оно пустое, то мы получаем сообщение ошибки. Code print("Ошибка! Не выбран персонаж") if (not name) - Если нету "name" then - То print("Ошибка! Не выбран персонаж") - Сообщение об ошибке. Теперь давайте рассмотрим пример создание слеш команды с условием. Создаем функцию: Code function slashtest(msg) В функции делаем условие: Code if (msg == "1") then print("Вы выбрали условие 1") Далее делаем условие под номером 2 Code elseif (msg == "2") then print("Выбрано условие 2") Теперь делаем условие "else" Оно будет включаться в том случае, если у вас не выбрано условие под номером 1 или 2. Code else print("Выберите условие 1 или 2") Далее закрываем наш if и функцию. Code end end Можно закрыть и таким способом: Code end end Подробнее о переноси строк можно прочесть в предыдущей статье. Теперь делаем слеш команду для нашей функции: Code SlashCmdList["IF_TESTINGS"] = slashtest; SLASH_ IF_TESTINGS 1 = "/var"; Вот и все. При вводе /var 1 или /var 2 у нас будет включатся условие под номером 1 или 2. При вводе команды /var без значения, будет включаться условие "else", выводящее сообщение об ошибке. Теперь давайте рассмотрим пример включения/отключения чего-либо. Создадим функцию: Code function ifnums() В функции указываем следующую переменную: Code nums = {} Далее делаем условие "Если нету nums, то ..." Code if not nums then nums = 1 print("Врублен") Этим выражением мы написали "Врублен" и зарегистрировали переменную. Затем делаем "Анрегистрацию" Теперь мы используем выражение "else". Code else nums = nil print("Вырублен") Этим мы разрегистрировали нашу переменную и вернулись к условию 1. Закрываем функцию и условие "if": Code end end Делаем слеш команду: Code SlashCmdList["SNUMS"] = ifnums; SLASH_SNUMS1 = "/inums"; Теперь при вводе "/inums" 1 раз будет выведено сообщение "Включено", при вводе 2 раза "Выключено". Давайте рассмотрим еще одну полезную функцию. Как хранить функции в таблице? Создадим обработчик. Code function switch(t) function t.functions(self,x) local f=self[x] if type(f)=="function" then f(x,self) end end return t end Далее создадим переменную, которая будет выводить наше имя. Code players = UnitName("player"); Теперь создадим таблицу наших функций. Code a = switch { [1] = function (x) SendChatMessage("Запуск функции 1") end, [2] = function (x) SendChatMessage("Запуск функции 2") end, ["hello"] = function (x) print("Привет "..players) end, } При добавлении каждой из функции в значение "[]" добавляем +1. Например: Если у последней функции номер 3, то у следующей будет 4. Эти номера свое рода "Ключи", с помощью которых мы будем ссылаться на функцию. Прошу заметить то, что ключи можно указывать цифрами и буквами. Теперь указываем "Ссылку" на функцию в таблице. Code a:functions("hello") Данная "Ссылка" указывает на 3 функцию, которая будет писать нам "Привет" при каждом входе в игру. Прошу заметить, если вы поставите "Ссылку" выше самой таблицы с функциями, то может возникнуть ошибка из-за порядка регистрации. Далее создаем функцию с условиями. Code function runing(msg) if msg == "1" then a:functions(1) elseif msg == "2" then a:functions(2) else print("Выберите вариант 1 или 2") end end В данной функции показаны 3 условия if,elseif,else. Условие if и elseif запускает одну из двух ссылок на функцию. Теперь можно создать слеш команду. Code SlashCmdList["MASSIV_FUNCTION"] = runing; SLASH_MASSIV_FUNCTION1 = "/frun" На этом я закончу. Удачи вам. За помощь в написании статьи спасибо модератору Pr.
Маме беркута привет!
|
Nyll, Ну как всегда, на высоте!
Качественный сервер
Высокая работоспособность, много особенностей, лучший сервис!
Сообщение # 4 написано 10.04.2012 в 00:01
|
| |||
| |||