| Модератор форума: staford11 |
| Форум Хитрости Пиратских серверов Читы для WoW Использование Lua скриптов. |
| Использование Lua скриптов. |
gett_lock, все проверки на спеллы можно вынести в отдельную функцию:
Код function IsUsableNow() if not (UnitDebuff("target", "Спелл1")) and not (UnitDebuff("target", "Спелл2")) and not (UnitDebuff("target", "Спелл3")) then return true else return false end end if (IsUsableNow()) and (IsSpellInRange("Спелл4")) and (GetSpellCooldown("Спелл4") == 0) then CastSpellByName("Спелл4", "target") end if (IsUsableNow()) and (IsSpellInRange("Спелл5")) and (GetSpellCooldown("Спелл5") == 0) then CastSpellByName("Спелл5", "target") end
Сообщение # 1891 написано 29.08.2016 в 19:24
|
staford11 может ты знаешь где тут ошибка.
при условии что ты используешь через PQRif UnitExists("pet") and not UnitIsDead("pet") and PQR_SpellAvailable(1742) and (100 * UnitHealth("pet") / UnitHealthMax("pet")) < 70 then CastSpellByID(1742) end
Сообщение # 1892 написано 30.08.2016 в 12:00
|
что я не так делаю? не юзает освящение,молот гнева, освящение,при висящем баффе "исскуство войны" не бьёт Экзорцизмом если спеллы другие в кд. Немогу понять куда засунуть Святую клятву
Код /run if GetSpellCooldown("Молот гнева")==0 and IsUsableSpell("Молот гнева") and IsSpellInRange("Божественная буря","target") then CastSpellByName("Молот гнева") end /run if GetSpellCooldown("Божественная буря")==0 and IsUsableSpell("Божественная буря") and IsSpellInRange("Удар воина Света","target") then CastSpellByName("Божественная буря") end /run if GetSpellCooldown("Правосудие мудрости")==0 and IsUsableSpell("Правосудие мудрости") and IsSpellInRange("Правосудие мудрости","target") then CastSpellByName("Правосудие мудрости") end /run if GetSpellCooldown("Освящение")==0 and IsUsableSpell("Освящение") and IsSpellInRange("Освящение","target") then CastSpellByName("Освящение") end /run if GetSpellCooldown("Удар воина Света")==0 and IsUsableSpell("Удар воина Света") and IsSpellInRange("Удар воина Света","target") then CastSpellByName("Удар воина Света") elseif GetSpellCooldown("Божественная буря") > 0 and GetSpellCooldown("Удар воина Света") > 0 and GetSpellCooldown("Правосудие мудрости") > 0 and GetSpellCooldown("Освящение") > 0 and GetSpellCooldown("Молот гнева") > 0 and UnitBuff("player", "Искусcтво войны") then CastSpellByName("Экзорцизм") end
Сообщение # 1893 написано 30.08.2016 в 13:05
|
Такая проблема появилась, использую BindPad на увове , скрипты на дк ( поддержка раги пета, сало в каст с проверкой на расстояние, и "сжаться" пету при n кол-ве хп.
Начало каждые минут 10-15 останавливать игровой процесс: все бегают на месте, ничего не юзается. В чем может быть проблема? Анлок делаю гагариным 1.7 |
Всем привет, помогите соеденить 2 скрипта один на вкл и выкл а второй авто ваниш
Код local spellON = { ["Destroy"] = false, ["spell1"] = "CastSpellByName(\"Целительное прикосновение\")", } function Destroy(self) if (spellON["Destroy"]) then if UnitBuff("player","Омоложение") and (not UnitBuff("player","Кровоотвод"))then RunScript(spellON["spell1"]) end end end CreateFrame("Frame", "DestroyFrame") DestroyFrame:SetScript("OnUpdate", Destroy) function ss(self) if spellON["Destroy"] == false then spellON["Destroy"] = true print("on") elseif spellON["Destroy"] == true then spellON["Destroy"] = false print("off") end end SLASH_SS1 = '/ss'; SlashCmdList["SS"] = ss _____________________________________________________________________________________________ Код TwoScriptForVanish = CreateFrame("Frame", "TwoScriptForVanish", UIParent); TwoScriptForVanish: RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED") TwoScriptForVanish:SetScript("OnEvent", function(self, event, ...) VanishSpellTwo = {"Ослепление", "Подлый трюк", "Удар по почкам", "Ошеломление", "Лик смерти", "Глубокая заморозка", "Стрела хаоса", "Превращение"} -- Вписываем название спеллов вот так "Название", local enabled = GetSpellCooldown("Сверх мощный заряд термической саперной взрывчатки") for x = 1,#VanishSpellTwo do local args = {...} if (arg10 == VanishSpellTwo [x]and arg2 == "SPELL_CAST_SUCCESS" and arg7 ==UnitName("player")) then CastSpellByName("Исчезновение") end end end) |
У кого есть скрипт для PQR (WoW 5.4.8) на интеррапт ?
Чтобы был рандомный кик в промежуток с 0.3 от начала каста и до 0.2 до конца каста и в строго определённые касты. Просто иногда бывает кикает в 0.1, а бывает кикает за 0.1 до конца каста (полно вариаций этого в разных профилях), но кикает всё подряд. Либо помогите допилить текущий скрипт, в профиле не могу найти значения maxMSinterrupt и minMSinterrupt
Сообщение # 1896 написано 31.08.2016 в 20:59
|
Поделитесь примером пожалуйста. Как добавить в эту строчку макроса, проверку на лосс за игровыми объектами?
/run if GetSpellCooldown("заклинание")==0 and IsSpellInRange("заклинание","focus") then CastSpellByName("заклинание","focus") end Это вообще возможно? // UP |
Такой вопрос, если я воспользовался подобной конструкцией, чтобы сделать постоянный вызов функции, могу я как то еще остановить его не прибегая к /reload?
Код CreateFrame("Frame", "ExampleFrame") ExampleFrame:SetScript("OnUpdate", ExampleFunction) |
Ребят может кто переделать данный скрипт на Шадовмелд(слиться с тенью) на Лик смери лок и Дип мага? в спелбазу попробовал вписать спелы которые мне нужны а в castSpellByname Слиться с тенью но не работает, и ошибок не выдает. За ранее спасибо!
SpellBase = {""} SpellFrame = CreateFrame("Frame", "FrameSpell", UIParent); SpellFrame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED"); SpellFrame:SetScript("OnEvent", function(self, event, arg1, arg2, ...) if(event=="COMBAT_LOG_EVENT_UNFILTERED") then for s = 1,#SpellBase do local name = UnitName("player") if arg2 == "SPELL_CAST_SUCCESS" and name ~= arg4 and name == arg7 and arg10 == SpellBase then local enabled = GetSpellCooldown("") if enabled == 0 then CastSpellByName("") end end end end end)
Сообщение # 1899 написано 02.09.2016 в 05:32
|
Ребят может кто переделать данный скрипт на Шадовмелд(слиться с тенью) на Лик смери лок и Дип мага? в спелбазу попробовал вписать спелы которые мне нужны а в castSpellByname Слиться с тенью но не работает, и ошибок не выдает. За ранее спасибо! Тестировалось на кате с коилом лока Код SHM = CreateFrame("Frame", "SHM", UIParent); SHM:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED") SHM:SetScript("OnEvent", function(self, event, arg1, arg2) SpellBase = {"Глубокая заморозка","Лик смерти"} local cd = GetSpellCooldown("Слиться с тенью") for v = 1,#SpellBase do local args = {arg1, arg2} if (arg1 == "target" and arg2 == SpellBase[v]) then if cd == 0 then CastSpellByID(58984) end end end end) Пробуй у себя |
Punisher45, работает, спс) тестил на скатере-коил-дип. Но дип не ловит, не успевает просто, пишет вы оглушены... А можно ли добавить в скрипт еще кое что, точнее чтоб перс стопал движение а потом уже юзался скрипт, бывает когда я в движении пишет невозможно делать на ходу. За ранее спасибо!
Добавлено (04.09.2016, 09:53)
Сообщение # 1902 написано 04.09.2016 в 09:53
|
Помогите пожалуйста что именно нужно тут удалить?
SpellBase = {"Ослепление", "Лик смерти", "Глубокая заморозка", "Превращение", "Молот правосудия"} SpellFrame = CreateFrame("Frame", "FrameSpell", UIParent); SpellFrame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED"); SpellFrame:SetScript("OnEvent", function(self, event, arg1, arg2, ...) if(event=="COMBAT_LOG_EVENT_UNFILTERED") then for s = 1,#SpellBase do local name = UnitName("player") if arg2 == "SPELL_CAST_SUCCESS" and name ~= arg4 and name == arg7 and arg10 == SpellBase[s] then local enabled = GetSpellCooldown("Исчезновение") if enabled == 0 then CastSpellByName("Исчезновение") print(arg1,arg2,...) -- для инфы. Удалить. end end end end end)
Сообщение # 1904 написано 08.09.2016 в 09:39
|
Ребят кто может написать скрипт чардж(ферал) на каст суккубы+шип? по листал форум но не нашел схожий скрипт чтоб взять за основу и переписать. За ранее спасибо!
Добавлено (09.09.2016, 09:50)
Сообщение # 1906 написано 09.09.2016 в 09:50
|
кто может помочь, непойму как как добавить проверку на время до конца дебафа на прикосновение вампира, за 1.25 секунды до конца мне надо чтоб кастовало Прикосновение вампира, в теме подобного не могу найти
Код /run if (not UnitDebuff("target", "Прикосновение вампира", nil, "PLAYER")) then RunMacroText("/castsequence reset=2 Прикосновение вампира") end if (not UnitDebuff("target", "Всепожирающая чума", nil, "PLAYER")) then CastSpellByName("Всепожирающая чума","target") end if (UnitDebuff("target", "Прикосновение вампира", nil, "PLAYER")) and (UnitDebuff("target", "Всепожирающая чума", nil, "PLAYER")) then RunMacroText("/cast [nochanneling:Пытка разума] Пытка разума") end
Сообщение # 1907 написано 10.09.2016 в 02:06
|
Punisher45, работает, спс) тестил на скатере-коил-дип. Но дип не ловит, не успевает просто, пишет вы оглушены... А можно ли добавить в скрипт еще кое что, точнее чтоб перс стопал движение а потом уже юзался скрипт, бывает когда я в движении пишет невозможно делать на ходу. За ранее спасибо! Ничего удивительного, у дипа довольно маленький флайтайм, шанс, что скрипт успеет небольшой. Сильно зависит от пинга и прочей хрени, в общем с этим ничего не сделать. Что касается мгновенной остановки персонажа, я не уверен что это реализуемо на lua, по крайней мере я не знаю такой функции, которая бы выполняла то, что ты хочешь. Попробуй поиграться с функциями в разделе Movement вот тут Добавлено (10.09.2016, 20:58) --------------------------------------------- кто может помочь, непойму как как добавить проверку на время до конца дебафа на прикосновение вампира, за 1.25 секунды до конца мне надо чтоб кастовало Прикосновение вампира, в теме подобного не могу найти Такая конструкция Код local n,_,_,_,_,_,x = UnitDebuff("target","Прикосновение вампира") if -1*(GetTime()-x) == 1.25 then ... твои условия в блоке по идее должна возвращать время в секундах которое осталось до конца дебаффа, думаю дальше сам додумаешь для своего скрипта |
Такая конструкция Код local n,_,_,_,_,_,x = UnitDebuff("target","Прикосновение вампира") if -1*(GetTime()-x) == 1.25 then ... твои условия в блоке по идее должна возвращать время в секундах которое осталось до конца дебаффа, думаю дальше сам додумаешь для своего скрипта пробую твоё - ошибка, ещё вот так пробую, Код /run _,_,_,_,_,d = UnitDebuff("player", "Прикосновение вампира"); if d~=nil and d-GetTime()<1.25 then CastSpellByName("Прикосновение вампира") end /run if not UnitDebuff("target", "Всепожирающая чума") then CastSpellByName("Всепожирающая чума","target") end if (UnitDebuff("target", "Прикосновение вампира")) and (UnitDebuff("target", "Всепожирающая чума")) then CastSpellByName("Пытка разума","target") end вобще не смотрит за дебафом суть такова, если на цели нет дебафа "Проклятие рока" то кастовать "проклятие рока" а если на цели висит "Проклятие рока" то кидать "Проклятие агонии", но почему то не работает, где моя ошибка? Код /run if (not UnitDebuff("target", "Проклятие рока") then CastSpellByName("Проклятие рока") or if (UnitDebuff("target", "Проклятие рока")) then CastSpellByName("Проклятие агонии") end |
sanfishman22, потому что конструкция неправильно построена:
Код /run if not (UnitDebuff("target", "Проклятие рока")) then CastSpellByName("Проклятие рока") elseif UnitDebuff("target", "Проклятие рока") then CastSpellByName("Проклятие агонии") end
Сообщение # 1911 написано 12.09.2016 в 09:32
|
Пробуй это Код /run local n,_,_,_,_,_,x = UnitDebuff("target","Прикосновение вампира") if not UnitDebuff("target","Прикосновение вампира") then CastSpellByName("Прикосновение вампира","target") end if UnitDebuff("target","Прикосновение вампира") and -1*(GetTime()-x) <= 1.25 then CastSpellByName("Прикосновение вампира") end if not UnitDebuff("target", "Всепожирающая чума") then CastSpellByName("Всепожирающая чума","target") end if UnitDebuff("target", "Прикосновение вампира") and UnitDebuff("target", "Всепожирающая чума") then CastSpellByName("Пытка разума","target") end |
вроде работает, вопрос почему он кастует вампир 2 раза иногда, даже при кастеквенс Код /run local n,_,_,_,_,_,x = UnitDebuff("target","Прикосновение вампира") if not UnitDebuff("target","Прикосновение вампира") then CastSpellByName("Прикосновение вампира","target") end if UnitDebuff("target","Прикосновение вампира") and -1*(GetTime()-x) <= 1.25 then RunMacroText("/castsequence reset=2 Прикосновение вампира") end if not UnitDebuff("target", "Всепожирающая чума") then CastSpellByName("Всепожирающая чума","target") end if UnitDebuff("target", "Прикосновение вампира") and UnitDebuff("target", "Всепожирающая чума") then RunMacroText("/cast [nochanneling:Пытка разума] Пытка разума") end
Сообщение # 1913 написано 12.09.2016 в 13:09
|
вроде работает, вопрос почему он кастует вампир 2 раза иногда, даже при кастеквенс Суть в том, что если спамить скрипт, то попадешь в тот промежуток, когда старая дота обновляется новой, и в этот момент на цели ее как бы нет, поэтому выполняется самое первое уусловие и из-за этого кастуется прикосновение дважды(я так понял, на самом деле хз как оно там), поэтому после каста вампирика надо делать маленькую паузу, а потом нажимать дальше, больше решения не вижу. Плюс причесал это безобразие, уменьшив размер. Код /run local n,_,_,_,_,_,x = UnitDebuff("target","Прикосновение вампира") VT = UnitDebuff("target","Прикосновение вампира") DP = UnitDebuff("target", "Всепожирающая чума") CSBN = CastSpellByName if not VT then CSBN("Прикосновение вампира") elseif -1*(GetTime()-x) <= 1.25 then CSBN("Прикосновение вампира") elseif not DP then CSBN("Всепожирающая чума") elseif VT and DP then RunMacroText("/cast [nochanneling:Пытка разума] Пытка разума") end Вообще у шп очень простая ротация, понятия не имею зачем тебе этот скрипт :D |
Сообщение # 1915 написано 12.09.2016 в 22:14
|
Может кому то надо, пве ротация ханта. Для тех кому лень жать кнопки как и мне)
Код /run CastSpellByName("!Автоматическая стрельба");s="Глушащий выстрел";if(GetSpellCooldown(s)==0)then CastSpellByName(s)end;s="Убийственный выстрел";if(GetSpellCooldown(s)==0 and IsUsableSpell(s))then CastSpellByName(s)end;RunMacro("Hunt2")") Содержание макроса Hunt2 Код /run cd=GetSpellCooldown;s="Выстрел химеры";if(cd(s)==0)then CastSpellByName(s)end;s="Прицельный выстрел";if(cd(s)==0)then CastSpellByName(s)end;s="Команда \"Взять!";if(cd(s)==0)then CastSpellByName(s)end;CastSpellByName("Верный выстрел")") Код #showtooltip Омоложение /run for r=0,24 do GetNumRaidMembers(); if (UnitHealth("raid"..r)/UnitHealthMax("raid"..r)) <0.95 and IsSpellInRange("Омоложение", "raid"..r) and (not UnitBuff("raid"..r, "Омоложение")) then CastSpellByName("Омоложение","raid"..r) end end if (UnitHealth("player")/UnitHealthMax("player")) <0.95 and IsSpellInRange("Омоложение", "player") and (not UnitBuff("player","Омоложение")) then CastSpellByName("Омоложение","player") end /run for r=0,24 do GetNumRaidMembers(); if (UnitHealth("raid"..r)/UnitHealthMax("raid"..r)) <0.95 and IsSpellInRange("Буйный рост", "raid"..r) and (not UnitBuff("raid"..r, "Буйный рост")) then CastSpellByName("Буйный рост","raid"..r) end end if (UnitHealth("player")/UnitHealthMax("player")) <0.95 and IsSpellInRange("Буйный рост", "player") and (not UnitBuff("player","Буйный рост")) then CastSpellByName("Буйный рост","player") end /run for r=0,24 do GetNumRaidMembers(); if (UnitHealth("raid"..r)/UnitHealthMax("raid"..r)) <0.80 and IsSpellInRange("Быстрое восстановление", "raid"..r) and (UnitBuff("raid"..r, "Омоложение")) then CastSpellByName("Быстрое восстановление","raid"..r) end end if (UnitHealth("player")/UnitHealthMax("player")) <0.80 and IsSpellInRange("Быстрое восстановление", "player") and (UnitBuff("player","Омоложение")) then CastSpellByName("Быстрое восстановление","player") end А вот тут, на мункина проблемка. Как сделать чтоб он кастовал после конца Лунного затмения "Звездным огнем" до прока Солнечного затмения,и так же После конца прока Солнечного затмения кастовал "Гнев" до следующего прока Лунного затмения, ибо приходится в ручную кастовать до следующего затмения Код function FuryRotation(self,elapsed) if (not UnitDebuff("target", "Лунный огонь", nil, "PLAYER")) then CastSpellByName("Лунный огонь") elseif (not UnitDebuff("target", "Рой насекомых", nil, "PLAYER")) then CastSpellByName("Рой насекомых") elseif GetSpellCooldown("Звездопад") == 0 and UnitDebuff("target", "Лунный огонь") then CastSpellByName("Звездопад") elseif GetSpellCooldown("Гнев") == 0 and UnitDebuff("target", "Рой насекомых") and GetSpellCooldown("Звездопад") > 0 and UnitBuff("player", "Солнечное затмение") then CastSpellByName("Гнев") end end if not FuryRotationFrame then CreateFrame("Frame", "FuryRotationFrame") FuryRotationFrame:SetScript("OnUpdate", FuryRotation) end |
Суть в том, что если спамить скрипт, то попадешь в тот промежуток, когда старая дота обновляется новой, и в этот момент на цели ее как бы нет, поэтому выполняется самое первое уусловие и из-за этого кастуется прикосновение дважды(я так понял, на самом деле хз как оно там), поэтому после каста вампирика надо делать маленькую паузу, а потом нажимать дальше, больше решения не вижу. Плюс причесал это безобразие, уменьшив размер. аааа, ребята. Не усложняйте жызнь. Есть http://wow.gamepedia.com/COMBAT_LOG_EVENT и там указано об SPELL_CAST_SUCCESS. Поставьте разницу между временем когда был прменен спел и текущем временем, также сохраните цель, чтоб совпадало. Автосбивание тотемов в суто в Lua не реализуемо. На щет совуха, там там совсем по другому зделать можна, или ты хочеш чтоб скрипт сам все жал? Я сам жму и от того такой был и есть баф меняеться каст в 1! кнопке
Сообщение # 1918 написано 13.09.2016 в 12:30
|
А вот тут, на мункина проблемка. Как сделать чтоб он кастовал после конца Лунного затмения "Звездным огнем" до прока Солнечного затмения,и так же После конца прока Солнечного затмения кастовал "Гнев" до следующего прока Лунного затмения, ибо приходится в ручную кастовать до следующего затмения Вот тебе затравочка, ничего не проверял, если что, сам потестишь и исправишь Код function FuryRotation(self,elapsed) if not UnitDebuff("target", "Лунный огонь", nil, "PLAYER") then CastSpellByName("Лунный огонь") elseif not UnitDebuff("target", "Рой насекомых", nil, "PLAYER") then CastSpellByName("Рой насекомых") elseif GetSpellCooldown("Звездопад") == 0 and UnitDebuff("target", "Лунный огонь") then CastSpellByName("Звездопад") elseif UnitBuff("player","Падающие звезды") then CastSpellByName("Звездный поток") end if UnitPower("player" , 8) == 0 then RunMacroText("/castrandom Гнев, Лунный огонь") elseif UnitPower("player" , 8) > 0 then CastSpellByName("Звездный огонь") elseif UnitPower("player" , 8) == 100 and UnitBuff("player","Солнечное затмение") then if UnitPower("player" , 8) <= 100 and UnitPower("player" , 8) ~= 0 then CastSpellByName("Гнев") end elseif UnitPower("player" , 8) < 0 then CastSpellByName("Гнев") elseif UnitPower("player" , 8) == -100 and UnitBuff("player","Лунное затмение") then if UnitPower("player" , 8) >= -100 and UnitPower("player" , 8) ~= 0 then CastSpellByName("Звездный огонь") end end end |
| |||



