From 695a6dd20e6c4385023b2c6a11cf80c8515197f7 Mon Sep 17 00:00:00 2001 From: gir489 <100792176+gir489returns@users.noreply.github.com> Date: Wed, 13 Dec 2023 18:56:40 -0500 Subject: [PATCH] Fixes for b3095 (#2537) * Refactored TRIGGER_SCRIPT_EVENT for the duplicate f_2 argument they added in 3095. Fixed OOB gadget spam caused by the tow truck. Increased max interiors in InteriorControl. * Updated scripted_game_event. * Update GTAV-Classes repo. * Fixed locals for 3095. * Bump project to Build 3095. --- metadata.json | 4 +-- scripts/gtav-classes.cmake | 2 +- .../commands/player/kick/bail_kick.cpp | 3 +- .../player/kick/null_function_kick.cpp | 4 +-- .../commands/player/misc/enter_interior.cpp | 3 +- .../commands/player/toxic/ceo_kick.cpp | 12 ++++--- .../player/toxic/force_into_mission.cpp | 4 +-- .../player/toxic/kick_from_interior.cpp | 3 +- .../player/toxic/kick_from_vehicle.cpp | 4 +-- .../player/toxic/send_fake_ban_message.cpp | 4 +-- .../commands/player/toxic/send_sext.cpp | 4 +-- .../player/toxic/send_to_apartment.cpp | 13 ++++++-- .../player/toxic/send_to_interior.cpp | 3 +- .../player/toxic/send_to_warehouse.cpp | 9 ++++-- .../player/toxic/show_transaction_error.cpp | 3 +- .../commands/player/toxic/start_script.cpp | 8 ++--- .../player/toxic/trigger_ceo_raid.cpp | 4 +-- src/backend/looped/player/toxic_options.cpp | 4 +-- src/core/scr_globals.hpp | 20 ++++++------ src/hooks/protections/can_apply_data.cpp | 2 +- .../protections/script_event_handler.cpp | 32 +++++++++---------- .../script_connection/script_connection.cpp | 8 ++--- src/util/globals.hpp | 7 ++-- src/util/mobile.hpp | 2 +- src/util/session.hpp | 3 +- src/util/toxic.hpp | 4 +-- src/util/troll.hpp | 3 +- src/views/debug/view_debug_script_events.cpp | 1 + 28 files changed, 100 insertions(+), 73 deletions(-) diff --git a/metadata.json b/metadata.json index 3a4dd504..a115f536 100644 --- a/metadata.json +++ b/metadata.json @@ -1,6 +1,6 @@ { "game": { - "online": "1.67", - "build": "3028" + "online": "1.68", + "build": "3095" } } \ No newline at end of file diff --git a/scripts/gtav-classes.cmake b/scripts/gtav-classes.cmake index 896c29d4..aff27c4b 100644 --- a/scripts/gtav-classes.cmake +++ b/scripts/gtav-classes.cmake @@ -3,7 +3,7 @@ include(FetchContent) FetchContent_Declare( gtav_classes GIT_REPOSITORY https://github.com/Yimura/GTAV-Classes.git - GIT_TAG 08cc88c83a988f1acfd90f89fa336ba548146831 + GIT_TAG 760585b6ca9fd60ade494f9226190963d3b743d9 GIT_PROGRESS TRUE CONFIGURE_COMMAND "" BUILD_COMMAND "" diff --git a/src/backend/commands/player/kick/bail_kick.cpp b/src/backend/commands/player/kick/bail_kick.cpp index 7fa44a57..484a21b1 100644 --- a/src/backend/commands/player/kick/bail_kick.cpp +++ b/src/backend/commands/player/kick/bail_kick.cpp @@ -21,9 +21,10 @@ namespace big if (!player) return; - const size_t arg_count = 3; + const size_t arg_count = 4; int64_t args[arg_count] = {(int64_t)eRemoteEvent::NetworkBail, (int64_t)self::id, + 1 << player->id(), scr_globals::gpbd_fm_3.as()->Entries[player->id()].ScriptEventReplayProtectionCounter}; g_pointers->m_gta.m_trigger_script_event(1, args, arg_count, 1 << player->id(), (int)eRemoteEvent::NetworkBail); diff --git a/src/backend/commands/player/kick/null_function_kick.cpp b/src/backend/commands/player/kick/null_function_kick.cpp index b01344d2..5e32e846 100644 --- a/src/backend/commands/player/kick/null_function_kick.cpp +++ b/src/backend/commands/player/kick/null_function_kick.cpp @@ -18,8 +18,8 @@ namespace big { if (!player) return; - const size_t arg_count = 15; - int64_t args[arg_count] = {(int64_t)eRemoteEvent::InteriorControl, (int64_t)self::id, (int64_t)(int)-1}; + const size_t arg_count = 16; + int64_t args[arg_count] = {(int64_t)eRemoteEvent::InteriorControl, (int64_t)self::id, 1 << player->id(), (int64_t)(int)-1}; g_pointers->m_gta.m_trigger_script_event(1, args, arg_count, 1 << player->id(), (int)eRemoteEvent::InteriorControl); } diff --git a/src/backend/commands/player/misc/enter_interior.cpp b/src/backend/commands/player/misc/enter_interior.cpp index 9dfccda1..d8040f6b 100644 --- a/src/backend/commands/player/misc/enter_interior.cpp +++ b/src/backend/commands/player/misc/enter_interior.cpp @@ -18,9 +18,10 @@ namespace big int id = player->id(); if (scr_globals::gpbd_fm_1.as()->Entries[id].PropertyData.Index != -1) { - const size_t arg_count = 9; + const size_t arg_count = 10; int64_t args[arg_count] = {(int64_t)eRemoteEvent::Teleport, self::id, + 1 << self::id, (int64_t)player->id(), (int64_t)(int)-1, 1, diff --git a/src/backend/commands/player/toxic/ceo_kick.cpp b/src/backend/commands/player/toxic/ceo_kick.cpp index 870036e2..458da0b2 100644 --- a/src/backend/commands/player/toxic/ceo_kick.cpp +++ b/src/backend/commands/player/toxic/ceo_kick.cpp @@ -25,8 +25,12 @@ namespace big else if (leader == player->id()) { - const size_t arg_count = 2; - int64_t args[arg_count] = {(int64_t)eRemoteEvent::CeoKick, (int64_t)self::id}; + const size_t arg_count = 3; + int64_t args[arg_count] = { + (int64_t)eRemoteEvent::CeoKick, + (int64_t)self::id, + 1 << player->id(), + }; g_pointers->m_gta.m_trigger_script_event(1, args, arg_count, 1 << player->id(), (int)eRemoteEvent::CeoKick); return; @@ -34,8 +38,8 @@ namespace big else { // use a more private method to remove associate - const size_t arg_count = 3; - int64_t args[arg_count] = {(int64_t)eRemoteEvent::MarkPlayerAsBeast, (int64_t)self::id, leader}; + const size_t arg_count = 4; + int64_t args[arg_count] = {(int64_t)eRemoteEvent::MarkPlayerAsBeast, (int64_t)self::id, 1 << player->id(), leader}; g_pointers->m_gta.m_trigger_script_event(1, args, arg_count, 1 << player->id(), (int)eRemoteEvent::MarkPlayerAsBeast); } diff --git a/src/backend/commands/player/toxic/force_into_mission.cpp b/src/backend/commands/player/toxic/force_into_mission.cpp index 506c4dec..6e5af51a 100644 --- a/src/backend/commands/player/toxic/force_into_mission.cpp +++ b/src/backend/commands/player/toxic/force_into_mission.cpp @@ -16,8 +16,8 @@ namespace big virtual void execute(player_ptr player, const command_arguments& _args, const std::shared_ptr ctx) override { - const size_t arg_count = 3; - int64_t args[arg_count] = {(int64_t)eRemoteEvent::ForceMission, (int64_t)self::id, 0}; + const size_t arg_count = 4; + int64_t args[arg_count] = {(int64_t)eRemoteEvent::ForceMission, (int64_t)self::id, 1 << self::id, 0}; g_pointers->m_gta.m_trigger_script_event(1, args, arg_count, 1 << player->id(), (int)eRemoteEvent::ForceMission); } diff --git a/src/backend/commands/player/toxic/kick_from_interior.cpp b/src/backend/commands/player/toxic/kick_from_interior.cpp index 40c5836c..0250b51e 100644 --- a/src/backend/commands/player/toxic/kick_from_interior.cpp +++ b/src/backend/commands/player/toxic/kick_from_interior.cpp @@ -44,10 +44,11 @@ namespace big } else { - const size_t arg_count = 8; + const size_t arg_count = 9; int64_t args[arg_count]{ (int64_t)eRemoteEvent::KickFromInterior, (int64_t)self::id, + 1 << player->id(), (int64_t)scr_globals::globalplayer_bd.as() ->Entries[player->id()] .SimpleInteriorData.Index, diff --git a/src/backend/commands/player/toxic/kick_from_vehicle.cpp b/src/backend/commands/player/toxic/kick_from_vehicle.cpp index 7ba59c41..8258ffb0 100644 --- a/src/backend/commands/player/toxic/kick_from_vehicle.cpp +++ b/src/backend/commands/player/toxic/kick_from_vehicle.cpp @@ -21,8 +21,8 @@ namespace big if (!vehicle || !vehicle->m_net_object) { // vehicle hasn't synced yet, use TSE - const size_t arg_count = 9; - int64_t args[arg_count] = {(int64_t)eRemoteEvent::VehicleKick, self::id, 0, 0, 0, 0, 0, 0, 0}; + const size_t arg_count = 10; + int64_t args[arg_count] = {(int64_t)eRemoteEvent::VehicleKick, self::id, 1 << player->id(), 0, 0, 0, 0, 0, 0, 0}; g_pointers->m_gta.m_trigger_script_event(1, args, arg_count, 1 << player->id(), (int)eRemoteEvent::VehicleKick); } diff --git a/src/backend/commands/player/toxic/send_fake_ban_message.cpp b/src/backend/commands/player/toxic/send_fake_ban_message.cpp index 95f414f6..72414cca 100644 --- a/src/backend/commands/player/toxic/send_fake_ban_message.cpp +++ b/src/backend/commands/player/toxic/send_fake_ban_message.cpp @@ -18,8 +18,8 @@ namespace big virtual void execute(player_ptr player, const command_arguments& _args, const std::shared_ptr ctx) override { - const size_t arg_count = 8; - int64_t args[arg_count] = {(int64_t)eRemoteEvent::SendTextLabelSMS, self::id}; + const size_t arg_count = 9; + int64_t args[arg_count] = {(int64_t)eRemoteEvent::SendTextLabelSMS, self::id, 1 << player->id()}; strcpy((char*)&args[2], "HUD_ROSBANPERM"); diff --git a/src/backend/commands/player/toxic/send_sext.cpp b/src/backend/commands/player/toxic/send_sext.cpp index a3d98ab0..1a85714e 100644 --- a/src/backend/commands/player/toxic/send_sext.cpp +++ b/src/backend/commands/player/toxic/send_sext.cpp @@ -22,8 +22,8 @@ namespace big virtual void execute(player_ptr player, const command_arguments& _args, const std::shared_ptr ctx) override { - const size_t arg_count = 8; - int64_t args[arg_count] = {(int64_t)eRemoteEvent::SendTextLabelSMS, self::id}; + const size_t arg_count = 9; + int64_t args[arg_count] = {(int64_t)eRemoteEvent::SendTextLabelSMS, self::id, 1 << player->id()}; strcpy((char*)&args[2], (std::string("SXT_") + strippers[rand() % strippers.size()] + "_" + sext_types[rand() % sext_types.size()]) diff --git a/src/backend/commands/player/toxic/send_to_apartment.cpp b/src/backend/commands/player/toxic/send_to_apartment.cpp index 10adb8bf..76ae6617 100644 --- a/src/backend/commands/player/toxic/send_to_apartment.cpp +++ b/src/backend/commands/player/toxic/send_to_apartment.cpp @@ -16,8 +16,17 @@ namespace big virtual void execute(player_ptr player, const command_arguments& _args, const std::shared_ptr ctx) override { - const size_t arg_count = 9; - int64_t args[arg_count] = {(int64_t)eRemoteEvent::Teleport, self::id, (int64_t)player->id(), (int64_t)(int)-1, 1, (int64_t)_args.get(0), 1, 1, 1}; + const size_t arg_count = 10; + int64_t args[arg_count] = {(int64_t)eRemoteEvent::Teleport, + self::id, + 1 << player->id(), + (int64_t) player->id(), + (int64_t)(int)-1, + 1, + (int64_t)_args.get(0), + 1, + 1, + 1}; g_pointers->m_gta.m_trigger_script_event(1, args, arg_count, 1 << player->id(), (int)eRemoteEvent::Teleport); } diff --git a/src/backend/commands/player/toxic/send_to_interior.cpp b/src/backend/commands/player/toxic/send_to_interior.cpp index 2498e554..3e64552b 100644 --- a/src/backend/commands/player/toxic/send_to_interior.cpp +++ b/src/backend/commands/player/toxic/send_to_interior.cpp @@ -17,9 +17,10 @@ namespace big { float max = 1e+38f; auto coords = ENTITY::GET_ENTITY_COORDS(PLAYER::GET_PLAYER_PED_SCRIPT_INDEX(player->id()), FALSE); - const size_t arg_count = 15; + const size_t arg_count = 16; int64_t args[arg_count] = {(int64_t)eRemoteEvent::InteriorControl, (int64_t)self::id, + 1 << player->id(), (int64_t)_args.get(0), (int64_t)self::id, (int64_t) false, diff --git a/src/backend/commands/player/toxic/send_to_warehouse.cpp b/src/backend/commands/player/toxic/send_to_warehouse.cpp index 53900b39..eea0d4c9 100644 --- a/src/backend/commands/player/toxic/send_to_warehouse.cpp +++ b/src/backend/commands/player/toxic/send_to_warehouse.cpp @@ -16,8 +16,13 @@ namespace big virtual void execute(player_ptr player, const command_arguments& _args, const std::shared_ptr ctx) override { - const size_t arg_count = 6; - int64_t args[arg_count] = {(int64_t)eRemoteEvent::TeleportToWarehouse, self::id, (int64_t)player->id(), 1, (int64_t)_args.get(0)}; + const size_t arg_count = 7; + int64_t args[arg_count] = {(int64_t)eRemoteEvent::TeleportToWarehouse, + self::id, + 1 << player->id(), + (int64_t) player->id(), + 1, + (int64_t)_args.get(0)}; g_pointers->m_gta.m_trigger_script_event(1, args, arg_count, 1 << player->id(), (int)eRemoteEvent::TeleportToWarehouse); } diff --git a/src/backend/commands/player/toxic/show_transaction_error.cpp b/src/backend/commands/player/toxic/show_transaction_error.cpp index 01f76a00..a8dd6ec0 100644 --- a/src/backend/commands/player/toxic/show_transaction_error.cpp +++ b/src/backend/commands/player/toxic/show_transaction_error.cpp @@ -18,9 +18,10 @@ namespace big virtual void execute(player_ptr player, const command_arguments& _args, const std::shared_ptr ctx)override { - const size_t arg_count = 8; + const size_t arg_count = 9; int64_t args[arg_count] = {(int64_t)eRemoteEvent::TransactionError, (int64_t)self::id, + 1 << player->id(), 1, 0, 0, diff --git a/src/backend/commands/player/toxic/start_script.cpp b/src/backend/commands/player/toxic/start_script.cpp index 04c5eb88..04bc17db 100644 --- a/src/backend/commands/player/toxic/start_script.cpp +++ b/src/backend/commands/player/toxic/start_script.cpp @@ -20,8 +20,8 @@ namespace big virtual void execute(player_ptr player, const command_arguments& _args, const std::shared_ptr ctx) override { - const size_t arg_count = 25; - int64_t args[arg_count] = {(int64_t)eRemoteEvent::StartScriptBegin, (int64_t)self::id}; + const size_t arg_count = 26; + int64_t args[arg_count] = {(int64_t)eRemoteEvent::StartScriptBegin, (int64_t)self::id, 1 << player->id()}; args[2] = scriptId; strcpy((char*)&args[2 + 3], "0"); @@ -34,8 +34,8 @@ namespace big for (int i = 0; i < 2; i++) { - const size_t arg_count_2 = 25; - int64_t args_2[arg_count_2] = {(int64_t)eRemoteEvent::StartScriptProceed, (int64_t)self::id}; + const size_t arg_count_2 = 26; + int64_t args_2[arg_count_2] = {(int64_t)eRemoteEvent::StartScriptProceed, (int64_t)self::id, 1 << player->id()}; args_2[2 + 17] = 1337; g_pointers->m_gta.m_trigger_script_event(1, args_2, arg_count_2, 1 << player->id(), (int)eRemoteEvent::StartScriptProceed); diff --git a/src/backend/commands/player/toxic/trigger_ceo_raid.cpp b/src/backend/commands/player/toxic/trigger_ceo_raid.cpp index 3fd9e694..39612c4b 100644 --- a/src/backend/commands/player/toxic/trigger_ceo_raid.cpp +++ b/src/backend/commands/player/toxic/trigger_ceo_raid.cpp @@ -15,8 +15,8 @@ namespace big virtual void execute(player_ptr player, const command_arguments& _args, const std::shared_ptr ctx) override { - const size_t arg_count = 3; - int64_t args[arg_count] = {(int64_t)eRemoteEvent::TriggerCEORaid, (int64_t)self::id, 0}; + const size_t arg_count = 4; + int64_t args[arg_count] = {(int64_t)eRemoteEvent::TriggerCEORaid, (int64_t)self::id, 1 << player->id(), 0}; g_pointers->m_gta.m_trigger_script_event(1, args, arg_count, 1 << player->id(), (int)eRemoteEvent::TriggerCEORaid); } diff --git a/src/backend/looped/player/toxic_options.cpp b/src/backend/looped/player/toxic_options.cpp index 6e56ea54..8027d3bd 100644 --- a/src/backend/looped/player/toxic_options.cpp +++ b/src/backend/looped/player/toxic_options.cpp @@ -52,8 +52,8 @@ namespace big if (rotate_cam_bits) { - const size_t arg_count = 3; - int64_t args[arg_count] = {(int64_t)eRemoteEvent::TSECommand, (int64_t)self::id, (int64_t)eRemoteEvent::TSECommandRotateCam}; + const size_t arg_count = 4; + int64_t args[arg_count] = {(int64_t)eRemoteEvent::TSECommand, (int64_t)self::id, (int64_t)eRemoteEvent::TSECommandRotateCam, rotate_cam_bits}; g_pointers->m_gta.m_trigger_script_event(1, args, arg_count, rotate_cam_bits, (int)eRemoteEvent::TSECommand); } diff --git a/src/core/scr_globals.hpp b/src/core/scr_globals.hpp index be086808..e0478ac2 100644 --- a/src/core/scr_globals.hpp +++ b/src/core/scr_globals.hpp @@ -74,36 +74,36 @@ namespace big::scr_locals { namespace am_hunt_the_beast { - constexpr static auto broadcast_idx = 600; - constexpr static auto player_broadcast_idx = 2584; + constexpr static auto broadcast_idx = 602; + constexpr static auto player_broadcast_idx = 2586; } namespace am_criminal_damage { - constexpr static auto broadcast_idx = 111; - constexpr static auto score_idx = 106; + constexpr static auto broadcast_idx = 113; + constexpr static auto score_idx = 108; } namespace am_cp_collection { - constexpr static auto broadcast_idx = 816; - constexpr static auto player_broadcast_idx = 3457; + constexpr static auto broadcast_idx = 818; + constexpr static auto player_broadcast_idx = 3459; } namespace am_king_of_the_castle { - constexpr static auto broadcast_idx = 94; + constexpr static auto broadcast_idx = 96; } namespace fmmc_launcher { - constexpr static auto broadcast_idx = 11629; + constexpr static auto broadcast_idx = 12327; } - namespace fm_mobile + namespace freemode { // first uLocal_ in this function call // func_\d+\((&.Local_\d+(, )?){9}\); - inline static script_local mobile(18717); + inline static script_local mobile(18955); } } \ No newline at end of file diff --git a/src/hooks/protections/can_apply_data.cpp b/src/hooks/protections/can_apply_data.cpp index 10b04d47..003afcfa 100644 --- a/src/hooks/protections/can_apply_data.cpp +++ b/src/hooks/protections/can_apply_data.cpp @@ -1599,7 +1599,7 @@ namespace big const auto gadget_node = (CVehicleGadgetDataNode*)(node); for (int i = 0; i < gadget_node->m_gadget_count; i++) { - if (gadget_node->m_gadget_data[i].m_gadget_type > 6) + if (gadget_node->m_gadget_data[i].m_gadget_type > 7) { notify::crash_blocked(sender, "out of bounds gadget type"); return true; diff --git a/src/hooks/protections/script_event_handler.cpp b/src/hooks/protections/script_event_handler.cpp index af1ce6d1..5cc4c1b1 100644 --- a/src/hooks/protections/script_event_handler.cpp +++ b/src/hooks/protections/script_event_handler.cpp @@ -81,7 +81,7 @@ namespace big switch (hash) { case eRemoteEvent::Bounty: - if (g.protections.script_events.bounty && args[2] == self::id) + if (g.protections.script_events.bounty && args[3] == self::id) { g.reactions.bounty.process(plyr); return true; @@ -111,7 +111,7 @@ namespace big break; case eRemoteEvent::Crash: g.reactions.crash.process(plyr); return true; case eRemoteEvent::Crash2: - if (args[2] > 32) // actual crash condition is if args[2] is above 255 + if (args[3] > 32) // actual crash condition is if args[2] is above 255 { g.reactions.crash.process(plyr); return true; @@ -119,7 +119,7 @@ namespace big break; case eRemoteEvent::Crash3: { - if (isnan(*(float*)&args[3]) || isnan(*(float*)&args[4])) + if (isnan(*(float*)&args[4]) || isnan(*(float*)&args[5])) { g.reactions.crash.process(plyr); return true; @@ -128,7 +128,7 @@ namespace big } case eRemoteEvent::Notification: { - switch (static_cast(args[2])) + switch (static_cast(args[3])) { case eRemoteEvent::NotificationMoneyBanked: // never used case eRemoteEvent::NotificationMoneyRemoved: @@ -170,18 +170,18 @@ namespace big } break; case eRemoteEvent::MCTeleport: - if (g.protections.script_events.mc_teleport && args[3] <= 32 && !is_player_our_boss(plyr->id())) + if (g.protections.script_events.mc_teleport && args[4] <= 32 && !is_player_our_boss(plyr->id())) { for (int i = 0; i < 32; i++) { - if (args[4 + i] == NETWORK::NETWORK_HASH_FROM_PLAYER_HANDLE(self::id)) + if (args[5 + i] == NETWORK::NETWORK_HASH_FROM_PLAYER_HANDLE(self::id)) { g.reactions.mc_teleport.process(plyr); return true; } } } - else if (args[3] > 32) + else if (args[4] > 32) { g.reactions.crash.process(plyr); return true; @@ -202,14 +202,14 @@ namespace big } break; case eRemoteEvent::TSECommand: - if (g.protections.script_events.rotate_cam && static_cast(args[2]) == eRemoteEvent::TSECommandRotateCam && !NETWORK::NETWORK_IS_ACTIVITY_SESSION()) + if (g.protections.script_events.rotate_cam && static_cast(args[3]) == eRemoteEvent::TSECommandRotateCam && !NETWORK::NETWORK_IS_ACTIVITY_SESSION()) { g.reactions.rotate_cam.process(plyr); return true; } break; case eRemoteEvent::SendToCayoPerico: - if (g.protections.script_events.send_to_location && args[3] == 0) + if (g.protections.script_events.send_to_location && args[4] == 0) { g.reactions.send_to_location.process(plyr); return true; @@ -229,9 +229,9 @@ namespace big bool known_location = false; - if (args[2] == 0 && args[3] == 0) + if (args[3] == 0 && args[4] == 0) { - if (args[4] == 4 && args[5] == 0) + if (args[5] == 4 && args[6] == 0) { known_location = true; @@ -241,7 +241,7 @@ namespace big return true; } } - else if ((args[4] == 3 || args[4] == 4) && args[5] == 1) + else if ((args[5] == 3 || args[5] == 4) && args[6] == 1) { known_location = true; @@ -305,7 +305,7 @@ namespace big break; case eRemoteEvent::StartActivity: { - eActivityType activity = static_cast(args[2]); + eActivityType activity = static_cast(args[3]); if (g.protections.script_events.start_activity) { if (activity == eActivityType::Survival || activity == eActivityType::Mission || activity == eActivityType::Deathmatch || activity == eActivityType::BaseJump || activity == eActivityType::Race) @@ -328,7 +328,7 @@ namespace big g.reactions.start_activity.process(plyr); return true; } - else if (activity == eActivityType::DefendSpecialCargo || activity == eActivityType::GunrunningDefend || activity == eActivityType::BikerDefend || args[2] == 238) + else if (activity == eActivityType::DefendSpecialCargo || activity == eActivityType::GunrunningDefend || activity == eActivityType::BikerDefend || args[3] == 238) { g.reactions.trigger_business_raid.process(plyr); return true; @@ -350,8 +350,8 @@ namespace big } case eRemoteEvent::InteriorControl: { - int interior = (int)args[2]; - if (interior < 0 || interior > 161) // the upper bound will change after an update + int interior = (int)args[3]; + if (interior < 0 || interior > 166) // the upper bound will change after an update { if (auto plyr = g_player_service->get_by_id(player->m_player_id)) session::add_infraction(plyr, Infraction::TRIED_KICK_PLAYER); diff --git a/src/services/script_connection/script_connection.cpp b/src/services/script_connection/script_connection.cpp index 7e3203f3..794a7982 100644 --- a/src/services/script_connection/script_connection.cpp +++ b/src/services/script_connection/script_connection.cpp @@ -55,8 +55,8 @@ namespace big if (m_debug_logging) LOG(VERBOSE) << "Starting " << m_script_name << " using TSEs"; - const size_t arg_count = 25; - int64_t args[arg_count] = {(int64_t)eRemoteEvent::StartScriptBegin, (int64_t)self::id}; + const size_t arg_count = 26; + int64_t args[arg_count] = {(int64_t)eRemoteEvent::StartScriptBegin, (int64_t)self::id, 1 << m_target->get()->id()}; args[2] = scripts::launcher_index_from_hash(m_script_hash); strcpy((char*)&args[2 + 3], "0"); @@ -68,8 +68,8 @@ namespace big for (int i = 0; i < 2; i++) { - const size_t arg_count_2 = 25; - int64_t args_2[arg_count_2] = {(int64_t)eRemoteEvent::StartScriptProceed, (int64_t)self::id}; + const size_t arg_count_2 = 26; + int64_t args_2[arg_count_2] = {(int64_t)eRemoteEvent::StartScriptProceed, (int64_t)self::id, 1 << m_target->get()->id()}; args_2[2 + 17] = 1337; g_pointers->m_gta.m_trigger_script_event(1, args_2, arg_count_2, 1 << m_target->get()->id(), (int)eRemoteEvent::StartScriptProceed); diff --git a/src/util/globals.hpp b/src/util/globals.hpp index 685a4656..fa19480a 100644 --- a/src/util/globals.hpp +++ b/src/util/globals.hpp @@ -11,9 +11,9 @@ namespace big::globals { inline void clear_wanted_player(Player target) { - constexpr size_t arg_count = 3; + constexpr size_t arg_count = 4; int64_t args[arg_count] = {static_cast(eRemoteEvent::ClearWantedLevel), - self::id, + self::id, 1 << target, (int64_t)scr_globals::gpbd_fm_3.as()->Entries[target].ScriptEventReplayProtectionCounter}; g_pointers->m_gta.m_trigger_script_event(1, args, arg_count, 1 << target, (int)eRemoteEvent::ClearWantedLevel); @@ -21,9 +21,10 @@ namespace big::globals inline void give_remote_otr(Player target) { - constexpr size_t arg_count = 7; + constexpr size_t arg_count = 8; int64_t args[arg_count] = {static_cast(eRemoteEvent::RemoteOffradar), (int64_t)self::id, + 1 << target, (int64_t)(NETWORK::GET_NETWORK_TIME() + 1), 0, true, diff --git a/src/util/mobile.hpp b/src/util/mobile.hpp index d3f47ba5..5ebb1a2e 100644 --- a/src/util/mobile.hpp +++ b/src/util/mobile.hpp @@ -171,7 +171,7 @@ namespace big::mobile // \(func_\d{3}\(&\(uParam0->f_\d{3}\), \d+000, 0\) \|\| func // or if you prefer a string "VD_FAIL4" // or if you really prefer an image https://i.imgur.com/K8vMILe.png - *scr_locals::fm_mobile::mobile.set(freemode_thread).at(176).as() = 0; // spawn vehicle instantly + *scr_locals::freemode::mobile.set(freemode_thread).at(176).as() = 0; // spawn vehicle instantly } // blocking call till vehicle is delivered diff --git a/src/util/session.hpp b/src/util/session.hpp index 66d99e87..3f411e67 100644 --- a/src/util/session.hpp +++ b/src/util/session.hpp @@ -211,10 +211,11 @@ namespace big::session inline void give_collectible(Player target, eCollectibleType col, int index = 0, bool uncomplete = false) { - const size_t arg_count = 7; + const size_t arg_count = 8; int64_t args[arg_count] = { (int64_t)eRemoteEvent::GiveCollectible, (int64_t)self::id, + 1 << target, (int64_t)col, // iParam0 (int64_t)index, // iParam1 !uncomplete, // bParam2 diff --git a/src/util/toxic.hpp b/src/util/toxic.hpp index f646dec7..c35b72f1 100644 --- a/src/util/toxic.hpp +++ b/src/util/toxic.hpp @@ -45,8 +45,8 @@ namespace big::toxic inline void start_activity(player_ptr target, eActivityType type) { - const size_t arg_count = 4; - int64_t args[arg_count] = {(int64_t)eRemoteEvent::StartActivity, (int64_t)self::id, (int64_t)type, (int64_t) true}; + const size_t arg_count = 5; + int64_t args[arg_count] = {(int64_t)eRemoteEvent::StartActivity, (int64_t)self::id, 1 << target->id(), (int64_t) type, (int64_t) true}; g_pointers->m_gta.m_trigger_script_event(1, args, arg_count, 1 << target->id(), (int)eRemoteEvent::StartActivity); } diff --git a/src/util/troll.hpp b/src/util/troll.hpp index 664f29cb..ca6e4ffb 100644 --- a/src/util/troll.hpp +++ b/src/util/troll.hpp @@ -9,9 +9,10 @@ namespace big::troll { inline void set_bounty_on_player(player_ptr target, int value, bool anonymous) { - const size_t arg_count = 22; + const size_t arg_count = 23; int64_t args[arg_count] = {(int64_t)eRemoteEvent::Bounty, self::id, + -1, target->id(), 1, value, diff --git a/src/views/debug/view_debug_script_events.cpp b/src/views/debug/view_debug_script_events.cpp index 20d2bbcc..d251e0f2 100644 --- a/src/views/debug/view_debug_script_events.cpp +++ b/src/views/debug/view_debug_script_events.cpp @@ -56,6 +56,7 @@ namespace big components::button("DEBUG_SCRIPT_EVENT_SEND_EVENT"_T, [] { args[1] = self::id;// prevent detection from AC + args[2] = event_everyone ? -1 : 1 << event_player_bits, g_pointers->m_gta.m_trigger_script_event(1, args, event_arg_count, event_everyone ? -1 : 1 << event_player_bits, args[0]); });