Модератор форума: staford11  
Использование Lua скриптов.
light117
Рыцарь
Да - заменяешь target на arena1 или 2,3
Нажатие на кнопку "запомнить пароль" не поможет вам запомнить пароль
Сообщение # 691 написано 28.02.2015 в 18:58
sabr57
Скаут
PaulDousen, Огромное тебе спасибо, действительно очень сильно помог, низкий поклон)

SpellFrame = CreateFrame("Frame", "FrameSpell", UIParent);
SpellFrame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED");
SpellFrame:SetScript("OnEvent", function(self, event, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10 ...)
if(event=="COMBAT_LOG_EVENT_UNFILTERED") then
local SpellBase = {"PvP-аксессуар","Каждый за себя"}
for s = 1, #SpellBase do
local name = UnitName("player")
if arg2 == "SPELL_CAST_SUCCESS" and name ~= arg4 and name == arg7 and arg10 == SpellBase[s] then
local enabled = GetSpellCooldown("Ослепление")
if enabled == 0 then
CastSpellByName("Ослепление","target")
end
end
end
end
end

почему то он не работает. пробовал и так CastSpellByName("Ослепление","target") и так CastSpellByName("Ослепление")

Хотел еще узнать, а как мне кроме ослепления, вставить в касты еще несколько спелов?
Писать подряд, друг под другом:

CastSpellByName("Ослепление","target")
CastSpellByName("Подлый трюк","target")
CastSpellByName("Удар по почкам","target")
CastSpellByName("Парализующий удар","target")

или же брать выше надо:

local enabled = GetSpellCooldown("Ослепление")
if enabled == 0 then
CastSpellByName("Ослепление","target")
local enabled = GetSpellCooldown("Подлый трюк")
if enabled == 0 then
CastSpellByName("Подлый трюк","target")
и т.д.
Сообщение # 692 отредактировано sabr57 - Воскресенье, 01.03.2015, 00:34
PaulDousen
Рыцарь
Цитата sabr57 ()
local enabled = GetSpellCooldown("Ослепление")
if enabled == 0 then
CastSpellByName("Ослепление","target")
local enabled = GetSpellCooldown("Подлый трюк")
if enabled == 0 then
CastSpellByName("Подлый трюк","target")


Так будет практичнее
Сообщение # 693 написано 01.03.2015 в 01:00
sabr57
Скаут
PaulDousen, Ясно, большое тебе спасибо. Но почему то не работает, проверил скрипт, но вроде ошибок нету. Может я чего то не заметил?
Сообщение # 694 написано 01.03.2015 в 01:16
PaulDousen
Рыцарь
Цитата sabr57 ()
Ясно, большое тебе спасибо. Но почему то не работает, проверил скрипт, но вроде ошибок нету. Может я чего то не заметил?


Включи в вове отображение луа ошибок и смотри, я так делаю
Чаще всего ошибки бывают из за пропущенных скобок, и прочего
Сообщение # 695 написано 01.03.2015 в 01:33
cursedfunlol
Скаут

Почему может не работать? Описываю траблу:
Захожу в игру. запускаю гагарина (1.7, с первого поста), цепляюсь к процессу, анлочу луа, в игре запускаю скрипт - не работает. Вчера все прекрасно работало, удалил скрипт и гагарина, по-новой скачал - опять заработало, после выхода и захода в игру снова - такая же канитель, не пашет О_о Луа ошибки включены - пусто, ничего не показывает
Сообщение # 696 написано 01.03.2015 в 08:16
SuperSerious
Сержант
Помню tobmaps выкладывал сюда скрипт на ШВ вара. Там вар прыгает в деф стойку, юзает шв если меньше 30% хп, и потом обратно в боевую стойку с одноручкой. Вот его код:
Код
ShieldWallInAction = false  
c=CastSpellByName  
shieldwall = "Глухая оборона"  
reflect = "Отражение заклинания"  
defstance = "Оборонительная стойка"  
battlestance = "Боевая стойка"  
me = "player"  

-- проверяет можно ли юзать спелл  
function CanUse(spell)  
      if IsUsableSpell(spell) and GetSpellCooldown(spell) == 0 then  
          return true  
      else  
          return false  
      end  
end  

-- получает информацию по бафу  
function BuffInfo(spell, unit, own)  
      if own then  
          return UnitBuff(unit, spell, nil, unit)  
      else  
          return UnitBuff(unit, spell)  
      end  
end  

-- проверяет есть ли на нас баф  
function HasBuff(spell, mine)  
      if BuffInfo(spell, me, mine) then  
          return true  
      else  
          return false  
      end  
end  

-- получает хп в процентах  
function UnitHP(unit)  
      return UnitHealth(unit) / UnitHealthMax(unit) * 100  
end  

-- запоминает названия пух в наборах  
local itemArray = {}  
function RememberItemNames()  
      GetEquipmentSetItemIDs("twohand", itemArray)  
      twohand = GetItemInfo(itemArray[16])  
      wipe(itemArray)  
      GetEquipmentSetItemIDs("onehand", itemArray)  
      mainhand = GetItemInfo(itemArray[16])  
      offhand = GetItemInfo(itemArray[17])  
      wipe(itemArray)  
end  

-- получает наборы шмота  
function GetEquipmentSets()  
      if GetEquipmentSetInfoByName("twohand") and GetEquipmentSetInfoByName("onehand") then  
          RememberItemNames()  
      else  
          print("can't find required item sets")  
      end  
end  

GetEquipmentSets()  

-- одевает щит и одноручку  
function EquipShield()  
      UIErrorsFrame:UnregisterEvent("UI_ERROR_MESSAGE")  
      RunMacroText('/equip '..mainhand)  
      RunMacroText('/equip '..offhand)  
      UIErrorsFrame:RegisterEvent("UI_ERROR_MESSAGE")  
end  

-- одевает двуручку  
function EquipTwoHand()  
      UIErrorsFrame:UnregisterEvent("UI_ERROR_MESSAGE")  
      RunMacroText('/equip '..twohand)             
      UIErrorsFrame:RegisterEvent("UI_ERROR_MESSAGE")  
end  

-- прыгает в деф стойку  
function SwitchToDefence()  
      if GetShapeshiftForm() ~= 2 and CanUse(defstance) then  
          c(defstance)  
          print("used def stance")  
      end  
end  

-- основной цикл  
function DoDefenceStuff()  
      -- наше условие, т.е. когда юзать  
      -- в данном случае если ХП опустилось ниже 30% и нет кд  
      if UnitHP(me) < 30 and CanShieldWall() then  
          RunShieldWall()  
      end  
      -- если запущен процесс  
      if ShieldWallInAction then  
          -- приступаем к касту  
          CastShieldWall()  
      -- процесс не запущен, возврат в стойку и одевание двуручки  
      elseif not HasBuff(reflect) and not HasBuff(shieldwall) then  
          -- переодевание щита на двуруч  
          if IsEquippedItemType("Щиты") then  
              EquipTwoHand()  
          end  
          -- переход в обычную стойку из деф стойки  
          if GetShapeshiftForm() == 2 and CanUse(battlestance) then  
              c(battlestance)  
          end  
      -- раскомментируй код и убери аналогичный кусок сверху,  
      -- чтобы не дожидаясь окончания бафа глухой обороны был прыжок в обычную стойку  
      -- ведь баф не слетает от переключения стоек, по крайней мере на большинстве серверов  
      --else  
      --    if not HasBuff(reflect) and not HasBuff(shieldwall) and IsEquippedItemType("Щиты") then  
      --        EquipTwoHand()  
      --    end  
      --    if GetShapeshiftForm() == 2 and CanUse(battlestance) then  
      --        c(battlestance)  
      --    end  
      --end  
end  

-- проверка на кд  
function CanShieldWall()  
      if not ShieldWallInAction and GetSpellCooldown(shieldwall) == 0 then  
          return true  
      else  
          return false  
      end  
end  

-- запуск процесса  
function RunShieldWall()             
      ShieldWallInAction = true  
      -- засекает 3 секунды от запуска  
      WhenRefuseShieldWall = GetTime() + 3  
      print("run RunShieldWall()")  
end  

-- запуск каста и обработчик  
function CastShieldWall()  
      -- проверяет сколько времени уже прошло  
      if GetTime() > WhenRefuseShieldWall then  
          print("shield wall finished")  
          ShieldWallInAction = false  
          return  
      end  
      -- прыгает в деф стойку  
      SwitchToDefence()  
      -- одевает щит если ещё не одет  
      if not IsEquippedItemType("Щиты") then  
          EquipShield()  
      end  
      -- если может юзать ШВ  
      if CanUse(shieldwall) then  
          -- дополнительно Блок щитом  
          if CanUse("Блок щитом") then  
              c("Блок щитом")  
          end  
          -- юзает ШВ  
          c(shieldwall)  
      end  
end  

-- старт бесконечного цикла с основной функцией  
-- для этого нужен аддон Repeater  
RunMacroText("/rep 0.1 /run DoDefenceStuff()")  
print("DefenceModule loaded")


Я так понимаю, тут нужно убрать пару строчек, убрать вначале ShieldWall строку и дальше заменять шилдвол на рефлект?
Помогите,пожалуйста! с меня +
Сообщение # 697 написано 01.03.2015 в 10:23
sabr57
Скаут
Цитата PaulDousen ()
Включи в вове отображение луа ошибок и смотри, я так делаю
Чаще всего ошибки бывают из за пропущенных скобок, и прочего


Появилось такое окно при запуске скрипта. К сожалению я не смог разобраться в причинах.

Сообщение # 698 отредактировано sabr57 - Воскресенье, 01.03.2015, 20:26
sabr57
Скаут
DirGik, Вроде бы да. Его выкладывали в этой теме ранее.
Сообщение # 699 написано 01.03.2015 в 15:41
steeki
Скаут
есть скрипт для пета дк, ловить трапу?
Сообщение # 700 написано 02.03.2015 в 16:50
iwantyou
Скаут
Может кто подсказать где допущена ошибка в скрипте - автоинтервейн на скатер?

Создан также обычный макрос с названием "intervine"
PS за помощь с меня плюс
Сообщение # 701 отредактировано iwantyou - Понедельник, 02.03.2015, 18:20
light117
Рыцарь
Цитата iwantyou ()
iwantyou

Код
function Inter(self, elapsed)          
              local inRange = IsSpellInRange("Вмешательство", "party1")              
              local party = "party1"          
              if inRange == 1 then          
               if UnitDebuff(party, "Дезориентирующий выстрел") then          
               RunMacro("intervine")        
               end          
              end          
end          
CreateFrame("Frame", "InterFrame")          
InterFrame:SetScript("OnUpdate", Inter)

Проверь так

Добавлено (02.03.2015, 18:53)
---------------------------------------------

Цитата steeki ()
есть скрипт для пета дк, ловить трапу?

Код
function Leap(self, elapsed)           
               local inRange = IsSpellInRange("Прыжок", "party1")               
               local party = "party1"           
               if inRange == 1 then           
                if UnitDebuff(party, "Дезориентирующий выстрел") then           
                RunMacro("Прыжок")         
                end           
               end           
end           
CreateFrame("Frame", "LeapFrame")           
LeapFrame:SetScript("OnUpdate", Leap)

+ макрос с названием "Прыжок" - прыжок на напарника
Нажатие на кнопку "запомнить пароль" не поможет вам запомнить пароль
Сообщение # 702 написано 02.03.2015 в 18:53
iwantyou
Скаут
Цитата light117 ()
Проверь так

Спасибо, попробую)
Сообщение # 703 написано 02.03.2015 в 18:54
printf
Скаут
Существует ли проверка таргета на лос? Есть IsUsableSpell, но по моему там идет проверка только на наличие ресурса для каста. Проверить пока что нет возможности. Шикарно было бы найти команду на проверку вообще всех ошибок, начиная от лоса и ренжа, заканчивая нехваткой ресурса
В общем скину часть скрипта может поможет кто
Код
function Dispel(self, elapsed)            
                local plRange = IsSpellInRange("Рассеивание заклинаний", "player")   
                local oneRange = IsSpellInRange("Рассеивание заклинаний", "party1")
                local pl = "player"     
                local one = "party1"    
                local plhealth = UnitHealth("player", 0)
                local onehealth = UnitHealth("party1", 0)       
                if plRange == 1 and plhealth  >= 15000 and onehealth  >= 15000 then
                 if UnitDebuff(pl, "Превращение") then            
                 CastSpellByName("Рассеивание заклинаний", "player")   
                end            
               end  

