• Страница 1 из 1
  • 1
Форум » Обсуждение аддонов » Разработка аддонов WoW » Условие
Условие
Nyll
Здравствуйте. Сегодня мы будем изучать условие "if".

Инструкция по созданию toc файла - тык
Ссылка на предыдущие статью - тык
Скачать notepad++ - тык
API функции - тык

Применять данное условие можно везде smile
С помощью условий можно сделать много вещей: проверки и т.д
Сегодня я покажу вам пару примеров работы с условием "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.
Маме беркута привет!
Сообщение # 1 отредактировано WJP - Вторник, 10.04.2012, 08:22
Juline
!1
Аддон, - результат твоих трудов, представишь?:)
Хоть все и банально, но иметь готовое решение с использованием ветвлений будет полезно.
Сообщение # 2 отредактировано Juline - Понедельник, 09.04.2012, 21:37
Mixek
✓Копатель Однодневок
салидно прикольно , молодец

p.s думал это тот гм адон sad
https://vk.com/mixek
Сообщение # 3 написано 09.04.2012 в 22:33
Dimasta_d
Сержант
Nyll, Ну как всегда, на высоте! ok
Качественный сервер
Высокая работоспособность, много особенностей, лучший сервис!
Сообщение # 4 написано 10.04.2012 в 00:01
Meldo
Капрал
базовые уроки никогда не помешают smile
глядишь научимся сами писать элементарные повседневные аддоны smile
Crack The World
Сообщение # 5 отредактировано Meldo - Вторник, 10.04.2012, 14:13
Форум » Обсуждение аддонов » Разработка аддонов WoW » Условие
  • Страница 1 из 1
  • 1
Поиск: