• Страница 1 из 1
  • 1
Авто-DND
Nyll
Здравствуйте! Сегодня я скажу как сделать аддон 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)


Вот и все! Удачи вам!
Маме беркута привет!
Сообщение # 1 отредактировано Nyll - Воскресенье, 03.06.2012, 20:54
Ascreed
•°•Very Nice•°•
работает=) вот только каждый раз после пвп приходится отключать
Сообщение # 2 написано 02.06.2012 в 21:39
Kante
Born To be Free
Ну ясное дело , что он робит. Не робил бы он не кинул biggrin
Сообщение # 3 написано 02.06.2012 в 22:17
Nyll
Ascreed, я это предусматривал больше как для PVE...
Маме беркута привет!
Сообщение # 4 написано 03.06.2012 в 04:26
Craks
Капрал
полезный аддон, давно искал что-то подобное)
Сообщение # 5 написано 03.06.2012 в 11:05
Мартин
♫Deep In Love♫
на сколько я знаю,есть аддон,называется "Easydnd",если мне не изменяет память,он делает тоже самое.
Сообщение # 6 написано 03.06.2012 в 13:15
Nyll
Quote (Мартин)
на сколько я знаю,есть аддон,называется "Easydnd",если мне не изменяет память,он делает тоже самое.

Возможно есть я хз smile Я долго думал на какую тему писать гайд. Я вспомнил что с днд не делал вот и написал smile А изначально я хотел сделать по типу DBM.
Маме беркута привет!
Сообщение # 7 написано 03.06.2012 в 14:38
filer
Скаут
Сообщение # 8 отредактировано filer - Понедельник, 04.06.2012, 08:53
  • Страница 1 из 1
  • 1
Поиск: