diff --git a/src/game/backend/PersonalVehicles.cpp b/src/game/backend/PersonalVehicles.cpp index 657f6ec..b9b2488 100644 --- a/src/game/backend/PersonalVehicles.cpp +++ b/src/game/backend/PersonalVehicles.cpp @@ -13,7 +13,7 @@ #include "types/script/globals/FreemodeGeneral.hpp" #include "types/script/globals/g_SavedMPGlobals.hpp" -#define MAX_GARAGE_NUM 33 +#define MAX_GARAGE_NUM 36 namespace YimMenu { @@ -56,6 +56,9 @@ namespace YimMenu case 30: return 415; // The Vinewood Club Garage case 31: return 515; case 32: return 537; + case 33: return 547; + case 34: return 567; + case 35: return 587; case MAX_GARAGE_NUM + 0: return 156; // Mobile Operations Center case MAX_GARAGE_NUM + 1: return 224; // Nightclub B1 case MAX_GARAGE_NUM + 2: return 223; // Terrorbyte @@ -105,6 +108,10 @@ namespace YimMenu case 26: return 20; case 29: return 50; case 30: return 100; // The Vinewood Club Garage + // mansions + case 33: + case 34: + case 35: return 20; } return -1; @@ -147,6 +154,9 @@ namespace YimMenu case 29: stat = "MPX_MULTSTOREY_GAR_OWNED"; break; case 31: stat = "MPX_PROP_BAIL_OFFICE"; break; case 32: stat = "MPX_PROP_HACKER_DEN"; break; + case 33: stat = "MPX_MANSION_TH_OWNED"; break; + case 34: stat = "MPX_MANSION_AJ_OWNED"; break; + case 35: stat = "MPX_MANSION_MD_OWNED"; break; case 30: case MAX_GARAGE_NUM + 0: case MAX_GARAGE_NUM + 1: @@ -229,6 +239,9 @@ namespace YimMenu } case 31: return HUD::GET_FILENAME_FOR_AUDIO_CONVERSATION("BO_GARNAME"); // Bail Office case 32: return HUD::GET_FILENAME_FOR_AUDIO_CONVERSATION("HD_GARNAME"); // Garment Factory + case 33: return HUD::GET_FILENAME_FOR_AUDIO_CONVERSATION("MG1_GARNAME"); // The Tongva Estate + case 34: return HUD::GET_FILENAME_FOR_AUDIO_CONVERSATION("MG2_GARNAME"); // Richman Villa + case 35: return HUD::GET_FILENAME_FOR_AUDIO_CONVERSATION("MG3_GARNAME"); // The Vinewood Residence case MAX_GARAGE_NUM + 0: return HUD::GET_FILENAME_FOR_AUDIO_CONVERSATION("GRTRUCK"); // Mobile Operations Center case MAX_GARAGE_NUM + 1: return HUD::GET_FILENAME_FOR_AUDIO_CONVERSATION("MP_BHUB_GAR0"); // Nightclub B1 case MAX_GARAGE_NUM + 2: return HUD::GET_FILENAME_FOR_AUDIO_CONVERSATION("MP_BHUB_CLUBT"); // Terrorbyte @@ -290,13 +303,13 @@ namespace YimMenu auto garageOffset = GetPropertyGarageOffset(propertyIterator); for (int garageSlotIterator = 1; garageSlotIterator <= garageSize; garageSlotIterator++) { - auto itemInSlot = *ScriptGlobal(1940530).At(garageOffset).At(garageSlotIterator).As() - 1; + auto itemInSlot = *ScriptGlobal(1944744).At(garageOffset).At(garageSlotIterator).As() - 1; if (itemInSlot == m_Id) { auto staticPropertyString = GetStaticPropertyName(propertyIterator, garageSlotIterator); if (staticPropertyString.empty()) { - m_Garage = HUD::GET_FILENAME_FOR_AUDIO_CONVERSATION(ScriptGlobal(1312335).At(propertyStatState, 1951).At(16).As()); + m_Garage = HUD::GET_FILENAME_FOR_AUDIO_CONVERSATION(ScriptGlobal(1312440).At(propertyStatState, 1951).At(16).As()); } else { @@ -365,7 +378,7 @@ namespace YimMenu ScriptMgr::Yield(100ms); - *ScriptLocal("freemode"_J, 19447).At(176).As() = 0; + *ScriptLocal("freemode"_J, 19633).At(176).As() = 0; if (bring) { diff --git a/src/game/features/network/SilencePhonecalls.cpp b/src/game/features/network/SilencePhonecalls.cpp index b72cc5b..8d7c6d2 100644 --- a/src/game/features/network/SilencePhonecalls.cpp +++ b/src/game/features/network/SilencePhonecalls.cpp @@ -10,10 +10,10 @@ namespace YimMenu::Features virtual void OnTick() override { - constexpr auto is_incoming_call = ScriptGlobal(22612); - constexpr auto is_phone_call_in_progress = ScriptGlobal(22608); - constexpr auto phone_call_state = ScriptGlobal(22602); - constexpr auto calling_character = ScriptGlobal(8391); + constexpr auto is_incoming_call = ScriptGlobal(23010); + constexpr auto is_phone_call_in_progress = ScriptGlobal(23006); + constexpr auto phone_call_state = ScriptGlobal(23000); + constexpr auto calling_character = ScriptGlobal(8779); if (*Pointers.IsSessionStarted) { diff --git a/src/game/features/recovery/Casino.cpp b/src/game/features/recovery/Casino.cpp index f2ffbbd..689fe9f 100644 --- a/src/game/features/recovery/Casino.cpp +++ b/src/game/features/recovery/Casino.cpp @@ -15,7 +15,7 @@ namespace YimMenu::Features { using LoopedCommand::LoopedCommand; - int slots_random_results_table = 1348; + int slots_random_results_table = 1374; std::set slots_blacklist = {9, 21, 22, 87, 152}; virtual void OnTick() override diff --git a/src/game/features/recovery/ClaimSafeEarnings.cpp b/src/game/features/recovery/ClaimSafeEarnings.cpp index 1eab720..9029768 100644 --- a/src/game/features/recovery/ClaimSafeEarnings.cpp +++ b/src/game/features/recovery/ClaimSafeEarnings.cpp @@ -43,43 +43,43 @@ namespace YimMenu::Features case eAppVinewoodMenuSafe::NIGHTCLUB: { if (GPBD_FM::Get()->Entries[Self::GetPlayer().GetId()].PropertyData.NightclubData.SafeCashValue > 0) - *ScriptGlobal(2708201).As() = TRUE; + *ScriptGlobal(2708832).As() = TRUE; break; } case eAppVinewoodMenuSafe::ARCADE: { if (GPBD_FM::Get()->Entries[Self::GetPlayer().GetId()].PropertyData.ArcadeData.SafeCashValue > 0) - *ScriptGlobal(2708210).As() = TRUE; + *ScriptGlobal(2708841).As() = TRUE; break; } case eAppVinewoodMenuSafe::AGENCY: { if (GPBD_FM::Get()->Entries[Self::GetPlayer().GetId()].PropertyData.FixerHQData.SafeCashValue > 0) - *ScriptGlobal(2708219).As() = TRUE; + *ScriptGlobal(2708850).As() = TRUE; break; } case eAppVinewoodMenuSafe::SALVAGE_YARD: { if (GPBD_FM::Get()->Entries[Self::GetPlayer().GetId()].PropertyData.SalvageYardData.TotalEarnings > 0) - *ScriptGlobal(2708228).As() = TRUE; + *ScriptGlobal(2708859).As() = TRUE; break; } case eAppVinewoodMenuSafe::BAIL_OFFICE: { if (GPBD_FM::Get()->Entries[Self::GetPlayer().GetId()].PropertyData.BailShopData.SafeCashValue > 0) - *ScriptGlobal(2708237).As() = TRUE; + *ScriptGlobal(2708868).As() = TRUE; break; } case eAppVinewoodMenuSafe::GARMENT_FACTORY: { if (GPBD_FM::Get()->Entries[Self::GetPlayer().GetId()].PropertyData.HackerDenData.SafeCashValue > 0) - *ScriptGlobal(2708252).As() = TRUE; + *ScriptGlobal(2708883).As() = TRUE; break; } case eAppVinewoodMenuSafe::HANDS_ON_CAR_WASH: { if (GPBD_FM_2::Get()->Entries[Self::GetPlayer().GetId()].SYVehSaleData.HOWCData.SafeCashValue > 0) - *ScriptGlobal(2708259).As() = TRUE; + *ScriptGlobal(2708890).As() = TRUE; break; } } diff --git a/src/game/features/recovery/DailyActivities.cpp b/src/game/features/recovery/DailyActivities.cpp index cc72c43..347ff4c 100644 --- a/src/game/features/recovery/DailyActivities.cpp +++ b/src/game/features/recovery/DailyActivities.cpp @@ -89,6 +89,7 @@ namespace YimMenu::Features Stats::SetPackedBool(54679, completed); // Smoke on the Water Product 8 Stats::SetPackedBool(54680, completed); // Smoke on the Water Product 9 Stats::SetPackedBool(54681, completed); // Smoke on the Water Product 10 + Stats::SetPackedBool(54735, completed); // Golden Clover // Street Dealers for (int i = 0; i < 3; ++i) { @@ -165,13 +166,13 @@ namespace YimMenu::Features static joaat_t GetNextExoticExportsVehicleHash() { - constexpr ScriptGlobal order(1946095); + constexpr ScriptGlobal order(1950369); for (int i = 1; i <= 10; i++) { auto offset = *order.At(i).As(); if (!GPBD_Flow::Get()->Entries[Self::GetPlayer().GetId()].TunerCBVDeliveredFlags.IsSet(offset)) { - auto hash = *ScriptGlobal(1946084 + (offset + 1)).As(); + auto hash = *ScriptGlobal(1950358 + (offset + 1)).As(); return hash; } } @@ -204,7 +205,7 @@ namespace YimMenu::Features } } - auto streetDealerData = ScriptLocal(m_Thread, 256).At(12); + auto streetDealerData = ScriptLocal(m_Thread, 258).At(12); if (!initialized) { @@ -527,13 +528,13 @@ namespace YimMenu::Features bool partime = Stats::GetPackedInt(34838 + (index * 4)) == location; bool landing = Stats::GetPackedInt(34839 + (index * 4)) == location; - *ScriptGlobal(1975726).As() = 1; - *ScriptGlobal(1975726).At(1).As() = 1; - *ScriptGlobal(1975726).At(3).As() = 5; - *ScriptGlobal(1975726).At(4).As() = location + 1; - *ScriptGlobal(1975726).At(8).At(1).As() = checkpointReward.Get() / (1 + (checkpoints * 9)); - *ScriptGlobal(1975726).At(8).At(2).As() = parTimeReward.Get() / (1 + (partime * 9)); - *ScriptGlobal(1975726).At(8).At(3).As() = landingReward.Get() / (1 + (landing * 9)); + *ScriptGlobal(1979960).As() = 1; + *ScriptGlobal(1979960).At(1).As() = 1; + *ScriptGlobal(1979960).At(3).As() = 5; + *ScriptGlobal(1979960).At(4).As() = location + 1; + *ScriptGlobal(1979960).At(8).At(1).As() = checkpointReward.Get() / (1 + (checkpoints * 9)); + *ScriptGlobal(1979960).At(8).At(2).As() = parTimeReward.Get() / (1 + (partime * 9)); + *ScriptGlobal(1979960).At(8).At(3).As() = landingReward.Get() / (1 + (landing * 9)); SET_SKYDIVE_COMPLETED data; data.SkydiveIndex = index; @@ -543,7 +544,7 @@ namespace YimMenu::Features data.AccurateLanding = TRUE; data.Send(); - ScriptGlobal(1979681).At(4).As*>()->Clear(3); + ScriptGlobal(1983929).At(4).As*>()->Clear(3); } }; @@ -655,8 +656,8 @@ namespace YimMenu::Features { thread->m_Context.m_State = rage::scrThread::State::PAUSED; - *ScriptLocal(thread, 3088).At(131).At(1).As() = FreemodeGeneral::Get()->DailyReset.Seed % 14; // if we don't init this, the par time duration function will return 0 and the COMPLETED stat will be set to 0, which is bad - *ScriptLocal(thread, 144).At(4).As() = 0; + *ScriptLocal(thread, 3103).At(131).At(1).As() = FreemodeGeneral::Get()->DailyReset.Seed % 14; // if we don't init this, the par time duration function will return 0 and the COMPLETED stat will be set to 0, which is bad + *ScriptLocal(thread, 146).At(4).As() = 0; static ScriptFunction onBTTEnd("fm_content_bicycle_time_trial"_J, ScriptPointer("OnBTTEnd", "64 ? ? ? 5D ? ? ? 75 77").Add(1).Rip()); onBTTEnd.Call(); @@ -795,8 +796,8 @@ namespace YimMenu::Features { for (int i = 0; i < 3; i++) { - int combination = *ScriptLocal(thread, 144).At(22).At(i, 2).At(1).As(); - *ScriptLocal(thread, 144).At(22).At(i, 2).As() = combination; + int combination = *ScriptLocal(thread, 146).At(22).At(i, 2).At(1).As(); + *ScriptLocal(thread, 146).At(22).At(i, 2).As() = combination; } } } @@ -812,7 +813,7 @@ namespace YimMenu::Features return; static ScriptFunction getStreetDealerCoords("freemode"_J, - ScriptPointer("GetStreetDealerCoords", "5D ? ? ? 5D ? ? ? 5D ? ? ? 18").Add(1).Rip()); + ScriptPointer("GetStreetDealerCoords", "5D ? ? ? 5D ? ? ? 5D ? ? ? 18 1F").Add(1).Rip()); if (auto coords = getStreetDealerCoords.Call( FreemodeGeneral::Get()->StreetDealers.Dealers[streetDealerIndex.GetState()].Location)) Self::GetPed().TeleportTo(coords); @@ -914,7 +915,7 @@ namespace YimMenu::Features if (auto thread = Scripts::FindScriptThread("fm_content_daily_bounty"_J)) { - if (auto coords = *ScriptLocal(thread, 241).At(434).At(1).At(0, 4).As()) + if (auto coords = *ScriptLocal(thread, 243).At(434).At(1).At(0, 4).As()) { Self::GetPed().TeleportTo(coords); } @@ -961,9 +962,9 @@ namespace YimMenu::Features if (index < 0 || index >= wildlifePhotographyAnimalHashes.size()) return; - ScriptGlobal(2708777).At(544).As*>()->Set(6); - *ScriptGlobal(2708777).At(548).As() = wildlifePhotographyAnimalHashes[index]; - *ScriptGlobal(2708777).At(549).As() = *Pointers.GameTimer - 1; // bypass 2 sec delay + ScriptGlobal(2709409).At(545).As*>()->Set(6); + *ScriptGlobal(2709409).At(549).As() = wildlifePhotographyAnimalHashes[index]; + *ScriptGlobal(2709409).At(550).As() = *Pointers.GameTimer - 1; // bypass 2 sec delay } else { @@ -1024,6 +1025,46 @@ namespace YimMenu::Features } }; + class TeleportToGoldenClover : public Command + { + using Command::Command; + + virtual void OnCall() override + { + if (!*Pointers.IsSessionStarted) + return; + + if (!Stats::GetPackedBool(54735)) + { + TeleportToCollectable(SCRIPT_EVENT_COLLECT_COLLECTABLE::eCollectables::GoldenClover, 0); + } + else + { + Notifications::Show("Golden Clover", "Golden Clover has already been collected.", NotificationType::Error); + } + } + }; + + class CollectGoldenClover : public Command + { + using Command::Command; + + virtual void OnCall() override + { + if (!*Pointers.IsSessionStarted) + return; + + if (!Stats::GetPackedBool(54735)) + { + CollectCollectable(SCRIPT_EVENT_COLLECT_COLLECTABLE::eCollectables::GoldenClover, 0); + } + else + { + Notifications::Show("Golden Clover", "Golden Clover has already been collected.", NotificationType::Error); + } + } + }; + static SetAllActivitiesCompleted _SetAllActivitiesCompleted{"setallactivitiescompleted", "Set All Activities Completed", "Switch session to apply the changes."}; static ResetAllActivities _ResetAllActivities{"resetallactivities", "Reset All Activities", "Switch session to apply the changes."}; @@ -1072,4 +1113,7 @@ namespace YimMenu::Features static TeleportToProduct _TeleportToProduct{"tptoproduct", "Teleport to Product", "Teleports to the selected product."}; static CollectProduct _CollectProduct{"collectproduct", "Collect Product", "Collects the selected product."}; + + static TeleportToGoldenClover _TeleportToGoldenClover{"tptogoldenclover", "Teleport to Golden Clover", "Teleports to the Golden Clover."}; + static CollectGoldenClover _CollectGoldenClover{"collectgoldenclover", "Collect Golden Clover", "Collects the Golden Clover."}; } \ No newline at end of file diff --git a/src/game/features/recovery/Heist/ApartmentHeist.cpp b/src/game/features/recovery/Heist/ApartmentHeist.cpp index 4d40cf4..bcd0ed7 100644 --- a/src/game/features/recovery/Heist/ApartmentHeist.cpp +++ b/src/game/features/recovery/Heist/ApartmentHeist.cpp @@ -22,8 +22,8 @@ namespace YimMenu::Features virtual void OnCall() override { - auto base1 = ScriptGlobal(1931800).At(1); - auto base2 = ScriptGlobal(1933768).At(3008); + auto base1 = ScriptGlobal(1936013).At(1); + auto base2 = ScriptGlobal(1937981).At(3008); *base1.At(0, 1).As() = 100 - (_ApartmentHeistCut1.GetState() + _ApartmentHeistCut2.GetState() + _ApartmentHeistCut3.GetState() + _ApartmentHeistCut4.GetState()); *base1.At(1, 1).As() = _ApartmentHeistCut2.GetState(); @@ -75,8 +75,8 @@ namespace YimMenu::Features { if (auto thread = Scripts::FindScriptThread("fm_mission_controller"_J)) { - *ScriptLocal(thread, 12220).At(24).As() = 7; - *ScriptLocal(thread, 10215).As() = *ScriptLocal(thread, 10215).As() | (1 << 9); + *ScriptLocal(thread, 12223).At(24).As() = 7; + *ScriptLocal(thread, 10217).As() = *ScriptLocal(thread, 10217).As() | (1 << 9); } } }; @@ -89,7 +89,7 @@ namespace YimMenu::Features { if (auto thread = Scripts::FindScriptThread("fm_mission_controller"_J)) { - *ScriptLocal(thread, 10509).At(11).As() = 100.0f; + *ScriptLocal(thread, 10511).At(11).As() = 100.0f; } } }; @@ -105,10 +105,10 @@ namespace YimMenu::Features Scripts::ForceScriptHost(thread); ScriptMgr::Yield(500ms); - *ScriptLocal(thread, 20391).At(1725).At(0, 1).As() = 80; - *ScriptLocal(thread, 20391).As() = 12; - *ScriptLocal(thread, 29011).At(0, 1).As() = 99999; - *ScriptLocal(thread, 32467).At(0, 294).At(68).As() = 99999; + *ScriptLocal(thread, 20395).At(1725).At(0, 1).As() = 80; + *ScriptLocal(thread, 20395).As() = 12; + *ScriptLocal(thread, 29016).At(0, 1).As() = 99999; + *ScriptLocal(thread, 32472).At(0, 294).At(68).As() = 99999; } // TODO: find a way of getting current heist info so that InstantFinishPacific can be implemented here conditionally. } @@ -125,11 +125,11 @@ namespace YimMenu::Features Scripts::ForceScriptHost(thread); ScriptMgr::Yield(500ms); - *ScriptLocal(thread, 20391).At(2686).As() = 1875000; - *ScriptLocal(thread, 20391).At(1062).As() = 5; - *ScriptLocal(thread, 20391).As() = 12; - *ScriptLocal(thread, 29011).At(0, 1).As() = 99999; - *ScriptLocal(thread, 32467).At(0, 294).At(68).As() = 99999; + *ScriptLocal(thread, 20395).At(2686).As() = 1875000; + *ScriptLocal(thread, 20395).At(1062).As() = 5; + *ScriptLocal(thread, 20395).As() = 12; + *ScriptLocal(thread, 29016).At(0, 1).As() = 99999; + *ScriptLocal(thread, 32472).At(0, 294).At(68).As() = 99999; } } }; diff --git a/src/game/features/recovery/Heist/CayoPericoHeist.cpp b/src/game/features/recovery/Heist/CayoPericoHeist.cpp index 61d6bf4..c2440d2 100644 --- a/src/game/features/recovery/Heist/CayoPericoHeist.cpp +++ b/src/game/features/recovery/Heist/CayoPericoHeist.cpp @@ -25,7 +25,7 @@ namespace YimMenu::Features virtual void OnCall() override { - auto base = ScriptGlobal(1975799).At(831).At(56); + auto base = ScriptGlobal(1980034).At(831).At(56); *base.At(0, 1).As() = _CayoPericoHeistCut1.GetState(); *base.At(1, 1).As() = _CayoPericoHeistCut2.GetState(); @@ -40,7 +40,7 @@ namespace YimMenu::Features virtual void OnCall() override { - auto base = ScriptGlobal(1976911); + auto base = ScriptGlobal(1981146); for (int i = 0; i <= 3; i++) { @@ -123,7 +123,7 @@ namespace YimMenu::Features ScriptMgr::Yield(500ms); if (auto thread = Scripts::FindScriptThread("heist_island_planning"_J)) - *ScriptLocal(thread, 1568).As() = 2; + *ScriptLocal(thread, 1570).As() = 2; } }; @@ -195,7 +195,7 @@ namespace YimMenu::Features virtual void OnCall() override { if (auto thread = Scripts::FindScriptThread("fm_mission_controller_2020"_J)) - *ScriptLocal(thread, 58222).At(1357).At(53).As() = _CayoPericoHeistSecondaryTakeValue.GetState(); + *ScriptLocal(thread, 59705).At(1376).At(53).As() = _CayoPericoHeistSecondaryTakeValue.GetState(); } }; @@ -206,7 +206,7 @@ namespace YimMenu::Features virtual void OnCall() override { if (auto thread = Scripts::FindScriptThread("fm_mission_controller_2020"_J)) - *ScriptLocal(thread, 25460).As() = 5; + *ScriptLocal(thread, 26486).As() = 5; } }; @@ -217,7 +217,7 @@ namespace YimMenu::Features virtual void OnCall() override { if (auto thread = Scripts::FindScriptThread("fm_mission_controller_2020"_J)) - *ScriptLocal(thread, 30285).As() = 6; + *ScriptLocal(thread, 31349).As() = 6; } }; @@ -228,7 +228,7 @@ namespace YimMenu::Features virtual void OnCall() override { if (auto thread = Scripts::FindScriptThread("fm_mission_controller_2020"_J)) - *ScriptLocal(thread, 31525).At(3).As() = 100.0f; + *ScriptLocal(thread, 32589).At(3).As() = 100.0f; } }; @@ -258,12 +258,12 @@ namespace YimMenu::Features case 1: case 3: case 5: - *ScriptLocal(thread, 31524).As() = 5; - *ScriptLocal(thread, 31525).As() = 3; + *ScriptLocal(thread, 32588).As() = 5; + *ScriptLocal(thread, 32589).As() = 3; break; case 2: case 4: - *ScriptLocal(thread, 31499).As() = 7; + *ScriptLocal(thread, 32563).As() = 7; break; default: break; } @@ -287,8 +287,8 @@ namespace YimMenu::Features Scripts::ForceScriptHost(thread); ScriptMgr::Yield(500ms); - *ScriptLocal(thread, 54763).As() = 9; - *ScriptLocal(thread, 54763).At(1776).At(0, 1).As() = 50; + *ScriptLocal(thread, 56223).As() = 9; + *ScriptLocal(thread, 56223).At(1776).At(0, 1).As() = 50; } } }; diff --git a/src/game/features/recovery/Heist/DiamondCasinoHeist.cpp b/src/game/features/recovery/Heist/DiamondCasinoHeist.cpp index 980c839..74907a6 100644 --- a/src/game/features/recovery/Heist/DiamondCasinoHeist.cpp +++ b/src/game/features/recovery/Heist/DiamondCasinoHeist.cpp @@ -23,7 +23,7 @@ namespace YimMenu::Features virtual void OnCall() override { - auto base = ScriptGlobal(1968996).At(1497).At(736).At(92); + auto base = ScriptGlobal(1973230).At(1497).At(736).At(92); *base.At(0, 1).As() = _DiamondCasinoHeistCut1.GetState(); *base.At(1, 1).As() = _DiamondCasinoHeistCut2.GetState(); @@ -38,7 +38,7 @@ namespace YimMenu::Features virtual void OnCall() override { - auto base = ScriptGlobal(1973359); + auto base = ScriptGlobal(1977593); for (int i = 0; i <= 3; i++) { @@ -302,7 +302,7 @@ namespace YimMenu::Features virtual void OnCall() override { if (auto thread = Scripts::FindScriptThread("fm_mission_controller"_J)) - *ScriptLocal(thread, 20391).At(2686).As() = _DiamondCasinoHeistActualTake.GetState(); + *ScriptLocal(thread, 20395).At(2686).As() = _DiamondCasinoHeistActualTake.GetState(); } }; @@ -314,8 +314,8 @@ namespace YimMenu::Features { if (auto thread = Scripts::FindScriptThread("fm_mission_controller"_J)) { - *ScriptLocal(thread, 54037).As() = 5; - *ScriptLocal(thread, 55103).As() = 5; + *ScriptLocal(thread, 54042).As() = 5; + *ScriptLocal(thread, 55108).As() = 5; } } }; @@ -327,7 +327,7 @@ namespace YimMenu::Features virtual void OnCall() override { if (auto thread = Scripts::FindScriptThread("fm_mission_controller"_J)) - *ScriptLocal(thread, 10549).At(7).As() = *ScriptLocal(thread, 10549).At(37).As(); + *ScriptLocal(thread, 10551).At(7).As() = *ScriptLocal(thread, 10551).At(37).As(); } }; @@ -342,12 +342,12 @@ namespace YimMenu::Features Scripts::ForceScriptHost(thread); ScriptMgr::Yield(500ms); - *ScriptLocal(thread, 20391).At(1740).At(0, 1).As() = 80; - *ScriptLocal(thread, 20391).At(2686).As() = 4443220; - *ScriptLocal(thread, 20391).At(1062).As() = 5; - *ScriptLocal(thread, 20391).As() = 12; - *ScriptLocal(thread, 29011).At(0, 1).As() = 99999; - *ScriptLocal(thread, 32467).At(0, 294).At(68).As() = 99999; + *ScriptLocal(thread, 20395).At(1740).At(0, 1).As() = 80; + *ScriptLocal(thread, 20395).At(2686).As() = 4443220; + *ScriptLocal(thread, 20395).At(1062).As() = 5; + *ScriptLocal(thread, 20395).As() = 12; + *ScriptLocal(thread, 29016).At(0, 1).As() = 99999; + *ScriptLocal(thread, 32472).At(0, 294).At(68).As() = 99999; } } }; diff --git a/src/game/features/recovery/Heist/DoomsdayHeist.cpp b/src/game/features/recovery/Heist/DoomsdayHeist.cpp index ed33013..5b4eeb6 100644 --- a/src/game/features/recovery/Heist/DoomsdayHeist.cpp +++ b/src/game/features/recovery/Heist/DoomsdayHeist.cpp @@ -5,6 +5,7 @@ #include "game/gta/ScriptGlobal.hpp" #include "game/gta/ScriptLocal.hpp" #include "core/backend/ScriptMgr.hpp" +#include "types/script/globals/GPBD_FM_2.hpp" namespace YimMenu::Features { @@ -21,7 +22,7 @@ namespace YimMenu::Features virtual void OnCall() override { - auto base = ScriptGlobal(1964170).At(812).At(50); + auto base = ScriptGlobal(1968543).At(812).At(50); *base.At(0, 1).As() = _DoomsdayHeistCut1.GetState(); *base.At(1, 1).As() = _DoomsdayHeistCut2.GetState(); @@ -36,11 +37,12 @@ namespace YimMenu::Features virtual void OnCall() override { - auto base = ScriptGlobal(1882449); - - for (int i = 0; i <= 3; i++) + if (auto gpbd_fm_2 = GPBD_FM_2::Get()) { - *base.At(i, 201).At(43).At(11).At(i, 1).As() = 1; + gpbd_fm_2->Entries[0].GangopsData.ArePlayersReady[0] = TRUE; + gpbd_fm_2->Entries[1].GangopsData.ArePlayersReady[1] = TRUE; + gpbd_fm_2->Entries[2].GangopsData.ArePlayersReady[2] = TRUE; + gpbd_fm_2->Entries[3].GangopsData.ArePlayersReady[3] = TRUE; } } }; @@ -81,7 +83,7 @@ namespace YimMenu::Features ScriptMgr::Yield(500ms); if (auto thread = Scripts::FindScriptThread("gb_gang_ops_planning"_J)) - *ScriptLocal(thread, 209).As() = 6; + *ScriptLocal(thread, 211).As() = 6; } }; @@ -93,9 +95,9 @@ namespace YimMenu::Features { if (auto thread = Scripts::FindScriptThread("fm_mission_controller"_J)) { - *ScriptLocal(thread, 1570).As() = 2; - *ScriptLocal(thread, 1539).As() = 3; - *ScriptLocal(thread, 1296).At(135).As() = 3; + *ScriptLocal(thread, 1572).As() = 2; + *ScriptLocal(thread, 1541).As() = 3; + *ScriptLocal(thread, 1298).At(135).As() = 3; } } }; @@ -111,10 +113,10 @@ namespace YimMenu::Features Scripts::ForceScriptHost(thread); ScriptMgr::Yield(500ms); - *ScriptLocal(thread, 20391).At(1725).At(0, 1).As() = 80; - *ScriptLocal(thread, 20391).As() = 12; - *ScriptLocal(thread, 29011).At(0, 1).As() = 99999; - *ScriptLocal(thread, 32467).At(0, 294).At(68).As() = 99999; + *ScriptLocal(thread, 20395).At(1725).At(0, 1).As() = 80; + *ScriptLocal(thread, 20395).As() = 12; + *ScriptLocal(thread, 29016).At(0, 1).As() = 99999; + *ScriptLocal(thread, 32472).At(0, 294).At(68).As() = 99999; } // TODO: find a way of getting current heist info so that InstantFinishAct3 can be implemented here conditionally. } @@ -131,11 +133,11 @@ namespace YimMenu::Features Scripts::ForceScriptHost(thread); ScriptMgr::Yield(500ms); - *ScriptLocal(thread, 20391).As() = 12; - *ScriptLocal(thread, 20391).At(1740).At(0, 1).As() = 150; - *ScriptLocal(thread, 20391).At(1062).As() = 5; - *ScriptLocal(thread, 29011).At(0, 1).As() = 99999; - *ScriptLocal(thread, 32467).At(0, 294).At(68).As() = 99999; + *ScriptLocal(thread, 20395).As() = 12; + *ScriptLocal(thread, 20395).At(1740).At(0, 1).As() = 150; + *ScriptLocal(thread, 20395).At(1062).As() = 5; + *ScriptLocal(thread, 29016).At(0, 1).As() = 99999; + *ScriptLocal(thread, 32472).At(0, 294).At(68).As() = 99999; } } }; diff --git a/src/game/features/recovery/UnlockGTAPlus.cpp b/src/game/features/recovery/UnlockGTAPlus.cpp index ef5eaa3..748faa0 100644 --- a/src/game/features/recovery/UnlockGTAPlus.cpp +++ b/src/game/features/recovery/UnlockGTAPlus.cpp @@ -18,8 +18,8 @@ namespace YimMenu::Features virtual void OnTick() override { *Pointers.HasGTAPlus = true; - *ScriptGlobal(1965683).As() = true; - *ScriptGlobal(1965683).At(3).As() = (1 << 3) | (1 << 1); + *ScriptGlobal(1970056).As() = true; + *ScriptGlobal(1970056).At(3).As() = (1 << 3) | (1 << 1); } virtual void OnDisable() override diff --git a/src/game/features/self/OpenWardrobe.cpp b/src/game/features/self/OpenWardrobe.cpp index 1855b06..6e58472 100644 --- a/src/game/features/self/OpenWardrobe.cpp +++ b/src/game/features/self/OpenWardrobe.cpp @@ -105,7 +105,7 @@ namespace YimMenu::Features { if (auto thread = Scripts::FindScriptThread("wardrobe_mp"_J)) { - if (*ScriptLocal(thread, 189).At(46).At(9).As() == 4) + if (*ScriptLocal(thread, 191).At(46).At(9).As() == 4) { shouldCleanupWardrobePatch->Disable(); isWardrobeOpenedPatch->Disable(); diff --git a/src/game/features/vehicle/CallMechanic.cpp b/src/game/features/vehicle/CallMechanic.cpp index 41c4cbb..01ad3cb 100644 --- a/src/game/features/vehicle/CallMechanic.cpp +++ b/src/game/features/vehicle/CallMechanic.cpp @@ -24,8 +24,8 @@ namespace YimMenu::Features if (auto freemode = Scripts::FindScriptThread("freemode"_J)) { - auto data = ScriptLocal(freemode, 8748); - *data.At(3).As() = 223; + auto data = ScriptLocal(freemode, 8819); + *data.At(3).As() = 230; *data.At(3).At(16).As() = Self::GetPlayer().GetId(); *data.At(3).At(1).As() = 89; *data.At(2).As() = "AM_CONTACT_REQUESTS"_J; @@ -35,8 +35,8 @@ namespace YimMenu::Features { if (auto thread = Scripts::FindScriptThreadByID(id)) { - *ScriptLocal(thread, 521).As() = 1; - ScriptGlobal(2685690).At(4347).At(254).At(7, 2).As()->Destroy(); + *ScriptLocal(thread, 528).As() = 1; + ScriptGlobal(2686095).At(4357).At(260).At(7, 2).As()->Destroy(); } } else diff --git a/src/game/frontend/submenus/Network/RandomEvents.cpp b/src/game/frontend/submenus/Network/RandomEvents.cpp index 87a6aab..ce31461 100644 --- a/src/game/frontend/submenus/Network/RandomEvents.cpp +++ b/src/game/frontend/submenus/Network/RandomEvents.cpp @@ -41,6 +41,9 @@ namespace YimMenu::Submenus GHOSTHUNT, XMAS_TRUCK, COMMUNITY_OUTREACH, + GETAWAY_DRIVER, + SURVIVAL_GROUPING, + VALENTINE_CHEATER, MAX_EVENTS }; @@ -90,8 +93,8 @@ namespace YimMenu::Submenus { if (event == ARMOURED_TRUCK) // It doesn't have tunables { - setCooldown = *ScriptGlobal(262145).At(33719).As(); - setAvailability = *ScriptGlobal(262145).At(33720).As(); + setCooldown = *ScriptGlobal(262145).At(33807).As(); + setAvailability = *ScriptGlobal(262145).At(33808).As(); } else { diff --git a/src/game/frontend/submenus/Recovery/DailyActivities.cpp b/src/game/frontend/submenus/Recovery/DailyActivities.cpp index e4bc642..bf94d6c 100644 --- a/src/game/frontend/submenus/Recovery/DailyActivities.cpp +++ b/src/game/frontend/submenus/Recovery/DailyActivities.cpp @@ -21,6 +21,7 @@ namespace YimMenu::Submenus auto madrazoHitsTab = std::make_shared("Madrazo Hits"); auto wildlifePhotography = std::make_shared("Shoot Animals Photography"); auto smokeOnTheWater = std::make_shared("Smoke on the Water"); + auto goldenClover = std::make_shared("Golden Clover"); dailyActivities->AddItem(std::make_shared("setallactivitiescompleted"_J)); dailyActivities->AddItem(std::make_shared("resetallactivities"_J)); @@ -81,6 +82,9 @@ namespace YimMenu::Submenus smokeOnTheWater->AddItem(std::make_shared("tptoproduct"_J)); smokeOnTheWater->AddItem(std::make_shared("collectproduct"_J)); + goldenClover->AddItem(std::make_shared("tptogoldenclover"_J)); + goldenClover->AddItem(std::make_shared("collectgoldenclover"_J)); + dailyActivities->AddItem(std::move(challengesTab)); dailyActivities->AddItem(std::move(hiddenCacheTab)); dailyActivities->AddItem(std::move(treasureChestTab)); @@ -96,6 +100,7 @@ namespace YimMenu::Submenus dailyActivities->AddItem(std::move(madrazoHitsTab)); dailyActivities->AddItem(std::move(wildlifePhotography)); dailyActivities->AddItem(std::move(smokeOnTheWater)); + dailyActivities->AddItem(std::move(goldenClover)); return dailyActivities; } } \ No newline at end of file diff --git a/src/game/gta/Network.cpp b/src/game/gta/Network.cpp index 1564328..e5c4de2 100644 --- a/src/game/gta/Network.cpp +++ b/src/game/gta/Network.cpp @@ -19,7 +19,7 @@ namespace YimMenu::Network void LaunchJoinType(JoinType to_launch) { static ScriptFunction sendToClouds("shop_controller"_J, ScriptPointer("SendToClouds", "2D 00 02 00 00 72 5D ? ? ? 72")); - static ScriptGlobal join_type_global(1575040); + static ScriptGlobal join_type_global(1575044); sendToClouds.Call(); *join_type_global.As() = to_launch; diff --git a/src/game/gta/Scripts.cpp b/src/game/gta/Scripts.cpp index ac7b698..eda79e1 100644 --- a/src/game/gta/Scripts.cpp +++ b/src/game/gta/Scripts.cpp @@ -325,7 +325,7 @@ namespace YimMenu::Scripts rand_int_2 ^= (random_int ^ -2024791401); // TODO: this is a pretty ghetto way to create random numbers rand_int_2 ^= (random_int ^ 917391583); - auto bypass_global = ScriptGlobal(1986361); // this global will bypass the new checks added this update + auto bypass_global = ScriptGlobal(1990822); // this global will bypass the new checks added this update auto old_val = *bypass_global.As(); *bypass_global.As() = rand_int_2 ^ rand() ^ time(0); diff --git a/src/game/gta/data/LauncherScripts.hpp b/src/game/gta/data/LauncherScripts.hpp index e3329ad..0e958ed 100644 --- a/src/game/gta/data/LauncherScripts.hpp +++ b/src/game/gta/data/LauncherScripts.hpp @@ -223,6 +223,13 @@ namespace YimMenu "fm_content_weed_shop_delivery"_J, "fm_content_tycoon_odd_jobs"_J, "fm_content_cutscene"_J, + "fm_content_firefighter"_J, + "fm_content_forklift_operator"_J, + "fm_content_postal_worker"_J, + "fm_content_getaway_driver"_J, + "fm_content_survival_grouping"_J, + "fm_content_valentine_cheater"_J, + "fm_content_survival"_J, "AM_BOAT_TAXI"_J, "AM_HELI_TAXI"_J, "fm_hold_up_tut"_J, @@ -251,9 +258,9 @@ namespace YimMenu "fm_Bj_race_controler"_J, "fm_deathmatch_controler"_J, "fm_hideout_controler"_J, - "fm_mission_controller"_J, + "fm_mission_controller_2020"_J, // Public_Mission_Controller, fm_mission_controller "FM_Race_Controler"_J, - "FM_Horde_Controler"_J, + "FM_Horde_Controler"_J, // FM_Survival_Controller "dont_cross_the_line"_J, "am_darts_apartment"_J, "AM_Armwrestling_Apartment"_J, @@ -264,11 +271,13 @@ namespace YimMenu "gunslinger_arcade"_J, "wizard_arcade"_J, "AM_CASINO_LIMO"_J, + "AM_MANSION_LIMO"_J, "AM_CASINO_LUXURY_CAR"_J, + "AM_MANSION_LUXURY_CAR"_J, "Degenatron Games"_J, "ggsm_arcade"_J, "puzzle"_J, "camhedz_arcade"_J, - "SCTV"_J, + "SCTV"_J }); } \ No newline at end of file diff --git a/src/game/gta/data/PedModels.hpp b/src/game/gta/data/PedModels.hpp index 11bdab8..1fc6c8c 100644 --- a/src/game/gta/data/PedModels.hpp +++ b/src/game/gta/data/PedModels.hpp @@ -3,9 +3,10 @@ namespace YimMenu { constexpr auto g_PedModels = std::to_array({ - "a_c_boar", + "a_c_boar", "a_c_boar_02", "a_c_cat_01", + "a_c_cat_02", "a_c_chickenhawk", "a_c_chimp", "a_c_chimp_02", @@ -269,6 +270,7 @@ namespace YimMenu "a_m_y_vinewood_04", "a_m_y_yoga_01", "cs_amandatownley", + "cs_amandatownley_02", "cs_andreas", "cs_ashley", "cs_bankman", @@ -368,6 +370,7 @@ namespace YimMenu "csb_ary", "csb_ary_02", "csb_avery", + "csb_avi_04", "csb_avischwartzman_02", "csb_avischwartzman_03", "csb_avon", @@ -386,8 +389,8 @@ namespace YimMenu "csb_celeb_01", "csb_charlie_reed", "csb_chef", - "csb_chef2", "csb_chef_03", + "csb_chef2", "csb_chin_goon", "csb_cletus", "csb_cop", @@ -399,6 +402,7 @@ namespace YimMenu "csb_drugdealer", "csb_englishdave", "csb_englishdave_02", + "csb_faber_02", "csb_fos_rep", "csb_g", "csb_georginacheng", @@ -512,6 +516,7 @@ namespace YimMenu "g_m_m_friedlandergoons_01", "g_m_m_genthug_01", "g_m_m_goons_01", + "g_m_m_knoway_01", "g_m_m_korboss_01", "g_m_m_maragrande_01", "g_m_m_mexboss_01", @@ -556,16 +561,18 @@ namespace YimMenu "ig_acidlabcook", "ig_agatha", "ig_agent", - "ig_agent14_02", "ig_agent_02", + "ig_agent14_02", "ig_ahronward", "ig_amandatownley", + "ig_amandatownley_02", "ig_andreas", "ig_armsmanufac_01", "ig_ary", "ig_ary_02", "ig_ashley", "ig_avery", + "ig_avi_04", "ig_avischwartzman_02", "ig_avischwartzman_03", "ig_avon", @@ -595,8 +602,8 @@ namespace YimMenu "ig_celeb_01", "ig_charlie_reed", "ig_chef", - "ig_chef2", "ig_chef_03", + "ig_chef2", "ig_chengsr", "ig_chrisformage", "ig_clay", @@ -630,8 +637,10 @@ namespace YimMenu "ig_englishdave_02", "ig_entourage_a", "ig_entourage_b", + "ig_faber_02", "ig_fabien", "ig_fbisuit_01", + "ig_fibleader_01", "ig_floyd", "ig_fooliganz_01", "ig_fooliganz_02", @@ -792,6 +801,7 @@ namespace YimMenu "ig_tylerdix_02", "ig_vagos_leader", "ig_vagspeak", + "ig_valencheat", "ig_valentina", "ig_vernon", "ig_vincent", @@ -847,6 +857,7 @@ namespace YimMenu "mp_m_weed_01", "mp_s_m_armoured_01", "p_franklin_02", + "p_michael_02", "player_one", "player_two", "player_zero", @@ -914,6 +925,7 @@ namespace YimMenu "s_m_m_highsec_03", "s_m_m_highsec_04", "s_m_m_highsec_05", + "s_m_m_highsec_06", "s_m_m_janitor", "s_m_m_lathandy_01", "s_m_m_lifeinvad_01", @@ -1001,9 +1013,9 @@ namespace YimMenu "s_m_y_xmech_01", "s_m_y_xmech_02", "s_m_y_xmech_02_mp", - // "slod_human", you don't want to spawn these - // "slod_large_quadped", - // "slod_small_quadped", + // "slod_human", you don't want to spawn these + // "slod_large_quadped", + // "slod_small_quadped", "u_f_m_casinocash_01", "u_f_m_casinoshop_01", "u_f_m_corpse_01", @@ -1099,6 +1111,6 @@ namespace YimMenu "u_m_y_staggrm_01", "u_m_y_tattoo_01", "u_m_y_ushi", - "u_m_y_zombie_01", - }); + "u_m_y_zombie_01" + }); } \ No newline at end of file diff --git a/src/game/gta/data/RandomEvents.hpp b/src/game/gta/data/RandomEvents.hpp index fb24ae8..78dd8f5 100644 --- a/src/game/gta/data/RandomEvents.hpp +++ b/src/game/gta/data/RandomEvents.hpp @@ -23,7 +23,11 @@ namespace YimMenu "Possessed Animals", "Ghosts Exposed", "Happy Holidays Hauler", - "Community Outreach"}); + "Community Outreach", + "Getaway Driver", + "Stoner Survival", + "Valentine Cheater", + }); static constexpr auto randomEventScripts = std::to_array({"fm_content_drug_vehicle"_J, "fm_content_movie_props"_J, @@ -45,7 +49,11 @@ namespace YimMenu "fm_content_possessed_animals"_J, "fm_content_ghosthunt"_J, "fm_content_xmas_truck"_J, - "fm_content_community_outreach"_J}); + "fm_content_community_outreach"_J, + "fm_content_getaway_driver"_J, + "fm_content_survival_grouping"_J, + "fm_content_valentine_cheater"_J, + }); static constexpr auto randomEventCooldowns = std::to_array({ "SUM22_RE_DRUG_VEHICLE_INACTIVE_TIME"_J, @@ -54,7 +62,7 @@ namespace YimMenu "SUM22_RE_VEHICLE_LIST_INACTIVE_TIME"_J, "STANDARDCONTROLLERVOLUME_COOLDOWN"_J, "STANDARDTARGETTINGTIME_COOLDOWN"_J, - "SSP2_COOLDOWN"_J + "SSP2_COOLDOWN"_J, "SUM22_RE_SMUGGLER_TRAIL_INACTIVE_TIME"_J, "NC_SOURCE_TRUCK_COOLDOWN"_J, "SUM22_RE_SMUGGLER_PLANE_INACTIVE_TIME"_J, @@ -69,6 +77,9 @@ namespace YimMenu "SUM23_RE_GHOSTHUNT_INACTIVE_TIME"_J, "XMAS_TRUCK_INACTIVE_TIME"_J, "RE_COMMUNITY_OUTREACH_INACTIVE_TIME"_J, + "RE_GETAWAY_DRIVER_INACTIVE_TIME"_J, + "RE_SURVIVAL_GROUPING_INACTIVE_TIME"_J, + "RE_VALENTINES_CHEATER_INACTIVE_TIME"_J, }); static constexpr auto randomEventAvailabilities = std::to_array({ @@ -93,5 +104,8 @@ namespace YimMenu "SUM23_RE_GHOSTHUNT_AVAILABLE_TIME"_J, "XMAS_TRUCK_AVAILABLE_TIME"_J, "RE_COMMUNITY_OUTREACH_AVAILABLE_TIME"_J, + "RE_GETAWAY_DRIVER_AVAILABLE_TIME"_J, + "RE_SURVIVAL_GROUPING_AVAILABLE_TIME"_J, + "RE_VALENTINES_CHEATER_AVAILABLE_TIME"_J, }); } \ No newline at end of file diff --git a/src/game/gta/data/ScriptNames.hpp b/src/game/gta/data/ScriptNames.hpp index 1481f7d..27f27ee 100644 --- a/src/game/gta/data/ScriptNames.hpp +++ b/src/game/gta/data/ScriptNames.hpp @@ -83,6 +83,8 @@ namespace YimMenu "am_lowrider_int", "am_lsia_take_off_cinematic", "am_luxury_showroom", + "am_mansion_limo", + "am_mansion_luxury_car", "am_mission_launch", "am_mp_acid_lab", "am_mp_arcade", @@ -123,6 +125,9 @@ namespace YimMenu "am_mp_ie_warehouse", "am_mp_island", "am_mp_juggalo_hideout", + "am_mp_mansion", + "am_mp_mansion_driveway", + "am_mp_mansion_garage", "am_mp_multistorey_garage", "am_mp_music_studio", "am_mp_nightclub", @@ -468,6 +473,9 @@ namespace YimMenu "fm_content_drug_lab_work", "fm_content_drug_vehicle", "fm_content_export_cargo", + "fm_content_firefighter", + "fm_content_forklift_operator", + "fm_content_getaway_driver", "fm_content_ghosthunt", "fm_content_golden_gun", "fm_content_gunrunning", @@ -493,6 +501,7 @@ namespace YimMenu "fm_content_phantom_car", "fm_content_pizza_delivery", "fm_content_possessed_animals", + "fm_content_postal_worker", "fm_content_robbery", "fm_content_security_contract", "fm_content_sightseeing", @@ -505,12 +514,15 @@ namespace YimMenu "fm_content_smuggler_trail", "fm_content_source_research", "fm_content_stash_house", + "fm_content_survival", + "fm_content_survival_grouping", "fm_content_taxi_driver", "fm_content_test", "fm_content_tow_truck_work", "fm_content_tuner_robbery", "fm_content_tycoon_odd_jobs", "fm_content_ufo_abduction", + "fm_content_valentine_cheater", "fm_content_vehicle_list", "fm_content_vehrob_arena", "fm_content_vehrob_cargo_ship", @@ -753,6 +765,19 @@ namespace YimMenu "maintransition", "main_install", "main_persistent", + "mansion_basement_seating", + "mansion_carmod", + "mansion_club_bar", + "mansion_club_seating", + "mansion_guest_bedroom_seating", + "mansion_lobby_seating", + "mansion_lower_basement_seating", + "mansion_lower_east_wing_seating", + "mansion_outside_seating", + "mansion_seating", + "mansion_upper_balcony_seating", + "mansion_upper_floor_seating", + "mansion_water_seating", "martin1", "maude1", "maude_postbailbond", @@ -814,7 +839,7 @@ namespace YimMenu "net_freemode_debug_2023", "net_freemode_debug_stat_2023", "net_jacking_soaktest", - "net_rank_tunable_loader", + "net_mansion_yoga", "net_session_soaktest", "net_test_drive", "net_tunable_check", @@ -923,6 +948,7 @@ namespace YimMenu "profiler_registration", "prologue1", "prop_drop", + "public_mission_controller", "public_mission_creator", "puzzle", "racetest", @@ -1017,6 +1043,7 @@ namespace YimMenu "sh_intro_f_hills", "sh_intro_m_home", "simeon_showroom_seating", + "si_dancing_activity", "smoketest", "social_controller", "solomon1", diff --git a/src/game/gta/data/StackSizes.hpp b/src/game/gta/data/StackSizes.hpp index 23e046b..d09747c 100644 --- a/src/game/gta/data/StackSizes.hpp +++ b/src/game/gta/data/StackSizes.hpp @@ -10,7 +10,7 @@ namespace YimMenu SPECIAL_ABILITY = 1828, FRIEND = 2050, SHOP = 2324, - CELLPHONE = 2552, + CELLPHONE = 2600, VEHICLE_SPAWN = 3568, CAR_MOD_SHOP = 3750, PAUSE_MENU_SCRIPT = 3076, @@ -28,9 +28,9 @@ namespace YimMenu AM_MP_YACHT = 5000, INGAMEHUD = 4600, TRANSITION = 8032, - FMMC_LAUNCHER = 27000, - MULTIPLAYER_FREEMODE = 87500, - MISSION = 63500, - MP_LAUNCH_SCRIPT = 34750 + FMMC_LAUNCHER = 28000, + MULTIPLAYER_FREEMODE = 89500, + MISSION = 64500, + MP_LAUNCH_SCRIPT = 35250 }; } \ No newline at end of file diff --git a/src/game/gta/data/Vehicles.hpp b/src/game/gta/data/Vehicles.hpp index 0cba85f..bc8001a 100644 --- a/src/game/gta/data/Vehicles.hpp +++ b/src/game/gta/data/Vehicles.hpp @@ -26,10 +26,10 @@ namespace YimMenu "Military", "Commercial", "Rail", - "Open Wheel"}); + "Open Wheel" + }); - static constexpr auto g_VehicleHashes = std::to_array({ - "adder"_J, + static constexpr auto g_VehicleHashes = std::to_array({"adder"_J, "airbus"_J, "airtug"_J, "akula"_J, @@ -52,6 +52,7 @@ namespace YimMenu "asea2"_J, "asterope"_J, "asterope2"_J, + "astrale"_J, "astron"_J, "astron2"_J, "autarch"_J, @@ -182,6 +183,7 @@ namespace YimMenu "cheburek"_J, "cheetah"_J, "cheetah2"_J, + "cheetah3"_J, "chernobog"_J, "chimera"_J, "chino"_J, @@ -258,17 +260,26 @@ namespace YimMenu "double"_J, "drafter"_J, "draugur"_J, + "driftchavosv6"_J, "driftcheburek"_J, "driftcypher"_J, + "driftdominator10"_J, + "driftdominator9"_J, "drifteuros"_J, "driftfr36"_J, "driftfuto"_J, "driftfuto2"_J, + "driftgauntlet4"_J, + "drifthardy"_J, "driftjester"_J, "driftjester3"_J, + "driftkeitora"_J, + "driftl352"_J, "driftnebula"_J, "driftremus"_J, + "driftrt3000"_J, "driftsentinel"_J, + "driftsentinel2"_J, "drifttampa"_J, "driftvorschlag"_J, "driftyosemite"_J, @@ -306,6 +317,7 @@ namespace YimMenu "eurosx32"_J, "everon"_J, "everon2"_J, + "everon3"_J, "exemplar"_J, "f620"_J, "faction"_J, @@ -328,7 +340,9 @@ namespace YimMenu "fixter"_J, "flashgt"_J, "flatbed"_J, + "flatbed2"_J, "fmj"_J, + "fmj2"_J, "forklift"_J, "formula"_J, "formula2"_J, @@ -372,12 +386,14 @@ namespace YimMenu "gresley"_J, "growler"_J, "gt500"_J, + "gt750"_J, "guardian"_J, "habanero"_J, "hakuchou"_J, "hakuchou2"_J, "halftrack"_J, "handler"_J, + "hardy"_J, "hauler"_J, "hauler2"_J, "havok"_J, @@ -420,6 +436,7 @@ namespace YimMenu "issi6"_J, "issi7"_J, "issi8"_J, + "itali2"_J, "italigtb"_J, "italigtb2"_J, "italigto"_J, @@ -443,6 +460,7 @@ namespace YimMenu "kamacho"_J, "kanjo"_J, "kanjosj"_J, + "keitora"_J, "khamelion"_J, "khanjali"_J, "komoda"_J, @@ -451,6 +469,7 @@ namespace YimMenu "kuruma"_J, "kuruma2"_J, "l35"_J, + "l352"_J, "landstalker"_J, "landstalker2"_J, "lazer"_J, @@ -461,6 +480,7 @@ namespace YimMenu "lm87"_J, "locust"_J, "longfin"_J, + "luiva"_J, "lurcher"_J, "luxor"_J, "luxor2"_J, @@ -477,6 +497,7 @@ namespace YimMenu "massacro"_J, "massacro2"_J, "maverick"_J, + "maverick2"_J, "menacer"_J, "mesa"_J, "mesa2"_J, @@ -485,6 +506,7 @@ namespace YimMenu "michelli"_J, "microlight"_J, "miljet"_J, + "minimus"_J, "minitank"_J, "minivan"_J, "minivan2"_J, @@ -562,6 +584,8 @@ namespace YimMenu "pigalle"_J, "pipistrello"_J, "pizzaboy"_J, + "polbuffalo"_J, + "polbuffalo6"_J, "polcaracara"_J, "polcoquette4"_J, "poldominator10"_J, @@ -575,6 +599,7 @@ namespace YimMenu "police4"_J, "police5"_J, "policeb"_J, + "policeb2"_J, "policeold1"_J, "policeold2"_J, "policet"_J, @@ -610,6 +635,7 @@ namespace YimMenu "rapidgt"_J, "rapidgt2"_J, "rapidgt3"_J, + "rapidgt4"_J, "raptor"_J, "ratbike"_J, "ratel"_J, @@ -689,6 +715,8 @@ namespace YimMenu "sentinel2"_J, "sentinel3"_J, "sentinel4"_J, + "sentinel5"_J, + "sentinel6"_J, "serrano"_J, "seven70"_J, "shamal"_J, @@ -727,6 +755,7 @@ namespace YimMenu "stingertt"_J, "stockade"_J, "stockade3"_J, + "stockade4"_J, "stratum"_J, "streamer216"_J, "streiter"_J, @@ -751,6 +780,7 @@ namespace YimMenu "surfer2"_J, "surfer3"_J, "surge"_J, + "suzume"_J, "swift"_J, "swift2"_J, "swinger"_J, @@ -763,6 +793,7 @@ namespace YimMenu "tampa"_J, "tampa2"_J, "tampa3"_J, + "tampa4"_J, "tanker"_J, "tanker2"_J, "tankercar"_J, @@ -870,6 +901,7 @@ namespace YimMenu "viseris"_J, "visione"_J, "vivanite"_J, + "vivanite2"_J, "volatol"_J, "volatus"_J, "voltic"_J, @@ -889,9 +921,11 @@ namespace YimMenu "windsor2"_J, "winky"_J, "wolfsbane"_J, + "woodlander"_J, "xa21"_J, "xls"_J, "xls2"_J, + "xtreme"_J, "yosemite"_J, "yosemite1500"_J, "yosemite2"_J, @@ -915,26 +949,6 @@ namespace YimMenu "zr380"_J, "zr3802"_J, "zr3803"_J, - "ztype"_J, - "cheetah3"_J, - "driftchavos6"_J, - "driftdominator10"_J, - "driftgauntlet4"_J, - "drifthardy"_J, - "driftl352"_J, - "everon3"_J, - "flatbed2"_J, - "hardy"_J, - "l352"_J, - "maverick2"_J, - "minimus"_J, - "policeb2"_J, - "rapidgt4"_J, - "sentinel5"_J, - "stockade4"_J, - "suzume"_J, - "tampa4"_J, - "woodlander"_J, - }); - + "ztype"_J + }); } \ No newline at end of file diff --git a/src/game/gta/data/Weapons.hpp b/src/game/gta/data/Weapons.hpp index aeb52f7..b22582e 100644 --- a/src/game/gta/data/Weapons.hpp +++ b/src/game/gta/data/Weapons.hpp @@ -119,5 +119,6 @@ namespace YimMenu "WEAPON_STUNROD"_J, "WEAPON_STRICKLER"_J, "WEAPON_BRIEFCASE_03"_J, + "WEAPON_NEWSPAPER"_J }); } diff --git a/src/game/pointers/Pointers.cpp b/src/game/pointers/Pointers.cpp index a3a5db1..8cd6f8b 100644 --- a/src/game/pointers/Pointers.cpp +++ b/src/game/pointers/Pointers.cpp @@ -173,7 +173,7 @@ namespace YimMenu RequestControl = ptr.Add(5).Add(1).Rip().As(); }); - constexpr auto spectatePatchPtrn = Pattern<"74 26 66 83 FF 0D 77 20 0F B7 C7">("SpectatePatch"); + constexpr auto spectatePatchPtrn = Pattern<"74 ? 66 83 FF 0D">("SpectatePatch"); scanner.Add(spectatePatchPtrn, [this](PointerCalculator ptr) { SpectatePatch = BytePatches::Add(ptr.As(), 0xEB); }); @@ -369,9 +369,9 @@ namespace YimMenu SetJoinRequestPoolTypePatch = BytePatches::Add(ptr.Sub(5).As(), std::to_array({0xB8, 0x00, 0x00, 0x00, 0x00})); }); - constexpr auto handleJoinRequestIgnorePoolPatchPtrn = Pattern<"83 FD 05 ? ? ? 00 00 00 48 8B">("HandleJoinRequestIgnorePoolPatch"); + constexpr auto handleJoinRequestIgnorePoolPatchPtrn = Pattern<"41 83 FF 05 74 ? 42 8B 84 F5">("HandleJoinRequestIgnorePoolPatch"); scanner.Add(handleJoinRequestIgnorePoolPatchPtrn, [this](PointerCalculator ptr) { - HandleJoinRequestIgnorePoolPatch = BytePatches::Add(ptr.As(), std::to_array({0x39, 0xC9, 0x90})); + HandleJoinRequestIgnorePoolPatch = BytePatches::Add(ptr.As(), std::to_array({0x39, 0xC9, 0x90, 0x90})); }); constexpr auto statsMpCharacterMappingDataPtrn = Pattern<"48 8D 0D ? ? ? ? 89 F2 0F 28 74 24 ? 48 83 C4 38">("CStatsMpCharacterMappingData"); diff --git a/src/types/script/ScriptEvent.hpp b/src/types/script/ScriptEvent.hpp index 7395db6..14c4d28 100644 --- a/src/types/script/ScriptEvent.hpp +++ b/src/types/script/ScriptEvent.hpp @@ -238,7 +238,9 @@ struct SCRIPT_EVENT_COLLECT_COLLECTABLE : public SCRIPT_EVENT Tagging = 19, SprayCans = 20, Yuanbao = 21, - SmokeOnTheWater = 22 + SmokeOnTheWater = 22, + GoldenClover = 23, // this is the first collectible to be daily but in-game time + LuckyClover = 24 }; REGISTER_SCRIPT_EVENT(SCRIPT_EVENT_COLLECT_COLLECTABLE, CollectCollectable); diff --git a/src/types/script/globals/FreemodeDelivery.hpp b/src/types/script/globals/FreemodeDelivery.hpp index 79b761d..2262d6b 100644 --- a/src/types/script/globals/FreemodeDelivery.hpp +++ b/src/types/script/globals/FreemodeDelivery.hpp @@ -12,14 +12,14 @@ static_assert(sizeof(DeliveryPosData) == 6 * 8); struct FreemodeDelivery { SCR_INT DeliveryFlags; // 0 - SCR_ARRAY DeliveryPosData; // 1 - SCR_BOOL DeliveryInVehicle; // 6026 - SCR_BOOL DeliveryNotInVehicle; // 6027 - TIMER DeliveryCooldown1; // 6028 - SCR_INT CooldownFrameCount1; // 6030 - TIMER DeliveryCooldown2; // 6031 - SCR_INT CooldownFrameCount2; // 6033 + SCR_ARRAY DeliveryPosData; // 1 + SCR_BOOL DeliveryInVehicle; // 6050 + SCR_BOOL DeliveryNotInVehicle; // 6051 + TIMER DeliveryCooldown1; // 6052 + SCR_INT CooldownFrameCount1; // 6054 + TIMER DeliveryCooldown2; // 6055 + SCR_INT CooldownFrameCount2; // 6057 static FreemodeDelivery* Get(); }; -//static_assert(sizeof(FreemodeDelivery) == 6237 * 8); \ No newline at end of file +//static_assert(sizeof(FreemodeDelivery) == 6260 * 8); \ No newline at end of file diff --git a/src/types/script/globals/FreemodeGeneral.hpp b/src/types/script/globals/FreemodeGeneral.hpp index 6692d5b..28d9650 100644 --- a/src/types/script/globals/FreemodeGeneral.hpp +++ b/src/types/script/globals/FreemodeGeneral.hpp @@ -58,20 +58,20 @@ struct FreemodeGeneral { uint64_t PAD_0000[301]; VEHICLE_INDEX PersonalVehicleIndex; // 301 - uint64_t PAD_0302[653]; - SCR_BOOL PersonalVehicleRequested; // 955 - uint64_t PAD_0956[13]; - SCR_BOOL NodeDistanceCheck; // 969 - uint64_t PAD_0970[48]; - SCR_INT RequestedPersonalVehicleId; // 1018 - uint64_t PAD_1019[2]; - SCR_BOOL Exec1Impound; // 1021 - uint64_t PAD_1022[5833]; - STREET_DEALERS StreetDealers; // 6855 - uint64_t PAD_6879[71]; - DAILY_RESET_DATA DailyReset; // 6950 - FREEMODE_DELIVERY_DATA DeliveryData; // 6954 + uint64_t PAD_0302[273]; + SCR_BOOL PersonalVehicleRequested; // 575 + uint64_t PAD_0576[14]; + SCR_BOOL NodeDistanceCheck; // 590 + uint64_t PAD_0591[48]; + SCR_INT RequestedPersonalVehicleId; // 639 + uint64_t PAD_0640[2]; + SCR_BOOL Exec1Impound; // 642 + uint64_t PAD_0643[4992]; + STREET_DEALERS StreetDealers; // 5635 + uint64_t PAD_5659[107]; + DAILY_RESET_DATA DailyReset; // 5766 + FREEMODE_DELIVERY_DATA DeliveryData; // 5770 static FreemodeGeneral* Get(); }; -//static_assert(sizeof(FreemodeGeneral) == 7240 * 8); \ No newline at end of file +//static_assert(sizeof(FreemodeGeneral) == 6073 * 8); \ No newline at end of file diff --git a/src/types/script/globals/GPBD_FM.hpp b/src/types/script/globals/GPBD_FM.hpp index 2b8d82e..293e6d8 100644 --- a/src/types/script/globals/GPBD_FM.hpp +++ b/src/types/script/globals/GPBD_FM.hpp @@ -480,10 +480,10 @@ struct FIELD_HANGAR_DATA }; static_assert(sizeof(FIELD_HANGAR_DATA) == 2 * 8); -#define NUM_PROPERTY_INTERIORS \ - 33 // (30 -> 31) b3095 \ - // (31 -> 32) b3258 \ - // (32 -> 33) b3407 +#define NUM_PROPERTY_INTERIORS 36 // (30 -> 31) b3095 \ + // (31 -> 32) b3258 \ + // (32 -> 33) b3407 \ + // (33 -> 36) b3717 struct PROPERTY_DATA { @@ -574,7 +574,7 @@ struct PROPERTY_DATA HACKER_DEN_DATA HackerDenData; FIELD_HANGAR_DATA FieldHangarData; }; -static_assert(sizeof(PROPERTY_DATA) == 543 * 8); +static_assert(sizeof(PROPERTY_DATA) == 549 * 8); struct BIKER_CONTRACTS { @@ -688,7 +688,7 @@ struct GPBD_FM_Entry SCR_INT ApartmentEnterFlags; // SCR_VEC3 AvengerMissionStartPosition; removed b889g9 }; -static_assert(sizeof(GPBD_FM_Entry) == 877 * 8); +static_assert(sizeof(GPBD_FM_Entry) == 883 * 8); struct GPBD_FM { @@ -696,4 +696,4 @@ struct GPBD_FM static GPBD_FM* Get(); }; -static_assert(sizeof(GPBD_FM) == 28065 * 8); \ No newline at end of file +static_assert(sizeof(GPBD_FM) == 28257 * 8); \ No newline at end of file diff --git a/src/types/script/globals/GPBD_FM_2.hpp b/src/types/script/globals/GPBD_FM_2.hpp index 1490cc4..5f34d46 100644 --- a/src/types/script/globals/GPBD_FM_2.hpp +++ b/src/types/script/globals/GPBD_FM_2.hpp @@ -67,11 +67,11 @@ static_assert(sizeof(RANDOM_EVENTS_CLIENT_EVENT_DATA) == 3 * 8); struct RANDOM_EVENTS_CLIENT_DATA { alignas(8) eRandomEventClientInitState InitState; // 0 - SCR_ARRAY EventData; // 1 - SCR_BITSET IsParticipantInEventFlags; // 65 - SCR_INT UNK_0066; // 66 (unused) + SCR_ARRAY EventData; // 1 + SCR_BITSET IsParticipantInEventFlags; // 75 + SCR_INT UNK_0076; // 76 (unused) }; -static_assert(sizeof(RANDOM_EVENTS_CLIENT_DATA) == 67 * 8); +static_assert(sizeof(RANDOM_EVENTS_CLIENT_DATA) == 76 * 8); struct HOCW_DATA { @@ -124,9 +124,10 @@ struct GPBD_FM_2_Entry SCR_VEC3 CoronaPosition; // 40 GANGOPS_DATA GangopsData; // 43 RANDOM_EVENTS_CLIENT_DATA RandomEventsClientData; // 82 - SALVAGE_YARD_VEHICLE_SALE_DATA SYVehSaleData; // 149 added b889g9 + SALVAGE_YARD_VEHICLE_SALE_DATA SYVehSaleData; // 158 added b889g9 + uint64_t PAD_0210[105]; }; -static_assert(sizeof(GPBD_FM_2_Entry) == 201 * 8); +static_assert(sizeof(GPBD_FM_2_Entry) == 315 * 8); struct GPBD_FM_2 { @@ -134,4 +135,4 @@ struct GPBD_FM_2 static GPBD_FM_2* Get(); }; -static_assert(sizeof(GPBD_FM_2) == 6433 * 8); \ No newline at end of file +static_assert(sizeof(GPBD_FM_2) == 10081 * 8); \ No newline at end of file diff --git a/src/types/script/globals/GPBD_FM_3.hpp b/src/types/script/globals/GPBD_FM_3.hpp index 50376ff..db55550 100644 --- a/src/types/script/globals/GPBD_FM_3.hpp +++ b/src/types/script/globals/GPBD_FM_3.hpp @@ -158,6 +158,7 @@ struct BOSS_GOON SCR_BITSET Flags; SCR_INT Flags2; // TODO SCR_INT Flags3; // TODO + SCR_INT Flags4; // added b3717 SCR_INT TotalBossGoonTime; SCR_ARRAY BossGoonUUID; SCR_ARRAY Goons; @@ -222,6 +223,7 @@ struct BOSS_GOON SCR_BOOL CasinoLimoActive; SCR_BOOL CasinoLuxuryCarActive; SCR_HASH CasinoLuxuryCarModel; + SCR_INT PAD_0309; // added b3717 CASINO_HEIST_PREP CasinoHeistPrep; SCR_INT CayoPrepIndex; SCR_INT CompanySUVDestination; @@ -279,9 +281,11 @@ struct BOSS_GOON SCR_INT NightclubMissionIndex; SCR_INT NightclubDefendMissionIndex; uint64_t PAD_0478[18]; // TODO + SCR_HASH PAD_0501; // added b3717 + SCR_INT PAD_0502; // added b3717 SCR_BOOL DoubleActionCacheLocationRevealed; }; -static_assert(sizeof(BOSS_GOON) == 500 * 8); +static_assert(sizeof(BOSS_GOON) == 504 * 8); struct MC_STATS { @@ -348,7 +352,7 @@ struct GBPD_FM_3_Entry SCR_INT CasinoFlowProgress; SCR_ARRAY DailyObjectiveFlags; // @607 as of 1.67 }; -static_assert(sizeof(GBPD_FM_3_Entry) == 611 * 8); +static_assert(sizeof(GBPD_FM_3_Entry) == 615 * 8); struct GPBD_FM_3 { @@ -356,4 +360,4 @@ struct GPBD_FM_3 static GPBD_FM_3* Get(); }; -static_assert(sizeof(GPBD_FM_3) == 19553 * 8); \ No newline at end of file +static_assert(sizeof(GPBD_FM_3) == 19681 * 8); \ No newline at end of file diff --git a/src/types/script/globals/GPBD_Flow.hpp b/src/types/script/globals/GPBD_Flow.hpp index 7f1dfae..fb430b6 100644 --- a/src/types/script/globals/GPBD_Flow.hpp +++ b/src/types/script/globals/GPBD_Flow.hpp @@ -76,11 +76,11 @@ struct SALV23FlowData SCR_INT PackedInt42102; // 3 SCR_INT SALV23ScopeFlags; // 4 SCR_ARRAY SALV23CFRCounts; // 5 - SCR_ARRAY SALV23CFRCounts2; // 13, added b889g9 - SALV23VehicleData SALV23Vehicles; // 13 - SCR_ARRAY SALV23VehRobStatus; // 23 - SCR_INT SALV23Flags; // 27 - SCR_BOOL UNK_28; // 28 + SCR_ARRAY SALV23CFRCrewCounts2; // 13, added b889g9 + SALV23VehicleData SALV23Vehicles; // 21 + SCR_ARRAY SALV23VehRobStatus; // 31 + SCR_INT SALV23Flags; // 35 + SCR_BOOL UNK_28; // 36 }; static_assert(sizeof(SALV23FlowData) == 37 * 8); @@ -117,11 +117,19 @@ static_assert(sizeof(Hacker24FlowData) == 17 * 8); struct Drug25FlowData { SCR_INT PAD_0000; // unused - SCR_ARRAY DrugMissions; - SCR_INT LastMissionCompleted; + SCR_ARRAY DrugMissions; // 1 + SCR_INT LastMissionCompleted; // 6 }; static_assert(sizeof(Drug25FlowData) == 6 * 8); +struct M25FlowData +{ + SCR_INT M25GeneralBs; // 0 + SCR_INT M25Flags; // 1 + SCR_INT M25AviMissionCurrent; // 2 +}; +static_assert(sizeof(M25FlowData) == 3 * 8); + struct GPBD_Flow_Entry { SCR_INT TunerFlowFlags; // 0 @@ -141,16 +149,19 @@ struct GPBD_Flow_Entry SCR_BITSET TunerCBVDeliveredFlags; // 25 SCR_INT TunerCBVState; // 26 FixerFlowData FixerFlow; // 27 - SCR_BOOL HasFixerUsbCollected; // 54 - ULPFlowData ULPFlow; // 55 - XM22FlowData XM22Flow; // 57 - SUM23AvopFlowData SUM23AvopFlow; // 60 - SALV23FlowData SALV23Flow; // 71 - Bounty24FlowData Bounty24Flow; // 100 - Hacker24FlowData Hacker24Flow; // 111 - Drug25FlowData Drug25Flow; // added b889g9 + SCR_BOOL HasFixerUsbCollected; // 56 + ULPFlowData ULPFlow; // 57 + XM22FlowData XM22Flow; // 59 + SUM23AvopFlowData SUM23AvopFlow; // 62 + SALV23FlowData SALV23Flow; // 73 + Bounty24FlowData Bounty24Flow; // 110 + Hacker24FlowData Hacker24Flow; // 121 + Drug25FlowData Drug25Flow; // 138, added b889g9 + M25FlowData M25Flow; // 145, added b1013.17g9 + SCR_INT HeistFlags; // 148, added b1013.17g9 + SCR_INT UNK_149; // unused, added b1013.17g9 }; -static_assert(sizeof(GPBD_Flow_Entry) == 144 * 8); +static_assert(sizeof(GPBD_Flow_Entry) == 149 * 8); struct GPBD_Flow { @@ -158,4 +169,4 @@ struct GPBD_Flow static GPBD_Flow* Get(); }; -static_assert(sizeof(GPBD_Flow) == 4609 * 8); \ No newline at end of file +static_assert(sizeof(GPBD_Flow) == 4769 * 8); \ No newline at end of file diff --git a/src/types/script/globals/GSBD.hpp b/src/types/script/globals/GSBD.hpp index 5bdeeab..fe648e9 100644 --- a/src/types/script/globals/GSBD.hpp +++ b/src/types/script/globals/GSBD.hpp @@ -85,7 +85,7 @@ struct GSBD SCR_BOOL PAD_0816; // always set to FALSE SCR_INT PAD_0817; // unused CEO_COLORS CeoColors; - SMPL_INTERIOR_DATA_SERVER SimpleInteriorData; + //SMPL_INTERIOR_DATA_SERVER SimpleInteriorData; LEAVE_CLUBHOUSE_SERVER LeaveClubhouse; SCR_ARRAY IEDeliveryInfos; SCR_INT PAD_1397; @@ -95,4 +95,4 @@ struct GSBD static GSBD* Get(); }; -static_assert(sizeof(GSBD) == 1499 * 8); \ No newline at end of file +static_assert(sizeof(GSBD) == 1264 * 8); \ No newline at end of file diff --git a/src/types/script/globals/GSBD_FM.hpp b/src/types/script/globals/GSBD_FM.hpp index 720551f..dd54af6 100644 --- a/src/types/script/globals/GSBD_FM.hpp +++ b/src/types/script/globals/GSBD_FM.hpp @@ -24,13 +24,12 @@ struct WEAPON_PICKUPS SCR_INT LastMeleeWeaponPickupTime; SCR_INT LastProjectilePickupTime; SCR_INT LastGunPickupTime; - SCR_ARRAY Indices; // size increased in b3095 (62 -> 95) - // and in b3407 (95 -> 96) - SCR_ARRAY Owners; + SCR_ARRAY Indices; // size increased in b3095 (62 -> 95) // and in b3407 (95 -> 96) // one of PICKUP_WEAPON_VINTAGEPISTOL removed in b1013.17g9 + SCR_ARRAY Owners; SCR_INT SpawnCounter; SCR_INT AmmoCount; }; -static_assert(sizeof(WEAPON_PICKUPS) == 200 * 8); +static_assert(sizeof(WEAPON_PICKUPS) == 198 * 8); struct BIKER_CONTRACTS_SERVER { @@ -43,14 +42,14 @@ static_assert(sizeof(BIKER_CONTRACTS_SERVER) == 10 * 8); struct GSBD_FM { - SCR_ARRAY ModelSwapBits; + SCR_ARRAY ModelSwapBits; // 0 SCR_INT PAD_0003; // unused - SCR_ARRAY PlayerBounties; + SCR_ARRAY PlayerBounties; // 4 uint64_t PAD_0101[5]; // unused SCR_ARRAY MuggingPlayers; // 0 = mugger, 1 = merryweather mercs SCR_ARRAY MuggedPlayers; uint64_t PAD_0112[4]; // unused - SCR_ARRAY PAD_0116; // TODO b3407 (61 -> 62) + SCR_ARRAY PAD_0116; // TODO b3407 (61 -> 62), 62 -> 65 SCR_INT ShopProcessingBitset; SCR_ARRAY ActiveContactServiceBitsets; SCR_ARRAY ActiveContactServices; @@ -67,4 +66,4 @@ struct GSBD_FM static GSBD_FM* Get(); }; -static_assert(sizeof(GSBD_FM) == 650 * 8); \ No newline at end of file +static_assert(sizeof(GSBD_FM) == 653 * 8); \ No newline at end of file diff --git a/src/types/script/globals/GSBD_RandomEvents.hpp b/src/types/script/globals/GSBD_RandomEvents.hpp index bd0fc6e..5bf7daa 100644 --- a/src/types/script/globals/GSBD_RandomEvents.hpp +++ b/src/types/script/globals/GSBD_RandomEvents.hpp @@ -63,10 +63,10 @@ static_assert(sizeof(RANDOM_EVENTS_TARGET_DATA) == 2 * 8); struct GSBD_RandomEvents { alignas(8) eRandomEventInitState InitState; // 0 - SCR_ARRAY EventData; // 1 - RANDOM_EVENTS_VEHICLE_LIST_DATA VehicleListData; // 317 - RANDOM_EVENTS_TARGET_DATA TargetData; // 319 + SCR_ARRAY EventData; // 1 + RANDOM_EVENTS_VEHICLE_LIST_DATA VehicleListData; // 362 + RANDOM_EVENTS_TARGET_DATA TargetData; // 364 static GSBD_RandomEvents* Get(); }; -static_assert(sizeof(GSBD_RandomEvents) == 321 * 8); \ No newline at end of file +static_assert(sizeof(GSBD_RandomEvents) == 366 * 8); \ No newline at end of file diff --git a/src/types/script/globals/GlobalPlayerBD.hpp b/src/types/script/globals/GlobalPlayerBD.hpp index e3bcbaa..4c40ddb 100644 --- a/src/types/script/globals/GlobalPlayerBD.hpp +++ b/src/types/script/globals/GlobalPlayerBD.hpp @@ -569,6 +569,7 @@ struct GlobalPlayerBDEntry NETWORK_INDEX DeliveryBikeNetId; NETWORK_INDEX BountyTransporterNetId; // added b3258 NETWORK_INDEX FieldDusterNetId; // added b3407 + NETWORK_INDEX MansionHeliNetId; // added b3407 SCR_BOOL PAD_0057; // (@59 as of b3407) uint64_t PAD_0058[15]; // confirmed these are not used by PC scripts PLAYER_BLIP PlayerBlip; @@ -684,7 +685,7 @@ struct GlobalPlayerBDEntry SCR_BOOL CanSpawnGunVan; }; -static_assert(sizeof(GlobalPlayerBDEntry) == 467 * 8); +static_assert(sizeof(GlobalPlayerBDEntry) == 468 * 8); struct GlobalPlayerBD { @@ -692,4 +693,4 @@ struct GlobalPlayerBD static GlobalPlayerBD* Get(); }; -static_assert(sizeof(GlobalPlayerBD) == 14945 * 8); \ No newline at end of file +static_assert(sizeof(GlobalPlayerBD) == 14977 * 8); \ No newline at end of file diff --git a/src/types/script/globals/Globals.cpp b/src/types/script/globals/Globals.cpp index 54a39ff..7754773 100644 --- a/src/types/script/globals/Globals.cpp +++ b/src/types/script/globals/Globals.cpp @@ -31,25 +31,25 @@ return glb.As(); \ } -DEFINE_GLOBAL_ACCESSOR(GlobalPlayerBD, 2658019); -DEFINE_GLOBAL_ACCESSOR(GPBD_FM, 1845274); -DEFINE_GLOBAL_ACCESSOR(GPBD_FM_2, 1882449); -DEFINE_GLOBAL_ACCESSOR(GPBD_FM_3, 1888882); -DEFINE_GLOBAL_ACCESSOR(GPBD_Flow, 1980192); -DEFINE_GLOBAL_ACCESSOR(GPBD_Kicking, 1873852); -DEFINE_GLOBAL_ACCESSOR(GPBD_MissionName, 1873339); -DEFINE_GLOBAL_ACCESSOR(GSBD, 2648932); -DEFINE_GLOBAL_ACCESSOR(GSBD_BlockB, 2650431); -DEFINE_GLOBAL_ACCESSOR(GSBD_FM, 1845274); -DEFINE_GLOBAL_ACCESSOR(GSBD_FM_Events, 1918514); -DEFINE_GLOBAL_ACCESSOR(GSBD_Kicking, 1877053); -DEFINE_GLOBAL_ACCESSOR(GSBD_PropertyInstances, 1939705); -DEFINE_GLOBAL_ACCESSOR(g_AMC_playerBD, 2699749); -DEFINE_GLOBAL_ACCESSOR(GSBD_RandomEvents, 1882048); -DEFINE_GLOBAL_ACCESSOR(MPSV, 1586547); +DEFINE_GLOBAL_ACCESSOR(GlobalPlayerBD, 2658294); +DEFINE_GLOBAL_ACCESSOR(GPBD_FM, 1845299); +DEFINE_GLOBAL_ACCESSOR(GPBD_FM_2, 1882717); +DEFINE_GLOBAL_ACCESSOR(GPBD_FM_3, 1892798); +DEFINE_GLOBAL_ACCESSOR(GPBD_Flow, 1984460); +DEFINE_GLOBAL_ACCESSOR(GPBD_Kicking, 1874069); +DEFINE_GLOBAL_ACCESSOR(GPBD_MissionName, 1873556); +DEFINE_GLOBAL_ACCESSOR(GSBD, 2649162); +DEFINE_GLOBAL_ACCESSOR(GSBD_BlockB, 2650426); +DEFINE_GLOBAL_ACCESSOR(GSBD_FM, 1835559); +DEFINE_GLOBAL_ACCESSOR(GSBD_FM_Events, 1922750); +DEFINE_GLOBAL_ACCESSOR(GSBD_Kicking, 1877270); +DEFINE_GLOBAL_ACCESSOR(GSBD_PropertyInstances, 1943919); +DEFINE_GLOBAL_ACCESSOR(g_AMC_playerBD, 2700188); +DEFINE_GLOBAL_ACCESSOR(GSBD_RandomEvents, 1882265); +DEFINE_GLOBAL_ACCESSOR(MPSV, 1583772); DEFINE_GLOBAL_ACCESSOR(g_SavedMPGlobals, 2359296); -DEFINE_GLOBAL_ACCESSOR(FreemodeGeneral, 2740191); +DEFINE_GLOBAL_ACCESSOR(FreemodeGeneral, 2733138); DEFINE_GLOBAL_ACCESSOR(DailyObjectivesState, 1574745); -DEFINE_GLOBAL_ACCESSOR(WeeklyChallenge, 2739243); -DEFINE_GLOBAL_ACCESSOR(FreemodeDelivery, 1953035); -DEFINE_GLOBAL_ACCESSOR(LauncherServerData, 2699563); \ No newline at end of file +DEFINE_GLOBAL_ACCESSOR(WeeklyChallenge, 2732069); +DEFINE_GLOBAL_ACCESSOR(FreemodeDelivery, 1957402); +DEFINE_GLOBAL_ACCESSOR(LauncherServerData, 2700002); \ No newline at end of file diff --git a/src/types/script/globals/MPSV.hpp b/src/types/script/globals/MPSV.hpp index 9a1cc1c..24ec6e3 100644 --- a/src/types/script/globals/MPSV.hpp +++ b/src/types/script/globals/MPSV.hpp @@ -67,8 +67,8 @@ static_assert(sizeof(MPSV_Entry) == 143 * 8); struct MPSV { - SCR_ARRAY Entries; + SCR_ARRAY Entries; static MPSV* Get(); }; -static_assert(sizeof(MPSV) == 78222 * 8); \ No newline at end of file +static_assert(sizeof(MPSV) == 86802 * 8); \ No newline at end of file diff --git a/src/types/script/globals/g_AMC_playerBD.hpp b/src/types/script/globals/g_AMC_playerBD.hpp index ea0b93e..7de92b0 100644 --- a/src/types/script/globals/g_AMC_playerBD.hpp +++ b/src/types/script/globals/g_AMC_playerBD.hpp @@ -7,7 +7,7 @@ struct g_AMC_playerBD_Entry SCR_ARRAY UsedContactServicesTimer; // only index 2 (mugger) is actually used by the scripts. the rest is just a waste of bandwidth SCR_ARRAY ContactServiceCooldowns; // same as above }; -static_assert(sizeof(g_AMC_playerBD_Entry) == 254 * 8); // -> 251 in b812g9 +static_assert(sizeof(g_AMC_playerBD_Entry) == 260 * 8); // -> 251 in b812g9 struct g_AMC_playerBD { @@ -15,4 +15,4 @@ struct g_AMC_playerBD static g_AMC_playerBD* Get(); }; -static_assert(sizeof(g_AMC_playerBD) == 8129 * 8); \ No newline at end of file +static_assert(sizeof(g_AMC_playerBD) == 8321 * 8); \ No newline at end of file diff --git a/src/types/script/globals/g_SavedMPGlobals.hpp b/src/types/script/globals/g_SavedMPGlobals.hpp index 46b699b..9609327 100644 --- a/src/types/script/globals/g_SavedMPGlobals.hpp +++ b/src/types/script/globals/g_SavedMPGlobals.hpp @@ -166,7 +166,7 @@ struct MP_GENERAL_SAVED SCR_INT ReceiveLJCashTime; // 1302 SCR_INT LastAccProp; // 1303 SCR_INT Multi1PropVal; // 1304 - SCR_ARRAY PropAryVal; // 1305 + SCR_ARRAY PropAryVal; // 1305 SCR_INT LastAccSmplInt; // 1337 SCR_INT KrPatchUpdate; // 1338 SCR_ARRAY OutfitCompDraw; // 1339 @@ -199,7 +199,7 @@ struct MP_GENERAL_SAVED SCR_ARRAY LastGOJobGamer; // 4383 SCR_ARRAY LastGOJobGamerName; // 4423 }; -static_assert(sizeof(MP_GENERAL_SAVED) == 4472 * 8); +static_assert(sizeof(MP_GENERAL_SAVED) == 4475 * 8); struct MP_BOUNTY_SAVED { @@ -241,11 +241,11 @@ struct g_SavedMPGlobalsEntry MP_PROPERTY_SAVED PropertySaved; // 7 CAR_APP_ORDER CarAppOrder; // 593 MP_GENERAL_SAVED GeneralSaved; // 681 - MP_BOUNTY_SAVED BountySaved; // 5153 - MP_ATM_SAVED ATMSaved; // 5394 - MP_SCRIPT_SAVES_DATA ScriptSavesData; // 5544 + MP_BOUNTY_SAVED BountySaved; // 5156 + MP_ATM_SAVED ATMSaved; // 5397 + MP_SCRIPT_SAVES_DATA ScriptSavesData; // 5547 }; -static_assert(sizeof(g_SavedMPGlobalsEntry) == 5571 * 8); +static_assert(sizeof(g_SavedMPGlobalsEntry) == 5574 * 8); struct g_SavedMPGlobals { @@ -253,4 +253,4 @@ struct g_SavedMPGlobals static g_SavedMPGlobals* Get(); }; -static_assert(sizeof(g_SavedMPGlobals) == 5572 * 8); \ No newline at end of file +static_assert(sizeof(g_SavedMPGlobals) == 5575 * 8); \ No newline at end of file diff --git a/src/types/script/locals/FMRandomEvents.hpp b/src/types/script/locals/FMRandomEvents.hpp index 430ba2f..d2aac18 100644 --- a/src/types/script/locals/FMRandomEvents.hpp +++ b/src/types/script/locals/FMRandomEvents.hpp @@ -37,15 +37,15 @@ static_assert(sizeof(RANDOM_EVENTS_FMMC_DATA) == 1 * 8); struct RANDOM_EVENTS_MISSION_DATA { SCR_INT EventsCount; // 0 - SCR_ARRAY FMMCData; // 1 + SCR_ARRAY FMMCData; // 1 }; -static_assert(sizeof(RANDOM_EVENTS_MISSION_DATA) == 23 * 8); +static_assert(sizeof(RANDOM_EVENTS_MISSION_DATA) == 26 * 8); struct RANDOM_EVENTS_FREEMODE_DATA { - SCR_ARRAY EventData; // 0 - RANDOM_EVENTS_MISSION_DATA MissionData; // 253 + SCR_ARRAY EventData; // 0 + RANDOM_EVENTS_MISSION_DATA MissionData; // 289 static RANDOM_EVENTS_FREEMODE_DATA* Get(rage::scrThread* thread); }; -static_assert(sizeof(RANDOM_EVENTS_FREEMODE_DATA) == 276 * 8); \ No newline at end of file +static_assert(sizeof(RANDOM_EVENTS_FREEMODE_DATA) == 315 * 8); \ No newline at end of file diff --git a/src/types/script/locals/Locals.cpp b/src/types/script/locals/Locals.cpp index b50fded..1609438 100644 --- a/src/types/script/locals/Locals.cpp +++ b/src/types/script/locals/Locals.cpp @@ -17,11 +17,11 @@ } DEFINE_LOCAL_ACCESSOR(VEHICLE_REWARD_DATA, 129); -DEFINE_LOCAL_ACCESSOR(RANDOM_EVENTS_FREEMODE_DATA, 16019); -DEFINE_LOCAL_ACCESSOR(StandardTimeTrialData, 14640); -DEFINE_LOCAL_ACCESSOR(RCBanditoTimeTrialData, 14690); -DEFINE_LOCAL_ACCESSOR(HSWTimeTrialData, 14734); -DEFINE_LOCAL_ACCESSOR(BikeTimeTrialData, 15529); +DEFINE_LOCAL_ACCESSOR(RANDOM_EVENTS_FREEMODE_DATA, 16162); +DEFINE_LOCAL_ACCESSOR(StandardTimeTrialData, 14739); +DEFINE_LOCAL_ACCESSOR(RCBanditoTimeTrialData, 14789); +DEFINE_LOCAL_ACCESSOR(HSWTimeTrialData, 14833); +DEFINE_LOCAL_ACCESSOR(BikeTimeTrialData, 15630); // am_launcher -DEFINE_LOCAL_ACCESSOR(LauncherClientData, 245); \ No newline at end of file +DEFINE_LOCAL_ACCESSOR(LauncherClientData, 247); \ No newline at end of file diff --git a/src/types/script/types.hpp b/src/types/script/types.hpp index 92ccbbf..027be4e 100644 --- a/src/types/script/types.hpp +++ b/src/types/script/types.hpp @@ -116,4 +116,4 @@ private: }; static_assert(sizeof(GAMER_HANDLE) == 13 * 8); -#define NUM_CONTACTS 84 \ No newline at end of file +#define NUM_CONTACTS 86 \ No newline at end of file