Модератор форума: staford11 |
Форум Хитрости Пиратских серверов Читы для WoW Использование Lua скриптов. |
Использование Lua скриптов. |
COMBAT_LOG_EVENT_UNFILTERED отсутствует на ванилле, вот слепил простейший скрипт на основе "UNIT_COMBAT" который ни в какую не хочет работать, и ошибок не выдает и не работает. Может я что то не то делаю - аддон MegaMacro (BindBP на ванилле не пашет), скрипт вставляю где Extended Lua Code. Тут есть одно но - автоматика на ванилле не работает, тобишь запускать скрипт надо кликом (да я и не против), только вот как его запустить другим макросом? Punisher45, молодец, и разобрался сам и поделился! |
nurovez777, вместо комбат лога попробуй перехватывать сообщение об ошибках (UI_ERROR_MESSAGE) об уклонении врага Не совсем понял, какие могут быть ошибки при уклонении врага... а вот ошибки при использовании Overpower действительно можно отследить. Если овер не активен, то при нажатии получаем ошибку You can't do that yet, если активен и мы не в боевой стойке то Must be in Battle Stance. В общем попробовал проверить ловит ли (UI_ERROR_MESSAGE) ошибки или нет - тыкаю этот макрос, получаю ошибку You can't do that yet, Bloodrage не заводится....короче не ловит нифига, или я не знаю как там правильно arg1 вписать. Может на ванилле вообще нельзя эвенты отследить?
Сообщение # 1563 написано 06.04.2016 в 14:11
|
1)Автошвд
if not cpoinit then cpoinit = true --Amount of Cooldown that remains function cdRemains(spellid) if select(2,GetSpellCooldown(spellid)) + (select(1,GetSpellCooldown(spellid)) - GetTime()) > 0 then return select(2,GetSpellCooldown(spellid)) + (select(1,GetSpellCooldown(spellid)) - GetTime()) else return 0 end end SWD = 48158 FEARWARD = 6346 -- Spell event table spells = { -- Hunter [19503] = {SWD}, -- Scatter -- Paladin [20066] = {SWD}, -- Repentance -- Rogue [2094] = {SWD}, -- Blind [1776] = {SWD}, -- Gouge -- Priest [10890] = {SWD}, -- Psyc Scream } local SIN_PlayerGUID = UnitGUID("player") local SIN_InterruptFrame = CreateFrame("FRAME", nil, UIParent) SIN_InterruptFrame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED") SIN_InterruptFrame:SetScript("OnEvent", function(self, event, _, type, sourceGUID, sourceNAME, _, destGUID, destNAME, _, spellID) if type == "SPELL_CAST_SUCCESS" and destGUID == SIN_PlayerGUID and spells [spellID]then SpellStopCasting() TargetNearestEnemy() CastSpellByID(SWD) --print("trying to cast SWD") --RaidNotice_AddMessage(RaidWarningFrame, "\124cFFF00000\<Interrupt attempt by "..sourceName..">", ChatTypeInfo["RAID_WARNING"]) end end) --print("SWD Frame Inilitized") end 2)авто швд на шип if not cTar then cTar = {"target","focus","mouseover","arena1","arena2","arena3","arena4","arena5","arenapet1","arenapet2","arenapet3","arenapet4","arenapet5","pettarget"} end local InterruptSpells = { 12826, -- Polymorph 12824, -- Polymorph 12825, -- Polymorph 118, -- Polymorph 61305, -- Polymorph: Black Cat 28272, -- Polymorph: Pig 61721, -- Polymorph: Rabbit 61780, -- Polymorph: Turkey 28271, -- Polymorph: Turtle 31865,30850,29490,20407,6359,6358 --Succubus } if PQR_SpellAvailable(48158) then for i=1, #cTar do if UnitExists(cTar) then local spellName, _, _, _, _, endCast, _, _, canInterrupt = UnitCastingInfo(cTar) for _, v in ipairs(InterruptSpells) do if GetSpellInfo(v) == spellName then if ((endCast/1000) - GetTime()) < 0.3 then SpellStopCasting() SpellStopCasting() SpellStopCasting() CastSpellByID(48158, cTar) end end end end end end работает через бота PQR |
лол, надо было хотя бы сделать чтобы работало как нужно... А то копипастить ерунду Второй вообще лол, если кто нибудь додумается кастовать заклинание на уровень меньше то бб, да и по имени заклинания а не id было бы в разы проще
Сообщение # 1567 написано 08.04.2016 в 16:21
|
SWD = CreateFrame("Frame", "SWD", UIParent);
SWD:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED") SWD:SetScript("OnEvent", function(self, event, arg1, arg2) SpellBase = {"Покаяние","Ослепление","Дезориентирующий выстрел","Ошеломление","Парализующий удар","Превращение"} local cd = GetSpellCooldown("Слово Тьмы: Смерть") for v = 1,#SpellBase do local args = {arg1, arg2} if (arg1 == "target" and arg2 == SpellBase[v]) then if cd == 0 then CastSpellByName("Слово Тьмы: Смерть") end end end end) Ребят помогите с данным скриптом, взятым постом выше. В общем как сделать так, чтоб данный скрипт бил в фокус либо же в арена фреймы (Arena1-Arena2) А еще было бы круто, чтоб автоматом бил в ближайшего противника. Буду очень благодарен |
Подскажите пожалуйста макрос, допустим: если абилка Божественная буря на кд, то будет жаться Героический удар. Или к примеру, если божественная буря не на кд, то всегда она юзается первой, а после нее уже Героический удар или что-нибудь еще
|
gett_lock, попробуй:
Код /run local _,cd,_ = GetSpellCooldown("Божественная буря") if (cd==0) then CastSpellByName("Божественная буря") else CastSpellByName("Героический удар") end
Сообщение # 1573 написано 11.04.2016 в 14:23
|
Подскажите пожалуйста макрос или скрипт, допустим: если абилка Божественная буря на кд, то будет жаться Героический удар. Или к примеру, если божественная буря не на кд, то всегда она юзается первой, а после нее уже Героический удар или что-нибудь еще/run if если божественная буря на Кулдауне then CastSpellByName("героический удар") end , а также /run if если божественная буря НЕ на Кулдауне then CastSpellByName("Божественная буря") /run if GetSpellCooldown("Божественная буря") no cd или что надо писать? нужно 2 скрипта, с кд и без кд Код /run if GetSpellCooldown("Божественная буря")==0 and IsUsableSpell("Божественная буря") and IsSpellInRange("Удар воина Света","target") then CastSpellByName("Божественная буря") end /run if GetSpellCooldown("Правосудие мудрости")==0 and IsUsableSpell("Правосудие мудрости") and IsSpellInRange("Правосудие мудрости","target") then CastSpellByName("Правосудие мудрости") end /run if GetSpellCooldown("Удар воина Света")==0 and IsUsableSpell("Удар воина Света") and IsSpellInRange("Удар воина Света","target") then CastSpellByName("Удар воина Света") end Допилите как вам надо самостоятельно. Привел часть ротации ретрика 3.3.5
Пишу макросы и профили PQR
Моя подборка пве скриптов-ротаций 3.3.5
Сообщение # 1574 написано 11.04.2016 в 15:44
|
Создал отдельные темы, но их почему то удаляют. Спрашивается зачем?
1)Ищу скрипт, либо дополнение для PQR на автотрапу: чтобы при нажатии кидалась ровно под ноги по фокусу. 2)Ищу рабочую авторотацию (потипу PQR) для WoW 6.2.3 (PE почему то не хочет работать). Нужно для сурв охотника / армс воина, какую нибудь крутую для PVP.
Сообщение # 1576 написано 13.04.2016 в 18:49
|
function BuffSrc(self)
for i = 1, 5 do enabled = GetSpellCooldown("Долой оружие") inRange = IsSpellInRange("Долой оружие", "focus") if UnitBuff("arena"..i, "Вихрь клинков") and enabled == 0 and inRange == 1 then CastSpellByName("Долой оружие", "arena"..i) end end end CreateFrame("Frame", "frameB") frameB:SetScript("OnUpdate", BuffSrc) Можно сделать такое для дизарма вара чтоб дизармил по макросу?если да то подскажите пожалуйста
Сообщение # 1580 написано 16.04.2016 в 04:46
|
Сообщение # 1582 написано 16.04.2016 в 17:08
|
Вижу, а как будет выглядеть пример можешь написать? если не трудно
Добавлено (16.04.2016, 23:23)
Сообщение # 1584 написано 16.04.2016 в 23:23
|
Привет всем, в консоли анлокера, когда запускаю через него скрипт, вылетает ошибка:
scripts\Interrupt.lua:21: Usage: RegisterFrameCallback( Handler, Control, "Type"; В чем проблема? В самом скрипте тонна текста. Кому интересно, вот: Код local g_List; local g_BlackList = {} local g_Interrupt_All = true; local g_Interrupt_List = false; local g_Interrupt_Choose = "all" local g_IsRunning = false; function Load() Plus.PrintChat( "Auto Interrupt v1.0 loaded" ); local fFrame = Frame.Create( "by zdennis", 268, 270 ); Label.Create( fFrame, "Which spells will be interrupted:", 16, 0 ); g_List = ListBox.Create( fFrame, 8, 20, 250, 90 ); AddSpellNameString = TextBox.Create( fFrame, "Spell name", 8, 111,130,20,50) local AddButton = Button.Create( fFrame, "Add", 140, 111,59,20 ); local RemoveButton = Button.Create( fFrame, "Remove", 200, 111,58,20 ); Event.RegisterFrameCallback( "AddSpell", AddButton, "OnClick" ); Event.RegisterFrameCallback( "RemoveSpell", RemoveButton, "OnClick" ); Label.Create( fFrame, "Interrupt Spell:", 8, 141 ); InterruptNameString = TextBox.Create( fFrame, "Kick", 129, 138.5,130,20,50) Button.Create( fFrame, "", 1, 164,300,0.5 ); InterruptAllSpells = CheckBox.Create( fFrame, "Interrupt all Spells!", 8, 180, g_Interrupt_All ); InterruptByLIst = CheckBox.Create( fFrame, "Interrupt by using the list!", 8, 200, g_Interrupt_List ); Event.RegisterFrameCallback( "ChooseSpellWay", InterruptAllSpells, "OnClick" ); Event.RegisterFrameCallback( "ChooseSpellWay", InterruptByLIst, "OnClick" ); Event.RegisterFrameCallback( "FieldEdit", AddSpellNameString, "OnContentChanged" ); Event.RegisterFrameCallback( "FieldEdit", InterruptNameString, "OnContentChanged" ); Button.Create( fFrame, "", 1, 224,300,0.5 ); IsRunning = Button.Create( fFrame, "Enable the interrupting", 30, 230,200,20 ); Event.RegisterFrameCallback( "StartStop", IsRunning, "OnClick" ); AutoLoad() Event.RegisterSignalCallback( "AutoLoad", FRAMEEVENT_PLAYER_ENTERING_WORLD ); Event.RegisterTimerCallback( "CheckForSpell", 10, true ); end function Unload() end function CheckForSpell() target = ObjectManager.GetCurrentTarget() if Plus.IsInGame() == true and target and g_IsRunning == true then local InterruptSpell = InterruptNameString:GetText() Plus.DoString("spell, rank, displayName, icon, startTime, endTime, isTradeSkill, castID, interrupt = UnitCastingInfo('target')") Plus.DoString("spell2, rank2, displayName2, icon2, startTime2, endTime2, isTradeSkill2, interrupt2 = UnitChannelInfo('target')") local spell1 = Plus.DoString("return spell") local spell2 = Plus.DoString("return spell2") local interrupt = Plus.DoString("return interrupt") local interrupt1 = Plus.DoString("return interrupt2") local IsMounted = Plus.DoString("return IsMounted()") local attackable = Plus.DoString("return UnitCanAttack('player', 'target')") local InFight = Plus.DoString("return UnitAffectingCombat('player')") local Inrange = Plus.DoString("return IsSpellInRange('" .. InterruptSpell .."', 'target')") local Cooldown1,Cooldown2,Cooldown3 = Plus.DoString("return GetSpellCooldown('".. InterruptSpell .."')") if (interrupt == "false" or interrupt1 == "false") and Cooldown3 == "0" and Inrange == "1" and IsMounted == "nil" and attackable == "1" and InFight == "1" then if spell1 ~= "nil" then spell = spell1 else spell = spell2 end if CheckSpell(spell) == true and g_Interrupt_Choose == "list" then Player.CastSpell(InterruptSpell) elseif g_Interrupt_Choose == "all" then Player.CastSpell(InterruptSpell) end end end end function AutoLoad() if Plus.IsInGame() == true then local SafeFileData = "AI_" .. ObjectManager.GetActivePlayer():GetName() .. ".txt" value = file_exists(SafeFileData) if value == true then LoadData() end end end function AddSpell() SpellName = AddSpellNameString:GetText() local lbeNewEntry = ListBoxEntry.Create( g_List, SpellName ); g_BlackList[ SpellName ] = lbeNewEntry; SaveData() end function AddSpellByName(Name) for k, v in pairs( g_BlackList ) do if k == Name then v:Destroy(); g_BlackList[ k ] = nil; return; end end SpellName = Name local lbeNewEntry = ListBoxEntry.Create( g_List, SpellName ); g_BlackList[ SpellName ] = lbeNewEntry; end function RemoveSpell( ) local spell = g_List:GetSelectedItem() local spell = spell:GetText() for k, v in pairs( g_BlackList ) do if string.lower(k) == string.lower(spell) then v:Destroy(); g_BlackList[ k ] = nil; SaveData() return; end end end function CheckSpell(Name) for k, v in pairs( g_BlackList ) do if string.lower(k) == string.lower(Name) then return true; end end return false; end function file_exists(name) local f=io.open(name,"r") if f~=nil then io.close(f) return true else return false end end function FieldEdit() SaveData() end function StartStop() -- IsRunning if IsRunning:GetText() == "Enable the interrupting" then IsRunning:SetText( "Disable the interrupting" ) g_IsRunning = true; else IsRunning:SetText( "Enable the interrupting" ) g_IsRunning = false; end SaveData() end function ChooseSpellWay() -- IsRunning if g_Interrupt_Choose == "all" then g_Interrupt_All = false; g_Interrupt_List = true; InterruptAllSpells:SetChecked( false ) InterruptByLIst:SetChecked( true ) g_Interrupt_Choose = "list" else g_Interrupt_All = true; g_Interrupt_List = false; InterruptAllSpells:SetChecked( true ) InterruptByLIst:SetChecked( false ) g_Interrupt_Choose = "all" end SaveData() end function LoadData() if Plus.IsInGame() == true then local SafeFileData = "AI_" .. ObjectManager.GetActivePlayer():GetName() .. ".txt" local linecount = 1 for line in io.lines(SafeFileData) do if linecount == 1 then AddSpellNameString:SetText(line) elseif linecount == 2 then InterruptNameString:SetText(line) elseif linecount == 3 then g_Interrupt_Choose = line else if line ~= "End of save file" then AddSpellByName(line) end end linecount = linecount + 1 end if g_Interrupt_Choose == "list" then g_Interrupt_All = false; g_Interrupt_List = true; InterruptAllSpells:SetChecked( false ) InterruptByLIst:SetChecked( true ) else g_Interrupt_All = true; g_Interrupt_List = false; InterruptAllSpells:SetChecked( true ) InterruptByLIst:SetChecked( false ) end end end function SaveData() if Plus.IsInGame() == true then local SafeFileData = "AI_" .. ObjectManager.GetActivePlayer():GetName() .. ".txt" local SaveList = "" SaveList = SaveList .. AddSpellNameString:GetText() .. "\n" SaveList = SaveList .. InterruptNameString:GetText() .. "\n" SaveList = SaveList .. g_Interrupt_Choose .. "\n" for k, v in pairs( g_BlackList ) do if k ~= nil then SaveList = SaveList .. k .. "\n" end end io.output(io.open(SafeFileData,"w")) io.write( SaveList .. "End of save file") io.close() end end |
1)а для PQR есть?2)анлокер есть, проверил в SDM вставил автокик - работает. но PE не хочет работать :/ или какая версия PE работает на 6.2.3? 1) PQR Работает только через луа, с памятью он не работает, поэтому не реализуемо. 2) Баг в PE был только с демолоками, в остальном я не обнаружил багов. Видимо ты что-то не так делаешь.
Сообщение # 1587 написано 19.04.2016 в 09:32
|
Всем привет) Подскажите пожалуйста возможно написать макрос такой что бы когда я находился за спиной цели юзался "Удар в спину" , а когда я стою лицом к лицу цели то юзалось "Кровоизлияние" ?))Буду очень благодарен) Пробовал сам написать не ничего не вышло((
Код /run if IsUsableSpell("Удар в спину") then CastSpellByName("Удар в спину") end /run if not IsUsableSpell("Удар в спину") then CastSpellByName("Кровоизлияние") end
Сообщение # 1588 написано 19.04.2016 в 16:08
|
| |||