Модератор форума: staford11  
Использование Lua скриптов.
cost249
Скаут
Доброго всем времени суток, подскажите пожалуйста, играю на патче 2.4.3, есть ли скрипты для этого патча. Попробовал использовать ваши под 3.3.5, но ничего не вышло. Ищу скрипты для роги. В основном для использования ослепления после триньки противника или еще какого-нибудь стана. За ранее благодарен.
Сообщение # 2221 написано 13.04.2017 в 07:47
prn
Скаут
Как получить циферки урона под дебафом,ну например если накинуть на таргет порчу и навести на дебаф мышью ,то будет написано порча наносит xxx урона ,вот как получить эти xxx ну или надпись под дебафом полностью,мысли есть у кого?
Сообщение # 2222 отредактировано prn - Четверг, 13.04.2017, 13:14
Rextown
Скаут
Punisher45,  И снова спасибо тебе! dllinjector помог
Сообщение # 2223 написано 13.04.2017 в 18:11
xGhostx
Скаут
Цитата prn ()
Как получить циферки урона под дебафом,ну например если накинуть на таргет порчу и навести на дебаф мышью ,то будет написано порча наносит xxx урона ,вот как получить эти xxx ну или надпись под дебафом полностью,мысли есть у кого?
скрин? и патч какой? на 3.3.5 такого нету вроде. лучше конечно же с аддона брать инфу, но и с комбат_лога тоже можно.

или я не так понял и нужен просто тултип ауры? если тултип, то там инфа корявая, без учета статов, талантов и прочего.
Сообщение # 2224 отредактировано xGhostx - Четверг, 13.04.2017, 19:01
Punisher45
Капрал
Цитата Rextown ()
Punisher45,  И снова спасибо тебе! dllinjector помог

Не за что)
Сообщение # 2225 написано 13.04.2017 в 19:03
xGhostx
Скаут
Цитата Valvedoto ()
Есть скрипт на выбивания из инвиза рог/фералов/найтэльфов. Как заставить его работать по арена фреймам? То есть, ты допустим бьешь таргет арена1, внезапно арена3 юзает ваниш, скрипт должен арена3 выбить из ваниша. Кто нибудь знает как реализовать подобное?
а мне такой же только чтоб еще сразу ваншотил их.
Сообщение # 2226 написано 13.04.2017 в 19:06
Punisher45
Капрал
Цитата xGhostx ()
а мне такой же только чтоб еще сразу ваншотил их.

Держи, от сердца отрываю


Код
/cast Божественный щит
/use Камень возвращения
Сообщение # 2227 написано 13.04.2017 в 20:53
prn
Скаут
Цитата xGhostx ()
prn ()Как получить циферки урона под дебафом,ну например если накинуть на таргет порчу и навести на дебаф мышью ,то будет написано порча наносит xxx урона ,вот как получить эти xxx ну или надпись под дебафом полностью,мысли есть у кого?
скрин? и патч какой? на 3.3.5 такого нету вроде. лучше конечно же с аддона брать инфу, но и с комбат_лога тоже можно.

или я не так понял и нужен просто тултип ауры? если тултип, то там инфа корявая, без учета статов, талантов и прочего.
да на всех патчах вроде есть,допустим на присте кидаем Слово силы щит:       Магия    ,дальше под бафом строкой ниже Поглощение 412 ед.урона.  Осталось 12 сек,   это весь текст который будет виден если навести на баф щита,так вот мне надо получить этот весь текст,из него не сложно вырезать будет 412,ну или строку Поглощение 412 ед.урона,вообщем надо получить количество оставщегося абсорба щита и тд,количество урона порчи...,хз наверно это тултип и есть,а вот как его вытащить из комбат лога и где он там в каком аргументе или из другово евента
в вовапи точно нету в UnitAura UnitBuff Debuff, а вот из какого евента вытащить эти циферки не найти никак
Сообщение # 2228 отредактировано prn - Четверг, 13.04.2017, 22:50
xGhostx
Скаут
Цитата prn ()
да на всех патчах вроде есть,допустим на присте кидаем Слово силы щит:       Магия    ,дальше под бафом строкой ниже Поглощение 412 ед.урона.  Осталось 12 сек,   это весь текст который будет виден если навести на баф щита,так вот мне надо получить этот весь текст,из него не сложно вырезать будет 412,ну или строку Поглощение 412 ед.урона,вообщем надо получить количество оставщегося абсорба щита и тд,количество урона порчи...,хз наверно это тултип и есть
скрин? патч? невидел такого на 3.3.5
с тултипа взять просто:

Код
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 и индекс ауры указать.
Сообщение # 2229 отредактировано xGhostx - Пятница, 14.04.2017, 06:23
Punisher45
Капрал
Цитата prn ()
Как получить циферки урона под дебафом,ну например если накинуть на таргет порчу и навести на дебаф мышью ,то будет написано порча наносит xxx урона ,вот как получить эти xxx ну или надпись под дебафом полностью,мысли есть у кого?

Тут все хотят придумать велосипед по новой, но я думаю что в сети предостаточно аддонов, которые покажут все, что тебе нужно и даже больше это как раз в их компетенции так сказать)

