WORLD OF WARCRAFT

Тема: Мастера LUA помогите пожалуйста  (Прочитано 3115 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Sloth2012

  • Новичок
  • *
  • Сообщений: 4

  • Варкрафт: +
    • Имя: Главмяспром
    • Класс: Рыцарь Смерти
    • Сервер: Ревущий Фьорд
Мастера LUA помогите пожалуйста
« : 09 Января, 2012, 10:11:17 »
  • Рейтинг:0 (+0 | 0)


Здравствуйте все, у меня возникла небольшая просьба,помогите разобратся со скриптом аддона, пробовал сам но в LUA я блин оказался как рестор друид - полным дубом.
Ситуация следующая-есть аддон в частности Fus Ro Dah - аддон добавляет звук при юзании определенных скилов,настроить его под своего персонажа проблем не вызвало однако хочу понять какие функции с кода убрать (те которые именно он задает)
чтоб получить исходный код- в кратце хочу просто тупо сделать второй похожий аддон но с другим звуком и на другие действия.

(показать/скрыть)
вот сам код,где менять звук и спеллы это все ясно, интересует что еще нужно поменять по моим догадкам я выделил зеленым несколько слов,но это я так понимаю не все) заранее спасибо за помощь доброго человека)
« Последнее редактирование: 09 Января, 2012, 10:12:51 by Sloth2012 »

Shestak

  • Завсегдатай
  • **
  • Сообщений: 164
Re: Мастера LUA помогите пожалуйста
« Ответ #1 : 09 Января, 2012, 10:57:31 »
  • Рейтинг:0 (+0 | 0)
Если тип твоей абилки "SPELL_CAST_SUCCESS" и для нее нужен иной звук, то код будет такой:
function frd_OnEvent(self,event,...)
local myGUID = UnitGUID("Player")
if event == "COMBAT_LOG_EVENT_UNFILTERED" then
local _, eventType, _, _, srcName = select(1, ...)
if (eventType == "SPELL_CAST_SUCCESS") and (srcName == UnitName("player")) then
local spellId = select(12,...);
if (spellId == 50516) or (spellId == 51490) then --typhoon, thunderstorm
PlaySoundFile("Interface\\AddOns\\fusrodah\\fusrodah.mp3")
elseif (spellId == другая_абила1) then
PlaySoundFile("Interface\\AddOns\\fusrodah\\другое_файло1.mp3")
end
end
end
end

local frame = CreateFrame("Frame", "frdFrame");

frame:SetScript("OnEvent", frd_OnEvent);
frame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED");

Ну, и далее, если нужно еще добавит звуков:
elseif (spellId == другая_абила2) then
PlaySoundFile("Interface\\AddOns\\fusrodah\\другое_файло2.mp3")
И дак далее.


Если тип абилки не "SPELL_CAST_SUCCESS", то "поднимаемся" выше в условиях, и код будет примерно такой:
function frd_OnEvent(self,event,...)
local myGUID = UnitGUID("Player")
if event == "COMBAT_LOG_EVENT_UNFILTERED" then
local _, eventType, _, _, srcName = select(1, ...)
if (eventType == "SPELL_CAST_SUCCESS") and (srcName == UnitName("player")) then
local spellId = select(12,...);
if (spellId == 50516) or (spellId == 51490) then --typhoon, thunderstorm
PlaySoundFile("Interface\\AddOns\\fusrodah\\fusrodah.mp3")
end
elseif (eventType == "BLABLA") and (srcName == UnitName("player")) then
...........
end
end
end

local frame = CreateFrame("Frame", "frdFrame");

frame:SetScript("OnEvent", frd_OnEvent);
frame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED");

http://www.wowwiki.com/API_COMBAT_LOG_EVENT

Sloth2012

  • Новичок
  • *
  • Сообщений: 4

  • Варкрафт: +
    • Имя: Главмяспром
    • Класс: Рыцарь Смерти
    • Сервер: Ревущий Фьорд
Re: Мастера LUA помогите пожалуйста
« Ответ #2 : 09 Января, 2012, 16:00:54 »
  • Рейтинг:0 (+0 | 0)
так спасибо все получилось.1 раз аддон ругнулся но сейчас все ок.
И такой еще интересный вопрос. вот как бы команда SPELL_CAST_SUCCESS ну тут понятно при касте. там есть еще _CAST_FAILED это я так понял каст не удался) ну если судить по переводу) но дело не в этом вот допустим петы, вызов пета допустим импа у приста - это будет SPELL_CAST_SUCCESS а когда он пропадает это будет относится к чему? ведь он не аура вроде и его не убили... конец каста тоже вроде как не подходит.
или это уже будет
UNIT_DIED
UNIT_DESTROYED
в прочем это уже так) ради интереса основное что надо было сделано

Shestak

  • Завсегдатай
  • **
  • Сообщений: 164
Re: Мастера LUA помогите пожалуйста
« Ответ #3 : 09 Января, 2012, 20:43:52 »
  • Рейтинг:0 (+0 | 0)

 

закрыть