2111 lines
73 KiB
Python
Executable File
2111 lines
73 KiB
Python
Executable File
//////////////////////////////////////////////////////////////////////////////////////////
|
||
// //
|
||
// SCRIPT NAME : magdemo.sc //
|
||
// AUTHOR : Kenneth Ross //
|
||
// DESCRIPTION : //
|
||
// //
|
||
//////////////////////////////////////////////////////////////////////////////////////////
|
||
|
||
|
||
// Do nothing in release mode
|
||
#IF IS_FINAL_BUILD
|
||
SCRIPT
|
||
ENDSCRIPT
|
||
#ENDIF
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
|
||
USING "rage_builtins.sch"
|
||
USING "globals.sch"
|
||
|
||
USING "commands_streaming.sch"
|
||
USING "commands_event.sch"
|
||
USING "commands_brains.sch"
|
||
USING "commands_cutscene.sch"
|
||
|
||
USING "player_ped_public.sch"
|
||
USING "selector_public.sch"
|
||
USING "respawn_location_private.sch"
|
||
USING "flow_reset_GAME.sch"
|
||
USING "script_blip.sch"
|
||
USING "chase_hint_cam.sch"
|
||
USING "select_mission_stage.sch"
|
||
USING "player_ped_scenes.sch"
|
||
|
||
USING "family_public.sch"
|
||
|
||
|
||
// Widget data
|
||
BOOL bDisplayStreetNames
|
||
BOOL bDisplayAreaNames
|
||
BOOL bKillScript
|
||
|
||
STRUCT Z_SKIP_DATA
|
||
INT iSelectedStage
|
||
INT iCurrentStage
|
||
BOOL bDoSkip
|
||
MissionStageMenuTextStruct SkipMenuStruct[5]
|
||
ENDSTRUCT
|
||
Z_SKIP_DATA sZSkipData
|
||
|
||
// Script data
|
||
ENUM MD_STAGE_ENUM
|
||
MD_STAGE_CREATE_INITIAL_SCENE = 0,
|
||
MD_STAGE_MICHAEL_DRIVE,
|
||
MD_STAGE_TREVOR_DRIVE,
|
||
MD_STAGE_FRANKLIN_DRIVE,
|
||
MD_STAGE_FBI2,
|
||
MD_STAGE_RESET,
|
||
MD_STAGE_CLEANUP
|
||
ENDENUM
|
||
MD_STAGE_ENUM eMDStage
|
||
|
||
INT iControl = 0
|
||
VEHICLE_INDEX vehID_MichaelBike, vehID_MichaelCar, vehID_FranklinCar, vehID_FranklinHeli, vehID_TrevorsCar, vehID_TrevorsQuad, vehID_TrevorsRebel
|
||
VEHICLE_INDEX vehID_Police[3]
|
||
PED_INDEX pedID_Cop[3]
|
||
PICKUP_INDEX pickupID_PetrolTank
|
||
BOOL bGPSRouteSet = FALSE
|
||
BOOL bLowerRoofOnVehEntry = FALSE
|
||
|
||
INT iLoungerCamInterpDuration = 4000
|
||
BOOL bHintCam_Set = FALSE
|
||
BOOL bHintCam_Required = FALSE
|
||
BOOL bHintCam_Active = FALSE
|
||
VECTOR vHintCamCoord
|
||
VECTOR vHintCamArea1,vHintCamArea2
|
||
FLOAT fHintCamArea
|
||
|
||
BOOL bModelRequest_Scorcher
|
||
BOOL bModelRequest_Rebel
|
||
BOOL bModelRequest_Ninef2
|
||
BOOL bModelRequest_Maverick
|
||
BOOL bModelRequest_Blazer
|
||
BOOL bModelRequest_Bodhi2
|
||
BOOL bModelRequest_Tailgater
|
||
BOOL bModelRequest_Police
|
||
BOOL bModelRequest_Michael
|
||
BOOL bModelRequest_Trevor
|
||
BOOL bModelRequest_Franklin
|
||
BOOL bModelRequest_Dave
|
||
BOOL bModelRequest_Cop
|
||
BOOL bModelRequest_MimeHat
|
||
BOOL bAnimRequest_Lounger
|
||
BOOL bAudioRequest_Lounger
|
||
|
||
BOOL bRadioSetup_Ninef2, bRadioTurnedOn_Ninef2
|
||
BOOL bRadioSetup_Bodhi2, bRadioSetup_Blazer
|
||
BOOL bRadioSetup_Sentinel2, bRadioTurnedOn_Sentinel2
|
||
INT iRadioTurnOnTimer_Ninef2
|
||
INT iRadioTurnOnDelay_Ninef2 = 1000
|
||
|
||
BOOL bRequestedFBI2Cutscene
|
||
BOOL bReplayFBI2
|
||
BOOL bGardenAudioSceneStarted
|
||
BOOL bMichaelBikeAudioSceneStarted, bMichaelBikeAudioSceneCleared
|
||
BOOL bPoliceCreated, bPoliceTaskGiven, bPoliceAudioSetup
|
||
BOOL bPedWallReset
|
||
BOOL bPedWallSet
|
||
BOOL bHidingBinBag
|
||
BOOL bTurnedOffTrevorRoads
|
||
|
||
VECTOR vCopCoord[3]
|
||
FLOAT fCopHeading[3]
|
||
|
||
INT missionCandidateID = NO_CANDIDATE_ID
|
||
|
||
CHASE_HINT_CAM_STRUCT localChaseHintCamStruct
|
||
|
||
SCENARIO_BLOCKING_INDEX scenarioBlockID_fbi2, scenarioBlockID_trevorDrive
|
||
|
||
MODEL_NAMES eStoredModel
|
||
|
||
OBJECT_INDEX objID_MimeHat
|
||
|
||
|
||
FUNC BOOL LOAD_MODEL_ASSET(MODEL_NAMES eModel, BOOL &bRequestFlag)
|
||
REQUEST_MODEL(eModel)
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
IF NOT bRequestFlag
|
||
PRINTLN("MAGDEMO: LOAD_MODEL_ASSET(", GET_MODEL_NAME_FOR_DEBUG(eModel), ")")
|
||
ENDIF
|
||
#ENDIF
|
||
|
||
bRequestFlag = TRUE
|
||
RETURN HAS_MODEL_LOADED(eModel)
|
||
ENDFUNC
|
||
PROC CLEANUP_MODEL_ASSET(MODEL_NAMES eModel, BOOL &bRequestFlag)
|
||
IF bRequestFlag
|
||
#IF IS_DEBUG_BUILD
|
||
PRINTLN("MAGDEMO: CLEANUP_MODEL_ASSET(", GET_MODEL_NAME_FOR_DEBUG(eModel), ")")
|
||
#ENDIF
|
||
SET_MODEL_AS_NO_LONGER_NEEDED(eModel)
|
||
bRequestFlag = FALSE
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
FUNC BOOL LOAD_ANIM_ASSET(STRING sAnimDict, BOOL &bRequestFlag)
|
||
REQUEST_ANIM_DICT(sAnimDict)
|
||
bRequestFlag = TRUE
|
||
RETURN HAS_ANIM_DICT_LOADED(sAnimDict)
|
||
ENDFUNC
|
||
PROC CLEANUP_ANIM_ASSET(STRING sAnimDict, BOOL &bRequestFlag)
|
||
IF bRequestFlag
|
||
REMOVE_ANIM_DICT(sAnimDict)
|
||
bRequestFlag = FALSE
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
FUNC BOOL LOAD_AUDIO_ASSET(STRING sAudioBank, BOOL &bRequestFlag)
|
||
bRequestFlag = TRUE
|
||
RETURN REQUEST_SCRIPT_AUDIO_BANK(sAudioBank)
|
||
ENDFUNC
|
||
PROC CLEANUP_AUDIO_ASSET(STRING sAudioBank, BOOL &bRequestFlag)
|
||
IF bRequestFlag
|
||
RELEASE_NAMED_SCRIPT_AUDIO_BANK(sAudioBank)
|
||
bRequestFlag = FALSE
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC CLEANUP_PREVIOUS_STAGE_ASSETS()
|
||
|
||
// Do a hard cleanup of all previous assets
|
||
// Note, this should only be called when we have switched cahracter and are processing the next stage.
|
||
|
||
/*
|
||
MD_STAGE_CREATE_INITIAL_SCENE = 0,
|
||
MD_STAGE_MICHAEL_DRIVE,
|
||
MD_STAGE_TREVOR_DRIVE,
|
||
MD_STAGE_FRANKLIN_DRIVE,
|
||
MD_STAGE_FBI2,
|
||
MD_STAGE_RESET,
|
||
MD_STAGE_CLEANUP
|
||
*/
|
||
|
||
// Cleanup Michael stage
|
||
IF ENUM_TO_INT(eMDStage) >= ENUM_TO_INT(MD_STAGE_TREVOR_DRIVE)
|
||
|
||
CLEANUP_AUDIO_ASSET("Magdemo_Sunlounger", bAudioRequest_Lounger)
|
||
|
||
PRINTLN("MAGDEMO: Stopping audio scene MAGDEMO_MICHAEL_GARDEN_SCENE")
|
||
STOP_AUDIO_SCENE("MAGDEMO_MICHAEL_GARDEN_SCENE")
|
||
bGardenAudioSceneStarted = FALSE
|
||
|
||
PRINTLN("MAGDEMO: Stopping audio scene MAGDEMO_MICHAEL_BIKE_SCENE")
|
||
STOP_AUDIO_SCENE("MAGDEMO_MICHAEL_BIKE_SCENE")
|
||
bMichaelBikeAudioSceneStarted = FALSE
|
||
bMichaelBikeAudioSceneCleared = FALSE
|
||
|
||
// Scorcher
|
||
IF DOES_ENTITY_EXIST(vehID_MichaelBike)
|
||
IF NOT DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehID_MichaelBike)
|
||
SET_ENTITY_AS_MISSION_ENTITY(vehID_MichaelBike, FALSE, TRUE)
|
||
ENDIF
|
||
DELETE_VEHICLE(vehID_MichaelBike)
|
||
ENDIF
|
||
ENDIF
|
||
|
||
// Cleanup Trevor stage
|
||
IF ENUM_TO_INT(eMDStage) >= ENUM_TO_INT(MD_STAGE_FRANKLIN_DRIVE)
|
||
// Bodhi2
|
||
IF DOES_ENTITY_EXIST(vehID_TrevorsCar)
|
||
IF NOT DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehID_TrevorsCar)
|
||
SET_ENTITY_AS_MISSION_ENTITY(vehID_TrevorsCar, FALSE, TRUE)
|
||
ENDIF
|
||
DELETE_VEHICLE(vehID_TrevorsCar)
|
||
ENDIF
|
||
// Quad
|
||
IF DOES_ENTITY_EXIST(vehID_TrevorsQuad)
|
||
IF NOT DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehID_TrevorsQuad)
|
||
SET_ENTITY_AS_MISSION_ENTITY(vehID_TrevorsQuad, FALSE, TRUE)
|
||
ENDIF
|
||
DELETE_VEHICLE(vehID_TrevorsQuad)
|
||
ENDIF
|
||
// Rebel
|
||
IF DOES_ENTITY_EXIST(vehID_TrevorsRebel)
|
||
IF NOT DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehID_TrevorsRebel)
|
||
SET_ENTITY_AS_MISSION_ENTITY(vehID_TrevorsRebel, FALSE, TRUE)
|
||
ENDIF
|
||
DELETE_VEHICLE(vehID_TrevorsRebel)
|
||
ENDIF
|
||
// Jerry can
|
||
IF DOES_PICKUP_EXIST(pickupID_PetrolTank)
|
||
REMOVE_PICKUP(pickupID_PetrolTank)
|
||
ENDIF
|
||
// End of trevor drive
|
||
PRINTLN("MAGDEMO: Turning on roads for end of Trevor stage")
|
||
SET_ROADS_IN_ANGLED_AREA(<<1440.352417,3672.524658,10.284130>>, <<415.225677,3596.012695,59.100624>>, 250.0, FALSE, TRUE)
|
||
//SET_VEHICLE_DENSITY_MULTIPLIER(1.0)
|
||
bTurnedOffTrevorRoads = FALSE
|
||
ENDIF
|
||
|
||
// Cleanup Franklin stage
|
||
IF ENUM_TO_INT(eMDStage) >= ENUM_TO_INT(MD_STAGE_FBI2)
|
||
// Ninef2
|
||
IF DOES_ENTITY_EXIST(vehID_FranklinCar)
|
||
IF NOT DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehID_FranklinCar)
|
||
SET_ENTITY_AS_MISSION_ENTITY(vehID_FranklinCar, FALSE, TRUE)
|
||
ENDIF
|
||
DELETE_VEHICLE(vehID_FranklinCar)
|
||
ENDIF
|
||
// Maverick
|
||
IF DOES_ENTITY_EXIST(vehID_FranklinHeli)
|
||
IF NOT DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehID_FranklinHeli)
|
||
SET_ENTITY_AS_MISSION_ENTITY(vehID_FranklinHeli, FALSE, TRUE)
|
||
ENDIF
|
||
DELETE_VEHICLE(vehID_FranklinHeli)
|
||
ENDIF
|
||
INT iCop
|
||
REPEAT 3 iCop
|
||
// Cop Ped
|
||
IF DOES_ENTITY_EXIST(pedID_Cop[iCop])
|
||
IF NOT IS_PED_INJURED(pedID_Cop[iCop])
|
||
IF NOT DOES_ENTITY_BELONG_TO_THIS_SCRIPT(pedID_Cop[iCop])
|
||
SET_ENTITY_AS_MISSION_ENTITY(pedID_Cop[iCop], FALSE, TRUE)
|
||
ENDIF
|
||
DELETE_PED(pedID_Cop[iCop])
|
||
ENDIF
|
||
ENDIF
|
||
// Cop Car
|
||
IF DOES_ENTITY_EXIST(vehID_Police[iCop])
|
||
IF NOT DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehID_Police[iCop])
|
||
SET_ENTITY_AS_MISSION_ENTITY(vehID_Police[iCop], FALSE, TRUE)
|
||
ENDIF
|
||
DELETE_VEHICLE(vehID_Police[iCop])
|
||
ENDIF
|
||
ENDREPEAT
|
||
// Mime hat
|
||
IF DOES_ENTITY_EXIST(objID_MimeHat)
|
||
DELETE_OBJECT(objID_MimeHat)
|
||
ENDIF
|
||
|
||
// Cop car sirens
|
||
IF IS_AUDIO_SCENE_ACTIVE("MAGDEMO_SIRENS_FRANKLIN")
|
||
PRINTLN("MAGDEMO: Stopping audio scene MAGDEMO_SIRENS_FRANKLIN")
|
||
STOP_AUDIO_SCENE("MAGDEMO_SIRENS_FRANKLIN")
|
||
ENDIF
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC SET_HINT_CAM(VECTOR vCoord, VECTOR vArea1, VECTOR vArea2, FLOAT fWidth)
|
||
vHintCamCoord = vCoord
|
||
vHintCamArea1 = vArea1
|
||
vHintCamArea2 = vArea2
|
||
fHintCamArea = fWidth
|
||
bHintCam_Set = TRUE
|
||
ENDPROC
|
||
|
||
PROC CLEAR_HINT_CAM()
|
||
bHintCam_Set = FALSE
|
||
ENDPROC
|
||
|
||
PROC UPDATE_HINT_CAM()
|
||
|
||
bHintCam_Required = FALSE
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
IF bHintCam_Set
|
||
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), vHintCamArea1, vHintCamArea2, fHintCamArea)
|
||
//AND IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_VEH_CIN_CAM)
|
||
bHintCam_Required = TRUE
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF bHintCam_Required
|
||
CONTROL_COORD_CHASE_HINT_CAM_ANY_MEANS(localChaseHintCamStruct, vHintCamCoord)
|
||
bHintCam_Active = TRUE
|
||
ELIF bHintCam_Active
|
||
KILL_CHASE_HINT_CAM(localChaseHintCamStruct)
|
||
bHintCam_Active = FALSE
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC SET_MAGDEMO_SCENE()
|
||
|
||
SWITCH eMDStage
|
||
CASE MD_STAGE_CREATE_INITIAL_SCENE
|
||
CASE MD_STAGE_MICHAEL_DRIVE
|
||
// Scene 1 - micheal
|
||
// Extra sunny 14:00
|
||
// cirrocumulus cloud hat
|
||
SET_WEATHER_TYPE_NOW_PERSIST("EXTRASUNNY")
|
||
UNLOAD_ALL_CLOUD_HATS()
|
||
LOAD_CLOUD_HAT("cirrocumulus") //LOAD_CLOUD_HAT("Cirrus") //#740433
|
||
SET_CLOCK_TIME(14, 0, 0) //SET_CLOCK_TIME(11, 0, 0) //#740433
|
||
SCRIPT_OVERRIDES_WIND_TYPES(TRUE, "WEATHER_TYPES_MAGDEMO_MICHAEL", "WEATHER_TYPES_MAGDEMO_MICHAEL")
|
||
BREAK
|
||
CASE MD_STAGE_TREVOR_DRIVE
|
||
// Scene 2 - trevor
|
||
// Smog 11:00
|
||
// Clear cloud hat
|
||
SET_WEATHER_TYPE_NOW_PERSIST("EXTRASUNNY")
|
||
UNLOAD_ALL_CLOUD_HATS()
|
||
LOAD_CLOUD_HAT("Cirrus")
|
||
SET_CLOCK_TIME(19, 0, 0)
|
||
SCRIPT_OVERRIDES_WIND_TYPES(TRUE, "WEATHER_TYPES_MAGDEMO_TREVOR", "WEATHER_TYPES_MAGDEMO_TREVOR")
|
||
BREAK
|
||
CASE MD_STAGE_FRANKLIN_DRIVE
|
||
// Scene 3 - franklin
|
||
// Overcast 09:00
|
||
// Horizon cloud hat
|
||
SET_WEATHER_TYPE_NOW_PERSIST("OVERCAST")
|
||
UNLOAD_ALL_CLOUD_HATS()
|
||
LOAD_CLOUD_HAT("RAIN")
|
||
SET_CLOCK_TIME(9, 0, 0)
|
||
SCRIPT_OVERRIDES_WIND_TYPES(TRUE, "WEATHER_TYPES_MAGDEMO_FRANKLIN", "WEATHER_TYPES_MAGDEMO_FRANKLIN")
|
||
BREAK
|
||
CASE MD_STAGE_FBI2
|
||
// Scene 4 – fbi2
|
||
// Smog 19:30 – 20:00
|
||
// Wispy cloud hat
|
||
SET_WEATHER_TYPE_NOW_PERSIST("SMOG")
|
||
UNLOAD_ALL_CLOUD_HATS()
|
||
LOAD_CLOUD_HAT("Wispy")
|
||
SET_CLOCK_TIME(19, 45, 0)
|
||
SCRIPT_OVERRIDES_WIND_TYPES(FALSE, "", "")
|
||
BREAK
|
||
ENDSWITCH
|
||
|
||
PAUSE_CLOCK(TRUE)
|
||
ENDPROC
|
||
|
||
/// PURPOSE: Ensure the player is invincible and will not fly through windscreens
|
||
PROC UPDATE_PLAYER_PED_STATES()
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
IF IS_PLAYER_PED_SWITCH_IN_PROGRESS()
|
||
eStoredModel = DUMMY_MODEL_FOR_SCRIPT
|
||
ELIF GET_ENTITY_MODEL(PLAYER_PED_ID()) != eStoredModel
|
||
SET_ENTITY_PROOFS(PLAYER_PED_ID(), TRUE, TRUE, TRUE, TRUE, TRUE)
|
||
SET_PED_CONFIG_FLAG(PLAYER_PED_ID(), PCF_WillFlyThroughWindscreen, FALSE)
|
||
SET_WANTED_LEVEL_MULTIPLIER(0)
|
||
SET_MAX_WANTED_LEVEL(0)
|
||
|
||
eStoredModel = GET_ENTITY_MODEL(PLAYER_PED_ID())
|
||
|
||
PRINTLN("MAGDEMO: UPDATE_PLAYER_PED_STATES() - States updated")
|
||
ENDIF
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC SET_MD_STAGE(MD_STAGE_ENUM eStage)
|
||
|
||
SWITCH eStage
|
||
CASE MD_STAGE_CREATE_INITIAL_SCENE PRINTLN("MAGDEMO: SET_MD_STAGE(MD_STAGE_CREATE_INITIAL_SCENE)") BREAK
|
||
CASE MD_STAGE_MICHAEL_DRIVE PRINTLN("MAGDEMO: SET_MD_STAGE(MD_STAGE_MICHAEL_DRIVE)") BREAK
|
||
CASE MD_STAGE_TREVOR_DRIVE PRINTLN("MAGDEMO: SET_MD_STAGE(MD_STAGE_TREVOR_DRIVE)") BREAK
|
||
CASE MD_STAGE_FRANKLIN_DRIVE PRINTLN("MAGDEMO: SET_MD_STAGE(MD_STAGE_FRANKLIN_DRIVE)") BREAK
|
||
CASE MD_STAGE_FBI2 PRINTLN("MAGDEMO: SET_MD_STAGE(MD_STAGE_FBI2)") BREAK
|
||
CASE MD_STAGE_RESET PRINTLN("MAGDEMO: SET_MD_STAGE(MD_STAGE_RESET)") BREAK
|
||
CASE MD_STAGE_CLEANUP PRINTLN("MAGDEMO: SET_MD_STAGE(MD_STAGE_CLEANUP)") BREAK
|
||
ENDSWITCH
|
||
|
||
eMDStage = eStage
|
||
iControl = 0
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
// Set the new Z-Skip stage
|
||
IF eStage = MD_STAGE_CREATE_INITIAL_SCENE
|
||
sZSkipData.iCurrentStage = 0 // "Michael at poolside"
|
||
ELIF eStage = MD_STAGE_MICHAEL_DRIVE
|
||
sZSkipData.iCurrentStage = 1 // "Michael on bicycle"
|
||
ELIF eStage = MD_STAGE_TREVOR_DRIVE
|
||
sZSkipData.iCurrentStage = 2 // "Trevor in trailer"
|
||
ELIF eStage = MD_STAGE_FRANKLIN_DRIVE
|
||
sZSkipData.iCurrentStage = 3 // "Franklin at muscle beach"
|
||
ELIF eStage = MD_STAGE_FBI2
|
||
sZSkipData.iCurrentStage = 4 // "FBI2"
|
||
ENDIF
|
||
#ENDIF
|
||
ENDPROC
|
||
|
||
FUNC BOOL IS_MAGDEMO_SAFE_TO_PROCEED()
|
||
|
||
IF NOT IS_PAUSE_MENU_ACTIVE()
|
||
AND IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
|
||
AND NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
RETURN TRUE
|
||
ENDIF
|
||
|
||
RETURN FALSE
|
||
ENDFUNC
|
||
|
||
PROC SET_INITIAL_MAGDEMO_GAME_STATE()
|
||
|
||
g_bMagDemoActive = TRUE
|
||
g_bMagDemoKillFamilySceneM = TRUE
|
||
|
||
bReplayFBI2 = FALSE
|
||
bPoliceTaskGiven = FALSE
|
||
bPoliceCreated = FALSE
|
||
bPoliceAudioSetup = FALSE
|
||
|
||
g_bUseCharacterFilters = TRUE
|
||
UPDATE_PLAYER_PED_TIMECYCLE_MODIFIER()
|
||
|
||
g_savedGlobals.sFlow.isGameflowActive = TRUE
|
||
RESET_GAMEFLOW()
|
||
g_savedGlobals.sFlow.isGameflowActive = FALSE
|
||
g_bTaxiHailingIsDisabled = TRUE
|
||
|
||
// g_bUseProtoTypeCamSpline = TRUE
|
||
// g_bUseProtoTypeCamStreaming = TRUE
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
g_bDrawLiteralSceneString = FALSE
|
||
#ENDIF
|
||
|
||
// Initialise Michaels family timetable events
|
||
g_eCurrentFamilyEvent[FM_MICHAEL_SON] = NO_FAMILY_EVENTS
|
||
INITIALISE_EVENT_FOR_THIS_FAMILY_MEMBER(FM_MICHAEL_SON)
|
||
|
||
g_eCurrentFamilyEvent[FM_MICHAEL_DAUGHTER] = NO_FAMILY_EVENTS
|
||
INITIALISE_EVENT_FOR_THIS_FAMILY_MEMBER(FM_MICHAEL_DAUGHTER)
|
||
|
||
g_eCurrentFamilyEvent[FM_MICHAEL_WIFE] = NO_FAMILY_EVENTS
|
||
INITIALISE_EVENT_FOR_THIS_FAMILY_MEMBER(FM_MICHAEL_WIFE)
|
||
|
||
g_eCurrentFamilyEvent[FM_MICHAEL_MEXMAID] = NO_FAMILY_EVENTS
|
||
INITIALISE_EVENT_FOR_THIS_FAMILY_MEMBER(FM_MICHAEL_MEXMAID)
|
||
|
||
g_eCurrentFamilyEvent[FM_MICHAEL_GARDENER] = NO_FAMILY_EVENTS
|
||
INITIALISE_EVENT_FOR_THIS_FAMILY_MEMBER(FM_MICHAEL_GARDENER)
|
||
|
||
// Unlock secirity random event
|
||
REGISTER_SCRIPT_IN_COMPLETION_PERCENTAGE_TOTAL(CP_RE_SECV1)
|
||
REGISTER_SCRIPT_IN_COMPLETION_PERCENTAGE_TOTAL(CP_RE_SECV4)
|
||
REGISTER_SCRIPT_IN_COMPLETION_PERCENTAGE_TOTAL(CP_RE_SECV5)
|
||
REGISTER_SCRIPT_IN_COMPLETION_PERCENTAGE_TOTAL(CP_RE_SECV6)
|
||
REGISTER_SCRIPT_IN_COMPLETION_PERCENTAGE_TOTAL(CP_RE_SECV7)
|
||
|
||
// Unlock savehouses
|
||
Set_Savehouse_Respawn_Available(SAVEHOUSE_MICHAEL_BH, TRUE)
|
||
Set_Savehouse_Respawn_Available(SAVEHOUSE_FRANKLIN_SC, TRUE)
|
||
Set_Savehouse_Respawn_Available(SAVEHOUSE_TREVOR_CS, TRUE)
|
||
|
||
// Set characters we can switch to
|
||
SET_PLAYER_PED_AVAILABLE(CHAR_MICHAEL, TRUE)
|
||
SET_PLAYER_PED_AVAILABLE(CHAR_FRANKLIN, FALSE)
|
||
SET_PLAYER_PED_AVAILABLE(CHAR_TREVOR, FALSE)
|
||
SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_PLAYER_PED_INTRODUCED_M, TRUE)
|
||
SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_PLAYER_PED_INTRODUCED_F, FALSE)
|
||
SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_PLAYER_PED_INTRODUCED_T, FALSE)
|
||
|
||
SET_VEHICLE_MODEL_IS_SUPPRESSED(NINEF2, TRUE)
|
||
SET_VEHICLE_MODEL_IS_SUPPRESSED(UTILLITRUCK2, TRUE)
|
||
SET_VEHICLE_MODEL_IS_SUPPRESSED(UTILLITRUCK3, TRUE)
|
||
SET_VEHICLE_MODEL_IS_SUPPRESSED(FBI2, TRUE)
|
||
|
||
// Limit radio station selection to 4.
|
||
SET_AUDIO_FLAG("LimitAmbientRadioStations", TRUE)
|
||
|
||
// Fix for bug #814560 - Hiding bin bags as they have no alpha, causing them to pop
|
||
IF NOT bHidingBinBag
|
||
PRINTLN("MAGDEMO: Hiding model 'prop_rub_binbag_03b'")
|
||
CREATE_MODEL_HIDE(<<1927.89, 3925.41, 31.42>>, 5.0, INT_TO_ENUM(MODEL_NAMES, HASH("prop_rub_binbag_03b")), TRUE)
|
||
bHidingBinBag = TRUE
|
||
ENDIF
|
||
|
||
// Cleanup audio scenes
|
||
IF IS_AUDIO_SCENE_ACTIVE("MAGDEMO_MICHAEL_GARDEN_SCENE")
|
||
PRINTLN("MAGDEMO: Stopping audio scene MAGDEMO_MICHAEL_GARDEN_SCENE")
|
||
STOP_AUDIO_SCENE("MAGDEMO_MICHAEL_GARDEN_SCENE")
|
||
ENDIF
|
||
IF IS_AUDIO_SCENE_ACTIVE("MAGDEMO_MICHAEL_BIKE_SCENE")
|
||
PRINTLN("MAGDEMO: Stopping audio scene MAGDEMO_MICHAEL_BIKE_SCENE")
|
||
STOP_AUDIO_SCENE("MAGDEMO_MICHAEL_BIKE_SCENE")
|
||
ENDIF
|
||
IF IS_AUDIO_SCENE_ACTIVE("MAGDEMO_SIRENS_FRANKLIN")
|
||
PRINTLN("MAGDEMO: Stopping audio scene MAGDEMO_SIRENS_FRANKLIN")
|
||
STOP_AUDIO_SCENE("MAGDEMO_SIRENS_FRANKLIN")
|
||
ENDIF
|
||
|
||
REACTIVATE_ALL_OBJECT_BRAINS_THAT_ARE_WAITING_TILL_OUT_OF_RANGE()
|
||
REACTIVATE_ALL_WORLD_BRAINS_THAT_ARE_WAITING_TILL_OUT_OF_RANGE()
|
||
|
||
SET_DEBUG_CAM_ACTIVE(FALSE)
|
||
|
||
SET_RANDOM_TRAINS(FALSE) //740410
|
||
|
||
SCRIPT_OVERRIDES_WIND_TYPES(FALSE, "", "")
|
||
|
||
SET_DOOR_STATE(DOORNAME_M_MANSION_R_L1, DOORSTATE_LOCKED)
|
||
SET_DOOR_STATE(DOORNAME_M_MANSION_R_R1, DOORSTATE_LOCKED)
|
||
|
||
|
||
WAIT(0)
|
||
WAIT(0)
|
||
WAIT(0)
|
||
|
||
FORCE_CLEANUP(FORCE_CLEANUP_FLAG_MAGDEMO)
|
||
|
||
WAIT(0)
|
||
WAIT(0)
|
||
WAIT(0)
|
||
|
||
// Blocking areas
|
||
scenarioBlockID_fbi2 = ADD_SCENARIO_BLOCKING_AREA(<<1321.17, -2143.95, -10>>, <<1468.61, -2001.32, 110>>)
|
||
// - Hill outside Michaels mansion
|
||
SET_PED_PATHS_IN_AREA(<< -881.7, 86.3, 45.5 >>, << -839.7, 216.2, 82.6 >>, FALSE)
|
||
SET_PED_PATHS_IN_AREA(<< -881.6, 0.4, 31.8 >>, << -819.5, 96.4, 68.9 >>, FALSE)
|
||
SET_PED_PATHS_IN_AREA(<< -845.9, -76.4, 20.3 >>, << -771.6, 38.8, 58.4 >>, FALSE)
|
||
// - End of Trevor drive
|
||
scenarioBlockID_trevorDrive = ADD_SCENARIO_BLOCKING_AREA(<< 883.5, 3581.7, 19.0 >>, << 1041.2, 3678.1, 50.2 >>)
|
||
|
||
// - Muscle beach
|
||
SET_PED_PATHS_IN_AREA(<< -1177.2, -1523.7, 0 >>, << -1168.4, -1518.2, 10 >>, FALSE)
|
||
SET_PED_PATHS_IN_AREA(<< -1180.9, -1526.9, 0 >>, << -1172.3, -1521.4, 10 >>, FALSE)
|
||
SET_PED_PATHS_IN_AREA(<< -1185.4, -1530.3, 0 >>, << -1176.8, -1524.6, 10 >>, FALSE)
|
||
SET_PED_PATHS_IN_AREA(<< -1189.7, -1533.0, 0 >>, << -1181.1, -1527.6, 10 >>, FALSE)
|
||
SET_PED_PATHS_IN_AREA(<< -1193.9, -1535.8, 0 >>, << -1185.3, -1530.4, 10 >>, FALSE)
|
||
SET_PED_PATHS_IN_AREA(<< -1198.1, -1538.8, 0 >>, << -1189.4, -1533.3, 10 >>, FALSE)
|
||
SET_PED_PATHS_IN_AREA(<< -1197.2, -1541.7, 0 >>, << -1192.5, -1536.7, 10 >>, FALSE)
|
||
ENDPROC
|
||
|
||
PROC DO_STAGE_CREATE_INITIAL_SCENE()
|
||
|
||
SWITCH iControl
|
||
CASE 0
|
||
IF NOT IS_SCREEN_FADED_OUT()
|
||
IF NOT IS_SCREEN_FADING_OUT()
|
||
DO_SCREEN_FADE_OUT(1000)
|
||
START_AUDIO_SCENE("MISSION_FAILED_SCENE")
|
||
ENDIF
|
||
ELSE
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
START_AUDIO_SCENE("MISSION_FAILED_SCENE")
|
||
CLEAR_AREA(<< -779.3461, 185.2559, 71.8350 >>, 250.0, TRUE, FALSE)
|
||
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
|
||
SET_ENTITY_COORDS(PLAYER_PED_ID(), << -779.3461, 185.2559, 71.8350 >>)
|
||
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
|
||
|
||
NEW_LOAD_SCENE_START(<< -779.3461, 185.2559, 71.8350 >>, << 0.12, -0.99, 0.08 >>, 1800.0)
|
||
|
||
iControl++
|
||
ENDIF
|
||
ENDIF
|
||
BREAK
|
||
CASE 1
|
||
IF IS_NEW_LOAD_SCENE_ACTIVE()
|
||
IF IS_NEW_LOAD_SCENE_LOADED()
|
||
NEW_LOAD_SCENE_STOP()
|
||
iControl++
|
||
ENDIF
|
||
ELSE
|
||
iControl++
|
||
ENDIF
|
||
BREAK
|
||
CASE 2
|
||
IF LOAD_MODEL_ASSET(SCORCHER, bModelRequest_Scorcher)
|
||
AND LOAD_MODEL_ASSET(GET_PLAYER_PED_MODEL(CHAR_MICHAEL), bModelRequest_Michael)
|
||
AND LOAD_ANIM_ASSET("SWITCH@MICHAEL@SUNLOUNGER", bAnimRequest_Lounger)
|
||
AND LOAD_AUDIO_ASSET("Magdemo_Sunlounger", bAudioRequest_Lounger)
|
||
iControl++
|
||
ENDIF
|
||
BREAK
|
||
CASE 3
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
AND GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("initial")) = 0 // Wait for all the controller scripts to be intialised before we proceed (required for runscript command line param)
|
||
|
||
SET_INITIAL_MAGDEMO_GAME_STATE()
|
||
|
||
// Michael at poolside
|
||
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
|
||
SET_CURRENT_SELECTOR_PED(SELECTOR_PED_MICHAEL, FALSE)
|
||
SET_PED_COMP_ITEM_CURRENT_SP(PLAYER_PED_ID(), COMP_TYPE_OUTFIT , OUTFIT_P0_YOGA, FALSE)
|
||
//SET_PED_COMP_ITEM_CURRENT_SP(PLAYER_PED_ID(), COMP_TYPE_OUTFIT , OUTFIT_DEFAULT, FALSE)
|
||
SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(), WEAPONTYPE_UNARMED, TRUE)
|
||
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
|
||
SET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID(), FALSE)
|
||
TASK_PLAY_ANIM_ADVANCED(PLAYER_PED_ID(), "SWITCH@MICHAEL@SUNLOUNGER", "SunLounger_Idle",
|
||
<< -780.694, 187.325, 72.8351 >>, //<< -780.704, 187.322, 72.827 >>,
|
||
<< 0.000, 0.000, 166.320 >>, //<< 0.000, 0.000, 166.500 >>,
|
||
INSTANT_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXTRACT_INITIAL_OFFSET | AF_TURN_OFF_COLLISION | AF_NOT_INTERRUPTABLE | AF_LOOPING)
|
||
|
||
|
||
// Michaels bike in garage
|
||
IF DOES_ENTITY_EXIST(vehID_MichaelBike)
|
||
DELETE_VEHICLE(vehID_MichaelBike)
|
||
ENDIF
|
||
vehID_MichaelBike = CREATE_VEHICLE(SCORCHER,<< -810.8484, 189.7630, 71.4785 >>, 131.0119, FALSE, FALSE)
|
||
SET_VEHICLE_ON_GROUND_PROPERLY(vehID_MichaelBike)
|
||
|
||
SET_VEHICLE_COLOURS(vehID_MichaelBike, 29, 3)
|
||
|
||
CLEANUP_MODEL_ASSET(SCORCHER, bModelRequest_Scorcher)
|
||
CLEANUP_MODEL_ASSET(GET_PLAYER_PED_MODEL(CHAR_MICHAEL), bModelRequest_Michael)
|
||
|
||
iControl++
|
||
ENDIF
|
||
BREAK
|
||
CASE 4
|
||
IF NOT IS_SCREEN_FADED_IN()
|
||
DO_SCREEN_FADE_IN(0)
|
||
ENDIF
|
||
DRAW_RECT(0.5, 0.5, 1.0, 1.0, 0, 0, 0, 255)
|
||
|
||
IF IS_SCREEN_FADED_IN()
|
||
|
||
SET_TEXT_SCALE(0.5, 0.5)
|
||
SET_TEXT_CENTRE(TRUE)
|
||
DISPLAY_TEXT(0.5, 0.4, "MD_TITLE_1")
|
||
|
||
IF IS_MAGDEMO_SAFE_TO_PROCEED()
|
||
|
||
SET_MAGDEMO_SCENE()
|
||
|
||
DO_SCREEN_FADE_OUT(0)
|
||
DO_SCREEN_FADE_IN(1000)
|
||
STOP_AUDIO_SCENE("MISSION_FAILED_SCENE")
|
||
PRINTLN("MAGDEMO: Starting audio scene MAGDEMO_MICHAEL_GARDEN_SCENE")
|
||
START_AUDIO_SCENE("MAGDEMO_MICHAEL_GARDEN_SCENE") // Kill this when we enter the house
|
||
bGardenAudioSceneStarted = TRUE
|
||
SET_GAMEPLAY_CAM_RELATIVE_HEADING(25.694843)
|
||
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-8.558015)
|
||
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
||
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), FALSE)
|
||
TASK_CLEAR_LOOK_AT(PLAYER_PED_ID())
|
||
|
||
SET_FOLLOW_PED_CAM_THIS_UPDATE("FOLLOW_PED_ON_LOUNGER_CAMERA", iLoungerCamInterpDuration)
|
||
|
||
iControl++
|
||
ENDIF
|
||
ENDIF
|
||
BREAK
|
||
CASE 5
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
|
||
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_LOOK_BEHIND)
|
||
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SELECT_WEAPON)
|
||
|
||
IF (g_Cellphone.PhoneDS <> PDS_DISABLED)
|
||
DISABLE_CELLPHONE(TRUE)
|
||
ENDIF
|
||
|
||
// Continue to update the lounger cam until we blend into the get up anim
|
||
SET_FOLLOW_PED_CAM_THIS_UPDATE("FOLLOW_PED_ON_LOUNGER_CAMERA", iLoungerCamInterpDuration)
|
||
|
||
IF IS_SCREEN_FADED_IN()
|
||
AND NOT IS_PAUSE_MENU_ACTIVE()
|
||
INT iLeftX, iLeftY, iRightX, iRightY
|
||
GET_CONTROL_VALUE_OF_ANALOGUE_STICKS(iLeftX, iLeftY, iRightX, iRightY)
|
||
|
||
IF iLeftY < -64
|
||
TASK_PLAY_ANIM_ADVANCED(PLAYER_PED_ID(), "SWITCH@MICHAEL@SUNLOUNGER", "SunLounger_GetUp",
|
||
<< -780.694, 187.325, 72.8351 >>, //<< -780.704, 187.322, 72.827 >>,
|
||
<< 0.000, 0.000, 166.320 >>, //<< 0.000, 0.000, 166.500 >>,
|
||
NORMAL_BLEND_IN, REALLY_SLOW_BLEND_OUT, -1,
|
||
AF_OVERRIDE_PHYSICS | AF_TURN_OFF_COLLISION |
|
||
AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE)
|
||
iControl++
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
BREAK
|
||
CASE 6
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
|
||
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_LOOK_BEHIND)
|
||
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SELECT_WEAPON)
|
||
|
||
IF (g_Cellphone.PhoneDS <> PDS_DISABLED)
|
||
DISABLE_CELLPHONE(TRUE)
|
||
ENDIF
|
||
|
||
BOOL bAnimComplete
|
||
|
||
INT iLeftX, iLeftY, iRightX, iRightY
|
||
GET_CONTROL_VALUE_OF_ANALOGUE_STICKS( iLeftX, iLeftY, iRightX, iRightY)
|
||
|
||
IF IS_ENTITY_PLAYING_ANIM(PLAYER_PED_ID(), "SWITCH@MICHAEL@SUNLOUNGER", "SunLounger_GetUp")
|
||
|
||
SET_PED_DESIRED_HEADING(PLAYER_PED_ID(), GET_ENTITY_HEADING(PLAYER_PED_ID()))
|
||
|
||
FLOAT fStartPhase
|
||
|
||
/* old, relies on anim tag
|
||
FLOAT fEndPhase
|
||
IF FIND_ANIM_EVENT_PHASE("SWITCH@MICHAEL@SUNLOUNGER", "SunLounger_GetUp", "WalkInterruptible", fStartPhase, fEndPhase)
|
||
//fStartPhase: 0.6150
|
||
*/
|
||
|
||
/* new, relies on phase time */
|
||
fStartPhase = 0.617 //0.6150
|
||
FLOAT fPlayerGetupAnimCurrentTime
|
||
fPlayerGetupAnimCurrentTime = GET_ENTITY_ANIM_CURRENT_TIME(PLAYER_PED_ID(),
|
||
"SWITCH@MICHAEL@SUNLOUNGER", "SunLounger_GetUp")
|
||
IF (fPlayerGetupAnimCurrentTime >= fStartPhase)
|
||
/* * */
|
||
|
||
IF GET_ENTITY_ANIM_CURRENT_TIME(PLAYER_PED_ID(), "SWITCH@MICHAEL@SUNLOUNGER", "SunLounger_GetUp") >= fStartPhase
|
||
IF iLeftX < -64 OR iLeftX > 64 // Left/Right
|
||
OR iLeftY < -64 OR iLeftY > 64 // Forwards/Backwards
|
||
SET_ENTITY_ANIM_BLEND_OUT_SPEED(PLAYER_PED_ID(),
|
||
"SunLounger_GetUp",
|
||
"SWITCH@MICHAEL@SUNLOUNGER",
|
||
REALLY_SLOW_BLEND_OUT)
|
||
CLEAR_PED_TASKS(PLAYER_PED_ID())
|
||
|
||
SIMULATE_PLAYER_INPUT_GAIT(PLAYER_ID(),
|
||
PEDMOVEBLENDRATIO_WALK,
|
||
5000)
|
||
|
||
bAnimComplete = TRUE
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ELSE
|
||
CLEAR_PED_TASKS(PLAYER_PED_ID())
|
||
|
||
bAnimComplete = TRUE
|
||
ENDIF
|
||
|
||
IF bAnimComplete
|
||
CLEANUP_ANIM_ASSET("SWITCH@MICHAEL@SUNLOUNGER", bAnimRequest_Lounger)
|
||
|
||
FORCE_PED_MOTION_STATE(PLAYER_PED_ID(), MS_ON_FOOT_IDLE, TRUE)
|
||
|
||
DISABLE_CELLPHONE(FALSE)
|
||
|
||
SET_MD_STAGE(MD_STAGE_MICHAEL_DRIVE)
|
||
ENDIF
|
||
ENDIF
|
||
BREAK
|
||
ENDSWITCH
|
||
ENDPROC
|
||
|
||
PROC DO_STAGE_STAGE_MICHAEL_DRIVE()
|
||
|
||
SWITCH iControl
|
||
CASE 0
|
||
|
||
// Fix for bug #750345 - The sky shifts a few seconds into the magdemo
|
||
// - We only get to this stage from the lounger stage so no need to set time again.
|
||
//SET_MAGDEMO_SCENE()
|
||
|
||
// Set characters we can switch to
|
||
SET_PLAYER_PED_AVAILABLE(CHAR_MICHAEL, FALSE)
|
||
SET_PLAYER_PED_AVAILABLE(CHAR_FRANKLIN, FALSE)
|
||
SET_PLAYER_PED_AVAILABLE(CHAR_TREVOR, TRUE)
|
||
SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_PLAYER_PED_INTRODUCED_T, TRUE)
|
||
|
||
CLEAR_GPS_MULTI_ROUTE()
|
||
START_GPS_MULTI_ROUTE(HUD_COLOUR_OBJECTIVE_ROUTE, TRUE)
|
||
ADD_POINT_TO_GPS_MULTI_ROUTE(<< -867.0273, 147.1164, 61.4276 >>) // Codor Drive
|
||
ADD_POINT_TO_GPS_MULTI_ROUTE(<< -851.6210, 40.6316, 47.2088 >>) // Spanish Avenue
|
||
ADD_POINT_TO_GPS_MULTI_ROUTE(<< -821.6188, -13.7117, 38.9218 >>) // Caesar Place
|
||
ADD_POINT_TO_GPS_MULTI_ROUTE(<< -835.8494, -80.5153, 36.7526 >>) // Portaolla Drive
|
||
SET_GPS_MULTI_ROUTE_RENDER(TRUE)
|
||
bGPSRouteSet = TRUE
|
||
|
||
//SET_HINT_CAM(<< -852.10, -60.87, 38.36 >>, <<-896.800293,-117.732574,36.968113>>, <<-778.729492,-54.647026,46.905807>>, 52.937500)
|
||
|
||
iControl++
|
||
BREAK
|
||
CASE 1
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
|
||
// Manage Amandas vehicle created by the timetable
|
||
VEHICLE_INDEX vehSentinel2
|
||
INT iFlags
|
||
iFlags = VEHICLE_SEARCH_FLAG_RETURN_MISSION_VEHICLES|VEHICLE_SEARCH_FLAG_RETURN_RANDOM_VEHICLES|VEHICLE_SEARCH_FLAG_RETURN_VEHICLES_CONTAINING_GROUP_MEMBERS|VEHICLE_SEARCH_FLAG_RETURN_VEHICLES_CONTAINING_A_PLAYER|VEHICLE_SEARCH_FLAG_RETURN_VEHICLES_CONTAINING_A_DEAD_OR_DYING_PED|VEHICLE_SEARCH_FLAG_RETURN_VEHICLES_WITH_PEDS_ENTERING_OR_EXITING|VEHICLE_SEARCH_FLAG_ALLOW_VEHICLE_OCCUPANTS_TO_BE_PERFORMING_A_SCRIPTED_TASK
|
||
vehSentinel2 = GET_CLOSEST_VEHICLE(<< -826.2563, 177.8511, 70.1881 >>, 10.0, SENTINEL2, iFlags)
|
||
|
||
IF DOES_ENTITY_EXIST(vehSentinel2)
|
||
AND IS_VEHICLE_DRIVEABLE(vehSentinel2)
|
||
|
||
// Set the radio station
|
||
IF NOT bRadioSetup_Sentinel2
|
||
PRINTLN("MAGDEMO: Setting up SENTINEL2 radio")
|
||
SET_VEH_RADIO_STATION(vehSentinel2, "RADIO_02_POP")
|
||
FREEZE_RADIO_STATION("RADIO_02_POP")
|
||
//SET_RADIO_TRACK("RADIO_02_POP", "RADIO_02_POP_MAG_DEMO_LOOP_POP")
|
||
SET_VEHICLE_RADIO_LOUD(vehSentinel2, TRUE)
|
||
bRadioSetup_Sentinel2 = TRUE
|
||
bRadioTurnedOn_Sentinel2 = FALSE
|
||
|
||
// Turn on the radio when Amandas gets in the vehicle
|
||
ELIF NOT bRadioTurnedOn_Sentinel2
|
||
IF GET_IS_VEHICLE_ENGINE_RUNNING(vehSentinel2)
|
||
IF NOT IS_PED_INJURED(GET_PED_IN_VEHICLE_SEAT(vehSentinel2, VS_DRIVER))
|
||
PRINTLN("MAGDEMO: Turning on SENTINEL2 radio")
|
||
//SET_RADIO_AUTO_UNFREEZE(TRUE) // This is player vehicle only
|
||
UNFREEZE_RADIO_STATION("RADIO_02_POP")
|
||
bRadioTurnedOn_Sentinel2 = TRUE
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
|
||
// Clear gps when player reaches destination
|
||
IF bGPSRouteSet
|
||
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), << -835.8494, -80.5153, 36.7526 >>, <<LOCATE_SIZE_ANY_MEANS, LOCATE_SIZE_ANY_MEANS, LOCATE_SIZE_ANY_MEANS>>)
|
||
CLEAR_GPS_MULTI_ROUTE()
|
||
SET_GPS_MULTI_ROUTE_RENDER(FALSE)
|
||
bGPSRouteSet = FALSE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
// Clear the audio scene when Michael enters the house
|
||
IF bGardenAudioSceneStarted
|
||
IF GET_ROOM_KEY_FROM_ENTITY(PLAYER_PED_ID()) != 0
|
||
PRINTLN("MAGDEMO: Stopping audio scene MAGDEMO_MICHAEL_GARDEN_SCENE")
|
||
STOP_AUDIO_SCENE("MAGDEMO_MICHAEL_GARDEN_SCENE")
|
||
bGardenAudioSceneStarted = FALSE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
// Start audio scene when Michael gets on his bike
|
||
IF NOT bMichaelBikeAudioSceneStarted
|
||
AND NOT bMichaelBikeAudioSceneCleared
|
||
IF DOES_ENTITY_EXIST(vehID_MichaelBike)
|
||
AND IS_VEHICLE_DRIVEABLE(vehID_MichaelBike)
|
||
AND IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehID_MichaelBike)
|
||
IF NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-813.113892,190.087921,71.316238>>, <<-810.811523,184.379974,74.666481>>, 7.812500)
|
||
PRINTLN("MAGDEMO: Starting audio scene MAGDEMO_MICHAEL_BIKE_SCENE")
|
||
START_AUDIO_SCENE("MAGDEMO_MICHAEL_BIKE_SCENE")
|
||
bMichaelBikeAudioSceneStarted = TRUE
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
|
||
// Clear the audio scene when we start to switch to Trevor
|
||
IF bMichaelBikeAudioSceneStarted
|
||
IF IS_PLAYER_PED_SWITCH_IN_PROGRESS()
|
||
PRINTLN("MAGDEMO: Stopping audio scene MAGDEMO_MICHAEL_BIKE_SCENE")
|
||
STOP_AUDIO_SCENE("MAGDEMO_MICHAEL_BIKE_SCENE")
|
||
bMichaelBikeAudioSceneStarted = FALSE
|
||
bMichaelBikeAudioSceneCleared = TRUE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
// Wait for player to switch to Trevor
|
||
IF IS_PED_THE_CURRENT_PLAYER_PED(CHAR_TREVOR)
|
||
AND NOT IS_PLAYER_PED_SWITCH_IN_PROGRESS()
|
||
bGPSRouteSet = FALSE
|
||
CLEAR_HINT_CAM()
|
||
CLEAR_GPS_MULTI_ROUTE()
|
||
SET_GPS_MULTI_ROUTE_RENDER(FALSE)
|
||
SET_MD_STAGE(MD_STAGE_TREVOR_DRIVE)
|
||
ENDIF
|
||
ENDIF
|
||
BREAK
|
||
ENDSWITCH
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J)
|
||
iControl = 1
|
||
MAKE_PLAYER_PED_SWITCH_REQUEST(CHAR_TREVOR) //, PR_TYPE_AMBIENT)
|
||
ENDIF
|
||
#ENDIF
|
||
ENDPROC
|
||
|
||
PROC DO_STAGE_TREVOR_DRIVE()
|
||
SWITCH iControl
|
||
CASE 0
|
||
|
||
CLEANUP_PREVIOUS_STAGE_ASSETS()
|
||
|
||
SET_MAGDEMO_SCENE()
|
||
|
||
// Set characters we can switch to
|
||
SET_PLAYER_PED_AVAILABLE(CHAR_MICHAEL, FALSE)
|
||
SET_PLAYER_PED_AVAILABLE(CHAR_FRANKLIN, TRUE)
|
||
SET_PLAYER_PED_AVAILABLE(CHAR_TREVOR, FALSE)
|
||
SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_PLAYER_PED_INTRODUCED_F, TRUE)
|
||
|
||
IF LOAD_MODEL_ASSET(REBEL, bModelRequest_Rebel)
|
||
|
||
IF DOES_ENTITY_EXIST(vehID_TrevorsRebel)
|
||
DELETE_VEHICLE(vehID_TrevorsRebel)
|
||
ENDIF
|
||
CLEAR_AREA(<< 899.3571, 3653.0366, 32.3460 >>, 50.0, TRUE)
|
||
vehID_TrevorsRebel = CREATE_VEHICLE(REBEL, << 899.3571, 3653.0366, 32.3460 >>, 271.1189, FALSE, FALSE)
|
||
SET_VEHICLE_ON_GROUND_PROPERLY(vehID_TrevorsRebel)
|
||
SET_VEHICLE_COLOURS(vehID_TrevorsRebel, 128, 0)
|
||
SET_VEHICLE_EXTRA_COLOURS(vehID_TrevorsRebel, 23, 0)
|
||
SET_VEHICLE_DIRT_LEVEL(vehID_TrevorsRebel, 15.0)
|
||
|
||
CLEAR_GPS_MULTI_ROUTE()
|
||
START_GPS_MULTI_ROUTE(HUD_COLOUR_OBJECTIVE_ROUTE, TRUE)
|
||
ADD_POINT_TO_GPS_MULTI_ROUTE(<< 1997.9603, 3835.7959, 31.3112 >>) // Marina Drive
|
||
ADD_POINT_TO_GPS_MULTI_ROUTE(<< 1959.2478, 3904.3870, 31.3785 >>) // Algonquin Blvd
|
||
ADD_POINT_TO_GPS_MULTI_ROUTE(<< 1816.0470, 3944.7961, 32.5367 >>) // Niland Ave
|
||
ADD_POINT_TO_GPS_MULTI_ROUTE(<< 1707.3000, 3900.7368, 33.8820 >>) // Armadillo Ave
|
||
ADD_POINT_TO_GPS_MULTI_ROUTE(<< 1589.1426, 3791.5486, 33.8437 >>) // Panorama Drive
|
||
ADD_POINT_TO_GPS_MULTI_ROUTE(<< 1380.3497, 3682.6082, 32.6357 >>) // Lesbos Lane
|
||
ADD_POINT_TO_GPS_MULTI_ROUTE(<< 1011.7350, 3633.9250, 31.5949 >>) // Meringue Lane
|
||
ADD_POINT_TO_GPS_MULTI_ROUTE(<< 895.0152, 3636.4546, 31.7189 >>) // Alamo Sea
|
||
|
||
SET_GPS_MULTI_ROUTE_RENDER(TRUE)
|
||
bGPSRouteSet = TRUE
|
||
|
||
// Make sure Trevor has a pistol with ammo
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
IF HAS_PED_GOT_WEAPON(PLAYER_PED_ID(), WEAPONTYPE_PISTOL)
|
||
SET_PED_AMMO(PLAYER_PED_ID(), WEAPONTYPE_PISTOL, 999)
|
||
ELSE
|
||
GIVE_WEAPON_TO_PED(PLAYER_PED_ID(), WEAPONTYPE_PISTOL, 999, FALSE, FALSE)
|
||
ENDIF
|
||
ENDIF
|
||
|
||
// Create jerry can pickup
|
||
INT iPlacementFlags
|
||
iPlacementFlags = 0
|
||
SET_BIT(iPlacementFlags, enum_to_int(PLACEMENT_FLAG_SNAP_TO_GROUND))
|
||
SET_BIT(iPlacementFlags, enum_to_int(PLACEMENT_FLAG_UPRIGHT))
|
||
IF DOES_PICKUP_EXIST(pickupID_PetrolTank)
|
||
REMOVE_PICKUP(pickupID_PetrolTank)
|
||
ENDIF
|
||
pickupID_PetrolTank = CREATE_PICKUP_ROTATE(PICKUP_WEAPON_PETROLCAN, << 903.22, 3657.42, 31.61 >>, <<0,0,115>>, iPlacementFlags)
|
||
|
||
iControl++
|
||
ENDIF
|
||
BREAK
|
||
CASE 1
|
||
// Manage Trevors vehicle created by the switch
|
||
VEHICLE_INDEX vehBodhi2
|
||
INT iFlags
|
||
iFlags = VEHICLE_SEARCH_FLAG_RETURN_MISSION_VEHICLES|VEHICLE_SEARCH_FLAG_RETURN_RANDOM_VEHICLES|VEHICLE_SEARCH_FLAG_RETURN_VEHICLES_CONTAINING_GROUP_MEMBERS|VEHICLE_SEARCH_FLAG_RETURN_VEHICLES_CONTAINING_A_PLAYER|VEHICLE_SEARCH_FLAG_RETURN_VEHICLES_CONTAINING_A_DEAD_OR_DYING_PED|VEHICLE_SEARCH_FLAG_RETURN_VEHICLES_WITH_PEDS_ENTERING_OR_EXITING|VEHICLE_SEARCH_FLAG_ALLOW_VEHICLE_OCCUPANTS_TO_BE_PERFORMING_A_SCRIPTED_TASK
|
||
vehBodhi2 = GET_CLOSEST_VEHICLE(<< 1982.8469, 3807.0891, 31.1713 >>, 10.0, BODHI2, iFlags)
|
||
IF DOES_ENTITY_EXIST(vehBodhi2)
|
||
AND IS_VEHICLE_DRIVEABLE(vehBodhi2)
|
||
|
||
// Set the radio station
|
||
IF NOT bRadioSetup_Bodhi2
|
||
PRINTLN("MAGDEMO: Setting up BODHI2 radio")
|
||
SET_INITIAL_PLAYER_STATION("RADIO_01_CLASS_ROCK")
|
||
FREEZE_RADIO_STATION("RADIO_01_CLASS_ROCK")
|
||
//SET_RADIO_TRACK("RADIO_01_CLASS_ROCK", "RADIO_01_CLASS_ROCK_MAG_DEMO_LOOP_ROCK")
|
||
SET_RADIO_AUTO_UNFREEZE(TRUE)
|
||
|
||
SET_ENTITY_AS_MISSION_ENTITY(vehBodhi2, TRUE, TRUE)
|
||
vehID_TrevorsCar = vehBodhi2
|
||
|
||
bRadioSetup_Bodhi2 = TRUE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
VEHICLE_INDEX vehBlazer
|
||
INT iFlags2
|
||
iFlags2 = VEHICLE_SEARCH_FLAG_RETURN_MISSION_VEHICLES|VEHICLE_SEARCH_FLAG_RETURN_RANDOM_VEHICLES|VEHICLE_SEARCH_FLAG_RETURN_VEHICLES_CONTAINING_GROUP_MEMBERS|VEHICLE_SEARCH_FLAG_RETURN_VEHICLES_CONTAINING_A_PLAYER|VEHICLE_SEARCH_FLAG_RETURN_VEHICLES_CONTAINING_A_DEAD_OR_DYING_PED|VEHICLE_SEARCH_FLAG_RETURN_VEHICLES_WITH_PEDS_ENTERING_OR_EXITING|VEHICLE_SEARCH_FLAG_ALLOW_VEHICLE_OCCUPANTS_TO_BE_PERFORMING_A_SCRIPTED_TASK
|
||
vehBlazer = GET_CLOSEST_VEHICLE(<< 1981.93, 3829.35, 31.89 >>, 10.0, Blazer, iFlags2)
|
||
IF DOES_ENTITY_EXIST(vehBlazer)
|
||
AND IS_VEHICLE_DRIVEABLE(vehBlazer)
|
||
|
||
// Set the radio station
|
||
IF NOT bRadioSetup_Blazer
|
||
// PRINTLN("MAGDEMO: Setting up Blazer radio")
|
||
// SET_INITIAL_PLAYER_STATION("RADIO_01_CLASS_ROCK")
|
||
// FREEZE_RADIO_STATION("RADIO_01_CLASS_ROCK")
|
||
// SET_RADIO_TRACK("RADIO_01_CLASS_ROCK", "RADIO_01_CLASS_ROCK_MAG_DEMO_LOOP_ROCK")
|
||
// SET_RADIO_AUTO_UNFREEZE(TRUE)
|
||
|
||
SET_ENTITY_AS_MISSION_ENTITY(vehBlazer, TRUE, TRUE)
|
||
vehID_TrevorsQuad = vehBlazer
|
||
|
||
bRadioSetup_Blazer = TRUE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
// Clear gps when player reaches destination
|
||
IF bGPSRouteSet
|
||
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), << 895.0152, 3636.4546, 31.7189 >>, <<LOCATE_SIZE_ANY_MEANS, LOCATE_SIZE_ANY_MEANS, LOCATE_SIZE_ANY_MEANS>>)
|
||
CLEAR_GPS_MULTI_ROUTE()
|
||
SET_GPS_MULTI_ROUTE_RENDER(FALSE)
|
||
bGPSRouteSet = FALSE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
// Turn off the roads when we get to the jerry can area and suppress help text
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), << 903.22, 3657.42, 31.61 >>) < 130
|
||
|
||
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_HELP_TEXT)
|
||
|
||
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PU_HLP")
|
||
CLEAR_HELP()
|
||
PRINTLN("MAGDEMO: Clearing help text PU_HLP")
|
||
ENDIF
|
||
|
||
IF NOT bTurnedOffTrevorRoads
|
||
PRINTLN("MAGDEMO: Turning off roads for end of Trevor stage")
|
||
SET_ROADS_IN_ANGLED_AREA(<<1440.352417,3672.524658,10.284130>>, <<415.225677,3596.012695,59.100624>>, 250.0, FALSE, TRUE)
|
||
//SET_VEHICLE_DENSITY_MULTIPLIER(0.0)
|
||
bTurnedOffTrevorRoads = TRUE
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
|
||
// Wait for player to switch to Franklin
|
||
IF IS_PED_THE_CURRENT_PLAYER_PED(CHAR_FRANKLIN)
|
||
AND NOT IS_PLAYER_PED_SWITCH_IN_PROGRESS()
|
||
bGPSRouteSet = FALSE
|
||
CLEAR_GPS_MULTI_ROUTE()
|
||
SET_GPS_MULTI_ROUTE_RENDER(FALSE)
|
||
CLEAR_HINT_CAM()
|
||
SET_MD_STAGE(MD_STAGE_FRANKLIN_DRIVE)
|
||
ENDIF
|
||
BREAK
|
||
ENDSWITCH
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J)
|
||
iControl = 1
|
||
MAKE_PLAYER_PED_SWITCH_REQUEST(CHAR_FRANKLIN) //, PR_TYPE_AMBIENT)
|
||
ENDIF
|
||
#ENDIF
|
||
ENDPROC
|
||
|
||
PROC DO_STAGE_FRANKLIN_DRIVE()
|
||
SWITCH iControl
|
||
CASE 0
|
||
|
||
CLEANUP_PREVIOUS_STAGE_ASSETS()
|
||
|
||
SET_MAGDEMO_SCENE()
|
||
|
||
// Set characters we can switch to
|
||
SET_PLAYER_PED_AVAILABLE(CHAR_MICHAEL, TRUE)
|
||
SET_PLAYER_PED_AVAILABLE(CHAR_FRANKLIN, FALSE)
|
||
SET_PLAYER_PED_AVAILABLE(CHAR_TREVOR, FALSE)
|
||
|
||
REQUEST_VEHICLE_RECORDING(001, "scene_m_fbi2_")
|
||
|
||
IF LOAD_MODEL_ASSET(NINEF2, bModelRequest_Ninef2)
|
||
AND LOAD_MODEL_ASSET(PROP_BUSKER_HAT_01, bModelRequest_MimeHat)
|
||
|
||
// Franklins car outside muscle beach juice bar
|
||
IF DOES_ENTITY_EXIST(vehID_FranklinCar)
|
||
DELETE_VEHICLE(vehID_FranklinCar)
|
||
ENDIF
|
||
vehID_FranklinCar = CREATE_VEHICLE(NINEF2, << -1189.5853, -1530.3488, 3.3942 >>, 306.7344, FALSE, FALSE)
|
||
|
||
SET_VEHICLE_COLOURS(vehID_FranklinCar, 38, 38)
|
||
SET_VEHICLE_EXTRA_COLOURS(vehID_FranklinCar, 37, 0)
|
||
|
||
SET_VEHICLE_TYRES_CAN_BURST(vehID_FranklinCar, FALSE)
|
||
SET_DISABLE_VEHICLE_PETROL_TANK_FIRES(vehID_FranklinCar, TRUE)
|
||
|
||
RAISE_CONVERTIBLE_ROOF(vehID_FranklinCar, TRUE)
|
||
SET_VEHICLE_ON_GROUND_PROPERLY(vehID_FranklinCar)
|
||
bLowerRoofOnVehEntry = TRUE
|
||
|
||
// Radio station
|
||
bRadioSetup_Ninef2 = FALSE
|
||
|
||
// Mime hat
|
||
objID_MimeHat = CREATE_OBJECT(PROP_BUSKER_HAT_01, << -1203.84, -1547.44, 3.29 >>, FALSE, FALSE)
|
||
|
||
CLEANUP_MODEL_ASSET(NINEF2, bModelRequest_Ninef2)
|
||
CLEANUP_MODEL_ASSET(PROP_BUSKER_HAT_01, bModelRequest_MimeHat)
|
||
|
||
CLEAR_GPS_MULTI_ROUTE()
|
||
START_GPS_MULTI_ROUTE(HUD_COLOUR_OBJECTIVE_ROUTE, TRUE)
|
||
ADD_POINT_TO_GPS_MULTI_ROUTE(<< -1180.6521, -1525.1920, 3.3951 >>) // Goma St
|
||
ADD_POINT_TO_GPS_MULTI_ROUTE(<< -1162.4807, -1469.4825, 3.3640 >>) // Magellan Ave
|
||
ADD_POINT_TO_GPS_MULTI_ROUTE(<< -1163.1174, -1413.8507, 3.7935 >>) // Aguja St
|
||
ADD_POINT_TO_GPS_MULTI_ROUTE(<< -1117.6749, -1386.2495, 4.1312 >>) // Bay City Avenue
|
||
ADD_POINT_TO_GPS_MULTI_ROUTE(<< -1069.4630, -1355.6085, 4.1434 >>) // Goma St
|
||
ADD_POINT_TO_GPS_MULTI_ROUTE(<< -1011.1686, -1270.0898, 5.0311 >>) // Palomino Ave
|
||
ADD_POINT_TO_GPS_MULTI_ROUTE(<< -737.4883, -1106.3109, 10.1622 >>) // S Rockford Drive
|
||
ADD_POINT_TO_GPS_MULTI_ROUTE(<< -630.4440, -914.2029, 23.1145 >>) // Streetname missing
|
||
ADD_POINT_TO_GPS_MULTI_ROUTE(<< -617.4307, -866.2444, 24.0506 >>) // Vespucci Blvd
|
||
ADD_POINT_TO_GPS_MULTI_ROUTE(<< -466.3704, -845.9417, 29.4671 >>) // Calais Av
|
||
ADD_POINT_TO_GPS_MULTI_ROUTE(<< -338.9257, -858.3804, 30.5959 >>) // Los Puerta Fwy
|
||
ADD_POINT_TO_GPS_MULTI_ROUTE(<< -224.9029, -880.0365, 28.9778 >>) // Peaceful St
|
||
ADD_POINT_TO_GPS_MULTI_ROUTE(<< -164.6611, -850.4457, 29.0890 >>) // Alta St
|
||
ADD_POINT_TO_GPS_MULTI_ROUTE(<< -104.3242, -681.2265, 34.1526 >>) // San Andreas Ave
|
||
ADD_POINT_TO_GPS_MULTI_ROUTE(<< -73.0694, -596.5261, 35.3148 >>) // Pillbox Hill
|
||
ADD_POINT_TO_GPS_MULTI_ROUTE(<< -104.6129, -610.6462, 35.0561 >>) // Pillbox Hill
|
||
SET_GPS_MULTI_ROUTE_RENDER(TRUE)
|
||
bGPSRouteSet = TRUE
|
||
|
||
SET_HINT_CAM(<< 722.11, 1194.88, 324.72 >>, <<-75.158951,-588.093567,35.313877>>, <<10.122264,-339.821533,47.310104>>, 94.562500)
|
||
|
||
// Unlock secirity random event
|
||
REGISTER_SCRIPT_IN_COMPLETION_PERCENTAGE_TOTAL(CP_RE_SECV1)
|
||
REGISTER_SCRIPT_IN_COMPLETION_PERCENTAGE_TOTAL(CP_RE_SECV4)
|
||
REGISTER_SCRIPT_IN_COMPLETION_PERCENTAGE_TOTAL(CP_RE_SECV5)
|
||
REGISTER_SCRIPT_IN_COMPLETION_PERCENTAGE_TOTAL(CP_RE_SECV6)
|
||
REGISTER_SCRIPT_IN_COMPLETION_PERCENTAGE_TOTAL(CP_RE_SECV7)
|
||
|
||
iControl++
|
||
ENDIF
|
||
BREAK
|
||
CASE 1
|
||
// Manage Franklins vehicle created by this script
|
||
IF DOES_ENTITY_EXIST(vehID_FranklinCar)
|
||
AND IS_VEHICLE_DRIVEABLE(vehID_FranklinCar)
|
||
|
||
// Set the radio station
|
||
IF NOT bRadioSetup_Ninef2
|
||
PRINTLN("MAGDEMO: Setting up NINEF2 radio")
|
||
SET_INITIAL_PLAYER_STATION("RADIO_15_MOTOWN")
|
||
FREEZE_RADIO_STATION("RADIO_15_MOTOWN")
|
||
SET_RADIO_AUTO_UNFREEZE(FALSE)
|
||
//SET_RADIO_TRACK("RADIO_15_MOTOWN", "RADIO_15_MOTOWN_MAG_DEMO_LOOP_MOTT")
|
||
bRadioSetup_Ninef2 = TRUE
|
||
bRadioTurnedOn_Ninef2 = FALSE
|
||
iRadioTurnOnTimer_Ninef2 = -1
|
||
|
||
// Turn on the radio when Franklin gets in the vehicle
|
||
ELIF NOT bRadioTurnedOn_Ninef2
|
||
IF GET_IS_VEHICLE_ENGINE_RUNNING(vehID_FranklinCar)
|
||
IF NOT IS_PED_INJURED(GET_PED_IN_VEHICLE_SEAT(vehID_FranklinCar, VS_DRIVER))
|
||
IF iRadioTurnOnTimer_Ninef2 = -1
|
||
iRadioTurnOnTimer_Ninef2 = GET_GAME_TIMER()
|
||
ELIF (GET_GAME_TIMER() - iRadioTurnOnTimer_Ninef2) > iRadioTurnOnDelay_Ninef2
|
||
PRINTLN("MAGDEMO: Turning on NINEF2 radio")
|
||
UNFREEZE_RADIO_STATION("RADIO_15_MOTOWN")
|
||
bRadioTurnedOn_Ninef2 = TRUE
|
||
ENDIF
|
||
ELSE
|
||
iRadioTurnOnTimer_Ninef2 = -1
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
|
||
// Keep engine health above 400
|
||
IF GET_VEHICLE_ENGINE_HEALTH(vehID_FranklinCar) < 400
|
||
SET_VEHICLE_ENGINE_HEALTH(vehID_FranklinCar, 450)
|
||
ENDIF
|
||
ENDIF
|
||
|
||
// Clear gps when player reaches destination
|
||
IF bGPSRouteSet
|
||
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), << -63.8986, -567.1836, 37.3575 >>, <<LOCATE_SIZE_ANY_MEANS, LOCATE_SIZE_ANY_MEANS, LOCATE_SIZE_ANY_MEANS>>)
|
||
CLEAR_GPS_MULTI_ROUTE()
|
||
SET_GPS_MULTI_ROUTE_RENDER(FALSE)
|
||
bGPSRouteSet = FALSE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
// Lower the roof of the ninef on entry
|
||
IF bLowerRoofOnVehEntry
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
AND IS_VEHICLE_DRIVEABLE(vehID_FranklinCar)
|
||
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehID_FranklinCar)
|
||
IF GET_IS_VEHICLE_ENGINE_RUNNING(vehID_FranklinCar)
|
||
IF GET_PED_IN_VEHICLE_SEAT(vehID_FranklinCar, VS_DRIVER) = PLAYER_PED_ID()
|
||
IF GET_CONVERTIBLE_ROOF_STATE(vehID_FranklinCar) = CRS_RAISED
|
||
LOWER_CONVERTIBLE_ROOF(vehID_FranklinCar, FALSE)
|
||
bLowerRoofOnVehEntry = FALSE
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
|
||
// Create the Police car that passes us when we pass the Secuirty Van random event
|
||
IF NOT bPoliceCreated
|
||
|
||
vCopCoord[0] = << -311.2928, -846.2677, 31.3261 >> fCopHeading[0] = 79.1191
|
||
vCopCoord[1] = << -300.1753, -848.3715, 31.3886 >> fCopHeading[1] = 79.2345
|
||
vCopCoord[2] = << -289.2143, -850.4190, 31.3895 >> fCopHeading[2] = 79.0697
|
||
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), vCopCoord[0]) < 400
|
||
|
||
IF LOAD_MODEL_ASSET(POLICE, bModelRequest_Police)
|
||
AND LOAD_MODEL_ASSET(S_M_Y_Cop_01, bModelRequest_Cop)
|
||
|
||
INT iCop
|
||
REPEAT 3 iCop
|
||
|
||
IF DOES_ENTITY_EXIST(vehID_Police[iCop])
|
||
DELETE_VEHICLE(vehID_Police[iCop])
|
||
ENDIF
|
||
|
||
vehID_Police[iCop] = CREATE_VEHICLE(POLICE, vCopCoord[iCop], fCopHeading[iCop], FALSE, FALSE)
|
||
SET_VEHICLE_ON_GROUND_PROPERLY(vehID_Police[iCop])
|
||
SET_VEHICLE_DOORS_LOCKED(vehID_Police[iCop], VEHICLELOCK_CANNOT_ENTER)
|
||
FREEZE_ENTITY_POSITION(vehID_Police[iCop], TRUE)
|
||
SET_VEHICLE_SIREN(vehID_Police[iCop], TRUE)
|
||
|
||
pedID_Cop[iCop] = CREATE_PED_INSIDE_VEHICLE(vehID_Police[iCop], PEDTYPE_COP, S_M_Y_COP_01, VS_DRIVER, FALSE, FALSE)
|
||
SET_PED_DEFAULT_COMPONENT_VARIATION(pedID_Cop[iCop])
|
||
ENDREPEAT
|
||
|
||
CLEANUP_MODEL_ASSET(POLICE, bModelRequest_Police)
|
||
CLEANUP_MODEL_ASSET(S_M_Y_Cop_01, bModelRequest_Cop)
|
||
|
||
bPoliceCreated = TRUE
|
||
bPoliceTaskGiven = FALSE
|
||
bPoliceAudioSetup = FALSE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
ELIF NOT bPoliceAudioSetup
|
||
|
||
INT iCop
|
||
REPEAT 3 iCop
|
||
IF DOES_ENTITY_EXIST(vehID_Police[iCop])
|
||
AND IS_VEHICLE_DRIVEABLE(vehID_Police[iCop])
|
||
PRINTLN("MAGDEMO: Adding cop vehicle , ", iCop, " to audio mix group MAGDEMO_SIRENS_FRANKLIN_MIXGROUP")
|
||
ADD_ENTITY_TO_AUDIO_MIX_GROUP(vehID_Police[iCop], "MAGDEMO_SIRENS_FRANKLIN_MIXGROUP")
|
||
ENDIF
|
||
ENDREPEAT
|
||
|
||
IF NOT IS_AUDIO_SCENE_ACTIVE("MAGDEMO_SIRENS_FRANKLIN")
|
||
PRINTLN("MAGDEMO: Starting audio scene MAGDEMO_SIRENS_FRANKLIN")
|
||
START_AUDIO_SCENE("MAGDEMO_SIRENS_FRANKLIN")
|
||
ENDIF
|
||
|
||
bPoliceAudioSetup = TRUE
|
||
|
||
ELIF NOT bPoliceTaskGiven
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
AND NOT IS_PED_INJURED(pedID_Cop[0])
|
||
AND IS_VEHICLE_DRIVEABLE(vehID_Police[0])
|
||
AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehID_Police[0])) < 200
|
||
|
||
PRINTLN("MAGDEMO: Tasking cop peds to drive to target")
|
||
|
||
CLEAR_AREA(vCopCoord[0], 25.0, TRUE)
|
||
|
||
INT iCop
|
||
REPEAT 3 iCop
|
||
IF NOT IS_PED_INJURED(pedID_Cop[iCop])
|
||
AND IS_VEHICLE_DRIVEABLE(vehID_Police[iCop])
|
||
FREEZE_ENTITY_POSITION(vehID_Police[iCop], FALSE)
|
||
|
||
CLEAR_PED_TASKS(pedID_Cop[iCop])
|
||
TASK_VEHICLE_MISSION_COORS_TARGET(pedID_Cop[iCop], vehID_Police[iCop], << -831.7271, -832.5468, 18.5985 >>, MISSION_GOTO, 30.0, DRIVINGMODE_AVOIDCARS, -1, -1, TRUE)
|
||
|
||
// Boost speed
|
||
SET_VEHICLE_FORWARD_SPEED(vehID_Police[iCop], 30.0 - (iCop*5.0))
|
||
ENDIF
|
||
ENDREPEAT
|
||
|
||
bPoliceTaskGiven = TRUE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
// Create Maverick for interal demo
|
||
IF NOT DOES_ENTITY_EXIST(vehID_FranklinHeli)
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<10.209121,-575.036804,36.644875>>, <<-37.664272,-558.832642,45.459064>>, 26.625000)
|
||
IF LOAD_MODEL_ASSET(MAVERICK, bModelRequest_Maverick)
|
||
|
||
IF DOES_ENTITY_EXIST(vehID_FranklinHeli)
|
||
DELETE_VEHICLE(vehID_FranklinHeli)
|
||
ENDIF
|
||
|
||
vehID_FranklinHeli = CREATE_VEHICLE(MAVERICK, << -12.0208, -568.7522, 36.7434 >>, 281.7917, FALSE, FALSE)
|
||
SET_VEHICLE_ON_GROUND_PROPERLY(vehID_FranklinHeli)
|
||
CLEANUP_MODEL_ASSET(MAVERICK, bModelRequest_Maverick)
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
|
||
// Pre-stream the fbi2 cutscene when we're near the end of the drive
|
||
IF NOT bRequestedFBI2Cutscene
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), << -104.6129, -610.6462, 35.0561 >>) < 100
|
||
//PRINTLN("MAGDEMO: Requesting FBI2 cutscene 'fbi_2_mcs_1'")
|
||
//bRequestedFBI2Cutscene = TRUE
|
||
//REQUEST_CUTSCENE("fbi_2_mcs_1")
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
|
||
// Wait for player to switch to Michael
|
||
IF IS_PED_THE_CURRENT_PLAYER_PED(CHAR_MICHAEL)
|
||
AND NOT IS_PLAYER_PED_SWITCH_IN_PROGRESS()
|
||
bGPSRouteSet = FALSE
|
||
CLEAR_GPS_MULTI_ROUTE()
|
||
SET_GPS_MULTI_ROUTE_RENDER(FALSE)
|
||
CLEAR_HINT_CAM()
|
||
SET_MD_STAGE(MD_STAGE_FBI2)
|
||
ENDIF
|
||
BREAK
|
||
ENDSWITCH
|
||
|
||
IF NOT bPedWallReset
|
||
// Set ped walla when the sync scene starts
|
||
IF NOT bPedWallSet
|
||
IF IS_PLAYER_SWITCH_IN_PROGRESS()
|
||
AND IS_SYNCHRONIZED_SCENE_RUNNING(g_iPlayer_Timetable_Exit_SynchSceneID)
|
||
AND GET_SYNCHRONIZED_SCENE_PHASE(g_iPlayer_Timetable_Exit_SynchSceneID) < 0.18
|
||
// Wait for it to get to the correct stage.
|
||
ELSE
|
||
PRINTLN("MAGDEMO: Setting ped walla density yo 0.85")
|
||
SET_PED_WALLA_DENSITY(0.85, 1.0)
|
||
bPedWallSet = TRUE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
// Reset ped walla when player gets in vehicle
|
||
IF bPedWallSet
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
IF DOES_ENTITY_EXIST(vehID_FranklinCar)
|
||
AND IS_VEHICLE_DRIVEABLE(vehID_FranklinCar)
|
||
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehID_FranklinCar)
|
||
PRINTLN("MAGDEMO: Resetting ped walla density")
|
||
SET_PED_WALLA_DENSITY(0.5, 0.0)
|
||
bPedWallSet = FALSE
|
||
bPedWallReset = TRUE
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J)
|
||
iControl = 1
|
||
MAKE_PLAYER_PED_SWITCH_REQUEST(CHAR_MICHAEL) //, PR_TYPE_AMBIENT)
|
||
ENDIF
|
||
#ENDIF
|
||
ENDPROC
|
||
|
||
PROC DO_STAGE_FBI2()
|
||
|
||
TEXT_LABEL_15 sMissionName = "fbi2"
|
||
|
||
SWITCH iControl
|
||
CASE 0
|
||
|
||
CLEANUP_PREVIOUS_STAGE_ASSETS()
|
||
|
||
SET_MAGDEMO_SCENE()
|
||
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
||
VEHICLE_INDEX tempVeh
|
||
tempVeh = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())
|
||
IF DOES_ENTITY_EXIST(tempVeh)
|
||
AND IS_VEHICLE_DRIVEABLE(tempVeh)
|
||
IF GET_ENTITY_MODEL(tempVeh) = TAILGATER
|
||
g_sMagDemoFBI2Entities.blip = CREATE_BLIP_FOR_COORD(<<1366.83, -2029.61, 51.04>>, TRUE)
|
||
g_sMagDemoFBI2Entities.bBlipActive = TRUE
|
||
|
||
SETTIMERA(0)
|
||
iControl++
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
BREAK
|
||
CASE 1
|
||
IF TIMERA() > 2000
|
||
REQUEST_SCRIPT(sMissionName)
|
||
IF HAS_SCRIPT_LOADED(sMissionName)
|
||
IF REQUEST_MISSION_LAUNCH(missionCandidateID, MCTID_MUST_LAUNCH, MISSION_TYPE_STORY) = MCRET_ACCEPTED
|
||
|
||
THREADID threadMission
|
||
threadMission = START_NEW_SCRIPT(sMissionName, MISSION_STACK_SIZE)
|
||
|
||
IF bRequestedFBI2Cutscene
|
||
IF HAS_THIS_CUTSCENE_LOADED("fbi_2_mcs_1")
|
||
SET_SCRIPT_CAN_START_CUTSCENE(threadMission)
|
||
ENDIF
|
||
ENDIF
|
||
bRequestedFBI2Cutscene = FALSE
|
||
|
||
SET_SCRIPT_AS_NO_LONGER_NEEDED(sMissionName)
|
||
iControl++
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
BREAK
|
||
CASE 2
|
||
|
||
IF DOES_BLIP_EXIST(g_sMagDemoFBI2Entities.blip)
|
||
IF NOT g_sMagDemoFBI2Entities.bBlipActive
|
||
REMOVE_BLIP(g_sMagDemoFBI2Entities.blip)
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("fbi2")) = 0
|
||
//bReplayFBI2 = (NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_FBI_2))
|
||
bReplayFBI2 = (NOT HAS_THIS_SCRIPT_BEEN_REGISTERED_IN_COMPLETION_PERCENTAGE_TOTAL(CP_FBI2))
|
||
|
||
missionCandidateID = NO_CANDIDATE_ID
|
||
g_savedGlobals.sFlow.isGameflowActive = TRUE
|
||
RESET_GAMEFLOW()
|
||
g_savedGlobals.sFlow.isGameflowActive = FALSE
|
||
SET_MD_STAGE(MD_STAGE_RESET)
|
||
ENDIF
|
||
BREAK
|
||
ENDSWITCH
|
||
ENDPROC
|
||
|
||
/// PURPOSE: Cleans up all script assets and states.
|
||
PROC CLEANUP_SCRIPT(BOOL bTerminateScript)
|
||
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
|
||
ENDIF
|
||
|
||
IF DOES_ENTITY_EXIST(vehID_MichaelBike)
|
||
DELETE_VEHICLE(vehID_MichaelBike)
|
||
ENDIF
|
||
IF DOES_ENTITY_EXIST(vehID_MichaelCar)
|
||
IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehID_MichaelCar)
|
||
DELETE_VEHICLE(vehID_MichaelCar)
|
||
ENDIF
|
||
ENDIF
|
||
IF DOES_ENTITY_EXIST(vehID_FranklinCar)
|
||
DELETE_VEHICLE(vehID_FranklinCar)
|
||
ENDIF
|
||
IF DOES_ENTITY_EXIST(vehID_FranklinHeli)
|
||
DELETE_VEHICLE(vehID_FranklinHeli)
|
||
ENDIF
|
||
IF DOES_ENTITY_EXIST(vehID_TrevorsCar)
|
||
DELETE_VEHICLE(vehID_TrevorsCar)
|
||
ENDIF
|
||
IF DOES_ENTITY_EXIST(vehID_TrevorsQuad)
|
||
DELETE_VEHICLE(vehID_TrevorsQuad)
|
||
ENDIF
|
||
IF DOES_ENTITY_EXIST(vehID_TrevorsRebel)
|
||
DELETE_VEHICLE(vehID_TrevorsRebel)
|
||
ENDIF
|
||
INT iCop
|
||
REPEAT 3 iCop
|
||
IF DOES_ENTITY_EXIST(pedID_Cop[iCop])
|
||
DELETE_PED(pedID_Cop[iCop])
|
||
ENDIF
|
||
IF DOES_ENTITY_EXIST(vehID_Police[iCop])
|
||
DELETE_VEHICLE(vehID_Police[iCop])
|
||
ENDIF
|
||
ENDREPEAT
|
||
IF DOES_ENTITY_EXIST(g_pScene_buddy)
|
||
AND NOT IS_PED_INJURED(g_pScene_buddy)
|
||
|
||
SET_ENTITY_AS_MISSION_ENTITY(g_pScene_buddy, TRUE, TRUE)
|
||
|
||
IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(g_pScene_buddy)
|
||
DELETE_PED(g_pScene_buddy)
|
||
ENDIF
|
||
ENDIF
|
||
IF DOES_ENTITY_EXIST(objID_MimeHat)
|
||
DELETE_OBJECT(objID_MimeHat)
|
||
ENDIF
|
||
IF DOES_PICKUP_EXIST(pickupID_PetrolTank)
|
||
REMOVE_PICKUP(pickupID_PetrolTank)
|
||
ENDIF
|
||
|
||
IF bRequestedFBI2Cutscene
|
||
REMOVE_CUTSCENE()
|
||
bRequestedFBI2Cutscene = FALSE
|
||
ENDIF
|
||
|
||
// Cop car sirens
|
||
IF IS_AUDIO_SCENE_ACTIVE("MAGDEMO_SIRENS_FRANKLIN")
|
||
PRINTLN("MAGDEMO: Stopping audio scene MAGDEMO_SIRENS_FRANKLIN")
|
||
STOP_AUDIO_SCENE("MAGDEMO_SIRENS_FRANKLIN")
|
||
ENDIF
|
||
|
||
// End of trevor drive
|
||
PRINTLN("MAGDEMO: Turning on roads for end of Trevor stage")
|
||
SET_ROADS_IN_ANGLED_AREA(<<1440.352417,3672.524658,10.284130>>, <<415.225677,3596.012695,59.100624>>, 250.0, FALSE, TRUE)
|
||
//SET_VEHICLE_DENSITY_MULTIPLIER(1.0)
|
||
bTurnedOffTrevorRoads = FALSE
|
||
|
||
CLEAR_GPS_MULTI_ROUTE()
|
||
SET_GPS_MULTI_ROUTE_RENDER(FALSE)
|
||
bGPSRouteSet = FALSE
|
||
|
||
CLEAR_HINT_CAM()
|
||
|
||
CLEANUP_MODEL_ASSET(SCORCHER, bModelRequest_Scorcher)
|
||
CLEANUP_MODEL_ASSET(NINEF2, bModelRequest_Ninef2)
|
||
CLEANUP_MODEL_ASSET(MAVERICK, bModelRequest_Maverick)
|
||
CLEANUP_MODEL_ASSET(BLAZER, bModelRequest_Blazer)
|
||
CLEANUP_MODEL_ASSET(BODHI2, bModelRequest_Bodhi2)
|
||
CLEANUP_MODEL_ASSET(REBEL, bModelRequest_Rebel)
|
||
CLEANUP_MODEL_ASSET(TAILGATER, bModelRequest_Tailgater)
|
||
CLEANUP_MODEL_ASSET(POLICE, bModelRequest_Police)
|
||
CLEANUP_MODEL_ASSET(GET_PLAYER_PED_MODEL(CHAR_MICHAEL), bModelRequest_Michael)
|
||
CLEANUP_MODEL_ASSET(GET_PLAYER_PED_MODEL(CHAR_TREVOR), bModelRequest_Trevor)
|
||
CLEANUP_MODEL_ASSET(GET_PLAYER_PED_MODEL(CHAR_FRANKLIN), bModelRequest_Franklin)
|
||
CLEANUP_MODEL_ASSET(GET_NPC_PED_MODEL(CHAR_DAVE), bModelRequest_Dave)
|
||
CLEANUP_MODEL_ASSET(S_M_Y_Cop_01, bModelRequest_Cop)
|
||
CLEANUP_MODEL_ASSET(PROP_BUSKER_HAT_01, bModelRequest_MimeHat)
|
||
CLEANUP_ANIM_ASSET("SWITCH@MICHAEL@SUNLOUNGER", bAnimRequest_Lounger)
|
||
CLEANUP_AUDIO_ASSET("Magdemo_Sunlounger", bAudioRequest_Lounger)
|
||
|
||
missionCandidateID = NO_CANDIDATE_ID
|
||
|
||
// Reset radio flags
|
||
bRadioSetup_Ninef2 = FALSE
|
||
bRadioTurnedOn_Ninef2 = FALSE
|
||
bRadioSetup_Bodhi2 = FALSE
|
||
bRadioSetup_Blazer = FALSE
|
||
bRadioSetup_Sentinel2 = FALSE
|
||
bRadioTurnedOn_Sentinel2 = FALSE
|
||
|
||
eStoredModel = DUMMY_MODEL_FOR_SCRIPT
|
||
|
||
IF DOES_BLIP_EXIST(g_sMagDemoFBI2Entities.blip)
|
||
REMOVE_BLIP(g_sMagDemoFBI2Entities.blip)
|
||
ENDIF
|
||
g_sMagDemoFBI2Entities.bBlipActive = FALSE
|
||
|
||
g_bMagDemoFBI2Retry = FALSE
|
||
|
||
SET_PED_WALLA_DENSITY(0.5, 0.0)
|
||
bPedWallSet = FALSE
|
||
bPedWallReset = FALSE
|
||
|
||
// Ending magdemo so ensure gameplay can resume
|
||
IF bTerminateScript
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), FALSE)
|
||
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
||
TASK_CLEAR_LOOK_AT(PLAYER_PED_ID())
|
||
ENDIF
|
||
|
||
// Fix for bug #814560 - Hiding bin bags as they have no alpha, causing them to pop
|
||
IF bHidingBinBag
|
||
REMOVE_MODEL_HIDE(<<1927.89, 3925.41, 31.42>>, 5.0, INT_TO_ENUM(MODEL_NAMES, HASH("prop_rub_binbag_03b")), TRUE)
|
||
bHidingBinBag = FALSE
|
||
ENDIF
|
||
|
||
// Unblock areas
|
||
REMOVE_SCENARIO_BLOCKING_AREA(scenarioBlockID_fbi2)
|
||
REMOVE_SCENARIO_BLOCKING_AREA(scenarioBlockID_trevorDrive)
|
||
// - Hill outside Michaels mansion
|
||
SET_PED_PATHS_IN_AREA(<< -881.7, 86.3, 45.5 >>, << -839.7, 216.2, 82.6 >>, TRUE)
|
||
SET_PED_PATHS_IN_AREA(<< -881.6, 0.4, 31.8 >>, << -819.5, 96.4, 68.9 >>, TRUE)
|
||
SET_PED_PATHS_IN_AREA(<< -845.9, -76.4, 20.3 >>, << -771.6, 38.8, 58.4 >>, TRUE)
|
||
// - Muscle beach
|
||
SET_PED_PATHS_IN_AREA(<< -1177.2, -1523.7, 0 >>, << -1168.4, -1518.2, 10 >>, TRUE)
|
||
SET_PED_PATHS_IN_AREA(<< -1180.9, -1526.9, 0 >>, << -1172.3, -1521.4, 10 >>, TRUE)
|
||
SET_PED_PATHS_IN_AREA(<< -1185.4, -1530.3, 0 >>, << -1176.8, -1524.6, 10 >>, TRUE)
|
||
SET_PED_PATHS_IN_AREA(<< -1189.7, -1533.0, 0 >>, << -1181.1, -1527.6, 10 >>, TRUE)
|
||
SET_PED_PATHS_IN_AREA(<< -1193.9, -1535.8, 0 >>, << -1185.3, -1530.4, 10 >>, TRUE)
|
||
SET_PED_PATHS_IN_AREA(<< -1198.1, -1538.8, 0 >>, << -1189.4, -1533.3, 10 >>, TRUE)
|
||
SET_PED_PATHS_IN_AREA(<< -1197.2, -1541.7, 0 >>, << -1192.5, -1536.7, 10 >>, TRUE)
|
||
|
||
g_bMagDemoActive = FALSE
|
||
|
||
// Reset flags
|
||
g_bTaxiHailingIsDisabled = FALSE
|
||
|
||
DO_SCREEN_FADE_IN(1000)
|
||
STOP_AUDIO_SCENE("MISSION_FAILED_SCENE")
|
||
|
||
|
||
SET_WANTED_LEVEL_MULTIPLIER(1)
|
||
SET_MAX_WANTED_LEVEL(5)
|
||
PAUSE_CLOCK(FALSE)
|
||
SCRIPT_OVERRIDES_WIND_TYPES(FALSE, "", "")
|
||
|
||
SET_RANDOM_TRAINS(TRUE) //740410
|
||
|
||
SET_VEHICLE_MODEL_IS_SUPPRESSED(NINEF2, FALSE)
|
||
SET_VEHICLE_MODEL_IS_SUPPRESSED(UTILLITRUCK2, FALSE)
|
||
SET_VEHICLE_MODEL_IS_SUPPRESSED(UTILLITRUCK3, FALSE)
|
||
SET_VEHICLE_MODEL_IS_SUPPRESSED(FBI2, FALSE)
|
||
|
||
TERMINATE_THIS_THREAD()
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC DO_STAGE_RESET()
|
||
// Fade out and then delete all assets
|
||
IF NOT IS_SCREEN_FADED_OUT()
|
||
IF NOT IS_SCREEN_FADING_OUT()
|
||
DO_SCREEN_FADE_OUT(1000)
|
||
START_AUDIO_SCENE("MISSION_FAILED_SCENE")
|
||
ENDIF
|
||
|
||
// Only process when player is alive
|
||
ELIF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
|
||
CLEANUP_SCRIPT(FALSE)
|
||
|
||
SET_MD_STAGE(MD_STAGE_CREATE_INITIAL_SCENE)
|
||
|
||
// Failed FBI2 so retry
|
||
IF bReplayFBI2
|
||
#IF IS_DEBUG_BUILD
|
||
OR (sZSkipData.bDoSkip AND (sZSkipData.iSelectedStage = 4)) // "FBI2"
|
||
#ENDIF
|
||
|
||
SET_INITIAL_MAGDEMO_GAME_STATE()
|
||
|
||
g_bMagDemoFBI2Retry = TRUE
|
||
|
||
// Set up the fbi2 scene
|
||
// --------
|
||
// --------
|
||
// --------
|
||
// --------
|
||
// --------
|
||
// --------
|
||
|
||
PED_REQUEST_SCENE_ENUM eScene = PR_SCENE_Ma_FBI1end //PR_SCENE_M_MD_FBI2
|
||
|
||
// SCENE COORDS
|
||
VECTOR vCreateCoords //coord to place the player in the scene
|
||
FLOAT fCreateHead //heading of the player for the scene
|
||
TEXT_LABEL_31 tRoom //room name for the scene if in an interior (not needed for FBI2)
|
||
GET_PLAYER_PED_POSITION_FOR_SCENE(eScene, vCreateCoords, fCreateHead, tRoom)
|
||
|
||
// SCENE ASSETS
|
||
PED_SCENE_STRUCT sPedScene
|
||
PLAYER_TIMETABLE_SCENE_STRUCT sPassedScene
|
||
sPedScene.eScene = eScene
|
||
SETUP_PLAYER_TIMETABLE_FOR_SCENE(sPedScene, sPassedScene)
|
||
|
||
//SCENE VEHICLE
|
||
PED_VEH_DATA_STRUCT sVehData //veh data struct for creating the vehicle. But as it’s the player car this shouldn’t be needed
|
||
VECTOR vVehCoordsOffset //<<0,0,0>> for scene as Player is in the vehicle
|
||
FLOAT fVehHeadOffset
|
||
VECTOR vDriveOffset //where player will drive the vehicle to
|
||
FLOAT fDriveSpeed //how fast the player will drive the vehicle
|
||
GET_PLAYER_VEH_POSITION_FOR_SCENE(CHAR_MICHAEL, eScene, sVehData, vVehCoordsOffset, fVehHeadOffset, vDriveOffset, fDriveSpeed)
|
||
|
||
WHILE NOT LOAD_MODEL_ASSET(GET_PLAYER_PED_MODEL(CHAR_MICHAEL), bModelRequest_Michael)
|
||
OR NOT LOAD_MODEL_ASSET(TAILGATER, bModelRequest_Tailgater)
|
||
OR NOT LOAD_MODEL_ASSET(GET_NPC_PED_MODEL(CHAR_DAVE), bModelRequest_Dave)
|
||
WAIT(0)
|
||
ENDWHILE
|
||
|
||
WHILE NOT SET_CURRENT_SELECTOR_PED(SELECTOR_PED_MICHAEL, FALSE)
|
||
WAIT(0)
|
||
ENDWHILE
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
SET_PED_COMP_ITEM_CURRENT_SP(PLAYER_PED_ID(), COMP_TYPE_OUTFIT , OUTFIT_P0_DEFAULT, FALSE)
|
||
ENDIF
|
||
|
||
CREATE_PLAYER_VEHICLE(vehID_MichaelCar, CHAR_MICHAEL,
|
||
vCreateCoords+vVehCoordsOffset, fCreateHead+fVehHeadOffset,
|
||
FALSE, VEHICLE_TYPE_CAR)
|
||
SET_VEHICLE_ON_GROUND_PROPERLY(vehID_MichaelCar)
|
||
|
||
SET_VEH_RADIO_STATION(vehID_MichaelCar, "RADIO_01_CLASS_ROCK")
|
||
FREEZE_RADIO_STATION("RADIO_01_CLASS_ROCK")
|
||
//SET_RADIO_TRACK("RADIO_01_CLASS_ROCK", "MAG_DEMO_ADULT_EDUCATION")
|
||
SET_RADIO_AUTO_UNFREEZE(TRUE)
|
||
|
||
// #746924
|
||
// Can you please turn the radio off for Michael's car now
|
||
SET_VEHICLE_RADIO_ENABLED(vehID_MichaelCar, FALSE)
|
||
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehID_MichaelCar)
|
||
TASK_VEHICLE_DRIVE_TO_COORD(PLAYER_PED_ID(), vehID_MichaelCar,
|
||
GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehID_MichaelCar, vDriveOffset),
|
||
fDriveSpeed, DRIVINGSTYLE_NORMAL, GET_ENTITY_MODEL(vehID_MichaelCar),
|
||
DRIVINGMODE_AVOIDCARS, 4.0, 30)
|
||
SET_VEHICLE_FORWARD_SPEED(vehID_MichaelCar, fDriveSpeed)
|
||
ENDIF
|
||
|
||
WHILE NOT CREATE_NPC_PED_INSIDE_VEHICLE(g_pScene_buddy, CHAR_DAVE, vehID_MichaelCar, VS_FRONT_RIGHT, FALSE)
|
||
WAIT(0)
|
||
ENDWHILE
|
||
|
||
IF NOT IS_PED_INJURED(g_pScene_buddy)
|
||
SET_ENTITY_AS_MISSION_ENTITY(g_pScene_buddy)
|
||
SET_PED_CAN_BE_TARGETTED(g_pScene_buddy, FALSE)
|
||
SET_PED_RELATIONSHIP_GROUP_HASH(g_pScene_buddy, RELGROUPHASH_PLAYER)
|
||
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(g_pScene_buddy, TRUE)
|
||
ENDIF
|
||
|
||
CLEANUP_MODEL_ASSET(TAILGATER, bModelRequest_Tailgater)
|
||
CLEANUP_MODEL_ASSET(GET_PLAYER_PED_MODEL(CHAR_MICHAEL), bModelRequest_Michael)
|
||
CLEANUP_MODEL_ASSET(GET_NPC_PED_MODEL(CHAR_DAVE), bModelRequest_Dave)
|
||
|
||
g_sMagDemoFBI2Entities.bCreated = TRUE
|
||
|
||
TEXT_LABEL_31 sPlayerTimetableAdditional_script
|
||
IF SETUP_TIMETABLE_SCRIPT_FOR_SCENE(eScene, sPlayerTimetableAdditional_script)
|
||
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(GET_HASH_KEY(sPlayerTimetableAdditional_script)) <= 0
|
||
|
||
REQUEST_SCRIPT(sPlayerTimetableAdditional_script)
|
||
WHILE NOT HAS_SCRIPT_LOADED(sPlayerTimetableAdditional_script)
|
||
WAIT(0)
|
||
ENDWHILE
|
||
|
||
START_NEW_SCRIPT(sPlayerTimetableAdditional_script, FRIEND_STACK_SIZE)
|
||
SET_SCRIPT_AS_NO_LONGER_NEEDED(sPlayerTimetableAdditional_script)
|
||
|
||
g_sMagDemoFBI2Entities.bCreated = FALSE
|
||
|
||
WHILE NOT g_sMagDemoFBI2Entities.bCreated
|
||
|
||
printstring("waiting on g_sMagDemoFBI2Entities.bCreated...")
|
||
printnl()
|
||
|
||
WAIT(0)
|
||
ENDWHILE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
|
||
// --------
|
||
// --------
|
||
// --------
|
||
// --------
|
||
// --------
|
||
// --------
|
||
|
||
|
||
// Fade in and give control back
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
|
||
CLEAR_AREA(GET_ENTITY_COORDS(PLAYER_PED_ID()), 200.00, TRUE, TRUE)
|
||
LOAD_SCENE(GET_ENTITY_COORDS(PLAYER_PED_ID()))
|
||
|
||
IF NOT IS_SCREEN_FADED_IN()
|
||
AND NOT IS_SCREEN_FADING_IN()
|
||
DO_SCREEN_FADE_IN(1000)
|
||
ENDIF
|
||
STOP_AUDIO_SCENE("MISSION_FAILED_SCENE")
|
||
|
||
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0.0)
|
||
SET_GAMEPLAY_CAM_RELATIVE_PITCH(0.0)
|
||
|
||
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
||
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), FALSE)
|
||
TASK_CLEAR_LOOK_AT(PLAYER_PED_ID())
|
||
ENDIF
|
||
|
||
SET_MD_STAGE(MD_STAGE_FBI2)
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
sZSkipData.bDoSkip = FALSE
|
||
#ENDIF
|
||
|
||
// Set up the scene if we have used the Z-Skip menu
|
||
#IF IS_DEBUG_BUILD
|
||
ELIF sZSkipData.bDoSkip
|
||
|
||
SET_INITIAL_MAGDEMO_GAME_STATE()
|
||
|
||
IF (sZSkipData.iSelectedStage = 0) // "Initial scene"
|
||
// Let the initial scene set this one up
|
||
SET_MD_STAGE(MD_STAGE_CREATE_INITIAL_SCENE)
|
||
|
||
ELIF (sZSkipData.iSelectedStage = 1) // "Michael on bicycle"
|
||
|
||
WHILE NOT LOAD_MODEL_ASSET(GET_PLAYER_PED_MODEL(CHAR_MICHAEL), bModelRequest_Michael)
|
||
OR NOT LOAD_MODEL_ASSET(SCORCHER, bModelRequest_Scorcher)
|
||
WAIT(0)
|
||
ENDWHILE
|
||
|
||
WHILE NOT SET_CURRENT_SELECTOR_PED(SELECTOR_PED_MICHAEL, FALSE)
|
||
WAIT(0)
|
||
ENDWHILE
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
SET_PED_COMP_ITEM_CURRENT_SP(PLAYER_PED_ID(), COMP_TYPE_OUTFIT , OUTFIT_P0_YOGA, FALSE)
|
||
ENDIF
|
||
|
||
IF DOES_ENTITY_EXIST(vehID_MichaelBike)
|
||
DELETE_VEHICLE(vehID_MichaelBike)
|
||
ENDIF
|
||
|
||
vehID_MichaelBike = CREATE_VEHICLE(SCORCHER,<< -810.8484, 189.7630, 71.4785 >>, 131.0119, FALSE, FALSE)
|
||
SET_VEHICLE_ON_GROUND_PROPERLY(vehID_MichaelBike)
|
||
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehID_MichaelBike)
|
||
ENDIF
|
||
|
||
CLEANUP_MODEL_ASSET(SCORCHER, bModelRequest_Scorcher)
|
||
CLEANUP_MODEL_ASSET(GET_PLAYER_PED_MODEL(CHAR_MICHAEL), bModelRequest_Michael)
|
||
|
||
// Fade in and give control back
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
|
||
CLEAR_AREA(GET_ENTITY_COORDS(PLAYER_PED_ID()), 200.00, TRUE, TRUE)
|
||
LOAD_SCENE(GET_ENTITY_COORDS(PLAYER_PED_ID()))
|
||
|
||
IF NOT IS_SCREEN_FADED_IN()
|
||
AND NOT IS_SCREEN_FADING_IN()
|
||
DO_SCREEN_FADE_IN(1000)
|
||
ENDIF
|
||
STOP_AUDIO_SCENE("MISSION_FAILED_SCENE")
|
||
|
||
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0.0)
|
||
SET_GAMEPLAY_CAM_RELATIVE_PITCH(0.0)
|
||
|
||
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
||
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), FALSE)
|
||
TASK_CLEAR_LOOK_AT(PLAYER_PED_ID())
|
||
ENDIF
|
||
|
||
SET_MD_STAGE(MD_STAGE_MICHAEL_DRIVE)
|
||
|
||
ELIF (sZSkipData.iSelectedStage = 2) // "Trevor in trailer"
|
||
|
||
WHILE NOT LOAD_MODEL_ASSET(GET_PLAYER_PED_MODEL(CHAR_TREVOR), bModelRequest_Trevor)
|
||
OR NOT LOAD_MODEL_ASSET(BLAZER, bModelRequest_Blazer)
|
||
OR NOT LOAD_MODEL_ASSET(BODHI2, bModelRequest_Bodhi2)
|
||
OR NOT LOAD_MODEL_ASSET(REBEL, bModelRequest_Rebel)
|
||
WAIT(0)
|
||
ENDWHILE
|
||
|
||
WHILE NOT SET_CURRENT_SELECTOR_PED(SELECTOR_PED_TREVOR, FALSE)
|
||
WAIT(0)
|
||
ENDWHILE
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
SET_PED_COMP_ITEM_CURRENT_SP(PLAYER_PED_ID(), COMP_TYPE_OUTFIT, OUTFIT_P2_DEFAULT, FALSE)
|
||
SET_PED_COMP_ITEM_CURRENT_SP(PLAYER_PED_ID(), COMP_TYPE_LEGS, LEGS_P2_SWEAT_PANTS, FALSE)
|
||
SET_ENTITY_COORDS(PLAYER_PED_ID(), << 1972.5209, 3816.7981, 33.4337 >>)
|
||
SET_ENTITY_HEADING(PLAYER_PED_ID(), 210.9937)
|
||
ENDIF
|
||
|
||
IF DOES_ENTITY_EXIST(vehID_TrevorsCar)
|
||
DELETE_VEHICLE(vehID_TrevorsCar)
|
||
ENDIF
|
||
|
||
CREATE_PLAYER_VEHICLE(vehID_TrevorsCar, CHAR_TREVOR, << 1982.8802, 3807.0273, 31.2023 >>, 299.7608, FALSE, VEHICLE_TYPE_CAR)
|
||
SET_VEHICLE_ON_GROUND_PROPERLY(vehID_TrevorsCar)
|
||
|
||
IF DOES_ENTITY_EXIST(vehID_TrevorsQuad)
|
||
DELETE_VEHICLE(vehID_TrevorsQuad)
|
||
ENDIF
|
||
|
||
vehID_TrevorsQuad = CREATE_VEHICLE(BLAZER, << 1981.9261, 3829.3467, 31.3876 >>, 262.5776, FALSE, FALSE)
|
||
SET_VEHICLE_ON_GROUND_PROPERLY(vehID_TrevorsQuad)
|
||
|
||
CLEANUP_MODEL_ASSET(BODHI2, bModelRequest_Bodhi2)
|
||
CLEANUP_MODEL_ASSET(BLAZER, bModelRequest_Blazer)
|
||
CLEANUP_MODEL_ASSET(REBEL, bModelRequest_Rebel)
|
||
CLEANUP_MODEL_ASSET(GET_PLAYER_PED_MODEL(CHAR_TREVOR), bModelRequest_Trevor)
|
||
|
||
// Fade in and give control back
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
|
||
CLEAR_AREA(GET_ENTITY_COORDS(PLAYER_PED_ID()), 200.00, TRUE, TRUE)
|
||
LOAD_SCENE(GET_ENTITY_COORDS(PLAYER_PED_ID()))
|
||
|
||
IF NOT IS_SCREEN_FADED_IN()
|
||
AND NOT IS_SCREEN_FADING_IN()
|
||
DO_SCREEN_FADE_IN(1000)
|
||
ENDIF
|
||
STOP_AUDIO_SCENE("MISSION_FAILED_SCENE")
|
||
|
||
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0.0)
|
||
SET_GAMEPLAY_CAM_RELATIVE_PITCH(0.0)
|
||
|
||
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
||
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), FALSE)
|
||
TASK_CLEAR_LOOK_AT(PLAYER_PED_ID())
|
||
ENDIF
|
||
|
||
SET_MD_STAGE(MD_STAGE_TREVOR_DRIVE)
|
||
|
||
ELIF (sZSkipData.iSelectedStage = 3) // "Franklin at muscle beach"
|
||
|
||
WHILE NOT LOAD_MODEL_ASSET(GET_PLAYER_PED_MODEL(CHAR_FRANKLIN), bModelRequest_Franklin)
|
||
WAIT(0)
|
||
ENDWHILE
|
||
|
||
WHILE NOT SET_CURRENT_SELECTOR_PED(SELECTOR_PED_FRANKLIN, FALSE)
|
||
WAIT(0)
|
||
ENDWHILE
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
SET_PED_COMP_ITEM_CURRENT_SP(PLAYER_PED_ID(), COMP_TYPE_OUTFIT, OUTFIT_P1_DEFAULT, FALSE)
|
||
SET_ENTITY_COORDS(PLAYER_PED_ID(), << -1174.7980, -1573.3339, 4.3630 >>)
|
||
SET_ENTITY_HEADING(PLAYER_PED_ID(), 172.9187)
|
||
ENDIF
|
||
|
||
CLEANUP_MODEL_ASSET(GET_PLAYER_PED_MODEL(CHAR_FRANKLIN), bModelRequest_Franklin)
|
||
|
||
SET_MD_STAGE(MD_STAGE_FRANKLIN_DRIVE)
|
||
|
||
// Fade in and give control back
|
||
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
|
||
CLEAR_AREA(GET_ENTITY_COORDS(PLAYER_PED_ID()), 200.00, TRUE, TRUE)
|
||
LOAD_SCENE(GET_ENTITY_COORDS(PLAYER_PED_ID()))
|
||
|
||
IF NOT IS_SCREEN_FADED_IN()
|
||
AND NOT IS_SCREEN_FADING_IN()
|
||
DO_SCREEN_FADE_IN(1000)
|
||
ENDIF
|
||
STOP_AUDIO_SCENE("MISSION_FAILED_SCENE")
|
||
|
||
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0.0)
|
||
SET_GAMEPLAY_CAM_RELATIVE_PITCH(0.0)
|
||
|
||
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
||
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), FALSE)
|
||
TASK_CLEAR_LOOK_AT(PLAYER_PED_ID())
|
||
ENDIF
|
||
ENDIF
|
||
|
||
sZSkipData.bDoSkip = FALSE
|
||
#ENDIF
|
||
ENDIF
|
||
|
||
SET_MAGDEMO_SCENE()
|
||
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
PROC SETUP_MAGDEMO_WIDGETS()
|
||
START_WIDGET_GROUP("MAGDEMO")
|
||
ADD_WIDGET_BOOL("Display street names", bDisplayStreetNames)
|
||
ADD_WIDGET_BOOL("Display area names", bDisplayAreaNames)
|
||
ADD_WIDGET_INT_SLIDER("Ninef2 - Radio Delay (ms)", iRadioTurnOnDelay_Ninef2, 0, 10000, 100)
|
||
ADD_WIDGET_BOOL("Ninef2 - Setup", bRadioSetup_Ninef2)
|
||
ADD_WIDGET_BOOL("Kill script", bKillScript)
|
||
STOP_WIDGET_GROUP()
|
||
|
||
sZSkipData.SkipMenuStruct[0].sTxtLabel = "Michael sitting by the pool"
|
||
sZSkipData.SkipMenuStruct[1].sTxtLabel = "Michael on bicycle"
|
||
sZSkipData.SkipMenuStruct[2].sTxtLabel = "Trevor in trailer"
|
||
sZSkipData.SkipMenuStruct[3].sTxtLabel = "Franklin at muscle beach"
|
||
sZSkipData.SkipMenuStruct[4].sTxtLabel = "FBI2"
|
||
ENDPROC
|
||
|
||
PROC MAINTAIN_MAGDEMO_WIDGETS()
|
||
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_F)
|
||
IF NOT IS_CURRENTLY_ON_MISSION_OF_ANY_TYPE()
|
||
IF GET_HASH_KEY(GET_NAME_OF_SCRIPT_TO_AUTOMATICALLY_START()) != GET_HASH_KEY(GET_THIS_SCRIPT_NAME())
|
||
SET_MD_STAGE(MD_STAGE_CLEANUP)
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
IF bDisplayStreetNames
|
||
SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_STREET_NAME)
|
||
ENDIF
|
||
IF bDisplayAreaNames
|
||
SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_AREA_NAME)
|
||
ENDIF
|
||
IF bKillScript
|
||
SET_MD_STAGE(MD_STAGE_CLEANUP)
|
||
ENDIF
|
||
|
||
IF eMDStage != MD_STAGE_RESET
|
||
AND eMDStage != MD_STAGE_CLEANUP
|
||
AND NOT IS_CURRENTLY_ON_MISSION_OF_ANY_TYPE()
|
||
AND NOT IS_PED_INJURED(PLAYER_PED_ID())
|
||
AND IS_PLAYER_CONTROL_ON(PLAYER_ID())
|
||
IF LAUNCH_MISSION_STAGE_MENU(sZSkipData.SkipMenuStruct, sZSkipData.iSelectedStage, sZSkipData.iCurrentStage, FALSE, "MAGDEMO", FALSE)
|
||
sZSkipData.bDoSkip = TRUE
|
||
SET_MD_STAGE(MD_STAGE_RESET)
|
||
ENDIF
|
||
ENDIF
|
||
ENDPROC
|
||
#ENDIF
|
||
|
||
SCRIPT
|
||
|
||
/*
|
||
NOTES
|
||
|
||
-runscript=magdemo
|
||
startup.sc checks if the magdemo has been specificed and sets the g_bMagDemoActive to TRUE.
|
||
It then requests and starts this script once main_persistent.sc has been started.
|
||
main.sc no longer fades the game in if g_bMagDemoActive is set to TRUE.
|
||
player_controller.sc no longer sets a random character on startup if g_bMagDemoActive is set to TRUE.
|
||
|
||
- DO_STAGE_CREATE_INITIAL_SCENE()
|
||
This proc must wait for initial.sc to terminate for the force cleanup to be successful.
|
||
|
||
*/
|
||
|
||
PRINTLN("LAUNCHING MAGDEMO SCRIPT")
|
||
|
||
NETWORK_SET_SCRIPT_IS_SAFE_FOR_NETWORK_GAME()
|
||
|
||
IF HAS_FORCE_CLEANUP_OCCURRED(FORCE_CLEANUP_FLAG_DEBUG_MENU)
|
||
CLEANUP_SCRIPT(TRUE)
|
||
ENDIF
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
SETUP_MAGDEMO_WIDGETS()
|
||
#ENDIF
|
||
|
||
WHILE TRUE
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
MAINTAIN_MAGDEMO_WIDGETS()
|
||
#ENDIF
|
||
|
||
SWITCH eMDStage
|
||
|
||
////////////////////////////////////////////////////////////////
|
||
/// CREATE INITIAL SCENE
|
||
CASE MD_STAGE_CREATE_INITIAL_SCENE
|
||
DO_STAGE_CREATE_INITIAL_SCENE()
|
||
BREAK
|
||
|
||
////////////////////////////////////////////////////////////////
|
||
/// MICHAEL DRIVES DOWN STREET TO ROCKFORD HILLS SIGN
|
||
CASE MD_STAGE_MICHAEL_DRIVE
|
||
DO_STAGE_STAGE_MICHAEL_DRIVE()
|
||
BREAK
|
||
|
||
////////////////////////////////////////////////////////////////
|
||
/// TREVOR DRIVES AROUND SANDY SHORES TO A LIQUOR SIGN
|
||
CASE MD_STAGE_TREVOR_DRIVE
|
||
DO_STAGE_TREVOR_DRIVE()
|
||
BREAK
|
||
|
||
////////////////////////////////////////////////////////////////
|
||
/// FRANKLIN DRIVES AROUND THE CITY TOWARD VINEWOOD
|
||
CASE MD_STAGE_FRANKLIN_DRIVE
|
||
DO_STAGE_FRANKLIN_DRIVE()
|
||
BREAK
|
||
|
||
////////////////////////////////////////////////////////////////
|
||
/// TRIGGER FBI2 MISSION
|
||
CASE MD_STAGE_FBI2
|
||
DO_STAGE_FBI2()
|
||
BREAK
|
||
|
||
////////////////////////////////////////////////////////////////
|
||
/// RESET
|
||
CASE MD_STAGE_RESET
|
||
DO_STAGE_RESET()
|
||
BREAK
|
||
|
||
////////////////////////////////////////////////////////////////
|
||
/// CLEANUP
|
||
CASE MD_STAGE_CLEANUP
|
||
CLEANUP_SCRIPT(TRUE)
|
||
BREAK
|
||
ENDSWITCH
|
||
|
||
UPDATE_HINT_CAM()
|
||
|
||
UPDATE_PLAYER_PED_STATES()
|
||
|
||
// #826620 block shocking events throughout entire magdemo
|
||
SUPPRESS_SHOCKING_EVENT_TYPE_NEXT_FRAME(SHOCKING_EVENT_AFFECTS_OTHERS)
|
||
SUPPRESS_SHOCKING_EVENT_TYPE_NEXT_FRAME(SHOCKING_EVENT_POTENTIALLY_DANGEROUS)
|
||
SUPPRESS_SHOCKING_EVENT_TYPE_NEXT_FRAME(SHOCKING_EVENT_SERIOUS_DANGER)
|
||
|
||
// #739576 always suppress scenario exits
|
||
SUPPRESS_NORMAL_SCENARIO_EXITS_NEXT_FRAME()
|
||
|
||
// #725141
|
||
SUPPRESS_SCENARIO_ATTRACTION_NEXT_FRAME()
|
||
|
||
// #728489
|
||
SUPPRESS_BREAKOUT_SCENARIO_EXITS_NEXT_FRAME()
|
||
|
||
// #831289 and #824566
|
||
SUPRESS_RANDOM_EVENT_THIS_FRAME(RC_PED_PURSUE_WHEN_HIT_BY_CAR, FALSE)
|
||
SUPRESS_RANDOM_EVENT_THIS_FRAME(RC_PED_STEAL_VEHICLE, FALSE)
|
||
SUPRESS_RANDOM_EVENT_THIS_FRAME(RC_PED_JAY_WALK_LIGHTS, FALSE)
|
||
//SUPRESS_RANDOM_EVENT_THIS_FRAME(RC_COP_PURSUE_ON_FOOT_FROM_VEHICLE, FALSE)
|
||
//SUPRESS_RANDOM_EVENT_THIS_FRAME(RC_COP_PURSUE_ON_FOOT, FALSE)
|
||
//SUPRESS_RANDOM_EVENT_THIS_FRAME(RC_COP_PURSUE_VEHICLE_WARNING, FALSE)
|
||
//SUPRESS_RANDOM_EVENT_THIS_FRAME(RC_COP_PURSUE_VEHICLE_FLEE, FALSE)
|
||
SUPRESS_RANDOM_EVENT_THIS_FRAME(RC_COP_VEHICLE_DRIVING_FAST, FALSE)
|
||
|
||
// #834333
|
||
SUPPRESS_AGITATION_EVENTS_NEXT_FRAME()
|
||
|
||
|
||
WAIT(0)
|
||
|
||
ENDWHILE
|
||
ENDSCRIPT
|
||
#ENDIF
|
||
|