From b46497c81a578558cdf92bc17a8ce0c07c9d267f Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 2 Apr 2024 16:54:44 +0800 Subject: [PATCH] 1 --- server/gameserver/ingamevoice.cc | 13 ++++++++++++- server/gameserver/ingamevoice.h | 1 + 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/server/gameserver/ingamevoice.cc b/server/gameserver/ingamevoice.cc index 62aff61c..40011ebd 100644 --- a/server/gameserver/ingamevoice.cc +++ b/server/gameserver/ingamevoice.cc @@ -28,6 +28,16 @@ static int GetIntMap(std::map& int_map, int key) } } +static int GetInt64Map(std::map& int_map, int key) +{ + auto itr = int_map.find(key); + if (itr != int_map.end()) { + return itr->second; + } else { + return 0; + } +} + InGameVoice::InGameVoice(Room* room) { room_ = room; @@ -60,10 +70,11 @@ void InGameVoice::OnHumanBeKill(int killer_id, Human* deader) } ++global_kills_; if (global_kills_ > 0) { - if (room_->GetFrameNo() - killer->stats->last_kill_frameno > + if (room_->GetFrameNo() - GetInt64Map(personal_last_kill_frameno_, killer_id) > SERVER_FRAME_RATE * mt::InGameVoice::s_series_kill_interval) { personal_series_kills_.erase(killer_id); } + personal_last_kill_frameno_[killer_id] = room_->GetFrameNo(); IncIntMap(personal_kills_, killer_id); IncIntMap(personal_series_kills_, killer_id); if (!killer->dead) { diff --git a/server/gameserver/ingamevoice.h b/server/gameserver/ingamevoice.h index 59ffe84c..3f1c8a4a 100644 --- a/server/gameserver/ingamevoice.h +++ b/server/gameserver/ingamevoice.h @@ -34,5 +34,6 @@ private: std::map personal_kills_; std::map personal_series_kills_; std::map personal_nodead_series_kills_; + std::map personal_last_kill_frameno_; };