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 (