From 7e6c6367b196cd2de663392641c443f5a096b212 Mon Sep 17 00:00:00 2001 From: gir489 <100792176+gir489returns@users.noreply.github.com> Date: Fri, 3 Nov 2023 13:34:22 -0400 Subject: [PATCH] Refactored writing RandomID into a set that's locally tracked by the user. (#2376) --- src/common.hpp | 2 ++ src/hooks/player_management/network_player_mgr.cpp | 1 + src/hooks/protections/received_event.cpp | 2 +- src/util/vehicle.cpp | 4 ++-- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/common.hpp b/src/common.hpp index 3e7f48f5..a30e4ef3 100644 --- a/src/common.hpp +++ b/src/common.hpp @@ -36,6 +36,7 @@ #include #include +#include #include #include @@ -83,6 +84,7 @@ namespace self inline Vector3 rot; inline Vehicle veh; inline int char_index; + inline std::unordered_set spawned_vehicles; } template diff --git a/src/hooks/player_management/network_player_mgr.cpp b/src/hooks/player_management/network_player_mgr.cpp index 43944283..a8b37711 100644 --- a/src/hooks/player_management/network_player_mgr.cpp +++ b/src/hooks/player_management/network_player_mgr.cpp @@ -26,6 +26,7 @@ namespace big void hooks::network_player_mgr_shutdown(CNetworkPlayerMgr* _this) { g_player_service->do_cleanup(); + self::spawned_vehicles.clear(); if (g.notifications.network_player_mgr_shutdown.log) LOG(INFO) << "CNetworkPlayerMgr#shutdown got called, we're probably leaving our session."; diff --git a/src/hooks/protections/received_event.cpp b/src/hooks/protections/received_event.cpp index 6b24ab99..3b2d58e1 100644 --- a/src/hooks/protections/received_event.cpp +++ b/src/hooks/protections/received_event.cpp @@ -507,7 +507,7 @@ namespace big Vehicle veh = g_pointers->m_gta.m_ptr_to_handle(g_local_player->m_vehicle); if (!NETWORK::NETWORK_IS_ACTIVITY_SESSION() //If we're in Freemode. || personal_vehicle == veh //Or we're in our personal vehicle. - || DECORATOR::DECOR_GET_INT(veh, "RandomId") == g_local_player->m_net_object->m_object_id) // Or it's a vehicle we spawned. + || self::spawned_vehicles.contains(net_id)) // Or it's a vehicle we spawned. { g_pointers->m_gta.m_send_event_ack(event_manager, source_player, target_player, event_index, event_handled_bitset); // Tell them to get bent. g.reactions.request_control_event.process(plyr); diff --git a/src/util/vehicle.cpp b/src/util/vehicle.cpp index 729b56bc..cb561fed 100644 --- a/src/util/vehicle.cpp +++ b/src/util/vehicle.cpp @@ -46,10 +46,10 @@ namespace big::vehicle void set_mp_bitset(Vehicle veh) { DECORATOR::DECOR_SET_INT(veh, "MPBitset", 0); - DECORATOR::DECOR_SET_INT(veh, "RandomId", g_local_player->m_net_object->m_object_id); auto networkId = NETWORK::VEH_TO_NET(veh); + self::spawned_vehicles.insert(networkId); if (NETWORK::NETWORK_GET_ENTITY_IS_NETWORKED(veh)) - NETWORK::SET_NETWORK_ID_EXISTS_ON_ALL_MACHINES(networkId, true); + NETWORK::SET_NETWORK_ID_EXISTS_ON_ALL_MACHINES(networkId, TRUE); VEHICLE::SET_VEHICLE_IS_STOLEN(veh, FALSE); }