From a31e5daf411cc127b6b1861c0b960e1ee86c0910 Mon Sep 17 00:00:00 2001 From: Yimura <24669514+Yimura@users.noreply.github.com> Date: Wed, 19 Oct 2022 22:27:01 +0200 Subject: [PATCH] fix(PlayerJoin): don't notify above map while joining (#482) --- .../assign_physical_index.cpp | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/BigBaseV2/src/hooks/player_management/assign_physical_index.cpp b/BigBaseV2/src/hooks/player_management/assign_physical_index.cpp index a91c81bf..15dafc5f 100644 --- a/BigBaseV2/src/hooks/player_management/assign_physical_index.cpp +++ b/BigBaseV2/src/hooks/player_management/assign_physical_index.cpp @@ -6,36 +6,41 @@ namespace big { void* hooks::assign_physical_index(CNetworkPlayerMgr* netPlayerMgr, CNetGamePlayer* player, uint8_t new_index) { - auto returnResult = g_hooking->m_assign_physical_index_hook.get_original()(netPlayerMgr, player, new_index); - if (new_index == 0xFF) { + const auto result = g_hooking->m_assign_physical_index_hook.get_original()(netPlayerMgr, player, new_index); + const auto* net_player_data = player->get_net_data(); + + if (new_index == static_cast(-1)) + { g_player_service->player_leave(player); - if (const auto* net_player_data = player->get_net_data(); net_player_data) + + if (net_player_data) { if (g->notifications.player_leave.log) LOG(INFO) << "Player left '" << net_player_data->m_name - << "' freeing slot #" << (int)player->m_player_id - << " with Rockstar ID: " << net_player_data->m_gamer_handle_2.m_rockstar_id; + << "' freeing slot #" << (int)player->m_player_id + << " with Rockstar ID: " << net_player_data->m_gamer_handle_2.m_rockstar_id; if (g->notifications.player_leave.notify) g_notification_service->push("Player Left", fmt::format("{} freeing slot #{} with Rockstar ID: {}", net_player_data->m_name, player->m_player_id, net_player_data->m_gamer_handle_2.m_rockstar_id)); } - return returnResult; + + return result; } g_player_service->player_join(player); - if (const auto* net_player_data = player->get_net_data(); net_player_data) + if (net_player_data) { - if (g->notifications.player_join.above_map) + if (g->notifications.player_join.above_map && *g_pointers->m_is_session_started) // prevent loading screen spam notify::player_joined(player); if (g->notifications.player_join.log) LOG(INFO) << "Player joined '" << net_player_data->m_name - << "' allocating slot #" << (int)player->m_player_id - << " with Rockstar ID: " << net_player_data->m_gamer_handle_2.m_rockstar_id; + << "' allocating slot #" << (int)player->m_player_id + << " with Rockstar ID: " << net_player_data->m_gamer_handle_2.m_rockstar_id; if (g->notifications.player_join.notify) g_notification_service->push("Player Joined", fmt::format("{} taking slot #{} with Rockstar ID: {}", net_player_data->m_name, player->m_player_id, net_player_data->m_gamer_handle_2.m_rockstar_id)); } - return returnResult; + return result; } } \ No newline at end of file