diff --git a/server/gameserver/pbutils.cc b/server/gameserver/pbutils.cc index 21c32756..993d5ff4 100644 --- a/server/gameserver/pbutils.cc +++ b/server/gameserver/pbutils.cc @@ -2171,6 +2171,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 9c317f7e..420a5ce1 100644 --- a/server/gameserver/roomob.cc +++ b/server/gameserver/roomob.cc @@ -2,6 +2,7 @@ #include "roomob.h" #include "room.h" +#include "player.h" RoomOb::RoomOb(Room* room) { @@ -31,10 +32,19 @@ Player* RoomOb::GetByAccountId(const std::string& account_id) void RoomOb::AddOb(Player* hum) { - + id_hash_[hum->account_id] = hum; } 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;