diff --git a/server/gameserver/handlermgr.cc b/server/gameserver/handlermgr.cc index 9e5e6db..0c3fdc5 100644 --- a/server/gameserver/handlermgr.cc +++ b/server/gameserver/handlermgr.cc @@ -91,6 +91,7 @@ void HandlerMgr::RegisterNetMsgHandlers() RegisterNetMsgHandler(&ggmsghandler, &Player::_CMWatchWar); RegisterNetMsgHandler(&ggmsghandler, &Player::_CMLeave); RegisterNetMsgHandler(&ggmsghandler, &Player::_CMRevive); + RegisterNetMsgHandler(&ggmsghandler, &Player::_CMCancelRevive); } void HandlerMgr::ProcGMMsg(unsigned long saddr, int sockhandle, diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index ee0a38d..10a519f 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -25,7 +25,7 @@ #include "framework/cpp/utils.h" #include "framework/cpp/httpclientpool.h" -const int kReviveTimeAdd = 6; +const int kReviveTimeAdd = 8; Human::Human():Entity() { diff --git a/server/gameserver/human.h b/server/gameserver/human.h index 53800f8..6dea5f0 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -215,6 +215,7 @@ class Human : public Entity int SkinId(); int SkinLv(); void CheckSkinTank(); + void OnDie(); protected: void _UpdateMove(int speed); @@ -228,7 +229,6 @@ private: void FillSMGameOver(cs::SMGameOver& msg); void SendBattleReport(); void FindLocationWithTarget(Entity* target); - void OnDie(); void Revive(); protected: diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index e66f451..a8d2385 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -1101,3 +1101,13 @@ void Player::_CMRevive(f8::MsgHdr& hdr, const cs::CMRevive& msg) revive_timer = nullptr; } } + +void Player::_CMCancelRevive(f8::MsgHdr& hdr, const cs::CMCancelRevive& msg) +{ + if (dead && !real_dead) { + dead = true; + real_dead = true; + downed = false; + OnDie(); + } +} diff --git a/server/gameserver/player.h b/server/gameserver/player.h index e65a5b3..2fc409c 100644 --- a/server/gameserver/player.h +++ b/server/gameserver/player.h @@ -89,5 +89,6 @@ class Player : public Human void _CMWatchWar(f8::MsgHdr& hdr, const cs::CMWatchWar& msg); void _CMLeave(f8::MsgHdr& hdr, const cs::CMLeave& msg); void _CMRevive(f8::MsgHdr& hdr, const cs::CMRevive& msg); + void _CMCancelRevive(f8::MsgHdr& hdr, const cs::CMCancelRevive& msg); }; diff --git a/server/tools/protobuild/cs_msgid.proto b/server/tools/protobuild/cs_msgid.proto index 810f7ee..7421f83 100644 --- a/server/tools/protobuild/cs_msgid.proto +++ b/server/tools/protobuild/cs_msgid.proto @@ -13,6 +13,7 @@ enum CMMessageId_e _CMWatchWar = 208; _CMLeave = 209; _CMRevive = 210; + _CMCancelRevive = 211; } enum SMMessageId_e diff --git a/server/tools/protobuild/cs_proto.proto b/server/tools/protobuild/cs_proto.proto index 690bf29..ac99fb7 100755 --- a/server/tools/protobuild/cs_proto.proto +++ b/server/tools/protobuild/cs_proto.proto @@ -736,6 +736,12 @@ message CMRevive } +//取消复活 +message CMCancelRevive +{ + +} + //endcmmsg //观战error_code == 0 时关闭结算界面,回到战斗界面