Всем привет,
Однажды я устал терзать себя подозрениями о том использует тот или иной гладиатор сторонний софт по автоматизации своей ротации и написа аддон, который трекает глобальный кулдаун абилок.
На данный момент он весьма прост и умеет трекать только основные абилки варриура (так как они у нас самые большие любители всяческих так называемых подрубов) и писать в окошко чата о применяемых способностях и времени между их применением. Это разница во времени и принимается за глобальный кулдаун.
Если GCD кажется подозрительным (например идеально равен 1.5 секунде), то сообщение выдается красным цветом.
Скачать аддон можно по вот этой ссылке: https://drive.google.com/open?id=1lE...URXEMqqm_nTf67 или в приложении к посту GCDCheck.zip.
Если со скачиванием возникли проблемы - дайте мне знать.
Так же, расшарю его нехитрый исходный код:
Скрытый текст
Код:local spellIds = { [7384] = 1, -- Overpower [47486] = 1.5, -- Mortal Strike [20647] = 1.5, -- Execute [47465] = 1.5, -- Rend [1715] = 1.5, -- Hamstring [57755] = 1.5 -- Heroic Throw }; local deviation = 0.02; local COMBAT_LOG_EVENT_UNFILTERED = 'COMBAT_LOG_EVENT_UNFILTERED'; local PLAYER_ENTERING_WORLD = 'PLAYER_ENTERING_WORLD'; local SPELL_CAST_SUCCESS = 'SPELL_CAST_SUCCESS'; local sourceNameMap; local GCDCheck = CreateFrame('Frame', nil, UIParent); GCDCheck:RegisterEvent(PLAYER_ENTERING_WORLD); GCDCheck:RegisterEvent(COMBAT_LOG_EVENT_UNFILTERED); GCDCheck:SetScript('OnEvent', function(self, event, ...) local eventType = select(2, ...); local sourceName = select(4, ...); local spellId = select(9, ...); if (event == PLAYER_ENTERING_WORLD) then sourceNameMap = {}; end if (event == COMBAT_LOG_EVENT_UNFILTERED and eventType == SPELL_CAST_SUCCESS) then for sid, cd in pairs(spellIds) do if (spellId == sid) then -- get current time local currentTime = GetTime(); -- check if we already track this unit if (sourceNameMap[sourceName] == nil) then sourceNameMap[sourceName] = {sid, currentTime, cd}; else local spellName = GetSpellInfo(sourceNameMap[sourceName][1]); local cooldown = currentTime - sourceNameMap[sourceName][2]; local msg = sourceName .. ' - ' .. spellName .. ' - ' .. cooldown; if (cooldown <= (sourceNameMap[sourceName][3] + deviation)) then ChatFrame1:AddMessage(msg, 1.0, 0.2, 0.2); else ChatFrame1:AddMessage(msg, 0.2, 0.2, 1.0); end -- update current unit's data sourceNameMap[sourceName][1] = sid; sourceNameMap[sourceName][2] = currentTime; sourceNameMap[sourceName][3] = cd; end end end end end);[свернуть]
Скачиваем аддон, распаковываем во всем известную папку, заходим в wow, идем на, например, дуэль поляну, находим дерущегося ворриура и созерцаем.
Хочу предостеречь от криков о том, что тот или иной игрок применяет читы, потому что, во-первых, это личное дело каждого (забудем пока и правилах проекта wowcircle), а, во-вторых, аддон не застрахован от ложных срабатываний.
Лучше скидывайте скриншот сообщений аддона прямо в этот тред и мы вместе посмотрим что к чему.
Если у кого-то есть желание, то накидайте мне id спеллов (и их GCD) других классов, таких как ДК или разбойник.
Хочу обратить внимание на то, что аддон создавался исключительно в образовательных целях, и что я снимаю с себя всю ответственность за использование этого аддон кем бы то ни было.
- - - Updated - - -
Например, вот так выглядит подозрительный мортал с не менее подозрительным овером:
WoWScrnShot_123018_201637.jpg