Добавлено (15.07.2014, 14:47) --------------------------------------------- И разве он не будет хаотично ванишить все спелы независимо летят они в тебя или нет? Ибо у меня приводило именно к этому.
Вот вам назло. Явно не то что было в 1 посту (т.к. не успел просмотреть), но верю этот набросок стопроцентно лучше
Код
if not frame then frame = CreateFrame("Frame") end
local onEvent = function(self, event, ...) if (event == "COMBAT_LOG_EVENT_UNFILTERED") then local timestamp, type, sourceGUID, sourceName = select(1, ...) if (type == "SPELL_CAST_SUCCESS") then local spellId, spellName = select(9, ...) if spellName == triggerspellname and IsUsableSpell(resultspellname) and GetSpellCooldown(resultspellname) == 0 then if UnitName("target") ~= sourceName then local OriginalTarget = UnitName("target") TargetUnit(sourceName, true) if UnitCanAttack("player", "target") and UnitIsUnit("targettarget", "player") then RunMacroText("/rude") end if OriginalTarget then AssistUnit("player") else ClearTarget() end elseif UnitCanAttack("player", "target") and UnitIsUnit("targettarget", "player") then RunMacroText("/spit") end end end end end
tobmaps, лучше но не идеал, вроде как есть дыра с фокусом. Скорее всего если в нас с этим скриптом пустят спел по фокусу, то будем болтаться в контроле.
Дыра с фокусом будет как ни крути при вышеописанной реализации. Когда последний раз тестил (год назад) там 6 (destGUID) и 7 (destName) параметры не передавались, причем это была общая болезнь пираток. Их использование вылечило бы проблему, хотя...
Давай пробнем
Код
if not frame then frame = CreateFrame("Frame") end
local onEvent = function(self, event, ...) if (event == "COMBAT_LOG_EVENT_UNFILTERED") then local timestamp, type, sourceGUID, sourceName, sourceFlags, destGUID, destName = select(1, ...) if (type == "SPELL_CAST_SUCCESS") then local spellId, spellName = select(9, ...) if spellName == triggerspellname and destGUID == UnitGUID("player") and IsUsableSpell(resultspellname) and GetSpellCooldown(resultspellname) == 0 then RunMacroText("/spit") end end end end
tobmaps, я уже реализовал скрипт по параметру 7 (destName) + дополнительно можно сделать специально для арены. В реализации выше(1) мы используем tatgettarget, что в свою очередь мало, эффективнее будет arenatarget for a =1,5 do name = UnitName("player") arenaName = UnitName(''arena"..a.."target") if arenaName == name then скрипт потерялся end end
Сообщение # 11 отредактировано DiSq - Среда, 16.07.2014, 21:13
немного из области фантастики: допустим бегает несколько хантов решивших тебя строллить и они называют своих петов в твою честь, случайно пробегавший мимо рог кидает спелл в одного из таких петов и... ложное срабатывание - т.к. имя совпало. Гуид однозначно уникален.
ЦитатаDiSq ()
используем tatgettarget, что в свою очередь мало, эффективнее будет arenatarget
оно то понятно что эффективнее, но где-либо кроме арены то и не сработает.
reverse engineering your soul... балуюсь C++, C#, SQL, LUA. Владыка 1C. Окончательно забил на emuDev
Сообщение # 12 отредактировано tobmaps - Четверг, 17.07.2014, 13:00