From e06af25b2949cb1746215d1fc1d266fff8387c8d Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 11 Mar 2021 13:53:49 +0800 Subject: [PATCH] 1 --- server/gameserver/metadata.cc | 9 +++++++++ server/gameserver/metadata.h | 3 +++ server/gameserver/metamgr.cc | 1 + server/gameserver/roomobstacle.cc | 10 ++++++---- server/tools/protobuild/metatable.proto | 2 +- 5 files changed, 20 insertions(+), 5 deletions(-) diff --git a/server/gameserver/metadata.cc b/server/gameserver/metadata.cc index d935c7a..33e9a77 100644 --- a/server/gameserver/metadata.cc +++ b/server/gameserver/metadata.cc @@ -99,6 +99,15 @@ namespace MetaData return ""; } + void MapThing::Init() + { + std::vector strings; + a8::Split(i->buff_list(), strings, '|'); + for (const std::string& tmp_str : strings) { + buff_list.push_back(a8::XValue(tmp_str)); + } + } + void Equip::Init() { { diff --git a/server/gameserver/metadata.h b/server/gameserver/metadata.h index 3f3a020..7e1a5e5 100755 --- a/server/gameserver/metadata.h +++ b/server/gameserver/metadata.h @@ -41,6 +41,9 @@ namespace MetaData struct MapThing { const metatable::MapThing* i = nullptr; + std::vector buff_list; + + void Init(); }; struct SafeArea diff --git a/server/gameserver/metamgr.cc b/server/gameserver/metamgr.cc index 37f55ce..a3cfb2c 100755 --- a/server/gameserver/metamgr.cc +++ b/server/gameserver/metamgr.cc @@ -508,6 +508,7 @@ private: for (auto& meta : mapthing_meta_list) { MetaData::MapThing& item = a8::FastAppend(mapthing_list); item.i = &meta; + item.Init(); mapthing_hash[item.i->thing_id()] = &item; } diff --git a/server/gameserver/roomobstacle.cc b/server/gameserver/roomobstacle.cc index 9a2ae3b..d6daee0 100644 --- a/server/gameserver/roomobstacle.cc +++ b/server/gameserver/roomobstacle.cc @@ -131,7 +131,7 @@ void RoomObstacle::ActiveTimerFunc() void RoomObstacle::UpdateTimerFunc() { - if (grid_list_ && master) { + if (grid_list_ && master && !IsDead(room)) { std::set human_list; room->grid_service->TouchAllLayerHumanList (room->GetRoomIdx(), @@ -143,11 +143,13 @@ void RoomObstacle::UpdateTimerFunc() } } ); - for (Human* hum : human_list) { - - } if (!human_list.empty()) { + for (Human* hum : human_list) { + + } Explosion(); + Die(room); + BroadcastFullState(room); } } } diff --git a/server/tools/protobuild/metatable.proto b/server/tools/protobuild/metatable.proto index e964e48..5faecdd 100755 --- a/server/tools/protobuild/metatable.proto +++ b/server/tools/protobuild/metatable.proto @@ -50,7 +50,7 @@ message MapThing optional int32 is_house = 11; //是否房间 optional int32 is_tree = 12; //是否树 optional int32 house_id = 13; //房间id - repeated int32 buff_list = 14; + optional string buff_list = 14; } message SafeArea