From 383d77d31ceaf8288be33aa7c434afe84159e921 Mon Sep 17 00:00:00 2001 From: Pyxalon Date: Wed, 12 Aug 2026 19:09:02 -0400 Subject: [PATCH 01/11] Update content.cpp --- .../features/recovery/Unreleased/content.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/game/features/recovery/Unreleased/content.cpp b/src/game/features/recovery/Unreleased/content.cpp index cb862fa2..50c36dff 100644 --- a/src/game/features/recovery/Unreleased/content.cpp +++ b/src/game/features/recovery/Unreleased/content.cpp @@ -17,14 +17,14 @@ namespace YimMenu::Features { if (*Pointers.IsSessionStarted) { - *ScriptGlobal(262145).At(37820).As() = 1; // Bomb Squad, Mansion Raid - *ScriptGlobal(262145).At(37821).As() = 1; // Knockdown - *ScriptGlobal(262145).At(37822).As() = 1; // Alpha Mail - *ScriptGlobal(262145).At(37823).As() = 1; // Meteoric, Hot Off The Press - *ScriptGlobal(262145).At(37636).As() = 1; // LS Fire Department - *ScriptGlobal(262145).At(37637).As() = 1; // Forklift Operator - *ScriptGlobal(262145).At(37638).As() = 1; // Paper Route - *ScriptGlobal(262145).At(37639).As() = 1; // Lucky Clover Event + *ScriptGlobal(262145).At(37823).As() = 1; // Bomb Squad, Mansion Raid + *ScriptGlobal(262145).At(37824).As() = 1; // Knockdown + *ScriptGlobal(262145).At(37825).As() = 1; // Alpha Mail + *ScriptGlobal(262145).At(37826).As() = 1; // Meteoric, Hot Off The Press + *ScriptGlobal(262145).At(37639).As() = 1; // LS Fire Department + *ScriptGlobal(262145).At(37640).As() = 1; // Forklift Operator + *ScriptGlobal(262145).At(37641).As() = 1; // Paper Route + *ScriptGlobal(262145).At(37642).As() = 1; // Lucky Clover Event } else { From ab0773aae7720612ad398098460d6fca1ccb150c Mon Sep 17 00:00:00 2001 From: Pyxalon Date: Wed, 12 Aug 2026 19:23:30 -0400 Subject: [PATCH 02/11] Update NewYears.cpp --- .../features/recovery/DLC/Safe House/Unlocks/NewYears.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/game/features/recovery/DLC/Safe House/Unlocks/NewYears.cpp b/src/game/features/recovery/DLC/Safe House/Unlocks/NewYears.cpp index 1b56a11e..08d07bd6 100644 --- a/src/game/features/recovery/DLC/Safe House/Unlocks/NewYears.cpp +++ b/src/game/features/recovery/DLC/Safe House/Unlocks/NewYears.cpp @@ -14,8 +14,8 @@ namespace YimMenu::Features { if (*Pointers.IsSessionStarted) { - *ScriptGlobal(262145).At(33939).As() = true; // 2022 - *ScriptGlobal(262145).At(35825).As() = true; // 2023 + *ScriptGlobal(262145).At(33940).As() = true; // 2022 + *ScriptGlobal(262145).At(35826).As() = true; // 2023 } else { From 16b2f2d3fe3c0bd0c130d26eee5df1d59577c7bd Mon Sep 17 00:00:00 2001 From: Pyxalon Date: Wed, 12 Aug 2026 19:49:18 -0400 Subject: [PATCH 03/11] Update Instant-FinishStuffAndMore.cpp --- src/game/features/recovery/Instant-FinishStuffAndMore.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/game/features/recovery/Instant-FinishStuffAndMore.cpp b/src/game/features/recovery/Instant-FinishStuffAndMore.cpp index 93910c83..f9de90d9 100644 --- a/src/game/features/recovery/Instant-FinishStuffAndMore.cpp +++ b/src/game/features/recovery/Instant-FinishStuffAndMore.cpp @@ -109,13 +109,12 @@ namespace YimMenu::Features virtual void OnCall() override { - /*Unknow*/ - /**ScriptGlobal(262145).At(18451).As() = 1; + *ScriptGlobal(262145).At(18451).As() = 1; *ScriptGlobal(262145).At(18495).As() = 1; *ScriptGlobal(262145).At(18497).As() = 0; *ScriptGlobal(262145).At(18499).As() = 1; *ScriptGlobal(262145).At(18501).As() = 0; - *ScriptGlobal(262145).At(18503).As() = 1;*/ + *ScriptGlobal(262145).At(18503).As() = 1; } }; static Instant_MCBusinessSellMissions _Instant_MCBusinessSellMissions{"mcbusinesssellmissions", "MC Business Sell Missions ", "mc business sell missions"}; From cbd7e591339adf064853eff9aaad7109513a6444 Mon Sep 17 00:00:00 2001 From: Pyxalon Date: Wed, 12 Aug 2026 19:57:38 -0400 Subject: [PATCH 04/11] Update Collectibles_Unlocks.cpp --- .../features/recovery/unlocks/Collectibles_Unlocks.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/game/features/recovery/unlocks/Collectibles_Unlocks.cpp b/src/game/features/recovery/unlocks/Collectibles_Unlocks.cpp index 9a2cfb6a..098f7a3a 100644 --- a/src/game/features/recovery/unlocks/Collectibles_Unlocks.cpp +++ b/src/game/features/recovery/unlocks/Collectibles_Unlocks.cpp @@ -14,10 +14,10 @@ namespace YimMenu::Features { if (*Pointers.IsSessionStarted) { - *ScriptGlobal(262145).At(34421).As() = 1; // Pumpkins Finished - *ScriptGlobal(262145).At(34392).As() = 20; // All 20 Ghosts - *ScriptGlobal(262145).At(35268).As() = 1; // UFO Event active - *ScriptGlobal(262145).At(35269).As() = 1; // Abduction Finished + *ScriptGlobal(262145).At(34422).As() = 1; // Pumpkins Finished + *ScriptGlobal(262145).At(34393).As() = 20; // All 20 Ghosts + *ScriptGlobal(262145).At(35269).As() = 1; // UFO Event active + *ScriptGlobal(262145).At(35270).As() = 1; // Abduction Finished Stats::SetInt("XM22_FOOLIGAN_JOBS_COMPLETED", 10); Stats::SetBool("XM22_LAB_UNLOCKED", true); Stats::SetInt("RADIO_ANTENNA_COLLECTED", 10); From 3774b8b69d1c272e99ac8c7fe9d58552d2e1327c Mon Sep 17 00:00:00 2001 From: Pyxalon Date: Wed, 12 Aug 2026 20:03:37 -0400 Subject: [PATCH 05/11] Update Cooldown.cpp --- src/game/features/recovery/Cooldown.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/game/features/recovery/Cooldown.cpp b/src/game/features/recovery/Cooldown.cpp index 362d2a5c..0e3f16b9 100644 --- a/src/game/features/recovery/Cooldown.cpp +++ b/src/game/features/recovery/Cooldown.cpp @@ -60,7 +60,7 @@ namespace YimMenu::Features if (*Pointers.IsSessionStarted) { FiberPool::Push([] { - ScriptGlobal(2686095).At(4357).At(260).At(7, 2).As()->Destroy(); + ScriptGlobal(2686124).At(4373).At(260).At(7, 2).As()->Destroy(); }); STATS::STAT_SAVE(0, 0, 3, 0); } From 60a821a73d3176e5a9c6d5a03930ce9e7aa4a970 Mon Sep 17 00:00:00 2001 From: Pyxalon Date: Wed, 12 Aug 2026 20:20:44 -0400 Subject: [PATCH 06/11] Update fillVehiclewarehouse.cpp --- src/game/features/recovery/fillVehiclewarehouse.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/game/features/recovery/fillVehiclewarehouse.cpp b/src/game/features/recovery/fillVehiclewarehouse.cpp index fddb2b48..ec71af33 100644 --- a/src/game/features/recovery/fillVehiclewarehouse.cpp +++ b/src/game/features/recovery/fillVehiclewarehouse.cpp @@ -1,5 +1,5 @@ #include "core/commands/Command.hpp" -#include "game/gta/ScriptGlobal.hpp" +#include "game/gta/Stats.hpp" namespace YimMenu::Features { @@ -9,11 +9,12 @@ namespace YimMenu::Features virtual void OnCall() override { - constexpr std::size_t base = 32359; - for (int i = 0; i < 5; i++) + for (int i = 32359; i <= 32363; i++) { - ScriptGlobal(base + i).As() = true; + Stats::SetPackedBool(i, true); } + + Stats::SaveStats(); } }; From 5b56c4be625b15c833ee88e036493310193094bb Mon Sep 17 00:00:00 2001 From: Pyxalon Date: Wed, 12 Aug 2026 20:46:59 -0400 Subject: [PATCH 07/11] Update gunvan.cpp --- src/game/features/recovery/unlocks/gunvan.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/game/features/recovery/unlocks/gunvan.cpp b/src/game/features/recovery/unlocks/gunvan.cpp index 77f015b3..f188f6ef 100644 --- a/src/game/features/recovery/unlocks/gunvan.cpp +++ b/src/game/features/recovery/unlocks/gunvan.cpp @@ -193,14 +193,12 @@ namespace YimMenu::Features void OnCall() override { FiberPool::Push([] { - ScriptGlobal gunVanGlobal(2652582); + ScriptGlobal gunVanGlobal(2652584); *gunVanGlobal.At(2706).As() = _GunVanLocation.GetState(); - *gunVanGlobal.At(2707).As() = 0; }); } }; - static SetGunVanLocationCommand _SetGunVanLocation{ "setgunvanlocation", "Set Location", From b6faafa0342dfaf83cde5dd76a28169146ca8ae2 Mon Sep 17 00:00:00 2001 From: Pyxalon Date: Wed, 12 Aug 2026 21:29:40 -0400 Subject: [PATCH 08/11] Update Casino.cpp --- src/game/features/recovery/Casino.cpp | 44 +++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/game/features/recovery/Casino.cpp b/src/game/features/recovery/Casino.cpp index 72d42891..bf88a646 100644 --- a/src/game/features/recovery/Casino.cpp +++ b/src/game/features/recovery/Casino.cpp @@ -107,7 +107,51 @@ virtual void OnDisable() override *ScriptGlobal(1973325).As() = 1; } }; + static ListCommand _LuckyWheelPrize{ + "luckywheelprize", + "Lucky Wheel Prize", + "Select the outcome for the Lucky Wheel", + { + {0, "Clothing"}, + {1, "2,500 RP"}, + {2, "$20,000"}, + {3, "10,000 Chips"}, + {4, "10% Discount Voucher"}, + {5, "5,000 RP"}, + {6, "$30,000"}, + {7, "15,000 Chips"}, + {8, "Clothing"}, + {9, "7,500 RP"}, + {10, "20,000 Chips"}, + {11, "Mystery Prize"}, + {12, "Clothing"}, + {13, "10,000 RP"}, + {14, "$40,000"}, + {15, "25,000 Chips"}, + {16, "Clothing"}, + {17, "15,000 RP"}, + {18, "Podium Vehicle"}, + {19, "$50,000"}, + }}; + class SetLuckyWheelPrize : public Command + { + + using Command::Command; + + virtual void OnCall() override + { + if (auto thread = Scripts::FindScriptThread("casino_lucky_wheel"_J)) + { + const auto player = PLAYER::PLAYER_ID(); + *ScriptGlobal(262145).At(26856).As() = true; // Enable Additional Spins + *ScriptGlobal(262145).At(37458).As() = 2; // Max. Spins Per Day w/ GTA+ + *ScriptLocal(thread, 150).At(player, 5).As() = _LuckyWheelPrize.GetState(); // Results + } + } + }; + + static SetLuckyWheelPrize _SetLuckyWheelPrize{"setluckywheelprize", "Set Lucky Wheel Prize", "Sets the Lucky Wheel outcome"}; static CasinoMembershipBonus _CasinoMembershipBonus{"casino_membership_bonus", "Casino Membership Bonus", "Triggers the Casino Membership Bonus."}; static CasinoManipulateRigSlotMachines _CasinoManipulateRigSlotMachines{"casinomanipulaterigslotmachines", "Manipulate Rig Slot Machines", "Lets you win the Rig Slot Machines every time"}; } From 1c33808eb6899ae6ab9b2755ec2cb61b6d592863 Mon Sep 17 00:00:00 2001 From: Pyxalon Date: Wed, 12 Aug 2026 21:30:41 -0400 Subject: [PATCH 09/11] Update Casino.cpp --- src/game/features/recovery/Casino.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/game/features/recovery/Casino.cpp b/src/game/features/recovery/Casino.cpp index bf88a646..d90a053b 100644 --- a/src/game/features/recovery/Casino.cpp +++ b/src/game/features/recovery/Casino.cpp @@ -145,7 +145,7 @@ virtual void OnDisable() override const auto player = PLAYER::PLAYER_ID(); *ScriptGlobal(262145).At(26856).As() = true; // Enable Additional Spins *ScriptGlobal(262145).At(37458).As() = 2; // Max. Spins Per Day w/ GTA+ - *ScriptLocal(thread, 150).At(player, 5).As() = _LuckyWheelPrize.GetState(); // Results + *ScriptLocal(thread, 150).At(player, 5).As() = _LuckyWheelPrize.GetState(); // Prize outcome } } }; From 566284c1bd3d88bed78c8fd759940f76d278cb6f Mon Sep 17 00:00:00 2001 From: Pyxalon Date: Wed, 12 Aug 2026 21:34:28 -0400 Subject: [PATCH 10/11] Update Casino.cpp --- src/game/features/recovery/Casino.cpp | 53 +++++++++++++-------------- 1 file changed, 25 insertions(+), 28 deletions(-) diff --git a/src/game/features/recovery/Casino.cpp b/src/game/features/recovery/Casino.cpp index d90a053b..966bd3b1 100644 --- a/src/game/features/recovery/Casino.cpp +++ b/src/game/features/recovery/Casino.cpp @@ -3,10 +3,9 @@ #include "game/gta/Natives.hpp" #include "game/gta/ScriptLocal.hpp" #include "game/gta/Stats.hpp" -#include "core/commands/ListCommand.hpp" #include "game/backend/Tunables.hpp" #include "core/backend/ScriptMgr.hpp" - +#include "core/commands/ListCommand.hpp" #include @@ -107,32 +106,30 @@ virtual void OnDisable() override *ScriptGlobal(1973325).As() = 1; } }; - static ListCommand _LuckyWheelPrize{ - "luckywheelprize", - "Lucky Wheel Prize", - "Select the outcome for the Lucky Wheel", - { - {0, "Clothing"}, - {1, "2,500 RP"}, - {2, "$20,000"}, - {3, "10,000 Chips"}, - {4, "10% Discount Voucher"}, - {5, "5,000 RP"}, - {6, "$30,000"}, - {7, "15,000 Chips"}, - {8, "Clothing"}, - {9, "7,500 RP"}, - {10, "20,000 Chips"}, - {11, "Mystery Prize"}, - {12, "Clothing"}, - {13, "10,000 RP"}, - {14, "$40,000"}, - {15, "25,000 Chips"}, - {16, "Clothing"}, - {17, "15,000 RP"}, - {18, "Podium Vehicle"}, - {19, "$50,000"}, - }}; + + static std::vector> g_LuckyWheelPrizes = { + {0, "Clothing"}, + {1, "2,500 RP"}, + {2, "$20,000"}, + {3, "10,000 Chips"}, + {4, "10% Discount Voucher"}, + {5, "5,000 RP"}, + {6, "$30,000"}, + {7, "15,000 Chips"}, + {8, "Clothing"}, + {9, "7,500 RP"}, + {10, "20,000 Chips"}, + {11, "Mystery Prize"}, + {12, "Clothing"}, + {13, "10,000 RP"}, + {14, "$40,000"}, + {15, "25,000 Chips"}, + {16, "Clothing"}, + {17, "15,000 RP"}, + {18, "Podium Vehicle"}, + {19, "$50,000"}, + }; + static ListCommand _LuckyWheelPrize{"luckywheelprize", "Lucky Wheel Prize", "Select the Lucky Wheel prize", g_LuckyWheelPrizes, 18}; class SetLuckyWheelPrize : public Command { From 461e6fafec6503d9674ead0ec76c7c438bf80570 Mon Sep 17 00:00:00 2001 From: Pyxalon Date: Wed, 12 Aug 2026 21:35:04 -0400 Subject: [PATCH 11/11] Update Recovery.cpp --- src/game/frontend/submenus/Recovery.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/game/frontend/submenus/Recovery.cpp b/src/game/frontend/submenus/Recovery.cpp index 29ee5783..74d314c1 100644 --- a/src/game/frontend/submenus/Recovery.cpp +++ b/src/game/frontend/submenus/Recovery.cpp @@ -37,6 +37,7 @@ namespace YimMenu::Submenus auto casinoSlots = std::make_shared("Slot Machines"); auto casinoMisc = std::make_shared("Misc"); + auto casinoLuckyWheel = std::make_shared("Lucky Wheel"); //auto casinoBlackJack = std::make_shared("Blackjack"); //auto casinoRoulette = std::make_shared("Roulette"); @@ -130,6 +131,8 @@ namespace YimMenu::Submenus casinoMisc->AddItem(std::make_shared("casino_membership_bonus"_J)); + casinoLuckyWheel->AddItem(std::make_shared("luckywheelprize"_J)); + casinoLuckyWheel->AddItem(std::make_shared("setluckywheelprize"_J)); generalUnlocks->AddItem(std::make_shared("unlockallcareerprogress"_J)); @@ -252,7 +255,7 @@ namespace YimMenu::Submenus casino->AddItem(casinoSlots); casino->AddItem(casinoMisc); - + casino->AddItem(casinoLuckyWheel); unlocks->AddItem(generalUnlocks);