Files
gtav-src/script/dev_ng/singleplayer/include/globals/vehicle_gen_globals.sch
T
2025-09-29 00:52:08 +02:00

312 lines
9.4 KiB
XML
Executable File

//////////////////////////////////////////////////////////////////////////////////////////
// //
// SCRIPT NAME : vehicle_gen_globals.sch //
// AUTHOR : Kenneth Ross //
// DESCRIPTION : Globals used for the vehicle generation. //
// //
//////////////////////////////////////////////////////////////////////////////////////////
USING "website_globals.sch"
USING "commands_hud.sch"
USING "shared_global_definitions.sch"
USING "SceneTool_globals.sch"
CONST_INT NUMBER_OF_DYNAMIC_VEHICLE_GENS 23
// List of all the vehicle gens handled by script
CONST_INT NUMBER_OF_VEHICLES_TO_GEN 68 // - CC
ENUM VEHICLE_GEN_NAME_ENUM
VEHGEN_MICHAEL_SAVEHOUSE = 0,
VEHGEN_MICHAEL_SAVEHOUSE_COUNTRY,
VEHGEN_FRANKLIN_SAVEHOUSE_CAR,
VEHGEN_FRANKLIN_SAVEHOUSE_BIKE,
VEHGEN_FRANKLIN_SAVEHOUSE_HILLS_CAR,
VEHGEN_FRANKLIN_SAVEHOUSE_HILLS_BIKE,
VEHGEN_TREVOR_SAVEHOUSE_COUNTRY,
VEHGEN_TREVOR_SAVEHOUSE_CITY,
VEHGEN_TREVOR_SAVEHOUSE_STRIPCLUB,
VEHGEN_MOUNTAIN_BIKE_CH,
VEHGEN_SEASHARK_SM,
VEHGEN_DUSTER,
//VEHGEN_IMPOUND_TOW_TRUCK,
// Vehicle gens with dynamic data
VEHGEN_WEB_HANGAR_MICHAEL,
VEHGEN_WEB_HANGAR_FRANKLIN,
VEHGEN_WEB_HANGAR_TREVOR,
VEHGEN_WEB_MARINA_MICHAEL,
VEHGEN_WEB_MARINA_FRANKLIN,
VEHGEN_WEB_MARINA_TREVOR,
VEHGEN_WEB_HELIPAD_MICHAEL,
VEHGEN_WEB_HELIPAD_FRANKLIN,
VEHGEN_WEB_HELIPAD_TREVOR_COUNTRY,
VEHGEN_WEB_CAR_MICHAEL,
VEHGEN_WEB_CAR_FRANKLIN,
VEHGEN_WEB_CAR_TREVOR,
VEHGEN_MISSION_VEH,
VEHGEN_MISSION_VEH_FBI4_PREP,
VEHGEN_MICHAEL_GARAGE_1, // Keep order
VEHGEN_FRANKLIN_GARAGE_1, //
VEHGEN_TREVOR_GARAGE_1, //
VEHGEN_MICHAEL_GARAGE_2, //
VEHGEN_FRANKLIN_GARAGE_2, //
VEHGEN_TREVOR_GARAGE_2, //
VEHGEN_MICHAEL_GARAGE_3, //
VEHGEN_FRANKLIN_GARAGE_3, //
VEHGEN_TREVOR_GARAGE_3, //
// One-off mission specific vehicle gens.
VEHGEN_TREV1_SMASHED_TRAILER,
VEHGEN_BJXL_CRASH_POST_ARM3,
VEHGEN_EPSILON6_PLANE,
VEHGEN_DOCKSP2B_CHINOOK,
VEHGEN_DOCKSP2B_SUB,
VEHGEN_FBI4_TRASH,
VEHGEN_FBI4_TOWING,
VEHGEN_RURALH_MILITARY_TRUCK,
VEHGEN_AGENCY_PREP_FIRETRUCK,
// RCM: Epsilon 3 - One-off vehicles gets used for ambient car script - keep these in this order
VEHGEN_EPS3_VACCA,
VEHGEN_EPS3_SURANO,
VEHGEN_EPS3_TORNADO2,
VEHGEN_EPS3_SUPERD,
VEHGEN_EPS3_DOUBLE,
VEHGEN_EPS3_DOUBLE_2,
VEHGEN_EPS3_DOUBLE_3,
// RCM: Mrs Philips 2 - Trevor must drive one back to his mom
VEHGEN_MRSP_PHARMACY1,
VEHGEN_MRSP_PHARMACY2,
VEHGEN_MRSP_HOSPITAL1,
VEHGEN_MRSP_HOSPITAL2,
VEHGEN_MRSP_HOSPITAL3,
VEHGEN_MRSP_HOSPITAL4,
// Property gens
VEHGEN_PROPERTY_MARINA_SUB,
VEHGEN_PROPERTY_MARINA_ZODIAC,
// B*1267136
VEHGEN_AIRPORT_VEHICLE,
// Preorder Blimp
VEHGEN_BLIMP_CASINO,
VEHGEN_BLIMP_DOCKS,
// Completion reward - Save Trevor
VEHGEN_TREVOR_BLAZER3,
// Completion rewards - CG to NG content
VEHGEN_WILDPHOTO_SUB, // Wildlife Photography sub spawn.
VEHGEN_RE_DUEL_CITY, // RE Duel car city spawn.
VEHGEN_RE_DUEL_COUNTRY, // RE Duel car country spawn.
VEHGEN_RE_SEAPLANE_CITY, // RE Seaplane city spawn.
VEHGEN_RE_SEAPLANE_COUNTRY, // RE Seaplane country spawn.
// Completion
// ^^^ Increment the const int above when adding a new name
VEHGEN_NONE = -1
ENDENUM
// Flags used to set the bits in the saved data properties
ENUM VEHICLE_GEN_SAVED_FLAG_ENUM
VEHGEN_S_FLAG_AVAILABLE = 0,
VEHGEN_S_FLAG_HELP_PROCESSED,
VEHGEN_S_FLAG_BLIP_PROCESSED,
VEHGEN_S_FLAG_TXT_PROCESSED,
VEHGEN_S_FLAG_PLAYER_USED_VEH,
VEHGEN_S_FLAG_ACQUIRED
ENDENUM
// Flags used to set the bits in the non-saved data properties
ENUM VEHICLE_GEN_NON_SAVED_FLAG_ENUM
VEHGEN_NS_FLAG_BLIP = 0,
VEHGEN_NS_FLAG_BLIP_LONG_RANGE,
VEHGEN_NS_FLAG_BLIP_ONCE,
VEHGEN_NS_FLAG_PRINT_HELP_ONCE,
VEHGEN_NS_FLAG_SEND_TXT_ONCE,
VEHGEN_NS_FLAG_CAN_SAVE_IN_GARAGE,
VEHGEN_NS_FLAG_DO_NEARBY_MODEL_CHECK,
VEHGEN_NS_FLAG_DO_PED_CHECK,
VEHGEN_NS_FLAG_NON_INTERACTABLE,
VEHGEN_NS_FLAG_FORCE_COLOURS,
VEHGEN_NS_FLAG_DYNAMIC_DATA, // Allow for the vehicle setup struct to be set by another script
VEHGEN_NS_FLAG_DYNAMIC_COORDS, // Allow for the dynamic coords to be used
VEHGEN_NS_FLAG_IGNORE_HANDOVER_MODEL_CHECKS, // Ignore nearby vehicle model checks when creating vehicle that was handed over by another script
VEHGEN_NS_FLAG_ONLY_AVAILABLE_ONCE, // Once player interacts with the vehicle the vehicle gen will be marked as unavailable
VEHGEN_NS_FLAG_PURCHASABLE, // Player must purchase (acquire) the vehicle gen before it activates
VEHGEN_NS_FLAG_LINKED_TO_PROPERTY, // Player must purchase the property before this is unlocked
VEHGEN_NS_FLAG_PROPERTY_CAR,
VEHGEN_NS_FLAG_PROPERTY_PLANE,
VEHGEN_NS_FLAG_PROPERTY_MODSHOP,
VEHGEN_NS_FLAG_PLAYER_VEH_BIKE,
VEHGEN_NS_FLAG_PLAYER_VEH_CAR,
VEHGEN_NS_FLAG_HIDE_BLIP_ON_MISSION,
VEHGEN_NS_FLAG_ANCHOR_WHEN_CREATED,
VEHGEN_NS_FLAG_USE_LONG_RANGE_DIST_CHECKS, // Use this to override the cleanup/create distances with longer range variants
VEHGEN_NS_FLAG_USE_SHORT_RANGE_DIST_CHECKS,
VEHGEN_NS_FLAG_USE_WORLD_RANGE_DIST_CHECKS, // Use this to force all veh gens to be created (for warping into the players garage)
VEHGEN_NS_FLAG_LOCK_DOORS, // B*1513943 - Trevor should have to break into the Mrs Philips 2 vehicle gens
VEHGEN_NS_FLAG_BLOCK_CLEANUP_ON_ENTRY,
VEHGEN_NS_FLAG_HIDE_BLIP_ON_WANTED,
VEHGEN_NS_FLAG_ONLY_SPAWN_IN_GARAGE,
VEHGEN_NS_FLAG_ANCHOR_WHEN_NO_COLLISION,
VEHGEN_NS_FLAG_ANCHORED
ENDENUM
// Struct to use when grabbing info about a vehicle gen
STRUCT VEHICLE_GEN_DATA_STRUCT
VECTOR coords
FLOAT heading
MODEL_NAMES model
TEXT_LABEL_15 help
INT flags
INT colour1
INT colour2
enumCharacterList ped
BLIP_SPRITE blip
INT dynamicSlotIndex
VECTOR scenario_block_minXYZ
VECTOR scenario_block_maxXYZ
#IF IS_DEBUG_BUILD
TEXT_LABEL_63 dbg_name
#ENDIF
ENDSTRUCT
// Struct to use when grabbing info about a purchasable garage
STRUCT PURCHASABLE_GARAGE_DATA_STRUCT
VECTOR vBuyPos1
VECTOR vBuyPos2
FLOAT fBuyWidth
VECTOR vMenuPos1
VECTOR vMenuPos2
FLOAT fMenuWidth
structSceneTool_Pan mPans1
structSceneTool_Pan mPans2
VECTOR vPlayerCoords
FLOAT fPlayerHeading
VECTOR vStorePos1
VECTOR vStorePos2
FLOAT fStoreWidth
VECTOR vBlipCoords
BLIP_SPRITE eBlipSprite
TEXT_LABEL_15 tl15BlipLabel
TEXT_LABEL_15 tl15HelpText
INT iCost
FLOAT fDoorHeading
BOOL bWarpToGarage
VECTOR vGarageExitCoords[2]
FLOAT fGarageExitHeading[2]
BOOL bDataSet
ENDSTRUCT
// Struct to contain non saved data
STRUCT VehicleGenDataNonSaved
BOOL bLeaveAreaBeforeCreating[NUMBER_OF_VEHICLES_TO_GEN]
BOOL bCheckPlayerVehicleCleanupTimer[NUMBER_OF_VEHICLES_TO_GEN]
BOOL bDisabledForMissions // Stops the vehicle gen controller from working when on mission
VEHICLE_INDEX vehicleID[NUMBER_OF_VEHICLES_TO_GEN]
BLIP_INDEX blipID[NUMBER_OF_VEHICLES_TO_GEN]
BOOL bGarageActive[NUMBER_OF_VEHICLES_TO_GEN]
BOOL bScenarioBlockSet[NUMBER_OF_VEHICLES_TO_GEN]
SCENARIO_BLOCKING_INDEX scenarioBlock[NUMBER_OF_VEHICLES_TO_GEN]
VEHICLE_INDEX vehicleSelectID[NUMBER_OF_VEHICLES_TO_GEN]
BOOL bCheckVehGensLoaded
INT iCheckVehGensLoadedCounter
VEHICLE_GEN_DATA_STRUCT sRuntimeStruct[1]
BOOL bInGarage
VECTOR vGarageEntryCoords
VEHICLE_INDEX vehPlayerVehicle
enumCharacterList ePlayerVehiclePed
BLIP_INDEX blipPlayerVehicle
VECTOR vPlayerVehicleCoords
VECTOR vPlayerVehicleCoordsCached
BOOL bPlayerVehicleBlipUsingCoords
BOOL bPlayerVehicleBlipUsingCoordsCached
SITE_BUYABLE_VEHICLE eWebVehicles[NUMBER_OF_BUYABLE_VEHICLES_SP]
ENDSTRUCT
VehicleGenDataNonSaved g_sVehicleGenNSData
STRUCT PURCHASABLE_VEHICLE_DATA_STRUCT
INT iSiteID[NUMBER_OF_BUYABLE_VEHICLES_SP]
VEHICLE_GEN_NAME_ENUM eVehGen[NUMBER_OF_BUYABLE_VEHICLES_SP]
TIMEOFDAY todEmailDate[NUMBER_OF_BUYABLE_VEHICLES_SP]
ENDSTRUCT
//////////////////////////////////////////////////////////////////////////////////////////
/// Struct for the global saved data
STRUCT VehicleGenDataSaved
INT iProperties[NUMBER_OF_VEHICLES_TO_GEN] // Set bits: Available[0], HelpProcessed[1], BlipProcessed[2], TxtProcessed[3] etc.
// Dynamic vehicle gen data
VEHICLE_SETUP_STRUCT sDynamicData[NUMBER_OF_DYNAMIC_VEHICLE_GENS]
VECTOR vDynamicCoords[NUMBER_OF_DYNAMIC_VEHICLE_GENS]
FLOAT fDynamicHeading[NUMBER_OF_DYNAMIC_VEHICLE_GENS]
INT iPlayerVehicle[NUMBER_OF_DYNAMIC_VEHICLE_GENS]
PURCHASABLE_VEHICLE_DATA_STRUCT sWebVehicles[3]
BOOL bGarageIntroRun
TIMEOFDAY eMissionVehTimeStamp
BOOL bInitialDataSetup
// Vehicle setup for Finale Heist Prep vehicles
VEHICLE_SETUP_STRUCT sHeistPrepVehicles[3]
// Vehicle setup for impound vehicles
VEHICLE_SETUP_STRUCT sImpoundVehicles[3][2]
VEHICLE_SETUP_STRUCT sCarForImpound
BOOL bTrackingImpoundVehicle
BOOL bImpoundVehicleClearedBySwitch
enumCharacterList eCurrentTrackedChar
enumCharacterList eLastCharToUseMissionVehGen
INT iImpoundVehicleSlot[3]
BOOL bImpoundVehicleHelp[3]
VEHICLE_SETUP_STRUCT sImpoundSwitchVehicles[3]
ENDSTRUCT
VEHICLE_INDEX g_vCarToTrackForImpound
VEHICLE_INDEX g_vehHandoverToGen
VEHICLE_GEN_NAME_ENUM g_eVehGenToRecieveVehicle = VEHGEN_NONE
BOOL g_bVehHandoverUseVehicleCoords
VEHICLE_SETUP_STRUCT sTempImpoundVehData
enumCharacterList eTempImpoundChar
INT g_iLastMissionVehgenOwnerHash = 0
BOOL g_bForceCleaupVehgenForRecordingPlayback = FALSE