From cf4689b3738ec1b2b1042e49c992edf612c76981 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 31 Jul 2024 09:24:05 +0800 Subject: [PATCH] 1 --- server/gameserver/batchsync.cc | 3 ++- server/gameserver/boxdrop.cc | 3 ++- server/gameserver/incubator.cc | 2 +- server/gameserver/pbutils.cc | 6 ++++-- server/gameserver/player.cc | 3 ++- server/gameserver/room.cc | 9 ++++++--- server/gameserver/room.h | 2 +- 7 files changed, 18 insertions(+), 10 deletions(-) diff --git a/server/gameserver/batchsync.cc b/server/gameserver/batchsync.cc index 776aaedd..3c7a9300 100644 --- a/server/gameserver/batchsync.cc +++ b/server/gameserver/batchsync.cc @@ -47,9 +47,10 @@ void BatchSync::AddGlobalObject(Creature* c) std::get<1>(*tuple).FillSMSyncPosition(sync_msg); room_->TraversePlayerList ( - [&sync_msg] (Player* hum) mutable + [&sync_msg] (Player* hum) mutable -> bool { hum->SendNotifyMsg(sync_msg); + return true; }); } }, diff --git a/server/gameserver/boxdrop.cc b/server/gameserver/boxdrop.cc index 7dadef27..30a0497b 100644 --- a/server/gameserver/boxdrop.cc +++ b/server/gameserver/boxdrop.cc @@ -181,11 +181,12 @@ bool BoxDrop::FillAccountIdSessionId(std::string account_id, std::string session { bool ok = false; room_->TraversePlayerList - ([&ok, &account_id, &session_id] (Player* hum) + ([&ok, &account_id, &session_id] (Player* hum) -> bool { ok = true; account_id = hum->account_id; session_id = hum->session_id; + return true; }); return ok; } diff --git a/server/gameserver/incubator.cc b/server/gameserver/incubator.cc index 8d706331..6650b181 100644 --- a/server/gameserver/incubator.cc +++ b/server/gameserver/incubator.cc @@ -484,7 +484,7 @@ void Incubator::NextWave() #if 1 room->TraversePlayerList ( - [this] (Player* hum) + [this] (Player* hum) -> bool { int next_wave = hum->room->pve_data.GetWave() + 1 + 1; int max_wave = room->pve_data.max_wave; diff --git a/server/gameserver/pbutils.cc b/server/gameserver/pbutils.cc index bab6eee1..e0684b8c 100644 --- a/server/gameserver/pbutils.cc +++ b/server/gameserver/pbutils.cc @@ -2514,9 +2514,10 @@ void Room::NotifyNewsTicker(int msg_type, std::vector msg_content) } TraversePlayerList ( - [¬ify_msg] (Player* hum) + [¬ify_msg] (Player* hum) -> bool { hum->SendNotifyMsg(notify_msg); + return true; }); } @@ -2529,9 +2530,10 @@ void Room::NotifyKillList(const std::vector& uniid_list) } TraversePlayerList ( - [¬ify_msg] (Player* hum) + [¬ify_msg] (Player* hum) -> bool { hum->SendNotifyMsg(notify_msg); + return true; }); } diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 8e4dfd84..0c867914 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -1316,9 +1316,10 @@ void Player::_CMVoice(f8::MsgHdr* hdr, const cs::CMVoice& msg) cs::SMVoiceNotify notifymsg; notifymsg.set_account_id(account_id); notifymsg.set_download_url(msg.download_url()); - auto send_func = [¬ifymsg] (Player* hum) + auto send_func = [¬ifymsg] (Player* hum) -> bool { hum->SendNotifyMsg(notifymsg); + return true; }; room->TraversePlayerList(send_func); } diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index e5c284ac..a65d342a 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -1231,11 +1231,13 @@ std::shared_ptr Room::NewViewTeam() return team; } -void Room::TraversePlayerList(std::function cb) +void Room::TraversePlayerList(std::function cb) { for (auto& pair : accountid_hash_) { if (pair.second && !pair.second->IsOb()) { - cb(pair.second); + if (!cb(pair.second)){ + break; + } } } } @@ -3678,7 +3680,7 @@ void Room::GMFastForward() } TraversePlayerList ( - [this] (Player* hum) + [this] (Player* hum) -> bool { glm::vec3 src_point = glm::vec3(GetGasData().new_area_meta->GetLastArea()->x1(), 6.0f, @@ -3700,6 +3702,7 @@ void Room::GMFastForward() grid_service->MoveCreature(hum); } } + return true; }); GetIncubator()->Clear(5); TraverseHumanList diff --git a/server/gameserver/room.h b/server/gameserver/room.h index 8467b067..97496a81 100644 --- a/server/gameserver/room.h +++ b/server/gameserver/room.h @@ -154,7 +154,7 @@ public: void FillSMJoinedNotify(Human* self_hum, cs::SMJoinedNotify& msg); - void TraversePlayerList(std::function cb); + void TraversePlayerList(std::function cb); void TraverseRawPlayerList(std::function cb); void TraverseHumanList(std::function cb); void TraverseRawHumanList(std::function cb);