From 0ff5409773fd21784fb6a3d73c4a042e7eb6b468 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 3 Mar 2023 17:38:56 +0800 Subject: [PATCH] 1 --- server/gameserver/frameevent.cc | 3 ++- server/gameserver/frameeventdata.h | 2 +- server/gameserver/framemaker.cc | 1 + server/gameserver/player.cc | 4 +++- server/gameserver/weapon.cc | 7 ++++++- server/tools/protobuild/cs_proto.proto | 6 ++---- third_party/a8 | 2 +- 7 files changed, 16 insertions(+), 9 deletions(-) diff --git a/server/gameserver/frameevent.cc b/server/gameserver/frameevent.cc index 9387c379..68f1246b 100644 --- a/server/gameserver/frameevent.cc +++ b/server/gameserver/frameevent.cc @@ -282,7 +282,8 @@ void FrameEvent::AddWeaponAmmoChg(CreatureWeakPtr& sender) ( std::make_tuple(sender, sender.Get()->GetCurrWeapon()->weapon_idx, - sender.Get()->GetCurrWeapon()->ammo + sender.Get()->GetCurrWeapon()->ammo, + sender.Get()->GetCurrWeapon()->GetClipVolume(sender.Get()) ) ); int idx = room->frame_event_data->chged_weapon_ammo_.size() - 1; diff --git a/server/gameserver/frameeventdata.h b/server/gameserver/frameeventdata.h index 80debceb..bc17c61d 100644 --- a/server/gameserver/frameeventdata.h +++ b/server/gameserver/frameeventdata.h @@ -17,7 +17,7 @@ private: std::vector> chged_effects_; std::vector> chged_items_; std::vector chged_bullet_nums_; - std::vector> chged_weapon_ammo_; + std::vector> chged_weapon_ammo_; std::vector chged_hps_; std::vector> chged_skillcds_; std::vector> chged_skill_curr_times_; diff --git a/server/gameserver/framemaker.cc b/server/gameserver/framemaker.cc index ac5e4d96..e31ac168 100644 --- a/server/gameserver/framemaker.cc +++ b/server/gameserver/framemaker.cc @@ -542,6 +542,7 @@ void FrameMaker::SerializeChgedWeaponAmmo(cs::SMUpdate* msg, Room* room, Human* p->set_property_type(kPropWeaponAmmo); p->set_property_subtype(std::get<1>(tuple)); p->set_value(std::get<2>(tuple)); + p->set_value2(std::get<3>(tuple)); } } } diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 862d8b1e..30e56f27 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -1652,12 +1652,14 @@ void Player::UpdateThrowBomb() RemoveBuffByEffectId(kBET_Hide); } --weapon.ammo; - room->frame_event.AddPropChg + room->frame_event.AddPropChgEx ( GetWeakPtrRef(), kPropWeaponAmmo, weapon.weapon_idx, weapon.ammo, + weapon.GetClipVolume(this), + 0, true ); glm::vec3 bomb_pos = glm::vec3( diff --git a/server/gameserver/weapon.cc b/server/gameserver/weapon.cc index 43d683c3..09373a9b 100644 --- a/server/gameserver/weapon.cc +++ b/server/gameserver/weapon.cc @@ -4,6 +4,7 @@ #include "creature.h" #include "battledatacontext.h" #include "pbutils.h" +#include "human.h" #include "mt/Equip.h" @@ -27,7 +28,11 @@ int Weapon::GetClipVolume(Creature* c) if (c->GetBattleContext()) { return c->GetBattleContext()->GetClipVolume(c, this); } else { - return meta ? meta->clip_volume() :0; + if (c->IsHuman() && meta->_inventory_slot() > 0) { + return c->AsHuman()->GetVolume(meta->_inventory_slot()); + } else { + return meta ? meta->clip_volume() :0; + } } } diff --git a/server/tools/protobuild/cs_proto.proto b/server/tools/protobuild/cs_proto.proto index a53c37ea..569aabd7 100755 --- a/server/tools/protobuild/cs_proto.proto +++ b/server/tools/protobuild/cs_proto.proto @@ -111,9 +111,6 @@ message MFVec3 /* property_type: 1 血量 property_type: 2 最大血量 - property_type: 3 库存 - property_subtype: 库存数组索引 - valule: 当前数量 property_type: 4 技能cd时间(剩余时间) property_type: 5 技能cd时间(总时间) property_type: 6 载具剩余子弹数 @@ -123,9 +120,10 @@ message MFVec3 property_type: 9 当前道具(目前只有伪装) property_subtype: 道具id valule: 当前数量(数量<=0时除) - property_type: 10 更新武器子弹数 + property_type: 10 更新武器子弹数和弹夹上限 property_subtype: 武器索引 valule: 当前数量 + valule2: 当前弹夹上限 property_type: 11 载具 property_subtype: car_uniid valule: seat diff --git a/third_party/a8 b/third_party/a8 index 7bd14674..592661ba 160000 --- a/third_party/a8 +++ b/third_party/a8 @@ -1 +1 @@ -Subproject commit 7bd146740195fbf3d0268fd873708f4ec2f56ab6 +Subproject commit 592661bae5547a0c1675816595b803f902d83041