
Сообщение от
decemberx
ну то что проверка на сервере я понял, ибо гкд запускается на величину пинга как раз.
с первыми двумя ладно, это больше пвпшные, пока не до них.
но с "Выполняется другое действие", полюбому чета сделать можно и нужно, ведь обычно как, не ждешь отката гкд, а тупо спамишь следующий спелл, как откатит - так ударит, всё просто, НО, если до конца каста, например, осталось 0,0001 и в этот момент запускается гкд, то можно смело прибалять величину пинга к времени каста предыдущего заклинания.
хотя математик я неочень, но попробую посчитать
у меня пинг ~200, при длительности заклинания в 1сек, это будет 1.2, то есть в худшем случае -20% хаста?
можно в макросах, непомню на каст, помню [nochanneling], но для каждого спелла пилить макрос не вариант.
надо сделать чета типа if UnitCastingInfo("player") or UnitChannelInfo("player") then блок на все акшнбары end
чтобы сбить свой спелл, можно с места сдвинутся или хоткей забиндить.
вобщем нехватает какого нибудь блока на нажатие, а условия и эвенты это не проблема.
В любом из случаев нужен анлокер ... вызывать нужно либо RunAttribyte , либо StopCasting, либо RunMacroText и все они защищены. Даже сам факт получения верного пинга в текущий момент времени звучит бредово =) То что ты видишь полоску каста это все фигня , можно смело сходить с места или начинать новый каст как только вылетит предыдущий.
UnitCastingInfo("player") or UnitChannelInfo("player") возвратит немного не те значения. Время каста всегда будет равное пинг + время каста
PS хукнуть кд анимацию и поменять их внешний видно можно так , но вычитать пинг не сможешь даже с анлокером или каким нибудь другим софтом:
PHP код:
local New = function(f)
local tex = f:CreateTexture("$parentScrollingCooldownTexture", "OVERLAY")
tex:SetTexture(0, 0, 0, 0.5)
local cd = tex:CreateAnimationGroup("$parentCooldown")
return cd
end
local cds = setmetatable({}, {
__index = function(t, f)
if type(f) ~= "table" or type(f[0]) ~= "userdata" then
return
end
local cd = New(f)
rawset(t, f, cd)
end,
__mode = "kv"
})
SCD_COOLDOWNS = cds
local OnSetTimer = function(self, start, duration, enable)
self:Hide()
local parent = self:GetParent()
local cd = cds[parent]
if not cd then return end
end
hooksecurefunc("CooldownFrame_SetTimer", OnSetTimer)