From 43793fdd3cf617d08700d0fb08fd6443b1e95cda Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 21 Aug 2024 17:25:53 +0800 Subject: [PATCH 1/7] 1 --- server/gameserver/pbutils.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/server/gameserver/pbutils.cc b/server/gameserver/pbutils.cc index 17c76a41..afd85fb7 100644 --- a/server/gameserver/pbutils.cc +++ b/server/gameserver/pbutils.cc @@ -1133,7 +1133,7 @@ void Human::FillSMGameOver(cs::SMGameOver& msg) room->GetMobaTeamB()->FillMFSettlementNew(p.get()); *msg.mutable_common_settlement()->add_team_list() = *p; } else { - room->GetMobaTeamB()->FillMFSettlementNew(p.get()); + room->GetMobaTeamA()->FillMFSettlementNew(p.get()); *msg.mutable_common_settlement()->add_team_list() = *p; } } @@ -1557,7 +1557,7 @@ void Human::SendGameOver() } else { SendNotifyMsg(msg); } -#ifdef MYDEBUG1 +#ifdef MYDEBUG if (IsPlayer()) { a8::XPrintf("SMGameOver:%s\n", {f8::PbToJson(&msg)}); } @@ -1584,7 +1584,7 @@ void Human::SendGameOver() } else { SendNotifyMsg(msg); } -#ifdef MYDEBUG1 +#ifdef MYDEBUG if (IsPlayer()) { a8::XPrintf("SMGameOver:%s\n", {f8::PbToJson(&msg)}); } From f1aae7a733c3754923fc1170d20c0e2a062cf0d1 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 21 Aug 2024 19:50:38 +0800 Subject: [PATCH 2/7] 1 --- server/gameserver/mt/Param.cc | 16 +++++++++++ server/gameserver/mt/Param.h | 2 ++ server/gameserver/room.cc | 53 +++++++++++++++++++++++++++++++---- 3 files changed, 65 insertions(+), 6 deletions(-) diff --git a/server/gameserver/mt/Param.cc b/server/gameserver/mt/Param.cc index 66560606..2fa9b34b 100644 --- a/server/gameserver/mt/Param.cc +++ b/server/gameserver/mt/Param.cc @@ -76,6 +76,22 @@ namespace mt s_.crit_effect_range.push_back(a8::XValue(str).GetDouble()); } } + { + std::string tmp_str = GetStringParam("performance_score_weight_4V4", ""); + std::vector strings; + a8::Split(tmp_str, strings, '|'); + for (auto& str : strings) { + s_.performance_score_weight_4V4.push_back(a8::XValue(str).GetDouble()); + } + } + { + std::string tmp_str = GetStringParam("performance_score_weight_BR", ""); + std::vector strings; + a8::Split(tmp_str, strings, '|'); + for (auto& str : strings) { + s_.performance_score_weight_BR.push_back(a8::XValue(str).GetDouble()); + } + } { std::string tmp_str = GetStringParam("block_effect_range", ""); std::vector strings; diff --git a/server/gameserver/mt/Param.h b/server/gameserver/mt/Param.h index 1191859e..164f9160 100644 --- a/server/gameserver/mt/Param.h +++ b/server/gameserver/mt/Param.h @@ -32,6 +32,8 @@ namespace mt float max_mount_horse_distance = 100.0f; int early_parachute_jump = 0; int pickup_weapon_replace_type = 0; + std::vector performance_score_weight_4V4; + std::vector performance_score_weight_BR; int downed_relive_recover_hp = 0; diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index a65d342a..8130395f 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -4172,12 +4172,21 @@ void Room::CalcMvp() [this, &max_kill, &max_assist, &max_damage, &max_recover, &max_level, &max_alive] (Human* hum) mutable -> bool { + #if 1 + max_kill = std::max(max_kill, (float)hum->stats->kills); + max_assist = std::max(max_assist, (float)hum->stats->assist); + max_damage = std::max(max_damage, (float)hum->stats->damage_amount_out); + max_recover = std::max(max_recover, (float)hum->stats->heal_amount); + max_level = std::max(max_level, (float)hum->GetHeroLevel()); + max_alive = std::max(max_alive, (float)hum->stats->alive_time / 1000); + #else max_kill += hum->stats->kills; max_assist += hum->stats->assist; max_damage += hum->stats->damage_amount_out; max_recover += hum->stats->heal_amount; max_level += hum->GetHeroLevel(); max_alive += hum->stats->alive_time / 1000; + #endif return true; }); @@ -4193,46 +4202,78 @@ void Room::CalcMvp() kill_sco = (param1 - param0) / (max_kill - 0) * (kill - 0) + param0; } } - float assist_sco = 0.0f; + float assist_sco = param0; { if (max_assist > 0) { float assist = hum->stats->assist; assist_sco = (param1 - param0) / (max_assist - 0) * (assist - 0) + param0; } } - float damage_sco = 0.0f; + float damage_sco = param0; { if (max_damage > 0) { float damage = hum->stats->damage_amount_out; damage_sco = (param1 - param0) / (max_damage - 0) * (damage - 0) + param0; } } - float recover_sco = 0.0f; + float recover_sco = param0; { if (max_recover > 0) { float recover = hum->stats->heal_amount; recover_sco = (param1 - param0) / (max_recover - 0) * (recover - 0) + param0; } } - float level_sco = 0.0f; + float level_sco = param0; { if (max_level > 1.00000) { float level = hum->GetHeroLevel(); level_sco = (param1 - param0) / (max_level - 0) * (level - 0) + param0; } } - float alive_sco = 0.0f; + float alive_sco = param0; { if (max_alive > 0) { float alive = hum->stats->alive_time / 1000; alive_sco = (param1 - param0) / (max_alive - 0) * (alive - 0) + param0; } } +#ifdef MYDEBUG + if (hum->IsPlayer()) { + a8::XPrintf("kill_sco:%f assist_sco:%f damage_sco:%f recover_sco:%f alive_sco:%f" + "assist:%f max_assist:%f damage:%f max_damage:%f recover:%f max_recover:%f\n", + { + kill_sco, + assist_sco, + damage_sco, + recover_sco, + alive_sco, + hum->stats->assist, + max_assist, + hum->stats->damage_amount_out, + max_damage, + hum->stats->heal_amount, + max_recover, + }); + } +#endif float battle_score = 0.0f; if (IsMobaModeRoom()) { + if (mt::Param::s().performance_score_weight_4V4.size() >= 5) { + kill_sco *= mt::Param::s().performance_score_weight_4V4.at(0); + assist_sco *= mt::Param::s().performance_score_weight_4V4.at(1); + damage_sco *= mt::Param::s().performance_score_weight_4V4.at(2); + recover_sco *= mt::Param::s().performance_score_weight_4V4.at(3); + level_sco *= mt::Param::s().performance_score_weight_4V4.at(4); + } 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); + } battle_score = std::round((kill_sco + assist_sco + damage_sco + recover_sco + alive_sco) * 100.0f) / 100.0f; } hum->stats->battle_score = battle_score; From 332f84648b75983118d30399f6be3f7f9a4bc46a Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 21 Aug 2024 21:53:50 +0800 Subject: [PATCH 3/7] 1 --- server/gameserver/room.cc | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 8130395f..dca4ef34 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -4239,8 +4239,9 @@ void Room::CalcMvp() } #ifdef MYDEBUG if (hum->IsPlayer()) { - a8::XPrintf("kill_sco:%f assist_sco:%f damage_sco:%f recover_sco:%f alive_sco:%f" - "assist:%f max_assist:%f damage:%f max_damage:%f recover:%f max_recover:%f\n", + a8::XPrintf("kill_sco:%f assist_sco:%f damage_sco:%f recover_sco:%f alive_sco:%f " + "assist:%f max_assist:%f damage:%f max_damage:%f recover:%f max_recover:%f " + "level:%d max_level:%d""\n", { kill_sco, assist_sco, @@ -4253,6 +4254,8 @@ void Room::CalcMvp() max_damage, hum->stats->heal_amount, max_recover, + hum->GetHeroLevel(), + max_level }); } #endif @@ -4276,6 +4279,14 @@ void Room::CalcMvp() } battle_score = std::round((kill_sco + assist_sco + damage_sco + recover_sco + alive_sco) * 100.0f) / 100.0f; } +#ifdef MYDEBUG + if (hum->IsPlayer()) { + a8::XPrintf("battle_score:%f\n", + { + battle_score + }); + } +#endif hum->stats->battle_score = battle_score; return true; }); From ed541307fb7faac4ece03ff852462afad9881fe9 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 21 Aug 2024 22:23:05 +0800 Subject: [PATCH 4/7] 1 --- server/robotserver/android_agent.cc | 37 ++++++++++++++++++++++++----- server/robotserver/player.h | 3 +++ 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/server/robotserver/android_agent.cc b/server/robotserver/android_agent.cc index 305c3ccc..52c1c083 100644 --- a/server/robotserver/android_agent.cc +++ b/server/robotserver/android_agent.cc @@ -72,9 +72,6 @@ behaviac::EBTStatus AndroidAgent::CoLogin() auto url_params = a8::MutableXObject::CreateObject(); url_params->SetVal("c", "Login"); url_params->SetVal("a", "auth2"); - //url_params->SetVal("gameid", 2006); - //url_params->SetVal("channel", 6513); - //url_params->SetVal("openid", owner_->GetIdx()); auto post_body = a8::MutableXObject::CreateObject(); post_body->SetVal("channel", 2); post_body->SetVal("data", owner_->GetIdx()); @@ -100,14 +97,42 @@ behaviac::EBTStatus AndroidAgent::CoLogin() } HttpProxy::Instance()->HttpGet ( - [context] (bool ok, a8::XObject* rsp_obj, f8::HttpContext* ctx) + [context, hum] (bool ok, a8::XObject* rsp_obj, f8::HttpContext* ctx) { #if 0 a8::XPrintf("data:%s\n", {rsp_obj->ToJsonStr()}); #endif if (ok) { - ++Perf::Instance()->enter_ok_times; - context->login_ok = true; + long long hero_uniid = rsp_obj->Get("hero_unid", ""); + hum->SetHeroUniId(hero_uniid); + if (hum->GetHeroUniId() <= 0) { + std::string account_id = rsp_obj->At("account_id")->AsXValue().GetString(); + std::string session_id = rsp_obj->At("session_id")->AsXValue().GetString(); + auto url_params = a8::MutableXObject::CreateObject(); + url_params->SetVal("c", "User"); + url_params->SetVal("a", "selectFreeItemS"); + url_params->SetVal("account_id", account_id); + url_params->SetVal("session_id", session_id); + url_params->SetVal("itemId", 30100); + HttpProxy::Instance()->HttpGet + ( + [context, hum] (bool ok, a8::XObject* rsp_obj, f8::HttpContext* ctx) + { + if (ok) { + ++Perf::Instance()->enter_ok_times; + context->login_ok = true; + } else { + context->login_ok = false; + ++Perf::Instance()->enter_fail_times; + } + }, + "https://game2006sapi-test.kingsome.cn/webapp/index.php", + url_params + ); + } else { + ++Perf::Instance()->enter_ok_times; + context->login_ok = true; + } } else { context->login_ok = false; ++Perf::Instance()->enter_fail_times; diff --git a/server/robotserver/player.h b/server/robotserver/player.h index eab6897f..2491348c 100644 --- a/server/robotserver/player.h +++ b/server/robotserver/player.h @@ -32,6 +32,8 @@ public: const std::string& GetAccountId() { return account_id_; } const std::string& GetSessionId() { return session_id_; } void SetSessionId(const std::string& session_id) { session_id_ = session_id; } + void SetHeroUniId(long long hero_uniid) { hero_uniid_ = hero_uniid; } + long long GetHeroUniId() { return hero_uniid_; } auto GetWebSocket() { return web_socket_; } int GetIdx() { return idx_; } void SetLoginSucess(); @@ -76,6 +78,7 @@ private: std::string session_id_; std::string remote_ip_; int remote_port_ = 0; + long long hero_uniid_ = 0; bool is_login_success_ = false; bool net_connected_ = false; From 25dfbeb0ad6f7a3b0d18893d721caf0fe623a1e8 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 21 Aug 2024 22:25:16 +0800 Subject: [PATCH 5/7] 1 --- server/robotserver/playermgr.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/robotserver/playermgr.cc b/server/robotserver/playermgr.cc index d8ddd354..a888597a 100644 --- a/server/robotserver/playermgr.cc +++ b/server/robotserver/playermgr.cc @@ -26,7 +26,7 @@ void PlayerMgr::Init() { if (et == a8::TIMER_EXEC_EVENT) { int idx = account_id_hash_.size() + 1; - std::string account_id = a8::Format("6513_2006_%d", {idx}); + std::string account_id = a8::Format("2_2006_%d", {idx}); auto hum = std::make_shared(); hum->Init(idx, account_id); account_id_hash_[hum->GetAccountId()] = hum; From 44dd7d03b7348c2b9c83c8c970d63acd4623fef5 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 21 Aug 2024 22:46:41 +0800 Subject: [PATCH 6/7] 1 --- server/robotserver/android_agent.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/server/robotserver/android_agent.cc b/server/robotserver/android_agent.cc index 52c1c083..7f1bfddf 100644 --- a/server/robotserver/android_agent.cc +++ b/server/robotserver/android_agent.cc @@ -97,17 +97,17 @@ behaviac::EBTStatus AndroidAgent::CoLogin() } HttpProxy::Instance()->HttpGet ( - [context, hum] (bool ok, a8::XObject* rsp_obj, f8::HttpContext* ctx) + [context, hum, account_id, session_id] + (bool ok, a8::XObject* rsp_obj, f8::HttpContext* ctx) { #if 0 a8::XPrintf("data:%s\n", {rsp_obj->ToJsonStr()}); #endif if (ok) { - long long hero_uniid = rsp_obj->Get("hero_unid", ""); + auto info = rsp_obj->At("info"); + long long hero_uniid = info->Get("hero_uniid", ""); hum->SetHeroUniId(hero_uniid); if (hum->GetHeroUniId() <= 0) { - std::string account_id = rsp_obj->At("account_id")->AsXValue().GetString(); - std::string session_id = rsp_obj->At("session_id")->AsXValue().GetString(); auto url_params = a8::MutableXObject::CreateObject(); url_params->SetVal("c", "User"); url_params->SetVal("a", "selectFreeItemS"); @@ -126,7 +126,7 @@ behaviac::EBTStatus AndroidAgent::CoLogin() ++Perf::Instance()->enter_fail_times; } }, - "https://game2006sapi-test.kingsome.cn/webapp/index.php", + "https://game2006sapi-test.kingsome.cn/sapi/webapp/index.php", url_params ); } else { @@ -230,7 +230,7 @@ behaviac::EBTStatus AndroidAgent::CoJoin() msg.set_account_id(owner_->GetAccountId()); msg.set_session_id(owner_->GetSessionId()); msg.set_proto_version(cs::ProtoVersion); - std::string payload_data = "ihCQQdNzoYFC^6q4ohsao39br%Ui!C9u2d^qvzek5hOB$3q1:|"; + std::string payload_data = "ihCQQdNzoYFC^6q4ohsao39br%Ui!C9u2d^qvzek5hOB$3q1:normal_room|"; { auto xobj = a8::MutableXObject::CreateObject(); auto team_list = a8::MutableXObject::CreateArray(); From 9fa163e0281186eb8eec784a8493c6a9f7d87e48 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 22 Aug 2024 10:02:23 +0800 Subject: [PATCH 7/7] 1 --- server/robotserver/android_agent.cc | 9 +++++++++ server/robotserver/playermgr.cc | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/server/robotserver/android_agent.cc b/server/robotserver/android_agent.cc index 7f1bfddf..12401368 100644 --- a/server/robotserver/android_agent.cc +++ b/server/robotserver/android_agent.cc @@ -119,6 +119,9 @@ behaviac::EBTStatus AndroidAgent::CoLogin() [context, hum] (bool ok, a8::XObject* rsp_obj, f8::HttpContext* ctx) { if (ok) { + auto info = rsp_obj->At("property_chg")->At("user_info"); + long long hero_uniid = info->Get("hero_uniid", ""); + hum->SetHeroUniId(hero_uniid); ++Perf::Instance()->enter_ok_times; context->login_ok = true; } else { @@ -240,6 +243,10 @@ behaviac::EBTStatus AndroidAgent::CoJoin() auto member = a8::MutableXObject::CreateObject(); member->SetVal("account_id", owner_->GetAccountId()); member->SetVal("session_id", owner_->GetSessionId()); + member->SetVal("hero_uniid", owner_->GetHeroUniId()); + if (owner_->GetHeroUniId() <= 0) { + A8_ABORT(); + } member_list->Push(*member.get()); team->SetVal("team_uuid", f8::App::Instance()->NewGlobalUuid()); @@ -247,6 +254,8 @@ behaviac::EBTStatus AndroidAgent::CoJoin() team_list->Push(*team.get()); } + xobj->SetVal("room_uuid", f8::App::Instance()->NewGlobalUuid()); + xobj->SetVal("start_time", f8::App::Instance()->GetNowTime()); xobj->SetVal("team_list", *team_list.get()); payload_data += xobj->ToJsonStr(); } diff --git a/server/robotserver/playermgr.cc b/server/robotserver/playermgr.cc index a888597a..f22e6757 100644 --- a/server/robotserver/playermgr.cc +++ b/server/robotserver/playermgr.cc @@ -32,7 +32,7 @@ void PlayerMgr::Init() account_id_hash_[hum->GetAccountId()] = hum; socket_id_hash_[hum->GetSocketId()] = hum; ++count; - if (count >= 1) { + if (count >= 3) { f8::Timer::Instance()->DeleteCurrentTimer(); } }