Добавлено (14.04.2017, 10:37)
---------------------------------------------

Цитата Valvedoto ()
Есть скрипт на выбивания из инвиза рог/фералов/найтэльфов. Как заставить его работать по арена фреймам? То есть, ты допустим бьешь таргет арена1, внезапно арена3 юзает ваниш, скрипт должен арена3 выбить из ваниша. Кто нибудь знает как реализовать подобное?

А можно скрипт в студию?
Сообщение # 2230 написано 14.04.2017 в 10:37
Valvedoto
Скаут
Цитата Punisher45 ()
А можно скрипт в студию?

Скрипт для вара, когда цель кастует инвиз переходит в защитную стойку и юзает таунт тем самым выбивая цель из инвиза, после возвращается в боевую стойку. Скрипт очень кастыльный написал как смог.

Код
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
prn
Скаут
Цитата xGhostx ()
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
Punisher45
Капрал
Цитата Valvedoto ()
Скрипт для вара, когда цель кастует инвиз переходит в защитную стойку и юзает таунт тем самым выбивая цель из инвиза

Я конечно не играл на старых патчах, поэтому первый раз слышу, чтобы таунт выбивал из инвиза, пусть даже и расового эльфийского, а если там еще и ваниш, то тем более, единственный способ снять ваниш это кинуть под рогу свечу или выждать 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)

В любом случае держи, может что-то придумаешь сам
Сообщение # 2233 отредактировано Punisher45 - Пятница, 14.04.2017, 14:03
rdxzserdxzs
Скаут
не могу найти как добавить проверку в процентах на хп в этот кусок скрипта! Суть такая если хп равно или меньше 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
Punisher45
Капрал
Цитата rdxzserdxzs ()
не могу найти как добавить проверку в процентах на хп в этот кусок скрипта! Суть такая если хп равно или меньше 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 то можешь попроще сделать
Сообщение # 2235 отредактировано Punisher45 - Пятница, 14.04.2017, 18:50
Rextown
Скаут
А есть скрипт, который будет снова брать в фокус цель, которая уже была у тебя в фокусе, но, например, ушла в инвиз?
Сообщение # 2236 написано 15.04.2017 в 04:09
Punisher45
Капрал
Цитата Rextown ()
А есть скрипт, который будет снова брать в фокус цель, которая уже была у тебя в фокусе, но, например, ушла в инвиз?

Что-то вроде, работает или нет не знаю, нет возможности проверить, да и к тому же не знаю будет ли сбрасываться значение глобальной переменной 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  цель (все опять же чисто теоритически, будет ли это работать или нет - большой вопрос)
Сообщение # 2237 отредактировано Punisher45 - Суббота, 15.04.2017, 11:46
Rextown
Скаут
Punisher45,  Спасибо, попробую
Сообщение # 2238 написано 15.04.2017 в 14:12
Valvedoto
Скаут
Цитата Punisher45 ()
Я конечно не играл на старых патчах, поэтому первый раз слышу, чтобы таунт выбивал из инвиза, пусть даже и расового эльфийского, а если там еще и ваниш, то тем более, единственный способ снять ваниш это кинуть под рогу свечу или выждать 3 сек пока ваниш спадет и аоешить наугад, хм. К тому же инвиз не кастуется, он инстантный, поэтому можно попробовать через UNIT_SPELLCAST_SUCCEDED но я что-то сомневаюсь что скрипт успеет втулить таунт прежде чем цель уйдет в стелс (сейчас проверил так и есть, скрипт успевает нажать таунт, но выпадает ошибка "нельзя применить к этой цели" )

На пиратке, где я играю выбивает таунтом из инвиза. Случайно совершенно заметил. Не знаю, как должно быть на самом деле. Протестил скрипт, спасибо, но все равно, он только переходит в защитную стойку и все. Таунт не юзает. Но если защитная стойка активирована и рога юзает стелс , тогда таунт проходит. Ладно, пофик на саму реализацию, у меня есть кастыль, который работает. Мне главное разобраться с таргетами, чтобы скрипт видел, что arena1\2\3 юзает стелс и внезависимости от моего таргета юзал на этот arena1\2\3 таунт.
Сообщение # 2239 написано 15.04.2017 в 21:50
Punisher45
Капрал
Цитата Valvedoto ()
На пиратке, где я играю выбивает таунтом из инвиза. Случайно совершенно заметил. Не знаю, как должно быть на самом деле. Протестил скрипт, спасибо, но все равно, он только переходит в защитную стойку и все. Таунт не юзает. Но если защитная стойка активирована и рога юзает стелс , тогда таунт проходит. Ладно, пофик на саму реализацию, у меня есть кастыль, который работает. Мне главное разобраться с таргетами, чтобы скрипт видел, что arena1\2\3 юзает стелс и внезависимости от моего таргета юзал на этот arena1\2\3 таунт.


