From cb96f862db2d69ebc3ff6a61fcbec47e0c65af26 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 1 Jul 2023 16:41:49 +0800 Subject: [PATCH] 1 --- server/gameserver/handlermgr.cc | 1 + server/gameserver/human.cc | 12 +++++++++++- server/gameserver/mt/Param.cc | 1 + server/gameserver/mt/Param.h | 2 ++ server/gameserver/player.cc | 5 +++++ server/gameserver/player.h | 2 ++ server/tools/protobuild/cs_msgid.proto | 1 + server/tools/protobuild/cs_proto.proto | 8 +++++++- 8 files changed, 30 insertions(+), 2 deletions(-) diff --git a/server/gameserver/handlermgr.cc b/server/gameserver/handlermgr.cc index 8327b9b6..cfa73f0b 100644 --- a/server/gameserver/handlermgr.cc +++ b/server/gameserver/handlermgr.cc @@ -130,6 +130,7 @@ void HandlerMgr::RegisterNetMsgHandlers() RegisterNetMsgHandler(&ggmsghandler, &Player::_CMRequestThrowDmg); RegisterNetMsgHandler(&ggmsghandler, &Player::_CMStowShield); RegisterNetMsgHandler(&ggmsghandler, &Player::_CMTeamMarkTargetPos); + RegisterNetMsgHandler(&ggmsghandler, &Player::_CMSetRevivePosition); } void HandlerMgr::ProcGMMsg(unsigned long saddr, int sockhandle, diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index ba6c5fca..2788c090 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -3352,7 +3352,17 @@ void Human::InternalBeKill(int killer_id, const std::string& killer_name, int we GetTrigger()->Die(killer_id, weapon_id); OnDie(); KillMgr::Instance()->OnHumanDead(this, &info); - room->frame_event.AddDead(GetWeakPtrRef(), 1000 * mt::Param::s().revive_time); + room->frame_event.AddDead(GetWeakPtrRef(), + 1000 * mt::Param::s().pvp_revive_time); + dead_timer = room->xtimer.SetTimeoutWpEx + (mt::Param::s().pvp_revive_time * SERVER_FRAME_RATE, + [this] (int event, const a8::Args* args) + { + if (a8::TIMER_EXEC_EVENT == event) { + } + }, + &xtimer_attacher); + ++revive_count; } else { dead = true; real_dead = true; diff --git a/server/gameserver/mt/Param.cc b/server/gameserver/mt/Param.cc index e9e7cac7..691d60a7 100644 --- a/server/gameserver/mt/Param.cc +++ b/server/gameserver/mt/Param.cc @@ -50,6 +50,7 @@ namespace mt s_.downed_switch = GetIntParam("downed_switch", 0); s_.bullet_through_wall_check = GetIntParam("bullet_through_wall_check", 1); s_.revive_count = GetIntParam("revive_count", 1); + s_.pvp_revive_time = GetIntParam("pvp_revive_time", 10); #if 1 { std::string point = GetStringParam("newbie_room_born_point", "3471.3662:6.8399:5268.6240"); diff --git a/server/gameserver/mt/Param.h b/server/gameserver/mt/Param.h index 7f822b28..c30d5572 100644 --- a/server/gameserver/mt/Param.h +++ b/server/gameserver/mt/Param.h @@ -121,6 +121,8 @@ namespace mt int downed_switch = 0; int bullet_through_wall_check = 1; int revive_count = 1; + int pvp_revive_time = 10; + }; static void StaticPostInit(); static const S& s() { return s_; }; diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index cd8456ed..2d495ee4 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -1754,3 +1754,8 @@ void Player::UpdateThrowBomb() } throw_bomb.reset(); } + +void Player::_CMSetRevivePosition(f8::MsgHdr& hdr, const cs::CMSetRevivePosition& msg) +{ + +} diff --git a/server/gameserver/player.h b/server/gameserver/player.h index cd1e02f5..fff8f668 100644 --- a/server/gameserver/player.h +++ b/server/gameserver/player.h @@ -20,6 +20,7 @@ namespace cs class CMCancelRevive; class CMRequestBulletDmg; class CMRequestThrowDmg; + class CMSetRevivePosition; class MFActivePlayerData; class MFGasData; class MFPair; @@ -135,6 +136,7 @@ class Player : public Human void _CMRequestThrowDmg(f8::MsgHdr& hdr, const cs::CMRequestThrowDmg& msg); void _CMStowShield(f8::MsgHdr& hdr, const cs::CMStowShield& msg); void _CMTeamMarkTargetPos(f8::MsgHdr& hdr, const cs::CMTeamMarkTargetPos& msg); + void _CMSetRevivePosition(f8::MsgHdr& hdr, const cs::CMSetRevivePosition& msg); virtual void SetAttackDir(const glm::vec3& attack_dir) override; void AsyncRequestWatchWar(bool send_rsp_msg); diff --git a/server/tools/protobuild/cs_msgid.proto b/server/tools/protobuild/cs_msgid.proto index 3bc383b0..11597df3 100644 --- a/server/tools/protobuild/cs_msgid.proto +++ b/server/tools/protobuild/cs_msgid.proto @@ -28,6 +28,7 @@ enum CMMessageId_e _CMImmediateMsg = 232; _CMTeamMarkTargetPos = 233; _CMRequestThrowDmg = 236; + _CMSetRevivePosition = 237; } enum SMMessageId_e diff --git a/server/tools/protobuild/cs_proto.proto b/server/tools/protobuild/cs_proto.proto index 87eb26d4..b9f169b8 100755 --- a/server/tools/protobuild/cs_proto.proto +++ b/server/tools/protobuild/cs_proto.proto @@ -1582,6 +1582,12 @@ message CMStowShield } +//设置复活点 +message CMSetRevivePosition +{ + optional MFVec3 pos = 1; //子弹当前位置 +} + //endcmmsg //观战error_code == 0 时关闭结算界面,回到战斗界面 @@ -1856,4 +1862,4 @@ message SMDebugCmd message SMNewBieEnd { repeated MFPlayerFull victory_team = 1; //吃鸡队伍信息 -} \ No newline at end of file +}