Модератор форума: staford11 |
Форум Хитрости Пиратских серверов Читы для WoW Использование Lua скриптов. |
Использование Lua скриптов. |
Сообщение # 393 написано 05.01.2015 в 17:19
|
Есть, можно, только нужно отслеживать не только наличие дебафа, но и его стаки: if select(4,UnitBuff("player",GetSpellInfo(84586))) then RunMacroText("/cast Жетон победы гладиатора Катаклизма") end Добавлено (06.01.2015, 05:15) --------------------------------------------- Тоже интересует скрипт подобного рода, но только чтобы отслеживал 3 стака стрелы ледяного огня на цели. Тоже самое что описал выше Добавлено (06.01.2015, 05:26) --------------------------------------------- Добавить вычитание текущего времени из времени истекания дебафа Код Deduff = CreateFrame("Frame", "DeBuffFrame", UIParent); Deduff:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED"); Deduff:SetScript("OnEvent", function(self, event, arg1, arg2, ...) local enabled = GetItemCooldown("Медальон Орды") if(event=="COMBAT_LOG_EVENT_UNFILTERED") then if select(7,UnitDebuff("player",GetSpellInfo(IDДебафа))) - GetTime() == 777 --Указывать на какой секунде дебафа использовать or select(7,UnitDebuff("player",GetSpellInfo(IDДебафа))) - GetTime() == 777 --Указывать на какой секунде дебафа использовать then if enabled == 0 then RunMacroText("/use Медальон орды") end end end end) |
Deduff = CreateFrame("Frame", "DeBuffFrame", UIParent); Deduff:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED"); Deduff:SetScript("OnEvent", function(self, event, arg1, arg2, ...) local enabled = GetItemCooldown("Медальон Орды") if(event=="COMBAT_LOG_EVENT_UNFILTERED") then if select(7,UnitDebuff("player",GetSpellInfo(IDДебафа))) - GetTime() == 777 --Указывать на какой секунде дебафа использовать or select(7,UnitDebuff("player",GetSpellInfo(IDДебафа))) - GetTime() == 777 --Указывать на какой секунде дебафа использовать then if enabled == 0 then RunMacroText("/use Медальон орды") end end end end) После этого скрипта Wow зависает намертво
Сообщение # 396 написано 06.01.2015 в 15:44
|
/run if (not UnitDebuff("target", "Кровопускание", "PLAYER")) then RunMacroText("/cast [stance:2/3] Боевая стойка; Кровопускание;") end /run if UnitDebuff("target", "Кровопускание", "PLAYER") then RunMacroText("/cast Смертельный удар") end /run if (not UnitDebuff("target", "Смертельный удар", "PLAYER"))then RunMacroText("/cast [stance:2/3] Боевая стойка; Кровопускание;") end /cancelaura Длань защиты /cast Размашистые удары /startattack
Сообщение # 400 написано 06.01.2015 в 20:05
|
Сообщение # 402 написано 06.01.2015 в 20:41
|
Скорее всего проблема в самом "Player" ,видимо он не в том месте должен писаться... Домой приеду напишу, с фильтром верно все Добавлено (06.01.2015, 21:56) --------------------------------------------- http://wowprogramming.com/docs/api/UnitDebuff Уже многие в личку написали что значит select, отвечу всем Через функция select() я указываю какую сигнатуру(читай ретурн функции) надо использовать (по ссылке вверху "Signature") К примеру фунция UnitDebuff() возвращает следующее: name, rank, icon, count, dispelType, duration, expires, caster, isStealable, shouldConsolidate, spellID, canApplyAura, isBossDebuff, value1, value2, value3 Это и есть сигнатура функции. Пример: if select(4,UnitBuff("player",GetSpellInfo(84586))) == 3 Я выбрал сигнатуру count(колличество) и она должна равняться 3 что бы выполнялось условие. Для получения сигнатуры функции в игре достаточно использовать функцию print(). Например: /script print(UnitDebuff("target","Название дебафа")) или /script print(UnitBuff("player","Название бафа")) Вводить в чат. |
Кинь на цель дебаф и введи в чат /script print(UnitDebuff("target","Молот правосудия")) пришли результат Я тебе в лс написал рабочий скрипт к нему надо добавить проверку на время ( есть мысль по поводу local finish = endTime/1000 - GetTime() if finish <= 0.7 then Только переделать эту команду на начало а не конец Добавлено (06.01.2015, 22:37) Кинь на цель дебаф и введи в чат /script print(UnitDebuff("target","Молот правосудия")) пришли результат Я играю за Дк) немогу кинь стан паловский)
Сообщение # 406 написано 06.01.2015 в 22:37
|
Я тебе в лс написал рабочий скрипт к нему надо добавить проверку на время ( есть мысль по поводу local finish = endTime/1000 - GetTime() if finish <= 0.7 then Только переделать эту команду на начало а не конец Я увидел. Но я не знаю в каком порядке возвращает функция значения, поэтому попросил выполнить то что указал выше Добавлено (06.01.2015, 22:40) Придется найти способ +)
Сообщение # 407 написано 06.01.2015 в 22:40
|
И не должно, в чат должно было написать ответ функции. После того как ввел. Там же было что то? Попробуй это /script print(UnitDebuff("player","Молот правосудия")) Так же в чат ничего не выводится Добавлено (06.01.2015, 23:11) --------------------------------------------- \ Вообщем я прописал скрипт /script print(UnitDebuff("target","Черная чума")) и в чате появилось : Черная чума Interface\Icons\Spell_Shadow_NetherCloak 0 Disease 21 27500.543 player nil nil 51735 Добавлено (06.01.2015, 23:23) |
Код #show Смертельный удар /run if (not UnitDebuff("target", "Кровопускание", nil, "PLAYER"))then RunMacroText("/cast [stance:2/3] Боевая стойка; Кровопускание;") end /run if UnitDebuff("target", "Кровопускание", nil, "PLAYER")then RunMacroText("/cast Смертельный удар") end /cancelaura Длань защиты /cast Размашистые удары /startattack Или максимальный ранк подставляй туда. Щас должно работать |
Как буду дома, а буду дома завтра Добавлено (07.01.2015, 01:35) После Disease видимо идет оставшееся время Добавлено (07.01.2015, 01:39)
Сообщение # 412 написано 07.01.2015 в 01:39
|
Да я думаю ты прав) Как теперь вставить все это в скрипт) Deduff = CreateFrame("Frame", "DeBuffFrame", UIParent); Deduff:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED"); Deduff:SetScript("OnEvent", function(self, event, arg1, arg2, ...) if(event=="COMBAT_LOG_EVENT_UNFILTERED") then if UnitDebuff("player","Молот правосудия") or UnitDebuff("player","Смерч") or UnitDebuff("player","Удар по почкам") then local enabled = GetSpellCooldown("Каждый за себя") if enabled == 0 then RunMacroText("/use Каждый за себя") end end end end) Я знаю в java есть команда timeout ... незнаю есть ли что о подобное в луа ? так бы вставить задержку перед RunMacroText("/use Каждый за себя") |
if select(5,UnitDebuff("player","Черная чума") >= 20 и т.д Для проверки попал ли бы селектом в нужный ответ введи /script print(select(5,UnitDebuff("player","Черная чума"))) Первыми в чате должны появиться цифры времени до окончания
Сообщение # 418 написано 08.01.2015 в 01:46
|
| |||