entity_hurt проблема

slaveg

Новичок
5 Апр 2019
4
0
В общем, отлавливаю событие entity_hurt и записываю время, когда обработчик был вызван.
Если крип атакует другого крипа, то следующий обработчик должен вызваться примерно через 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))
        }
    }
}
 

I_GRIN_I

Друзья CG
15 Мар 2016
1,335
105
Создаю:
JavaScript:
  var attacker_log = {};
В OnEntityHurt использую:
JavaScript:
    if (attacker_log[attacker.toString()] == undefined)
    {
        attacker_log[attacker.toString()] = [];
    }
В нем хранятся логи entity_hurt для всех attacker
Ты же пуш делаешь в другую переменную, а не в attacker_log, не?
 

slaveg

Новичок
5 Апр 2019
4
0
Ты же пуш делаешь в другую переменную, а не в attacker_log, не?
ну там присваивание ссылки на объект.
все события сохраняются правильно вроде.
почему именно у дальних крипов такой разброс, не пойму.
нигде про это не написано.
 

I_GRIN_I

Друзья CG
15 Мар 2016
1,335
105
ну там присваивание ссылки на объект.
все события сохраняются правильно вроде.
почему именно у дальних крипов такой разброс, не пойму.
нигде про это не написано.
Может потому что снаряд долго летит?
 
Реклама: