diff --git a/src/game/backend/AnticheatBypass.cpp b/src/game/backend/AnticheatBypass.cpp index c22679008..d4d216ed5 100644 --- a/src/game/backend/AnticheatBypass.cpp +++ b/src/game/backend/AnticheatBypass.cpp @@ -97,8 +97,10 @@ namespace YimMenu if (m_BattlEyeRunning) LOGF(WARNING, "If you are not running an actual BattlEye bypass, exit the game immediately and ensure that BE is properly disabled"); +#if 0 if (!m_FSLProvidesBEBypass && !m_BattlEyeRunning) Pointers.BattlEyeStatusUpdatePatch->Apply(); +#endif while (true) { diff --git a/src/game/backend/PersonalVehicles.cpp b/src/game/backend/PersonalVehicles.cpp index ecfe2f5fc..ca1f34e0e 100644 --- a/src/game/backend/PersonalVehicles.cpp +++ b/src/game/backend/PersonalVehicles.cpp @@ -305,7 +305,7 @@ namespace YimMenu auto garageOffset = GetPropertyGarageOffset(propertyIterator); for (int garageSlotIterator = 1; garageSlotIterator <= garageSize; garageSlotIterator++) { - auto itemInSlot = *ScriptGlobal(1944744).At(garageOffset).At(garageSlotIterator).As() - 1; + auto itemInSlot = *ScriptGlobal(1945138).At(garageOffset).At(garageSlotIterator).As() - 1; if (itemInSlot == m_Id) { auto staticPropertyString = GetStaticPropertyName(propertyIterator, garageSlotIterator); @@ -380,7 +380,7 @@ namespace YimMenu ScriptMgr::Yield(100ms); - *ScriptLocal("freemode"_J, 19633).At(176).As() = 0; + *ScriptLocal("freemode"_J, 19672).At(176).As() = 0; if (bring) { diff --git a/src/game/features/network/SilencePhonecalls.cpp b/src/game/features/network/SilencePhonecalls.cpp index 8d7c6d284..04bfe0ff8 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(23010); - constexpr auto is_phone_call_in_progress = ScriptGlobal(23006); - constexpr auto phone_call_state = ScriptGlobal(23000); - constexpr auto calling_character = ScriptGlobal(8779); + constexpr auto is_incoming_call = ScriptGlobal(23050); + constexpr auto is_phone_call_in_progress = ScriptGlobal(23046); + constexpr auto phone_call_state = ScriptGlobal(23040); + constexpr auto calling_character = ScriptGlobal(8818); if (*Pointers.IsSessionStarted) { diff --git a/src/game/features/network/SpoofDataHash.cpp b/src/game/features/network/SpoofDataHash.cpp index 4f400c993..4b8d25b18 100644 --- a/src/game/features/network/SpoofDataHash.cpp +++ b/src/game/features/network/SpoofDataHash.cpp @@ -43,21 +43,21 @@ namespace YimMenu::Features NativeHooks::AddHook(NativeHooks::ALL_SCRIPTS, NativeIndex::GET_EVER_HAD_BAD_PACK_ORDER, &PackOrderHook); constexpr std::array validHashes = { - 1222354255, // 0 - 1017, // 1 - 2008403316, // 2 + 3086857943, // 0 + 1029, // 1 + 578942327, // 2 472, // 3 0, // 4 0, // 5 - 2683527064, // 6 + 3471586599, // 6 0, // 7 0, // 8 1731098795, // 9 234493012, // 10 - 19919, // 11 - 4002619495, // 12 + 19987, // 11 + 1949347533, // 12 307143837, // 13 - 2653292054, // 14 + 2738033789, // 14 200299391, // 15 }; if (auto hashes = Pointers.GameDataHash) @@ -93,7 +93,7 @@ namespace YimMenu::Hooks uint32_t Network::GetDLCHash(void* manager, uint32_t seed) { if (YimMenu::Features::_SpoofDataHash.GetState()) - return 2784221708; + return 1631480001; return BaseHook::Get>()->Original()(manager, seed); } diff --git a/src/game/features/recovery/Casino.cpp b/src/game/features/recovery/Casino.cpp index a930543ba..97b2bb8ce 100644 --- a/src/game/features/recovery/Casino.cpp +++ b/src/game/features/recovery/Casino.cpp @@ -16,9 +16,9 @@ namespace YimMenu::Features { using LoopedCommand::LoopedCommand; - int slots_random_results_table = 1350; + int slots_random_results_table = 1357; // Static_1381.f_1[][] std::set slots_blacklist = {9, 21, 22, 87, 152}; - int spin_state_var = 1668; + int spin_state_var = 1675; std::set spin_state_whitelist = {8, 14}; virtual void OnTick() override diff --git a/src/game/features/recovery/ClaimSafeEarnings.cpp b/src/game/features/recovery/ClaimSafeEarnings.cpp index 90297680b..244e8ac3a 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(2708832).As() = TRUE; + *ScriptGlobal(2708943).As() = TRUE; break; } case eAppVinewoodMenuSafe::ARCADE: { if (GPBD_FM::Get()->Entries[Self::GetPlayer().GetId()].PropertyData.ArcadeData.SafeCashValue > 0) - *ScriptGlobal(2708841).As() = TRUE; + *ScriptGlobal(2708952).As() = TRUE; break; } case eAppVinewoodMenuSafe::AGENCY: { if (GPBD_FM::Get()->Entries[Self::GetPlayer().GetId()].PropertyData.FixerHQData.SafeCashValue > 0) - *ScriptGlobal(2708850).As() = TRUE; + *ScriptGlobal(2708961).As() = TRUE; break; } case eAppVinewoodMenuSafe::SALVAGE_YARD: { if (GPBD_FM::Get()->Entries[Self::GetPlayer().GetId()].PropertyData.SalvageYardData.TotalEarnings > 0) - *ScriptGlobal(2708859).As() = TRUE; + *ScriptGlobal(2708970).As() = TRUE; break; } case eAppVinewoodMenuSafe::BAIL_OFFICE: { if (GPBD_FM::Get()->Entries[Self::GetPlayer().GetId()].PropertyData.BailShopData.SafeCashValue > 0) - *ScriptGlobal(2708868).As() = TRUE; + *ScriptGlobal(2708979).As() = TRUE; break; } case eAppVinewoodMenuSafe::GARMENT_FACTORY: { if (GPBD_FM::Get()->Entries[Self::GetPlayer().GetId()].PropertyData.HackerDenData.SafeCashValue > 0) - *ScriptGlobal(2708883).As() = TRUE; + *ScriptGlobal(2708994).As() = TRUE; break; } case eAppVinewoodMenuSafe::HANDS_ON_CAR_WASH: { if (GPBD_FM_2::Get()->Entries[Self::GetPlayer().GetId()].SYVehSaleData.HOWCData.SafeCashValue > 0) - *ScriptGlobal(2708890).As() = TRUE; + *ScriptGlobal(2709001).As() = TRUE; break; } } diff --git a/src/game/features/recovery/DailyActivities.cpp b/src/game/features/recovery/DailyActivities.cpp index 215548699..f91d8dee2 100644 --- a/src/game/features/recovery/DailyActivities.cpp +++ b/src/game/features/recovery/DailyActivities.cpp @@ -166,13 +166,13 @@ namespace YimMenu::Features static joaat_t GetNextExoticExportsVehicleHash() { - constexpr ScriptGlobal order(1950369); + constexpr ScriptGlobal order(1950873); 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(1950358 + (offset + 1)).As(); + auto hash = *ScriptGlobal(1950862 + (offset + 1)).As(); return hash; } } @@ -205,7 +205,7 @@ namespace YimMenu::Features } } - auto streetDealerData = ScriptLocal(m_Thread, 258).At(12); + auto streetDealerData = ScriptLocal(m_Thread, 265).At(12); if (!initialized) { @@ -528,13 +528,13 @@ namespace YimMenu::Features bool partime = Stats::GetPackedInt(34838 + (index * 4)) == location; bool landing = Stats::GetPackedInt(34839 + (index * 4)) == location; - *ScriptGlobal(1979961).As() = 1; - *ScriptGlobal(1979961).At(1).As() = 1; - *ScriptGlobal(1979961).At(3).As() = 5; - *ScriptGlobal(1979961).At(4).As() = location + 1; - *ScriptGlobal(1979961).At(8).At(1).As() = checkpointReward.Get() / (1 + (checkpoints * 9)); - *ScriptGlobal(1979961).At(8).At(2).As() = parTimeReward.Get() / (1 + (partime * 9)); - *ScriptGlobal(1979961).At(8).At(3).As() = landingReward.Get() / (1 + (landing * 9)); + *ScriptGlobal(1980496).As() = 1; + *ScriptGlobal(1980496).At(1).As() = 1; + *ScriptGlobal(1980496).At(3).As() = 5; + *ScriptGlobal(1980496).At(4).As() = location + 1; + *ScriptGlobal(1980496).At(8).At(1).As() = checkpointReward.Get() / (1 + (checkpoints * 9)); + *ScriptGlobal(1980496).At(8).At(2).As() = parTimeReward.Get() / (1 + (partime * 9)); + *ScriptGlobal(1980496).At(8).At(3).As() = landingReward.Get() / (1 + (landing * 9)); SET_SKYDIVE_COMPLETED data; data.SkydiveIndex = index; @@ -544,7 +544,7 @@ namespace YimMenu::Features data.AccurateLanding = TRUE; data.Send(); - ScriptGlobal(1983930).At(4).As*>()->Clear(3); + ScriptGlobal(1984467).At(4).As*>()->Clear(3); } }; @@ -656,8 +656,8 @@ namespace YimMenu::Features { thread->m_Context.m_State = rage::scrThread::State::PAUSED; - *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; + *ScriptLocal(thread, 3135).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, 153).At(4).As() = 0; static ScriptFunction onBTTEnd("fm_content_bicycle_time_trial"_J, ScriptPointer("OnBTTEnd", "64 ? ? ? 5D ? ? ? 75 77").Add(1).Rip()); onBTTEnd.Call(); @@ -712,7 +712,7 @@ namespace YimMenu::Features }*/ auto hash = GetNextExoticExportsVehicleHash(); - static ScriptFunction onFreemodeDeliveryEnd("freemode"_J, ScriptPointer("OnFreemodeDeliveryEnd", "2D 0C 2A 00 00")); + static ScriptFunction onFreemodeDeliveryEnd("freemode"_J, ScriptPointer("OnFreemodeDeliveryEnd", "2D 0C 2B 00")); onFreemodeDeliveryEnd.Call(0, Self::GetPlayer().GetId(), 0, 0, 0, 0, 0, 0, 0, 0, hash, 273); //FreemodeDelivery::Get()->DeliveryCooldown1.Reset(); } @@ -796,8 +796,8 @@ namespace YimMenu::Features { for (int i = 0; i < 3; i++) { - int combination = *ScriptLocal(thread, 146).At(22).At(i, 2).At(1).As(); - *ScriptLocal(thread, 146).At(22).At(i, 2).As() = combination; + int combination = *ScriptLocal(thread, 153).At(22).At(i, 2).At(1).As(); + *ScriptLocal(thread, 153).At(22).At(i, 2).As() = combination; } } } @@ -915,7 +915,7 @@ namespace YimMenu::Features if (auto thread = Scripts::FindScriptThread("fm_content_daily_bounty"_J)) { - if (auto coords = *ScriptLocal(thread, 243).At(434).At(1).At(0, 4).As()) + if (auto coords = *ScriptLocal(thread, 250).At(434).At(1).At(0, 4).As()) { Self::GetPed().TeleportTo(coords); } @@ -962,9 +962,9 @@ namespace YimMenu::Features if (index < 0 || index >= wildlifePhotographyAnimalHashes.size()) return; - 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 + ScriptGlobal(2709520).At(545).As*>()->Set(6); + *ScriptGlobal(2709520).At(549).As() = wildlifePhotographyAnimalHashes[index]; + *ScriptGlobal(2709520).At(550).As() = *Pointers.GameTimer - 1; // bypass 2 sec delay } else { diff --git a/src/game/features/recovery/Heist/ApartmentHeist.cpp b/src/game/features/recovery/Heist/ApartmentHeist.cpp index 94e17f1c0..92ff6771c 100644 --- a/src/game/features/recovery/Heist/ApartmentHeist.cpp +++ b/src/game/features/recovery/Heist/ApartmentHeist.cpp @@ -6,6 +6,7 @@ #include "game/gta/ScriptLocal.hpp" #include "core/backend/ScriptMgr.hpp" #include "types/script/globals/GlobalPlayerBD.hpp" +#include "game/backend/Self.hpp" namespace YimMenu::Features { @@ -22,8 +23,8 @@ namespace YimMenu::Features virtual void OnCall() override { - auto base1 = ScriptGlobal(1936013).At(1); - auto base2 = ScriptGlobal(1937981).At(3008); + auto base1 = ScriptGlobal(1936406).At(1); + auto base2 = ScriptGlobal(1938374).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 +76,8 @@ namespace YimMenu::Features { if (auto thread = Scripts::FindScriptThread("fm_mission_controller"_J)) { - *ScriptLocal(thread, 12223).At(24).As() = 7; - *ScriptLocal(thread, 10217).As() = *ScriptLocal(thread, 10217).As() | (1 << 9); + *ScriptLocal(thread, 12239).At(24).As() = 7; + *ScriptLocal(thread, 10233).As() = *ScriptLocal(thread, 10233).As() | (1 << 9); } } }; @@ -89,7 +90,7 @@ namespace YimMenu::Features { if (auto thread = Scripts::FindScriptThread("fm_mission_controller"_J)) { - *ScriptLocal(thread, 10511).At(11).As() = 100.0f; + *ScriptLocal(thread, 10527).At(11).As() = 100.0f; } } }; @@ -102,8 +103,8 @@ namespace YimMenu::Features { if (auto thread = Scripts::FindScriptThread("fm_mission_controller"_J)) { - *ScriptLocal(thread, 32616).As() = 8; - *ScriptLocal(thread, 63640).As() = 5; + *ScriptLocal(thread, 32785).At(Self::GetPlayer().GetId(), 294).At(143).As() = 8; + *ScriptLocal(thread, 64655).As() = 5; } } }; @@ -119,10 +120,10 @@ namespace YimMenu::Features Scripts::ForceScriptHost(thread); ScriptMgr::Yield(500ms); - *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; + *ScriptLocal(thread, 20412).At(1725).At(0, 1).As() = 80; + *ScriptLocal(thread, 20412).As() = 12; + *ScriptLocal(thread, 29326).At(0, 1).As() = 99999; + *ScriptLocal(thread, 32785).At(0, 294).At(68).As() = 99999; } // TODO: find a way of getting current heist info so that InstantFinishPacific can be implemented here conditionally. } @@ -139,11 +140,11 @@ namespace YimMenu::Features Scripts::ForceScriptHost(thread); ScriptMgr::Yield(500ms); - *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; + *ScriptLocal(thread, 20412).At(2686).As() = 1875000; + *ScriptLocal(thread, 20412).At(1062).As() = 5; + *ScriptLocal(thread, 20412).As() = 12; + *ScriptLocal(thread, 29326).At(0, 1).As() = 99999; + *ScriptLocal(thread, 32785).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 2c6606d94..b5d5a72ff 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(1980035).At(831).At(56); + auto base = ScriptGlobal(1980570).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(1981146); + auto base = ScriptGlobal(1973762); 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, 1570).As() = 2; + *ScriptLocal(thread, 1580).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, 59705).At(1376).At(53).As() = _CayoPericoHeistSecondaryTakeValue.GetState(); + *ScriptLocal(thread, 59986).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, 26486).As() = 5; + *ScriptLocal(thread, 26619).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, 31349).As() = 6; + *ScriptLocal(thread, 31511).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, 32589).At(3).As() = 100.0f; + *ScriptLocal(thread, 32751).At(3).As() = 100.0f; } }; @@ -258,12 +258,12 @@ namespace YimMenu::Features case 1: case 3: case 5: - *ScriptLocal(thread, 32588).As() = 5; - *ScriptLocal(thread, 32589).As() = 3; + *ScriptLocal(thread, 32750).As() = 5; + *ScriptLocal(thread, 32751).As() = 3; break; case 2: case 4: - *ScriptLocal(thread, 32563).As() = 7; + *ScriptLocal(thread, 32725).As() = 7; break; default: break; } @@ -287,8 +287,8 @@ namespace YimMenu::Features Scripts::ForceScriptHost(thread); ScriptMgr::Yield(500ms); - *ScriptLocal(thread, 56223).As() = 9; - *ScriptLocal(thread, 56223).At(1776).At(0, 1).As() = 50; + *ScriptLocal(thread, 56504).As() = 9; + *ScriptLocal(thread, 56504).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 0f3d5e8a9..393c8c6b7 100644 --- a/src/game/features/recovery/Heist/DiamondCasinoHeist.cpp +++ b/src/game/features/recovery/Heist/DiamondCasinoHeist.cpp @@ -7,6 +7,7 @@ #include "game/gta/ScriptLocal.hpp" #include "core/backend/ScriptMgr.hpp" #include "game/backend/Tunables.hpp" +#include "game/backend/Self.hpp" namespace YimMenu::Features { @@ -23,7 +24,7 @@ namespace YimMenu::Features virtual void OnCall() override { - auto base = ScriptGlobal(1973231).At(1497).At(736).At(92); + auto base = ScriptGlobal(1973762).At(1497).At(736).At(92); *base.At(0, 1).As() = _DiamondCasinoHeistCut1.GetState(); *base.At(1, 1).As() = _DiamondCasinoHeistCut2.GetState(); @@ -38,7 +39,7 @@ namespace YimMenu::Features virtual void OnCall() override { - auto base = ScriptGlobal(1977594); + auto base = ScriptGlobal(1978125); for (int i = 0; i <= 3; i++) { @@ -302,7 +303,7 @@ namespace YimMenu::Features virtual void OnCall() override { if (auto thread = Scripts::FindScriptThread("fm_mission_controller"_J)) - *ScriptLocal(thread, 20395).At(2686).As() = _DiamondCasinoHeistActualTake.GetState(); + *ScriptLocal(thread, 20412).At(2686).As() = _DiamondCasinoHeistActualTake.GetState(); } }; @@ -314,8 +315,8 @@ namespace YimMenu::Features { if (auto thread = Scripts::FindScriptThread("fm_mission_controller"_J)) { - *ScriptLocal(thread, 54042).As() = 5; - *ScriptLocal(thread, 55108).As() = 5; + *ScriptLocal(thread, 55028).As() = 5; + *ScriptLocal(thread, 56098).As() = 5; } } }; @@ -327,7 +328,7 @@ namespace YimMenu::Features virtual void OnCall() override { if (auto thread = Scripts::FindScriptThread("fm_mission_controller"_J)) - *ScriptLocal(thread, 10551).At(7).As() = *ScriptLocal(thread, 10551).At(37).As(); + *ScriptLocal(thread, 10567).At(7).As() = *ScriptLocal(thread, 10567).At(37).As(); } }; @@ -339,7 +340,7 @@ namespace YimMenu::Features { if (auto thread = Scripts::FindScriptThread("fm_mission_controller"_J)) { - *ScriptLocal(thread, 32616).As() = 8; + *ScriptLocal(thread, 32785).At(Self::GetPlayer().GetId(), 294).At(143).As() = 8; *ScriptLocal(thread, 63640).As() = 5; } } @@ -356,12 +357,12 @@ namespace YimMenu::Features Scripts::ForceScriptHost(thread); ScriptMgr::Yield(500ms); - *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; + *ScriptLocal(thread, 20412).At(1740).At(0, 1).As() = 80; + *ScriptLocal(thread, 20412).At(2686).As() = 4443220; + *ScriptLocal(thread, 20412).At(1062).As() = 5; + *ScriptLocal(thread, 20412).As() = 12; + *ScriptLocal(thread, 29326).At(0, 1).As() = 99999; + *ScriptLocal(thread, 32785).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 5b4eeb6c7..d0f8ee092 100644 --- a/src/game/features/recovery/Heist/DoomsdayHeist.cpp +++ b/src/game/features/recovery/Heist/DoomsdayHeist.cpp @@ -22,7 +22,7 @@ namespace YimMenu::Features virtual void OnCall() override { - auto base = ScriptGlobal(1968543).At(812).At(50); + auto base = ScriptGlobal(1969071).At(812).At(50); *base.At(0, 1).As() = _DoomsdayHeistCut1.GetState(); *base.At(1, 1).As() = _DoomsdayHeistCut2.GetState(); @@ -83,7 +83,7 @@ namespace YimMenu::Features ScriptMgr::Yield(500ms); if (auto thread = Scripts::FindScriptThread("gb_gang_ops_planning"_J)) - *ScriptLocal(thread, 211).As() = 6; + *ScriptLocal(thread, 218).As() = 6; } }; @@ -95,9 +95,9 @@ namespace YimMenu::Features { if (auto thread = Scripts::FindScriptThread("fm_mission_controller"_J)) { - *ScriptLocal(thread, 1572).As() = 2; - *ScriptLocal(thread, 1541).As() = 3; - *ScriptLocal(thread, 1298).At(135).As() = 3; + *ScriptLocal(thread, 1588).As() = 2; + *ScriptLocal(thread, 1557).As() = 3; + *ScriptLocal(thread, 1314).At(135).As() = 3; } } }; @@ -113,10 +113,10 @@ namespace YimMenu::Features Scripts::ForceScriptHost(thread); ScriptMgr::Yield(500ms); - *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; + *ScriptLocal(thread, 20412).At(1725).At(0, 1).As() = 80; + *ScriptLocal(thread, 20412).As() = 12; + *ScriptLocal(thread, 29326).At(0, 1).As() = 99999; + *ScriptLocal(thread, 32785).At(0, 294).At(68).As() = 99999; } // TODO: find a way of getting current heist info so that InstantFinishAct3 can be implemented here conditionally. } @@ -133,11 +133,11 @@ namespace YimMenu::Features Scripts::ForceScriptHost(thread); ScriptMgr::Yield(500ms); - *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; + *ScriptLocal(thread, 20412).As() = 12; + *ScriptLocal(thread, 20412).At(1740).At(0, 1).As() = 150; + *ScriptLocal(thread, 20412).At(1062).As() = 5; + *ScriptLocal(thread, 29326).At(0, 1).As() = 99999; + *ScriptLocal(thread, 32785).At(0, 294).At(68).As() = 99999; } } }; diff --git a/src/game/features/recovery/UnlockGTAPlus.cpp b/src/game/features/recovery/UnlockGTAPlus.cpp index 48f907aa5..4a96d4224 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(1970058).As() = true; - *ScriptGlobal(1970058).At(3).As() = (1 << 3) | (1 << 1); + *ScriptGlobal(1970586).As() = true; + *ScriptGlobal(1970586).At(3).As() = (1 << 3) | (1 << 1); } virtual void OnDisable() override diff --git a/src/game/features/self/OffTheRadar.cpp b/src/game/features/self/OffTheRadar.cpp index 8aa670dc5..9088bcc83 100644 --- a/src/game/features/self/OffTheRadar.cpp +++ b/src/game/features/self/OffTheRadar.cpp @@ -1,6 +1,8 @@ #include "core/commands/LoopedCommand.hpp" #include "game/backend/Self.hpp" #include "game/gta/Scripts.hpp" +#include "game/gta/ScriptGlobal.hpp" +#include "game/pointers/Pointers.hpp" #include "types/script/globals/GlobalPlayerBD.hpp" namespace YimMenu::Features @@ -12,7 +14,10 @@ namespace YimMenu::Features virtual void OnTick() override { if (auto gpbd = GlobalPlayerBD::Get(); gpbd && Scripts::SafeToModifyFreemodeBroadcastGlobals()) + { + *ScriptGlobal(2673276).At(58).As() = *Pointers.NetworkTime; gpbd->Entries[Self::GetPlayer().GetId()].OffRadarActive = true; + } } virtual void OnDisable() override diff --git a/src/game/features/self/OpenGunLocker.cpp b/src/game/features/self/OpenGunLocker.cpp index 455fd6070..7d1d0a363 100644 --- a/src/game/features/self/OpenGunLocker.cpp +++ b/src/game/features/self/OpenGunLocker.cpp @@ -45,7 +45,7 @@ namespace YimMenu::Features } static ScriptFunction runGunLockerMenu("AM_MP_AUTO_SHOP"_J, ScriptPointer("RunGunLockerMenu", "2D 06 08 00 00 38 03 5D ? ? ? 57 03 00")); - auto gunLockerData = ScriptLocal(m_Thread, 294).At(584); + auto gunLockerData = ScriptLocal(m_Thread, 301).At(568); int unused; runGunLockerMenu.Call(gunLockerData.As(), &unused, eSimpleInteriorIndex::SIMPLE_INTERIOR_AUTO_SHOP_MISSION_ROW, Self::GetPlayer().GetId(), false, true); diff --git a/src/game/features/self/OpenWardrobe.cpp b/src/game/features/self/OpenWardrobe.cpp index 6e58472f3..60bcb9855 100644 --- a/src/game/features/self/OpenWardrobe.cpp +++ b/src/game/features/self/OpenWardrobe.cpp @@ -70,7 +70,7 @@ namespace YimMenu::Features if (!isItemLockedByStatPatch1) { - isItemLockedByStatPatch1 = ScriptPatches::AddPatch("wardrobe_mp"_J, ScriptPointer("IsItemLockedByStatPatch1", "38 00 65 02 F7 B6 C6 31 09 00 31 46 A9 B0 28 04"), {0x71, 0x2E, 0x03, 0x01}); + isItemLockedByStatPatch1 = ScriptPatches::AddPatch("wardrobe_mp"_J, ScriptPointer("IsItemLockedByStatPatch1", "38 00 65 02 F7"), {0x71, 0x2E, 0x03, 0x01}); } isItemLockedByStatPatch1->Enable(); @@ -105,7 +105,7 @@ namespace YimMenu::Features { if (auto thread = Scripts::FindScriptThread("wardrobe_mp"_J)) { - if (*ScriptLocal(thread, 191).At(46).At(9).As() == 4) + if (*ScriptLocal(thread, 198).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 01ad3cbed..903d0581a 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, 8819); - *data.At(3).As() = 230; + auto data = ScriptLocal(freemode, 8854); + *data.At(3).As() = 235; *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, 528).As() = 1; - ScriptGlobal(2686095).At(4357).At(260).At(7, 2).As()->Destroy(); + *ScriptLocal(thread, 535).As() = 1; + ScriptGlobal(2686124).At(4373).At(260).At(7, 2).As()->Destroy(); } } else diff --git a/src/game/features/vehicle/SavePersonalVehicle.cpp b/src/game/features/vehicle/SavePersonalVehicle.cpp index b5fe6338f..194b9432a 100644 --- a/src/game/features/vehicle/SavePersonalVehicle.cpp +++ b/src/game/features/vehicle/SavePersonalVehicle.cpp @@ -59,7 +59,7 @@ namespace YimMenu::Features if (auto VehicleRewardData = VEHICLE_REWARD_DATA::Get(m_Thread)) { - auto VehicleMenuData = ScriptLocal(m_Thread, 176).As(); // TO-DO: add struct for this? + auto VehicleMenuData = ScriptLocal(m_Thread, 195).As(); // TO-DO: add struct for this? static ScriptFunction giveVehicleReward("AM_MP_VEHICLE_REWARD"_J, ScriptPointer("GiveVehicleReward", "2D 0C 1E 00 00")); if (giveVehicleReward.Call(Self::GetVehicle().GetHandle(), VehicleMenuData, &VehicleRewardData->TransactionStatus, &VehicleRewardData->Garage, &VehicleRewardData->GarageOffset, &VehicleRewardData->ControlStatus, false, true, true, false, 0, -1)) { diff --git a/src/game/frontend/submenus/Network/RandomEvents.cpp b/src/game/frontend/submenus/Network/RandomEvents.cpp index ce3146198..0ba7aac30 100644 --- a/src/game/frontend/submenus/Network/RandomEvents.cpp +++ b/src/game/frontend/submenus/Network/RandomEvents.cpp @@ -93,8 +93,8 @@ namespace YimMenu::Submenus { if (event == ARMOURED_TRUCK) // It doesn't have tunables { - setCooldown = *ScriptGlobal(262145).At(33807).As(); - setAvailability = *ScriptGlobal(262145).At(33808).As(); + setCooldown = *ScriptGlobal(262145).At(33808).As(); + setAvailability = *ScriptGlobal(262145).At(33809).As(); } else { diff --git a/src/game/gta/Network.cpp b/src/game/gta/Network.cpp index e5c4de282..5c1d2e9a9 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(1575044); + static ScriptGlobal join_type_global(1575048); sendToClouds.Call(); *join_type_global.As() = to_launch; diff --git a/src/game/gta/Scripts.cpp b/src/game/gta/Scripts.cpp index 3c8050677..36210f85e 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(1990823); // this global will bypass the new checks added this update + auto bypass_global = ScriptGlobal(1991386); // 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 0e958ed74..39bea5a31 100644 --- a/src/game/gta/data/LauncherScripts.hpp +++ b/src/game/gta/data/LauncherScripts.hpp @@ -230,6 +230,11 @@ namespace YimMenu "fm_content_survival_grouping"_J, "fm_content_valentine_cheater"_J, "fm_content_survival"_J, + "fm_content_kortz_scoping"_J, + "fm_content_kortz_entry"_J, + "fm_content_kortz_equipment"_J, + "fm_content_kortz_disruption"_J, + "fm_content_kortz_task"_J, "AM_BOAT_TAXI"_J, "AM_HELI_TAXI"_J, "fm_hold_up_tut"_J, @@ -258,7 +263,7 @@ namespace YimMenu "fm_Bj_race_controler"_J, "fm_deathmatch_controler"_J, "fm_hideout_controler"_J, - "fm_mission_controller_2020"_J, // Public_Mission_Controller, fm_mission_controller + "fm_mission_controller_v3"_J, // Public_Mission_Controller/fm_mission_controller/fm_mission_controller_2020 "FM_Race_Controler"_J, "FM_Horde_Controler"_J, // FM_Survival_Controller "dont_cross_the_line"_J, diff --git a/src/game/gta/data/PedModels.hpp b/src/game/gta/data/PedModels.hpp index 1fc6c8c35..30c81b22f 100644 --- a/src/game/gta/data/PedModels.hpp +++ b/src/game/gta/data/PedModels.hpp @@ -403,6 +403,7 @@ namespace YimMenu "csb_englishdave", "csb_englishdave_02", "csb_faber_02", + "csb_faber_03", "csb_fos_rep", "csb_g", "csb_georginacheng", @@ -456,7 +457,9 @@ namespace YimMenu "csb_porndudes", "csb_prologuedriver", "csb_prolsec", + "csb_rae", "csb_rafdeangelis", + "csb_rafdeangelis_02", "csb_ramp_gang", "csb_ramp_hic", "csb_ramp_hipster", @@ -564,6 +567,7 @@ namespace YimMenu "ig_agent_02", "ig_agent14_02", "ig_ahronward", + "ig_alec", "ig_amandatownley", "ig_amandatownley_02", "ig_andreas", @@ -638,6 +642,7 @@ namespace YimMenu "ig_entourage_a", "ig_entourage_b", "ig_faber_02", + "ig_faber_03", "ig_fabien", "ig_fbisuit_01", "ig_fibleader_01", @@ -752,12 +757,15 @@ namespace YimMenu "ig_patricia", "ig_patricia_02", "ig_pernell_moss", + "ig_pernell_moss_02", "ig_pilot", "ig_pilot_02", "ig_popov", "ig_priest", "ig_prolsec_02", + "ig_rae", "ig_rafdeangelis", + "ig_rafdeangelis_02", "ig_ramp_gang", "ig_ramp_hic", "ig_ramp_hipster", @@ -927,6 +935,7 @@ namespace YimMenu "s_m_m_highsec_05", "s_m_m_highsec_06", "s_m_m_janitor", + "s_m_m_kortzsecurity_01", "s_m_m_lathandy_01", "s_m_m_lifeinvad_01", "s_m_m_linecook", diff --git a/src/game/gta/data/ScriptNames.hpp b/src/game/gta/data/ScriptNames.hpp index 27f27eeeb..636d87d0d 100644 --- a/src/game/gta/data/ScriptNames.hpp +++ b/src/game/gta/data/ScriptNames.hpp @@ -126,6 +126,7 @@ namespace YimMenu "am_mp_island", "am_mp_juggalo_hideout", "am_mp_mansion", + "am_mp_mansion_art_workshop", "am_mp_mansion_driveway", "am_mp_mansion_garage", "am_mp_multistorey_garage", @@ -437,6 +438,7 @@ namespace YimMenu "flow_help", "flyunderbridges", "fmmc_contentquicklauncher", + "fmmc_lasers", "fmmc_launcher", "fmmc_playlist_controller", "fm_bj_race_controler", @@ -493,6 +495,11 @@ namespace YimMenu "fm_content_hsw_time_trial", "fm_content_island_dj", "fm_content_island_heist", + "fm_content_kortz_disruption", + "fm_content_kortz_entry", + "fm_content_kortz_equipment", + "fm_content_kortz_scoping", + "fm_content_kortz_task", "fm_content_metal_detector", "fm_content_movie_props", "fm_content_mp_intro", @@ -552,6 +559,7 @@ namespace YimMenu "fm_main_menu", "fm_mission_controller", "fm_mission_controller_2020", + "fm_mission_controller_v3", "fm_mission_creator", "fm_race_controler", "fm_race_creator", @@ -716,6 +724,7 @@ namespace YimMenu "josh4", "juggalo_hideout_carmod", "juggalo_hideout_seating", + "kortz_planning", "lamar1", "landing_pre_startup", "laptop_trigger", @@ -765,6 +774,7 @@ namespace YimMenu "maintransition", "main_install", "main_persistent", + "mansion_art_workshop_seating", "mansion_basement_seating", "mansion_carmod", "mansion_club_bar", @@ -818,6 +828,7 @@ namespace YimMenu "mp_registration", "mp_save_game_global_block", "mp_skycam_stuck_wiggler", + "mp_strand_f9", "mp_unlocks", "mp_weapons", "mrsphilips1", diff --git a/src/game/gta/data/StackSizes.hpp b/src/game/gta/data/StackSizes.hpp index d09747c1d..6c33d7af1 100644 --- a/src/game/gta/data/StackSizes.hpp +++ b/src/game/gta/data/StackSizes.hpp @@ -29,7 +29,7 @@ namespace YimMenu INGAMEHUD = 4600, TRANSITION = 8032, FMMC_LAUNCHER = 28000, - MULTIPLAYER_FREEMODE = 89500, + MULTIPLAYER_FREEMODE = 92500, MISSION = 64500, MP_LAUNCH_SCRIPT = 35250 }; diff --git a/src/game/gta/data/Vehicles.hpp b/src/game/gta/data/Vehicles.hpp index bc8001a49..b798f0ce5 100644 --- a/src/game/gta/data/Vehicles.hpp +++ b/src/game/gta/data/Vehicles.hpp @@ -161,6 +161,7 @@ namespace YimMenu "camper"_J, "caracara"_J, "caracara2"_J, + "caracara3"_J, "carbonizzare"_J, "carbonrs"_J, "cargobob"_J, @@ -170,6 +171,7 @@ namespace YimMenu "cargobob5"_J, "cargoplane"_J, "cargoplane2"_J, + "cartuccia"_J, "casco"_J, "castigator"_J, "cavalcade"_J, @@ -262,9 +264,12 @@ namespace YimMenu "draugur"_J, "driftchavosv6"_J, "driftcheburek"_J, + "driftcoquette"_J, "driftcypher"_J, "driftdominator10"_J, + "driftdominator8"_J, "driftdominator9"_J, + "driftelegy"_J, "drifteuros"_J, "driftfr36"_J, "driftfuto"_J, @@ -312,6 +317,7 @@ namespace YimMenu "entityxf"_J, "envisage"_J, "esskey"_J, + "estride"_J, "eudora"_J, "euros"_J, "eurosx32"_J, @@ -400,6 +406,7 @@ namespace YimMenu "hellion"_J, "hermes"_J, "hexer"_J, + "horus"_J, "hotknife"_J, "hotring"_J, "howard"_J, @@ -472,6 +479,7 @@ namespace YimMenu "l352"_J, "landstalker"_J, "landstalker2"_J, + "laufer"_J, "lazer"_J, "le7b"_J, "lectro"_J, @@ -480,6 +488,7 @@ namespace YimMenu "lm87"_J, "locust"_J, "longfin"_J, + "lrcgt"_J, "luiva"_J, "lurcher"_J, "luxor"_J, @@ -499,6 +508,7 @@ namespace YimMenu "maverick"_J, "maverick2"_J, "menacer"_J, + "merula"_J, "mesa"_J, "mesa2"_J, "mesa3"_J, @@ -604,6 +614,7 @@ namespace YimMenu "policeold2"_J, "policet"_J, "policet3"_J, + "polignus"_J, "polimpaler5"_J, "polimpaler6"_J, "polmav"_J, @@ -850,6 +861,7 @@ namespace YimMenu "trash"_J, "trash2"_J, "trflat"_J, + "trflat2"_J, "tribike"_J, "tribike2"_J, "tribike3"_J, @@ -881,6 +893,7 @@ namespace YimMenu "valkyrie2"_J, "vamos"_J, "vectre"_J, + "velenogt"_J, "velum"_J, "velum2"_J, "verlierer2"_J, @@ -911,6 +924,7 @@ namespace YimMenu "vorschlaghammer"_J, "vortex"_J, "vstr"_J, + "warden"_J, "warrener"_J, "warrener2"_J, "washington"_J, diff --git a/src/game/pointers/Pointers.cpp b/src/game/pointers/Pointers.cpp index b02cbe163..409193f24 100644 --- a/src/game/pointers/Pointers.cpp +++ b/src/game/pointers/Pointers.cpp @@ -107,9 +107,9 @@ namespace YimMenu ScriptGlobals = ptr.Add(7).Add(3).Rip().As(); }); - constexpr auto sendNetworkDamagePtrn = Pattern<"0F B6 41 28 04 FE 3C 03 0F 87 EA">("SendNetworkDamage"); - scanner.Add(sendNetworkDamagePtrn, [this](PointerCalculator ptr) { - TriggerWeaponDamageEvent = ptr.Sub(0x51).As(); + constexpr auto triggerWeaponDamageEventPtrn = Pattern<"E8 ? ? ? ? 66 90 FF C5">("TriggerWeaponDamageEvent"); + scanner.Add(triggerWeaponDamageEventPtrn, [this](PointerCalculator ptr) { + TriggerWeaponDamageEvent = ptr.Add(1).Rip().As(); }); constexpr auto scriptProgramsPtrn = Pattern<"48 C7 84 C8 D8 00 00 00 00 00 00 00">("ScriptPrograms"); @@ -199,10 +199,10 @@ namespace YimMenu NetEventMgr = ptr.Add(3).Rip().As(); }); - constexpr auto sendEventAckPtrn = Pattern<"84 C0 75 ? 89 EE 49 8D AD">("SendEventAck"); + constexpr auto sendEventAckPtrn = Pattern<"E8 ? ? ? ? 84 C0 75 ? 44 89 F5">("SendEventAck"); scanner.Add(sendEventAckPtrn, [this](PointerCalculator ptr) { - EventAck = ptr.Sub(4).Rip().As(); - SendEventAck = ptr.Add(0x13).Add(1).Rip().As(); + EventAck = ptr.Add(1).Rip().As(); + SendEventAck = ptr.Add(0x1A).Add(1).Rip().As(); }); constexpr auto queueDependencyPtrn = Pattern<"0F 29 46 50 48 8D 05">("QueueDependency&SigScanMemory"); @@ -216,9 +216,9 @@ namespace YimMenu ScriptVM = ptr.Sub(0x24).As(); }); - constexpr auto prepareMetricForSendingPtrn = Pattern<"48 89 F9 FF 50 20 48 8D 15">("PrepareMetricForSending"); + constexpr auto prepareMetricForSendingPtrn = Pattern<"41 56 56 57 55 53 48 83 EC ? 4C 89 CB 4C 89 C6">("PrepareMetricForSending"); scanner.Add(prepareMetricForSendingPtrn, [this](PointerCalculator ptr) { - PrepareMetricForSending = ptr.Sub(0x26).As(); + PrepareMetricForSending = ptr.As(); }); constexpr auto beDataPtrn = Pattern<"48 C7 05 ? ? ? ? 00 00 00 00 E8 ? ? ? ? 48 89 C1 E8 ? ? ? ? E8 ? ? ? ? BD 0A 00 00 00">("BEData"); @@ -228,7 +228,8 @@ namespace YimMenu IsBEBanned = ptr.Add(3).Rip().Add(8).Add(4).Add(8).Add(4).As(); }); - constexpr auto battlEyeStatusUpdatePatchPtrn = Pattern<"80 B9 92 0A 00 00 01">("BattlEyeStatusUpdatePatch"); +#if 0 + constexpr auto battlEyeStatusUpdatePatchPtrn = Pattern<"80 B9 92 0A 00 00 01 48 81 D1 90 0A 00 00">("BattlEyeStatusUpdatePatch"); scanner.Add(battlEyeStatusUpdatePatchPtrn, [this](PointerCalculator ptr) { BattlEyeStatusUpdatePatch = BytePatches::Add(ptr.As(), // since arxan obfuscated this subroutine, return mid-function instead @@ -241,6 +242,7 @@ namespace YimMenu }) ); }); +#endif constexpr auto writeNetArrayDataPtrn = Pattern<"0F 84 06 03 00 00 0F B6 83">("WriteNetArrayData"); scanner.Add(writeNetArrayDataPtrn, [this](PointerCalculator ptr) { @@ -304,9 +306,9 @@ namespace YimMenu NetworkSession = ptr.Add(0x17).Add(3).Rip().As(); }); - constexpr auto joinSessionByInfoPtrn = Pattern<"B0 01 40 84 E9 0F 85 32 FD FF FF 48 89 F1">("JoinSessionByInfo"); + constexpr auto joinSessionByInfoPtrn = Pattern<"E8 ? ? ? ? 0F 10 87 ? ? ? ? 0F 11 86 ? ? ? ? 88 86 ? ? ? ? 84 C0">("JoinSessionByInfo"); scanner.Add(joinSessionByInfoPtrn, [this](PointerCalculator ptr) { - JoinSessionByInfo = ptr.Sub(0x7).Add(1).Rip().As(); + JoinSessionByInfo = ptr.Add(1).Rip().As(); }); constexpr auto getSessionByGamerHandle = Pattern<"48 C7 84 24 80 00 00 00 10 00 00 08">("GetSessionByGamerHandle"); @@ -370,7 +372,7 @@ namespace YimMenu SetJoinRequestPoolTypePatch = BytePatches::Add(ptr.Sub(5).As(), std::to_array({0xB8, 0x00, 0x00, 0x00, 0x00})); }); - constexpr auto handleJoinRequestIgnorePoolPatchPtrn = Pattern<"41 83 FF 05 74 ? 42 8B 84 F5">("HandleJoinRequestIgnorePoolPatch"); + constexpr auto handleJoinRequestIgnorePoolPatchPtrn = Pattern<"41 83 FF ? 74 ? 41 83 FF ? 0F 84 ? ? ? ? 45 85 FF 75">("HandleJoinRequestIgnorePoolPatch"); scanner.Add(handleJoinRequestIgnorePoolPatchPtrn, [this](PointerCalculator ptr) { HandleJoinRequestIgnorePoolPatch = BytePatches::Add(ptr.As(), std::to_array({0x39, 0xC9, 0x90, 0x90})); }); diff --git a/src/types/script/globals/FreemodeDelivery.hpp b/src/types/script/globals/FreemodeDelivery.hpp index 2262d6bf6..bb8f1a3d3 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; // 6050 - SCR_BOOL DeliveryNotInVehicle; // 6051 - TIMER DeliveryCooldown1; // 6052 - SCR_INT CooldownFrameCount1; // 6054 - TIMER DeliveryCooldown2; // 6055 - SCR_INT CooldownFrameCount2; // 6057 + SCR_ARRAY DeliveryPosData; // 1 + SCR_BOOL DeliveryInVehicle; // 6068 + SCR_BOOL DeliveryNotInVehicle; // 6069 + TIMER DeliveryCooldown1; // 6070 + SCR_INT CooldownFrameCount1; // 6072 + TIMER DeliveryCooldown2; // 6073 + SCR_INT CooldownFrameCount2; // 6075 static FreemodeDelivery* Get(); }; -//static_assert(sizeof(FreemodeDelivery) == 6260 * 8); \ No newline at end of file +//static_assert(sizeof(FreemodeDelivery) == 6278 * 8); \ No newline at end of file diff --git a/src/types/script/globals/FreemodeGeneral.hpp b/src/types/script/globals/FreemodeGeneral.hpp index 28d9650a5..85293e67c 100644 --- a/src/types/script/globals/FreemodeGeneral.hpp +++ b/src/types/script/globals/FreemodeGeneral.hpp @@ -70,8 +70,9 @@ struct FreemodeGeneral STREET_DEALERS StreetDealers; // 5635 uint64_t PAD_5659[107]; DAILY_RESET_DATA DailyReset; // 5766 - FREEMODE_DELIVERY_DATA DeliveryData; // 5770 + uint64_t PAD_5670[4]; + FREEMODE_DELIVERY_DATA DeliveryData; // 5774 static FreemodeGeneral* Get(); }; -//static_assert(sizeof(FreemodeGeneral) == 6073 * 8); \ No newline at end of file +//static_assert(sizeof(FreemodeGeneral) == 6077 * 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 293e6d82c..8d50df7be 100644 --- a/src/types/script/globals/GPBD_FM.hpp +++ b/src/types/script/globals/GPBD_FM.hpp @@ -687,8 +687,9 @@ struct GPBD_FM_Entry // int64_t PAD_0861[2]; removed b889g9 SCR_INT ApartmentEnterFlags; // SCR_VEC3 AvengerMissionStartPosition; removed b889g9 + SCR_INT UnkCutsceneState; // added b1158.13g9, used in fmmc_launcher }; -static_assert(sizeof(GPBD_FM_Entry) == 883 * 8); +static_assert(sizeof(GPBD_FM_Entry) == 884 * 8); struct GPBD_FM { @@ -696,4 +697,4 @@ struct GPBD_FM static GPBD_FM* Get(); }; -static_assert(sizeof(GPBD_FM) == 28257 * 8); \ No newline at end of file +static_assert(sizeof(GPBD_FM) == 28289 * 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 5f34d4687..677471403 100644 --- a/src/types/script/globals/GPBD_FM_2.hpp +++ b/src/types/script/globals/GPBD_FM_2.hpp @@ -85,9 +85,9 @@ struct SALVAGE_YARD_VEHICLE_SALE_DATA { uint64_t PAD_0000[27]; HOCW_DATA HOWCData; // 27 - uint64_t PAD_0043[9]; + uint64_t PAD_0043[115]; }; -static_assert(sizeof(SALVAGE_YARD_VEHICLE_SALE_DATA) == 52 * 8); +static_assert(sizeof(SALVAGE_YARD_VEHICLE_SALE_DATA) == 158 * 8); struct GPBD_FM_2_Entry { @@ -125,9 +125,10 @@ struct GPBD_FM_2_Entry GANGOPS_DATA GangopsData; // 43 RANDOM_EVENTS_CLIENT_DATA RandomEventsClientData; // 82 SALVAGE_YARD_VEHICLE_SALE_DATA SYVehSaleData; // 158 added b889g9 - uint64_t PAD_0210[105]; + SCR_INT GangopsFlowMissionProg; // 316 + SCR_ARRAY TrickOrTreatFlags; // 317 96-bit flag bitset for effects }; -static_assert(sizeof(GPBD_FM_2_Entry) == 315 * 8); +static_assert(sizeof(GPBD_FM_2_Entry) == 321 * 8); struct GPBD_FM_2 { @@ -135,4 +136,4 @@ struct GPBD_FM_2 static GPBD_FM_2* Get(); }; -static_assert(sizeof(GPBD_FM_2) == 10081 * 8); \ No newline at end of file +static_assert(sizeof(GPBD_FM_2) == 10273 * 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 5bf7daa5e..3cc5498d7 100644 --- a/src/types/script/globals/GSBD_RandomEvents.hpp +++ b/src/types/script/globals/GSBD_RandomEvents.hpp @@ -57,8 +57,9 @@ struct RANDOM_EVENTS_TARGET_DATA { PLAYER_INDEX PhantomCarTarget; // 0 PLAYER_INDEX XMASMuggerTarget; // 1 + PLAYER_INDEX CommunityOutreachTarget; // 2 }; -static_assert(sizeof(RANDOM_EVENTS_TARGET_DATA) == 2 * 8); +static_assert(sizeof(RANDOM_EVENTS_TARGET_DATA) == 3 * 8); struct GSBD_RandomEvents { @@ -69,4 +70,4 @@ struct GSBD_RandomEvents static GSBD_RandomEvents* Get(); }; -static_assert(sizeof(GSBD_RandomEvents) == 366 * 8); \ No newline at end of file +static_assert(sizeof(GSBD_RandomEvents) == 367 * 8); \ No newline at end of file diff --git a/src/types/script/globals/Globals.cpp b/src/types/script/globals/Globals.cpp index 0e39170c2..d16fb7928 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, 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, 1984461); -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(GlobalPlayerBD, 2658296); +DEFINE_GLOBAL_ACCESSOR(GPBD_FM, 1845347); +DEFINE_GLOBAL_ACCESSOR(GPBD_FM_2, 1882797); +DEFINE_GLOBAL_ACCESSOR(GPBD_FM_3, 1893070); +DEFINE_GLOBAL_ACCESSOR(GPBD_Flow, 1985024); +DEFINE_GLOBAL_ACCESSOR(GPBD_Kicking, 1874149); +DEFINE_GLOBAL_ACCESSOR(GPBD_MissionName, 1873636); +DEFINE_GLOBAL_ACCESSOR(GSBD, 2649164); +DEFINE_GLOBAL_ACCESSOR(GSBD_BlockB, 2650428); +DEFINE_GLOBAL_ACCESSOR(GSBD_FM, 1835603); +DEFINE_GLOBAL_ACCESSOR(GSBD_FM_Events, 1923118); +DEFINE_GLOBAL_ACCESSOR(GSBD_Kicking, 1877350); +DEFINE_GLOBAL_ACCESSOR(GSBD_PropertyInstances, 1944313); +DEFINE_GLOBAL_ACCESSOR(g_AMC_playerBD, 2700299); +DEFINE_GLOBAL_ACCESSOR(GSBD_RandomEvents, 1882345); +DEFINE_GLOBAL_ACCESSOR(MPSV, 1583778); DEFINE_GLOBAL_ACCESSOR(g_SavedMPGlobals, 2359296); -DEFINE_GLOBAL_ACCESSOR(FreemodeGeneral, 2733138); -DEFINE_GLOBAL_ACCESSOR(DailyObjectivesState, 1574745); -DEFINE_GLOBAL_ACCESSOR(WeeklyChallenge, 2732069); -DEFINE_GLOBAL_ACCESSOR(FreemodeDelivery, 1957402); -DEFINE_GLOBAL_ACCESSOR(LauncherServerData, 2700002); \ No newline at end of file +DEFINE_GLOBAL_ACCESSOR(FreemodeGeneral, 2733326); +DEFINE_GLOBAL_ACCESSOR(DailyObjectivesState, 1574746); +DEFINE_GLOBAL_ACCESSOR(WeeklyChallenge, 2732247); +DEFINE_GLOBAL_ACCESSOR(FreemodeDelivery, 1957909); +DEFINE_GLOBAL_ACCESSOR(LauncherServerData, 2700113); \ No newline at end of file diff --git a/src/types/script/locals/Locals.cpp b/src/types/script/locals/Locals.cpp index 16094381d..d94dd57d1 100644 --- a/src/types/script/locals/Locals.cpp +++ b/src/types/script/locals/Locals.cpp @@ -16,12 +16,12 @@ return lcl.As(); \ } -DEFINE_LOCAL_ACCESSOR(VEHICLE_REWARD_DATA, 129); -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); +DEFINE_LOCAL_ACCESSOR(VEHICLE_REWARD_DATA, 148); +DEFINE_LOCAL_ACCESSOR(RANDOM_EVENTS_FREEMODE_DATA, 16199); +DEFINE_LOCAL_ACCESSOR(StandardTimeTrialData, 14774); +DEFINE_LOCAL_ACCESSOR(RCBanditoTimeTrialData, 14824); +DEFINE_LOCAL_ACCESSOR(HSWTimeTrialData, 14868); +DEFINE_LOCAL_ACCESSOR(BikeTimeTrialData, 15667); // am_launcher -DEFINE_LOCAL_ACCESSOR(LauncherClientData, 247); \ No newline at end of file +DEFINE_LOCAL_ACCESSOR(LauncherClientData, 270); \ No newline at end of file