Честно?Ума не приложу, как можно что-то юзнуть в тот же момент, когда цель уходит в инвиз и уж тем более понятия не имею как и почему твой скрипт работает, сори. Думаю слово пиратка хорошо описывает это все дело)
Сообщение # 2240 написано 16.04.2017 в 20:48
xGhostx
Скаут
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)
Сообщение # 2241 отредактировано xGhostx - Понедельник, 17.04.2017, 10:32
Punisher45
Капрал
Цитата xGhostx ()
потести так

Код
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
xGhostx
Скаут
Цитата Punisher45 ()
Не подскажешь, что такое переменные shift,time_shift ?time_shift это я так понял период апдейта в 10 секунд, а что такое shift не понятно.
shift это сейв того что скрипт юзал.
time_shift -таймер на случай когда юзнул стойку, юнит исчез и не успел юзнуть в него таунт, через десять тактов стойка сменится обратно в боевую.
Цитата Punisher45 ()
И еще по циклу, for _,unit in ipairs нет начального значения, как он вообще работает?и зачем ipairs если ключ ты не используешь? Ты конечно извини, но мне просто интересно т.к. в языке знаю только основы, вот и заинтересовался
ключи в любой таблицы есть, данная таблица использует ключи - итераторы, поэтому ipairs.
Сообщение # 2243 написано 17.04.2017 в 15:53
Punisher45
Капрал
Цитата xGhostx ()
ключи в любой таблицы есть, данная таблица использует ключи - итераторы, поэтому ipairs.

я к тому что ты просто мог написать цикл с перебором до конца таблицы без ipairs т.к. ты не используешь значения ключа в теле цикла, так твой цикл работает до последнего целого ключа ,который есть в массиве, что насколько я понимаю, то же самое, что и простой перебор элементов до конца массива, поэтому и написал

Обьясни еще пжлст  что передается тут в функцию function(_,e), переменная е (или что это?) нигде не обьявлена
Сообщение # 2244 отредактировано Punisher45 - Понедельник, 17.04.2017, 16:29
Valvedoto
Скаут
Цитата xGhostx ()
потести так

Вот оно, вот! Спасибо огромное, прям идеально и все как нужно работает.
Сообщение # 2245 написано 17.04.2017 в 16:44
sess
Скаут
можно ли определить скорость передвижения, если в клиенте нет GetUnitSpeed?
Сообщение # 2246 написано 17.04.2017 в 16:50
Punisher45
Капрал
Цитата Valvedoto ()
Вот оно, вот! Спасибо огромное, прям идеально и все как нужно работает.


Да, действительно, но только если рог подойдет вплотную и спалит свой инвиз, тогда скрипт мгновенно разряжает таунт, но если рог просто стоит и вдруг юзает стелс, скрипт ничего не делает. Если ты изначально хотел чтобы скрипт выбивал всех кто подойдет слишком близко, то я просто не понял задания((( Извини, что ничем не помог
Сообщение # 2247 написано 17.04.2017 в 17:08
xGhostx
Скаут
Цитата Punisher45 ()
я к тому что ты просто мог написать цикл с перебором до конца таблицы без ipairs т.к. ты не используешь значения ключа в теле цикла, так твой цикл работает до последнего целого ключа ,который есть в массиве, что насколько я понимаю, то же самое, что и простой перебор элементов до конца массива, поэтому и написал
я не понимаю про что речь. покажи как можно лучше без ипаирс?
Цитата Punisher45 ()
Обьясни еще пжлст  что передается тут в функцию function(_,e), переменная е (или что это?) нигде не обьявлена
elapsed  же. если сделать time_shift = time_shift + e, вместо 1, то будет в секундах.
Сообщение # 2248 написано 17.04.2017 в 17:19
Punisher45
Капрал
Цитата xGhostx ()
я не понимаю про что речь. покажи как можно лучше без ипаирс?


Ипаирс возвращает ключ и строку массива, тогда зачем ипаирс, если тебе нужен только элемент массива, а не его ключ? Можно было использовать простой обход for v=1,#название массива do и все, поэтому мне интересно почему ты написал именно через ипаирс. Хотя может я не понимаю просто ((
Сообщение # 2249 написано 17.04.2017 в 18:19
Valvedoto
Скаут
Цитата Punisher45 ()
Да, действительно, но только если рог подойдет вплотную и спалит свой инвиз, тогда скрипт мгновенно разряжает таунт, но если рог просто стоит и вдруг юзает стелс, скрипт ничего не делает. Если ты изначально хотел чтобы скрипт выбивал всех кто подойдет слишком близко, то я просто не понял задания((( Извини, что ничем не помог

Хм, странно что ничего не делает. Мы же чекаем таргет/фокус/аренатаргеты на баф инвиза и если он есть, то юзаем таунт. Видимо там, где играешь ты этот баф вешается после самого ухода в инвиз или как-то так. На моем сервере сначала накладывается баф и только после цель исчезает, поэтому скрипт и успевает дать таунт. Вообще не знаю, правильная ли это работоспособность или нет. Чуть позже протестирую на циркуле.

upd. Протестил на циркуле просто пишет "нельзя применить к этой цели" во время ухода в инвиз.
Сообщение # 2250 отредактировано Valvedoto - Понедельник, 17.04.2017, 20:55
Поиск: