diff --git a/server/gameserver/constant.h b/server/gameserver/constant.h index 79322ab2..144c7ff8 100644 --- a/server/gameserver/constant.h +++ b/server/gameserver/constant.h @@ -258,6 +258,8 @@ enum PropertyType_e kPropGuideStep = 46, kPropBlueStone = 47, kPropPurpleStone = 48, + + kPropArmorShield = 49, }; enum SkinSlot_e diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 2b9261d6..c76cae31 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -256,7 +256,17 @@ void Human::DecHP(float dec_hp, int killer_id, const std::string killer_name, in last_receive_dmg_frameno = room->GetFrameNo(); float old_hp = GetHP(); - if (energy_shield > 0.001f) { + if (armor_shield > 0.0001f){ + armor_shield = std::max(0.0f, armor_shield - dec_hp); + room->frame_event.AddPropChg + ( + GetWeakPtrRef(), + kPropEnergyShield, + armor_shield, + max_armor_shield, + true); + GetTrigger()->ReceiveDmg(); + } else if (energy_shield > 0.001f) { energy_shield = std::max(0.0f, energy_shield - dec_hp); room->frame_event.AddPropChg ( diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 64bf06fe..ec0632e9 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -2260,7 +2260,7 @@ void Room::NotifyGameStart() long long Room::GetGasInactiveTime() { #ifdef DEBUG - return 30; + return 12; #endif if (IsPveRoom()) { return 10; diff --git a/server/tools/protobuild/cs_proto.proto b/server/tools/protobuild/cs_proto.proto index 7e5d6440..7a6fc669 100755 --- a/server/tools/protobuild/cs_proto.proto +++ b/server/tools/protobuild/cs_proto.proto @@ -223,6 +223,9 @@ message MFVec3 value: 宝石数量 property_type: 48 护盾宝石 value: 宝石数量 + property_type: 49 护甲 + property_subtype: 当前护甲值 + value: max护甲值 */ message MFPropertyChg { @@ -362,8 +365,8 @@ message MFPlayerFull optional int32 team_member_num = 70 [default = 0]; //队伍成员数 - optional int32 armor_shield = 73; //能量护甲 - optional int32 max_armor_shield = 74; //最大能量护甲 + optional int32 armor_shield = 73; //护甲 + optional int32 max_armor_shield = 74; //最大护甲 } @@ -630,8 +633,8 @@ message MFActivePlayerData optional int32 gemstone = 68; //宝石 - optional int32 armor_shield = 73; //能量护甲 - optional int32 max_armor_shield = 74; //最大能量护甲 + optional int32 armor_shield = 73; //护甲 + optional int32 max_armor_shield = 74; //最大护甲 } //毒圈数据 @@ -1375,6 +1378,9 @@ message CMMove optional MFThrow throw_bomb = 44; //投掷 optional MFVec3 sand_table_target_pos = 45; //沙盘目标位置 + + optional MFVec3 shot_target_pos = 46; //射击时目标位置(如果没目标则为子弹终点) + optional MFVec3 shot_client_pos = 47; //射击时客户端位置 } //立刻消息 @@ -1532,6 +1538,8 @@ message SMJoinedNotify optional int32 adjust_bullet = 12; //是否矫正子弹出生点(默认不矫正 1:矫正) optional int32 is_newbie_room = 13; //是否新手房间 + + optional int32 pre_client_shot = 14; //是否支持客户端子弹预表现 } //地图信息