diff --git a/server/gameserver/pbutils.cc b/server/gameserver/pbutils.cc index e76da61f..f761c276 100644 --- a/server/gameserver/pbutils.cc +++ b/server/gameserver/pbutils.cc @@ -2241,6 +2241,9 @@ void Human::ReJoin(long ip_saddr, int socket_handle, std::shared_ptr Human* target = target_list.at(rand() % target_list.size()); FollowTarget(target); target->StartRefreshViewTimer(); + cs::SMWatchTarget rsp_msg; + rsp_msg.set_target_uniid(target->GetUniId()); + SendNotifyMsg(rsp_msg); } } SendViewerUiNotify(); diff --git a/server/gameserver/roomob.cc b/server/gameserver/roomob.cc index e78997a6..420a5ce1 100644 --- a/server/gameserver/roomob.cc +++ b/server/gameserver/roomob.cc @@ -39,3 +39,12 @@ void RoomOb::SendViewerUiMemberUpdate(std::vector member_ids) { } + +void RoomOb::TraverseOb(std::function cb) +{ + for (auto& pair : id_hash_) { + if (!cb(pair.second)) { + break; + } + } +} diff --git a/server/gameserver/roomob.h b/server/gameserver/roomob.h index d2e8512d..0df4298a 100644 --- a/server/gameserver/roomob.h +++ b/server/gameserver/roomob.h @@ -15,6 +15,7 @@ class RoomOb : public std::enable_shared_from_this Player* GetByAccountId(const std::string& account_id); void AddOb(Player* hum); void SendViewerUiMemberUpdate(std::vector member_ids); + void TraverseOb(std::function cb); private: Room* room_ = nullptr;