Модератор форума: staford11 |
Форум Хитрости Пиратских серверов Читы для WoW Использование Lua скриптов. |
Использование Lua скриптов. |
Может кто-нибудь кинуть прогу, через которую можно запустить PQR профиль?Скачал с овнедкора несколько архивов с профилями, там есть еще 2 программы для их запуска, но они, почему то, не видят процесса WoW
Возможно из-за того что они предназначаются для более ранних версий WoW Мне нужно для 5.4
Сообщение # 2311 написано 11.05.2017 в 15:58
|
Может кто-нибудь кинуть прогу, через которую можно запустить PQR профиль?Скачал с овнедкора несколько архивов с профилями, там есть еще 2 программы для их запуска, но они, почему то, не видят процесса WoWВозможно из-за того что они предназначаются для более ранних версий WoW Мне нужно для 5.4 ну скорее всего дело в лаунчере пандавова или другой мегакрутой пиратки, в процессах он носит название Pandawow.exe или любое другое отличное от Wow.exe, просто попробуй переименовать лаунчер на вов экзе или как-то напрямую запуститься с вов.екзе, это самая такая очевидная причина которая на ум приходит Добавлено (11.05.2017, 17:31) paid ну ты понял
Сообщение # 2313 написано 11.05.2017 в 17:31
|
amidimpos, попробуй этот:
Код function FuryRotation(self,elapsed) local powa = UnitPower("player",1) local name1, _, _, powerCost1 = GetSpellInfo("Кровожадность") local name2, _, _, powerCost2 = GetSpellInfo("Вихрь") local name3, _, _, powerCost3 = GetSpellInfo("Мощный Удар") if GetSpellCooldown(name1) == 0 and powa >= powerCost1 then CastSpellByName(name1) elseif GetSpellCooldown(name2) == 0 and powa >= powerCost2 then CastSpellByName(name2) end if UnitBuff("player", "Сокрушить!") and powa >= powerCost3 then CastSpellByName(name3) end if powa > 10 then CastSpellByName("Удар Героя") end end if not FuryRotationFrame then CreateFrame("Frame", "FuryRotationFrame") FuryRotationFrame:SetScript("OnUpdate", FuryRotation) end |
Здраствуйте ребята, у меня есть аддон Sdm работает и есть анлокер все скрипты работают, вопрос в том что я хочу сделать например "автокик на дк который в 1 странице" его на макрос чтобы не писать /sdm run (название). А по нажатию его на панели чтобы он включился и выключился) возможно ли так сделать? подскажите что сделать надо
Сообщение # 2318 написано 14.05.2017 в 15:53
|
Привет
Как увеличить расстояние для неймплейтов? на 2.4.3 они видны только вблизи, а хотелось бы как в более поздних патчах гугл говорит, что они часть worldframe, но у них нет имени и они как-то хитро встроены в клиент и в mpq только их текстурки |
Привет Как увеличить расстояние для неймплейтов? на 2.4.3 они видны только вблизи, а хотелось бы как в более поздних патчах гугл говорит, что они часть worldframe, но у них нет имени и они как-то хитро встроены в клиент и в mpq только их текстурки Есть в наличии для 3.3.5 оффсет, патчится заменой всего одной проверки в процедуре по адресу 72B060 в памяти клиента / или в .exe, дает видимость до цели с момента её прогрузки в клиенте, однако начиная где-то с 3.1 или 3.2 патчей близзы сильно порезали видимость неймплейтов через препятствия, т.е. не такой большой профит какой мог бы быть на ранних патчах включая 2.4.3, мог бы под нужный патч адаптировать, но нет клиента для теста.
reverse engineering your soul... балуюсь C++, C#, SQL, LUA. Владыка 1C. Окончательно забил на emuDev
|
Message: [string " function pqrFunc0() if not leftkeydown the..."]:261: attempt to perform arithmetic on local 'endTime' (a nil value)
Time: 05/17/17 01:52:08 Count: 18652 Stack: [string " function pqrFunc0() if not leftkeydown the..."]:261: in function `?' [string "..."]:267: in function `PQR_NextAbility' [string "..."]:161: in function `PQR_CastNext' [string "..."]:150: in function `PQR_ExecuteBot' [string "..."]:40: in function <[string "..."]:23> Locals: spell = nil _ = nil _ = nil _ = nil _ = nil endTime = nil _ = nil _ = nil interrupt = nil name = "Kaztiei" name2 = nil myname = "Kaztiei" (*temporary) = "player" (*temporary) = "Kaztiei" (*temporary) = nil (*temporary) = "attempt to perform arithmetic on local 'endTime' (a nil value)" у меня пвп профиль на энха ,выдает вот такую ошибку, не бьет ударом бури и лавы, ток шоки вешает и мольнию кидает на 5 стаках ,может кто помочь?
Сообщение # 2322 написано 17.05.2017 в 15:03
|
Всем доброго времени суток. Знаний в Lua и API вов не имеется. Играю на варе х100 Циркуль.
Хочется написать 3 скрипта: удар щитом, зуботычина, рефлект соответственно. Скачал гагарина, скачал BindBP. Всё работает, нареканий нет. Читая данную тему, неоднакратно видел об упоминании аддона SDM - Super Duper Macro, как я понимаю этот аддон мне заменяет именно BindBP, который так же справляется со своими задачи, - если ошибаюсь поправьте. Делаю всё так, как написано на 1 странице темы. И вот, скачав гагарина и БайндБП решил написать соответственно первый скрипт по аналогии с заморзкой разума у Дикея опять же на первой странице. Видел кучу раз сообщения а-ля "про удар щитом уже писалось кучу раз" и прочее, но видимо я слепой, и ни разу не видел готового скрипта на данный спелл с переменой двуручки на одноруч+щит. Я понимаю, вероятность того, что мне тут вышлют на блюдечке готовые скрипты и объяснят всё от А до Я - КРАЙНЕ МАЛА (шутка про резист(нет)). Но всё таки с надеждой на конструктивный и понятный ответ здесь или в скайпе (hardcore606) я очень сильно надеюсь.
Сообщение # 2323 написано 17.05.2017 в 18:06
|
Ребят, всем доброго времени суток!
Помогите пожалуйста в написании следующ его: Афли варлок, если на мне прокает талант на инстанс шб, то он кастится (если на таргете нет рефлекта, граунда, или бабла/глыбы, если есть первые два, то кидается курс, чтоб снять) в таргет; если у таргета <25% ХП, то кастится дрейнсоул, так же по откату КД - кидается хаунт (тоже с проверкой на граунд/рефлект). Пытался переделать скрипт на вара (в первых страницах есть) с проком казни, или чего-то в этом роде - не работает:( И возможно ли как-то прикрутить такую плюшку - если у таргета <30% хп, то спеллок дается по фокусу в каст определенных спеллов (то бишь перечислить несколько хилок, тоже с проверкой)? Помогите, пожалуйста!
Сообщение # 2324 написано 19.05.2017 в 01:09
|
Ребят, всем доброго времени суток! Помогите пожалуйста в написании следующ его: Афли варлок, если на мне прокает талант на инстанс шб, то он кастится (если на таргете нет рефлекта, граунда, или бабла/глыбы, если есть первые два, то кидается курс, чтоб снять) в таргет; если у таргета <25% ХП, то кастится дрейнсоул, так же по откату КД - кидается хаунт (тоже с проверкой на граунд/рефлект). Пытался переделать скрипт на вара (в первых страницах есть) с проком казни, или чего-то в этом роде - не работает:( И возможно ли как-то прикрутить такую плюшку - если у таргета <30% хп, то спеллок дается по фокусу в каст определенных спеллов (то бишь перечислить несколько хилок, тоже с проверкой)? Помогите, пожалуйста! Что-то вроде такого, за работоспособность не ручаюсь, в случае проблем изменить названия скиллов\проков в соответствии со своим патчем. В строчке SpellBase [z]and not interrupt then... зет в скобочках должно быть без пробела со SpellBase а после него перед and должен быть пробел, как скопируешь исправь это (форум почему-то насилует эту часть) Добавлено (19.05.2017, 19:01) Всем доброго времени суток. Знаний в Lua и API вов не имеется. Играю на варе х100 Циркуль. Хочется написать 3 скрипта: удар щитом, зуботычина, рефлект соответственно. Скачал гагарина, скачал BindBP. Всё работает, нареканий нет. Читая данную тему, неоднакратно видел об упоминании аддона SDM - Super Duper Macro, как я понимаю этот аддон мне заменяет именно BindBP, который так же справляется со своими задачи, - если ошибаюсь поправьте. Делаю всё так, как написано на 1 странице темы. И вот, скачав гагарина и БайндБП решил написать соответственно первый скрипт по аналогии с заморзкой разума у Дикея опять же на первой странице. Видел кучу раз сообщения а-ля "про удар щитом уже писалось кучу раз" и прочее, но видимо я слепой, и ни разу не видел готового скрипта на данный спелл с переменой двуручки на одноруч+щит. Я понимаю, вероятность того, что мне тут вышлют на блюдечке готовые скрипты и объяснят всё от А до Я - КРАЙНЕ МАЛА (шутка про резист(нет)). Но всё таки с надеждой на конструктивный и понятный ответ здесь или в скайпе (hardcore606) я очень сильно надеюсь. Рефлект - миллион раз выкладывался Вот автокик На ьаш получается что-то вроде такого |
Что-то вроде такого, за работоспособность не ручаюсь, в случае проблем изменить названия скиллов\проков в соответствии со своим патчем. В строчке SpellBase [z]and not interrupt then... зет в скобочках должно быть без пробела со SpellBase а после него перед and должен быть пробел, как скопируешь исправь это (форум почему-то насилует эту часть) Приветствую, спасибо! Но не работает, пробовал все в одном скрипте и по разным раскидать - хаунт кидается по нажатии скрипта и только, дрэйнсоул не срабатывает на 25, или меньше процентах, так же как и шб под прок - не кастует. Не могу понять, в чем дело. Хотя луа анлокается. Увов патч 3.3.5
Сообщение # 2328 написано 21.05.2017 в 11:21
|
привет, решил совместить 2 скрипта для дк на кик, но не работает. хочу сделать так, что бы 1 скрипт сбивал касты и таргета и фокуса. вот собственно скрипт который я попытался написать:
Код function Kick(self, elapsed) local spell, _, _, _, _, endTime, _, _, interrupt = UnitCastingInfo("target") local enabled = GetSpellCooldown("Заморозка разума") local inRange = IsSpellInRange("Заморозка разума", "target") if spell then if interrupt == false and enabled == 0 and inRange == 1 then local finish = endTime/1000 - GetTime() if finish <= 0.3 then RunMacroText("/cast Заморозка разума") end end end end CreateFrame("Frame", "KickFrame") KickFrame:SetScript("OnUpdate", Kick) function fKick(self, elapsed) local fspell, _, _, _, _, fendTime, _, _, finterrupt = UnitCastingInfo("focus") local fenabled = GetSpellCooldown("Заморозка разума") local finRange = IsSpellInRange("Заморозка разума", "focus") if fspell then if finterrupt == false and fenabled == 0 and finRange == 1 then local ffinish = endTime/1000 - GetTime() if ffinish <= 0.3 then RunMacroText("/cast [target=focus]Заморозка разума") end end end end CreateFrame("Frame", "fKickFrame") fKickFrame:SetScript("OnUpdate", fKick) сбивает только касты таргета в луа шарю не очень сильно, попытался создать 2 фрейма - 1 для таргета(стандартный из шапки темы), 2 для фокуса. подскажите пожалуйста как реализовать мою идею и какие у меня ошибки? никак не могу понять как запихнуть в 1 скрипт 2 функции и 2 фрейма или более |
Дублирование - не комильфо. Во второй функции имя переменной fendTime не совпадает с endTime, должно быть одинаково. Набросал более универсальную функу. (не проверял) кикает большое количество юнитов, перебором массива в цикле.
Код function Kick(self, elapsed) local v1, v2, v3, v4, v5 v1 = { "target", "focus", "mouseover", "targettarget", "pettarget", "arena1", "arena2", "arena3", "arena4", "arena5", "arenapet1", "arenapet2", "arenapet3", "arenapet4", "arenapet5" } for i = 1, #v1 do if UnitExists(v1[i]) and UnitCanAttack("player", v1[i]) then v2, _, _, _, _, v3, _, _, v4 = UnitCastingInfo(v1[i]) if v2 then if v4 == false and GetSpellCooldown(47528) == 0 and IsSpellInRange(GetSpellInfo(47528), v1[i]) == 1 then v5 = v3/1000 - GetTime() if v5 <= 0.3 then CastSpellByName(GetSpellInfo(47528), v1[i]) end end end end end end CreateFrame("Frame", "KickFrame") KickFrame:SetScript("OnUpdate", Kick)
Сообщение # 2334 написано 08.06.2017 в 08:40
|
и правда, как я только не заметил :)
спасибо большое, я постепенно изучаю синтаксис благодаря этой теме) сам язык луа никогда не изучал, но заинтересовался именно темой скриптов вов, буду развиваться в этой области :) сейчас потестю твой скрипт и попробую еще сделать такие же функции для грипа, сайленса и "прыжок+стан петом". я уже реализовал такое по фокусу и таргету своим методом, но твой скрипт выглядит более аккуратно и охватывает больше таргетов) вообще массив походу вещь удобная, я еще не пробовал скрипты с массивами) вот добавил еще функции для грипа, сайленса и "прыжок+стан" Код function Kick(self, elapsed) local v1, v2, v3, v4, v5 v1 = { "target", "focus", "mouseover", "targettarget", "pettarget", "arena1", "arena2", "arena3", "arena4", "arena5", "arenapet1", "arenapet2", "arenapet3", "arenapet4", "arenapet5" } for i = 1, #v1 do if UnitExists(v1[i]) and UnitCanAttack("player", v1[i]) then v2, _, _, _, _, v3, _, _, v4 = UnitCastingInfo(v1[i]) if v2 then if v4 == false and GetSpellCooldown(47528) == 0 and IsSpellInRange(GetSpellInfo(47528), v1[i]) == 1 then v5 = v3/1000 - GetTime() if v5 <= 0.5 then CastSpellByName(GetSpellInfo(47528), v1[i]) end end end end end end CreateFrame("Frame", "KickFrame") KickFrame:SetScript("OnUpdate", Kick) function Kick2(self, elapsed) local v1, v2, v3, v4, v5 v1 = { "target", "focus", "mouseover", "targettarget", "pettarget", "arena1", "arena2", "arena3", "arena4", "arena5", "arenapet1", "arenapet2", "arenapet3", "arenapet4", "arenapet5" } for i = 1, #v1 do if UnitExists(v1[i]) and UnitCanAttack("player", v1[i]) then v2, _, _, _, _, v3, _, _, v4 = UnitCastingInfo(v1[i]) if v2 then if v4 == false and GetSpellCooldown(49576) == 0 and IsSpellInRange(GetSpellInfo(49576), v1[i]) == 1 then v5 = v3/1000 - GetTime() if v5 <= 0.6 then CastSpellByName(GetSpellInfo(49576), v1[i]) end end end end end end CreateFrame("Frame", "Kick2Frame") Kick2Frame:SetScript("OnUpdate", Kick2) function Kick3(self, elapsed) local v1, v2, v3, v4, v5 v1 = { "target", "focus", "mouseover", "targettarget", "pettarget", "arena1", "arena2", "arena3", "arena4", "arena5", "arenapet1", "arenapet2", "arenapet3", "arenapet4", "arenapet5" } for i = 1, #v1 do if UnitExists(v1[i]) and UnitCanAttack("player", v1[i]) then v2, _, _, _, _, v3, _, _, v4 = UnitCastingInfo(v1[i]) if v2 then if v4 == false and GetSpellCooldown(47476) == 0 and IsSpellInRange(GetSpellInfo(47476), v1[i]) == 1 then v5 = v3/1000 - GetTime() if v5 <= 0.8 then CastSpellByName("Кровоотвод") CastSpellByName(GetSpellInfo(47476), v1[i]) end end end end end end CreateFrame("Frame", "Kick3Frame") Kick3Frame:SetScript("OnUpdate", Kick3) function Kick4(self, elapsed) local v1, v2, v3, v4, v5 v1 = { "target", "focus", "mouseover", "targettarget", "pettarget", "arena1", "arena2", "arena3", "arena4", "arena5", "arenapet1", "arenapet2", "arenapet3", "arenapet4", "arenapet5" } for i = 1, #v1 do if UnitExists(v1[i]) and UnitCanAttack("player", v1[i]) then v2, _, _, _, _, v3, _, _, v4 = UnitCastingInfo(v1[i]) if v2 then if v4 == false and GetSpellCooldown(47481) == 0 and IsSpellInRange(GetSpellInfo(47481), v1[i]) == 1 then v5 = v3/1000 - GetTime() if v5 <= 0.9 then CastSpellByName(GetSpellInfo(47481), v1[i]) end end end end end end CreateFrame("Frame", "Kick4Frame") Kick4Frame:SetScript("OnUpdate", Kick4) function Kick5(self, elapsed) local v1, v2, v3, v4, v5 v1 = { "target", "focus", "mouseover", "targettarget", "pettarget", "arena1", "arena2", "arena3", "arena4", "arena5", "arenapet1", "arenapet2", "arenapet3", "arenapet4", "arenapet5" } for i = 1, #v1 do if UnitExists(v1[i]) and UnitCanAttack("player", v1[i]) then v2, _, _, _, _, v3, _, _, v4 = UnitCastingInfo(v1[i]) if v2 then if v4 == false and GetSpellCooldown(47482) == 0 and IsSpellInRange(GetSpellInfo(47482), v1[i]) == 1 then v5 = v3/1000 - GetTime() if v5 <= 0.9 then CastSpellByName(GetSpellInfo(47482), v1[i]) end end end end end end CreateFrame("Frame", "Kick5Frame") Kick5Frame:SetScript("OnUpdate", Kick5) Всё работает) если есть способ сделать более правильно, чем делать несколько функций, то подскажи плз) |
sixsixsix999, Конструкция из вложенных циклов может помочь. Можно так -
Код function Kick(self, elapsed) local v1, v2, v3, v4, v5, v6, v7 v1 = { "target", "focus", "mouseover", "targettarget", "pettarget", "arena1", "arena2", "arena3", "arena4", "arena5", "arenapet1", "arenapet2", "arenapet3", "arenapet4", "arenapet5" } for i = 1, #v1 do if UnitExists(v1[i]) and UnitCanAttack("player", v1[i]) then v2, _, _, _, _, v3, _, _, v4 = UnitCastingInfo(v1[i]) v5 = { 47476, 47481, 47482, 47528, 49576 } v6 = { 0.8, 0.9, 0.9, 0.3, 0.6 } for j = 1, #v5 do if GetSpellCooldown(v5[j]) == 0 and IsSpellInRange(GetSpellInfo(v5[j]), v1[i]) == 1 then if v4 == false or v4 == true and v5 [j]== 47481 then v7 = v3/1000 - GetTime() if v7 <= v6 [j]then CastSpellByName(GetSpellInfo(v5[j]), v1[i]) end end end end end end end CreateFrame("Frame", "KickFrame") KickFrame:SetScript("OnUpdate", Kick) |
массивы и циклы творят чудеса!!11 :D я сегодня понял, что на циркле вотлк логон1 х5 криво работает ренж грипа, т.е. когда находишься близко(в мили-зоне) к таргету\фокусу\итд, то скрипт неистово спамит грип и выкидывает с аккаунта(не из игры). что бы пофиксить это я просто решил не использовать грип в скрипте, вместо грипа добавил кровоотвод(он нужен, что бы мгновенно восстановить руну крови, которая нужна для каста сайленса) теперь всё компактно) вот такой скрипт у меня получился в итоге Код function Kick(self, elapsed) local v1, v2, v3, v4, v5, v6, v7 v1 = { "target", "focus", "mouseover", "targettarget", "pettarget", "arena1", "arena2", "arena3", "arena4", "arena5", "arenapet1", "arenapet2", "arenapet3", "arenapet4", "arenapet5" } for i = 1, #v1 do if UnitExists(v1[i]) and UnitCanAttack("player", v1[i]) then v2, _, _, _, _, v3, _, _, v4 = UnitCastingInfo(v1[i]) v5 = { 47476, 47481, 47482, 47528, 45529 } v6 = { 0.9, 1.5, 1.5, 0.3, 0.9 } for j = 1, #v5 do if GetSpellCooldown(v5[j]) == 0 and IsSpellInRange(GetSpellInfo(v5[j]), v1[i]) == 1 then if v4 == false or v4 == true and v5 [j]== 47481 then v7 = v3/1000 - GetTime() if v7 <= v6 [j]then CastSpellByName(GetSpellInfo(v5[j]), v1[i]) end end end end end end end CreateFrame("Frame", "KickFrame") KickFrame:SetScript("OnUpdate", Kick) всё работает, но хотелось бы добавить проверку UnitChannelInfo, у меня почему то не получилось, кастовал грозу друидом, спелл поддерживаемый, а каст не сбивается в итоге удалил проверку. решил еще увеличить время для прыжка пета и его стана (1.5) т.к. что бы успеть сбить каст таким способом нужна примерно секунда, т.к. пет "летит" в прыжке и только потом даёт стан очень благодарен тебе за помощь, кину плюсик) п.с. если получится как то реализовать грип, учитывая его кривую механику, то будет идеально прям:) будет шикарно если для грипа сделать отдельное условие ренжа и действия, например: если фокус в ренже мили-зоны ко мне, то не использовать грип в фокус, вместо этого использовать его к другим юнитам(если они конечно же кастуют). и такое проделать со всеми юнитами, которые находятся в мили-зоне со мной, что бы скрипт не спамил грип, который невозможно прожать, и не выкидывал с аккаунта вот такая идея у меня, но для реализации надо лишь понять, как правильно воплотить это в код:) |
Код function Kick(self, elapsed) local v1, v2, v3, v4, v5, v6, v7 v1 = { "target", "focus", "mouseover", "targettarget", "pettarget", "arena1", "arena2", "arena3", "arena4", "arena5", "arenapet1", "arenapet2", "arenapet3", "arenapet4", "arenapet5" } for i = 1, #v1 do if UnitExists(v1[i]) and UnitCanAttack("player", v1[i]) then v2, _, _, _, _, v3, _, _, v4 = UnitCastingInfo(v1[i]) v5 = { 47476, 47481, 47482, 47528, 45529 } v6 = { 0.9, 1.5, 1.5, 0.3, 0.9 } for j = 1, #v5 do if GetSpellCooldown(v5[j]) == 0 and IsSpellInRange(GetSpellInfo(v5[j]), v1[i]) == 1 then if v4 == false or v4 == true and v5 [j]== 47481 then v7 = v3/1000 - GetTime() if v7 <= v6 [j]then CastSpellByName(GetSpellInfo(v5[j]), v1[i]) end end end end end end end CreateFrame("Frame", "KickFrame") KickFrame:SetScript("OnUpdate", Kick) Код local war = CreateFrame("Frame") war:SetScript("OnUpdate", function(_,e) if UnitExists("target") and UnitAffectingCombat("player") == 1 and IsSpellInRange("Кровожадность", "target")==1 then local rage = UnitPower("player") if GetSpellCooldown("Кровожадность") == 0 and rage >= 20 then CastSpellByName("Кровожадность") elseif GetSpellCooldown("Кровожадность") ~= 0 and rage >= 25 and GetSpellCooldown("Вихрь") == 0 then CastSpellByName("Вихрь") elseif GetSpellCooldown("Кровожадность") ~= 0 and GetSpellCooldown("Вихрь") and UnitBuff("player","Сокрушить!") and rage >= 15 and GetSpellCooldown("Мощный удар") == 0 then CastSpellByName("Мощный удар") end if GetSpellCooldown("Казнь") ==0 and rage >= 65 then CastSpellByName("Казнь") if GetSpellCooldown("Героический бросок") then CastSpellByName("Героический бросок") if UnitPower("player") >= 65 then CastSpellByName("Удар героя") end end end end end) Кровожадность, если на кд- Вихрь, если на кд, и есть прокСокрушить!- Мощный удар,если нету прока- Казнь при наличии 65 раги , если кд на все кидает Героический бросок, + спам Удар героя при наличии 65 раги Вот сделал пве ротацию для фури вара , только почему-то сильно садиться фпс , может кто помочь сделать как-то аккуратнее довести до ума, чтобы фпс не так сильно падал. буду очень признателен. |
еще интересуюсь как пользоваться этим кодом, точнее как его впилить в любой скрипт, для проверки лоса всех спеллов, которые будут использоваться далее в скрипте. код:
Код local losframe = CreateFrame("Frame") local lostable = {} local function LineOfSight(target) losframe:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED") function LOSFRAMEOnEvent(self,event,...) if event=="COMBAT_LOG_EVENT_UNFILTERED" then local _, subEvent, _, sourceGUID, _, _, _, _, _, _, _, _, _, _, spellFailed = ... if subEvent == "SPELL_CAST_FAILED" and sourceGUID == UnitGUID("player") then if spellFailed == SPELL_FAILED_LINE_OF_SIGHT then lostable [target]= {t = GetTime() + 1.5} end end end end losframe:SetScript("OnEvent",LOSFRAMEOnEvent) if lostable [target]then if lostable[target].t <= GetTime() then lostable [target]= nil return true end return false else return true end end далее для проверки лоса использовать: /run if LineOfSight(цель) then КАСТ end ПС: сам код взял на предыдущих страницах темы |
Можно ли добавить в этот скрипт проверку на бафы- if not UnitBuff("target", "Divine Shield") чтобы в бабл? мастер аур, не юзать ? Не надо придумывать велосипед и перебирать все возможные баблы и прочее. UnitCastingInfo возвращает переменную о защищенности каста, true(1) - защищенный false(0) - не защищен. Ну например можно это использовать в простенькой проверке в блоке условия: Код spell, _, _, _, _, _, _, _, interrupt = UnitCastingInfo("unit") if spell and not interrupt then CastSpellByName("Зуботычина") end
Сообщение # 2340 написано 11.06.2017 в 14:30
|
| |||