Xudojnik 904 Report post Posted August 18, 2016 UnitInRaid 0 Share this post Link to post Share on other sites
Farela 0 Report post Posted October 14, 2016 (edited) поставь аддон супермакро https://elysium-project.org/forum/index.php?showtopic=16970&page=2#entry219112 там правда небольшой уклон для англоязычного клиента - я учитываю что за спеллом может быть (Rank №) string.find(spellName .. '(Rank ' .. spellRank .. ')', spell) так что поменяй - как там оно на рус клиенте в спеллбуке с рангом пишется всмысле (Ранг ) или (Уровень ) - хз ну вот так - каст иммолейта, если на противнике дебаф, то шедо болт /script local rotation = {"Immolate","Shadow Bolt"} if not FindInBook then function FindInBook(spell) local i = 1 local SPELLNUM = nil while true do local spellName, spellRank = GetSpellName(i, BOOKTYPE_SPELL) if not spellName then break end if string.find(spellName .. '(Rank ' .. spellRank .. ')', spell) then SPELLNUM = i end i = i + 1 end return SPELLNUM end end if not FindInBar then function FindInBar(spell) local lActionSlot for lActionSlot = 1, 120 do GameTooltip:SetOwner(GameTooltip, "ANCHOR_NONE") GameTooltip:SetAction(lActionSlot) result = "" leftline = getglobal("GameTooltipTextLeft"..1):GetText() or "" rightline = getglobal("GameTooltipTextRight"..1):IsVisible() if rightline then rightline = getglobal("GameTooltipTextRight"..1):GetText() end result = leftline if rightline and string.find(rightline, "Rank") then rightline = "("..rightline..")" result = result..rightline elseif rightline and leftline ~= "" then result = result.." "..rightline end if string.find(result, spell) then return lActionSlot end GameTooltip:Hide() GameTooltip:ClearLines() end return nil end end if not cd then cd = {} for i = 1, getn(rotation) do cd[i] = {} cd[i].name = rotation[i] cd[i].spellnum = FindInBook(cd[i].name) cd[i].slot = FindInBar(cd[i].name) end end for i = 1, getn(cd) do start, duration = GetSpellCooldown(cd[i].spellnum, BOOKTYPE_SPELL) if duration ~= 0 then cd[i].cd = duration - GetTime() + start else cd[i].cd = 0 end end if buffed("Immolate", "target") then cd[1].cd = 10 end for i = 1, getn(cd) do if cd[i].cd == 0 and IsUsableAction(cd[i].slot) then cast(cd[i].name) break end end т.е. первый по приоритету Immolate, второй Shadow Bolt и приписка в конце if buffed("Immolate", "target") then cd[1].cd = 10 end которая означает, что если на нашей цели дебаф от иммолейта, то мы ставим кулдаун для 1-го спелла из списка(иммолейт), поэтому он пропустится и скастится шедоболт Да да, это все можно написать в две строчки, но с этим макросом можно последовательность из 20-ти спеллов сделать за пару минут(и проверка на возможность каста адекватная). Так сказать поппуляризирую, ибо 80% вопросов по макросам именно на эту тему. (Еще раз логика макроса - кастим то, что можно первым скастить из списка, ежели нам что-то кастить не надо - то по условию в конце перед последним циклом for..end ставим условия, дабы кд насильно повесить, к слову сказать если надо проверить баф на себе, то вместо "target" "player") рЕБЯТА нашол вот такой скрипт в этой теме старый нарыл, но не работает Я не очень дружу с супер макро можно как то реализовать без него? http://s019.radikal.ru/i625/1610/52/a7099417daa7.png [/url] Edited October 14, 2016 by Farela 0 Share this post Link to post Share on other sites
rampageref 0 Report post Posted October 16, 2016 Прикрутил аимд шот к стандартному кастбару, обозвав аддон заодно Better Aimed Shot. если кому интересно - может глянуть код, там идет перехват(hook) функции UseAction чтобы узнать когда клацнули на каст, потом рассчитывается коэффециент изменение скорости (стандартная берется из описания пушки и описания колчана, а модифицированная бафами всякими на скорость возвращает функция известная, и еще сделал учет пинга в 0.2). Далее запускается на кастбар, кусок на запуск кастбара скопирован из близзардовского одноименного аддона, который по умолчанию. макрос в новых условиях /script time_to_shoot = BAS.GetTimeToShoot() if time_to_shoot > 0.9 or (not BAS.autoshot) then CastSpellByName("Aimed Shot") end При использовании абилок пета, ивент кастстоп тоже срабатывает и кулдаун автошота неправильно срабатывает, есть идеи как исправить? Чтобы отслеживался ивент только для автошота, а не в целом? 0 Share this post Link to post Share on other sites
shuraken007 345 Report post Posted October 16, 2016 (edited) рЕБЯТА нашол вот такой скрипт в этой теме старый нарыл, но не работает спеллы, используемые в макросе должны быть на панельке, у тебя вроде нету Immolate для последовательности Immolate, CoE, Corruption, Conflagrate к примеру выглядит так /script local rotation = {"Immolate","Curse of the Elements", "Corruption", "Conflagrate"} if not FindInBook then function FindInBook(spell) local i = 1 local SPELLNUM = nil while true do local spellName, spellRank = GetSpellName(i, BOOKTYPE_SPELL) if not spellName then break end if string.find(spellName .. '(Rank ' .. spellRank .. ')', spell) then SPELLNUM = i end i = i + 1 end return SPELLNUM end end if not FindInBar then function FindInBar(spell) local lActionSlot for lActionSlot = 1, 120 do GameTooltip:SetOwner(GameTooltip, "ANCHOR_NONE") GameTooltip:SetAction(lActionSlot) result = "" leftline = getglobal("GameTooltipTextLeft"..1):GetText() or "" rightline = getglobal("GameTooltipTextRight"..1):IsVisible() if rightline then rightline = getglobal("GameTooltipTextRight"..1):GetText() end result = leftline if rightline and string.find(rightline, "Rank") then rightline = "("..rightline..")" result = result..rightline elseif rightline and leftline ~= "" then result = result.." "..rightline end if string.find(result, spell) then return lActionSlot end GameTooltip:Hide() GameTooltip:ClearLines() end return nil end end if not cd then cd = {} for i = 1, getn(rotation) do cd[i] = {} cd[i].name = rotation[i] cd[i].spellnum = FindInBook(cd[i].name) cd[i].slot = FindInBar(cd[i].name) end end for i = 1, getn(cd) do start, duration = GetSpellCooldown(cd[i].spellnum, BOOKTYPE_SPELL) if duration ~= 0 then cd[i].cd = duration - GetTime() + start else cd[i].cd = 0 end end if buffed("Curse of the Elements", "target") then cd[2].cd = 10 end if buffed("Corruption", "target") then cd[3].cd = 10 end if buffed("Immolate", "target") and not (cd[2].cd~=0 and cd[3].cd~=0 and cd[4].cd~=0) then cd[1].cd = 10 end for i = 1, getn(cd) do if cd[i].cd == 0 and IsUsableAction(cd[i].slot) then cast(cd[i].name) break end end проще можно - опять же при подключенном супермакро /script if buffed("Immolate", "target") then cast("Shadow Bolt") else cast("Immolate") end без супермакро - сложно, надо в цикле проверять на наличие дебафа иммолейт Edited October 17, 2016 by shuraken007 1 Share this post Link to post Share on other sites
shuraken007 345 Report post Posted October 16, 2016 (edited) При использовании абилок пета, ивент кастстоп тоже срабатывает и кулдаун автошота неправильно срабатывает, есть идеи как исправить? Чтобы отслеживался ивент только для автошота, а не в целом? ну так фишка в том, что для автошота коряво шлются ивенты, и понять что автошот закончился можно только по стопкасту - надо добавить отслеживание кастов петов, если надо - могу покопаться, тогда кинь в личку пета этого с кастом хотя бы Edited October 16, 2016 by shuraken007 0 Share this post Link to post Share on other sites
SeconDDooM 12 Report post Posted October 26, 2016 (edited) Видимо, что я делаю что-то не так.) Юзаю на гвардов, пишет тоже самое, Spell_Holy_Dizzy./run if UnitDebuff("target",i) then SendChatMessage("resists Shadow and Frost", s) else SendChatMessage("resists Arcane and Fire", s);end Edited October 26, 2016 by SeconDDooM 0 Share this post Link to post Share on other sites
stubbzero 0 Report post Posted November 24, 2016 Здравствуйте, давно ищу макрос, чтобы 1й кнопкой вешать несколько моментальных дот на противника. Вся проблема в том, что первая дота иногда вешается 2 раза подряд, а потом уже вешается вторая. Помогите с макросом! Может задержку между наложением дот сделать или еще чего(( Мне нужен макрос чтобы на 1 кнопку было 2 доты, бегу от моба спамлю кнопку, и доты обновляются если они завершили свое действие, Если же на цели обе доты то ничего не должно происходить, ну и желательно чтобы все таки первая дота по несколько раз не накладывалась( 0 Share this post Link to post Share on other sites
shuraken007 345 Report post Posted November 24, 2016 (edited) /script local a, b a = buff("дебафф от первой доты - которое в тултипе при наведении мышкой", "target") b = buff("дебафф от второй доты", "target") if not a then cast("первое закл") elseif not b then cast("второе закл") end Edited November 24, 2016 by shuraken007 0 Share this post Link to post Share on other sites
shuraken007 345 Report post Posted November 24, 2016 p.s. чуть было не забыл - нужен супермакро из-за функции buff 0 Share this post Link to post Share on other sites
stubbzero 0 Report post Posted December 3, 2016 (edited) Подскажите, есть ли макрос для охотника, чтобы при нажатии пр кнопки мыши по противнику, включалась бы автоатака? (Автоматическая атака дальнего боя) И если нет, то может ли кто-нибудь скинуть макрос на автоатаку 2 в 1 (ближний бой+дальний бой) Edited December 3, 2016 by stubbzero 0 Share this post Link to post Share on other sites
Av_vA 3,044 Report post Posted December 4, 2016 Даже тяжело представить, зачем это нужно. Если у тебя активирован автошот и ты выбираешь/меняешь цель - у тебя он автоматом начнет в неё стрелять. 0 Share this post Link to post Share on other sites
Baekk_x 17 Report post Posted December 4, 2016 Даже тяжело представить, зачем это нужно. Если у тебя активирован автошот и ты выбираешь/меняешь цель - у тебя он автоматом начнет в неё стрелять. Есть смысл,ты не понял постановку вопроса.Он имел виду,когда сокращается расстояние и сбивает автошот можно было той же кнопкой переключиться на мили.Ты задашься вопросов за чем если раптор включает мили,объясняю когда маны нет тогда загвоздка,ибо автошот или мили это от 300-1200 урона. 0 Share this post Link to post Share on other sites
Proxis 0 Report post Posted December 13, 2016 А может кто подсказать макрос для варлока, а вернее для феллхантера на диспел с меня? И можно ли сделать так чтобы диспелил он именно то что мне нужно из всего букета? 0 Share this post Link to post Share on other sites
Av_vA 3,044 Report post Posted December 13, 2016 Есть смысл,ты не понял постановку вопроса.Он имел виду,когда сокращается расстояние и сбивает автошот можно было той же кнопкой переключиться на мили.Ты задашься вопросов за чем если раптор включает мили,объясняю когда маны нет тогда загвоздка,ибо автошот или мили это от 300-1200 урона. У меня макрос с вингклипом, ранг выбирается автоматически в зависимости от текущего кол-ва маны+раптор туда же. Кому как проще, конечно, но, оыбчно, в мили всё равно приходится вингклипом спамить, если пвп билд со вкачанным или там еще контратака. Подскажите, есть ли макрос для охотника, чтобы при нажатии пр кнопки мыши по противнику, включалась бы автоатака? Тут нужен аддон, а не макрос А может кто подсказать макрос для варлока, а вернее для феллхантера на диспел с меня? И можно ли сделать так чтобы диспелил он именно то что мне нужно из всего букета? 1) /run CastSpellByName("диспел_собаки");SpellTargetUnit("player"); Дальше сам проверяй, мб что-то придется дописать, но должно работать и так. 2) А не дохера ли ты хочешь?^ 0 Share this post Link to post Share on other sites
Proxis 0 Report post Posted December 13, 2016 1) /run CastSpellByName("диспел_собаки");SpellTargetUnit("player"); Спасибо 0 Share this post Link to post Share on other sites
Av_vA 3,044 Report post Posted December 13, 2016 Еще один нюанс - у тебя не должно быть никого в таргете, соответственно надо сначала очистить таргет, а потом вернуть последний, всё в 1 макросе. Так же, хз как там будет щас, но раньше на вальке нужно было еще собаку сначала отозвать с текущей цели(если она кого-то била, например). Так что добавь ClearTarget() и TargetLastTarget() как минимум, чтобы было юзабельно. 0 Share this post Link to post Share on other sites
Artur 28 Report post Posted December 14, 2016 Я для диспела использую этот: /run local x = IsShiftKeyDown(); if x == nil then CastSpellByName('Devour Magic(Rank 4)', 1) else CastSpellByName('Devour Magic(Rank 4)'); end; Если просто нажать, диспел с таргета. Если зажать shift то диспел с себя.IsShiftKeyDown можно заменить на IsAltKeyDown или IsControlKeyDown 0 Share this post Link to post Share on other sites
shadowside 2 Report post Posted January 8, 2017 Всем доброго дня. Сегодня решил занятся макросами и столкнулся с интересной проблемой. у меня установлен аддон SuperMacro с помощью которого я пытался написать для роги следующий макрос - /script if not buffed("Stealth") then cast("Stealth"); else if (UnitCanAttack("player","target")) then cast("Sap"); end;end макрос заключается в том чтобы при активации макроса персонаж уходил в стелс, при повторном нажатии он стелс не снимал но если есть возможность сапнуть таргет то он его сапает. Проблема в том, что первую строку кода он якобы читает, но остальное выводит в чат. Может кто сможет помочь с исправлением? 0 Share this post Link to post Share on other sites
Aveton 8 Report post Posted January 8, 2017 Просто сделай все в одну строку. 0 Share this post Link to post Share on other sites
shadowside 2 Report post Posted January 8, 2017 Уже попробовал)) 0 Share this post Link to post Share on other sites
monteo 0 Report post Posted January 8, 2017 (edited) /script local c=CastSpellByName if UnitAffectingCombat("player") then c("Vanish") else if not buffed("Stealth") then c("Stealth") else c("Sap") end end ваниш конечно лишний, при спаме легко кд потерять, поэтому вот без него /script local c=CastSpellByName if not buffed("Stealth") then c("Stealth") else c("Sap") end Edited January 8, 2017 by monteo 0 Share this post Link to post Share on other sites
Ivanoff 0 Report post Posted January 16, 2017 Всем привет! Помогите написать макрос для паладина. Цель. Хилить себя при нажатии самым высоким по рангу Holy Light если жизнь меньше 30%, если же жизнь больше 30% хилить Holy Light (rank "_"), Если маны не хватает на хил то применить заклинание Lay of Hand. 0 Share this post Link to post Share on other sites
bodygree 0 Report post Posted January 16, 2017 Ищу макросы на паладина. 0 Share this post Link to post Share on other sites
shuraken007 345 Report post Posted January 17, 2017 (edited) ну, можно написать что-нить в этом духе, нужен супермакро чтобы это всё туды запихать, а то буковок много local bh = 0 local mult_heal = 1 local mana_last_rang = 660 local heal = {(39+48)/2, (76+91)/2, (159+188)/2, (310+357)/2, (491+554)/2, (698+781)/2, (945+1054)/2, (1246+1389)/2, (1519+1771)/2} local hp = UnitHealthMax("player") - UnitHealth("player") local mana = UnitMana("player") TargetUnit("player") if UnitHealth("player")/UnitHealthMax("player") <= 0.3 then if mana >= mana_last_rang then cast("Holy Light") else cast("Lay on Hands") end else for i = 1, getn(heal) do local cur_heal = mult_heal*heal[i]+2.5/3.5*bh if hp < cur_heal or i == getn(heal) then cast("Holy Light(Rank "..i..")") end end end соответственно bh - это бонус хил, если поставить аддон BonusScanner, можно автоматически рассчитывать bh = BonusScanner:GetBonus("HEAL") можно ещё учитывать прожатые триньки, типа зг, с вб, квестовая у аргентумов if(buffed("Ages", "player")) then bh = bh + 350 end buff, id = buffed("Unstable", "player") if(buff == "buff") then _ ,num = UnitBuff("player", id) bh = bh + 34*num end buff, id = buffed("Ascendance", "player") if(buff == "buff") then _ ,num = UnitBuff("player", id) bh = bh + 75*(6-num) end mult_heal - это коэффициент, действующий на базовый хил (в талах например можно взять +15%, и вписать 1.15 вместо 1) mana_last_rang - это сколько стоит ласт ранг холи лайта, 9-й ранг стоит 660 Так что итоговый макрос без бонус сканера: /script local bh = 0 local mult_heal = 1 local mana_last_rang = 660 local heal = {(39+48)/2, (76+91)/2, (159+188)/2, (310+357)/2, (491+554)/2, (698+781)/2, (945+1054)/2, (1246+1389)/2, (1519+1771)/2} local hp = UnitHealthMax("player") - UnitHealth("player") local mana = UnitMana("player") TargetUnit("player") if UnitHealth("player")/UnitHealthMax("player") <= 0.3 then if mana >= mana_last_rang then cast("Holy Light") else cast("Lay on Hands") end else for i = 1, getn(heal) do local cur_heal = mult_heal*heal[i]+2.5/3.5*bh if hp < cur_heal or i == getn(heal) then cast("Holy Light(Rank "..i..")") end end end А с бонус хилом, врублённым BonusScanner - ом /script local mult_heal = 1 local mana_last_rang = 660 local bh = BonusScanner:GetBonus("HEAL") local buff,num,id if(buffed("Ages", "player")) then bh = bh + 350 end buff, id = buffed("Unstable", "player") if(buff == "buff") then _ ,num = UnitBuff("player", id) bh = bh + 34*num end buff, id = buffed("Ascendance", "player") if(buff == "buff") then _ ,num = UnitBuff("player", id) bh = bh + 75*(6-num) end local heal = {(39+48)/2, (76+91)/2, (159+188)/2, (310+357)/2, (491+554)/2, (698+781)/2, (945+1054)/2, (1246+1389)/2, (1519+1771)/2} local hp = UnitHealthMax("player") - UnitHealth("player") local mana = UnitMana("player") TargetUnit("player") if UnitHealth("player")/UnitHealthMax("player") <= 0.3 then if mana >= mana_last_rang then cast("Holy Light") else cast("Lay on Hands") end else for i = 1, getn(heal) do local cur_heal = mult_heal*heal[i]+2.5/3.5*bh if hp < cur_heal or i == getn(heal) then cast("Holy Light(Rank "..i..")") end end end лох кидается только если хп меньше 30% и маны не хватает я не проверял корректность с бх, есть шанс косяка Edited January 19, 2017 by shuraken007 1 Share this post Link to post Share on other sites
furkotovich 0 Report post Posted January 17, 2017 где можно почитать про все команды, синтаксис? 0 Share this post Link to post Share on other sites