В общем, отлавливаю событие entity_hurt и записываю время, когда обработчик был вызван.
Если крип атакует другого крипа, то следующий обработчик должен вызваться примерно через 1с.
Но почему-то это не всегда так работает.
Как я заметил, этим страдают дальние крипы.
В чем тут может быть причина?
Если крип атакует другого крипа, то следующий обработчик должен вызваться примерно через 1с.
Но почему-то это не всегда так работает.
Как я заметил, этим страдают дальние крипы.
В чем тут может быть причина?
JavaScript:
function OnEntityHurt(event_data)
{
var attacker = event_data.entindex_attacker
var victim = event_data.entindex_killed
var attacks_per_second = Entities.GetAttacksPerSecond(attacker)
var attack_time = 1000 / attacks_per_second
var damage = Entities.GetDamageMin(attacker)
var tick_count = Date.now()
attackerLog = attacker_log[attacker.toString()]
attackerLog.push({time : tick_count, victim : victim, damage : damage});
if (attackerLog.length > 1)
{
if (attackerLog[attackerLog.length - 1].victim
== attackerLog[attackerLog.length - 2].victim)
var attacker_delta = attackerLog[attackerLog.length - 1].time
- attackerLog[attackerLog.length - 2].time
- attack_time
if (Math.abs(attacker_delta) > 100)
{
$.Msg("TIMEDIFF_TOOLONG attacker = "+attacker+" attacker_delta = "+attacker_delta)
$.Msg(attackerLog[attackerLog.length - 2]);
$.Msg(attackerLog[attackerLog.length - 1]);
GameUI.PingMinimapAtLocation(Entities.GetAbsOrigin(attacker))
}
}
}