|
Форум Обсуждение аддонов Разработка аддонов WoW Авто-DND |
Авто-DND |
Здравствуйте! Сегодня я скажу как сделать аддон AutoDND.
Этот аддон включает режим "Не беспокоить" когда вы в бою. Инструкция по созданию toc файла - тык Ссылка на предыдущие статью - тык Скачать notepad++ - тык API функции - тык Ну что начнем. Для начала создадим функцию, которая будет содержать в себе SendChatMessage. Code function DNDmessage(text) Дальше указываем SndChatMessage Code SendChatMessage(text, "DND", nil,nil); Как вы могли заметить, канал отправки сообщения стоит "DND". Дальше закрываем функцию. Code end Теперь создаем переменную, которая в дальнейшем будет показывать зону в которой мы ведем бой. Code local locationplayer = GetZoneText() Делаем фрейму которая будет запускать наш AutoDND. Code local frame=CreateFrame("FRAME") Делаем SetScript который реагирует на включение ивента. Code frame:SetScript("OnEvent",function(self,event,arg) Делаем условие: Если ивент PLAYER_REGEN_DISABLED то >> Запускаем OnEventCombat(). Если первый не запускается, запускаем OFFEventCombat() Code if event=="PLAYER_REGEN_DISABLED" then OnEventCombat() else OFFEventCombat() end Теперь закрываем нашу функцию. Code end) Теперь регистрируем ивенты. Code frame:RegisterEvent("PLAYER_REGEN_DISABLED") frame:RegisterEvent("PLAYER_REGEN_ENABLED") Делаем функцию, с сообщением когда мы в бою. Code function OnEventCombat() Делаем сообщение которое будет отображаться если вам написали в пм. Code DNDmessage("Я занят. Веду бой в "..locationplayer) Закрываем функцию. Code end Дальше делаем функцию с помощью которой мы будем отключать DND. Code function OFFEventCombat() DNDmessage("") end Весь код, который у нас должен получится. Code function DNDmessage(text) SendChatMessage(text, "DND", nil,nil); end local locationplayer = GetZoneText() local frame=CreateFrame("FRAME") frame:SetScript("OnEvent",function(self,event,arg) if event=="PLAYER_REGEN_DISABLED" then OnEventCombat() else OFFEventCombat() end end) frame:RegisterEvent("PLAYER_REGEN_DISABLED") frame:RegisterEvent("PLAYER_REGEN_ENABLED") function OnEventCombat() DNDmessage("Я занят. Веду бой в "..locationplayer) end function OFFEventCombat() DNDmessage("") end Вот и все! Кстати, если вам будет надоедать сообщение в чате, типа "Вы вошли в не беспокоить...", можете поставить фильтр такой: Code function DnDSpam(self,event,msg) local dndsp = {"Вы ","%заняты.", "%вышли из режима"} local matchCount = 0; for _, word in ipairs(dndsp) do if (string.match(msg, word)) then matchCount = matchCount + 1; end end if (matchCount > 1) then return true; else return false; end end ChatFrame_AddMessageEventFilter("CHAT_MSG_SYSTEM",DnDSpam) Вот и все! Удачи вам!
Маме беркута привет!
|
Quote (Мартин) на сколько я знаю,есть аддон,называется "Easydnd",если мне не изменяет память,он делает тоже самое. Возможно есть я хз Я долго думал на какую тему писать гайд. Я вспомнил что с днд не делал вот и написал А изначально я хотел сделать по типу DBM.
Маме беркута привет!
Сообщение # 7 написано 03.06.2012 в 14:38
|
| |||
| |||