From 49aedf5f6244ae3d1f7a4441810b14208e7c712c Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 13 Jul 2020 15:59:45 +0800 Subject: [PATCH 1/7] 1 --- server/gameserver/roommgr.cc | 42 ++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/server/gameserver/roommgr.cc b/server/gameserver/roommgr.cc index 34b6d04..37da8e2 100644 --- a/server/gameserver/roommgr.cc +++ b/server/gameserver/roommgr.cc @@ -50,6 +50,24 @@ static RoomType_e GetHumanRoomType(const cs::CMJoin& msg, int& game_times) return RT_MidBrid; } } + if (!msg.team_uuid().empty()) { + bool has_mid_brid = false; + bool has_old_brid1 = false; + for (auto& team_member : msg.team_members()) { + if (team_member.game_times() >= 1 && team_member.game_times() <= 1) { + has_mid_brid = true; + } + if (team_member.game_times() >= 2 && team_member.game_times() <= 2) { + has_old_brid1 = true; + } + } + if (has_mid_brid) { + return RT_MidBrid; + } + if (has_old_brid1) { + return RT_OldBrid1; + } + } if (game_times <= 0) { return RT_NewBrid; @@ -58,13 +76,11 @@ static RoomType_e GetHumanRoomType(const cs::CMJoin& msg, int& game_times) } else { switch (game_times) { case 2: - case 3: - case 4: { if (msg.team_uuid().empty()) { return RT_NewBrid; } else { - return RT_MidBrid; + return RT_OldBrid1; } } break; @@ -74,21 +90,9 @@ static RoomType_e GetHumanRoomType(const cs::CMJoin& msg, int& game_times) break; } } - if (!msg.team_uuid().empty()) { - bool has_mid_brid = false; - for (auto& team_member : msg.team_members()) { - if (team_member.game_times() >= 1 && team_member.game_times() <= 4) { - has_mid_brid = true; - break; - } - } - if (has_mid_brid) { - return RT_MidBrid; - } - } +#if 0 time_t register_time = f8::ExtractRegisterTimeFromSessionId(msg.session_id()); -#if 1 if (!msg.team_uuid().empty()) { bool has_new_brid = false; for (auto& team_member : msg.team_members()) { @@ -113,12 +117,8 @@ static RoomType_e GetHumanRoomType(const cs::CMJoin& msg, int& game_times) #else if (rank >= 0 && rank <= 10) { return RT_OldBrid1; - } else if (rank >= 11 && rank <= 17) { - return RT_OldBrid2; - } else if (rank >= 18) { - return RT_OldBrid3; } else { - return RT_OldBrid1; + return RT_OldBrid2; } #endif } From f1b6c3ada15c275b2829c2bf017672f1e07dbe3b Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 13 Jul 2020 16:05:08 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=96=B0=E5=8C=B9?= =?UTF-8?q?=E9=85=8D=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/room.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 0f1d4a1..c1934a6 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -2853,12 +2853,14 @@ void Room::ShuaLastGas() bool Room::IsMiniRoom() { + #if 0 if (GetRoomType() == RT_NewBrid || GetRoomType() == RT_MidBrid) { if (a8::BetweenDays(Global::g_nowtime, creator_register_time_) > 0) { return false; } } + #endif return GetRoomType() == RT_NewBrid || From 2147be22c8fe11d448dd4e42ac47df5c27acf3fc Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 13 Jul 2020 16:42:34 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E4=B8=AD=E7=BA=A7=E5=9C=BA=E5=80=92?= =?UTF-8?q?=E6=95=B0=E7=AC=AC=E4=BA=8C=E5=9C=88=E5=88=B7=E6=89=80=E6=9C=89?= =?UTF-8?q?=E6=9C=BA=E5=99=A8=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/room.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index c1934a6..997c994 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -973,7 +973,7 @@ void Room::UpdateGasMoving() } gas_data_.rad_old = gas_data_.old_area_meta->i->rad(); gas_data_.rad_new = gas_data_.new_area_meta->i->rad(); - if (!MetaMgr::Instance()->GetSafeArea(gas_data_.new_area_meta->i->id() + 1)) { + if (!MetaMgr::Instance()->GetSafeArea(gas_data_.new_area_meta->i->id() + 2)) { #if 1 //ζœ€εŽδΈ€εœˆ if (room_type_ == RT_MidBrid) { From 93bceb60957904b6cc4354e7f0fa7b94b60e264b Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 13 Jul 2020 16:52:32 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B8=B8=E6=88=8F?= =?UTF-8?q?=E7=BB=93=E7=AE=97=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/gamelog.cc | 2 ++ server/gameserver/human.h | 1 + server/gameserver/player.cc | 1 + 3 files changed, 4 insertions(+) diff --git a/server/gameserver/gamelog.cc b/server/gameserver/gamelog.cc index 04993b3..5b313a6 100644 --- a/server/gameserver/gamelog.cc +++ b/server/gameserver/gamelog.cc @@ -82,6 +82,8 @@ void GameLog::GameEnd(Player* hum) } else { prop->SetVal("alive_time", hum->dead_frameno * 1000.0f / SERVER_FRAME_RATE); } + prop->SetVal("gameover_pass_frame_num", hum->room->GetFrameNo() - hum->last_cmmove_frameno); + prop->SetVal("socket_handle", hum->socket_handle); f8::TGLog::Instance()->AddTrackLog(game_id, hum->account_id, hum->ip_saddr, logclass1, logclass2, prop); diff --git a/server/gameserver/human.h b/server/gameserver/human.h index 6f22c8a..fcbadca 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -59,6 +59,7 @@ class Human : public MoveableEntity long long user_value1 = 0; long long user_value2 = 0; long long user_value3 = 0; + long long last_cmmove_frameno = 0; bool downed = false; bool disconnected = false; int anim_type = 0; diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index a21dff7..dcd697f 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -1017,6 +1017,7 @@ void Player::_CMMove(f8::MsgHdr& hdr, const cs::CMMove& msg) } else { use_skill = false; } + last_cmmove_frameno = room->GetFrameNo(); } void Player::UpdateDropWeapon() From 109aefcc3147e4d7c715fa6ad660eb8ab89da4dd Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 13 Jul 2020 19:27:21 +0800 Subject: [PATCH 5/7] 1 --- server/gameserver/metamgr.cc | 4 +++- server/gameserver/metamgr.h | 4 +++- server/gameserver/room.cc | 8 +++++++- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/server/gameserver/metamgr.cc b/server/gameserver/metamgr.cc index fb84daf..fb94815 100755 --- a/server/gameserver/metamgr.cc +++ b/server/gameserver/metamgr.cc @@ -135,7 +135,9 @@ public: { MetaMgr::Instance()->gas_inactive_time = MetaMgr::Instance()->GetSysParamAsInt("gas_inactive_time"); - MetaMgr::Instance()->newbie_gas_inactive_time = MetaMgr::Instance()->GetSysParamAsInt("newbie_gas_inactive_time", 10); + MetaMgr::Instance()->newbie_gas_inactive_time = MetaMgr::Instance()->GetSysParamAsInt("newbie_gas_inactive_time", 5); + MetaMgr::Instance()->midbrid_gas_inactive_time = MetaMgr::Instance()->GetSysParamAsInt("midbrid_gas_inactive_time", 15); + MetaMgr::Instance()->common_gas_inactive_time = MetaMgr::Instance()->GetSysParamAsInt("common_gas_inactive_time", 15); MetaMgr::Instance()->newbie_born_point = MetaMgr::Instance()->GetSysParamAsString("newbie_born_point"); { std::vector strings; diff --git a/server/gameserver/metamgr.h b/server/gameserver/metamgr.h index b7c20cc..da923ec 100755 --- a/server/gameserver/metamgr.h +++ b/server/gameserver/metamgr.h @@ -47,7 +47,9 @@ class MetaMgr : public a8::Singleton MetaData::Robot* RandRobot(std::set& refreshed_robot_set); int gas_inactive_time = 10; - int newbie_gas_inactive_time = 10; + int newbie_gas_inactive_time = 5; + int midbrid_gas_inactive_time = 15; + int common_gas_inactive_time = 15; int jump_time = 10; float K = 100.0f; float kill_param = 0.0f; diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 997c994..6af4152 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -1773,7 +1773,13 @@ ObstacleData* Room::GetPermanentObstacleData(int obstacle_uniid) long long Room::GetGasInactiveTime() { if (room_type_ == RT_NewBrid) { - return MetaMgr::Instance()->newbie_gas_inactive_time; + if (creator_game_times_ <= 0) { + return MetaMgr::Instance()->newbie_gas_inactive_time; + } else { + return MetaMgr::Instance()->common_gas_inactive_time; + } + } else if (room_type_ == RT_MidBrid) { + return MetaMgr::Instance()->midbrid_gas_inactive_time; } else { return MetaMgr::Instance()->gas_inactive_time; } From 95206e40a70f6cc5e47993fa7b567d195e27e889 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 13 Jul 2020 19:35:55 +0800 Subject: [PATCH 6/7] 1 --- server/gameserver/room.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 6af4152..ed321e1 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -224,6 +224,10 @@ void Room::ShuaAndroid() int refresh_time = a8::RandEx(MetaMgr::Instance()->refresh_robot_min_time, MetaMgr::Instance()->refresh_robot_max_time); if (robot_num > 0 && refresh_time > 0) { + if (IsMiniRoom()) { + robot_num /= 2; + robot_num = std::max(1, robot_num); + } CreateAndroid(robot_num); xtimer.AddDeadLineTimerAndAttach(SERVER_FRAME_RATE * refresh_time, a8::XParams() From 2299898b3cd2995167ad03cbee230fc1f2753956 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 13 Jul 2020 20:51:19 +0800 Subject: [PATCH 7/7] 1 --- server/gameserver/room.cc | 10 +++++++++- server/gameserver/roommgr.cc | 24 ++++++++++++++++++++++++ server/gameserver/roommgr.h | 3 +++ 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index ed321e1..2d23914 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -225,8 +225,12 @@ void Room::ShuaAndroid() MetaMgr::Instance()->refresh_robot_max_time); if (robot_num > 0 && refresh_time > 0) { if (IsMiniRoom()) { + #if 0 robot_num /= 2; robot_num = std::max(1, robot_num); + #endif + refresh_time /= 2; + refresh_time = std::max(2, refresh_time); } CreateAndroid(robot_num); xtimer.AddDeadLineTimerAndAttach(SERVER_FRAME_RATE * refresh_time, @@ -2401,7 +2405,11 @@ a8::Vec2 Room::GetDefaultBornPoint() void Room::AddPlayerPostProc(Player* hum) { if (room_type_ == RT_NewBrid) { - CreateAndroid(10 + rand() % 5); + if (creator_game_times_ <= 0) { + CreateAndroid(10 + rand() % 5); + } else { + CreateAndroid(2); + } xtimer.AddDeadLineTimerAndAttach(SERVER_FRAME_RATE * (1 + rand() % 3), a8::XParams() .SetSender(hum), diff --git a/server/gameserver/roommgr.cc b/server/gameserver/roommgr.cc index 37da8e2..2d453bf 100644 --- a/server/gameserver/roommgr.cc +++ b/server/gameserver/roommgr.cc @@ -47,10 +47,14 @@ static RoomType_e GetHumanRoomType(const cs::CMJoin& msg, int& game_times) if (msg.team_uuid().empty()) { return RT_NewBrid; } else { + RoomMgr::Instance()->AddProtectTeam(msg.team_uuid()); return RT_MidBrid; } } if (!msg.team_uuid().empty()) { + if (RoomMgr::Instance()->IsProtectTeam(msg.team_uuid())) { + return RT_MidBrid; + } bool has_mid_brid = false; bool has_old_brid1 = false; for (auto& team_member : msg.team_members()) { @@ -483,3 +487,23 @@ bool RoomMgr::IsGM(const cs::CMJoin& msg) } return false; } + +void RoomMgr::AddProtectTeam(const std::string& team_uuid) +{ + protect_team_hash_[team_uuid] = 1; + a8::Timer::Instance()->AddDeadLineTimer + ( + 1000 * 30, + a8::XParams() + .SetSender(team_uuid), + [] (const a8::XParams& param) + { + RoomMgr::Instance()->protect_team_hash_.erase(param.sender.GetString()); + } + ); +} + +bool RoomMgr::IsProtectTeam(const std::string& team_uuid) +{ + return protect_team_hash_.find(team_uuid) != protect_team_hash_.end(); +} diff --git a/server/gameserver/roommgr.h b/server/gameserver/roommgr.h index 311aa38..7f3a843 100644 --- a/server/gameserver/roommgr.h +++ b/server/gameserver/roommgr.h @@ -29,6 +29,8 @@ class RoomMgr : public a8::Singleton Room* GetRoomByUuid(long long uuid); void AddOverRoom(long long room_uuid); bool IsGM(const cs::CMJoin& msg); + void AddProtectTeam(const std::string& team_uuid); + bool IsProtectTeam(const std::string& team_uuid); private: void InstallReportStateTimer(); @@ -54,4 +56,5 @@ class RoomMgr : public a8::Singleton std::map over_room_hash_; a8::TimerAttacher reportstate_timer_attacher_; std::map gm_hash_; + std::map protect_team_hash_; };