From 73e25cc10d72211b85504c66b78883ce6374f892 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 14 Sep 2024 13:15:01 +0800 Subject: [PATCH 01/14] 1 --- server/gameserver/mt/MapMode.h | 1 + 1 file changed, 1 insertion(+) diff --git a/server/gameserver/mt/MapMode.h b/server/gameserver/mt/MapMode.h index 949964e5..a386ef99 100644 --- a/server/gameserver/mt/MapMode.h +++ b/server/gameserver/mt/MapMode.h @@ -7,6 +7,7 @@ namespace mt { const int kPvpRankMode = 401; const int kTreasureBoxMode = 501; + const int kCircuitMatchMode = 601; DECLARE_ID_TABLE(MapMode, mtb::MapMode, "mapMode@mapMode.json", From ce050856f8776ea7f5fdb6d27e71e47fdc1f1e6f Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 14 Sep 2024 13:35:47 +0800 Subject: [PATCH 02/14] 1 --- server/gameserver/team.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/server/gameserver/team.cc b/server/gameserver/team.cc index ddd25aa0..43c41b43 100644 --- a/server/gameserver/team.cc +++ b/server/gameserver/team.cc @@ -88,6 +88,10 @@ bool Team::HasAliveMember() void Team::AddMember(Human* member) { + if (room->GetMapModeMeta()->mapMode() == mt::kCircuitMatchMode && + !members_.empty()) { + A8_ABORT(); + } if (!first_member_) { first_member_ = member; init_team_member_num_ = member->init_team_member_num; From 7129bcb4be9bbda9e197faee857aee6fa1b3b536 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 14 Sep 2024 13:49:23 +0800 Subject: [PATCH 03/14] 1 --- server/gameserver/room.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index fa4a0af1..94d4d57d 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -1854,7 +1854,8 @@ bool Room::GenSmallCircle() void Room::MatchTeam(Human* hum) { - if (!hum->team_uuid.empty()) { + if (!hum->team_uuid.empty() && + GetMapModeMeta()->mapMode() != mt::kCircuitMatchMode) { { bool match_ok = false; TraverseHumanList From 571fc0f58cc3a50ddcc3f001ad3cbe5bcaa8c138 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 14 Sep 2024 14:05:37 +0800 Subject: [PATCH 04/14] 1 --- server/gameserver/room.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 94d4d57d..2f55a08e 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -540,10 +540,14 @@ void Room::CreateAndroid(int robot_num, std::shared_ptr team) hum->Initialize(); AddToEntityHash(hum); AddToHumanHash(hum); - if (team) { - team->AddMember(hum); - } else { + if (GetMapModeMeta()->mapMode() != mt::kCircuitMatchMode) { MatchTeam(hum); + } else { + if (team) { + team->AddMember(hum); + } else { + MatchTeam(hum); + } } if (!hum->IsOb()) { IncAliveCount(); From d0ab84e1648c640cca402d5fa6ee4ac2f34fd5f0 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 14 Sep 2024 14:18:05 +0800 Subject: [PATCH 05/14] 1 --- server/gameserver/room.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 2f55a08e..3fe57284 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -601,10 +601,14 @@ Human* Room::CreateAndroidWithCustomMember(std::shared_ptr custom_ hum->Initialize(); AddToEntityHash(hum); AddToHumanHash(hum); - if (team) { - team->AddMember(hum); - } else { + if (GetMapModeMeta()->mapMode() != mt::kCircuitMatchMode) { MatchTeam(hum); + } else { + if (team) { + team->AddMember(hum); + } else { + MatchTeam(hum); + } } if (!hum->IsOb()) { IncAliveCount(); From c2a08526c70f10e7733779d2327205f1b6f5a10e Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 14 Sep 2024 15:21:25 +0800 Subject: [PATCH 06/14] 1 --- server/gameserver/mt/MapMode.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/server/gameserver/mt/MapMode.cc b/server/gameserver/mt/MapMode.cc index 963935f1..de6db06b 100644 --- a/server/gameserver/mt/MapMode.cc +++ b/server/gameserver/mt/MapMode.cc @@ -10,6 +10,11 @@ namespace mt void MapMode::Init1() { +#ifdef MYDEBUG + if (mapMode() == 201) { + mapMode_ = kCircuitMatchMode; + } +#endif } bool MapMode::IsOpen() const From 765e88b3c390b5c232ccb72c784fe8e79d167462 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 18 Sep 2024 11:11:46 +0800 Subject: [PATCH 07/14] 1 --- server/gameserver/room.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 3fe57284..1f38aacb 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -2091,6 +2091,9 @@ void Room::CombineTeam() void Room::FillTeam() { + if (GetMapModeMeta()->mapMode() == mt::kCircuitMatchMode) { + return; + } std::vector> free_team_list; TraverseTeams ( From 7b6951794615bb8e0034c5876f352bc20b11d9ef Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 18 Sep 2024 13:58:24 +0800 Subject: [PATCH 08/14] 1 --- server/gameserver/bornpoint.cc | 4 ++-- server/gameserver/bornpoint.h | 2 +- server/gameserver/room.cc | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/server/gameserver/bornpoint.cc b/server/gameserver/bornpoint.cc index caf27e8d..f6f17477 100644 --- a/server/gameserver/bornpoint.cc +++ b/server/gameserver/bornpoint.cc @@ -43,9 +43,9 @@ Position BornPoint::RandPoint(Room* room) const return pos; } -int BornPoint::GetNum() +int BornPoint::GetNum(Room* room) { - return 4; + return 1; } Position BornPoint::GetSrcPoint(Room* room) const diff --git a/server/gameserver/bornpoint.h b/server/gameserver/bornpoint.h index e74c36e5..3e4025f8 100644 --- a/server/gameserver/bornpoint.h +++ b/server/gameserver/bornpoint.h @@ -13,7 +13,7 @@ struct BornPoint std::shared_ptr wo_meta; int side = 0; - int GetNum(); + int GetNum(Room* room); Position RandPoint(Room* room) const; Position GetSrcPoint(Room* room) const; Position NewRandPoint(Room* room, int min_radius, int max_radius) const; diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 1f38aacb..b10e4374 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -2486,7 +2486,7 @@ std::shared_ptr Room::AllocBornPoint(Human* hum) for (auto& pair : born_point_hash_) { if (pair.second != hum->GetBornPoint()) { if (pair.second->player_num + pair.second->android_num < - pair.second->GetNum()) { + pair.second->GetNum(this)) { point_list.push_back(pair.second); free_point_list.push_back(pair.second);; } @@ -2516,7 +2516,7 @@ std::shared_ptr Room::AllocBornPoint(Human* hum) std::vector> free_point_list; for (auto& pair : born_point_hash_) { if (pair.second->player_num + pair.second->android_num < - pair.second->GetNum()) { + pair.second->GetNum(this)) { free_point_list.push_back(pair.second); } } From f6710fac16753a0ada9b3a6d5d9d74d4f1987c09 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 18 Sep 2024 17:07:07 +0800 Subject: [PATCH 09/14] 1 --- server/gameserver/bornpoint.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/server/gameserver/bornpoint.cc b/server/gameserver/bornpoint.cc index f6f17477..e028e296 100644 --- a/server/gameserver/bornpoint.cc +++ b/server/gameserver/bornpoint.cc @@ -10,6 +10,7 @@ #include "tracemgr.h" #include "mt/Map.h" +#include "mt/MapMode.h" Position BornPoint::RandPoint(Room* room) const { @@ -45,7 +46,11 @@ Position BornPoint::RandPoint(Room* room) const int BornPoint::GetNum(Room* room) { - return 1; + if (room->GetMapModeMeta()->mapMode() == mt::kCircuitMatchMode) { + return 1; + } else { + return 4; + } } Position BornPoint::GetSrcPoint(Room* room) const From b17d8dde24d60159f76cc5d0e933e1862ae16821 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 19 Sep 2024 17:15:27 +0800 Subject: [PATCH 10/14] 1 --- server/tools/protobuild/cs_proto.proto | 3 +++ 1 file changed, 3 insertions(+) diff --git a/server/tools/protobuild/cs_proto.proto b/server/tools/protobuild/cs_proto.proto index 62a90b2f..06984fb0 100755 --- a/server/tools/protobuild/cs_proto.proto +++ b/server/tools/protobuild/cs_proto.proto @@ -1289,6 +1289,9 @@ message MFSettlementMember optional int32 old_score = 18; //老段位积分 optional int32 new_score = 19; //新段位积分 + optional int32 old_circuit_score = 31; //老循环赛积分 + optional int32 new_circuit_score = 32; //新循环赛积分 + //本次成绩 optional int32 pvp_kill = 101; //pvp击杀敌人数 optional int32 pvp_damage = 102; //pvp伤害总量 From 98c5e623848e1442e907cef508a36c6509aa6fd2 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 19 Sep 2024 19:10:50 +0800 Subject: [PATCH 11/14] 1 --- server/gameserver/mt/Param.cc | 12 ++++++++++++ server/gameserver/mt/Param.h | 5 +++++ 2 files changed, 17 insertions(+) diff --git a/server/gameserver/mt/Param.cc b/server/gameserver/mt/Param.cc index 8521a772..3fbc0499 100644 --- a/server/gameserver/mt/Param.cc +++ b/server/gameserver/mt/Param.cc @@ -92,6 +92,14 @@ namespace mt s_.performance_score_weight_BR.push_back(a8::XValue(str).GetDouble()); } } + { + std::string tmp_str = GetStringParam("performance_score_weight_circuit", ""); + std::vector strings; + a8::Split(tmp_str, strings, '|'); + for (auto& str : strings) { + s_.performance_score_weight_circuit.push_back(a8::XValue(str).GetDouble()); + } + } { std::string tmp_str = GetStringParam("block_effect_range", ""); std::vector strings; @@ -132,6 +140,10 @@ namespace mt s_.battle_hint_view_range = GetIntParam("battle_hint_view_range", s_.battle_hint_view_range); s_.battle_hint_broadcast_range = GetIntParam("battle_hint_broadcast_range", s_.battle_hint_broadcast_range + 800); + s_.circuit_score_mult_constant = GetIntParam("circuit_score_mult_constant", s_.circuit_score_mult_constant); + s_.circuit_score_shift_constant = GetIntParam("circuit_score_shift_constant", s_.circuit_score_shift_constant); + s_.circuit_battle_cooldown = GetIntParam("circuit_battle_cooldown", s_.circuit_battle_cooldown); + s_.circuit_rank_score_min = GetIntParam("circuit_rank_score_min", s_.circuit_rank_score_min); #ifdef MYDEBUG s_.match_team_time = 6; s_.match_robot_time = 5; diff --git a/server/gameserver/mt/Param.h b/server/gameserver/mt/Param.h index 3356abd0..2802fd80 100644 --- a/server/gameserver/mt/Param.h +++ b/server/gameserver/mt/Param.h @@ -34,6 +34,11 @@ namespace mt int pickup_weapon_replace_type = 0; std::vector performance_score_weight_4V4; std::vector performance_score_weight_BR; + std::vector performance_score_weight_circuit; + float circuit_score_mult_constant = 0.0f; + float circuit_score_shift_constant = 0.0f; + float circuit_battle_cooldown = 0.0f; + float circuit_rank_score_min = 0.0f; int downed_relive_recover_hp = 0; From 39a4603107540c672b9e85924fb4951455e27b14 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 19 Sep 2024 19:23:53 +0800 Subject: [PATCH 12/14] 1 --- server/gameserver/room.cc | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index b10e4374..5db1d5e3 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -4287,12 +4287,22 @@ void Room::CalcMvp() } battle_score = std::round((kill_sco + assist_sco + damage_sco + recover_sco + level_sco) * 100.0f) / 100.0f; } else { - if (mt::Param::s().performance_score_weight_BR.size() >= 5) { - kill_sco *= mt::Param::s().performance_score_weight_BR.at(0); - assist_sco *= mt::Param::s().performance_score_weight_BR.at(1); - damage_sco *= mt::Param::s().performance_score_weight_BR.at(2); - recover_sco *= mt::Param::s().performance_score_weight_BR.at(3); - alive_sco *= mt::Param::s().performance_score_weight_BR.at(4); + if (GetMapModeMeta()->mapMode() == mt::kCircuitMatchMode) { + if (mt::Param::s().performance_score_weight_circuit.size() >= 5) { + kill_sco *= mt::Param::s().performance_score_weight_circuit.at(0); + assist_sco *= mt::Param::s().performance_score_weight_circuit.at(1); + damage_sco *= mt::Param::s().performance_score_weight_circuit.at(2); + recover_sco *= mt::Param::s().performance_score_weight_circuit.at(3); + alive_sco *= mt::Param::s().performance_score_weight_circuit.at(4); + } + } else { + if (mt::Param::s().performance_score_weight_BR.size() >= 5) { + kill_sco *= mt::Param::s().performance_score_weight_BR.at(0); + assist_sco *= mt::Param::s().performance_score_weight_BR.at(1); + damage_sco *= mt::Param::s().performance_score_weight_BR.at(2); + recover_sco *= mt::Param::s().performance_score_weight_BR.at(3); + alive_sco *= mt::Param::s().performance_score_weight_BR.at(4); + } } battle_score = std::round((kill_sco + assist_sco + damage_sco + recover_sco + alive_sco) * 100.0f) / 100.0f; } From d5dbf1aca6924b93e05a36916b1cf52b4865b6f3 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 19 Sep 2024 19:39:54 +0800 Subject: [PATCH 13/14] 1 --- server/gameserver/mt/MetaMgr.cc | 2 ++ server/gameserver/mtb/mtb.all.cc | 16 ++++++++++++++++ server/tools/protobuild/mt.proto | 10 ++++++++++ 3 files changed, 28 insertions(+) diff --git a/server/gameserver/mt/MetaMgr.cc b/server/gameserver/mt/MetaMgr.cc index fed2c500..2fdd8b36 100644 --- a/server/gameserver/mt/MetaMgr.cc +++ b/server/gameserver/mt/MetaMgr.cc @@ -48,6 +48,7 @@ #include "mt/MobaRoom.h" #include "mt/InGameVoice.h" #include "mt/MapMode.h" +#include "mt/CircuitTime.h" #include "app.h" @@ -123,6 +124,7 @@ namespace mt RegMetaTable(res_path_); RegMetaTable(res_path_); RegMetaTable(res_path_); + RegMetaTable(res_path_); } void MetaMgr::Load() diff --git a/server/gameserver/mtb/mtb.all.cc b/server/gameserver/mtb/mtb.all.cc index ff2096cf..634ffe7b 100644 --- a/server/gameserver/mtb/mtb.all.cc +++ b/server/gameserver/mtb/mtb.all.cc @@ -49,6 +49,7 @@ #include "mtb/Distribution.h" #include "mtb/LootConfig.h" #include "mtb/BattleHeroGrow.h" +#include "mtb/CircuitTime.h" namespace mtb { @@ -1041,4 +1042,19 @@ namespace mtb return meta_class; } + std::shared_ptr CircuitTime::GetClass() const + { + std::shared_ptr meta_class = nullptr; + if (!meta_class) { + meta_class = std::make_shared("CircuitTime", 6, 0); + meta_class->SetSimpleField(0, "id", a8::reflect::ET_INT32, my_offsetof2(CircuitTime, id_)); + meta_class->SetSimpleField(1, "circuit_season", a8::reflect::ET_INT32, my_offsetof2(CircuitTime, circuit_season_)); + meta_class->SetSimpleField(2, "circuit_time_type", a8::reflect::ET_INT32, my_offsetof2(CircuitTime, circuit_time_type_)); + meta_class->SetSimpleField(3, "start_time", a8::reflect::ET_STRING, my_offsetof2(CircuitTime, start_time_)); + meta_class->SetSimpleField(4, "end_time", a8::reflect::ET_STRING, my_offsetof2(CircuitTime, end_time_)); + meta_class->SetSimpleField(5, "cec_pool", a8::reflect::ET_INT32, my_offsetof2(CircuitTime, cec_pool_)); + } + return meta_class; + } + } diff --git a/server/tools/protobuild/mt.proto b/server/tools/protobuild/mt.proto index 66241f28..cbc106f2 100755 --- a/server/tools/protobuild/mt.proto +++ b/server/tools/protobuild/mt.proto @@ -770,3 +770,13 @@ message BattleHeroGrow optional int32 currentSkillEffect = 10; optional string currentSkillDesc = 11; } + +message CircuitTime +{ + optional int32 id = 1; + optional int32 circuit_season = 2; + optional int32 circuit_time_type = 3; + optional string start_time = 4; + optional string end_time = 5; + optional int32 cec_pool = 6; +} From 0312ec3d9375053d9d6d392a7df70370a208123f Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 19 Sep 2024 19:59:25 +0800 Subject: [PATCH 14/14] 1 --- server/gameserver/mt/CircuitTime.cc | 14 ++++++++++ server/gameserver/mt/CircuitTime.h | 21 +++++++++++++++ server/gameserver/mtb/CircuitTime.h | 40 +++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+) create mode 100644 server/gameserver/mt/CircuitTime.cc create mode 100644 server/gameserver/mt/CircuitTime.h create mode 100644 server/gameserver/mtb/CircuitTime.h diff --git a/server/gameserver/mt/CircuitTime.cc b/server/gameserver/mt/CircuitTime.cc new file mode 100644 index 00000000..db85ccf4 --- /dev/null +++ b/server/gameserver/mt/CircuitTime.cc @@ -0,0 +1,14 @@ +#include "precompile.h" + +#include "mt/CircuitTime.h" + +IMPL_TABLE(mt::CircuitTime) + +namespace mt +{ + + void CircuitTime::Init1() + { + } + +} diff --git a/server/gameserver/mt/CircuitTime.h b/server/gameserver/mt/CircuitTime.h new file mode 100644 index 00000000..70e2e4da --- /dev/null +++ b/server/gameserver/mt/CircuitTime.h @@ -0,0 +1,21 @@ +#pragma once + +#include "mt/macro.h" +#include "mtb/CircuitTime.h" + +namespace mt +{ + + DECLARE_ID_TABLE(CircuitTime, mtb::CircuitTime, + "CircuitTime@CircuitTime.json", + "id") + public: + + void Init1(); + + private: + int _start_time = 0; + int _end_time = 0; + }; + +} diff --git a/server/gameserver/mtb/CircuitTime.h b/server/gameserver/mtb/CircuitTime.h new file mode 100644 index 00000000..df3e8160 --- /dev/null +++ b/server/gameserver/mtb/CircuitTime.h @@ -0,0 +1,40 @@ +#pragma once + +#include + +namespace mtb +{ + + class CircuitTime + { + public: + + std::shared_ptr GetClass() const; + int id() const { return id_; }; + int circuit_season() const { return circuit_season_; }; + int circuit_time_type() const { return circuit_time_type_; }; + const std::string start_time() const { return start_time_; }; + const std::string end_time() const { return end_time_; }; + int cec_pool() const { return cec_pool_; }; + + bool has_id() const { return __flags__.test(0);}; + bool has_circuit_season() const { return __flags__.test(1);}; + bool has_circuit_time_type() const { return __flags__.test(2);}; + bool has_start_time() const { return __flags__.test(3);}; + bool has_end_time() const { return __flags__.test(4);}; + bool has_cec_pool() const { return __flags__.test(5);}; + + protected: + + int id_ = 0; + int circuit_season_ = 0; + int circuit_time_type_ = 0; + std::string start_time_; + std::string end_time_; + int cec_pool_ = 0; + +public: + std::bitset<6> __flags__; + }; + +};