Модератор форума: staford11 |
Форум Хитрости Пиратских серверов Читы для WoW Использование Lua скриптов. |
Использование Lua скриптов. |
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") и т.д. |
Сообщение # 693 написано 01.03.2015 в 01:00
|
Сообщение # 695 написано 01.03.2015 в 01:33
|
Почему может не работать? Описываю траблу: Захожу в игру. запускаю гагарина (1.7, с первого поста), цепляюсь к процессу, анлочу луа, в игре запускаю скрипт - не работает. Вчера все прекрасно работало, удалил скрипт и гагарина, по-новой скачал - опять заработало, после выхода и захода в игру снова - такая же канитель, не пашет О_о Луа ошибки включены - пусто, ничего не показывает
Сообщение # 696 написано 01.03.2015 в 08:16
|
Помню 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
|
Код 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) Код 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
|
Существует ли проверка таргета на лос? Есть 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? Но как прикрутить его к скрипту никак не пойму. |
Это заклинание не удалось? Зачем это? Твой скрипт ведь диспелит если есть дебаф, если заклинание не удалось (врага) то он не будет диспелить, если твое заклинание не удалось - то он будет спамить диспел пока дебаф не пропадет. P.S. if UnitDebuff(pl, "Превращение") then Это если на тебе шип, то ты сам себя диспелишь?)
Нажатие на кнопку "запомнить пароль" не поможет вам запомнить пароль
Сообщение # 705 написано 04.03.2015 в 10:02
|
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 существуют ли такие скрипты как авто-рефлект койла, лавабурста? интервейн/чарж/баш в каст суккубу? За помощь плюсану) |
Код 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
|
по отдельности работают? Если включить отдельно первый например
Добавлено (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
|
P.S. if UnitDebuff(pl, "Превращение") then Это если на тебе шип, то ты сам себя диспелишь?) Это лишь часть скрипта, куда я добавлял все дебафы нужные мне, шип написан лишь для примера Если твое заклинание не удалось - то он будет спамить диспел пока дебаф не пропадет. Вот именно если заклинание не удалось, напарник в лосе, скрипт страшно спамит, не давая прожимать что либо еще, я и ищу такую проверку, чтобы если цель в лосе не происходил запуск скрипта, как только цель в прямой досигаемости заклинание срабатывало. Когда цель вне зоны видимости в комбат логе пишется это Код 3/3 21:05:18.388 SPELL_CAST_FAILED,0x000000000000DC68,"qwerty",0x511,0x0000000000000000,nil,0x80000000,48125,"Слово Тьмы: Боль",0x20,"Цель вне поля зрения." |
Да я тож столкнулся с такой проблемой) Ну и решил диспелить ручками)
Добавлено (04.03.2015, 18:41) Добавлено (04.03.2015, 19:00) Странно почему у тебя не работает, только что вот проверил в дуэли все нормально Код 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
|
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) |
| |||