Модератор форума: staford11  
Использование Lua скриптов.
Rextown
Скаут
Может кто-нибудь кинуть прогу, через которую можно запустить PQR профиль?Скачал с овнедкора несколько архивов с профилями, там есть еще 2 программы для их запуска, но они, почему то, не видят процесса WoW
Возможно из-за того что они предназначаются для более ранних версий WoW
Мне нужно для 5.4
Сообщение # 2311 написано 11.05.2017 в 15:58
xGhostx
Скаут
Цитата Punisher45 ()
Это все замечательно, но если я просто прочитаю код, это не значит, что я пойму как он работает) Уйдет гораздо больше времени, чем по учебнику, но если его нет, значит нет
есть: wowprogramming.com/store
Сообщение # 2312 написано 11.05.2017 в 17:05
Punisher45
Капрал
Цитата Rextown ()
Может кто-нибудь кинуть прогу, через которую можно запустить PQR профиль?Скачал с овнедкора несколько архивов с профилями, там есть еще 2 программы для их запуска, но они, почему то, не видят процесса WoWВозможно из-за того что они предназначаются для более ранних версий WoW
Мне нужно для 5.4

ну скорее всего дело в лаунчере пандавова или другой мегакрутой пиратки, в процессах он носит название Pandawow.exe или любое другое отличное от Wow.exe, просто попробуй переименовать лаунчер на вов экзе или как-то напрямую запуститься с вов.екзе, это самая такая очевидная причина которая на ум приходит

Добавлено (11.05.2017, 17:31)
---------------------------------------------

Цитата xGhostx ()
есть: wowprogramming.com/store

paid
ну ты понял
Сообщение # 2313 написано 11.05.2017 в 17:31
Rextown
Скаут
Punisher45,  Ну если я пытаюсь переименовать экзешный файл, то процесс вообще перестает запускаться, выдавая ошибку
Сообщение # 2314 написано 11.05.2017 в 19:48
Punisher45
Капрал
Цитата Rextown ()
Ну если я пытаюсь переименовать экзешный файл, то процесс вообще перестает запускаться, выдавая ошибку

Ну это вообще печаль, ибо они все поголовно на Wow.exe привязаны, что читы что это
Сообщение # 2315 написано 11.05.2017 в 20:09
Rextown
Скаут
А можно ли как-нибудь прописать чтобы Рефлект юзался постоянно в разное время.Например за 0.3/0.4/0.2/0.5 секунды до конца каста.Чтобы каждый раз рандомное значение было
Сообщение # 2316 написано 12.05.2017 в 19:57
sanfishman22
Капрал
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
в сдм закинь естественно, казнь раж и прочая ерунда не профитна, по крайней мере на сёркле
Сообщение # 2317 отредактировано sanfishman22 - Суббота, 13.05.2017, 00:08
ramires12345
Скаут
Здраствуйте ребята, у меня есть аддон Sdm работает и  есть анлокер все скрипты работают, вопрос в том что я хочу сделать например "автокик на дк который в 1 странице" его на макрос чтобы не писать /sdm run (название). А по нажатию его на панели чтобы он включился и выключился) возможно ли так сделать? подскажите что сделать надо
Сообщение # 2318 написано 14.05.2017 в 15:53
sess
Скаут
Привет
Как увеличить расстояние для неймплейтов?
на 2.4.3 они видны только вблизи, а хотелось бы как в более поздних патчах

гугл говорит, что они часть worldframe, но у них нет имени и они как-то хитро встроены в клиент
и в mpq только их текстурки
Сообщение # 2319 отредактировано sess - Вторник, 16.05.2017, 19:41
Karolik
Скаут
у меня пвп профиль на энха ,выдает вот такую ошибку, не бьет ударом бури и лавы, ток шоки вешает и мольнию кидает на 5 стаках
Сообщение # 2320 написано 17.05.2017 в 02:08
tobmaps
Капрал
Цитата sess ()
Привет
Как увеличить расстояние для неймплейтов?
на 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
Сообщение # 2321 отредактировано tobmaps - Среда, 17.05.2017, 08:10
Karolik
Скаут
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
Sparkie
Скаут
Всем доброго времени суток. Знаний в Lua и API вов не имеется. Играю на варе х100 Циркуль. 
Хочется написать 3 скрипта: удар щитом, зуботычина, рефлект соответственно. Скачал гагарина, скачал BindBP. Всё работает, нареканий нет. Читая данную тему, неоднакратно видел об упоминании аддона SDM - Super Duper Macro, как я понимаю этот аддон мне заменяет именно BindBP, который так же справляется со своими задачи, - если ошибаюсь поправьте. 
Делаю всё так, как написано на 1 странице темы. И вот, скачав гагарина и БайндБП решил написать соответственно первый скрипт по аналогии с заморзкой разума у Дикея опять же на первой странице. Видел кучу раз сообщения а-ля "про удар щитом уже писалось кучу раз" и прочее, но видимо я слепой, и ни разу не видел готового скрипта на данный спелл с переменой двуручки на одноруч+щит. Я понимаю, вероятность того, что мне тут вышлют на блюдечке готовые скрипты и объяснят всё от А до Я - КРАЙНЕ МАЛА (шутка про резист(нет)).
Но всё таки с надеждой на конструктивный и понятный ответ здесь или в скайпе (hardcore606) я очень сильно надеюсь.
Сообщение # 2323 написано 17.05.2017 в 18:06
cursedfunlol
Скаут
Ребят, всем доброго времени суток!
Помогите пожалуйста в написании следующ его:
Афли варлок, если на мне прокает талант на инстанс шб, то он кастится (если на таргете нет рефлекта, граунда, или бабла/глыбы, если есть первые два, то кидается курс, чтоб снять) в таргет; если у таргета <25% ХП, то кастится дрейнсоул, так же по откату КД - кидается хаунт (тоже с проверкой на граунд/рефлект). Пытался переделать скрипт на вара (в первых страницах есть) с проком казни, или чего-то в этом роде - не работает:( И возможно ли как-то прикрутить такую плюшку - если у таргета <30% хп, то спеллок дается по фокусу в каст определенных спеллов (то бишь перечислить несколько хилок, тоже с проверкой)? Помогите, пожалуйста!
Сообщение # 2324 написано 19.05.2017 в 01:09
Punisher45
Капрал
Цитата cursedfunlol ()
Ребят, всем доброго времени суток!
Помогите пожалуйста в написании следующ его:
Афли варлок, если на мне прокает талант на инстанс шб, то он кастится (если на таргете нет рефлекта, граунда, или бабла/глыбы, если есть первые два, то кидается курс, чтоб снять) в таргет; если у таргета <25% ХП, то кастится дрейнсоул, так же по откату КД - кидается хаунт (тоже с проверкой на граунд/рефлект). Пытался переделать скрипт на вара (в первых страницах есть) с проком казни, или чего-то в этом роде - не работает:( И возможно ли как-то прикрутить такую плюшку - если у таргета <30% хп, то спеллок дается по фокусу в каст определенных спеллов (то бишь перечислить несколько хилок, тоже с проверкой)? Помогите, пожалуйста!

Что-то вроде такого, за работоспособность не ручаюсь, в случае проблем изменить названия скиллов\проков в соответствии со своим патчем. В строчке SpellBase [z]and not interrupt then...  зет в скобочках должно быть без пробела со SpellBase а после него перед and должен быть пробел, как скопируешь исправь это (форум почему-то насилует эту часть)

Добавлено (19.05.2017, 19:01)
---------------------------------------------

Цитата Sparkie ()
Всем доброго времени суток. Знаний в Lua и API вов не имеется. Играю на варе х100 Циркуль. Хочется написать 3 скрипта: удар щитом, зуботычина, рефлект соответственно. Скачал гагарина, скачал BindBP. Всё работает, нареканий нет. Читая данную тему, неоднакратно видел об упоминании аддона SDM - Super Duper Macro, как я понимаю этот аддон мне заменяет именно BindBP, который так же справляется со своими задачи, - если ошибаюсь поправьте. 
Делаю всё так, как написано на 1 странице темы. И вот, скачав гагарина и БайндБП решил написать соответственно первый скрипт по аналогии с заморзкой разума у Дикея опять же на первой странице. Видел кучу раз сообщения а-ля "про удар щитом уже писалось кучу раз" и прочее, но видимо я слепой, и ни разу не видел готового скрипта на данный спелл с переменой двуручки на одноруч+щит. Я понимаю, вероятность того, что мне тут вышлют на блюдечке готовые скрипты и объяснят всё от А до Я - КРАЙНЕ МАЛА (шутка про резист(нет)).
Но всё таки с надеждой на конструктивный и понятный ответ здесь или в скайпе (hardcore606) я очень сильно надеюсь.

Рефлект - миллион раз выкладывался


Вот автокик



На ьаш получается что-то вроде такого

Сообщение # 2325 отредактировано Punisher45 - Пятница, 19.05.2017, 18:07
Karolik
Скаут
кто может дать pqr профиля пвп?
Сообщение # 2326 написано 19.05.2017 в 23:00
Angelkot
Скаут
Ребята может ли кто то скинуть программу для воспроизведения lua скриптом на pandawow 5.4.8 ну и скрипты на Вара фурика biggrin
Сообщение # 2327 отредактировано Angelkot - Воскресенье, 21.05.2017, 06:49
cursedfunlol
Скаут
Цитата Punisher45 ()
Что-то вроде такого, за работоспособность не ручаюсь, в случае проблем изменить названия скиллов\проков в соответствии со своим патчем. В строчке SpellBase [z]and not interrupt then...  зет в скобочках должно быть без пробела со SpellBase а после него перед and должен быть пробел, как скопируешь исправь это (форум почему-то насилует эту часть)

Приветствую, спасибо! Но не работает, пробовал все в одном скрипте и по разным раскидать - хаунт кидается по нажатии скрипта и только, дрэйнсоул не срабатывает на 25, или меньше процентах, так же как и шб под прок - не кастует. Не могу понять, в чем дело. Хотя луа анлокается. Увов патч 3.3.5
Сообщение # 2328 написано 21.05.2017 в 11:21
Punisher45
Капрал
Цитата cursedfunlol ()
Не могу понять, в чем дело.

Да элементарно, надо тестить и исправлять, я ж по фасту накалякал без теста

Теперь кажется работает
Вот
Сообщение # 2329 отредактировано Punisher45 - Воскресенье, 21.05.2017, 15:01
Karolik
Скаут
а pqr на bc 2.4.3 есть?
Сообщение # 2330 написано 24.05.2017 в 22:28
Omgorcpower
Скаут
Дайте ссылку на переделанный СДМ или БиндПД, либо скиньте в личку, пожалуйста.
never mind as, main victory.
Сообщение # 2331 написано 26.05.2017 в 04:58
Punisher45
Капрал
Тема умерла?)
Сообщение # 2332 написано 31.05.2017 в 18:23
sixsixsix999
Скаут
привет, решил совместить 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 фрейма или более
Сообщение # 2333 отредактировано sixsixsix999 - Вторник, 06.06.2017, 21:34
VxtMkr
Скаут
Цитата sixsixsix999 ()
какие у меня ошибки?
Дублирование - не комильфо. Во второй функции имя переменной 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
sixsixsix999
Скаут
Цитата VxtMkr ()
fendTime не совпадает с endTime
и правда, как я только не заметил :)
Цитата VxtMkr ()
Набросал более универсальную функу
спасибо большое, я постепенно изучаю синтаксис благодаря этой теме) сам язык луа никогда не изучал, но заинтересовался именно темой скриптов вов, буду развиваться в этой области :)
сейчас потестю твой скрипт и попробую еще сделать такие же функции для грипа, сайленса и "прыжок+стан петом". я уже реализовал такое по фокусу и таргету своим методом, но твой скрипт выглядит более аккуратно и охватывает больше таргетов)
вообще массив походу вещь удобная, я еще не пробовал скрипты с массивами)

вот добавил еще функции для грипа, сайленса и "прыжок+стан"
Код
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)


Всё работает) если есть способ сделать более правильно, чем делать несколько функций, то подскажи плз)
Сообщение # 2335 отредактировано sixsixsix999 - Четверг, 08.06.2017, 10:33
VxtMkr
Скаут
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)
Сообщение # 2336 отредактировано VxtMkr - Четверг, 08.06.2017, 15:36
sixsixsix999
Скаут
Цитата VxtMkr ()
Конструкция из вложенных циклов

массивы и циклы творят чудеса!!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) т.к. что бы успеть сбить каст таким способом нужна примерно секунда, т.к. пет "летит" в прыжке и только потом даёт стан
очень благодарен тебе за помощь, кину плюсик)

п.с. если получится как то реализовать грип, учитывая его кривую механику, то будет идеально прям:)
будет шикарно если для грипа сделать отдельное условие ренжа и действия, например:
если фокус в ренже мили-зоны ко мне, то не использовать грип в фокус, вместо этого использовать его к другим юнитам(если они конечно же кастуют).
и такое проделать со всеми юнитами, которые находятся в мили-зоне со мной, что бы скрипт не спамил грип, который невозможно прожать, и не выкидывал с аккаунта

вот такая идея у меня, но для реализации надо лишь понять, как правильно воплотить это в код:)
Сообщение # 2337 отредактировано sixsixsix999 - Пятница, 09.06.2017, 12:33
mikel17
Скаут

Код
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)
Можно ли добавить в этот скрипт проверку на бафы- if not UnitBuff("target", "Divine Shield") чтобы в бабл? мастер аур, не юзать ?

Код
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 раги
Вот сделал пве ротацию для фури вара , только почему-то сильно садиться фпс ,
может кто помочь  сделать как-то аккуратнее довести до ума, чтобы фпс не так сильно падал. буду очень признателен.
Сообщение # 2338 отредактировано mikel17 - Суббота, 10.06.2017, 12:34
sixsixsix999
Скаут
еще интересуюсь как пользоваться этим кодом, точнее как его впилить в любой скрипт, для проверки лоса всех спеллов, которые будут использоваться далее в скрипте. код:
Код
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

ПС: сам код взял на предыдущих страницах темы
Сообщение # 2339 отредактировано sixsixsix999 - Суббота, 10.06.2017, 19:05
Punisher45
Капрал
Цитата mikel17 ()
Можно ли добавить в этот скрипт проверку на бафы- 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
Поиск: