diff --git a/server/gameserver/app.cc b/server/gameserver/app.cc index a331e70..f405dd8 100755 --- a/server/gameserver/app.cc +++ b/server/gameserver/app.cc @@ -58,13 +58,15 @@ static void SavePerfLog() App::Instance()->perf.max_run_delay_time, RoomMgr::Instance()->RoomNum() }); - a8::XPrintf("max_mainloop_rundelay:%d max_dispatchmsg_time:%d room_num:%d player_num:%d\n", - { - App::Instance()->perf.max_run_delay_time, - App::Instance()->perf.max_dispatchmsg_time, - RoomMgr::Instance()->RoomNum(), - PlayerMgr::Instance()->GetPlayerNum() - }); + if (App::Instance()->flags.find(4) != App::Instance()->flags.end()) { + a8::XPrintf("max_mainloop_rundelay:%d max_dispatchmsg_time:%d room_num:%d player_num:%d\n", + { + App::Instance()->perf.max_run_delay_time, + App::Instance()->perf.max_dispatchmsg_time, + RoomMgr::Instance()->RoomNum(), + PlayerMgr::Instance()->GetPlayerNum() + }); + } App::Instance()->perf.max_run_delay_time = 0; App::Instance()->perf.max_dispatchmsg_time = 0; App::Instance()->perf.max_timer_idle = 0; diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index a61590e..8ca7cee 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -692,6 +692,11 @@ void Human::AddToPartObjects(Entity* entity) part_objects.insert(entity); } +void Human::RemovePartObjects(Entity* entity) +{ + part_objects.erase(entity); +} + void Human::RemoveObjects(Entity* entity) { del_objects.insert(entity->entity_uniid); diff --git a/server/gameserver/human.h b/server/gameserver/human.h index e642884..8508bc2 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -134,6 +134,7 @@ class Human : public Entity void DecHP(float dec_hp, int killer_id, const std::string& killer_name, int weapon_id); void AddToNewObjects(Entity* entity); void AddToPartObjects(Entity* entity); + void RemovePartObjects(Entity* entity); void RemoveObjects(Entity* entity); void AddOutObjects(Entity* entity); void RemoveOutObjects(Entity* entity); diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index a9adf57..ad2c3fe 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -1192,6 +1192,9 @@ void Room::RandRemoveAndroid() human_hash_.erase(hum->entity_uniid); removed_robot_hash_[hum->entity_uniid] = hum; --alive_count_; + for (auto& pair : human_hash_) { + pair.second->RemovePartObjects(hum); + } } }