diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index a1cdb1f8..ede0920a 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -2078,10 +2078,12 @@ std::shared_ptr Room::GetBornPoint(int point_uniid) void Room::CreateSpawnPoints() { - for (size_t i = 0; i < 10; ++i) { - int uniid = AllocUniid(); - std::shared_ptr born_point = std::make_shared(); - born_point_hash_[uniid] = born_point; + if (born_point_hash_.empty()) { + for (size_t i = 0; i < 10; ++i) { + int uniid = AllocUniid(); + std::shared_ptr born_point = std::make_shared(); + born_point_hash_[uniid] = born_point; + } } } @@ -3725,7 +3727,8 @@ int Room::GetPolyExtFlag(int poly_idx) void Room::CreateWorldObjects() { - for (auto& obj : GetMapMeta()->_world_objects) { + for (auto& itr : GetMapMeta()->_world_objects) { + std::shared_ptr obj = itr; switch ((WorldObjectType_e)obj->object_type) { case WorldObjectType_e::kLootType: { @@ -3745,7 +3748,8 @@ void Room::CreateWorldObjects() obj->object_id, obj->pos.x, obj->pos.y, - obj->pos.z + obj->pos.z, + std::make_shared(std::vector({obj})) ); } break;