From ab4d423d8d11ab29715143fb24dbbfc83e0db8be Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 3 Nov 2023 19:43:52 +0800 Subject: [PATCH 1/3] 1 --- server/gameserver/ability.cc | 5 +++++ server/gameserver/ability.h | 1 + server/gameserver/gamelog.cc | 2 ++ server/gameserver/handlermgr.cc | 9 +++++++++ 4 files changed, 17 insertions(+) diff --git a/server/gameserver/ability.cc b/server/gameserver/ability.cc index d879ea00..ade7ee6e 100644 --- a/server/gameserver/ability.cc +++ b/server/gameserver/ability.cc @@ -151,6 +151,11 @@ Ability::Ability(CreatureWeakPtr owner) } } +Ability::~Ability() +{ + Clear(); +} + void Ability::Clear() { for (auto& tuple : attr_abs_) { diff --git a/server/gameserver/ability.h b/server/gameserver/ability.h index fcaf21a0..6633d468 100644 --- a/server/gameserver/ability.h +++ b/server/gameserver/ability.h @@ -6,6 +6,7 @@ class Ability { public: Ability(CreatureWeakPtr owner); + ~Ability(); void IncImmuneTimes(int tag); void DecImmuneTimes(int tag); diff --git a/server/gameserver/gamelog.cc b/server/gameserver/gamelog.cc index 83a0288b..94fb83ac 100644 --- a/server/gameserver/gamelog.cc +++ b/server/gameserver/gamelog.cc @@ -103,6 +103,8 @@ void GameLog::ForceOver(Room* room) prop->SetVal("battle_started", a8::XValue(room->BattleStarted() ? 1 : 0)); prop->SetVal("game_duration", room->GetFrameNo() * SERVER_FRAME_RATE); prop->SetVal("player_num", room->GetRealPlayerNum()); + prop->SetVal("server_node_id", App::Instance()->GetNodeId()); + prop->SetVal("server_instance_id", App::Instance()->GetInstanceId()); f8::TGLog::Instance()->AddTrackLog(game_id, "forceover", 0, "forceover", prop.get()); } diff --git a/server/gameserver/handlermgr.cc b/server/gameserver/handlermgr.cc index 409906e9..1225bd4a 100644 --- a/server/gameserver/handlermgr.cc +++ b/server/gameserver/handlermgr.cc @@ -60,6 +60,14 @@ static void _GMOpsServerInfo(std::shared_ptr request) request->resp_xobj->SetVal("instance_id", App::Instance()->GetInstanceId()); } +static void _GMOpsTerminate(std::shared_ptr request) +{ + request->resp_xobj->SetVal("errcode", 0); + request->resp_xobj->SetVal("errmsg", ""); + App::Instance()->Terminate(); +} + + static void _GMStatGetRealTimeOnline(std::shared_ptr request) { request->resp_xobj->SetVal("errcode", 0); @@ -76,6 +84,7 @@ void HandlerMgr::Init() RegisterGMMsgHandler("Ops@stopService", _GMOpsStopService); RegisterGMMsgHandler("Ops@startService", _GMOpsStartService); RegisterGMMsgHandler("Ops@serverInfo", _GMOpsServerInfo); + RegisterGMMsgHandler("Ops@terminate", _GMOpsTerminate); RegisterGMMsgHandler("Stat@getRealTimeOnline", _GMStatGetRealTimeOnline); f8::MsgQueue::Instance()->RegisterCallBack ( From b309590d461ed49f070a80ff21590e6670f58ed9 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 3 Nov 2023 19:47:10 +0800 Subject: [PATCH 2/3] 1 --- server/gameserver/mt/MetaMgr.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/server/gameserver/mt/MetaMgr.cc b/server/gameserver/mt/MetaMgr.cc index 3bff828b..88990d24 100644 --- a/server/gameserver/mt/MetaMgr.cc +++ b/server/gameserver/mt/MetaMgr.cc @@ -139,7 +139,10 @@ namespace mt void MetaMgr::UnInit() { - + for (auto t : meta_tables) { + t->destory_cb(); + } + meta_tables.clear(); } } From 16119fb69b60b234bed78888e925e0cfa3c8b877 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 4 Nov 2023 08:13:01 +0800 Subject: [PATCH 3/3] 1 --- server/gameserver/app.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/server/gameserver/app.cc b/server/gameserver/app.cc index 8190c2e6..643d4900 100644 --- a/server/gameserver/app.cc +++ b/server/gameserver/app.cc @@ -41,6 +41,8 @@ #include "tracemgr.h" #include "matchmgr.h" #include "selfchecker.h" +#include "hero_agent.h" +#include "android_agent.h" #include "skillhelper.h" #include "mt/MetaMgr.h" @@ -227,9 +229,9 @@ void App::UnInit() HttpProxy::Instance()->UnInit(); GGListener::Instance()->UnInit(); PlayerMgr::Instance()->UnInit(); + RoomMgr::Instance()->UnInit(); MapMgr::Instance()->UnInit(); MatchMgr::Instance()->UnInit(); - RoomMgr::Instance()->UnInit(); KillMgr::Instance()->UnInit(); EntityFactory::Instance()->UnInit(); SelfChecker::UnInit();