Может придумать что нибудь с эвентом SPELL_CAST_FAILED? Но как прикрутить его к скрипту никак не пойму.
Сообщение # 704 отредактировано printf - Вторник, 03.03.2015, 21:23
light117
Рыцарь
Цитата printf ()
SPELL_CAST_FAILED

Это заклинание не удалось? Зачем это? Твой скрипт ведь диспелит если есть дебаф, если заклинание не удалось (врага) то он не будет диспелить, если твое заклинание не удалось - то он будет спамить диспел пока дебаф не пропадет.
P.S. if UnitDebuff(pl, "Превращение") then Это если на тебе шип, то ты сам себя диспелишь?)
Нажатие на кнопку "запомнить пароль" не поможет вам запомнить пароль
Сообщение # 705 написано 04.03.2015 в 10:02
iwantyou
Скаут
light117, макрос с интервейном успешно работает) Подскажи пожалуйста, что не верно в этом скрипте? авто дизарм бш
Код
function BuffSrc(self)
for i = 1, 5 do
enabled = GetSpellCooldown("Разоружение")
inRange = IsSpellInRange("Разоружение", "focus")
if UnitBuff("arena"..i, "Вихрь клинков") and enabled == 0 and inRange == 1 then
RunMacro("Disarm")
end
end
end

CreateFrame("Frame", "frameB")
frameB:SetScript("OnUpdate", BuffSrc)

Соответственно создан обычный макрос с названием Disarm
PS существуют ли такие скрипты как авто-рефлект койла, лавабурста? интервейн/чарж/баш в каст суккубу?
За помощь плюсану)
Сообщение # 706 отредактировано iwantyou - Среда, 04.03.2015, 12:24
light117
Рыцарь
if UnitBuff("arena"..i, "Вихрь клинков") тут ставишь юнитбафф таргет либо фокус как тебе нужно
Нажатие на кнопку "запомнить пароль" не поможет вам запомнить пароль
Сообщение # 707 написано 04.03.2015 в 12:36
iwantyou
Скаут
Цитата light117 ()
if UnitBuff("arena"..i, "Вихрь клинков") тут ставишь юнитбафф таргет либо фокус как тебе нужно

Я вот тупой как пробка, можешь в скрипте это сделать? Т.е можно сделать скрипт на автодизарм бш, чтоб в дуэлях и на арене дизармил, сам в таргет берет и дизармит?
Сообщение # 708 отредактировано iwantyou - Среда, 04.03.2015, 12:46
light117
Рыцарь
Код
function BuffSrc(self)  
enabled = GetSpellCooldown("Разоружение")  
inRange = IsSpellInRange("Разоружение", "target")  
if UnitBuff("target", "Вихрь клинков") and enabled == 0 and inRange == 1 then  
RunMacro("Disarm")  
end  
end  
end  

CreateFrame("Frame", "frameB")  
frameB:SetScript("OnUpdate", BuffSrc)

для фокуса нужен макрос с дизармом по фокусу
Код
function BuffSrc(self)  
enabled = GetSpellCooldown("Разоружение")  
inRange = IsSpellInRange("Разоружение", "focus")  
if UnitBuff("focus", "Вихрь клинков") and enabled == 0 and inRange == 1 then  
RunMacro("Disarmfocus")  
end  
end  
end  

CreateFrame("Frame", "frameB")  
frameB:SetScript("OnUpdate", BuffSrc)
Нажатие на кнопку "запомнить пароль" не поможет вам запомнить пароль
Сообщение # 709 написано 04.03.2015 в 12:51
iwantyou
Скаут

Эти два скрипта только на арене работают? просто в дуэли не хочет дизармить(
Сообщение # 710 отредактировано iwantyou - Среда, 04.03.2015, 13:29
light117
Рыцарь
по отдельности работают? Если включить отдельно первый например

Добавлено (04.03.2015, 14:17)
---------------------------------------------
Попробуй для фокуса этот

Код
function BufSrc(self)   
enabled = GetSpellCooldown("Разоружение")   
inRange = IsSpellInRange("Разоружение", "focus")   
if UnitBuff("focus", "Вихрь клинков") and enabled == 0 and inRange == 1 then   
RunMacro("Disarmfocus")   
end   
end   
end   

CreateFrame("Frame", "frameB")   
frameB:SetScript("OnUpdate", BufSrc)
Нажатие на кнопку "запомнить пароль" не поможет вам запомнить пароль
Сообщение # 711 написано 04.03.2015 в 14:17
iwantyou
Скаут
Цитата light117 ()
по отдельности работают? Если включить отдельно первый например

Неа, по отдельности не работают(
Сообщение # 712 написано 04.03.2015 в 15:39
printf
Скаут
Цитата light117 ()
P.S. if UnitDebuff(pl, "Превращение") then Это если на тебе шип, то ты сам себя диспелишь?)

Это лишь часть скрипта, куда я добавлял все дебафы нужные мне, шип написан лишь для примера
Цитата light117 ()
Если твое заклинание не удалось - то он будет спамить диспел пока дебаф не пропадет.

Вот именно если заклинание не удалось, напарник в лосе, скрипт страшно спамит, не давая прожимать что либо еще, я и ищу такую проверку, чтобы если цель в лосе не происходил запуск скрипта, как только цель в прямой досигаемости заклинание срабатывало.
Когда цель вне зоны видимости в комбат логе пишется это
Код
3/3 21:05:18.388  SPELL_CAST_FAILED,0x000000000000DC68,"qwerty",0x511,0x0000000000000000,nil,0x80000000,48125,"Слово Тьмы: Боль",0x20,"Цель вне поля зрения."
Сообщение # 713 отредактировано printf - Среда, 04.03.2015, 18:21
light117
Рыцарь
Да я тож столкнулся с такой проблемой) Ну и решил диспелить ручками)

Добавлено (04.03.2015, 18:41)
---------------------------------------------
SPELL_CAST_FAILED,0x000000000000DC68,"qwerty",0x511,0x0000000000000000,nil,0x80000000,48125,"Слово Тьмы: Боль",0x20,"Цель вне поля зрения."
Это скорее всего не то - SPELL_CAST_FAILED - Заклинание не удалось - пишется при использовании заклинания и сообщение о результате. Нужна другая проверка. Хотя может я неправ)

Добавлено (04.03.2015, 19:00)
---------------------------------------------

Цитата iwantyou ()
Неа, по отдельности не работают(

Странно почему у тебя не работает, только что вот проверил в дуэли все нормально
Код
function BuffSrc(self)  
            enabled = GetSpellCooldown("Разоружение")  
            inRange = IsSpellInRange("Разоружение", "target")  
            if UnitBuff("target", "Вихрь клинков") and enabled == 0 and inRange == 1 then            
           RunMacro("dis")
            end  
end  

CreateFrame("Frame", "frameB")  
frameB:SetScript("OnUpdate", BuffSrc)

Может у тебя название макроса неверно написано? + содержание макроса /каст оборонительная стойка /каст дизарм..
Нажатие на кнопку "запомнить пароль" не поможет вам запомнить пароль
Сообщение # 714 написано 04.03.2015 в 19:00
iwantyou
Скаут
Цитата light117 ()
Может у тебя название макроса неверно написано? + содержание макроса /каст оборонительная стойка /каст дизарм..

секунду, щас еще раз проверю

Огромное спасибо, скрипт работает как часы)
Сообщение # 715 отредактировано iwantyou - Среда, 04.03.2015, 19:36
sabr57
Скаут
light117,
Цитата light117 ()
Странно почему у тебя не работает

Подскажи пожалуйста как исправить скрипт, где в нем ошибка? Захожу в вов делаю запуск и выпригивает вот такое окно с ошибкой. Сам пробовал разобраться, не получается. Буду тебе очень благодарен если поможешь. Спасибо большое.



SpellFrame = CreateFrame("Frame", "FrameSpell", UIParent);
SpellFrame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED");
SpellFrame:SetScript("OnEvent", function(self, event, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10 ...)
if(event=="COMBAT_LOG_EVENT_UNFILTERED") then
local SpellBase = {"PvP-аксессуар", "Каждый за себя"}
for s = 1, #SpellBase do
local name = UnitName("player")
if arg2 == "SPELL_CAST_SUCCESS" and name ~= arg4 and name == arg7 and arg10 == SpellBase[s] then
local enabled = GetSpellCooldown("Ослепление")
if enabled == 0 then
CastSpellByName("Ослепление","target")
end
end
end
end
end)
Сообщение # 716 отредактировано sabr57 - Среда, 04.03.2015, 23:13
Superlad
Скаут
Цитата sabr57 ()
DirGik, Вроде бы да. Его выкладывали в этой теме ранее.

А можно приблизительно какая страница? Перелистал: тбк - есть, лк - есть, ката - есть, моп - нет sad
Сообщение # 717 написано 04.03.2015 в 23:55
sabr57
Скаут
Цитата Superlad ()
А можно приблизительно какая страница?


Честно не помню, staford11 кажется выкладывал
Сообщение # 718 написано 05.03.2015 в 00:19
Superlad
Скаут
Цитата staford11 ()
Рабочий анлокер для 5.4.2


Может кто перезалить? :S

Добавлено (05.03.2015, 00:49)
---------------------------------------------
sabr57, благодарю.

Сообщение # 719 написано 05.03.2015 в 00:49
araboxteam
Скаут
Скиньте пожалуйста скрипт на автосбитие каста по фокусу у шамана а то все облазил не нашел(
Сообщение # 720 написано 05.03.2015 в 07:24
Поиск: