671 lines
No EOL
24 KiB
C++
671 lines
No EOL
24 KiB
C++
#pragma once
|
|
#include "../types.hpp"
|
|
#include "../MPScriptData.hpp"
|
|
|
|
enum class eFreemodeState
|
|
{
|
|
NONE = 0,
|
|
UNK_2 = 2,
|
|
RUNNING = 4,
|
|
CLOSING = 5,
|
|
UNK_10 = 10,
|
|
UNK_11 = 11
|
|
};
|
|
|
|
enum class eMissionType
|
|
{
|
|
NONE,
|
|
MISSION,
|
|
HEIST,
|
|
UNK_3,
|
|
ADVERSARY_MODE,
|
|
LAST_TEAM_STANDING,
|
|
CAPTURE,
|
|
HEIST_SETUP,
|
|
UNK_8, // FMMC_RSTAR_MCP
|
|
UNKNOWN // everything else
|
|
};
|
|
|
|
enum class eAnimationBitset
|
|
{
|
|
kCashRainActive = 12,
|
|
kChampagneSprayActive = 13
|
|
};
|
|
|
|
enum class eBlipFlags
|
|
{
|
|
// 0 is unused
|
|
kVisibleOnCutscene = 1,
|
|
kFlashMinimapDisplay = 2,
|
|
kFlashBlip = 3,
|
|
kMicroLightOTRActive = 4,
|
|
kSkipTutorialSessionChecks = 5,
|
|
kHideOnMinimap = 6, // needs testing
|
|
kHideOnMinimapWhenInterior = 7, // needs testing
|
|
kHideOnMinimapWhenBigMapActive = 9, // needs testing
|
|
kDontUsePassiveBlip = 21,
|
|
kUseRampageBlip = 24,
|
|
kHideWhenFading = 25
|
|
};
|
|
|
|
enum class eBlipType
|
|
{
|
|
ON_FOOT,
|
|
TANK,
|
|
PLAYER_JET,
|
|
PLAYER_PLANE,
|
|
PLAYER_HELI,
|
|
PLAYER_GUNCAR,
|
|
PLAYER_BOAT,
|
|
ROCKET_VOLTIC,
|
|
TECHNICAL,
|
|
RUINER_2000,
|
|
DUNE_BUGGY,
|
|
PHANTOM_WEDGE,
|
|
ARMORED_BOXVILLE, // boxville5
|
|
WASTELANDER,
|
|
QUAD,
|
|
APC,
|
|
OPPRESSOR_MK_1,
|
|
HALF_TRACK,
|
|
DUNE_FAV,
|
|
WEAPONIZED_TAMPA,
|
|
AA_TRAILER,
|
|
ALPHA_Z1,
|
|
BOMBUSHKA,
|
|
HAVOK,
|
|
HOWARD,
|
|
HUNTER,
|
|
MICROLIGHT,
|
|
MOGUL,
|
|
MOLOTOK,
|
|
NOKOTA,
|
|
PYRO,
|
|
ROGUE,
|
|
STARLING,
|
|
SEABREEZE,
|
|
TULA,
|
|
STROMBERG,
|
|
DELUXO,
|
|
THRUSTER,
|
|
KHANJALI,
|
|
RIOT_VAN,
|
|
VOLATOL,
|
|
BARRAGE,
|
|
AKULA,
|
|
CHERNOBOG,
|
|
AVENGER,
|
|
TURRETED_LIMO,
|
|
SEA_SPARROW,
|
|
CARACARA,
|
|
PARTY_BUS,
|
|
TERRORBYTE,
|
|
MENACER,
|
|
SCRAMJET,
|
|
POUNDER_CUSTOM,
|
|
MULE_CUSTOM,
|
|
SPEEDO_CUSTOM,
|
|
OPPRESSOR_MK_2,
|
|
STRIKEFORCE,
|
|
ARENA_BRUISER,
|
|
ARENA_BRUTUS,
|
|
ARENA_CERBERUS,
|
|
ARENA_DEATHBIKE,
|
|
ARENA_DOMINATOR,
|
|
ARENA_IMPALER,
|
|
ARENA_IMPERATOR,
|
|
ARENA_ISSI,
|
|
ARENA_SASQUATCH,
|
|
ARENA_SCARAB,
|
|
ARENA_SLAMVAN,
|
|
ARENA_ZR380,
|
|
MINI_SUB,
|
|
SPARROW,
|
|
FOLDING_WING_JET,
|
|
GANG_BIKE,
|
|
MILITARY_QUAD,
|
|
SQUADDIE, // SQUADEE
|
|
CAYO_DINGHY,
|
|
WINKY,
|
|
PATROL_BOAT,
|
|
ANNIHILATOR,
|
|
KART_RETRO,
|
|
KART_MODERN,
|
|
MILITARY_TRUCK,
|
|
SUBMARINE,
|
|
CHAMPION,
|
|
BUFFALO_STX,
|
|
DEITY, // why does this have a blip?
|
|
JUBILEE,
|
|
GRANGER_3600LX,
|
|
PATRIOT_MILSPEC,
|
|
ARMS_DEALING_AIR, // requires some flag to be set
|
|
BRICKADE_6X6
|
|
};
|
|
|
|
enum class ePlayerStateFlags
|
|
{
|
|
kScreenFadingOut = 0,
|
|
kScreenFadedOut = 1,
|
|
kCinematicNewsChannelActive = 2,
|
|
kRepeatingPreviousCheckpoint = 3,
|
|
kCarModIntro = 4,
|
|
kPlayerSwitchStateAscent = 5,
|
|
kPlayerSwitchStateInClouds = 6,
|
|
kPlayerSwitchStatePan = 7,
|
|
kPlayerSwitchStateDescent = 8,
|
|
kModshopActive = 9,
|
|
kModshopExitingVehicle = 10,
|
|
kSpectating = 28,
|
|
kBeastActive = 29,
|
|
kPlayerNotInSCTV = 30,
|
|
kPlayerInSCTV = 31
|
|
};
|
|
|
|
enum class eActivityFlags
|
|
{
|
|
kWatchingMovie = 0,
|
|
kInGangAttack = 1,
|
|
kImpromptuRace = 2,
|
|
kCrateDrop = 4, // tf is this? "~s~A plane is on its way to drop a Crate ~HUD_COLOUR_GREEN~~BLIP_CRATEDROP~ ~s~which contains useful equipment. Be the first to collect it."
|
|
kDeliveringSimeonVehicle = 6,
|
|
kInLapDance = 7,
|
|
kHoldUpTutorial = 8,
|
|
kJoyrider = 9, // uh what is this?
|
|
kCarModTutorial = 10,
|
|
kMissionLauncher = 11, // ???
|
|
kLesterCutsceneActive = 12,
|
|
kTrevorCutsceneActive = 13,
|
|
kHeistIntro = 14,
|
|
kPlaneTakedown = 15, // not sure what this is
|
|
kDistractCops = 16, // "Great. Thank you for your help. Now some horrible criminals are in jail for a crime they did commit and it's all your fault!!" ???
|
|
kDestroyVehicle = 17, // ???
|
|
kPartakingInHotTarget = 18,
|
|
kPartakingInKillList = 19,
|
|
kTimeTrialStarted = 21,
|
|
kPartakingInCheckpoints = 22,
|
|
kPartakingInChallenge = 23,
|
|
kPennedInActive = 24,
|
|
kRCTimeTrialStarted = 25,
|
|
kPartakingInHotProperty = 27,
|
|
kPartakingInKingOfTheCastle = 29,
|
|
kPartakingInCriminalDamage = 30,
|
|
kLowriderIntro = 31
|
|
};
|
|
|
|
enum class eGamerTagFlags
|
|
{
|
|
kShowPackageCount = 13,
|
|
kFadeOutGamerTag = 17,
|
|
kGangCEO = 19,
|
|
kGangBiker = 20
|
|
}; // TODO!
|
|
|
|
enum class eOrbitalBitset
|
|
{
|
|
kOrbitalCannonActive = 0,
|
|
kWatchingMovie = 1, // not a typo, the orbital cannon script needs to know if you are inside a movie theater for some strange reason
|
|
kCutsceneOrInterior = 2,
|
|
kTransactionPending = 3
|
|
};
|
|
|
|
enum class eArcadeGameBitset
|
|
{
|
|
kArcadeMachineActivated = 0,
|
|
kLoveMeterActivated = 1,
|
|
kLoveMeterAnimationGenderDecided = 2
|
|
};
|
|
|
|
enum class eOutOfSightFlags
|
|
{
|
|
kOutOfSightEnabled = 0,
|
|
kOutOfSightActive = 1, // this controls whether you appear on radar or not
|
|
kHelpDisplayed = 2,
|
|
kDamagedPlayerOutsideOrganization = 3
|
|
};
|
|
|
|
enum class eSimpleInteriorIndex
|
|
{
|
|
SIMPLE_INTERIOR_INVALID = -1,
|
|
SIMPLE_INTERIOR_WAREHOUSE_1,
|
|
SIMPLE_INTERIOR_WAREHOUSE_2,
|
|
SIMPLE_INTERIOR_WAREHOUSE_3,
|
|
SIMPLE_INTERIOR_WAREHOUSE_4,
|
|
SIMPLE_INTERIOR_WAREHOUSE_5,
|
|
SIMPLE_INTERIOR_WAREHOUSE_6,
|
|
SIMPLE_INTERIOR_WAREHOUSE_7,
|
|
SIMPLE_INTERIOR_WAREHOUSE_8,
|
|
SIMPLE_INTERIOR_WAREHOUSE_9,
|
|
SIMPLE_INTERIOR_WAREHOUSE_10,
|
|
SIMPLE_INTERIOR_WAREHOUSE_11,
|
|
SIMPLE_INTERIOR_WAREHOUSE_12,
|
|
SIMPLE_INTERIOR_WAREHOUSE_13,
|
|
SIMPLE_INTERIOR_WAREHOUSE_14,
|
|
SIMPLE_INTERIOR_WAREHOUSE_15,
|
|
SIMPLE_INTERIOR_WAREHOUSE_16,
|
|
SIMPLE_INTERIOR_WAREHOUSE_17,
|
|
SIMPLE_INTERIOR_WAREHOUSE_18,
|
|
SIMPLE_INTERIOR_WAREHOUSE_19,
|
|
SIMPLE_INTERIOR_WAREHOUSE_20,
|
|
SIMPLE_INTERIOR_WAREHOUSE_21,
|
|
SIMPLE_INTERIOR_WAREHOUSE_22,
|
|
SIMPLE_INTERIOR_FACTORY_METH_1,
|
|
SIMPLE_INTERIOR_FACTORY_WEED_1,
|
|
SIMPLE_INTERIOR_FACTORY_CRACK_1,
|
|
SIMPLE_INTERIOR_FACTORY_MONEY_1,
|
|
SIMPLE_INTERIOR_FACTORY_DOCUMENTS_1,
|
|
SIMPLE_INTERIOR_FACTORY_METH_2,
|
|
SIMPLE_INTERIOR_FACTORY_WEED_2,
|
|
SIMPLE_INTERIOR_FACTORY_CRACK_2,
|
|
SIMPLE_INTERIOR_FACTORY_MONEY_2,
|
|
SIMPLE_INTERIOR_FACTORY_DOCUMENTS_2,
|
|
SIMPLE_INTERIOR_FACTORY_METH_3,
|
|
SIMPLE_INTERIOR_FACTORY_WEED_3,
|
|
SIMPLE_INTERIOR_FACTORY_CRACK_3,
|
|
SIMPLE_INTERIOR_FACTORY_MONEY_3,
|
|
SIMPLE_INTERIOR_FACTORY_DOCUMENTS_3,
|
|
SIMPLE_INTERIOR_FACTORY_METH_4,
|
|
SIMPLE_INTERIOR_FACTORY_WEED_4,
|
|
SIMPLE_INTERIOR_FACTORY_CRACK_4,
|
|
SIMPLE_INTERIOR_FACTORY_MONEY_4,
|
|
SIMPLE_INTERIOR_FACTORY_DOCUMENTS_4,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_POLICE_STATION,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_MC_CLUBHOUSE,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_BANK_ROCKFORD,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_BANK_PILLBOX,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_BANK_ALTA,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_BANK_BURTON,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_BANK_PALETO,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_BANK_GRAND_SENORA,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_BANK_CHUMASH,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_ROCKCLUB,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_CHICKEN_FACTORY,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_CHICKEN_FACTORY_PART_2,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_CHICKEN_FACTORY_PART_3,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_CHICKEN_FACTORY_PART_4,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_FARMHOUSE,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_HEIST_YACHT,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_RECYCLING_PLANT,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_BIOLAB,
|
|
SIMPLE_INTERIOR_IE_WAREHOUSE_1,
|
|
SIMPLE_INTERIOR_IE_WAREHOUSE_2,
|
|
SIMPLE_INTERIOR_IE_WAREHOUSE_3,
|
|
SIMPLE_INTERIOR_IE_WAREHOUSE_4,
|
|
SIMPLE_INTERIOR_IE_WAREHOUSE_5,
|
|
SIMPLE_INTERIOR_IE_WAREHOUSE_6,
|
|
SIMPLE_INTERIOR_IE_WAREHOUSE_7,
|
|
SIMPLE_INTERIOR_IE_WAREHOUSE_8,
|
|
SIMPLE_INTERIOR_IE_WAREHOUSE_9,
|
|
SIMPLE_INTERIOR_IE_WAREHOUSE_10,
|
|
SIMPLE_INTERIOR_BUNKER_1,
|
|
SIMPLE_INTERIOR_BUNKER_2,
|
|
SIMPLE_INTERIOR_BUNKER_3,
|
|
SIMPLE_INTERIOR_BUNKER_4,
|
|
SIMPLE_INTERIOR_BUNKER_5,
|
|
SIMPLE_INTERIOR_BUNKER_6,
|
|
SIMPLE_INTERIOR_BUNKER_7,
|
|
SIMPLE_INTERIOR_BUNKER_9,
|
|
SIMPLE_INTERIOR_BUNKER_10,
|
|
SIMPLE_INTERIOR_BUNKER_11,
|
|
SIMPLE_INTERIOR_BUNKER_12,
|
|
SIMPLE_INTERIOR_ARMORY_TRUCK_1,
|
|
SIMPLE_INTERIOR_CREATOR_TRAILER_1,
|
|
SIMPLE_INTERIOR_HANGAR_1,
|
|
SIMPLE_INTERIOR_HANGAR_2,
|
|
SIMPLE_INTERIOR_HANGAR_3,
|
|
SIMPLE_INTERIOR_HANGAR_4,
|
|
SIMPLE_INTERIOR_HANGAR_5,
|
|
SIMPLE_INTERIOR_ARMORY_AIRCRAFT_1,
|
|
SIMPLE_INTERIOR_DEFUNCT_BASE_1,
|
|
SIMPLE_INTERIOR_DEFUNCT_BASE_2,
|
|
SIMPLE_INTERIOR_DEFUNCT_BASE_3,
|
|
SIMPLE_INTERIOR_DEFUNCT_BASE_4,
|
|
SIMPLE_INTERIOR_DEFUNCT_BASE_6,
|
|
SIMPLE_INTERIOR_DEFUNCT_BASE_7,
|
|
SIMPLE_INTERIOR_DEFUNCT_BASE_8,
|
|
SIMPLE_INTERIOR_DEFUNCT_BASE_9,
|
|
SIMPLE_INTERIOR_DEFUNCT_BASE_10,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_MEDIUM_GARAGE,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_LOWEND_STUDIO,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_MIDEND_APARTMENT,
|
|
SIMPLE_INTERIOR_CREATOR_AIRCRAFT_1,
|
|
SIMPLE_INTERIOR_HUB_LA_MESA,
|
|
SIMPLE_INTERIOR_HUB_MISSION_ROW,
|
|
SIMPLE_INTERIOR_HUB_STRAWBERRY_WAREHOUSE,
|
|
SIMPLE_INTERIOR_HUB_WEST_VINEWOOD,
|
|
SIMPLE_INTERIOR_HUB_CYPRESS_FLATS,
|
|
SIMPLE_INTERIOR_HUB_LSIA_WAREHOUSE,
|
|
SIMPLE_INTERIOR_HUB_ELYSIAN_ISLAND,
|
|
SIMPLE_INTERIOR_HUB_DOWNTOWN_VINEWOOD,
|
|
SIMPLE_INTERIOR_HUB_DEL_PERRO_BUILDING,
|
|
SIMPLE_INTERIOR_HUB_VESPUCCI_CANALS,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_SHERIFF,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_SHERIFF2,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_UNION_DEPOSITORY_CARPARK,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_SIMEON_SHOWROOM,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_ABATTOIR,
|
|
SIMPLE_INTERIOR_HACKER_TRUCK,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_JEWEL_STORE,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_LIFE_INVADER,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_DJ_YACHT,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_MELANOMA_GARAGE,
|
|
SIMPLE_INTERIOR_ARENA_GARAGE_1,
|
|
SIMPLE_INTERIOR_CASINO,
|
|
SIMPLE_INTERIOR_CASINO_APT,
|
|
SIMPLE_INTERIOR_CASINO_VAL_GARAGE,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_HAYES_AUTOS,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_METH_LAB,
|
|
SIMPLE_INTERIOR_ARCADE_PALETO_BAY,
|
|
SIMPLE_INTERIOR_ARCADE_GRAPESEED,
|
|
SIMPLE_INTERIOR_ARCADE_DAVIS,
|
|
SIMPLE_INTERIOR_ARCADE_WEST_VINEWOOD,
|
|
SIMPLE_INTERIOR_ARCADE_ROCKFORD_HILLS,
|
|
SIMPLE_INTERIOR_ARCADE_LA_MESA,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_FIB_BUILDING,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_BIOLAB_AND_TUNNEL,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_FOUNDRY,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_MAX_RENDA,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_AIRCRAFT_CARRIER,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_AIRCRAFT_CARRIER_PART_2,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_AIRCRAFT_CARRIER_PART_3,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_AIRCRAFT_CARRIER_PART_4,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_AIRCRAFT_CARRIER_PART_5,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_AIRCRAFT_CARRIER_PART_6,
|
|
SIMPLE_INTERIOR_RESTRICTED_INTERIOR_OMEGA,
|
|
SIMPLE_INTERIOR_SOLOMONS_OFFICE,
|
|
SIMPLE_INTERIOR_CASINO_NIGHTCLUB,
|
|
SIMPLE_INTERIOR_SUBMARINE,
|
|
SIMPLE_INTERIOR_MUSIC_STUDIO,
|
|
SIMPLE_INTERIOR_AUTO_SHOP_LA_MESA,
|
|
SIMPLE_INTERIOR_AUTO_SHOP_STRAWBERRY,
|
|
SIMPLE_INTERIOR_AUTO_SHOP_BURTON,
|
|
SIMPLE_INTERIOR_AUTO_SHOP_RANCHO,
|
|
SIMPLE_INTERIOR_AUTO_SHOP_MISSION_ROW,
|
|
SIMPLE_INTERIOR_CAR_MEET,
|
|
SIMPLE_INTERIOR_FIXER_HQ_HAWICK,
|
|
SIMPLE_INTERIOR_FIXER_HQ_ROCKFORD,
|
|
SIMPLE_INTERIOR_FIXER_HQ_SEOUL,
|
|
SIMPLE_INTERIOR_FIXER_HQ_VESPUCCI,
|
|
SIMPLE_INTERIOR_ACID_LAB,
|
|
SIMPLE_INTERIOR_JUGGALO_HIDEOUT,
|
|
SIMPLE_INTERIOR_MULTISTOREY_GARAGE,
|
|
SIMPLE_INTERIOR_SALVAGE_YARD_LA_PUERTA,
|
|
SIMPLE_INTERIOR_SALVAGE_YARD_MURIETTA_HEIGHTS,
|
|
SIMPLE_INTERIOR_SALVAGE_YARD_PALETO_BAY,
|
|
SIMPLE_INTERIOR_SALVAGE_YARD_SANDY_SHORES,
|
|
SIMPLE_INTERIOR_SALVAGE_YARD_STRAWBERRY,
|
|
};
|
|
|
|
struct JOB_STATS
|
|
{
|
|
SCR_INT Wins;
|
|
SCR_INT Losses;
|
|
SCR_INT Kills;
|
|
SCR_INT Deaths;
|
|
SCR_INT PAD_0004; // unused
|
|
};
|
|
|
|
struct JOB_BET
|
|
{
|
|
SCR_INT PAD_0000; // TODO
|
|
SCR_INT Amount;
|
|
};
|
|
|
|
struct MISSION_BETS
|
|
{
|
|
SCR_INT Identifier; // a random integer between 100 and 10000000
|
|
JOB_STATS Stats;
|
|
SCR_ARRAY<JOB_BET, 32> PlacedBets;
|
|
SCR_BOOL CancelBetting;
|
|
};
|
|
static_assert(sizeof(MISSION_BETS) == 72 * 8);
|
|
|
|
struct PLAYER_BLIP
|
|
{
|
|
SCR_INT PAD_0000;
|
|
SCR_INT NumPassengersInVehicle;
|
|
SCR_BITSET<eBlipFlags> BlipFlags;
|
|
alignas(8) eBlipType PlayerVehicleBlipType; // can be used to spoof your blip as a tank, oppressor etc
|
|
SCR_INT IdleDurationUntilBlipIsVisible;
|
|
SCR_INT BlipVisibleDuration;
|
|
SCR_INT MissionInteriorIndex; // can be used to spoof blip position
|
|
SCR_VEC3 MissionInteriorBlipLocation;
|
|
SCR_FLOAT MissionInteriorBlipRotation;
|
|
SCR_BOOL UnknownOverride; // can also be used to spoof position
|
|
SCR_VEC3 UnknownOverridePosition;
|
|
};
|
|
static_assert(sizeof(PLAYER_BLIP) == 15 * 8);
|
|
|
|
struct YACHT_APPEARANCE
|
|
{
|
|
SCR_INT PAD_0000; // TODO
|
|
SCR_INT PAD_0001;
|
|
SCR_INT PAD_0002;
|
|
SCR_INT PAD_0003;
|
|
SCR_INT PAD_0004;
|
|
TEXT_LABEL_63 Name;
|
|
SCR_HASH NameHash;
|
|
};
|
|
static_assert(sizeof(YACHT_APPEARANCE) == 22 * 8);
|
|
|
|
struct YACHT_DATA
|
|
{
|
|
SCR_BOOL HasYacht;
|
|
SCR_VEC3 Position;
|
|
SCR_INT TravelStage;
|
|
SCR_BOOL TravelInProgress;
|
|
SCR_ARRAY<uint64_t, 7> VehicleNetIds; // the heli and the boats that spawn near the yacht
|
|
SCR_INT YachtIndexPlayerIsIn; // owned or unowned
|
|
SCR_INT UnkYachtIndex; // TODO
|
|
SCR_INT YachtIndexPlayerIsInCouldBeDriving;
|
|
SCR_ARRAY<uint64_t, 2> NearbyYachts;
|
|
SCR_INT ClosestYachtIndex;
|
|
SCR_INT TurbulenceState; // controls random camera shakes when on a yacht
|
|
SCR_INT DefenseSetting;
|
|
YACHT_APPEARANCE Appearance;
|
|
SCR_BOOL RemoveClothingWhileInHotTub;
|
|
SCR_HASH MissionYachtOwnerHandleHash; // always -1 or NETWORK::NETWORK_HASH_FROM_PLAYER_HANDLE(PLAYER::PLAYER_ID())
|
|
SCR_BOOL SpawnAccess; // "spawn access"?
|
|
SCR_INT MissionYachtIndex;
|
|
};
|
|
static_assert(sizeof(YACHT_DATA) == 49 * 8);
|
|
|
|
struct SMPL_INTERIOR_DATA
|
|
{
|
|
SCR_INT Flags; // TODO!!!
|
|
SCR_INT Flags2;
|
|
SCR_INT Flags3;
|
|
SCR_INT Flags4;
|
|
SCR_INT Flags5;
|
|
SCR_INT Flags6;
|
|
SCR_INT Flags7;
|
|
SCR_INT Flags8; // added b3258
|
|
alignas(8) eSimpleInteriorIndex Index;
|
|
SCR_INT InstanceId;
|
|
SCR_INT AllowedGoons;
|
|
PLAYER_INDEX Owner;
|
|
PLAYER_INDEX VehicleOwner;
|
|
SCR_VEC3 SpecialVehicleSpawnPosition;
|
|
SCR_FLOAT SpecialVehicleSpawnHeading;
|
|
SCR_INT EnteringSimpleInteriorIndex;
|
|
SCR_INT SpecialVehicleSimpleInteriorIndex; // MOC, Terrorbyte etc
|
|
alignas(8) eSimpleInteriorIndex UnkSimpleInteriorIndex;
|
|
alignas(8) eSimpleInteriorIndex UnkSimpleInteriorIndex2;
|
|
SCR_VEC3 AvengerPosition;
|
|
SCR_VEC3 AvengerPosition2; // not sure how this is different from the field above
|
|
SCR_FLOAT AvengerHeading;
|
|
SCR_INT MissionSpawnSimpleInteriorIndex;
|
|
SCR_INT InteriorSubtype; // nightclub vs nightclub garage etc
|
|
};
|
|
static_assert(sizeof(SMPL_INTERIOR_DATA) == 30 * 8);
|
|
|
|
// yes there's a struct for leaving your clubhouse
|
|
struct LEAVE_CLUBHOUSE
|
|
{
|
|
SCR_BOOL Active;
|
|
SCR_BOOL Active2;
|
|
SCR_INT Identifier;
|
|
SCR_INT ExitLocation;
|
|
SCR_ARRAY<uint64_t, 32> ParticipantHashes;
|
|
};
|
|
static_assert(sizeof(LEAVE_CLUBHOUSE) == 37 * 8);
|
|
|
|
struct ARCADE_GAME
|
|
{
|
|
SCR_BITSET<eArcadeGameBitset> Bits;
|
|
SCR_INT CabinetIndex;
|
|
SCR_INT PAD_0002; // The only valid value is 0 so idk
|
|
SCR_INT CabinetGame; // TODO
|
|
SCR_INT GameStage;
|
|
};
|
|
static_assert(sizeof(ARCADE_GAME) == 5 * 8);
|
|
|
|
struct GlobalPlayerBDEntry
|
|
{
|
|
alignas(8) eFreemodeState FreemodeState;
|
|
MP_SCRIPT_DATA CurrentScript;
|
|
uint64_t PAD_0022[11]; // unused
|
|
SCR_INT PlayersVisible;
|
|
SCR_INT PlayersTracked;
|
|
SCR_BITSET<eAnimationBitset> AnimationBitset;
|
|
SCR_INT NumSuccessfulHoldups; // resets every 12 minutes
|
|
SCR_INT PAD_0037;
|
|
NETWORK_INDEX PersonalVehicleNetId;
|
|
NETWORK_INDEX UnkVehicleNetId;
|
|
NETWORK_INDEX UnkVehicleNetId2;
|
|
SCR_ARRAY<uint64_t, 2> UnkVehicleNetIds;
|
|
NETWORK_INDEX DeliveryMechanicNetId;
|
|
NETWORK_INDEX DeliveryMechanicNetId2;
|
|
SCR_INT SpawningVehicleLiveryIndex;
|
|
SCR_INT SpawningVehiclePrimaryColor;
|
|
SCR_INT SpawningVehicleSecondaryColor;
|
|
NETWORK_INDEX AvengerNetId;
|
|
NETWORK_INDEX DeliveryMechanicNetId3; // wtf is this?
|
|
NETWORK_INDEX TerrorbyteNetId; // or is it the MOC?
|
|
NETWORK_INDEX SubmarineNetId;
|
|
NETWORK_INDEX DinghyNetId;
|
|
NETWORK_INDEX DeliveryMechanicNetId4; // another one...
|
|
NETWORK_INDEX AcidLabNetId;
|
|
NETWORK_INDEX DeliveryBikeNetId;
|
|
NETWORK_INDEX BountyTransporterNetId; // added b3258
|
|
SCR_BOOL PAD_0057;
|
|
uint64_t PAD_0058[15]; // confirmed these are not used by PC scripts
|
|
PLAYER_BLIP PlayerBlip;
|
|
SCR_BOOL NeedToPopulateSessionStartTime; // the session start time is unused
|
|
uint64_t PAD_0089[32]; // TODO
|
|
alignas(8) eMissionType MissionType;
|
|
SCR_BOOL SpawningVehicle;
|
|
uint64_t PAD_0123[3]; // confirmed these are not used by PC scripts
|
|
MISSION_BETS MissionBets;
|
|
SCR_BOOL RadarBlipVisibliltyMechanicEnabled;
|
|
SCR_BITSET<ePlayerStateFlags> PlayerStateFlags;
|
|
SCR_INT PlayerStateFlags2; // TODO
|
|
SCR_INT PlayerStateFlags3; // TODO
|
|
SCR_INT CarMeetModShopSlotPreTakeover;
|
|
PLAYER_INDEX CurrentCarMeetSlotOwnerIndex; // can be player or player's CEO/MC leader
|
|
SCR_INT CarMeetModShopSlotPostTakeover;
|
|
SCR_HASH CarMeetModdingVehicleModel;
|
|
PLAYER_INDEX CarMeetCurrentlySeatedVehicleOwner;
|
|
SCR_VEC3 PlayerPosition; // updates every two seconds, used by spectate
|
|
SCR_BOOL OffRadarActive;
|
|
SCR_BOOL PassengerOfVehicleWithOffRadarDriver;
|
|
SCR_BOOL GoonOfBossWithOffRadar;
|
|
SCR_BOOL RevealPlayersActive;
|
|
PLAYER_INDEX RemoteWantedLevelPlayer; // cut content but still works
|
|
SCR_INT RemoteWantedLevelAmount;
|
|
PLAYER_INDEX RemoteWantedLevelRemovePlayer; // doesn't work at all
|
|
SCR_INT UnkTeleportStage;
|
|
SCR_BITSET<eActivityFlags> ActivityFlags;
|
|
SCR_INT NumReservedMissionPeds;
|
|
SCR_INT NumReservedMissionVehicles;
|
|
SCR_INT NumReservedMissionObjects;
|
|
SCR_INT TransitionSessionState; // TODO reverse enum
|
|
SCR_VEC3 TransitionReturningPosition; // TODO
|
|
TEXT_LABEL_23 TransitionContentIDToLaunch;
|
|
SCR_INT RespawnState;
|
|
SCR_INT LastRespawnTime;
|
|
SCR_BOOL CollisionLoaded;
|
|
SCR_BOOL CommitingSuicide;
|
|
SCR_BOOL RespawningInVehicleAsDriver;
|
|
SCR_BOOL RespawningInVehicle;
|
|
SCR_BOOL PAD_0238; // this value is set but not read at all by any PC scripts
|
|
SCR_BITSET<eGamerTagFlags> GamerTagFlags;
|
|
SCR_BOOL IsMale;
|
|
SCR_INT ArmwrestlingLocationFlags;
|
|
SCR_INT PAD_0242; // TODO
|
|
SCR_BOOL GamerTagShowArrow;
|
|
SCR_BOOL CarWashInProgress;
|
|
INTERIOR_INDEX CurrentInteriorIndex;
|
|
SCR_INT CurrentShopIndex; // things like clothing and tattoo stores
|
|
SCR_INT CurrentStoreIndex; // the stores in the map which can be held up
|
|
SCR_BOOL ShopActive; // any shop
|
|
SCR_BOOL InTaxi;
|
|
SCR_INT Haircut; // @250 as of 1.67
|
|
SCR_INT PrimaryHairColor;
|
|
SCR_INT SecondaryHairColor;
|
|
SCR_INT FriendlyPlayers; // bitset of player team relgroups that obtain a Respect relationship with player
|
|
SCR_BOOL IsInvisible;
|
|
SCR_BOOL InImpromptuDeathmatch;
|
|
SCR_VEC3 ImpromptuDeatmatchStartPosition;
|
|
SCR_INT PAD_0569; // not read by scripts, impromptu DM related
|
|
SCR_INT MissionLoseAnimType;
|
|
SCR_INT MissionWinAnimType; // verify
|
|
SCR_INT MissionCrewAnimType;
|
|
SCR_INT RallyRaceAnim;
|
|
SCR_BOOL IsRallyRace;
|
|
SCR_BOOL JustGetsPulledOutWhenElectrocuted;
|
|
SCR_INT HeistCutSelectionStage; // the only valid values seem to be 6 and 7
|
|
SCR_BOOL IsBadsport;
|
|
SCR_FLOAT MentalState;
|
|
SCR_BOOL IsRockstarDev; // dev dlc check and not the CNetGamePlayer flag so can be used to detect YimMenu
|
|
SCR_BOOL ScreenFadedOut;
|
|
SCR_BOOL TimeTrialActive;
|
|
YACHT_DATA YachtData;
|
|
SMPL_INTERIOR_DATA SimpleInteriorData;
|
|
SCR_BOOL PAD_0350; // TODO
|
|
SCR_INT PAD_0351; // unused vehicle/interior stuff
|
|
SCR_INT BlipShownBitset;
|
|
LEAVE_CLUBHOUSE LeaveClubhouse; // @353 as of 1.67
|
|
SCR_INT Friends; // bitset of players that are friends
|
|
SCR_VEC3 InteriorVehiclePosition; // for terrorbyte and MOC, used to fake player blip position on map
|
|
SCR_FLOAT InteriorVehicleHeading;
|
|
SCR_VEC3 AcidLabPosition; // not read by the scripts
|
|
SCR_FLOAT AcidLabHeading;
|
|
SCR_INT VehicleTurretsActive; // bitset
|
|
SCR_ARRAY<SCR_VEC3, 4> VehicleTurretsCameraPosition; // 3->4 in 1.67
|
|
SCR_INT PAD_0416; // TODO
|
|
SCR_BOOL DozerDetected; // very shady stuff, anticheat? @414 as of 1.67
|
|
SCR_ARRAY<uint64_t, 6> MissionTurretParticipants;
|
|
SCR_INT PAD_0425; // some seat index
|
|
SCR_INT MissionTurretSlot;
|
|
SCR_BITSET<eOrbitalBitset> OrbitalBitset;
|
|
SCR_BOOL FacilityIntroCutsceneInProgress;
|
|
SCR_BOOL FacilityIntroCutsceneStarted; // like above but is enabled 2 stages earlier
|
|
SCR_BOOL PAD_0430; // todo
|
|
SCR_BOOL BeingSolicitedByProstitute; // why tf is this used by the orbital cannon?
|
|
SCR_VEC3 DronePosition; // updates every second
|
|
SCR_FLOAT DroneHeading; // @432 as of 1.67
|
|
SCR_INT OrbitalBitset2; // ugh
|
|
SCR_INT CurrentlyUsingArenaTrapIndex;
|
|
SCR_INT CurrentlyUsingArenaTrapActivatedTime;
|
|
ARCADE_GAME ArcadeGame;
|
|
SCR_INT DancePartner;
|
|
SCR_INT CayoPericoFlags;
|
|
SCR_INT BeachPartyFlags;
|
|
uint64_t PAD_0477[10]; // I don't think we'll ever be able to figure out what this does
|
|
SCR_INT ThreeCardPokerStyle;
|
|
SCR_INT BlackjackStyle;
|
|
SCR_BITSET<eOutOfSightFlags> OutOfSightFlags;
|
|
SCR_VEC3 OutOfSightArea;
|
|
SCR_INT AmmunationWeaponPartFlags;
|
|
PLAYER_INDEX LastKilledBy; // @461 as of 1.67
|
|
SCR_BOOL CanSpawnGunVan;
|
|
};
|
|
|
|
static_assert(sizeof(GlobalPlayerBDEntry) == 465 * 8);
|
|
|
|
struct GlobalPlayerBD
|
|
{
|
|
SCR_ARRAY<GlobalPlayerBDEntry, 32> Entries;
|
|
};
|
|
static_assert(sizeof(GlobalPlayerBD) == 14881 * 8); |