From 0cd86c620c41c8712e89f2d653b3ae54eda0cdd0 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 6 Aug 2020 15:16:17 +0800 Subject: [PATCH 1/4] 1 --- server/tools/protobuild/cs_proto.proto | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/server/tools/protobuild/cs_proto.proto b/server/tools/protobuild/cs_proto.proto index 3275ea6..036c8f7 100755 --- a/server/tools/protobuild/cs_proto.proto +++ b/server/tools/protobuild/cs_proto.proto @@ -302,9 +302,10 @@ message MFLootFull optional int32 obj_uniid = 1; //唯一id optional MFVec2 pos = 2; //位置 - optional int32 item_id = 6; - optional int32 count = 7; + optional int32 item_id = 6; //道具id + optional int32 count = 7; //数量 optional int32 age_ms = 8; + optional int32 item_level = 9 [default = 1]; //道具等级 } //尸体-部分 From 615b509c76e4981fc4d7b9fde5b11403b0429ae8 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 7 Aug 2020 10:16:49 +0800 Subject: [PATCH 2/4] 1 --- server/gameserver/loot.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/server/gameserver/loot.cc b/server/gameserver/loot.cc index 50dae5d..0033500 100644 --- a/server/gameserver/loot.cc +++ b/server/gameserver/loot.cc @@ -46,4 +46,5 @@ void Loot::FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_data) p->set_item_id(item_id); p->set_count(count); + p->set_item_level(item_level); } From c85492693e77d2389d896dbdb5bb3bc227136a6e Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 7 Aug 2020 10:25:05 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E6=96=B0=E6=AD=A6=E5=99=A8=E7=AD=89?= =?UTF-8?q?=E7=BA=A7ok?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/metadata.cc | 8 +++++++- server/tools/protobuild/metatable.proto | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/server/gameserver/metadata.cc b/server/gameserver/metadata.cc index 6302ab2..f06b786 100644 --- a/server/gameserver/metadata.cc +++ b/server/gameserver/metadata.cc @@ -3,6 +3,8 @@ #include "metadata.h" #include "metamgr.h" +#include "framework/cpp/utils.h" + namespace MetaData { void Parameter::Init() @@ -102,7 +104,11 @@ namespace MetaData } { std::vector strings; - a8::Split(i->attr_type(), strings, '|'); + if (f8::IsOnlineEnv()) { + a8::Split(i->attr_type(), strings, '|'); + } else { + a8::Split(i->spera_type(), strings, '|'); + } int level = 1; for (auto& str : strings) { if (str.empty()) { diff --git a/server/tools/protobuild/metatable.proto b/server/tools/protobuild/metatable.proto index c49b5f5..9ff3ce9 100755 --- a/server/tools/protobuild/metatable.proto +++ b/server/tools/protobuild/metatable.proto @@ -104,6 +104,7 @@ message EquipUpgrade { optional int32 id = 1; optional string attr_type = 4; + optional string spera_type = 5; } message Player From a7fc32cd265e4027b471db7a0b8bcc6ffcb0e355 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 7 Aug 2020 10:49:37 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=8D=A2=E5=BC=B9?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/constant.h | 1 + server/gameserver/human.cc | 3 ++- server/gameserver/types.cc | 6 ++++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/server/gameserver/constant.h b/server/gameserver/constant.h index e2ce0cc..f7b37fd 100755 --- a/server/gameserver/constant.h +++ b/server/gameserver/constant.h @@ -166,6 +166,7 @@ enum HumanAttrType_e kHAT_FireRate = 9, kHAT_Volume = 10, kHAT_MaxHp = 11, + kHAT_ReloadTime = 14, kHAT_BulletAngle = 20, kHAT_End }; diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 8457009..1b9349a 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -829,7 +829,7 @@ void Human::AutoLoadingBullet(bool manual) on_loading_bullet(); } StartAction(AT_Reload, - p_weapon->meta->i->reload_time(), + p_weapon->GetAttrValue(kHAT_ReloadTime), p_weapon->weapon_id, p_weapon->weapon_idx); } @@ -848,6 +848,7 @@ void Human::StartAction(ActionType_e action_type, this->action_target_id == target_id) { return; } + action_duration = std::max(0, action_duration); this->action_type = action_type; this->action_frameno = room->GetFrameNo(); this->action_duration = action_duration; diff --git a/server/gameserver/types.cc b/server/gameserver/types.cc index 6065e3a..8e5f606 100644 --- a/server/gameserver/types.cc +++ b/server/gameserver/types.cc @@ -57,6 +57,12 @@ float Weapon::GetAttrValue(HumanAttrType_e attr_type) (upgrade_meta ? upgrade_meta->GetAttrValue(weapon_lv, attr_type) : 0); } break; + case kHAT_ReloadTime: + { + return meta->i->reload_time() - + (upgrade_meta ? upgrade_meta->GetAttrValue(weapon_lv, attr_type) : 0); + } + break; default: return 0; }