Модератор форума: staford11 |
Форум Хитрости Пиратских серверов Читы для WoW Использование Lua скриптов. |
Использование Lua скриптов. |
Доброго всем времени суток, подскажите пожалуйста, играю на патче 2.4.3, есть ли скрипты для этого патча. Попробовал использовать ваши под 3.3.5, но ничего не вышло. Ищу скрипты для роги. В основном для использования ослепления после триньки противника или еще какого-нибудь стана. За ранее благодарен.
Сообщение # 2221 написано 13.04.2017 в 07:47
|
Как получить циферки урона под дебафом,ну например если накинуть на таргет порчу и навести на дебаф мышью ,то будет написано порча наносит xxx урона ,вот как получить эти xxx ну или надпись под дебафом полностью,мысли есть у кого?
|
Как получить циферки урона под дебафом,ну например если накинуть на таргет порчу и навести на дебаф мышью ,то будет написано порча наносит xxx урона ,вот как получить эти xxx ну или надпись под дебафом полностью,мысли есть у кого? или я не так понял и нужен просто тултип ауры? если тултип, то там инфа корявая, без учета статов, талантов и прочего. |
а мне такой же только чтоб еще сразу ваншотил их.
Сообщение # 2226 написано 13.04.2017 в 19:06
|
prn ()Как получить циферки урона под дебафом,ну например если накинуть на таргет порчу и навести на дебаф мышью ,то будет написано порча наносит xxx урона ,вот как получить эти xxx ну или надпись под дебафом полностью,мысли есть у кого? скрин? и патч какой? на 3.3.5 такого нету вроде. лучше конечно же с аддона брать инфу, но и с комбат_лога тоже можно. или я не так понял и нужен просто тултип ауры? если тултип, то там инфа корявая, без учета статов, талантов и прочего. в вовапи точно нету в UnitAura UnitBuff Debuff, а вот из какого евента вытащить эти циферки не найти никак |
да на всех патчах вроде есть,допустим на присте кидаем Слово силы щит: Магия ,дальше под бафом строкой ниже Поглощение 412 ед.урона. Осталось 12 сек, это весь текст который будет виден если навести на баф щита,так вот мне надо получить этот весь текст,из него не сложно вырезать будет 412,ну или строку Поглощение 412 ед.урона,вообщем надо получить количество оставщегося абсорба щита и тд,количество урона порчи...,хз наверно это тултип и есть с тултипа взять просто: Код do local f = CreateFrame("GameTooltip","finder",nil,"GameTooltipTemplate") function GetInfoforTooltip(spellID,pattern) f:SetOwner(UIParent, "ANCHOR_NONE") f:SetSpellByID(spellID) for i=2,f:NumLines() do local line = getglobal("finderTextLeft"..i) if line then line = line:GetText() if line then line = line:match(pattern) if line then return line end end end end end --пример: /run print(GetInfoforTooltip(6066,"%d+ ед. урона")) end если нужно с тултипа ауры/бафа/дебафа, то вместо SetSpellByID используй SetUnitAura/SetUnitBuff/SetUnitDebuff, но в этом случае вместо spellID нужно unit и индекс ауры указать. |
Как получить циферки урона под дебафом,ну например если накинуть на таргет порчу и навести на дебаф мышью ,то будет написано порча наносит xxx урона ,вот как получить эти xxx ну или надпись под дебафом полностью,мысли есть у кого? Тут все хотят придумать велосипед по новой, но я думаю что в сети предостаточно аддонов, которые покажут все, что тебе нужно и даже больше это как раз в их компетенции так сказать) Добавлено (14.04.2017, 10:37) Есть скрипт на выбивания из инвиза рог/фералов/найтэльфов. Как заставить его работать по арена фреймам? То есть, ты допустим бьешь таргет арена1, внезапно арена3 юзает ваниш, скрипт должен арена3 выбить из ваниша. Кто нибудь знает как реализовать подобное? А можно скрипт в студию?
Сообщение # 2230 написано 14.04.2017 в 10:37
|
Скрипт для вара, когда цель кастует инвиз переходит в защитную стойку и юзает таунт тем самым выбивая цель из инвиза, после возвращается в боевую стойку. Скрипт очень кастыльный написал как смог. Код function taunt (self, elapsed) if UnitDebuff("target", "Провокация") then RunMacroText("/cast Боевая стойка") end local enabled = GetSpellCooldown("Провокация") local inRange = IsSpellInRange("Провокация", "target") if enabled == 0 and inRange == 1 then if UnitBuff("target", "Незаметность") or UnitBuff("target", "Слиться с тенью") or UnitBuff("target", "Крадущийся зверь") then RunMacro("taunt") RunMacroText("/cast Провокация") RunMacroText("/cast Провокация") RunMacroText("/cast Провокация") end end end CreateFrame("Frame", "tauntFrame") tauntFrame:SetScript("OnUpdate", taunt) Пробовал написать через комбатлоганфильтред, работает на дк и паладинах, но в случае с варом он просто переходит в защитную стойку и не кастует таунт. Решается проблема видимо тем, что нужно чтобы скрипт после срабатывания был активен еще хотя бы пол секунды, как сделать такое можно?
Сообщение # 2231 написано 14.04.2017 в 11:40
|
do local f = CreateFrame("GameTooltip","finder",nil,"GameTooltipTemplate") function GetInfoforTooltip(spellID,pattern) f:SetOwner(UIParent, "ANCHOR_NONE") f:SetSpellByID(spellID) for i=2,f:NumLines() do local line = getglobal("finderTextLeft"..i) if line then line = line:GetText() if line then line = line:match(pattern) if line then return line end end end end end --пример: /run print(GetInfoforTooltip(6066,"%d+ ед. урона")) end
Сообщение # 2232 написано 14.04.2017 в 11:43
|
Скрипт для вара, когда цель кастует инвиз переходит в защитную стойку и юзает таунт тем самым выбивая цель из инвиза Я конечно не играл на старых патчах, поэтому первый раз слышу, чтобы таунт выбивал из инвиза, пусть даже и расового эльфийского, а если там еще и ваниш, то тем более, единственный способ снять ваниш это кинуть под рогу свечу или выждать 3 сек пока ваниш спадет и аоешить наугад, хм. К тому же инвиз не кастуется, он инстантный, поэтому можно попробовать через UNIT_SPELLCAST_SUCCEDED но я что-то сомневаюсь что скрипт успеет втулить таунт прежде чем цель уйдет в стелс (сейчас проверил так и есть, скрипт успевает нажать таунт, но выпадает ошибка "нельзя применить к этой цели" ) Код TNT = CreateFrame("Frame", "TNT", UIParent); TNT:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED") TNT:SetScript("OnEvent", function(self, event, arg1, arg2) SpellBase = {"Незаметность","Слиться с тенью","Крадущийся зверь"} local cd = GetSpellCooldown("Провокация") local inRange = IsSpellInRange("Провокация", "target") for v = 1,#SpellBase do local args = {arg1, arg2} if (arg1 == "target" and arg2 == SpellBase[v]) then if cd == 0 and inRange == 1 then index = GetShapeshiftForm() if index ~= 2 then CastSpellByName("Оборонительная стойка") end if index == 2 then CastSpellByName("Провокация") end end end end if index == 2 and cd ~= 0 then CastSpellByName("Боевая стойка") end end) В любом случае держи, может что-то придумаешь сам |
не могу найти как добавить проверку в процентах на хп в этот кусок скрипта! Суть такая если хп равно или меньше 35% давал баш, а не просто так в каждый каст
Код if rage >= 10 and enabled == 0 and (not UnitBuff("player","Вкус крови")) and (not UnitDebuff("target","Неумолимая атака")) then if interrupt == false and inRange == 1 then RunMacro("Удар щитом") end end end end CreateFrame("Frame", "KickFrame") KickFrame:SetScript("OnUpdate", Kick)
Сообщение # 2234 написано 14.04.2017 в 17:39
|
не могу найти как добавить проверку в процентах на хп в этот кусок скрипта! Суть такая если хп равно или меньше 35% давал баш, а не просто так в каждый каст Как вариант вот так Код local health = UnitHealth("target") local healthmax = UnitHealthMax("target") local percent = (health*100)/healthmax .... if rage >= 10 and enabled == 0 and (not UnitBuff("player","Вкус крови")) and (not UnitDebuff("target","Неумолимая атака")) then if interrupt == false and inRange == 1 and percent <= 35 then RunMacro("Удар щитом") end end end end CreateFrame("Frame", "KickFrame") KickFrame:SetScript("OnUpdate", Kick) если найдешь функцию получения процента в библиотеке math то можешь попроще сделать |
А есть скрипт, который будет снова брать в фокус цель, которая уже была у тебя в фокусе, но, например, ушла в инвиз? Что-то вроде, работает или нет не знаю, нет возможности проверить, да и к тому же не знаю будет ли сбрасываться значение глобальной переменной name после выхода из функции или нет. так что хз хз Код function ft (self, elapsed) if UnitExists("focus") then name = UnitName("focus") end local targtable = {"arena1","arena2","arena3","arena4","arena5"} if not UnitExists("focus") and name ~= nil then for v=1,#targtable do if name == UnitName(targtable[v]) and UnitIsVisible(targtable[v]) == 1 then FocusUnit(targtable[v]) end end end end CreateFrame("Frame", "ftFrame") ftFrame:SetScript("OnUpdate", ft) Примерно как это должно работать: ты изначально фокусишь свою цель, скрипт записывает имя твоего фокуса в переменную name (по идее) а позже, когда фокус пропадает, скрипт сравнивает значение из name с именами аренафреймов, и если скажем арена2 не находится в инвизе и появился на свет божий, фокусит арена2, то есть твой предыдущий фокус, в принципе это хорошо подходит если вы упорно туннелите 1 цель (все опять же чисто теоритически, будет ли это работать или нет - большой вопрос) |
Я конечно не играл на старых патчах, поэтому первый раз слышу, чтобы таунт выбивал из инвиза, пусть даже и расового эльфийского, а если там еще и ваниш, то тем более, единственный способ снять ваниш это кинуть под рогу свечу или выждать 3 сек пока ваниш спадет и аоешить наугад, хм. К тому же инвиз не кастуется, он инстантный, поэтому можно попробовать через UNIT_SPELLCAST_SUCCEDED но я что-то сомневаюсь что скрипт успеет втулить таунт прежде чем цель уйдет в стелс (сейчас проверил так и есть, скрипт успевает нажать таунт, но выпадает ошибка "нельзя применить к этой цели" ) На пиратке, где я играю выбивает таунтом из инвиза. Случайно совершенно заметил. Не знаю, как должно быть на самом деле. Протестил скрипт, спасибо, но все равно, он только переходит в защитную стойку и все. Таунт не юзает. Но если защитная стойка активирована и рога юзает стелс , тогда таунт проходит. Ладно, пофик на саму реализацию, у меня есть кастыль, который работает. Мне главное разобраться с таргетами, чтобы скрипт видел, что arena1\2\3 юзает стелс и внезависимости от моего таргета юзал на этот arena1\2\3 таунт.
Сообщение # 2239 написано 15.04.2017 в 21:50
|
На пиратке, где я играю выбивает таунтом из инвиза. Случайно совершенно заметил. Не знаю, как должно быть на самом деле. Протестил скрипт, спасибо, но все равно, он только переходит в защитную стойку и все. Таунт не юзает. Но если защитная стойка активирована и рога юзает стелс , тогда таунт проходит. Ладно, пофик на саму реализацию, у меня есть кастыль, который работает. Мне главное разобраться с таргетами, чтобы скрипт видел, что arena1\2\3 юзает стелс и внезависимости от моего таргета юзал на этот arena1\2\3 таунт. Честно?Ума не приложу, как можно что-то юзнуть в тот же момент, когда цель уходит в инвиз и уж тем более понятия не имею как и почему твой скрипт работает, сори. Думаю слово пиратка хорошо описывает это все дело)
Сообщение # 2240 написано 16.04.2017 в 20:48
|
Valvedoto
Цитата function taunt (self, elapsed) if UnitDebuff("target", "Провокация") then RunMacroText("/cast Боевая стойка") end local enabled = GetSpellCooldown("Провокация") local inRange = IsSpellInRange("Провокация", "target") if enabled == 0 and inRange == 1 then if UnitBuff("target", "Незаметность") or UnitBuff("target", "Слиться с тенью") or UnitBuff("target", "Крадущийся зверь") then RunMacro("taunt") RunMacroText("/cast Провокация") RunMacroText("/cast Провокация") RunMacroText("/cast Провокация") end end end CreateFrame("Frame", "tauntFrame") tauntFrame:SetScript("OnUpdate", taunt) потести так Код local f,shift,time_shift = CreateFrame("Frame"),0,0 f:SetScript("OnUpdate", function(_,e) if GetSpellCooldown("Боевая стойка") == 0 and (shift == 2 or (shift == 1 and time_shift > 10)) then shift,time_shift = 0,0 CastSpellByName("Боевая стойка") end if shift == 1 then time_shift = time_shift + 1 end if GetSpellCooldown("Провокация") > 0 then return end for _,unit in ipairs({"target","focus","arana1","arana2","arana3","arana4","arana5"}) do if UnitExists(unit) then if IsSpellInRange("Провокация", unit) == 1 and (UnitBuff(unit, "Незаметность") or UnitBuff(unit, "Слиться с тенью") or UnitBuff(unit, "Крадущийся зверь")) then if GetShapeshiftForm() == 2 then CastSpellByName("Провокация",unit) shift = 2 elseif GetSpellCooldown("Боевая стойка") == 0 then CastSpellByName("Оборонительная стойка") shift,time_shift = 1,0 end end end end end) |
потести так Код local f,shift,time_shift = CreateFrame("Frame"),0,0 f:SetScript("OnUpdate", function(_,e) if GetSpellCooldown("Боевая стойка") == 0 and (shift == 2 or (shift == 1 and time_shift > 10)) then shift,time_shift = 0,0 CastSpellByName("Боевая стойка") end if shift == 1 then time_shift = time_shift + 1 end if GetSpellCooldown("Провокация") > 0 then return end for _,unit in ipairs({"target","focus","arana1","arana2","arana3","arana4","arana5"};) do if UnitExists(unit) then if IsSpellInRange("Провокация", unit) == 1 and (UnitBuff(unit, "Незаметность") or UnitBuff(unit, "Слиться с тенью") or UnitBuff(unit, "Крадущийся зверь")) then if GetShapeshiftForm() == 2 then CastSpellByName("Провокация",unit) shift = 2 elseif GetSpellCooldown("Боевая стойка") == 0 then CastSpellByName("Оборонительная стойка") shift,time_shift = 1,0 end end end end end) Красиво пишешь, через анонимную функцию, массив обьявляешь прямо в начале цикла) Не подскажешь, что такое переменные shift,time_shift ?time_shift это я так понял период апдейта в 10 секунд, а что такое shift не понятно. И еще по циклу, for _,unit in ipairs нет начального значения, как он вообще работает?и зачем ipairs если ключ ты не используешь? Ты конечно извини, но мне просто интересно т.к. в языке знаю только основы, вот и заинтересовался
Сообщение # 2242 написано 17.04.2017 в 12:41
|
Не подскажешь, что такое переменные shift,time_shift ?time_shift это я так понял период апдейта в 10 секунд, а что такое shift не понятно. time_shift -таймер на случай когда юзнул стойку, юнит исчез и не успел юзнуть в него таунт, через десять тактов стойка сменится обратно в боевую. ключи в любой таблицы есть, данная таблица использует ключи - итераторы, поэтому ipairs.
Сообщение # 2243 написано 17.04.2017 в 15:53
|
ключи в любой таблицы есть, данная таблица использует ключи - итераторы, поэтому ipairs. я к тому что ты просто мог написать цикл с перебором до конца таблицы без ipairs т.к. ты не используешь значения ключа в теле цикла, так твой цикл работает до последнего целого ключа ,который есть в массиве, что насколько я понимаю, то же самое, что и простой перебор элементов до конца массива, поэтому и написал Обьясни еще пжлст что передается тут в функцию function(_,e), переменная е (или что это?) нигде не обьявлена |
Да, действительно, но только если рог подойдет вплотную и спалит свой инвиз, тогда скрипт мгновенно разряжает таунт, но если рог просто стоит и вдруг юзает стелс, скрипт ничего не делает. Если ты изначально хотел чтобы скрипт выбивал всех кто подойдет слишком близко, то я просто не понял задания((( Извини, что ничем не помог
Сообщение # 2247 написано 17.04.2017 в 17:08
|
я к тому что ты просто мог написать цикл с перебором до конца таблицы без ipairs т.к. ты не используешь значения ключа в теле цикла, так твой цикл работает до последнего целого ключа ,который есть в массиве, что насколько я понимаю, то же самое, что и простой перебор элементов до конца массива, поэтому и написал elapsed же. если сделать time_shift = time_shift + e, вместо 1, то будет в секундах.
Сообщение # 2248 написано 17.04.2017 в 17:19
|
Ипаирс возвращает ключ и строку массива, тогда зачем ипаирс, если тебе нужен только элемент массива, а не его ключ? Можно было использовать простой обход for v=1,#название массива do и все, поэтому мне интересно почему ты написал именно через ипаирс. Хотя может я не понимаю просто ((
Сообщение # 2249 написано 17.04.2017 в 18:19
|
Да, действительно, но только если рог подойдет вплотную и спалит свой инвиз, тогда скрипт мгновенно разряжает таунт, но если рог просто стоит и вдруг юзает стелс, скрипт ничего не делает. Если ты изначально хотел чтобы скрипт выбивал всех кто подойдет слишком близко, то я просто не понял задания((( Извини, что ничем не помог Хм, странно что ничего не делает. Мы же чекаем таргет/фокус/аренатаргеты на баф инвиза и если он есть, то юзаем таунт. Видимо там, где играешь ты этот баф вешается после самого ухода в инвиз или как-то так. На моем сервере сначала накладывается баф и только после цель исчезает, поэтому скрипт и успевает дать таунт. Вообще не знаю, правильная ли это работоспособность или нет. Чуть позже протестирую на циркуле. upd. Протестил на циркуле просто пишет "нельзя применить к этой цели" во время ухода в инвиз. |
| |||