forestkast, Включи ошибки луа, ну и там сам доделай
Добавлено (19.05.2015, 22:34) --------------------------------------------- Вот так сделай
Код
function Shield(self, elapsed) if UnitBuff("target", "Гнев карателя") then local enabled = GetSpellCooldown("Мощный удар щитом") if enabled == 0 then RunMacro("Макрос") end end end CreateFrame("Frame", "ShieldFrame") ShieldFrame:SetScript("OnUpdate", Shield)
Нажатие на кнопку "запомнить пароль" не поможет вам запомнить пароль
luckx1, куча текста прячь под спойлеры, они для pqr, для версий катаклизма и выше
Эти скрипты отлично работают и без pqr.
//LOS ETC if not tLOS then tLOS={} end if not fLOS then fLOS=CreateFrame("Frame") end
function LineOfSight(target) local updateRate=3 --local x1, y1 = PQR_UnitInfo(target) fLOS:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED") function fLOSOnEvent(self,event,...) if event=="COMBAT_LOG_EVENT_UNFILTERED" then local cLOG={...} if cLOG and cLOG[2] and cLOG[2]=="SPELL_CAST_FAILED" then local player=UnitGUID("player") or "" if cLOG[4] and cLOG[4]==player then if cLOG[15] then if cLOG[15]==SPELL_FAILED_LINE_OF_SIGHT or cLOG[15]==SPELL_FAILED_NOT_INFRONT or cLOG[15]==SPELL_FAILED_OUT_OF_RANGE or cLOG[15]==SPELL_FAILED_UNIT_NOT_INFRONT or cLOG[15]==SPELL_FAILED_UNIT_NOT_BEHIND or cLOG[15]==SPELL_FAILED_NOT_BEHIND or cLOG[15]==SPELL_FAILED_MOVING or cLOG[15]==SPELL_FAILED_IMMUNE or cLOG[15]==SPELL_FAILED_FLEEING or cLOG[15]==SPELL_FAILED_BAD_TARGETS --or cLOG[15]==SPELL_FAILED_NO_MOUNTS_ALLOWED or cLOG[15]==SPELL_FAILED_STUNNED or cLOG[15]==SPELL_FAILED_SILENCED or cLOG[15]==SPELL_FAILED_NOT_IN_CONTROL --or cLOG[15]==Your vision of the target is obscured? then --tinsert(tLOS,{unit=target,time=GetTime(),x=x1,y=y1}) tinsert(tLOS,{unit=target,time=GetTime()}) end end end else if #tLOS > 0 then table.sort(tLOS,function(x,y) return x.time>y.time end) for i=1,#tLOS do local time=tLOS[i].time or GetTime() if GetTime()>time+updateRate then tremove(tLOS,i) end end end end end end fLOS:SetScript("OnEvent",fLOSOnEvent) if #tLOS > 0 then for i=1,#tLOS do if tLOS and tLOS[i] and tLOS[i].unit==target --and (tLOS[i].x - 5) <= x1 and (tLOS[i].x + 5) >= x1 and (tLOS[i].y - 5) <= y1 and (tLOS[i].y + 5) >= y1 then --PQR_WriteToChat("\124cFFFF55FFLoS Name: "..UnitName(target)) return true end end end end
Это скрипт на проверку юнита на лос и прочие ошибки, отличнейший причем скрипт, который я долго искал, жаль что на личе реализовать не получается, все равно идет спам, даже если юнит в лосе. А на катаклизме отлично работает. Может кто может помочь? Проверял самым простым макросом.
Код
/run if (UnitBuff("target", "Щит молний")) and not LineOfSight(target) then RunMacroText("/cast Жгучая боль") end
На катаклизме работает идеально, в лосе не спамит, а на личе продолжает.
Сообщение # 935 отредактировано printf - Среда, 20.05.2015, 03:32
Ребята признаюсь,я дауниха которая не умеет писать скрипты.Кто может кинуть в skype или сюда в пост На Автошвд,Диспел, а то я тут не нашлачто то Мой skype " nastya.yarceva.91 - Пекин стоит город ( На аве Ноги )". Заранее благодарствую поставлю +++++
Сообщение # 936 отредактировано wermut96 - Четверг, 21.05.2015, 06:57
спасибо что пояснил для чего он )) Но можешь плиз рассказать как их запускать я хз вообще там вроде же для приста , я пробывал вставлять их в ПКР и БИНДПАД но они не чего не делают может я что то не так делаю ?
Как же они будут работать, если функции только в pqr? Ошибки только и будут, чтобы заработало так придется половину повырезать.. А так то и попроще уже готовые есть
Нажатие на кнопку "запомнить пароль" не поможет вам запомнить пароль
Подскажите плз как поправить. Суть проблемы: раз используется цикл, как я понял, то Удар героя бесконечно спамится. Можно ли как то добавить проверку на нажатие спэла чтобы он не прожимался 100500 раз пока ярости хватает?
function Destroy(self, elapsed) local enabled = GetSpellCooldown("Удар героя(Уровень 13)") local rage = UnitPower("player") local inRange = IsSpellInRange("Удар героя(Уровень 13)", "target") if enabled == 0 and inRange == 1 and rage >= 79 then RunMacroText("/cast Удар героя(Уровень 13)") end end CreateFrame("Frame", "DestroyFrame") DestroyFrame:SetScript("OnUpdate", Destroy)
function Destroy(self, elapsed) local enabled = GetSpellCooldown("Удар героя(Уровень 13)") local rage = UnitPower("player") local inRange = IsSpellInRange("Удар героя(Уровень 13)", "target") if enabled == 0 and inRange == 1 and rage >= 79 then RunMacroText("/cast Удар героя(Уровень 13)") end end CreateFrame("Frame", "DestroyFrame") DestroyFrame:SetScript("OnUpdate", Destroy)
Раги >= 79 скрипт включается, меньше не включается
почему когда я кастуюк примеру лаву или сглаз ставится граудинг?
local ScriptAddon = CreateFrame("Frame", "ScriptAddon", nil) function ScriptAddon:OnEvent(event, ...) self[event](self, ...) end ScriptAddon:SetScript("OnEvent", ScriptAddon.OnEvent) ScriptAddon:RegisterEvent("UNIT_SPELLCAST_START")
function ScriptAddon:UNIT_SPELLCAST_START(unit) local spell, rank, displayName, icon, startTime, endTime, isTradeSkill = UnitCastingInfo(unit) if not spell then return end if displayName == "Ледяная стрела" or displayName == "Стрела хаоса" or displayName == "Жертвенный огонь" or displayName == "Превращение" or displayName == "Сглаз" or displayName == "Выброс лавы" or displayName == "Взрыв разума" then self:SetScript("OnUpdate", self.OnUpdate) self.unit = unit self.total = 0 self.endTime = endTime/1000 self.unitName = UnitName(unit) end end
function ScriptAddon:OnUpdate(elapsed) self.total = self.total + elapsed if self.total >= 0.05 then self.total = 0 local spell, rank, displayName, icon, startTime, endTime, isTradeSkill = UnitCastingInfo(self.unit) if endTime and endTime/1000 - GetTime() <= 0.3 then self:SetScript("OnUpdate", nil) TargetUnit(self.unit) CastSpellByName("Тотем заземления") elseif self.endTime-0.3 <= GetTime() then self:SetScript("OnUpdate", nil) TargetUnit(self.unitName) CastSpellByName("Тотем заземления") end end end
Сообщение # 947 отредактировано pom4ik - Среда, 27.05.2015, 09:01
Studyman, Нужно сделать макрос: SpellStopCasting() /cast Спелл а там писать: RunMacro("макрос") P.S. Учитывай что у армсов и протов разные спеллы на отражение
Нажатие на кнопку "запомнить пароль" не поможет вам запомнить пароль
Интересный факт: на ванилле не стоит блокировка луа-скриптов, т.е. их можно юзать, если найти аддон, конечно же Итак, аддон нашел, делаю скрипт на авто лайф тап:
Код
function AutoLifeTap(self, elapsed) if UnitHealth("player") > 50 and UnitMana("player") < 50 then CastSpellByName("Life Tap") end end local f = CreateFrame("Frame", nil, UIParent) f:SetScript("OnUpdate", AutoLifeTap)
Но по каким-то причинам не работает. Сразу поясню: весь описанный в скрипте функционал есть в ванилле.
function AutoLifeTap(self, elapsed) if UnitHealth("player") > 50 and UnitMana("player") < 50 then ChatFrame1:AddMessage("Test") end end CreateFrame("Frame", "LifeTapFrame") LifeTapFrame:SetScript("OnUpdate", AutoLifeTap)
Перечитал тему и не смог найти конкретный пример - а можно ли сделать так:
Код
function Kick(self, elapsed) local spell, _, _, _, _, endTime, _, _, interrupt = UnitCastingInfo("target") local enabled = GetSpellCooldown("Удар щитом") local inRange = IsSpellInRange("Удар щитом", "target") if spell then if interrupt == false and enabled == 0 and inRange == 1 then local finish = endTime/1000 - GetTime() if finish <= 0.4 then RunMacro("bush") end end RunMacro ("over") end end CreateFrame("Frame", "KickFrame") KickFrame:SetScript("OnUpdate", Kick)
Суть работы данного скрипта - он просто по очереди спамит баш и овер в каст таргету. А можно ли дописать условий, чтобы было по-очереди, т.е. сначала баш, затем после того, как пройдет блок школы от баша, дается овер, затем снова баш и так зациклить это дело? И как еще можно добавить вызов рефлекта, чтобы юзался рефлект, если в меня кастуют определенные спеллы (желательно для арены, т.е. проверку по 1-5 арена фреймам). Помню, что где-то в теме было про вызов другого скрипта, но не могу найти (уже больше 15 часов за монитором работаю- глаза почти не видят=\)
Сообщение # 956 отредактировано cursedfunlol - Суббота, 30.05.2015, 09:08
staford11, предполагаю что функция требует именно клик или нажатие клавиши, а автоматическое исполнение от аддонов или скриптов заблокировано, у близов это дополнительный способ защиты от эксплуатации API. К примеру после переработки гильдий в 4.х.х так поступили с GuildInvite("").
Код
/run if UnitHealth("player") > 50 and UnitMana("player") < 50 then CastSpellByName("Healing Wave") end
Такая вариация работает 100%. Можно пока подцепить использование на скилы в макросах, если в скрипте много строк, то используем через функцию без фреймов в доп. меню аддона
Код
function AutoLifeTap(self) if UnitHealth("player") > 50 and UnitMana("player") < 50 then CastSpellByName("Healing Wave") end end
PS: защита таки есть - http://gifok.net/images/2015/05/30/Prot.jpg
PSS: Разумнее будет наверное поступить так:
Код
function AutoLifeTap(self) if UnitHealth("player") > 50 and UnitMana("player") < 50 then CastSpellByName("Life Tap") else CastSpellByName("Основной спел") end end
Естественно допилив всё это дело своими проверками дабы не допустить фейла.
Сообщение # 957 отредактировано DiSq - Суббота, 30.05.2015, 12:45
Кто нибудь может помочь реализовать проверку на лос на личе?
if not tLOS then tLOS={} end if not fLOS then fLOS=CreateFrame("Frame") end
function LineOfSight(target) local updateRate=3 --local x1, y1 = PQR_UnitInfo(target) fLOS:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED") function fLOSOnEvent(self,event,...) if event=="COMBAT_LOG_EVENT_UNFILTERED" then local cLOG={...} if cLOG and cLOG[2] and cLOG[2]=="SPELL_CAST_FAILED" then local player=UnitGUID("player") or "" if cLOG[4] and cLOG[4]==player then if cLOG[15] then if cLOG[15]==SPELL_FAILED_LINE_OF_SIGHT or cLOG[15]==SPELL_FAILED_NOT_INFRONT or cLOG[15]==SPELL_FAILED_OUT_OF_RANGE or cLOG[15]==SPELL_FAILED_UNIT_NOT_INFRONT or cLOG[15]==SPELL_FAILED_UNIT_NOT_BEHIND or cLOG[15]==SPELL_FAILED_NOT_BEHIND or cLOG[15]==SPELL_FAILED_MOVING or cLOG[15]==SPELL_FAILED_IMMUNE or cLOG[15]==SPELL_FAILED_FLEEING or cLOG[15]==SPELL_FAILED_BAD_TARGETS --or cLOG[15]==SPELL_FAILED_NO_MOUNTS_ALLOWED or cLOG[15]==SPELL_FAILED_STUNNED or cLOG[15]==SPELL_FAILED_SILENCED or cLOG[15]==SPELL_FAILED_NOT_IN_CONTROL --or cLOG[15]==Your vision of the target is obscured? then --tinsert(tLOS,{unit=target,time=GetTime(),x=x1,y=y1}) tinsert(tLOS,{unit=target,time=GetTime()}) end end end else if #tLOS > 0 then table.sort(tLOS,function(x,y) return x.time>y.time end) for i=1,#tLOS do local time=tLOS[i].time or GetTime() if GetTime()>time+updateRate then tremove(tLOS,i) end end end end end end fLOS:SetScript("OnEvent",fLOSOnEvent) if #tLOS > 0 then for i=1,#tLOS do if tLOS and tLOS[i] and tLOS[i].unit==target --and (tLOS[i].x - 5) <= x1 and (tLOS[i].x + 5) >= x1 and (tLOS[i].y - 5) <= y1 and (tLOS[i].y + 5) >= y1 then --PQR_WriteToChat("\124cFFFF55FFLoS Name: "..UnitName(target)) return true end end end end