From 2e5c79e1e86148a068873f95006a0ea3f03ac67f Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 17 Nov 2022 10:06:43 +0800 Subject: [PATCH] 1 --- server/gameserver/human.cc | 9 ++++++++- server/gameserver/human.h | 5 +++++ server/tools/protobuild/cs_proto.proto | 10 ++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index a581416a..2a619ce1 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -636,6 +636,12 @@ void Human::FillMFPlayerStats(cs::MFPlayerStats* stats_pb) stats_pb->set_damage_amount(stats.damage_amount_out); stats_pb->set_heal_amount(stats.heal_amount); + stats_pb->set_assist(stats.assist); + stats_pb->set_rescue(stats.rescue_member); + stats_pb->set_pve_wave(stats.pve_wave); + stats_pb->set_revive(stats.revive); + stats_pb->set_rank_chg(stats.rank_chg); + stats_pb->set_history_time_alive(stats.history_time_alive); stats_pb->set_history_kills(stats.history_kills); stats_pb->set_history_damage_amount(stats.history_damage_amount); @@ -1079,6 +1085,7 @@ void Human::FillSMGameOver(cs::SMGameOver& msg) msg.set_pve_wave(room->pve_data.GetWave() + 1); msg.set_pve_max_wave(room->pve_data.max_wave); msg.set_pve_instance_id(room->pve_instance->pb->gemini_id()); + msg.set_pve_boss_killed(room->pve_data.boss_state == 2 ? 1 : 0); } } TypeConvert::ToPb(stats.over_reward, msg.mutable_reward()); @@ -1262,7 +1269,7 @@ void Human::DecHP(float dec_hp, int killer_id, const std::string& killer_name, i BeKill(killer_id, killer_name, weapon_id, real_killer_id, real_killer_name); SyncAroundPlayers(__FILE__, __LINE__, __func__); } else { - if (HasNoDownedTeammate()) { + if (HasNoDownedTeammate() && !room->IsPveRoom()) { SetHP(MetaMgr::Instance()->GetSysParamAsInt("downed_recover_hp")); downed = true; if (HasBuffEffect(kBET_Camouflage)) { diff --git a/server/gameserver/human.h b/server/gameserver/human.h index f927e1a0..2175135b 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -66,6 +66,11 @@ struct PlayerStats int rescue_member = 0; int rescue_guild_member = 0; + int assist = 0; + int pve_wave = 0; + int revive = 0; + int rank_chg = 0; + int history_time_alive = 0; int history_kills = 0; int history_damage_amount = 0; diff --git a/server/tools/protobuild/cs_proto.proto b/server/tools/protobuild/cs_proto.proto index bd9b5dfa..13ffe251 100755 --- a/server/tools/protobuild/cs_proto.proto +++ b/server/tools/protobuild/cs_proto.proto @@ -679,6 +679,11 @@ message MFPlayerStats optional int32 kills = 4; //击杀敌人数 optional int32 damage_amount = 8; //伤害总量 optional int32 heal_amount = 20; //治疗总量 + optional int32 assist = 50; //助攻 + optional int32 rescue = 51; //救援 + optional int32 pve_wave = 52; //pve波次 + optional int32 revive = 53; //复活次数 + optional int32 rank_chg = 54; //排行变更 //历史最佳成绩 optional int32 history_time_alive = 30; //存活时间(毫秒) optional int32 history_kills = 31; //击杀敌人数 @@ -1142,6 +1147,8 @@ message SMMapInfo optional string room_uuid = 9; //房间唯一id optional string server_info = 10; //服务器信息(重连时使用) optional int32 room_mode = 11; //0:吃鸡模式 1:歼灭模式 2:生存模式 + optional int32 team_mode = 12; //队伍模式 0:单人 1:多人 + optional int32 match_mode = 13; //比赛模式 0: pvp 1:排位赛(只有吃鸡模式下该字段才有意义) } //帧事件 @@ -1209,12 +1216,15 @@ message SMGameOver optional int32 pve_wave = 17; //pve波次 optional int32 pve_max_wave = 18; //pve总波次 optional int32 pve_instance_id = 19; //pve副本id + optional int32 pve_boss_killed = 25; //pve副本boos是否被击杀 optional int32 map_id = 20; //地图id optional int32 mode = 21; //1:个人 2:组队 optional int32 my_rank = 22; //我的排名 optional int32 max_rank = 23; //最大排名 + optional int32 room_mode = 30; //0:吃鸡模式 1:歼灭模式 2:生存模式 + optional int32 match_mode = 32; //比赛模式 0: pvp 1:排位赛(只有吃鸡模式下该字段才有意义) } //离开