diff --git a/server/gameserver/gridcell.cc b/server/gameserver/gridcell.cc index be058384..48792fad 100644 --- a/server/gameserver/gridcell.cc +++ b/server/gameserver/gridcell.cc @@ -39,6 +39,9 @@ void GridCell::TraverseHumanList(std::function func, if (!c->IsHuman()) { continue; } + if (c->IsOb()) { + continue; + } Human* hum = (Human*)c; func(hum, stop); if (stop) { @@ -55,6 +58,9 @@ void GridCell::TraverseCreatures(std::function& func, { ++Perf::Instance()->traversing_cell_creature_count; for (Creature* c : creatures_[room_idx]) { + if (c->IsOb()) { + continue; + } func(c, stop); if (stop) { --Perf::Instance()->traversing_cell_creature_count; diff --git a/server/gameserver/pbutils.cc b/server/gameserver/pbutils.cc index acc51b91..0516da5f 100644 --- a/server/gameserver/pbutils.cc +++ b/server/gameserver/pbutils.cc @@ -2108,6 +2108,10 @@ void Human::PushJoinRoomMsg() } else { notifymsg.set_side(0); } + if (IsOb()) { + notifymsg.set_is_viewer(1); + notifymsg.set_player_id(0); + } GGListener::Instance()->SendToClient(socket_handle, 0, notifymsg); #ifdef MYDEBUG a8::XPrintf("PushJoinRooMmsg %d side:%d\n", {GetUniId(), side}); diff --git a/server/tools/protobuild/cs_proto.proto b/server/tools/protobuild/cs_proto.proto index 247739b4..179aab6f 100755 --- a/server/tools/protobuild/cs_proto.proto +++ b/server/tools/protobuild/cs_proto.proto @@ -1723,6 +1723,7 @@ message SMMapInfo optional int32 pve_instance_id = 16; //pve副本id optional int32 mapid = 17; //地图id之后会删除,目前只给老版本用 optional int32 side = 18; //moba模式出生点 0:无 1:左侧 2:右侧 + optional int32 is_viewer = 20; //是否观战者 } //帧事件