From df5eba0390284be32987598251e88b3d94e4d706 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 24 Mar 2023 15:40:33 +0800 Subject: [PATCH] 1 --- server/gameserver/mt/Map.cc | 27 ++++++++++++++++++++ server/gameserver/room.cc | 50 ++++++++++++++++--------------------- 2 files changed, 48 insertions(+), 29 deletions(-) diff --git a/server/gameserver/mt/Map.cc b/server/gameserver/mt/Map.cc index 419aa2f2..d6b76448 100644 --- a/server/gameserver/mt/Map.cc +++ b/server/gameserver/mt/Map.cc @@ -194,6 +194,15 @@ namespace mt obj->size.z = size->At("z")->AsXValue().GetDouble(); }; + auto parse_human_func = + [] (std::shared_ptr node, std::shared_ptr obj) + { + auto pos = node->At("pos"); + obj->pos.x = pos->At("x")->AsXValue().GetDouble(); + obj->pos.y = pos->At("y")->AsXValue().GetDouble(); + obj->pos.z = pos->At("z")->AsXValue().GetDouble(); + }; + a8::XObject root; if (root.ReadFromFile(MetaMgr::Instance()->GetResDir() + world_object_file())) { { @@ -214,6 +223,24 @@ namespace mt _world_objects.push_back(obj); } } + { + auto thing = root.At("car"); + for (int i = 0; i < thing->Size(); ++i) { + auto obj = std::make_shared(); + obj->object_type = WorldObjectType_e::kCarType; + parse_func(thing->At(i), obj); + _world_objects.push_back(obj); + } + } + { + auto thing = root.At("human"); + for (int i = 0; i < thing->Size(); ++i) { + auto obj = std::make_shared(); + obj->object_type = WorldObjectType_e::kBornPointType; + parse_human_func(thing->At(i), obj); + _world_objects.push_back(obj); + } + } } } diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index e415ab91..b1579839 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -2144,6 +2144,7 @@ std::shared_ptr Room::GetBornPoint(int point_uniid) void Room::CreateSpawnPoints() { + #if 0 if (born_point_hash_.empty()) { for (size_t i = 0; i < 10; ++i) { int uniid = AllocUniid(); @@ -2156,6 +2157,7 @@ void Room::CreateSpawnPoints() } } } + #endif } void Room::IncBornPointHumanNum(std::shared_ptr point, Human* hum) @@ -3291,15 +3293,10 @@ int Room::GetOnlinePlayerNum() size_t Room::GetRoomMaxPlayerNum() { -#ifdef MAP3D - return 40; - //return map_meta_->player(); -#else if (pve_instance) { return pve_human_num; } return map_meta_->player(); -#endif } void Room::InitAndroidAI() @@ -3813,25 +3810,6 @@ void Room::CreateWorldObjects() 1, 1 ); -#if 0 - { - const mt::Equip* equip_meta = mt::Equip::GetById(30502); - if (equip_meta) { - int car_uniid = AllocUniid(); - Car* c = CreateCar(nullptr, - car_uniid, - equip_meta, - obj->pos, - 0); - if (c) { - CarObject car; - car.car_id = equip_meta->id(); - car.pos = c->GetPos().ToGlmVec3(); - car_hash_[c->GetUniId()] = car; - } - } - } -#endif } break; case WorldObjectType_e::kBoxType: @@ -3848,11 +3826,22 @@ void Room::CreateWorldObjects() break; case WorldObjectType_e::kCarType: { - CreateAndTakeonCar - ( - obj->object_id, - obj->pos - ); + const mt::Equip* equip_meta = mt::Equip::GetById(obj->object_id); + if (equip_meta) { + int car_uniid = AllocUniid(); + glm::vec3 pos = obj->pos - obj->size / 2.0f; + Car* c = CreateCar(nullptr, + car_uniid, + equip_meta, + pos, + 0); + if (c) { + CarObject car; + car.car_id = equip_meta->id(); + car.pos = c->GetPos().ToGlmVec3(); + car_hash_[c->GetUniId()] = car; + } + } } break; case WorldObjectType_e::kBornPointType: @@ -3869,6 +3858,9 @@ void Room::CreateWorldObjects() break; } } + if (born_point_hash_.size() < 10) { + abort(); + } } Team* Room::GetTeam(int team_id)