Update for b1013.17 (#771)

This commit is contained in:
Arthur
2025-12-15 17:13:45 +03:00
committed by GitHub
parent eb30c27eb1
commit 4f4935a66c
42 changed files with 430 additions and 268 deletions
+17 -4
View File
@@ -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<int*>() - 1;
auto itemInSlot = *ScriptGlobal(1944744).At(garageOffset).At(garageSlotIterator).As<int*>() - 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<const char*>());
m_Garage = HUD::GET_FILENAME_FOR_AUDIO_CONVERSATION(ScriptGlobal(1312440).At(propertyStatState, 1951).At(16).As<const char*>());
}
else
{
@@ -365,7 +378,7 @@ namespace YimMenu
ScriptMgr::Yield(100ms);
*ScriptLocal("freemode"_J, 19447).At(176).As<int*>() = 0;
*ScriptLocal("freemode"_J, 19633).At(176).As<int*>() = 0;
if (bring)
{
@@ -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)
{
+1 -1
View File
@@ -15,7 +15,7 @@ namespace YimMenu::Features
{
using LoopedCommand::LoopedCommand;
int slots_random_results_table = 1348;
int slots_random_results_table = 1374;
std::set<int> slots_blacklist = {9, 21, 22, 87, 152};
virtual void OnTick() override
@@ -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<BOOL*>() = TRUE;
*ScriptGlobal(2708832).As<BOOL*>() = TRUE;
break;
}
case eAppVinewoodMenuSafe::ARCADE:
{
if (GPBD_FM::Get()->Entries[Self::GetPlayer().GetId()].PropertyData.ArcadeData.SafeCashValue > 0)
*ScriptGlobal(2708210).As<BOOL*>() = TRUE;
*ScriptGlobal(2708841).As<BOOL*>() = TRUE;
break;
}
case eAppVinewoodMenuSafe::AGENCY:
{
if (GPBD_FM::Get()->Entries[Self::GetPlayer().GetId()].PropertyData.FixerHQData.SafeCashValue > 0)
*ScriptGlobal(2708219).As<BOOL*>() = TRUE;
*ScriptGlobal(2708850).As<BOOL*>() = TRUE;
break;
}
case eAppVinewoodMenuSafe::SALVAGE_YARD:
{
if (GPBD_FM::Get()->Entries[Self::GetPlayer().GetId()].PropertyData.SalvageYardData.TotalEarnings > 0)
*ScriptGlobal(2708228).As<BOOL*>() = TRUE;
*ScriptGlobal(2708859).As<BOOL*>() = TRUE;
break;
}
case eAppVinewoodMenuSafe::BAIL_OFFICE:
{
if (GPBD_FM::Get()->Entries[Self::GetPlayer().GetId()].PropertyData.BailShopData.SafeCashValue > 0)
*ScriptGlobal(2708237).As<BOOL*>() = TRUE;
*ScriptGlobal(2708868).As<BOOL*>() = TRUE;
break;
}
case eAppVinewoodMenuSafe::GARMENT_FACTORY:
{
if (GPBD_FM::Get()->Entries[Self::GetPlayer().GetId()].PropertyData.HackerDenData.SafeCashValue > 0)
*ScriptGlobal(2708252).As<BOOL*>() = TRUE;
*ScriptGlobal(2708883).As<BOOL*>() = TRUE;
break;
}
case eAppVinewoodMenuSafe::HANDS_ON_CAR_WASH:
{
if (GPBD_FM_2::Get()->Entries[Self::GetPlayer().GetId()].SYVehSaleData.HOWCData.SafeCashValue > 0)
*ScriptGlobal(2708259).As<BOOL*>() = TRUE;
*ScriptGlobal(2708890).As<BOOL*>() = TRUE;
break;
}
}
+64 -20
View File
@@ -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<int*>();
if (!GPBD_Flow::Get()->Entries[Self::GetPlayer().GetId()].TunerCBVDeliveredFlags.IsSet(offset))
{
auto hash = *ScriptGlobal(1946084 + (offset + 1)).As<joaat_t*>();
auto hash = *ScriptGlobal(1950358 + (offset + 1)).As<joaat_t*>();
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<int*>() = 1;
*ScriptGlobal(1975726).At(1).As<int*>() = 1;
*ScriptGlobal(1975726).At(3).As<int*>() = 5;
*ScriptGlobal(1975726).At(4).As<int*>() = location + 1;
*ScriptGlobal(1975726).At(8).At(1).As<int*>() = checkpointReward.Get<int>() / (1 + (checkpoints * 9));
*ScriptGlobal(1975726).At(8).At(2).As<int*>() = parTimeReward.Get<int>() / (1 + (partime * 9));
*ScriptGlobal(1975726).At(8).At(3).As<int*>() = landingReward.Get<int>() / (1 + (landing * 9));
*ScriptGlobal(1979960).As<int*>() = 1;
*ScriptGlobal(1979960).At(1).As<int*>() = 1;
*ScriptGlobal(1979960).At(3).As<int*>() = 5;
*ScriptGlobal(1979960).At(4).As<int*>() = location + 1;
*ScriptGlobal(1979960).At(8).At(1).As<int*>() = checkpointReward.Get<int>() / (1 + (checkpoints * 9));
*ScriptGlobal(1979960).At(8).At(2).As<int*>() = parTimeReward.Get<int>() / (1 + (partime * 9));
*ScriptGlobal(1979960).At(8).At(3).As<int*>() = landingReward.Get<int>() / (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<SCR_BITSET<uint64_t>*>()->Clear(3);
ScriptGlobal(1983929).At(4).As<SCR_BITSET<uint64_t>*>()->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<int*>() = 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<int*>() = 0;
*ScriptLocal(thread, 3103).At(131).At(1).As<int*>() = 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<int*>() = 0;
static ScriptFunction onBTTEnd("fm_content_bicycle_time_trial"_J,
ScriptPointer("OnBTTEnd", "64 ? ? ? 5D ? ? ? 75 77").Add(1).Rip());
onBTTEnd.Call<void>();
@@ -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<int*>();
*ScriptLocal(thread, 144).At(22).At(i, 2).As<float*>() = combination;
int combination = *ScriptLocal(thread, 146).At(22).At(i, 2).At(1).As<int*>();
*ScriptLocal(thread, 146).At(22).At(i, 2).As<float*>() = 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<Vector3>(
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<Vector3*>())
if (auto coords = *ScriptLocal(thread, 243).At(434).At(1).At(0, 4).As<Vector3*>())
{
Self::GetPed().TeleportTo(coords);
}
@@ -961,9 +962,9 @@ namespace YimMenu::Features
if (index < 0 || index >= wildlifePhotographyAnimalHashes.size())
return;
ScriptGlobal(2708777).At(544).As<SCR_BITSET<uint64_t>*>()->Set(6);
*ScriptGlobal(2708777).At(548).As<joaat_t*>() = wildlifePhotographyAnimalHashes[index];
*ScriptGlobal(2708777).At(549).As<int*>() = *Pointers.GameTimer - 1; // bypass 2 sec delay
ScriptGlobal(2709409).At(545).As<SCR_BITSET<uint64_t>*>()->Set(6);
*ScriptGlobal(2709409).At(549).As<joaat_t*>() = wildlifePhotographyAnimalHashes[index];
*ScriptGlobal(2709409).At(550).As<int*>() = *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."};
}
@@ -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<int*>() = 100 - (_ApartmentHeistCut1.GetState() + _ApartmentHeistCut2.GetState() + _ApartmentHeistCut3.GetState() + _ApartmentHeistCut4.GetState());
*base1.At(1, 1).As<int*>() = _ApartmentHeistCut2.GetState();
@@ -75,8 +75,8 @@ namespace YimMenu::Features
{
if (auto thread = Scripts::FindScriptThread("fm_mission_controller"_J))
{
*ScriptLocal(thread, 12220).At(24).As<int*>() = 7;
*ScriptLocal(thread, 10215).As<int*>() = *ScriptLocal(thread, 10215).As<int*>() | (1 << 9);
*ScriptLocal(thread, 12223).At(24).As<int*>() = 7;
*ScriptLocal(thread, 10217).As<int*>() = *ScriptLocal(thread, 10217).As<int*>() | (1 << 9);
}
}
};
@@ -89,7 +89,7 @@ namespace YimMenu::Features
{
if (auto thread = Scripts::FindScriptThread("fm_mission_controller"_J))
{
*ScriptLocal(thread, 10509).At(11).As<float*>() = 100.0f;
*ScriptLocal(thread, 10511).At(11).As<float*>() = 100.0f;
}
}
};
@@ -105,10 +105,10 @@ namespace YimMenu::Features
Scripts::ForceScriptHost(thread);
ScriptMgr::Yield(500ms);
*ScriptLocal(thread, 20391).At(1725).At(0, 1).As<int*>() = 80;
*ScriptLocal(thread, 20391).As<int*>() = 12;
*ScriptLocal(thread, 29011).At(0, 1).As<int*>() = 99999;
*ScriptLocal(thread, 32467).At(0, 294).At(68).As<int*>() = 99999;
*ScriptLocal(thread, 20395).At(1725).At(0, 1).As<int*>() = 80;
*ScriptLocal(thread, 20395).As<int*>() = 12;
*ScriptLocal(thread, 29016).At(0, 1).As<int*>() = 99999;
*ScriptLocal(thread, 32472).At(0, 294).At(68).As<int*>() = 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<int*>() = 1875000;
*ScriptLocal(thread, 20391).At(1062).As<int*>() = 5;
*ScriptLocal(thread, 20391).As<int*>() = 12;
*ScriptLocal(thread, 29011).At(0, 1).As<int*>() = 99999;
*ScriptLocal(thread, 32467).At(0, 294).At(68).As<int*>() = 99999;
*ScriptLocal(thread, 20395).At(2686).As<int*>() = 1875000;
*ScriptLocal(thread, 20395).At(1062).As<int*>() = 5;
*ScriptLocal(thread, 20395).As<int*>() = 12;
*ScriptLocal(thread, 29016).At(0, 1).As<int*>() = 99999;
*ScriptLocal(thread, 32472).At(0, 294).At(68).As<int*>() = 99999;
}
}
};
@@ -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<int*>() = _CayoPericoHeistCut1.GetState();
*base.At(1, 1).As<int*>() = _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<int*>() = 2;
*ScriptLocal(thread, 1570).As<int*>() = 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<int*>() = _CayoPericoHeistSecondaryTakeValue.GetState();
*ScriptLocal(thread, 59705).At(1376).At(53).As<int*>() = _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<int*>() = 5;
*ScriptLocal(thread, 26486).As<int*>() = 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<int*>() = 6;
*ScriptLocal(thread, 31349).As<int*>() = 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<float*>() = 100.0f;
*ScriptLocal(thread, 32589).At(3).As<float*>() = 100.0f;
}
};
@@ -258,12 +258,12 @@ namespace YimMenu::Features
case 1:
case 3:
case 5:
*ScriptLocal(thread, 31524).As<int*>() = 5;
*ScriptLocal(thread, 31525).As<int*>() = 3;
*ScriptLocal(thread, 32588).As<int*>() = 5;
*ScriptLocal(thread, 32589).As<int*>() = 3;
break;
case 2:
case 4:
*ScriptLocal(thread, 31499).As<int*>() = 7;
*ScriptLocal(thread, 32563).As<int*>() = 7;
break;
default: break;
}
@@ -287,8 +287,8 @@ namespace YimMenu::Features
Scripts::ForceScriptHost(thread);
ScriptMgr::Yield(500ms);
*ScriptLocal(thread, 54763).As<int*>() = 9;
*ScriptLocal(thread, 54763).At(1776).At(0, 1).As<int*>() = 50;
*ScriptLocal(thread, 56223).As<int*>() = 9;
*ScriptLocal(thread, 56223).At(1776).At(0, 1).As<int*>() = 50;
}
}
};
@@ -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<int*>() = _DiamondCasinoHeistCut1.GetState();
*base.At(1, 1).As<int*>() = _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<int*>() = _DiamondCasinoHeistActualTake.GetState();
*ScriptLocal(thread, 20395).At(2686).As<int*>() = _DiamondCasinoHeistActualTake.GetState();
}
};
@@ -314,8 +314,8 @@ namespace YimMenu::Features
{
if (auto thread = Scripts::FindScriptThread("fm_mission_controller"_J))
{
*ScriptLocal(thread, 54037).As<int*>() = 5;
*ScriptLocal(thread, 55103).As<int*>() = 5;
*ScriptLocal(thread, 54042).As<int*>() = 5;
*ScriptLocal(thread, 55108).As<int*>() = 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<int*>() = *ScriptLocal(thread, 10549).At(37).As<int*>();
*ScriptLocal(thread, 10551).At(7).As<int*>() = *ScriptLocal(thread, 10551).At(37).As<int*>();
}
};
@@ -342,12 +342,12 @@ namespace YimMenu::Features
Scripts::ForceScriptHost(thread);
ScriptMgr::Yield(500ms);
*ScriptLocal(thread, 20391).At(1740).At(0, 1).As<int*>() = 80;
*ScriptLocal(thread, 20391).At(2686).As<int*>() = 4443220;
*ScriptLocal(thread, 20391).At(1062).As<int*>() = 5;
*ScriptLocal(thread, 20391).As<int*>() = 12;
*ScriptLocal(thread, 29011).At(0, 1).As<int*>() = 99999;
*ScriptLocal(thread, 32467).At(0, 294).At(68).As<int*>() = 99999;
*ScriptLocal(thread, 20395).At(1740).At(0, 1).As<int*>() = 80;
*ScriptLocal(thread, 20395).At(2686).As<int*>() = 4443220;
*ScriptLocal(thread, 20395).At(1062).As<int*>() = 5;
*ScriptLocal(thread, 20395).As<int*>() = 12;
*ScriptLocal(thread, 29016).At(0, 1).As<int*>() = 99999;
*ScriptLocal(thread, 32472).At(0, 294).At(68).As<int*>() = 99999;
}
}
};
@@ -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<int*>() = _DoomsdayHeistCut1.GetState();
*base.At(1, 1).As<int*>() = _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<int*>() = 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<int*>() = 6;
*ScriptLocal(thread, 211).As<int*>() = 6;
}
};
@@ -93,9 +95,9 @@ namespace YimMenu::Features
{
if (auto thread = Scripts::FindScriptThread("fm_mission_controller"_J))
{
*ScriptLocal(thread, 1570).As<int*>() = 2;
*ScriptLocal(thread, 1539).As<int*>() = 3;
*ScriptLocal(thread, 1296).At(135).As<int*>() = 3;
*ScriptLocal(thread, 1572).As<int*>() = 2;
*ScriptLocal(thread, 1541).As<int*>() = 3;
*ScriptLocal(thread, 1298).At(135).As<int*>() = 3;
}
}
};
@@ -111,10 +113,10 @@ namespace YimMenu::Features
Scripts::ForceScriptHost(thread);
ScriptMgr::Yield(500ms);
*ScriptLocal(thread, 20391).At(1725).At(0, 1).As<int*>() = 80;
*ScriptLocal(thread, 20391).As<int*>() = 12;
*ScriptLocal(thread, 29011).At(0, 1).As<int*>() = 99999;
*ScriptLocal(thread, 32467).At(0, 294).At(68).As<int*>() = 99999;
*ScriptLocal(thread, 20395).At(1725).At(0, 1).As<int*>() = 80;
*ScriptLocal(thread, 20395).As<int*>() = 12;
*ScriptLocal(thread, 29016).At(0, 1).As<int*>() = 99999;
*ScriptLocal(thread, 32472).At(0, 294).At(68).As<int*>() = 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<int*>() = 12;
*ScriptLocal(thread, 20391).At(1740).At(0, 1).As<int*>() = 150;
*ScriptLocal(thread, 20391).At(1062).As<int*>() = 5;
*ScriptLocal(thread, 29011).At(0, 1).As<int*>() = 99999;
*ScriptLocal(thread, 32467).At(0, 294).At(68).As<int*>() = 99999;
*ScriptLocal(thread, 20395).As<int*>() = 12;
*ScriptLocal(thread, 20395).At(1740).At(0, 1).As<int*>() = 150;
*ScriptLocal(thread, 20395).At(1062).As<int*>() = 5;
*ScriptLocal(thread, 29016).At(0, 1).As<int*>() = 99999;
*ScriptLocal(thread, 32472).At(0, 294).At(68).As<int*>() = 99999;
}
}
};
+2 -2
View File
@@ -18,8 +18,8 @@ namespace YimMenu::Features
virtual void OnTick() override
{
*Pointers.HasGTAPlus = true;
*ScriptGlobal(1965683).As<bool*>() = true;
*ScriptGlobal(1965683).At(3).As<int*>() = (1 << 3) | (1 << 1);
*ScriptGlobal(1970056).As<bool*>() = true;
*ScriptGlobal(1970056).At(3).As<int*>() = (1 << 3) | (1 << 1);
}
virtual void OnDisable() override
+1 -1
View File
@@ -105,7 +105,7 @@ namespace YimMenu::Features
{
if (auto thread = Scripts::FindScriptThread("wardrobe_mp"_J))
{
if (*ScriptLocal(thread, 189).At(46).At(9).As<int*>() == 4)
if (*ScriptLocal(thread, 191).At(46).At(9).As<int*>() == 4)
{
shouldCleanupWardrobePatch->Disable();
isWardrobeOpenedPatch->Disable();
+4 -4
View File
@@ -24,8 +24,8 @@ namespace YimMenu::Features
if (auto freemode = Scripts::FindScriptThread("freemode"_J))
{
auto data = ScriptLocal(freemode, 8748);
*data.At(3).As<int*>() = 223;
auto data = ScriptLocal(freemode, 8819);
*data.At(3).As<int*>() = 230;
*data.At(3).At(16).As<int*>() = Self::GetPlayer().GetId();
*data.At(3).At(1).As<int*>() = 89;
*data.At(2).As<int*>() = "AM_CONTACT_REQUESTS"_J;
@@ -35,8 +35,8 @@ namespace YimMenu::Features
{
if (auto thread = Scripts::FindScriptThreadByID(id))
{
*ScriptLocal(thread, 521).As<int*>() = 1;
ScriptGlobal(2685690).At(4347).At(254).At(7, 2).As<TIMER*>()->Destroy();
*ScriptLocal(thread, 528).As<int*>() = 1;
ScriptGlobal(2686095).At(4357).At(260).At(7, 2).As<TIMER*>()->Destroy();
}
}
else
@@ -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<int*>();
setAvailability = *ScriptGlobal(262145).At(33720).As<int*>();
setCooldown = *ScriptGlobal(262145).At(33807).As<int*>();
setAvailability = *ScriptGlobal(262145).At(33808).As<int*>();
}
else
{
@@ -21,6 +21,7 @@ namespace YimMenu::Submenus
auto madrazoHitsTab = std::make_shared<CollapsingHeaderItem>("Madrazo Hits");
auto wildlifePhotography = std::make_shared<CollapsingHeaderItem>("Shoot Animals Photography");
auto smokeOnTheWater = std::make_shared<CollapsingHeaderItem>("Smoke on the Water");
auto goldenClover = std::make_shared<CollapsingHeaderItem>("Golden Clover");
dailyActivities->AddItem(std::make_shared<CommandItem>("setallactivitiescompleted"_J));
dailyActivities->AddItem(std::make_shared<CommandItem>("resetallactivities"_J));
@@ -81,6 +82,9 @@ namespace YimMenu::Submenus
smokeOnTheWater->AddItem(std::make_shared<CommandItem>("tptoproduct"_J));
smokeOnTheWater->AddItem(std::make_shared<CommandItem>("collectproduct"_J));
goldenClover->AddItem(std::make_shared<CommandItem>("tptogoldenclover"_J));
goldenClover->AddItem(std::make_shared<CommandItem>("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;
}
}
+1 -1
View File
@@ -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<void>();
*join_type_global.As<JoinType*>() = to_launch;
+1 -1
View File
@@ -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<int*>();
*bypass_global.As<int*>() = rand_int_2 ^ rand() ^ time(0);
+12 -3
View File
@@ -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
});
}
+21 -9
View File
@@ -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"
});
}
+17 -3
View File
@@ -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,
});
}
+28 -1
View File
@@ -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",
+5 -5
View File
@@ -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
};
}
+39 -25
View File
@@ -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
});
}
+1
View File
@@ -119,5 +119,6 @@ namespace YimMenu
"WEAPON_STUNROD"_J,
"WEAPON_STRICKLER"_J,
"WEAPON_BRIEFCASE_03"_J,
"WEAPON_NEWSPAPER"_J
});
}
+3 -3
View File
@@ -173,7 +173,7 @@ namespace YimMenu
RequestControl = ptr.Add(5).Add(1).Rip().As<Functions::RequestControl>();
});
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<std::uint8_t*>(), 0xEB);
});
@@ -369,9 +369,9 @@ namespace YimMenu
SetJoinRequestPoolTypePatch = BytePatches::Add(ptr.Sub(5).As<std::uint8_t*>(), std::to_array<std::uint8_t>({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<void*>(), std::to_array<std::uint8_t>({0x39, 0xC9, 0x90}));
HandleJoinRequestIgnorePoolPatch = BytePatches::Add(ptr.As<void*>(), std::to_array<std::uint8_t>({0x39, 0xC9, 0x90, 0x90}));
});
constexpr auto statsMpCharacterMappingDataPtrn = Pattern<"48 8D 0D ? ? ? ? 89 F2 0F 28 74 24 ? 48 83 C4 38">("CStatsMpCharacterMappingData");
+3 -1
View File
@@ -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);
@@ -12,14 +12,14 @@ static_assert(sizeof(DeliveryPosData) == 6 * 8);
struct FreemodeDelivery
{
SCR_INT DeliveryFlags; // 0
SCR_ARRAY<DeliveryPosData, 1004> 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, 1008> 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);
//static_assert(sizeof(FreemodeDelivery) == 6260 * 8);
+14 -14
View File
@@ -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);
//static_assert(sizeof(FreemodeGeneral) == 6073 * 8);
+7 -7
View File
@@ -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);
static_assert(sizeof(GPBD_FM) == 28257 * 8);
+8 -7
View File
@@ -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<RANDOM_EVENTS_CLIENT_EVENT_DATA, 21> EventData; // 1
SCR_BITSET<uint64_t> IsParticipantInEventFlags; // 65
SCR_INT UNK_0066; // 66 (unused)
SCR_ARRAY<RANDOM_EVENTS_CLIENT_EVENT_DATA, 24> EventData; // 1
SCR_BITSET<uint64_t> 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);
static_assert(sizeof(GPBD_FM_2) == 10081 * 8);
+7 -3
View File
@@ -158,6 +158,7 @@ struct BOSS_GOON
SCR_BITSET<eBossGoonFlags> Flags;
SCR_INT Flags2; // TODO
SCR_INT Flags3; // TODO
SCR_INT Flags4; // added b3717
SCR_INT TotalBossGoonTime;
SCR_ARRAY<uint64_t, 2> BossGoonUUID;
SCR_ARRAY<uint64_t, 8> 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<uint64_t, 1> 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);
static_assert(sizeof(GPBD_FM_3) == 19681 * 8);
+28 -17
View File
@@ -76,11 +76,11 @@ struct SALV23FlowData
SCR_INT PackedInt42102; // 3
SCR_INT SALV23ScopeFlags; // 4
SCR_ARRAY<uint64_t, 7> SALV23CFRCounts; // 5
SCR_ARRAY<uint64_t, 7> SALV23CFRCounts2; // 13, added b889g9
SALV23VehicleData SALV23Vehicles; // 13
SCR_ARRAY<uint64_t, 3> SALV23VehRobStatus; // 23
SCR_INT SALV23Flags; // 27
SCR_BOOL UNK_28; // 28
SCR_ARRAY<uint64_t, 7> SALV23CFRCrewCounts2; // 13, added b889g9
SALV23VehicleData SALV23Vehicles; // 21
SCR_ARRAY<uint64_t, 3> 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<uint64_t, 3> DrugMissions;
SCR_INT LastMissionCompleted;
SCR_ARRAY<uint64_t, 3> 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<uint64_t> 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);
static_assert(sizeof(GPBD_Flow) == 4769 * 8);
+2 -2
View File
@@ -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<IE_DELIVERY_INFO, 32> IEDeliveryInfos;
SCR_INT PAD_1397;
@@ -95,4 +95,4 @@ struct GSBD
static GSBD* Get();
};
static_assert(sizeof(GSBD) == 1499 * 8);
static_assert(sizeof(GSBD) == 1264 * 8);
+7 -8
View File
@@ -24,13 +24,12 @@ struct WEAPON_PICKUPS
SCR_INT LastMeleeWeaponPickupTime;
SCR_INT LastProjectilePickupTime;
SCR_INT LastGunPickupTime;
SCR_ARRAY<uint64_t, 96> Indices; // size increased in b3095 (62 -> 95)
// and in b3407 (95 -> 96)
SCR_ARRAY<uint64_t, 96> Owners;
SCR_ARRAY<uint64_t, 95> Indices; // size increased in b3095 (62 -> 95) // and in b3407 (95 -> 96) // one of PICKUP_WEAPON_VINTAGEPISTOL removed in b1013.17g9
SCR_ARRAY<uint64_t, 95> 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<uint64_t, 2> ModelSwapBits;
SCR_ARRAY<uint64_t, 2> ModelSwapBits; // 0
SCR_INT PAD_0003; // unused
SCR_ARRAY<PLAYER_BOUNTY, 32> PlayerBounties;
SCR_ARRAY<PLAYER_BOUNTY, 32> PlayerBounties; // 4
uint64_t PAD_0101[5]; // unused
SCR_ARRAY<uint64_t, 2> MuggingPlayers; // 0 = mugger, 1 = merryweather mercs
SCR_ARRAY<uint64_t, 2> MuggedPlayers;
uint64_t PAD_0112[4]; // unused
SCR_ARRAY<uint64_t, 62> PAD_0116; // TODO b3407 (61 -> 62)
SCR_ARRAY<uint64_t, 65> PAD_0116; // TODO b3407 (61 -> 62), 62 -> 65
SCR_INT ShopProcessingBitset;
SCR_ARRAY<uint64_t, NUM_CONTACTS> ActiveContactServiceBitsets;
SCR_ARRAY<ACTIVE_CONTACT_SERVICE, 32> ActiveContactServices;
@@ -67,4 +66,4 @@ struct GSBD_FM
static GSBD_FM* Get();
};
static_assert(sizeof(GSBD_FM) == 650 * 8);
static_assert(sizeof(GSBD_FM) == 653 * 8);
@@ -63,10 +63,10 @@ static_assert(sizeof(RANDOM_EVENTS_TARGET_DATA) == 2 * 8);
struct GSBD_RandomEvents
{
alignas(8) eRandomEventInitState InitState; // 0
SCR_ARRAY<RANDOM_EVENTS_DATA, 21> EventData; // 1
RANDOM_EVENTS_VEHICLE_LIST_DATA VehicleListData; // 317
RANDOM_EVENTS_TARGET_DATA TargetData; // 319
SCR_ARRAY<RANDOM_EVENTS_DATA, 24> 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);
static_assert(sizeof(GSBD_RandomEvents) == 366 * 8);
+3 -2
View File
@@ -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);
static_assert(sizeof(GlobalPlayerBD) == 14977 * 8);
+20 -20
View File
@@ -31,25 +31,25 @@
return glb.As<str*>(); \
}
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);
DEFINE_GLOBAL_ACCESSOR(WeeklyChallenge, 2732069);
DEFINE_GLOBAL_ACCESSOR(FreemodeDelivery, 1957402);
DEFINE_GLOBAL_ACCESSOR(LauncherServerData, 2700002);
+2 -2
View File
@@ -67,8 +67,8 @@ static_assert(sizeof(MPSV_Entry) == 143 * 8);
struct MPSV
{
SCR_ARRAY<MPSV_Entry, 547> Entries;
SCR_ARRAY<MPSV_Entry, 607> Entries;
static MPSV* Get();
};
static_assert(sizeof(MPSV) == 78222 * 8);
static_assert(sizeof(MPSV) == 86802 * 8);
+2 -2
View File
@@ -7,7 +7,7 @@ struct g_AMC_playerBD_Entry
SCR_ARRAY<TIMER, NUM_CONTACTS> UsedContactServicesTimer; // only index 2 (mugger) is actually used by the scripts. the rest is just a waste of bandwidth
SCR_ARRAY<uint64_t, NUM_CONTACTS> 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);
static_assert(sizeof(g_AMC_playerBD) == 8321 * 8);
@@ -166,7 +166,7 @@ struct MP_GENERAL_SAVED
SCR_INT ReceiveLJCashTime; // 1302
SCR_INT LastAccProp; // 1303
SCR_INT Multi1PropVal; // 1304
SCR_ARRAY<uint64_t, 31> PropAryVal; // 1305
SCR_ARRAY<uint64_t, 34> PropAryVal; // 1305
SCR_INT LastAccSmplInt; // 1337
SCR_INT KrPatchUpdate; // 1338
SCR_ARRAY<uint64_t, 273> OutfitCompDraw; // 1339
@@ -199,7 +199,7 @@ struct MP_GENERAL_SAVED
SCR_ARRAY<GAMER_HANDLE, 3> LastGOJobGamer; // 4383
SCR_ARRAY<TEXT_LABEL_63, 3> 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);
static_assert(sizeof(g_SavedMPGlobals) == 5575 * 8);
+5 -5
View File
@@ -37,15 +37,15 @@ static_assert(sizeof(RANDOM_EVENTS_FMMC_DATA) == 1 * 8);
struct RANDOM_EVENTS_MISSION_DATA
{
SCR_INT EventsCount; // 0
SCR_ARRAY<RANDOM_EVENTS_FMMC_DATA, 21> FMMCData; // 1
SCR_ARRAY<RANDOM_EVENTS_FMMC_DATA, 24> 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<RANDOM_EVENTS_LOCAL_DATA, 21> EventData; // 0
RANDOM_EVENTS_MISSION_DATA MissionData; // 253
SCR_ARRAY<RANDOM_EVENTS_LOCAL_DATA, 24> 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);
static_assert(sizeof(RANDOM_EVENTS_FREEMODE_DATA) == 315 * 8);
+6 -6
View File
@@ -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);
DEFINE_LOCAL_ACCESSOR(LauncherClientData, 247);
+1 -1
View File
@@ -116,4 +116,4 @@ private:
};
static_assert(sizeof(GAMER_HANDLE) == 13 * 8);
#define NUM_CONTACTS 84
#define NUM_CONTACTS 86