From 66d97557862ba6043eeb42ed056bdd9c2ec5fc62 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 1 Apr 2024 15:49:26 +0800 Subject: [PATCH] 1 --- server/gameserver/ingamevoice.cc | 81 ++++++++++++++++++-------------- 1 file changed, 45 insertions(+), 36 deletions(-) diff --git a/server/gameserver/ingamevoice.cc b/server/gameserver/ingamevoice.cc index 2eff0d96..dc15e75b 100644 --- a/server/gameserver/ingamevoice.cc +++ b/server/gameserver/ingamevoice.cc @@ -295,20 +295,61 @@ a8::Attacher* InGameVoice::GetNoDeadTimerAttacher(int killer_id) void InGameVoice::TriggerEvent(Human* killer, Human* deader) { bool is_first_boold = global_kills_ == 1; + bool sent = false; { int val = global_kills_; mt::InGameVoice::Traverse ( room_->IsMobaModeRoom(), InGameVoiceEventType_e::kGlobalKills, - [this, killer, deader, val] (const mt::InGameVoice* meta) -> bool + [this, killer, deader, val, &sent] (const mt::InGameVoice* meta) -> bool { if (meta->MatchCond(val)) { Notify(killer, deader, meta); + sent = true; } return true; }); } + if (sent) { + return; + } + { + if (!is_first_boold) { + int val = GetIntMap(personal_nodead_series_kills_, killer->GetUniId()); + mt::InGameVoice::Traverse + ( + room_->IsMobaModeRoom(), + InGameVoiceEventType_e::kNoDeadSeriesKills, + [this, killer, deader, val, &sent] (const mt::InGameVoice* meta) -> bool + { + if (meta->MatchCond(val)) { + Notify(killer, deader, meta); + sent = true; + } + return true; + }); + } + } + if (sent) { + return; + } + { + if (!is_first_boold) { + int val = GetIntMap(personal_series_kills_, killer->GetUniId()); + mt::InGameVoice::Traverse + ( + room_->IsMobaModeRoom(), + InGameVoiceEventType_e::kSeriesKills, + [this, killer, deader, val, &sent] (const mt::InGameVoice* meta) -> bool + { + if (meta->MatchCond(val)) { + Notify(killer, deader, meta); + } + return true; + }); + } + } { if (!is_first_boold) { int val = GetIntMap(personal_kills_, killer->GetUniId()); @@ -338,19 +379,6 @@ void InGameVoice::TriggerEvent(Human* killer, Human* deader) }); } } - { - if (!is_first_boold) { - mt::InGameVoice::Traverse - ( - room_->IsMobaModeRoom(), - InGameVoiceEventType_e::kEnemyTeamBekill, - [this, killer, deader] (const mt::InGameVoice* meta) -> bool - { - Notify(killer, deader, meta); - return true; - }); - } - } { if (!is_first_boold) { if (deader->GetTeam()->AllIsDead()) { @@ -368,32 +396,13 @@ void InGameVoice::TriggerEvent(Human* killer, Human* deader) } { if (!is_first_boold) { - int val = GetIntMap(personal_series_kills_, killer->GetUniId()); mt::InGameVoice::Traverse ( room_->IsMobaModeRoom(), - InGameVoiceEventType_e::kSeriesKills, - [this, killer, deader, val] (const mt::InGameVoice* meta) -> bool + InGameVoiceEventType_e::kEnemyTeamBekill, + [this, killer, deader] (const mt::InGameVoice* meta) -> bool { - if (meta->MatchCond(val)) { - Notify(killer, deader, meta); - } - return true; - }); - } - } - { - if (!is_first_boold) { - int val = GetIntMap(personal_nodead_series_kills_, killer->GetUniId()); - mt::InGameVoice::Traverse - ( - room_->IsMobaModeRoom(), - InGameVoiceEventType_e::kNoDeadSeriesKills, - [this, killer, deader, val] (const mt::InGameVoice* meta) -> bool - { - if (meta->MatchCond(val)) { - Notify(killer, deader, meta); - } + Notify(killer, deader, meta); return true; }); }