From 50edf72f3fe90e30e62ac1d68ee04c9ab51984f8 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 7 Nov 2023 16:46:28 +0800 Subject: [PATCH] 1 --- server/gameserver/mt/Map.cc | 4 ++-- server/gameserver/mt/SkillNumber.cc | 18 +++++++++++++++++- server/gameserver/mt/SkillNumber.h | 3 +++ server/gameserver/mtb/SkillNumber.h | 5 ++++- server/gameserver/mtb/mtb.all.cc | 3 ++- server/tools/protobuild/mt.proto | 1 + 6 files changed, 29 insertions(+), 5 deletions(-) diff --git a/server/gameserver/mt/Map.cc b/server/gameserver/mt/Map.cc index 48d9f36a..0d863c5b 100644 --- a/server/gameserver/mt/Map.cc +++ b/server/gameserver/mt/Map.cc @@ -123,7 +123,7 @@ namespace mt 0.0f, a8::XValue(strings[1]).GetDouble()); } - if (!IsPveMap() && !is_moba() && player() < 10) { + if (is_open() && !IsPveMap() && !is_moba() && player() < 10) { A8_ABORT(); } collider_info = MapCollider::GetByName(map_collider()); @@ -134,7 +134,7 @@ namespace mt void Map::Init2() { { - if (!IsPveMap() && !is_moba() && safearea_list.empty()) { + if (is_open() && !IsPveMap() && !is_moba() && safearea_list.empty()) { A8_ABORT(); } for (const int area_type : safearea_list) { diff --git a/server/gameserver/mt/SkillNumber.cc b/server/gameserver/mt/SkillNumber.cc index e0b9ae57..4e0439e2 100644 --- a/server/gameserver/mt/SkillNumber.cc +++ b/server/gameserver/mt/SkillNumber.cc @@ -29,7 +29,8 @@ A8_DECLARE_CLASS_ENUM(SkillNumberLispField_e, int, number, time2, time3, - time4 + time4, + time5 ); namespace mt @@ -151,6 +152,14 @@ namespace mt _float_time4 = a8::XValue(tmp_str).GetDouble() / 100; } + _int_time5 = a8::XValue(time5()); + _float_time5 = a8::XValue(time5()).GetDouble(); + if (time5().find('%') != std::string::npos) { + std::string tmp_str = time5(); + a8::ReplaceString(tmp_str, "%", ""); + _float_time5 = a8::XValue(tmp_str).GetDouble() / 100; + } + _int_cd = a8::XValue(cd()); _float_cd = a8::XValue(cd()).GetDouble(); if (cd().find('%') != std::string::npos) { @@ -286,6 +295,11 @@ namespace mt return _float_time4; } break; + case SkillNumberLispField_e::time5: + { + return _float_time5; + } + break; default: { abort(); @@ -336,6 +350,8 @@ namespace mt return (int)SkillNumberLispField_e::time3; } else if (name == "${skillNumber.time4}") { return (int)SkillNumberLispField_e::time4; + } else if (name == "${skillNumber.time5}") { + return (int)SkillNumberLispField_e::time5; } return -1; } diff --git a/server/gameserver/mt/SkillNumber.h b/server/gameserver/mt/SkillNumber.h index 8084a79b..e9539678 100644 --- a/server/gameserver/mt/SkillNumber.h +++ b/server/gameserver/mt/SkillNumber.h @@ -53,6 +53,9 @@ namespace mt int _int_time4 = 0; float _float_time4 = 0; + int _int_time5 = 0; + float _float_time5 = 0; + int _int_cd = 0; float _float_cd = 0; diff --git a/server/gameserver/mtb/SkillNumber.h b/server/gameserver/mtb/SkillNumber.h index 3655d5f0..b51c3526 100644 --- a/server/gameserver/mtb/SkillNumber.h +++ b/server/gameserver/mtb/SkillNumber.h @@ -37,6 +37,7 @@ namespace mtb const std::string range6() const { return range6_; }; const std::string time3() const { return time3_; }; const std::string time4() const { return time4_; }; + const std::string time5() const { return time5_; }; bool has_skill_id() const { return __flags__.test(0);}; bool has_skill_type() const { return __flags__.test(1);}; @@ -65,6 +66,7 @@ namespace mtb bool has_ragne6() const { return __flags__.test(24);}; bool has_time3() const { return __flags__.test(25);}; bool has_time4() const { return __flags__.test(26);}; + bool has_time5() const { return __flags__.test(27);}; protected: @@ -95,9 +97,10 @@ namespace mtb std::string time2_; std::string time3_; std::string time4_; + std::string time5_; public: - std::bitset<27> __flags__; + std::bitset<28> __flags__; }; }; diff --git a/server/gameserver/mtb/mtb.all.cc b/server/gameserver/mtb/mtb.all.cc index c408ca36..0aee0aac 100644 --- a/server/gameserver/mtb/mtb.all.cc +++ b/server/gameserver/mtb/mtb.all.cc @@ -420,7 +420,7 @@ namespace mtb { a8::reflect::Class* meta_class = nullptr; if (!meta_class) { - meta_class = new a8::reflect::Class("SkillNumber", 27, 0); + meta_class = new a8::reflect::Class("SkillNumber", 28, 0); meta_class->SetSimpleField(0, "skill_id", a8::reflect::ET_INT32, my_offsetof2(SkillNumber, skill_id_)); meta_class->SetSimpleField(1, "skill_type", a8::reflect::ET_INT32, my_offsetof2(SkillNumber, skill_type_)); meta_class->SetSimpleField(2, "number", a8::reflect::ET_FLOAT, my_offsetof2(SkillNumber, number_)); @@ -448,6 +448,7 @@ namespace mtb meta_class->SetSimpleField(24, "range6", a8::reflect::ET_STRING, my_offsetof2(SkillNumber, range6_)); meta_class->SetSimpleField(25, "time3", a8::reflect::ET_STRING, my_offsetof2(SkillNumber, time3_)); meta_class->SetSimpleField(26, "time4", a8::reflect::ET_STRING, my_offsetof2(SkillNumber, time4_)); + meta_class->SetSimpleField(27, "time5", a8::reflect::ET_STRING, my_offsetof2(SkillNumber, time5_)); } return meta_class; } diff --git a/server/tools/protobuild/mt.proto b/server/tools/protobuild/mt.proto index 707a021e..48fdd6bc 100755 --- a/server/tools/protobuild/mt.proto +++ b/server/tools/protobuild/mt.proto @@ -369,6 +369,7 @@ message SkillNumber optional string time2 = 22; optional string time3 = 40; optional string time4 = 41; + optional string time5 = 42; } message NpcStandard