entity_hurt проблема

  • Автор темы Автор темы slaveg
  • Дата начала Дата начала
  • Официальное уведомление администрации CustomGames.RU
    В связи с масштабным техническим сбоем в инфраструктуре прежнего хостинг-провайдера (Beget), работа форума CustomGames.RU была оперативно перенесена на новую серверную площадку и развёрнута из резервной копии базы данных.

    • Безопасность данных: учётные записи и данные пользователей находятся в полной безопасности. Все пароли и защищаемые параметры хранятся исключительно в криптографически зашифрованном (хэшированном) виде — никаких критических инцидентов для аккаунтов пользователей не произошло.
    • Временные технические ограничения: на этапе синхронизации файлового хранилища часть статических материалов (пользовательские аватары и архивные вложения) временно недоступна. По мере получения доступа к файловым архивам все материалы будут восстановлены в полном объёме.

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))
        }
    }
}
 
Создаю:
JavaScript:
  var attacker_log = {};
В OnEntityHurt использую:
JavaScript:
    if (attacker_log[attacker.toString()] == undefined)
    {
        attacker_log[attacker.toString()] = [];
    }
В нем хранятся логи entity_hurt для всех attacker
Ты же пуш делаешь в другую переменную, а не в attacker_log, не?
 
Ты же пуш делаешь в другую переменную, а не в attacker_log, не?
ну там присваивание ссылки на объект.
все события сохраняются правильно вроде.
почему именно у дальних крипов такой разброс, не пойму.
нигде про это не написано.
 
ну там присваивание ссылки на объект.
все события сохраняются правильно вроде.
почему именно у дальних крипов такой разброс, не пойму.
нигде про это не написано.
Может потому что снаряд долго летит?
 
Реклама: