11951 lines
450 KiB
Python
Executable File
11951 lines
450 KiB
Python
Executable File
// *****************************************************************************************
|
|
// *****************************************************************************************
|
|
// *****************************************************************************************
|
|
//
|
|
// MISSION NAME : finale_heist1.sc
|
|
// AUTHOR : Craig Vincent /
|
|
// DESCRIPTION : finale bank heist setup. Staking the place out for entrances and
|
|
// any other means of easier access to the banks vault to retrieve
|
|
// the gold.
|
|
//
|
|
// *****************************************************************************************
|
|
// *****************************************************************************************
|
|
// *****************************************************************************************
|
|
|
|
//Compile out Title Update changes to header functions.
|
|
//Must be before includes.
|
|
//CONST_INT USE_TU_CHANGES 0 // Removed by Kenneth R.
|
|
|
|
//FH1_TOOCLOSE
|
|
|
|
//New dialogue to be implemented for finh1.dstar
|
|
//
|
|
//New roots:
|
|
//FH1_WHERE
|
|
//FH1_TIMERb
|
|
//FH1_TIMERc
|
|
//FH1_WANTED
|
|
//FH1_LOSE
|
|
//FH1_SEES
|
|
//FH1_SHOUT1
|
|
//FH1_TALK4
|
|
//FH1_COMEON
|
|
//FH1_LESWH
|
|
//FH1_PAINT
|
|
//FH1_SEECON
|
|
//FH1_GOTCON
|
|
//FH1_MESS
|
|
//FH1_SEEAIR
|
|
//FH1_BACK
|
|
//FH1_LESBACK
|
|
//FH1_AROUND
|
|
//FH1_ALERT
|
|
//FH1_TIME
|
|
//FH1_UP4
|
|
//
|
|
//FH1_TOOCLOSE
|
|
//FH1_LOSTEM
|
|
//FH1_ALERTED
|
|
//FH1_HOLEBACK
|
|
//FH1_ABOVE
|
|
//
|
|
//FH1_OKAY
|
|
//
|
|
//Please implement in script, thanks.
|
|
|
|
USING "rage_builtins.sch"
|
|
USING "globals.sch"
|
|
|
|
USING "commands_audio.sch"
|
|
USING "commands_camera.sch"
|
|
USING "commands_clock.sch"
|
|
USING "commands_debug.sch"
|
|
USING "commands_fire.sch"
|
|
USING "commands_graphics.sch"
|
|
USING "commands_hud.sch"
|
|
USING "commands_object.sch"
|
|
USING "commands_pad.sch"
|
|
USING "commands_ped.sch"
|
|
USING "commands_player.sch"
|
|
USING "commands_script.sch"
|
|
USING "commands_streaming.sch"
|
|
USING "commands_task.sch"
|
|
USING "commands_vehicle.sch"
|
|
USING "commands_interiors.sch"
|
|
|
|
USING "script_blips.sch"
|
|
Using "Locates_public.sch"
|
|
Using "select_mission_stage.sch"
|
|
USING "model_enums.sch"
|
|
USING "script_player.sch"
|
|
USING "script_misc.sch"
|
|
USING "selector_public.sch"
|
|
USING "chase_hint_cam.sch"
|
|
using "mission_stat_public.sch"
|
|
using "cutscene_public.sch"
|
|
using "clearMissionArea.sch"
|
|
USING "replay_public.sch"
|
|
using "completionpercentage_public.sch"
|
|
USING "taxi_functions.sch"
|
|
USING "timeLapse.sch"
|
|
using "stripclub_public.sch"
|
|
using "shared_hud_displays.sch"
|
|
USING "family_public.sch"
|
|
//USING "Overlay_Effects.sch"
|
|
using "RC_helper_functions.sch"
|
|
using "asset_management_public.sch"
|
|
USING "spline_cam_edit.sch"
|
|
USING "building_control_public.sch"
|
|
USING "weapons_public.sch"
|
|
USING "commands_recording.sch"
|
|
|
|
//USING "traffic_default_values.sch" // this must be included before traffic.sch
|
|
// total should not exceed 225
|
|
CONST_INT TOTAL_NUMBER_OF_TRAFFIC_CARS 150
|
|
CONST_INT TOTAL_NUMBER_OF_PARKED_CARS 25
|
|
CONST_INT TOTAL_NUMBER_OF_SET_PIECE_CARS 40
|
|
|
|
CONST_INT MAX_NUMBER_OF_TRAFFIC_CARS_PLAYING_BACK 11
|
|
CONST_INT MAX_NUMBER_OF_SET_PIECE_CARS_PLAYING_BACK 1
|
|
|
|
// this should be fine
|
|
CONST_INT MAX_NUMBER_OF_PARKED_CARS_PLAYING_BACK 10
|
|
USING "traffic.sch"
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
USING "shared_debug.sch"
|
|
USING "script_debug.sch"
|
|
#ENDIF
|
|
|
|
//-----------------------------------------------------------------------------------------------------------
|
|
// ENUMS
|
|
//-----------------------------------------------------------------------------------------------------------
|
|
ENUM MPF_MISSION_PED_FLAGS
|
|
//main player peds
|
|
mpf_michael,
|
|
mpf_franklin,
|
|
mpf_trevor,
|
|
mpf_lester,
|
|
mpf_guard,
|
|
mpf_guardF,
|
|
mpf_securityDriver,
|
|
|
|
mpf_worker1,
|
|
mpf_worker2,
|
|
mpf_worker3,
|
|
mpf_worker4,
|
|
|
|
//bank security peds
|
|
MPF_NUM_OF_PEDS
|
|
ENDENUM
|
|
ENUM MVF_MISSION_VEHICLE_FLAGS
|
|
mvf_Michael_veh,
|
|
mvf_trevor_veh,
|
|
mvf_helicopter,
|
|
mvf_security_truck,
|
|
mvf_security_truck_fol,
|
|
mvf_bulldozer1,
|
|
mvf_bulldozer2,
|
|
mvf_pol1,
|
|
mvf_pol2,
|
|
|
|
MVF_NUM_OF_VEH
|
|
ENDENUM
|
|
ENUM MSF_MISSION_STAGE_FLAGS
|
|
msf_0_strip_club,
|
|
msf_1_font_of_bank,
|
|
msf_2_back_of_bank,
|
|
msf_3_get_in_position,
|
|
msf_4_heli_follow_truck,
|
|
msf_5_CONSTRUCTION_HOLE,
|
|
msf_6_drop_off_point,
|
|
msf_7_passed,
|
|
|
|
CST_INIT,
|
|
CST_MCS_2,
|
|
CST_MCS_3,
|
|
|
|
MSF_NUM_OF_STAGES
|
|
ENDENUM
|
|
ENUM MFF_MISSION_FAIL_FLAGS
|
|
|
|
mff_debug_fail,
|
|
mff_franklin_dead_fail,
|
|
mff_trevor_dead_fail,
|
|
mff_lester_dead_fail,
|
|
mff_mike_dead_fail,
|
|
mff_too_close_fail,
|
|
mff_lost_truck,
|
|
mff_Mike_car_des,
|
|
mff_trev_car_des,
|
|
mff_heli_des,
|
|
mff_bank_knows,
|
|
mff_left_franklin,
|
|
mff_left_lester,
|
|
mff_left_mission,
|
|
mff_time,
|
|
|
|
mff_default,
|
|
MFF_NUM_OF_FAILS
|
|
ENDENUM
|
|
Enum STAGE_SWITCHSTATE
|
|
STAGESWITCH_IDLE,
|
|
STAGESWITCH_REQUESTED,
|
|
STAGESWITCH_EXITING,
|
|
STAGESWITCH_ENTERING
|
|
ENDENUM
|
|
ENUM UBERSTATE
|
|
UBER_INIT,
|
|
UBER_PLAY,
|
|
UBER_UPDATE
|
|
ENDENUM
|
|
|
|
// Hot swap status
|
|
enum SWITCHSTATE
|
|
SWITCH_NOSTATE,
|
|
SWITCH_COMPLETE,
|
|
SWITCH_IN_PROGRESS
|
|
ENDENUM
|
|
enum HELISTAGE
|
|
TO_HELI,
|
|
TO_TRUCKS
|
|
endenum
|
|
enum DIALOGUE_STATE_MIKE
|
|
DI_START_CONDITION_MIKE,
|
|
DI_TRIGGER_DIALOGUE_MIKE,
|
|
DI_RUNNING_DIALOGUE_MIKE,
|
|
DI_EXIT_DIALOGUE_MIKE
|
|
endenum
|
|
enum DIALOGUE_STATE_TREVOR
|
|
DI_START_CONDITION_TREVOR,
|
|
DI_TRIGGER_DIALOGUE_TREVOR,
|
|
DI_RUNNING_DIALOGUE_TREVOR,
|
|
DI_EXIT_DIALOGUE_TREVOR
|
|
endenum
|
|
enum INTERRUPT_ENUM
|
|
INTERRUPT_NONE,
|
|
INTERRUPT_STORE_CURRENT,
|
|
INTERRUPT_KILL_CURRENT,
|
|
INTERRUPTOR_SAFE,
|
|
INTERRUPT_RESTART_READY,
|
|
INTERRUPT_RESTART_PlAYING
|
|
endenum
|
|
enum BOTH_DIALOGUE_ENUM
|
|
BOTH_TIME_INFO,
|
|
BOTH_WARN1,
|
|
BOTH_WARN2,
|
|
BOTH_WARN3,
|
|
BOTH_WARN4,
|
|
BOTH_WARN5
|
|
endenum
|
|
enum MIKE_DIALOGUE_ENUM
|
|
M_di_TO_FRONT,
|
|
M_di_TO_BACK,
|
|
M_di_END,
|
|
M_di_NONE
|
|
endenum
|
|
enum TREV_DIALOGUE_ENUM
|
|
T_di_FILL1,
|
|
T_di_FILL2,
|
|
T_di_BRAD,
|
|
T_di_THINKING,
|
|
T_di_END,
|
|
T_di_NONE
|
|
endenum
|
|
enum ENUM_HOLE
|
|
HOLE_OBJECTIVE,
|
|
HOLE_UNSEEN,
|
|
HOLE_SEEN,
|
|
HOLE_STABLE
|
|
|
|
endenum
|
|
enum ENUM_LEST_SIDE
|
|
LEST_SLIDE,
|
|
LESTER_LEFT,
|
|
LESTER_RIGHT
|
|
ENDENUM
|
|
ENUM SWITCH_TYPE_STAGE
|
|
S_TYPE_INIT,
|
|
S_TYPE_SHORT,
|
|
S_TYPE_AUTO
|
|
ENDENUM
|
|
|
|
//-----------------------------------------------------------------------------------------------------------
|
|
// STRUCTS
|
|
//-----------------------------------------------------------------------------------------------------------
|
|
STRUCT VEHICLE_STRUCT
|
|
VEHICLE_INDEX id
|
|
BLIP_INDEX blip
|
|
endstruct
|
|
Struct PEDS_STRUCT
|
|
PED_INDEX id
|
|
BLIP_INDEX blip
|
|
SEQUENCE_INDEX seq
|
|
SCENARIO_BLOCKING_INDEX scenario_index
|
|
ENDSTRUCT
|
|
|
|
//-----------------------------------------------------------------------------------------------------------
|
|
// CONSTANTS
|
|
//-----------------------------------------------------------------------------------------------------------
|
|
CONST_INT STAGE_ENTRY 0
|
|
CONST_INT STAGE_EXIT -1
|
|
CONST_INT MAX_SPLINE_CAM_NODES 15 //used to create splines
|
|
|
|
// easier naming methods
|
|
CONST_INT MIKE_AT_SCOPE_POINT 200
|
|
CONST_INT TREV_PREP_HELI_STAGE 100
|
|
|
|
VECTOR vFRONT_BANK = <<-7.8156, -741.8263, 43.1570>>
|
|
FLOAT fHEADING_FRONT = 69.4048
|
|
VECTOR vBACK_BANK = <<-110.60891, -636.62433, 35.10708>>
|
|
FLOAT fHEADING_BACK = 343.3254
|
|
VECTOR vAIRFIELD = <<1768.99805, 3279.52417, 40.37643>>
|
|
Vector vTRUCK_START = <<1147.39539, -1718.47021, 34.71170>>
|
|
Vector vHOLE = <<25.30480, -635.79169, 30.30575>>
|
|
//-----------------------------------------------------------------------------------------------------------
|
|
// VARIABLES
|
|
//-----------------------------------------------------------------------------------------------------------
|
|
CHASE_HINT_CAM_STRUCT localChaseHintCamStruct
|
|
VEHICLE_STRUCT Vehs[MVF_NUM_OF_VEH] //holds all of the vehicles for tis level
|
|
PEDS_STRUCT peds[MPF_NUM_OF_PEDS] //holds all of the peds for this level
|
|
structPedsForConversation convo_struct //holds peds in the conversation
|
|
LOCATES_HEADER_DATA sLocatesData
|
|
BLIP_INDEX blip_objective //blip for mission objective
|
|
Camera_index cameraIndex //in game cut scene camera
|
|
camera_index camfollow
|
|
CAMERA_INDEX Camtarget
|
|
SEQUENCE_INDEX seq //used to create AI sequence
|
|
STREAMVOL_ID vol_construction
|
|
|
|
OBJECT_INDEX objdummy
|
|
object_index objCam
|
|
|
|
HELISTAGE heli_switch
|
|
|
|
INTERIOR_INSTANCE_INDEX interior_tunnel // interiors
|
|
INTERIOR_INSTANCE_INDEX interior_constuction
|
|
INTERIOR_INSTANCE_INDEX interior_carpark
|
|
|
|
//relationship
|
|
REL_GROUP_HASH rel_buddy
|
|
REL_GROUP_HASH rel_guard
|
|
|
|
//time of day variables
|
|
structTimelapse sTimelapse
|
|
|
|
//-------------------------------------------hot swap stuff--------------------------------------------------------
|
|
SELECTOR_PED_STRUCT sSelectorPeds //struct to hold the peds for hotswap
|
|
SELECTOR_CAM_STRUCT sCamDetails //camera for hotswap
|
|
SWITCH_TYPE_STAGE eSwitchTypeStage
|
|
INT iLastSwapTimer
|
|
bool bHotSwap = false //Toggle HotSwap
|
|
float fSwitchTimeRec
|
|
bool bLongSpline
|
|
int iUnfreezeDelay
|
|
int idescentstage
|
|
|
|
bool bcustomswitch_mike_to_trev_inCar = false
|
|
bool bcustomswitch_mike_to_trev_inHeli = false
|
|
bool bcustomswitch_trev_to_mike = false
|
|
|
|
//-----------------------------------------------------------------------------------------------------------------
|
|
//---------------------------Bank CS / timings--------------------------------
|
|
int iWindowTimer
|
|
bool bHeliStageLoaded = false
|
|
|
|
bool bFCSanimsLoaded = false
|
|
|
|
//---------------------------trucks--------------------------------
|
|
bool bTruckSkipForward = false
|
|
int iInFailTimer
|
|
int iCountdownAudioEvent
|
|
int iGetCloser
|
|
bool bFailTimerStarted = true
|
|
int iSPOTTEDTIME
|
|
|
|
bool wSkippedUber
|
|
bool wSkip
|
|
|
|
INT iRoadBlock_1
|
|
INT iRoadBlock_2
|
|
INT iRoadBlock_3
|
|
INT iRoadBlock_4
|
|
INT iRoadBlock_5
|
|
INT iRoadBlock_6
|
|
INT iRoadBlock_7
|
|
INT iRoadBlock_8
|
|
|
|
//--------------------------- hole --------------------------------
|
|
int iHoleTimer
|
|
int iHoleStage // film hole
|
|
int iONSCREENTIME
|
|
int iCloserTimer
|
|
int iHOLE_INFO_STAGE = 0
|
|
BOOL b_get_near_help = FALSE
|
|
BOOL b_film_hole_help_reminder = FALSE
|
|
|
|
//--------------------------helper variable-----------------------
|
|
int i
|
|
int iDelay
|
|
float fDist //distance between two points
|
|
float wantedMultiplier
|
|
bool b_cutscene_loaded = false
|
|
bool bMissedBackCS = false
|
|
bool bsetEndCam = false
|
|
//------------------------------stat helpers-------------------------
|
|
int i_tunnle_check
|
|
|
|
//-------------------------------cam---------------------------------
|
|
float fshakeAmp
|
|
bool bstopshake = false
|
|
int ishake
|
|
int iFrontCS_stage // font of bank cs switch
|
|
CAM_VIEW_MODE eSavedMode = NUM_CAM_VIEW_MODES
|
|
enumCharacterList eSavedChar
|
|
|
|
CHASE_HINT_CAM_STRUCT sHintCamStruct
|
|
bool bHint_camOn = false
|
|
|
|
SCALEFORM_INDEX sfMov
|
|
int iSFstage = 0
|
|
//---------------------------lester cam footage--------------------------
|
|
bool bLesterCam = false
|
|
int iCamTimer
|
|
int iLESTERCAM_stage
|
|
int hintCheckTimer
|
|
int ihintstage
|
|
float camPrevFOV
|
|
int iFaceHintTimer
|
|
INT iFrontBankDelay = -1
|
|
|
|
ENUM_LEST_SIDE eLESTER_side = LESTER_LEFT
|
|
|
|
//camera attache bool
|
|
bool battachedCam
|
|
|
|
//------------------------------- Audio ---------------------------------
|
|
int camhum = GET_SOUND_ID()
|
|
int camzoom = GET_SOUND_ID()
|
|
bool bAUDIOStreamLoaded = false
|
|
bool bplayingstream = false
|
|
//--------------------text related----------------------------
|
|
//bool bPrintDisplayed = false
|
|
bool bfirstwarningCL = true
|
|
bool b_displayed_get_heli = false
|
|
bool bheliPrintDisplayed = false
|
|
bool bLeftbuddyprint = false
|
|
bool bLeftArea_printed = false
|
|
|
|
//---------------------- Camera Crosshair --------------------
|
|
//FLOAT fCross1HairHeight = 0.0020
|
|
//FLOAT fCross1HairWidth = 0.0300
|
|
//FLOAT fCross2HairHeight = 0.0440
|
|
//FLOAT fCross2HairWidth = 0.0020
|
|
//
|
|
//FLOAT fCursorHeight = 0.013
|
|
//FLOAT fCursorWidth = 0.013
|
|
//FLOAT fCursorX1 = 0.4600
|
|
//FLOAT fCursorY1 = 0.4570
|
|
//FLOAT fCursorX2 = 0.5400
|
|
//FLOAT fCursorY2 = 0.4570
|
|
//FLOAT fCursorX3 = 0.4600
|
|
//FLOAT fCursorY3 = 0.5480
|
|
//FLOAT fCursorX4 = 0.5400
|
|
//FLOAT fCursorY4 = 0.5480
|
|
//
|
|
//INT iRedBlink = 0
|
|
|
|
//--------------------Dialogue related----------------------------
|
|
DIALOGUE_STATE_MIKE eDialogue_stateM = DI_START_CONDITION_MIKE
|
|
DIALOGUE_STATE_TREVOR eDialogue_stateT = DI_START_CONDITION_TREVOR
|
|
BOTH_DIALOGUE_ENUM eBOTH_dialogue
|
|
TREV_DIALOGUE_ENUM eTREV_Dialogue
|
|
MIKE_DIALOGUE_ENUM eMike_dialogue
|
|
|
|
INTERRUPT_ENUM eInterruptstage
|
|
TEXT_LABEL_23 lbl_Interrupt = ""
|
|
TEXT_LABEL_23 lbl_root = ""
|
|
int iInterrupt_restart_delay
|
|
const_int INTERRUPT_RESTART_DELAY 2000
|
|
|
|
|
|
TEXT_LABEL_23 lbl_TREVSwitchInterrupt = ""
|
|
TEXT_LABEL_23 lbl_TREVSwitchroot = ""
|
|
bool b_TREVSpeechSwitchStopped = false
|
|
TEXT_LABEL_23 lbl_MIKESwitchInterrupt = ""
|
|
TEXT_LABEL_23 lbl_MIKESwitchroot = ""
|
|
bool b_MIKESpeechSwitchStopped = false
|
|
|
|
|
|
int iDialogueTimer
|
|
bool bShowObjective = false
|
|
|
|
bool bDialoguePlayed = false
|
|
bool bPrisonWarning = false
|
|
bool b_convo_paused = false
|
|
bool bFailedConvo = false
|
|
|
|
//--------------------FIND HOLE STAGE----------------------------
|
|
ENUM_HOLE eholestage = HOLE_UNSEEN
|
|
bool bFrankHELP1 = false
|
|
bool b_create_workers = true
|
|
//bool bworkersloaded = false
|
|
bool bCloserLest = true
|
|
//----------------------- flow helpers ----------------------------
|
|
|
|
bool bheliset = false
|
|
bool btimeReset = false
|
|
bool bTunnel = false
|
|
bool bWrongSite = false
|
|
bool bSeenHole = false
|
|
|
|
//----------------------- cs ----------------------------
|
|
bool bcs_mike = false
|
|
bool bcs_mikecar = false
|
|
bool bcs_trev = false
|
|
bool bcs_frank = false
|
|
bool bcs_lester = false
|
|
bool bcs_cam = false
|
|
bool bcs_sec = false
|
|
|
|
bool bSwitchedToMike = false
|
|
//---------------ANIM ------
|
|
|
|
//ACHIEVEMENTS
|
|
BOOL bBridge = FALSE
|
|
|
|
int iSyncScene
|
|
|
|
//uber recording
|
|
UBERSTATE uber_state
|
|
Float fCurrentPlaybackTime
|
|
FLOAT fPlaybackSpeed
|
|
//int iRecordingProgress = 0 // used for recording the uber stuff only temp
|
|
|
|
|
|
//============================== streaming ==============================
|
|
ASSET_MANAGEMENT_DATA sAssetData
|
|
CUTSCENE_PED_VARIATION sCutscenePedVariationRegister[MPF_NUM_OF_PEDS]
|
|
|
|
bool bloadDozer = false
|
|
bool bcreateDozers = false
|
|
bool bloadGuards = false
|
|
bool bcreateGuards = false
|
|
|
|
//============================== ============================== ==============================
|
|
|
|
//Stage Management and skip stuff
|
|
STAGE_SWITCHSTATE stageswitch //current switching status
|
|
INT mission_stage //current stage
|
|
INT mission_substage //current substage
|
|
INT requestedStage //the mission stage requested by a mission_stage switch
|
|
INT iStageTimer //timer used for debug
|
|
Bool bDoSkip //trigger the skip
|
|
INT iSkipToStage //the stage to skip to
|
|
bool b_zskipped = false
|
|
|
|
#if IS_DEBUG_BUILD
|
|
MissionStageMenuTextStruct zMenuNames[MSF_NUM_OF_STAGES]
|
|
WIDGET_GROUP_ID widget_debug_cv
|
|
vector vdebugcamOFfset = <<-6.32,20,6>>
|
|
int iheliWidget = enum_to_int(heli_switch)
|
|
int wDialoguestage = enum_to_int(eDialogue_stateM)
|
|
int wBOTH_dialogue = ENUM_TO_INT(eBOTH_dialogue)
|
|
int wTREV_Dialogue = ENUM_TO_INT(eTREV_Dialogue)
|
|
int wMike_dialogue = ENUM_TO_INT(eMike_dialogue)
|
|
|
|
bool wb_TREVSpeechSwitchStopped = b_TREVSpeechSwitchStopped
|
|
bool wb_MIKESpeechSwitchStopped = b_MIKESpeechSwitchStopped
|
|
#endif
|
|
|
|
|
|
//SWITCH CAM VARIABLES AND PROCEDURES
|
|
|
|
ENUM FINAL_HEIST_SWITCH_CAM_STATE
|
|
SWITCH_CAM_IDLE,
|
|
SWITCH_CAM_REQUEST_ASSETS,
|
|
SWITCH_CAM_SETUP_GAMEPLAY,
|
|
SWITCH_CAM_SETUP_SPLINE_1,
|
|
SWITCH_CAM_PLAYING_SPLINE_1,
|
|
SWITCH_CAM_SHUTDOWN_SPLINE_1,
|
|
SWITCH_CAM_SETUP_SPLINE_2,
|
|
SWITCH_CAM_PLAYING_CODE_CAM,
|
|
SWITCH_CAM_PLAYING_SPLINE_2,
|
|
SWITCH_CAM_SHUTDOWN_SPLINE_2,
|
|
SWITCH_CAM_RETURN_TO_GAMEPLAY
|
|
ENDENUM
|
|
FINAL_HEIST_SWITCH_CAM_STATE eSwitchCamState = SWITCH_CAM_IDLE
|
|
|
|
SWITCH_CAM_STRUCT scsSwitchCamMichaelToTrevorInTruck
|
|
SWITCH_CAM_STRUCT scsSwitchCamMichaelToTrevorInHeli
|
|
SWITCH_CAM_STRUCT scsSwitchCamTrevorInHeliToMichael
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
//BOOL bSwitchCamDebugScenarioEnabled = TRUE
|
|
//BOOL bResetDebugScenario = FALSE
|
|
#ENDIF
|
|
|
|
FLOAT fGameplayCamHeadingMichaelToTrevorInCar = 12.0//-44.0
|
|
FLOAT fGameplayCamPitchMichaelToTrevorInCar = 3.0
|
|
|
|
VECTOR vTrevPreSwitchLoc
|
|
|
|
FLOAT fGameplayCamHeadingMichaelToTrevorInHeli = 0.0
|
|
FLOAT fGameplayCamPitchMichaelToTrevorInHeli = 0.0
|
|
|
|
VECTOR vMichaelToTrevorTruck_TrevLocation = <<1865.341, 2265.841, 55.65>>
|
|
FLOAT fMichaelToTrevorTruck_TrevHeading = 80.0
|
|
|
|
INT iMichealToTrevorTruck_PeeLoopDuration = 1400
|
|
|
|
INT iSyncSceneTrevPiss
|
|
|
|
VECTOR vMichaelToTrevorTruck_TruckLocation = (<<1877.9, 2257.5, 54.6>>)
|
|
FLOAT fMichaelToTrevorTruck_TruckHeading = 6.0
|
|
|
|
BOOL bRestoreHighLOD = FALSE
|
|
BOOL bMichaelCarToTrevTruck_DestGeoRequested
|
|
|
|
FLOAT fMichaelToTrevorTruck_SwitchCamLoadSphereRadius = 15.0
|
|
BOOL bMichaelCarToTrevTruck_TrevorPeeAnimHappening
|
|
BOOL bMichaelCarToTrevTruck_TrevorTransitionedToStand
|
|
|
|
FLOAT fMikeToTrevTruck_CharSwitchPhase = 0.18
|
|
BOOL bPushInToFirstPerson
|
|
|
|
FLOAT fPlaySwitchConvoMike = 0.055
|
|
FLOAT fPlaySwitchConvoTrev = 0.27
|
|
|
|
BOOL bHasMikeSwitchConvoPlayed
|
|
BOOL bHasTrevSwitchConvoPlayed
|
|
BOOL bTrevor_PeeFXHasStarted
|
|
BOOL bTrevor_PeeHasStopped
|
|
PTFX_ID PTfx_Trevor_Pee
|
|
FLOAT fTrevor_PeeFX_Stop_Phase = 0.33
|
|
VECTOR vTrevor_PeeFX_BoneOffset = <<0.15, 0.17, 0.0>>
|
|
VECTOR vTrevor_PeeFX_BoneRot = <<-90.0, 0.0, 0.0>>
|
|
FLOAT fMikeCarToTrevTruck_TransitionToPlayerLocoPhase = 0.65
|
|
|
|
BOOL bTrevHeliMichaelCar_DestGeoRequestEnabled = TRUE
|
|
BOOL bTrevHeliToMichaelCar_DestGeoRequested
|
|
|
|
BOOL bTrevHeliMichaelCar_EarlyFocusPedSwitchEnabled = TRUE
|
|
FLOAT fTrevHeliToMichaelCar_DestGeoRequested_Phase = 0.4
|
|
FLOAT fTrevHeliToMichaelCar_SwitchCamLoadSphereRadius = 7.0
|
|
VECTOR vTrevHeliToMichaelCar_SwitchCamLoadSphereLocation = <<-110.9, -636.6, 35.4>>
|
|
|
|
#if IS_DEBUG_BUILD
|
|
BOOL bTrevHeliToMichaelCar_TeleportToPos
|
|
BOOL bDEBUG_IsInIsolatedDebugMode = FALSE //[MF] This should always be set to FALSE on a submitted file.
|
|
#ENDIF
|
|
|
|
BOOL bMichaelCarToTrevHeli_UseCustomSwitch
|
|
BOOL bMichaelCarToTrevHeli_AnimsStarted
|
|
BOOL bCustomSwitchCamRendering_HeliToCar
|
|
FLOAT fMichaelCarToTrevHeli_Low_LOD_Level = 0.6
|
|
FLOAT fMichaelCarToTrevHeli_SwitchCamLowLodFrustrumDist = 2500.0
|
|
STREAMVOL_ID sid_MichaelToTrevHeli_LowLODFrustrum
|
|
STREAMVOL_ID sid_TrevHeliToMichael_BankRear
|
|
BOOL bTrevHeliToMichaelCar_StopRequestGeo
|
|
TAKE_CONTROL_OF_PED_FLAGS PlayerSwitchTakeControlFlag = TCF_NONE //[MF] This is to fix a nasty animation pop when we do the custom switch from Trevor in the heli to Michael
|
|
|
|
STRING sSwitchAnimLibraryCarToTruck_PissAnims = "missbigscore1Switch_Trevor_Piss"
|
|
STRING sSwitchAnimLibrary_MikeAndFrankAnims = "missbigscore1leadinoutbss_1_mcs_2"
|
|
STRING sSwitchAnimLibraryTrevToCar_HeliAnims = "missswitch"
|
|
|
|
|
|
//INT iWooshIn_ID = -1
|
|
//INT iWooshOut_ID = -1
|
|
//BOOL bWooshOut = FALSE
|
|
|
|
BOOL bPlayerControlGiven
|
|
|
|
BOOL bIgnoreNoPlayerControl
|
|
|
|
//[MF] Debug Booleans
|
|
#IF IS_DEBUG_BUILD
|
|
BOOL bSetupTrevorToMichaelHeliSwitch
|
|
BOOL bSetupMichaelToTrevorHeliSwitch
|
|
BOOL bDEBUG_SwitchCamIsActive
|
|
#ENDIF
|
|
|
|
Func bool Do_forced_hotswap(SELECTOR_SLOTS_ENUM targetPed)
|
|
if MAKE_SELECTOR_PED_SELECTION(sSelectorPeds,targetPed)
|
|
sCamDetails.pedTo = sSelectorPeds.pedID[targetPed]
|
|
sCamDetails.bRun = TRUE
|
|
return true
|
|
endif
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL IS_THIS_CONVERSATION_PLAYING(STRING sRoot)
|
|
IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
TEXT_LABEL txtRoot = GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_ROOT()
|
|
|
|
IF ARE_STRINGS_EQUAL(sRoot, txtRoot)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
PROC SETUP_SPLINE_CAM_NODE_ARRAY_MICHAEL_TO_TREVOR_IN_TRUCK(SWITCH_CAM_STRUCT &thisSwitchCam, PED_INDEX &piMichael, PED_INDEX &piTrevor)
|
|
CDEBUG3LN(DEBUG_MISSION, "SETUP_SPLINE_CAM_NODE_ARRAY_MICHAEL_TO_TREVOR_IN_TRUCK_OUTRO")
|
|
|
|
IF NOT thisSwitchCam.bInitialized
|
|
|
|
//--- Start of Cam Data ---
|
|
|
|
|
|
thisSwitchCam.nodes[0].SwitchCamType = SWITCH_CAM_OLD_SYSTEM
|
|
thisSwitchCam.nodes[0].iForceCamPointAtEntityIndex = -1
|
|
thisSwitchCam.nodes[0].bIsGameplayCamCopy = FALSE
|
|
thisSwitchCam.nodes[0].iNodeTime = 0
|
|
thisSwitchCam.nodes[0].vNodePos = <<-2.3136, 2.2717, 0.7501>>
|
|
thisSwitchCam.nodes[0].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[0].fNodeOffsetDist = 0.0000
|
|
thisSwitchCam.nodes[0].fNodeVerticleOffset = 0.0000
|
|
thisSwitchCam.nodes[0].bAttachToOriginPed = FALSE
|
|
thisSwitchCam.nodes[0].vNodeDir = <<-3.7170, -0.0056, -143.2630>>
|
|
thisSwitchCam.nodes[0].bPointAtEntity = FALSE
|
|
thisSwitchCam.nodes[0].bPointAtOffsetIsRelative = FALSE
|
|
thisSwitchCam.nodes[0].bAttachOffsetIsRelative = TRUE
|
|
thisSwitchCam.nodes[0].fNodeFOV = 30.0000
|
|
thisSwitchCam.nodes[0].vClonedNodeOffset = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[0].iNodeToClone = 0
|
|
thisSwitchCam.nodes[0].NodeTimePostFX_Type = NO_EFFECT
|
|
thisSwitchCam.nodes[0].fNodeTimePostFXBlendTime = 0.0000
|
|
thisSwitchCam.nodes[0].fNodeTimePostFXTimeOffset = 0.0000
|
|
thisSwitchCam.nodes[0].fNodeMotionBlur = 0.0000
|
|
thisSwitchCam.nodes[0].NodeCamShakeType = CAM_SHAKE_MEDIUM
|
|
thisSwitchCam.nodes[0].fNodeCamShake = 0.3000
|
|
thisSwitchCam.nodes[0].iCamEaseType = 1
|
|
thisSwitchCam.nodes[0].fCamEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[0].fCamNodeVelocityScale = 0.0000
|
|
thisSwitchCam.nodes[0].bCamEaseForceLinear = TRUE
|
|
thisSwitchCam.nodes[0].bCamEaseForceLevel = FALSE
|
|
thisSwitchCam.nodes[0].fTimeScale = 1.0000
|
|
thisSwitchCam.nodes[0].iTimeScaleEaseType = 0
|
|
thisSwitchCam.nodes[0].fTimeScaleEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[0].bFlashEnabled = FALSE
|
|
thisSwitchCam.nodes[0].SCFE_FlashEffectUsed = SCFE_CODE_FLASH
|
|
thisSwitchCam.nodes[0].fMinExposure = 0.0000
|
|
thisSwitchCam.nodes[0].fMaxExposure = 0.0000
|
|
thisSwitchCam.nodes[0].iRampUpDuration = 0
|
|
thisSwitchCam.nodes[0].iRampDownDuration = 0
|
|
thisSwitchCam.nodes[0].iHoldDuration = 0
|
|
thisSwitchCam.nodes[0].fFlashNodePhaseOffset = 0.0000
|
|
thisSwitchCam.nodes[0].bIsLowDetailNode = TRUE
|
|
thisSwitchCam.nodes[0].bUseCustomDOF = FALSE
|
|
thisSwitchCam.nodes[0].NodeDOF_Info.fDOF_NearDOF = 0.0000
|
|
thisSwitchCam.nodes[0].NodeDOF_Info.fDOF_FarDOF = 0.0000
|
|
thisSwitchCam.nodes[0].NodeDOF_Info.fDOF_EffectStrength = 0.0000
|
|
|
|
thisSwitchCam.nodes[1].SwitchCamType = SWITCH_CAM_OLD_SYSTEM
|
|
thisSwitchCam.nodes[1].iForceCamPointAtEntityIndex = -1
|
|
thisSwitchCam.nodes[1].bIsGameplayCamCopy = FALSE
|
|
thisSwitchCam.nodes[1].iNodeTime = 3500
|
|
thisSwitchCam.nodes[1].vNodePos = <<-1.6297, 1.5037, 0.6884>>
|
|
thisSwitchCam.nodes[1].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[1].fNodeOffsetDist = 0.0000
|
|
thisSwitchCam.nodes[1].fNodeVerticleOffset = 0.0000
|
|
thisSwitchCam.nodes[1].bAttachToOriginPed = FALSE
|
|
thisSwitchCam.nodes[1].vNodeDir = <<-3.7170, -0.0056, -143.2630>>
|
|
thisSwitchCam.nodes[1].bPointAtEntity = FALSE
|
|
thisSwitchCam.nodes[1].bPointAtOffsetIsRelative = FALSE
|
|
thisSwitchCam.nodes[1].bAttachOffsetIsRelative = TRUE
|
|
thisSwitchCam.nodes[1].fNodeFOV = 30.0000
|
|
thisSwitchCam.nodes[1].vClonedNodeOffset = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[1].iNodeToClone = 0
|
|
thisSwitchCam.nodes[1].NodeTimePostFX_Type = NO_EFFECT
|
|
thisSwitchCam.nodes[1].fNodeTimePostFXBlendTime = 1.0000
|
|
thisSwitchCam.nodes[1].fNodeTimePostFXTimeOffset = 0.0000
|
|
thisSwitchCam.nodes[1].fNodeMotionBlur = 0.0000
|
|
thisSwitchCam.nodes[1].NodeCamShakeType = CAM_SHAKE_MEDIUM
|
|
thisSwitchCam.nodes[1].fNodeCamShake = 0.3000
|
|
thisSwitchCam.nodes[1].iCamEaseType = 2
|
|
thisSwitchCam.nodes[1].fCamEaseScaler = 0.6000
|
|
thisSwitchCam.nodes[1].fCamNodeVelocityScale = 0.0000
|
|
thisSwitchCam.nodes[1].bCamEaseForceLinear = TRUE
|
|
thisSwitchCam.nodes[1].bCamEaseForceLevel = FALSE
|
|
thisSwitchCam.nodes[1].fTimeScale = 1.0000
|
|
thisSwitchCam.nodes[1].iTimeScaleEaseType = 0
|
|
thisSwitchCam.nodes[1].fTimeScaleEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[1].bFlashEnabled = TRUE
|
|
thisSwitchCam.nodes[1].SCFE_FlashEffectUsed = SCFE_SwitchShortMichaelIn
|
|
thisSwitchCam.nodes[1].fMinExposure = 0.0000
|
|
thisSwitchCam.nodes[1].fMaxExposure = 0.0000
|
|
thisSwitchCam.nodes[1].iRampUpDuration = 0
|
|
thisSwitchCam.nodes[1].iRampDownDuration = 0
|
|
thisSwitchCam.nodes[1].iHoldDuration = 0
|
|
thisSwitchCam.nodes[1].fFlashNodePhaseOffset = 1.0000
|
|
thisSwitchCam.nodes[1].bIsLowDetailNode = TRUE
|
|
thisSwitchCam.nodes[1].bUseCustomDOF = FALSE
|
|
thisSwitchCam.nodes[1].NodeDOF_Info.fDOF_NearDOF = 0.0000
|
|
thisSwitchCam.nodes[1].NodeDOF_Info.fDOF_FarDOF = 0.0000
|
|
thisSwitchCam.nodes[1].NodeDOF_Info.fDOF_EffectStrength = 0.0000
|
|
|
|
thisSwitchCam.nodes[2].SwitchCamType = SWITCH_CAM_OLD_SYSTEM
|
|
thisSwitchCam.nodes[2].iForceCamPointAtEntityIndex = -1
|
|
thisSwitchCam.nodes[2].bIsGameplayCamCopy = FALSE
|
|
thisSwitchCam.nodes[2].iNodeTime = 600
|
|
thisSwitchCam.nodes[2].vNodePos = <<-4.6983, -2.6296, 0.6944>>
|
|
thisSwitchCam.nodes[2].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[2].fNodeOffsetDist = 0.0000
|
|
thisSwitchCam.nodes[2].fNodeVerticleOffset = 0.0000
|
|
thisSwitchCam.nodes[2].bAttachToOriginPed = FALSE
|
|
thisSwitchCam.nodes[2].vNodeDir = <<-3.7170, -0.0056, -143.2630>>
|
|
thisSwitchCam.nodes[2].bPointAtEntity = FALSE
|
|
thisSwitchCam.nodes[2].bPointAtOffsetIsRelative = FALSE
|
|
thisSwitchCam.nodes[2].bAttachOffsetIsRelative = TRUE
|
|
thisSwitchCam.nodes[2].fNodeFOV = 30.0000
|
|
thisSwitchCam.nodes[2].vClonedNodeOffset = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[2].iNodeToClone = 0
|
|
thisSwitchCam.nodes[2].NodeTimePostFX_Type = NO_EFFECT
|
|
thisSwitchCam.nodes[2].fNodeTimePostFXBlendTime = 1.0000
|
|
thisSwitchCam.nodes[2].fNodeTimePostFXTimeOffset = 0.0000
|
|
thisSwitchCam.nodes[2].fNodeMotionBlur = 0.4190
|
|
thisSwitchCam.nodes[2].NodeCamShakeType = CAM_SHAKE_MEDIUM
|
|
thisSwitchCam.nodes[2].fNodeCamShake = 0.1000
|
|
thisSwitchCam.nodes[2].iCamEaseType = 0
|
|
thisSwitchCam.nodes[2].fCamEaseScaler = 1.0000
|
|
thisSwitchCam.nodes[2].fCamNodeVelocityScale = 0.0000
|
|
thisSwitchCam.nodes[2].bCamEaseForceLinear = TRUE
|
|
thisSwitchCam.nodes[2].bCamEaseForceLevel = FALSE
|
|
thisSwitchCam.nodes[2].fTimeScale = 1.0000
|
|
thisSwitchCam.nodes[2].iTimeScaleEaseType = 0
|
|
thisSwitchCam.nodes[2].fTimeScaleEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[2].bFlashEnabled = TRUE
|
|
thisSwitchCam.nodes[2].SCFE_FlashEffectUsed = SCFE_SwitchShortTrevorMid
|
|
thisSwitchCam.nodes[2].fMinExposure = 0.0000
|
|
thisSwitchCam.nodes[2].fMaxExposure = 0.0000
|
|
thisSwitchCam.nodes[2].iRampUpDuration = 0
|
|
thisSwitchCam.nodes[2].iRampDownDuration = 0
|
|
thisSwitchCam.nodes[2].iHoldDuration = 0
|
|
thisSwitchCam.nodes[2].fFlashNodePhaseOffset = 0.2000
|
|
thisSwitchCam.nodes[2].bIsLowDetailNode = TRUE
|
|
thisSwitchCam.nodes[2].bUseCustomDOF = FALSE
|
|
thisSwitchCam.nodes[2].NodeDOF_Info.fDOF_NearDOF = 0.0000
|
|
thisSwitchCam.nodes[2].NodeDOF_Info.fDOF_FarDOF = 0.0000
|
|
thisSwitchCam.nodes[2].NodeDOF_Info.fDOF_EffectStrength = 0.0000
|
|
|
|
thisSwitchCam.nodes[3].bIsCamCutNode = TRUE
|
|
|
|
thisSwitchCam.nodes[4].SwitchCamType = SWITCH_CAM_WORLD_POS
|
|
thisSwitchCam.nodes[4].iForceCamPointAtEntityIndex = -1
|
|
thisSwitchCam.nodes[4].bIsGameplayCamCopy = FALSE
|
|
thisSwitchCam.nodes[4].iNodeTime = 0
|
|
thisSwitchCam.nodes[4].vNodePos = <<1866.3777, 2262.2773, 55.9814>>
|
|
thisSwitchCam.nodes[4].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[4].fNodeOffsetDist = 0.0000
|
|
thisSwitchCam.nodes[4].fNodeVerticleOffset = 0.0000
|
|
thisSwitchCam.nodes[4].bAttachToOriginPed = FALSE
|
|
thisSwitchCam.nodes[4].vNodeDir = <<-6.0926, 0.0006, 57.3604>>
|
|
thisSwitchCam.nodes[4].bPointAtEntity = FALSE
|
|
thisSwitchCam.nodes[4].bPointAtOffsetIsRelative = FALSE
|
|
thisSwitchCam.nodes[4].bAttachOffsetIsRelative = FALSE
|
|
thisSwitchCam.nodes[4].fNodeFOV = 40.0000
|
|
thisSwitchCam.nodes[4].vClonedNodeOffset = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[4].iNodeToClone = 0
|
|
thisSwitchCam.nodes[4].NodeTimePostFX_Type = NO_EFFECT
|
|
thisSwitchCam.nodes[4].fNodeTimePostFXBlendTime = 1.0000
|
|
thisSwitchCam.nodes[4].fNodeTimePostFXTimeOffset = 0.0000
|
|
thisSwitchCam.nodes[4].fNodeMotionBlur = 0.3000
|
|
thisSwitchCam.nodes[4].NodeCamShakeType = CAM_SHAKE_MEDIUM
|
|
thisSwitchCam.nodes[4].fNodeCamShake = 0.2000
|
|
thisSwitchCam.nodes[4].iCamEaseType = 1
|
|
thisSwitchCam.nodes[4].fCamEaseScaler = 0.3000
|
|
thisSwitchCam.nodes[4].fCamNodeVelocityScale = 0.0000
|
|
thisSwitchCam.nodes[4].bCamEaseForceLinear = TRUE
|
|
thisSwitchCam.nodes[4].bCamEaseForceLevel = FALSE
|
|
thisSwitchCam.nodes[4].fTimeScale = 1.0000
|
|
thisSwitchCam.nodes[4].iTimeScaleEaseType = 0
|
|
thisSwitchCam.nodes[4].fTimeScaleEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[4].bFlashEnabled = FALSE
|
|
thisSwitchCam.nodes[4].SCFE_FlashEffectUsed = SCFE_CODE_FLASH
|
|
thisSwitchCam.nodes[4].fMinExposure = 0.0000
|
|
thisSwitchCam.nodes[4].fMaxExposure = 0.0000
|
|
thisSwitchCam.nodes[4].iRampUpDuration = 0
|
|
thisSwitchCam.nodes[4].iRampDownDuration = 0
|
|
thisSwitchCam.nodes[4].iHoldDuration = 0
|
|
thisSwitchCam.nodes[4].fFlashNodePhaseOffset = 0.0000
|
|
thisSwitchCam.nodes[4].bIsLowDetailNode = TRUE
|
|
thisSwitchCam.nodes[4].bUseCustomDOF = FALSE
|
|
thisSwitchCam.nodes[4].NodeDOF_Info.fDOF_NearDOF = 0.0000
|
|
thisSwitchCam.nodes[4].NodeDOF_Info.fDOF_FarDOF = 0.0000
|
|
thisSwitchCam.nodes[4].NodeDOF_Info.fDOF_EffectStrength = 0.0000
|
|
|
|
thisSwitchCam.nodes[5].SwitchCamType = SWITCH_CAM_WORLD_POS
|
|
thisSwitchCam.nodes[5].iForceCamPointAtEntityIndex = -1
|
|
thisSwitchCam.nodes[5].bIsGameplayCamCopy = FALSE
|
|
thisSwitchCam.nodes[5].iNodeTime = 600
|
|
thisSwitchCam.nodes[5].vNodePos = <<1867.2435, 2263.7412, 55.9814>>
|
|
thisSwitchCam.nodes[5].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[5].fNodeOffsetDist = 0.0000
|
|
thisSwitchCam.nodes[5].fNodeVerticleOffset = 0.0000
|
|
thisSwitchCam.nodes[5].bAttachToOriginPed = FALSE
|
|
thisSwitchCam.nodes[5].vNodeDir = <<-6.0926, 0.0006, 57.3604>>
|
|
thisSwitchCam.nodes[5].bPointAtEntity = FALSE
|
|
thisSwitchCam.nodes[5].bPointAtOffsetIsRelative = FALSE
|
|
thisSwitchCam.nodes[5].bAttachOffsetIsRelative = FALSE
|
|
thisSwitchCam.nodes[5].fNodeFOV = 40.0000
|
|
thisSwitchCam.nodes[5].vClonedNodeOffset = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[5].iNodeToClone = 0
|
|
thisSwitchCam.nodes[5].NodeTimePostFX_Type = NO_EFFECT
|
|
thisSwitchCam.nodes[5].fNodeTimePostFXBlendTime = 0.0000
|
|
thisSwitchCam.nodes[5].fNodeTimePostFXTimeOffset = 0.0000
|
|
thisSwitchCam.nodes[5].fNodeMotionBlur = 0.3310
|
|
thisSwitchCam.nodes[5].NodeCamShakeType = CAM_SHAKE_MEDIUM
|
|
thisSwitchCam.nodes[5].fNodeCamShake = 0.2000
|
|
thisSwitchCam.nodes[5].iCamEaseType = 0
|
|
thisSwitchCam.nodes[5].fCamEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[5].fCamNodeVelocityScale = 0.0000
|
|
thisSwitchCam.nodes[5].bCamEaseForceLinear = TRUE
|
|
thisSwitchCam.nodes[5].bCamEaseForceLevel = FALSE
|
|
thisSwitchCam.nodes[5].fTimeScale = 1.0000
|
|
thisSwitchCam.nodes[5].iTimeScaleEaseType = 0
|
|
thisSwitchCam.nodes[5].fTimeScaleEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[5].bFlashEnabled = FALSE
|
|
thisSwitchCam.nodes[5].SCFE_FlashEffectUsed = SCFE_CODE_FLASH
|
|
thisSwitchCam.nodes[5].fMinExposure = 0.0000
|
|
thisSwitchCam.nodes[5].fMaxExposure = 0.0000
|
|
thisSwitchCam.nodes[5].iRampUpDuration = 0
|
|
thisSwitchCam.nodes[5].iRampDownDuration = 0
|
|
thisSwitchCam.nodes[5].iHoldDuration = 0
|
|
thisSwitchCam.nodes[5].fFlashNodePhaseOffset = 0.0000
|
|
thisSwitchCam.nodes[5].bIsLowDetailNode = TRUE
|
|
thisSwitchCam.nodes[5].bUseCustomDOF = FALSE
|
|
thisSwitchCam.nodes[5].NodeDOF_Info.fDOF_NearDOF = 0.0000
|
|
thisSwitchCam.nodes[5].NodeDOF_Info.fDOF_FarDOF = 0.0000
|
|
thisSwitchCam.nodes[5].NodeDOF_Info.fDOF_EffectStrength = 0.0000
|
|
|
|
thisSwitchCam.nodes[6].SwitchCamType = SWITCH_CAM_WORLD_POS
|
|
thisSwitchCam.nodes[6].iForceCamPointAtEntityIndex = -1
|
|
thisSwitchCam.nodes[6].bIsGameplayCamCopy = FALSE
|
|
thisSwitchCam.nodes[6].iNodeTime = 5000
|
|
thisSwitchCam.nodes[6].vNodePos = <<1867.4435, 2263.9412, 55.9814>>
|
|
thisSwitchCam.nodes[6].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[6].fNodeOffsetDist = 0.0000
|
|
thisSwitchCam.nodes[6].fNodeVerticleOffset = 0.0000
|
|
thisSwitchCam.nodes[6].bAttachToOriginPed = FALSE
|
|
thisSwitchCam.nodes[6].vNodeDir = <<-6.0926, 0.0006, 57.3604>>
|
|
thisSwitchCam.nodes[6].bPointAtEntity = FALSE
|
|
thisSwitchCam.nodes[6].bPointAtOffsetIsRelative = FALSE
|
|
thisSwitchCam.nodes[6].bAttachOffsetIsRelative = FALSE
|
|
thisSwitchCam.nodes[6].fNodeFOV = 40.0000
|
|
thisSwitchCam.nodes[6].vClonedNodeOffset = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[6].iNodeToClone = 0
|
|
thisSwitchCam.nodes[6].NodeTimePostFX_Type = NO_EFFECT
|
|
thisSwitchCam.nodes[6].fNodeTimePostFXBlendTime = 0.0000
|
|
thisSwitchCam.nodes[6].fNodeTimePostFXTimeOffset = 0.0000
|
|
thisSwitchCam.nodes[6].fNodeMotionBlur = 0.0000
|
|
thisSwitchCam.nodes[6].NodeCamShakeType = CAM_SHAKE_MEDIUM
|
|
thisSwitchCam.nodes[6].fNodeCamShake = 0.2000
|
|
thisSwitchCam.nodes[6].iCamEaseType = 0
|
|
thisSwitchCam.nodes[6].fCamEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[6].fCamNodeVelocityScale = 0.0000
|
|
thisSwitchCam.nodes[6].bCamEaseForceLinear = TRUE
|
|
thisSwitchCam.nodes[6].bCamEaseForceLevel = FALSE
|
|
thisSwitchCam.nodes[6].fTimeScale = 1.0000
|
|
thisSwitchCam.nodes[6].iTimeScaleEaseType = 0
|
|
thisSwitchCam.nodes[6].fTimeScaleEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[6].bFlashEnabled = FALSE
|
|
thisSwitchCam.nodes[6].SCFE_FlashEffectUsed = SCFE_CODE_FLASH
|
|
thisSwitchCam.nodes[6].fMinExposure = 0.0000
|
|
thisSwitchCam.nodes[6].fMaxExposure = 0.0000
|
|
thisSwitchCam.nodes[6].iRampUpDuration = 0
|
|
thisSwitchCam.nodes[6].iRampDownDuration = 0
|
|
thisSwitchCam.nodes[6].iHoldDuration = 0
|
|
thisSwitchCam.nodes[6].fFlashNodePhaseOffset = 0.0000
|
|
thisSwitchCam.nodes[6].bIsLowDetailNode = TRUE
|
|
thisSwitchCam.nodes[6].bUseCustomDOF = FALSE
|
|
thisSwitchCam.nodes[6].NodeDOF_Info.fDOF_NearDOF = 0.0000
|
|
thisSwitchCam.nodes[6].NodeDOF_Info.fDOF_FarDOF = 0.0000
|
|
thisSwitchCam.nodes[6].NodeDOF_Info.fDOF_EffectStrength = 0.0000
|
|
|
|
thisSwitchCam.nodes[7].SwitchCamType = SWITCH_CAM_OLD_SYSTEM
|
|
thisSwitchCam.nodes[7].iForceCamPointAtEntityIndex = -1
|
|
thisSwitchCam.nodes[7].bIsGameplayCamCopy = FALSE
|
|
thisSwitchCam.nodes[7].iNodeTime = 1400
|
|
thisSwitchCam.nodes[7].vNodePos = <<1.3125, -2.2925, 0.5904>>
|
|
thisSwitchCam.nodes[7].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[7].fNodeOffsetDist = 0.0000
|
|
thisSwitchCam.nodes[7].fNodeVerticleOffset = 0.0000
|
|
thisSwitchCam.nodes[7].bAttachToOriginPed = FALSE
|
|
thisSwitchCam.nodes[7].vNodeDir = <<-8.1857, 0.0000, 23.3637>>
|
|
thisSwitchCam.nodes[7].bPointAtEntity = FALSE
|
|
thisSwitchCam.nodes[7].bPointAtOffsetIsRelative = FALSE
|
|
thisSwitchCam.nodes[7].bAttachOffsetIsRelative = FALSE
|
|
thisSwitchCam.nodes[7].fNodeFOV = 40.0000
|
|
thisSwitchCam.nodes[7].vClonedNodeOffset = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[7].iNodeToClone = 0
|
|
thisSwitchCam.nodes[7].NodeTimePostFX_Type = NO_EFFECT
|
|
thisSwitchCam.nodes[7].fNodeTimePostFXBlendTime = 0.0000
|
|
thisSwitchCam.nodes[7].fNodeTimePostFXTimeOffset = 0.0000
|
|
thisSwitchCam.nodes[7].fNodeMotionBlur = 0.0000
|
|
thisSwitchCam.nodes[7].NodeCamShakeType = CAM_SHAKE_MEDIUM
|
|
thisSwitchCam.nodes[7].fNodeCamShake = 0.2000
|
|
thisSwitchCam.nodes[7].iCamEaseType = 0
|
|
thisSwitchCam.nodes[7].fCamEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[7].fCamNodeVelocityScale = 0.0000
|
|
thisSwitchCam.nodes[7].bCamEaseForceLinear = TRUE
|
|
thisSwitchCam.nodes[7].bCamEaseForceLevel = FALSE
|
|
thisSwitchCam.nodes[7].fTimeScale = 1.0000
|
|
thisSwitchCam.nodes[7].iTimeScaleEaseType = 0
|
|
thisSwitchCam.nodes[7].fTimeScaleEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[7].bFlashEnabled = FALSE
|
|
thisSwitchCam.nodes[7].SCFE_FlashEffectUsed = SCFE_CODE_FLASH
|
|
thisSwitchCam.nodes[7].fMinExposure = 0.0000
|
|
thisSwitchCam.nodes[7].fMaxExposure = 0.0000
|
|
thisSwitchCam.nodes[7].iRampUpDuration = 0
|
|
thisSwitchCam.nodes[7].iRampDownDuration = 0
|
|
thisSwitchCam.nodes[7].iHoldDuration = 0
|
|
thisSwitchCam.nodes[7].fFlashNodePhaseOffset = 0.0000
|
|
thisSwitchCam.nodes[7].bIsLowDetailNode = TRUE
|
|
thisSwitchCam.nodes[7].bUseCustomDOF = FALSE
|
|
thisSwitchCam.nodes[7].NodeDOF_Info.fDOF_NearDOF = 0.0000
|
|
thisSwitchCam.nodes[7].NodeDOF_Info.fDOF_FarDOF = 0.0000
|
|
thisSwitchCam.nodes[7].NodeDOF_Info.fDOF_EffectStrength = 0.0000
|
|
|
|
thisSwitchCam.nodes[8].bIsCamCutNode = TRUE
|
|
|
|
thisSwitchCam.nodes[9].SwitchCamType = SWITCH_CAM_GAMEPLAY_CAM_COPY
|
|
thisSwitchCam.nodes[9].iForceCamPointAtEntityIndex = -1
|
|
thisSwitchCam.nodes[9].bIsGameplayCamCopy = TRUE
|
|
thisSwitchCam.nodes[9].iNodeTime = 0
|
|
thisSwitchCam.nodes[9].vNodePos = <<-1.6713, 0.3223, 0.3105>>
|
|
thisSwitchCam.nodes[9].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[9].fNodeOffsetDist = 0.0000
|
|
thisSwitchCam.nodes[9].fNodeVerticleOffset = 0.0000
|
|
thisSwitchCam.nodes[9].bAttachToOriginPed = FALSE
|
|
thisSwitchCam.nodes[9].vNodeDir = <<0.8921, 0.0000, -112.2359>>
|
|
thisSwitchCam.nodes[9].bPointAtEntity = FALSE
|
|
thisSwitchCam.nodes[9].bPointAtOffsetIsRelative = FALSE
|
|
thisSwitchCam.nodes[9].bAttachOffsetIsRelative = FALSE
|
|
thisSwitchCam.nodes[9].fNodeFOV = 50.0000
|
|
thisSwitchCam.nodes[9].vClonedNodeOffset = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[9].iNodeToClone = 0
|
|
thisSwitchCam.nodes[9].NodeTimePostFX_Type = NO_EFFECT
|
|
thisSwitchCam.nodes[9].fNodeTimePostFXBlendTime = 0.0000
|
|
thisSwitchCam.nodes[9].fNodeTimePostFXTimeOffset = 0.0000
|
|
thisSwitchCam.nodes[9].fNodeMotionBlur = 0.0000
|
|
thisSwitchCam.nodes[9].NodeCamShakeType = CAM_SHAKE_DEFAULT
|
|
thisSwitchCam.nodes[9].fNodeCamShake = 0.0000
|
|
thisSwitchCam.nodes[9].iCamEaseType = 0
|
|
thisSwitchCam.nodes[9].fCamEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[9].fCamNodeVelocityScale = 0.0000
|
|
thisSwitchCam.nodes[9].bCamEaseForceLinear = FALSE
|
|
thisSwitchCam.nodes[9].bCamEaseForceLevel = FALSE
|
|
thisSwitchCam.nodes[9].fTimeScale = 1.0000
|
|
thisSwitchCam.nodes[9].iTimeScaleEaseType = 0
|
|
thisSwitchCam.nodes[9].fTimeScaleEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[9].bFlashEnabled = FALSE
|
|
thisSwitchCam.nodes[9].SCFE_FlashEffectUsed = SCFE_CODE_FLASH
|
|
thisSwitchCam.nodes[9].fMinExposure = 0.0000
|
|
thisSwitchCam.nodes[9].fMaxExposure = 0.0000
|
|
thisSwitchCam.nodes[9].iRampUpDuration = 0
|
|
thisSwitchCam.nodes[9].iRampDownDuration = 0
|
|
thisSwitchCam.nodes[9].iHoldDuration = 0
|
|
thisSwitchCam.nodes[9].fFlashNodePhaseOffset = 0.0000
|
|
thisSwitchCam.nodes[9].bIsLowDetailNode = FALSE
|
|
thisSwitchCam.nodes[9].bUseCustomDOF = FALSE
|
|
thisSwitchCam.nodes[9].NodeDOF_Info.fDOF_NearDOF = 0.0000
|
|
thisSwitchCam.nodes[9].NodeDOF_Info.fDOF_FarDOF = 0.0000
|
|
thisSwitchCam.nodes[9].NodeDOF_Info.fDOF_EffectStrength = 0.0000
|
|
|
|
thisSwitchCam.nodes[10].SwitchCamType = SWITCH_CAM_GAMEPLAY_CAM_COPY
|
|
thisSwitchCam.nodes[10].iForceCamPointAtEntityIndex = -1
|
|
thisSwitchCam.nodes[10].bIsGameplayCamCopy = TRUE
|
|
thisSwitchCam.nodes[10].iNodeTime = 4500
|
|
thisSwitchCam.nodes[10].vNodePos = <<-1.5291, 0.3435, 0.4191>>
|
|
thisSwitchCam.nodes[10].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[10].fNodeOffsetDist = 0.0000
|
|
thisSwitchCam.nodes[10].fNodeVerticleOffset = 0.0000
|
|
thisSwitchCam.nodes[10].bAttachToOriginPed = FALSE
|
|
thisSwitchCam.nodes[10].vNodeDir = <<-3.1276, -0.0015, -106.0949>>
|
|
thisSwitchCam.nodes[10].bPointAtEntity = FALSE
|
|
thisSwitchCam.nodes[10].bPointAtOffsetIsRelative = FALSE
|
|
thisSwitchCam.nodes[10].bAttachOffsetIsRelative = FALSE
|
|
thisSwitchCam.nodes[10].fNodeFOV = 50.0000
|
|
thisSwitchCam.nodes[10].vClonedNodeOffset = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[10].iNodeToClone = 0
|
|
thisSwitchCam.nodes[10].NodeTimePostFX_Type = NO_EFFECT
|
|
thisSwitchCam.nodes[10].fNodeTimePostFXBlendTime = 0.0000
|
|
thisSwitchCam.nodes[10].fNodeTimePostFXTimeOffset = 0.0000
|
|
thisSwitchCam.nodes[10].fNodeMotionBlur = 0.0000
|
|
thisSwitchCam.nodes[10].NodeCamShakeType = CAM_SHAKE_DEFAULT
|
|
thisSwitchCam.nodes[10].fNodeCamShake = 0.0000
|
|
thisSwitchCam.nodes[10].iCamEaseType = 0
|
|
thisSwitchCam.nodes[10].fCamEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[10].fCamNodeVelocityScale = 0.0000
|
|
thisSwitchCam.nodes[10].bCamEaseForceLinear = FALSE
|
|
thisSwitchCam.nodes[10].bCamEaseForceLevel = FALSE
|
|
thisSwitchCam.nodes[10].fTimeScale = 1.0000
|
|
thisSwitchCam.nodes[10].iTimeScaleEaseType = 0
|
|
thisSwitchCam.nodes[10].fTimeScaleEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[10].bFlashEnabled = FALSE
|
|
thisSwitchCam.nodes[10].SCFE_FlashEffectUsed = SCFE_CODE_FLASH
|
|
thisSwitchCam.nodes[10].fMinExposure = 0.0000
|
|
thisSwitchCam.nodes[10].fMaxExposure = 0.0000
|
|
thisSwitchCam.nodes[10].iRampUpDuration = 0
|
|
thisSwitchCam.nodes[10].iRampDownDuration = 0
|
|
thisSwitchCam.nodes[10].iHoldDuration = 0
|
|
thisSwitchCam.nodes[10].fFlashNodePhaseOffset = 0.0000
|
|
thisSwitchCam.nodes[10].bIsLowDetailNode = FALSE
|
|
thisSwitchCam.nodes[10].bUseCustomDOF = FALSE
|
|
thisSwitchCam.nodes[10].NodeDOF_Info.fDOF_NearDOF = 0.0000
|
|
thisSwitchCam.nodes[10].NodeDOF_Info.fDOF_FarDOF = 0.0000
|
|
thisSwitchCam.nodes[10].NodeDOF_Info.fDOF_EffectStrength = 0.0000
|
|
|
|
thisSwitchCam.nodes[11].SwitchCamType = SWITCH_CAM_GAMEPLAY_CAM_COPY
|
|
thisSwitchCam.nodes[11].iForceCamPointAtEntityIndex = -1
|
|
thisSwitchCam.nodes[11].bIsGameplayCamCopy = TRUE
|
|
thisSwitchCam.nodes[11].iNodeTime = 5100
|
|
thisSwitchCam.nodes[11].vNodePos = <<-1.5291, 0.3435, 0.4191>>
|
|
thisSwitchCam.nodes[11].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[11].fNodeOffsetDist = 0.0000
|
|
thisSwitchCam.nodes[11].fNodeVerticleOffset = 0.0000
|
|
thisSwitchCam.nodes[11].bAttachToOriginPed = FALSE
|
|
thisSwitchCam.nodes[11].vNodeDir = <<-3.1276, -0.0015, -106.0949>>
|
|
thisSwitchCam.nodes[11].bPointAtEntity = FALSE
|
|
thisSwitchCam.nodes[11].bPointAtOffsetIsRelative = FALSE
|
|
thisSwitchCam.nodes[11].bAttachOffsetIsRelative = FALSE
|
|
thisSwitchCam.nodes[11].fNodeFOV = 50.0000
|
|
thisSwitchCam.nodes[11].vClonedNodeOffset = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[11].iNodeToClone = 0
|
|
thisSwitchCam.nodes[11].NodeTimePostFX_Type = NO_EFFECT
|
|
thisSwitchCam.nodes[11].fNodeTimePostFXBlendTime = 0.0000
|
|
thisSwitchCam.nodes[11].fNodeTimePostFXTimeOffset = 0.0000
|
|
thisSwitchCam.nodes[11].fNodeMotionBlur = 0.0000
|
|
thisSwitchCam.nodes[11].NodeCamShakeType = CAM_SHAKE_DEFAULT
|
|
thisSwitchCam.nodes[11].fNodeCamShake = 0.0000
|
|
thisSwitchCam.nodes[11].iCamEaseType = 0
|
|
thisSwitchCam.nodes[11].fCamEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[11].fCamNodeVelocityScale = 0.0000
|
|
thisSwitchCam.nodes[11].bCamEaseForceLinear = FALSE
|
|
thisSwitchCam.nodes[11].bCamEaseForceLevel = FALSE
|
|
thisSwitchCam.nodes[11].fTimeScale = 1.0000
|
|
thisSwitchCam.nodes[11].iTimeScaleEaseType = 0
|
|
thisSwitchCam.nodes[11].fTimeScaleEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[11].bFlashEnabled = FALSE
|
|
thisSwitchCam.nodes[11].SCFE_FlashEffectUsed = SCFE_CODE_FLASH
|
|
thisSwitchCam.nodes[11].fMinExposure = 0.0000
|
|
thisSwitchCam.nodes[11].fMaxExposure = 0.0000
|
|
thisSwitchCam.nodes[11].iRampUpDuration = 0
|
|
thisSwitchCam.nodes[11].iRampDownDuration = 0
|
|
thisSwitchCam.nodes[11].iHoldDuration = 0
|
|
thisSwitchCam.nodes[11].fFlashNodePhaseOffset = 0.0000
|
|
thisSwitchCam.nodes[11].bIsLowDetailNode = FALSE
|
|
thisSwitchCam.nodes[11].bUseCustomDOF = FALSE
|
|
thisSwitchCam.nodes[11].NodeDOF_Info.fDOF_NearDOF = 0.0000
|
|
thisSwitchCam.nodes[11].NodeDOF_Info.fDOF_FarDOF = 0.0000
|
|
thisSwitchCam.nodes[11].NodeDOF_Info.fDOF_EffectStrength = 0.0000
|
|
|
|
|
|
|
|
thisSwitchCam.iNumNodes = 12
|
|
thisSwitchCam.iCamSwitchFocusNode = 3
|
|
thisSwitchCam.fSwitchSoundAudioStartPhase = 0.1700
|
|
thisSwitchCam.fSwitchSoundAudioEndPhase = 0.2020
|
|
thisSwitchCam.bSwitchSoundPlayOpeningPulse = TRUE
|
|
thisSwitchCam.bSwitchSoundPlayMoveLoop = TRUE
|
|
thisSwitchCam.bSwitchSoundPlayExitPulse = FALSE
|
|
thisSwitchCam.bSplineNoSmoothing = TRUE
|
|
thisSwitchCam.bAddGameplayCamAsLastNode = FALSE
|
|
thisSwitchCam.iGameplayNodeBlendDuration = 0
|
|
|
|
|
|
//--- End of Cam Data ---
|
|
|
|
|
|
thisSwitchCam.strOutputStructName = "thisSwitchCam"
|
|
thisSwitchCam.strOutputFileName = "CameraInfo_BigScore_MichaelToTrevorInCar.txt"
|
|
thisSwitchCam.strXMLFileName = "CameraInfo_BigScore_MichaelToTrevorInCar.xml"
|
|
|
|
thisSwitchCam.bInitialized = TRUE
|
|
ENDIF
|
|
|
|
thisSwitchCam.piPeds[0] = piMichael
|
|
thisSwitchCam.piPeds[1] = piTrevor
|
|
|
|
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Handle the playback of the switch cam. The will setup, play, shut down and cleanup the switch cam spline
|
|
/// PARAMS:
|
|
/// thisSwitchCam - Switch camera to playback
|
|
/// bReturnTrueOnce - If you only want this function to return TRUE once upon completion. Set to FALSE to have this function to return true every time this is called once the camera is finished playback.
|
|
/// RETURNS:
|
|
/// TRUE when camera is complete, FALSE if playback is still active, or if the camera has completed playback and bReturnTrueOnce is set to TRUE.
|
|
FUNC BOOL HANDLE_SWITCH_CAM_MICHAEL_TO_TREVOR_IN_TRUCK(SWITCH_CAM_STRUCT &thisSwitchCam_1, BOOL bReturnTrueOnce = TRUE)
|
|
|
|
INT iCurrentNode
|
|
|
|
SWITCH eSwitchCamState
|
|
|
|
CASE SWITCH_CAM_IDLE
|
|
CDEBUG3LN(DEBUG_MISSION, "eSwitchCamState = SWITCH_CAM_IDLE")
|
|
BREAK
|
|
|
|
CASE SWITCH_CAM_REQUEST_ASSETS
|
|
CDEBUG3LN(DEBUG_MISSION, "eSwitchCamState = SWITCH_CAM_REQUEST_ASSETS")
|
|
|
|
NEW_LOAD_SCENE_START_SPHERE((<<1865.1, 2263.8, 56.3>>), fMichaelToTrevorTruck_SwitchCamLoadSphereRadius, NEWLOADSCENE_FLAG_LONGSWITCH_CUTSCENE)
|
|
|
|
BREAK
|
|
|
|
CASE SWITCH_CAM_SETUP_SPLINE_1
|
|
CDEBUG3LN(DEBUG_MISSION, "eSwitchCamState = SWITCH_CAM_SETUP_SPLINE_1")
|
|
|
|
SETUP_SPLINE_CAM_NODE_ARRAY_MICHAEL_TO_TREVOR_IN_TRUCK(thisSwitchCam_1, peds[mpf_michael].id, peds[mpf_trevor].id)
|
|
|
|
IF NOT IS_PED_INJURED(peds[mpf_michael].id)
|
|
TASK_PLAY_ANIM(peds[mpf_michael].id, sSwitchAnimLibrary_MikeAndFrankAnims, "bss_1_mcs_2_leadout_mic", INSTANT_BLEND_IN, DEFAULT, DEFAULT, AF_HOLD_LAST_FRAME)
|
|
ENDIF
|
|
IF NOT IS_PED_INJURED(peds[mpf_franklin].id)
|
|
TASK_PLAY_ANIM(peds[mpf_franklin].id, sSwitchAnimLibrary_MikeAndFrankAnims, "bss_1_mcs_2_leadout_fra", INSTANT_BLEND_IN, DEFAULT, DEFAULT, AF_HOLD_LAST_FRAME)
|
|
ENDIF
|
|
|
|
DELETE_ALL_CARS_IN_UBER_PLAYBACK()
|
|
SET_RENDER_HD_ONLY(FALSE)
|
|
REQUEST_PTFX_ASSET()
|
|
|
|
SET_PED_POPULATION_BUDGET(0)
|
|
SET_VEHICLE_POPULATION_BUDGET(0)
|
|
SET_REDUCE_PED_MODEL_BUDGET(TRUE)
|
|
SET_REDUCE_VEHICLE_MODEL_BUDGET(TRUE)
|
|
|
|
//[MF] If this switch cam exists, delete it and we'll create a fresh one.
|
|
IF DOES_SWITCH_CAM_EXIST(thisSwitchCam_1)
|
|
DESTROY_SWITCH_CAM(thisSwitchCam_1)
|
|
ENDIF
|
|
|
|
CREATE_SPLINE_CAM(thisSwitchCam_1)
|
|
|
|
SET_CAM_ACTIVE(thisSwitchCam_1.ciSpline, TRUE)
|
|
RENDER_SCRIPT_CAMS(TRUE, FALSE)
|
|
|
|
DISPLAY_RADAR(FALSE)
|
|
DISPLAY_HUD(FALSE)
|
|
|
|
bRestoreHighLOD = FALSE
|
|
|
|
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
|
|
|
|
DISABLE_ON_FOOT_FIRST_PERSON_VIEW_THIS_UPDATE()
|
|
eSavedMode = GET_FOLLOW_PED_CAM_VIEW_MODE()
|
|
SET_FOLLOW_PED_CAM_VIEW_MODE(CAM_VIEW_MODE_THIRD_PERSON_NEAR)
|
|
|
|
bPlayerControlGiven = FALSE
|
|
bTrevor_PeeHasStopped = FALSE
|
|
bTrevor_PeeFXHasStarted = FALSE
|
|
bHasTrevSwitchConvoPlayed = FALSE
|
|
bHasMikeSwitchConvoPlayed = FALSE
|
|
bMichaelCarToTrevTruck_TrevorTransitionedToStand = FALSE
|
|
bPushInToFirstPerson = FALSE
|
|
|
|
thisSwitchCam_1.bIsSplineCamFinishedPlaying = FALSE
|
|
bMichaelCarToTrevTruck_DestGeoRequested = FALSE
|
|
bMichaelCarToTrevTruck_TrevorPeeAnimHappening = FALSE
|
|
|
|
if not IS_PED_INJURED(peds[mpf_trevor].id)
|
|
CLEAR_PED_TASKS_IMMEDIATELY(peds[mpf_trevor].id)
|
|
CLEAR_PED_SECONDARY_TASK(peds[mpf_trevor].id)
|
|
SET_ENTITY_COORDS_NO_OFFSET(peds[mpf_trevor].id, vMichaelToTrevorTruck_TrevLocation)
|
|
SET_ENTITY_HEADING(peds[mpf_trevor].id, fMichaelToTrevorTruck_TrevHeading)
|
|
endif
|
|
|
|
IF NOT IS_ENTITY_DEAD(vehs[mvf_trevor_veh].id)
|
|
SET_ENTITY_COORDS_NO_OFFSET(vehs[mvf_trevor_veh].id, vMichaelToTrevorTruck_TruckLocation)
|
|
SET_ENTITY_HEADING(vehs[mvf_trevor_veh].id, fMichaelToTrevorTruck_TruckHeading)
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(vehs[mvf_trevor_veh].id,TRUE)
|
|
REQUEST_COLLISION_AT_COORD(vMichaelToTrevorTruck_TruckLocation)
|
|
FREEZE_ENTITY_POSITION(vehs[mvf_trevor_veh].id,TRUE)
|
|
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehs[mvf_trevor_veh].id, TRUE)
|
|
ENDIF
|
|
|
|
//[MF] rolling down windows so they don't block player's view of characters
|
|
ROLL_DOWN_WINDOW(vehs[mvf_Michael_veh].id, SC_WINDOW_FRONT_LEFT)
|
|
ROLL_DOWN_WINDOW(vehs[mvf_Michael_veh].id, SC_WINDOW_FRONT_RIGHT)
|
|
|
|
IF NOT IS_PED_INJURED(peds[mpf_lester].id)
|
|
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_trevor_veh].id)
|
|
IF NOT IS_PED_SITTING_IN_VEHICLE_SEAT(peds[mpf_lester].id,vehs[mvf_trevor_veh].id,VS_FRONT_RIGHT)
|
|
SET_PED_INTO_VEHICLE(peds[mpf_lester].id,vehs[mvf_trevor_veh].id,VS_FRONT_RIGHT)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
eSwitchCamState = SWITCH_CAM_PLAYING_SPLINE_1
|
|
|
|
BREAK
|
|
|
|
CASE SWITCH_CAM_PLAYING_SPLINE_1
|
|
DISABLE_ON_FOOT_FIRST_PERSON_VIEW_THIS_UPDATE()
|
|
|
|
CDEBUG3LN(DEBUG_MISSION, "eSwitchCamState = SWITCH_CAM_PLAYING_SPLINE_1")
|
|
CDEBUG3LN(DEBUG_MISSION, GET_CAM_SPLINE_PHASE(thisSwitchCam_1.ciSpline))
|
|
|
|
iCurrentNode = UPDATE_SPLINE_CAM(thisSwitchCam_1)
|
|
|
|
IF IS_CAM_ACTIVE(thisSwitchCam_1.ciSpline)
|
|
OVERRIDE_LODSCALE_THIS_FRAME(1.0)
|
|
|
|
|
|
//[MF] Fix for Lester falling through the world
|
|
IF iCurrentNode <= thisSwitchCam_1.iCamSwitchFocusNode + 1
|
|
IF NOT IS_ENTITY_DEAD(vehs[mvf_trevor_veh].id)
|
|
SET_ENTITY_COORDS_NO_OFFSET(vehs[mvf_trevor_veh].id, vMichaelToTrevorTruck_TruckLocation)
|
|
SET_ENTITY_HEADING(vehs[mvf_trevor_veh].id, fMichaelToTrevorTruck_TruckHeading)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//[MF] Handle streaming after we switch to Trevor and maintin gameplay camera direction
|
|
IF GET_CAM_SPLINE_PHASE(thisSwitchCam_1.ciSpline) >= fMikeToTrevTruck_CharSwitchPhase
|
|
IF NOT IS_PLAYER_CONTROL_ON(PLAYER_ID())
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING(fGameplayCamHeadingMichaelToTrevorInCar)
|
|
SET_GAMEPLAY_CAM_RELATIVE_PITCH(fGameplayCamPitchMichaelToTrevorInCar)
|
|
IF NOT sCamDetails.bOKToSwitchPed
|
|
sCamDetails.bOKToSwitchPed = TRUE
|
|
SET_GAME_PAUSES_FOR_STREAMING(FALSE)
|
|
SET_VEHICLE_POPULATION_BUDGET(2)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//[MF] Handle Trevor Pee PFX
|
|
IF NOT bTrevor_PeeFXHasStarted
|
|
// IF iCurrentNode >= thisSwitchCam_1.iCamSwitchFocusNode -3
|
|
// IF bMichaelCarToTrevTruck_TrevorPeeAnimHappening
|
|
IF GET_CAM_SPLINE_PHASE(thisSwitchCam_1.ciSpline) >= 0.05
|
|
IF NOT IS_PED_INJURED(peds[mpf_trevor].id)
|
|
PRINTLN("@@@@@@@@@@ START_PARTICLE_FX_LOOPED_ON_PED_BONE @@@@@@@@@@@")
|
|
PTfx_Trevor_Pee = START_PARTICLE_FX_LOOPED_ON_PED_BONE("scr_bigscore_peeing", peds[mpf_trevor].id, vTrevor_PeeFX_BoneOffset, vTrevor_PeeFX_BoneRot, BONETAG_PELVIS)
|
|
bTrevor_PeeFXHasStarted = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
ENDIF
|
|
|
|
IF iCurrentNode >= thisSwitchCam_1.iCamSwitchFocusNode -1
|
|
AND iCurrentNode < thisSwitchCam_1.iCamSwitchFocusNode + 2
|
|
SET_RENDER_HD_ONLY(TRUE) //[MF] This is to prevent some nasty LOD confusion on the wall that Trevor is standing next to.
|
|
ENDIF
|
|
|
|
|
|
//[MF] Load the geo in for where we are advancing Trevor to.
|
|
IF iCurrentNode >= 0
|
|
AND GET_CAM_SPLINE_NODE_PHASE(thisSwitchCam_1.ciSpline) >= 0.0
|
|
IF NOT bMichaelCarToTrevTruck_DestGeoRequested
|
|
NEW_LOAD_SCENE_START_SPHERE((<<1865.1, 2263.8, 56.3>>), fMichaelToTrevorTruck_SwitchCamLoadSphereRadius, NEWLOADSCENE_FLAG_LONGSWITCH_CUTSCENE|NEWLOADSCENE_FLAG_REQUIRE_COLLISION)
|
|
bMichaelCarToTrevTruck_DestGeoRequested = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//[MF]After we've switched to Trevor monitor to ensure he's playing his anim. If animation is interrupted by the gameplay systems this will restart it.
|
|
IF GET_CAM_SPLINE_PHASE(thisSwitchCam_1.ciSpline) >= fMikeToTrevTruck_CharSwitchPhase
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
IF NOT bMichaelCarToTrevTruck_TrevorPeeAnimHappening
|
|
IF NOT IS_PLAYER_CONTROL_ON(PLAYER_ID())
|
|
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(iSyncSceneTrevPiss)
|
|
IF NOT IS_PED_INJURED(peds[mpf_trevor].id)
|
|
CLEAR_PED_TASKS_IMMEDIATELY(peds[mpf_trevor].id)
|
|
CLEAR_PED_SECONDARY_TASK(peds[mpf_trevor].id)
|
|
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
|
|
FREEZE_ENTITY_POSITION(peds[mpf_trevor].id, FALSE)
|
|
|
|
//Additional warp
|
|
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_trevor_veh].id)
|
|
SET_ENTITY_COORDS_NO_OFFSET(vehs[mvf_trevor_veh].id, <<1877.90, 2257.49, 54.50>>)
|
|
SET_ENTITY_HEADING(vehs[mvf_trevor_veh].id, 6.90)
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(vehs[mvf_trevor_veh].id,TRUE)
|
|
REQUEST_COLLISION_AT_COORD(<<1877.59, 2256.80, 53.51>>)
|
|
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehs[mvf_trevor_veh].id,FALSE)
|
|
SET_VEHICLE_ON_GROUND_PROPERLY(vehs[mvf_trevor_veh].id)
|
|
FREEZE_ENTITY_POSITION(vehs[mvf_trevor_veh].id,FALSE)
|
|
ENDIF
|
|
|
|
IF NOT IS_PED_INJURED(peds[mpf_lester].id)
|
|
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_trevor_veh].id)
|
|
IF NOT IS_PED_SITTING_IN_VEHICLE_SEAT(peds[mpf_lester].id,vehs[mvf_trevor_veh].id,VS_FRONT_RIGHT)
|
|
SET_PED_INTO_VEHICLE(peds[mpf_lester].id,vehs[mvf_trevor_veh].id,VS_FRONT_RIGHT)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
SEQUENCE_INDEX siMakeTrevorPee
|
|
OPEN_SEQUENCE_TASK(siMakeTrevorPee)
|
|
TASK_PLAY_ANIM(NULL, sSwitchAnimLibraryCarToTruck_PissAnims, "PISS_LOOP", INSTANT_BLEND_IN, NORMAL_BLEND_OUT, iMichealToTrevorTruck_PeeLoopDuration, AF_LOOPING)
|
|
TASK_PLAY_ANIM(NULL, sSwitchAnimLibraryCarToTruck_PissAnims, "PISS_OUTRO", NORMAL_BLEND_IN, WALK_BLEND_OUT, -1, AF_TAG_SYNC_OUT)
|
|
CLOSE_SEQUENCE_TASK(siMakeTrevorPee)
|
|
TASK_PERFORM_SEQUENCE(peds[mpf_trevor].id, siMakeTrevorPee)
|
|
|
|
bMichaelCarToTrevTruck_TrevorPeeAnimHappening = TRUE
|
|
|
|
CDEBUG3LN(DEBUG_MISSION, "Playing Sync Scene")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//[MF] Load geo behind Trevor
|
|
NEW_LOAD_SCENE_STOP()
|
|
NEW_LOAD_SCENE_START_SPHERE((<<1905.9, 2226.5, 71.1>>), 150.0)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF NOT bMichaelCarToTrevTruck_TrevorTransitionedToStand
|
|
IF bMichaelCarToTrevTruck_TrevorPeeAnimHappening
|
|
IF GET_CAM_SPLINE_PHASE(thisSwitchCam_1.ciSpline) >= fMikeCarToTrevTruck_TransitionToPlayerLocoPhase
|
|
CPRINTLN(DEBUG_MISSION,"Telling Player To End In Stand Pose...")
|
|
FORCE_PED_MOTION_STATE(PLAYER_PED_ID(), MS_ON_FOOT_WALK, FALSE, FAUS_DEFAULT, FALSE)
|
|
SIMULATE_PLAYER_INPUT_GAIT(PLAYER_ID(), PEDMOVE_WALK, 500)
|
|
CLEAR_PED_TASKS(peds[mpf_trevor].id)
|
|
bMichaelCarToTrevTruck_TrevorTransitionedToStand = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF bTrevor_PeeFXHasStarted
|
|
IF NOT bTrevor_PeeHasStopped
|
|
IF bMichaelCarToTrevTruck_TrevorPeeAnimHappening
|
|
IF GET_CAM_SPLINE_PHASE(thisSwitchCam_1.ciSpline) >= fTrevor_PeeFX_Stop_Phase
|
|
STOP_PARTICLE_FX_LOOPED(PTfx_Trevor_Pee)
|
|
bTrevor_PeeHasStopped = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//[MF] Restore high detail LOD and ped/vehicle population data
|
|
IF NOT bRestoreHighLOD
|
|
IF iCurrentNode >= thisSwitchCam_1.iCamSwitchFocusNode + 2
|
|
CDEBUG3LN(DEBUG_MISSION, "Restoring everything to high detail")
|
|
SET_PED_POPULATION_BUDGET(3)
|
|
SET_VEHICLE_POPULATION_BUDGET(3)
|
|
SET_REDUCE_PED_MODEL_BUDGET(FALSE)
|
|
SET_REDUCE_VEHICLE_MODEL_BUDGET(FALSE)
|
|
|
|
FREEZE_ENTITY_POSITION(peds[mpf_trevor].id, FALSE)
|
|
bRestoreHighLOD = true
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF NOT bHasMikeSwitchConvoPlayed
|
|
IF GET_CAM_SPLINE_PHASE(thisSwitchCam_1.ciSpline) > fPlaySwitchConvoMike
|
|
|
|
CDEBUG3LN(DEBUG_MISSION, "Playing Michael's Dialogue: FH1_MCS2_LO")
|
|
ADD_PED_FOR_DIALOGUE(convo_struct, 1, peds[mpf_michael].id, "MICHAEL", true)
|
|
PLAY_SINGLE_LINE_FROM_CONVERSATION(convo_struct, "FH1AUD","FH1_MCS2_LO", "FH1_MCS2_LO_1", CONV_PRIORITY_HIGH)
|
|
|
|
bHasMikeSwitchConvoPlayed = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF NOT bHasTrevSwitchConvoPlayed
|
|
IF GET_CAM_SPLINE_PHASE(thisSwitchCam_1.ciSpline) > fPlaySwitchConvoTrev
|
|
CDEBUG3LN(DEBUG_MISSION, "Playing Trevor's Dialogue: FH1_TMBB")
|
|
CREATE_CONVERSATION_FROM_SPECIFIC_LINE(convo_struct, "FH1AUD","FH1_TMBB", "FH1_TMBB_2", CONV_PRIORITY_HIGH)
|
|
bHasTrevSwitchConvoPlayed = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//[MF] End Cases if player presses a direction on an analogue stick
|
|
IF GET_CAM_SPLINE_NODE_INDEX(thisSwitchCam_1.ciSpline) >= (thisSwitchCam_1.iNumNodes - 3)
|
|
AND eSavedMode != CAM_VIEW_MODE_FIRST_PERSON
|
|
SET_RENDER_HD_ONLY(FALSE)
|
|
IF NOT IS_PLAYER_CONTROL_ON(PLAYER_ID())
|
|
INT iLeftX, iLeftY, iRightX, iRightY
|
|
GET_CONTROL_VALUE_OF_ANALOGUE_STICKS(iLeftX, iLeftY, iRightX, iRightY)
|
|
IF iLeftX <> 0 OR iLeftY <> 0 OR iRightX <> 0 OR iRightY <> 0
|
|
OR IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_AIM)
|
|
OR IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_ATTACK)
|
|
SET_PLAYER_CONTROL(PLAYER_ID(), true)
|
|
|
|
CLEAR_PED_TASKS(peds[mpf_trevor].id)
|
|
SET_FOLLOW_PED_CAM_VIEW_MODE(eSavedMode)
|
|
RENDER_SCRIPT_CAMS(FALSE, TRUE, 1500)
|
|
|
|
eSwitchCamState = SWITCH_CAM_RETURN_TO_GAMEPLAY
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT bPushInToFirstPerson
|
|
IF (GET_CAM_SPLINE_PHASE(thisSwitchCam_1.ciSpline) >= 0.55 AND eSavedMode = CAM_VIEW_MODE_FIRST_PERSON)
|
|
ANIMPOSTFX_PLAY("CamPushInNeutral", 0, FALSE)
|
|
PLAY_SOUND_FRONTEND(-1, "1st_Person_Transition", "PLAYER_SWITCH_CUSTOM_SOUNDSET")
|
|
bPushInToFirstPerson = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
//[MF] Once cam is at the end, reset the gameplay cam positon and advance to next state.
|
|
IF (GET_CAM_SPLINE_PHASE(thisSwitchCam_1.ciSpline) >= 1.00 AND eSavedMode != CAM_VIEW_MODE_FIRST_PERSON)
|
|
OR (GET_CAM_SPLINE_PHASE(thisSwitchCam_1.ciSpline) >= 0.57 AND eSavedMode = CAM_VIEW_MODE_FIRST_PERSON)
|
|
CDEBUG3LN(DEBUG_MISSION, "eSwitchCamState = SWITCH_CAM_RETURN_TO_GAMEPLAY")
|
|
IF NOT IS_PLAYER_CONTROL_ON(PLAYER_ID())
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING(fGameplayCamHeadingMichaelToTrevorInCar)
|
|
SET_GAMEPLAY_CAM_RELATIVE_PITCH(fGameplayCamPitchMichaelToTrevorInCar)
|
|
ENDIF
|
|
SET_FOLLOW_PED_CAM_VIEW_MODE(eSavedMode)
|
|
IF eSavedMode != CAM_VIEW_MODE_FIRST_PERSON
|
|
RENDER_SCRIPT_CAMS(FALSE, TRUE, 2000)
|
|
ELSE
|
|
RENDER_SCRIPT_CAMS(FALSE, TRUE, 0)
|
|
ENDIF
|
|
eSwitchCamState = SWITCH_CAM_RETURN_TO_GAMEPLAY
|
|
ENDIF
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE SWITCH_CAM_RETURN_TO_GAMEPLAY
|
|
|
|
SET_TIME_SCALE(1.0)
|
|
|
|
IF DOES_CAM_EXIST(thisSwitchCam_1.ciSpline)
|
|
SET_CAM_ACTIVE(thisSwitchCam_1.ciSpline, FALSE)
|
|
ENDIF
|
|
|
|
IF NOT IS_PED_INJURED(peds[mpf_lester].id )
|
|
TASK_LOOK_AT_ENTITY(peds[mpf_lester].id ,PLAYER_PED_ID(),-1,SLF_WHILE_NOT_IN_FOV,SLF_LOOKAT_HIGH)
|
|
ENDIF
|
|
|
|
IF DOES_SWITCH_CAM_EXIST(thisSwitchCam_1)
|
|
DESTROY_SWITCH_CAM(thisSwitchCam_1)
|
|
ENDIF
|
|
|
|
SETTIMERB(0)
|
|
|
|
IF NOT bPlayerControlGiven
|
|
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
|
DISPLAY_RADAR(TRUE)
|
|
DISPLAY_HUD(TRUE)
|
|
bPlayerControlGiven = TRUE
|
|
ENDIF
|
|
|
|
SETTIMERA(0)
|
|
|
|
REMOVE_ANIM_DICT(sSwitchAnimLibraryCarToTruck_PissAnims)
|
|
REMOVE_ANIM_DICT(sSwitchAnimLibrary_MikeAndFrankAnims)
|
|
REMOVE_ANIM_DICT("shake_cam_all@")
|
|
|
|
//[MF] rolling down windows so they don't block player's view of characters
|
|
IF NOT IS_ENTITY_DEAD(vehs[mvf_Michael_veh].id)
|
|
ROLL_UP_WINDOW(vehs[mvf_Michael_veh].id, SC_WINDOW_FRONT_LEFT)
|
|
ROLL_UP_WINDOW(vehs[mvf_Michael_veh].id, SC_WINDOW_FRONT_RIGHT)
|
|
ENDIF
|
|
|
|
thisSwitchCam_1.bIsSplineCamFinishedPlaying = TRUE
|
|
sCamDetails.brun = FALSE
|
|
|
|
SET_RENDER_HD_ONLY(FALSE)
|
|
|
|
NEW_LOAD_SCENE_STOP()
|
|
SET_GAME_PAUSES_FOR_STREAMING(TRUE)
|
|
|
|
eSwitchCamState = SWITCH_CAM_IDLE
|
|
|
|
SET_WANTED_LEVEL_MULTIPLIER(1.0)
|
|
|
|
RETURN TRUE
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
IF bReturnTrueOnce
|
|
RETURN FALSE
|
|
ELSE
|
|
RETURN thisSwitchCam_1.bIsSplineCamFinishedPlaying
|
|
ENDIF
|
|
ENDFUNC
|
|
|
|
|
|
/// PURPOSE:
|
|
/// Setup the individual spline node cam data for each node in the scripted switch cam
|
|
/// PARAMS:
|
|
/// thisSwitchCam - Switch cam to setup the spline node data for
|
|
/// piMichael - Michael's current ped index
|
|
/// piTrevor - Trevor's current ped index
|
|
PROC SETUP_SPLINE_CAM_NODE_ARRAY_MICHAEL_TO_TREVOR_IN_HELI(SWITCH_CAM_STRUCT &thisSwitchCam, PED_INDEX &piMichael, PED_INDEX &piTrevor)
|
|
CDEBUG3LN(DEBUG_MISSION, "SETUP_SPLINE_CAM_NODE_ARRAY_MICHAEL_TO_TREVOR_IN_HELI")
|
|
|
|
IF NOT thisSwitchCam.bInitialized
|
|
|
|
|
|
//--- Start of Cam Data ---
|
|
|
|
|
|
thisSwitchCam.nodes[0].SwitchCamType = SWITCH_CAM_OLD_SYSTEM
|
|
thisSwitchCam.nodes[0].iForceCamPointAtEntityIndex = -1
|
|
thisSwitchCam.nodes[0].bIsGameplayCamCopy = FALSE
|
|
thisSwitchCam.nodes[0].iNodeTime = 0
|
|
thisSwitchCam.nodes[0].vNodePos = <<-1.6973, 1.5316, 0.6956>>
|
|
thisSwitchCam.nodes[0].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[0].fNodeOffsetDist = 0.0000
|
|
thisSwitchCam.nodes[0].fNodeVerticleOffset = 0.0000
|
|
thisSwitchCam.nodes[0].bAttachToOriginPed = FALSE
|
|
thisSwitchCam.nodes[0].vNodeDir = <<-3.7170, -0.0056, -143.2630>>
|
|
thisSwitchCam.nodes[0].bPointAtEntity = FALSE
|
|
thisSwitchCam.nodes[0].bPointAtOffsetIsRelative = FALSE
|
|
thisSwitchCam.nodes[0].bAttachOffsetIsRelative = TRUE
|
|
thisSwitchCam.nodes[0].fNodeFOV = 30.0000
|
|
thisSwitchCam.nodes[0].vClonedNodeOffset = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[0].iNodeToClone = 0
|
|
thisSwitchCam.nodes[0].NodeTimePostFX_Type = NO_EFFECT
|
|
thisSwitchCam.nodes[0].fNodeTimePostFXBlendTime = 0.0000
|
|
thisSwitchCam.nodes[0].fNodeTimePostFXTimeOffset = 0.0000
|
|
thisSwitchCam.nodes[0].fNodeMotionBlur = 0.0000
|
|
thisSwitchCam.nodes[0].NodeCamShakeType = CAM_SHAKE_DEFAULT
|
|
thisSwitchCam.nodes[0].fNodeCamShake = 0.0000
|
|
thisSwitchCam.nodes[0].iCamEaseType = 0
|
|
thisSwitchCam.nodes[0].fCamEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[0].fCamNodeVelocityScale = 0.0000
|
|
thisSwitchCam.nodes[0].bCamEaseForceLinear = TRUE
|
|
thisSwitchCam.nodes[0].bCamEaseForceLevel = FALSE
|
|
thisSwitchCam.nodes[0].fTimeScale = 1.0000
|
|
thisSwitchCam.nodes[0].iTimeScaleEaseType = 0
|
|
thisSwitchCam.nodes[0].fTimeScaleEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[0].bFlashEnabled = FALSE
|
|
thisSwitchCam.nodes[0].SCFE_FlashEffectUsed = SCFE_CODE_FLASH
|
|
thisSwitchCam.nodes[0].fMinExposure = 0.0000
|
|
thisSwitchCam.nodes[0].fMaxExposure = 0.0000
|
|
thisSwitchCam.nodes[0].iRampUpDuration = 0
|
|
thisSwitchCam.nodes[0].iRampDownDuration = 0
|
|
thisSwitchCam.nodes[0].iHoldDuration = 0
|
|
thisSwitchCam.nodes[0].fFlashNodePhaseOffset = 0.0000
|
|
thisSwitchCam.nodes[0].bIsLowDetailNode = TRUE
|
|
thisSwitchCam.nodes[0].bUseCustomDOF = FALSE
|
|
thisSwitchCam.nodes[0].NodeDOF_Info.fDOF_NearDOF = 0.0000
|
|
thisSwitchCam.nodes[0].NodeDOF_Info.fDOF_FarDOF = 0.0000
|
|
thisSwitchCam.nodes[0].NodeDOF_Info.fDOF_EffectStrength = 0.0000
|
|
|
|
thisSwitchCam.nodes[1].SwitchCamType = SWITCH_CAM_OLD_SYSTEM
|
|
thisSwitchCam.nodes[1].iForceCamPointAtEntityIndex = -1
|
|
thisSwitchCam.nodes[1].bIsGameplayCamCopy = FALSE
|
|
thisSwitchCam.nodes[1].iNodeTime = 1500
|
|
thisSwitchCam.nodes[1].vNodePos = <<-1.6297, 1.5037, 0.6884>>
|
|
thisSwitchCam.nodes[1].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[1].fNodeOffsetDist = 0.0000
|
|
thisSwitchCam.nodes[1].fNodeVerticleOffset = 0.0000
|
|
thisSwitchCam.nodes[1].bAttachToOriginPed = FALSE
|
|
thisSwitchCam.nodes[1].vNodeDir = <<-3.7170, -0.0056, -143.2630>>
|
|
thisSwitchCam.nodes[1].bPointAtEntity = FALSE
|
|
thisSwitchCam.nodes[1].bPointAtOffsetIsRelative = FALSE
|
|
thisSwitchCam.nodes[1].bAttachOffsetIsRelative = TRUE
|
|
thisSwitchCam.nodes[1].fNodeFOV = 30.0000
|
|
thisSwitchCam.nodes[1].vClonedNodeOffset = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[1].iNodeToClone = 0
|
|
thisSwitchCam.nodes[1].NodeTimePostFX_Type = NO_EFFECT
|
|
thisSwitchCam.nodes[1].fNodeTimePostFXBlendTime = 1.0000
|
|
thisSwitchCam.nodes[1].fNodeTimePostFXTimeOffset = 0.0000
|
|
thisSwitchCam.nodes[1].fNodeMotionBlur = 0.0000
|
|
thisSwitchCam.nodes[1].NodeCamShakeType = CAM_SHAKE_DEFAULT
|
|
thisSwitchCam.nodes[1].fNodeCamShake = 0.0000
|
|
thisSwitchCam.nodes[1].iCamEaseType = 2
|
|
thisSwitchCam.nodes[1].fCamEaseScaler = 1.0000
|
|
thisSwitchCam.nodes[1].fCamNodeVelocityScale = 0.0000
|
|
thisSwitchCam.nodes[1].bCamEaseForceLinear = TRUE
|
|
thisSwitchCam.nodes[1].bCamEaseForceLevel = FALSE
|
|
thisSwitchCam.nodes[1].fTimeScale = 1.0000
|
|
thisSwitchCam.nodes[1].iTimeScaleEaseType = 0
|
|
thisSwitchCam.nodes[1].fTimeScaleEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[1].bFlashEnabled = TRUE
|
|
thisSwitchCam.nodes[1].SCFE_FlashEffectUsed = SCFE_SwitchShortMichaelIn
|
|
thisSwitchCam.nodes[1].fMinExposure = 0.0000
|
|
thisSwitchCam.nodes[1].fMaxExposure = 0.0000
|
|
thisSwitchCam.nodes[1].iRampUpDuration = 0
|
|
thisSwitchCam.nodes[1].iRampDownDuration = 0
|
|
thisSwitchCam.nodes[1].iHoldDuration = 0
|
|
thisSwitchCam.nodes[1].fFlashNodePhaseOffset = 0.8
|
|
thisSwitchCam.nodes[1].bIsLowDetailNode = TRUE
|
|
thisSwitchCam.nodes[1].bUseCustomDOF = FALSE
|
|
thisSwitchCam.nodes[1].NodeDOF_Info.fDOF_NearDOF = 0.0000
|
|
thisSwitchCam.nodes[1].NodeDOF_Info.fDOF_FarDOF = 0.0000
|
|
thisSwitchCam.nodes[1].NodeDOF_Info.fDOF_EffectStrength = 0.0000
|
|
|
|
thisSwitchCam.nodes[2].SwitchCamType = SWITCH_CAM_OLD_SYSTEM
|
|
thisSwitchCam.nodes[2].iForceCamPointAtEntityIndex = -1
|
|
thisSwitchCam.nodes[2].bIsGameplayCamCopy = FALSE
|
|
thisSwitchCam.nodes[2].iNodeTime = 600
|
|
thisSwitchCam.nodes[2].vNodePos = <<-0.0425, 0.2776, 31.0641>>
|
|
thisSwitchCam.nodes[2].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[2].fNodeOffsetDist = 0.0000
|
|
thisSwitchCam.nodes[2].fNodeVerticleOffset = 0.0000
|
|
thisSwitchCam.nodes[2].bAttachToOriginPed = FALSE
|
|
thisSwitchCam.nodes[2].vNodeDir = <<-3.7170, -0.0060, -143.2626>>
|
|
thisSwitchCam.nodes[2].bPointAtEntity = FALSE
|
|
thisSwitchCam.nodes[2].bPointAtOffsetIsRelative = FALSE
|
|
thisSwitchCam.nodes[2].bAttachOffsetIsRelative = TRUE
|
|
thisSwitchCam.nodes[2].fNodeFOV = 30.0000
|
|
thisSwitchCam.nodes[2].vClonedNodeOffset = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[2].iNodeToClone = 0
|
|
thisSwitchCam.nodes[2].NodeTimePostFX_Type = NO_EFFECT
|
|
thisSwitchCam.nodes[2].fNodeTimePostFXBlendTime = 1.0000
|
|
thisSwitchCam.nodes[2].fNodeTimePostFXTimeOffset = 0.0000
|
|
thisSwitchCam.nodes[2].fNodeMotionBlur = 0.3000
|
|
thisSwitchCam.nodes[2].NodeCamShakeType = CAM_SHAKE_DEFAULT
|
|
thisSwitchCam.nodes[2].fNodeCamShake = 0.0000
|
|
thisSwitchCam.nodes[2].iCamEaseType = 1
|
|
thisSwitchCam.nodes[2].fCamEaseScaler = 0.4000
|
|
thisSwitchCam.nodes[2].fCamNodeVelocityScale = 0.0000
|
|
thisSwitchCam.nodes[2].bCamEaseForceLinear = TRUE
|
|
thisSwitchCam.nodes[2].bCamEaseForceLevel = FALSE
|
|
thisSwitchCam.nodes[2].fTimeScale = 1.0000
|
|
thisSwitchCam.nodes[2].iTimeScaleEaseType = 0
|
|
thisSwitchCam.nodes[2].fTimeScaleEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[2].bFlashEnabled = TRUE
|
|
thisSwitchCam.nodes[2].SCFE_FlashEffectUsed = SCFE_SwitchShortTrevorMid
|
|
thisSwitchCam.nodes[2].fMinExposure = 0.0000
|
|
thisSwitchCam.nodes[2].fMaxExposure = 0.0000
|
|
thisSwitchCam.nodes[2].iRampUpDuration = 0
|
|
thisSwitchCam.nodes[2].iRampDownDuration = 0
|
|
thisSwitchCam.nodes[2].iHoldDuration = 0
|
|
thisSwitchCam.nodes[2].fFlashNodePhaseOffset = 0.5500
|
|
thisSwitchCam.nodes[2].bIsLowDetailNode = TRUE
|
|
thisSwitchCam.nodes[2].bUseCustomDOF = FALSE
|
|
thisSwitchCam.nodes[2].NodeDOF_Info.fDOF_NearDOF = 0.0000
|
|
thisSwitchCam.nodes[2].NodeDOF_Info.fDOF_FarDOF = 0.0000
|
|
thisSwitchCam.nodes[2].NodeDOF_Info.fDOF_EffectStrength = 0.0000
|
|
|
|
thisSwitchCam.nodes[3].bIsCamCutNode = TRUE
|
|
|
|
thisSwitchCam.nodes[4].SwitchCamType = SWITCH_CAM_OLD_SYSTEM
|
|
thisSwitchCam.nodes[4].iForceCamPointAtEntityIndex = -1
|
|
thisSwitchCam.nodes[4].bIsGameplayCamCopy = FALSE
|
|
thisSwitchCam.nodes[4].iNodeTime = 0
|
|
thisSwitchCam.nodes[4].vNodePos = <<-5.9937, 5.3838, -9.1104>>
|
|
thisSwitchCam.nodes[4].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[4].fNodeOffsetDist = 0.0000
|
|
thisSwitchCam.nodes[4].fNodeVerticleOffset = 0.0000
|
|
thisSwitchCam.nodes[4].bAttachToOriginPed = FALSE
|
|
thisSwitchCam.nodes[4].vNodeDir = <<-0.4838, -2.0393, -1.6781>>
|
|
thisSwitchCam.nodes[4].bPointAtEntity = TRUE
|
|
thisSwitchCam.nodes[4].bPointAtOffsetIsRelative = TRUE
|
|
thisSwitchCam.nodes[4].bAttachOffsetIsRelative = TRUE
|
|
thisSwitchCam.nodes[4].fNodeFOV = 35.0000
|
|
thisSwitchCam.nodes[4].vClonedNodeOffset = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[4].iNodeToClone = 0
|
|
thisSwitchCam.nodes[4].NodeTimePostFX_Type = NO_EFFECT
|
|
thisSwitchCam.nodes[4].fNodeTimePostFXBlendTime = 0.0000
|
|
thisSwitchCam.nodes[4].fNodeTimePostFXTimeOffset = 0.0000
|
|
thisSwitchCam.nodes[4].fNodeMotionBlur = 0.3000
|
|
thisSwitchCam.nodes[4].NodeCamShakeType = CAM_SHAKE_DEFAULT
|
|
thisSwitchCam.nodes[4].fNodeCamShake = 0.0000
|
|
thisSwitchCam.nodes[4].iCamEaseType = 1
|
|
thisSwitchCam.nodes[4].fCamEaseScaler = 1.0000
|
|
thisSwitchCam.nodes[4].fCamNodeVelocityScale = 0.0000
|
|
thisSwitchCam.nodes[4].bCamEaseForceLinear = TRUE
|
|
thisSwitchCam.nodes[4].bCamEaseForceLevel = FALSE
|
|
thisSwitchCam.nodes[4].fTimeScale = 1.0000
|
|
thisSwitchCam.nodes[4].iTimeScaleEaseType = 0
|
|
thisSwitchCam.nodes[4].fTimeScaleEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[4].bFlashEnabled = FALSE
|
|
thisSwitchCam.nodes[4].SCFE_FlashEffectUsed = SCFE_CODE_FLASH
|
|
thisSwitchCam.nodes[4].fMinExposure = 0.0000
|
|
thisSwitchCam.nodes[4].fMaxExposure = 0.0000
|
|
thisSwitchCam.nodes[4].iRampUpDuration = 0
|
|
thisSwitchCam.nodes[4].iRampDownDuration = 0
|
|
thisSwitchCam.nodes[4].iHoldDuration = 0
|
|
thisSwitchCam.nodes[4].fFlashNodePhaseOffset = 0.0000
|
|
thisSwitchCam.nodes[4].bIsLowDetailNode = TRUE
|
|
thisSwitchCam.nodes[4].bUseCustomDOF = FALSE
|
|
thisSwitchCam.nodes[4].NodeDOF_Info.fDOF_NearDOF = 0.0000
|
|
thisSwitchCam.nodes[4].NodeDOF_Info.fDOF_FarDOF = 0.0000
|
|
thisSwitchCam.nodes[4].NodeDOF_Info.fDOF_EffectStrength = 0.0000
|
|
|
|
thisSwitchCam.nodes[5].SwitchCamType = SWITCH_ENTITY_ATTACHED_CAM
|
|
thisSwitchCam.nodes[5].iForceCamPointAtEntityIndex = -1
|
|
thisSwitchCam.nodes[5].bIsGameplayCamCopy = FALSE
|
|
thisSwitchCam.nodes[5].iNodeTime = 900
|
|
thisSwitchCam.nodes[5].vNodePos = <<-1.2508, 1.3896, 0.2707>>
|
|
thisSwitchCam.nodes[5].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[5].fNodeOffsetDist = 0.0000
|
|
thisSwitchCam.nodes[5].fNodeVerticleOffset = 0.0000
|
|
thisSwitchCam.nodes[5].bAttachToOriginPed = FALSE
|
|
thisSwitchCam.nodes[5].vNodeDir = <<-0.0555, 0.0160, 0.4621>>
|
|
thisSwitchCam.nodes[5].bPointAtEntity = TRUE
|
|
thisSwitchCam.nodes[5].bPointAtOffsetIsRelative = TRUE
|
|
thisSwitchCam.nodes[5].bAttachOffsetIsRelative = TRUE
|
|
thisSwitchCam.nodes[5].fNodeFOV = 35.0000
|
|
thisSwitchCam.nodes[5].vClonedNodeOffset = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[5].iNodeToClone = 0
|
|
thisSwitchCam.nodes[5].NodeTimePostFX_Type = NO_EFFECT
|
|
thisSwitchCam.nodes[5].fNodeTimePostFXBlendTime = 1.0000
|
|
thisSwitchCam.nodes[5].fNodeTimePostFXTimeOffset = 0.0000
|
|
thisSwitchCam.nodes[5].fNodeMotionBlur = 0.0000
|
|
thisSwitchCam.nodes[5].NodeCamShakeType = CAM_SHAKE_DEFAULT
|
|
thisSwitchCam.nodes[5].fNodeCamShake = 0.0000
|
|
thisSwitchCam.nodes[5].iCamEaseType = 0
|
|
thisSwitchCam.nodes[5].fCamEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[5].fCamNodeVelocityScale = 0.0000
|
|
thisSwitchCam.nodes[5].bCamEaseForceLinear = FALSE
|
|
thisSwitchCam.nodes[5].bCamEaseForceLevel = FALSE
|
|
thisSwitchCam.nodes[5].fTimeScale = 1.0000
|
|
thisSwitchCam.nodes[5].iTimeScaleEaseType = 0
|
|
thisSwitchCam.nodes[5].fTimeScaleEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[5].bFlashEnabled = FALSE
|
|
thisSwitchCam.nodes[5].SCFE_FlashEffectUsed = SCFE_CODE_FLASH
|
|
thisSwitchCam.nodes[5].fMinExposure = 0.0000
|
|
thisSwitchCam.nodes[5].fMaxExposure = 0.0000
|
|
thisSwitchCam.nodes[5].iRampUpDuration = 0
|
|
thisSwitchCam.nodes[5].iRampDownDuration = 0
|
|
thisSwitchCam.nodes[5].iHoldDuration = 0
|
|
thisSwitchCam.nodes[5].fFlashNodePhaseOffset = 0.0000
|
|
thisSwitchCam.nodes[5].bIsLowDetailNode = TRUE
|
|
thisSwitchCam.nodes[5].bUseCustomDOF = FALSE
|
|
thisSwitchCam.nodes[5].NodeDOF_Info.fDOF_NearDOF = 0.0000
|
|
thisSwitchCam.nodes[5].NodeDOF_Info.fDOF_FarDOF = 0.0000
|
|
thisSwitchCam.nodes[5].NodeDOF_Info.fDOF_EffectStrength = 0.0000
|
|
|
|
thisSwitchCam.nodes[6].SwitchCamType = SWITCH_ENTITY_ATTACHED_CAM
|
|
thisSwitchCam.nodes[6].iForceCamPointAtEntityIndex = -1
|
|
thisSwitchCam.nodes[6].bIsGameplayCamCopy = FALSE
|
|
thisSwitchCam.nodes[6].iNodeTime = 4500
|
|
thisSwitchCam.nodes[6].vNodePos = <<-1.0556, 1.4287, 0.1626>>
|
|
thisSwitchCam.nodes[6].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[6].fNodeOffsetDist = 0.0000
|
|
thisSwitchCam.nodes[6].fNodeVerticleOffset = 0.0000
|
|
thisSwitchCam.nodes[6].bAttachToOriginPed = FALSE
|
|
thisSwitchCam.nodes[6].vNodeDir = <<-0.0441, 0.0195, 0.3618>>
|
|
thisSwitchCam.nodes[6].bPointAtEntity = TRUE
|
|
thisSwitchCam.nodes[6].bPointAtOffsetIsRelative = TRUE
|
|
thisSwitchCam.nodes[6].bAttachOffsetIsRelative = TRUE
|
|
thisSwitchCam.nodes[6].fNodeFOV = 35.0000
|
|
thisSwitchCam.nodes[6].vClonedNodeOffset = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[6].iNodeToClone = 0
|
|
thisSwitchCam.nodes[6].NodeTimePostFX_Type = NO_EFFECT
|
|
thisSwitchCam.nodes[6].fNodeTimePostFXBlendTime = 0.0000
|
|
thisSwitchCam.nodes[6].fNodeTimePostFXTimeOffset = 0.9800
|
|
thisSwitchCam.nodes[6].fNodeMotionBlur = 0.0000
|
|
thisSwitchCam.nodes[6].NodeCamShakeType = CAM_SHAKE_DEFAULT
|
|
thisSwitchCam.nodes[6].fNodeCamShake = 0.0000
|
|
thisSwitchCam.nodes[6].iCamEaseType = 0
|
|
thisSwitchCam.nodes[6].fCamEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[6].fCamNodeVelocityScale = 0.0000
|
|
thisSwitchCam.nodes[6].bCamEaseForceLinear = FALSE
|
|
thisSwitchCam.nodes[6].bCamEaseForceLevel = FALSE
|
|
thisSwitchCam.nodes[6].fTimeScale = 1.0000
|
|
thisSwitchCam.nodes[6].iTimeScaleEaseType = 0
|
|
thisSwitchCam.nodes[6].fTimeScaleEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[6].bFlashEnabled = FALSE
|
|
thisSwitchCam.nodes[6].SCFE_FlashEffectUsed = SCFE_CODE_FLASH
|
|
thisSwitchCam.nodes[6].fMinExposure = 0.0000
|
|
thisSwitchCam.nodes[6].fMaxExposure = 0.0000
|
|
thisSwitchCam.nodes[6].iRampUpDuration = 0
|
|
thisSwitchCam.nodes[6].iRampDownDuration = 0
|
|
thisSwitchCam.nodes[6].iHoldDuration = 0
|
|
thisSwitchCam.nodes[6].fFlashNodePhaseOffset = 0.0000
|
|
thisSwitchCam.nodes[6].bIsLowDetailNode = FALSE
|
|
thisSwitchCam.nodes[6].bUseCustomDOF = FALSE
|
|
thisSwitchCam.nodes[6].NodeDOF_Info.fDOF_NearDOF = 0.0000
|
|
thisSwitchCam.nodes[6].NodeDOF_Info.fDOF_FarDOF = 0.0000
|
|
thisSwitchCam.nodes[6].NodeDOF_Info.fDOF_EffectStrength = 0.0000
|
|
|
|
thisSwitchCam.iNumNodes = 7
|
|
thisSwitchCam.iCamSwitchFocusNode = 3
|
|
thisSwitchCam.fSwitchSoundAudioStartPhase = 0.170
|
|
thisSwitchCam.fSwitchSoundAudioEndPhase = 0.28
|
|
thisSwitchCam.bSwitchSoundPlayOpeningPulse = TRUE
|
|
thisSwitchCam.bSwitchSoundPlayMoveLoop = TRUE
|
|
thisSwitchCam.bSwitchSoundPlayExitPulse = FALSE
|
|
thisSwitchCam.bSplineNoSmoothing = TRUE
|
|
thisSwitchCam.bAddGameplayCamAsLastNode = TRUE
|
|
thisSwitchCam.iGameplayNodeBlendDuration = 0
|
|
|
|
|
|
//--- End of Cam Data ---
|
|
|
|
|
|
thisSwitchCam.strOutputStructName = "thisSwitchCam"
|
|
thisSwitchCam.strOutputFileName = "CameraInfo_BigScore_MichaelToTrevorInHeli.txt"
|
|
thisSwitchCam.strXMLFileName = "CameraInfo_BigScore_MichaelToTrevorInHeli.xml"
|
|
|
|
|
|
thisSwitchCam.bInitialized = TRUE
|
|
ENDIF
|
|
|
|
thisSwitchCam.piPeds[0] = piMichael
|
|
thisSwitchCam.piPeds[1] = piTrevor
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
/// PURPOSE:
|
|
/// Handle the playback of the switch cam. The will setup, play, shut down and cleanup the switch cam spline
|
|
/// PARAMS:
|
|
/// thisSwitchCam - Switch camera to playback
|
|
/// bReturnTrueOnce - If you only want this function to return TRUE once upon completion. Set to FALSE to have this function to return true every time this is called once the camera is finished playback.
|
|
/// RETURNS:
|
|
/// TRUE when camera is complete, FALSE if playback is still active, or if the camera has completed playback and bReturnTrueOnce is set to TRUE.
|
|
FUNC BOOL HANDLE_SWITCH_CAM_MICHAEL_TO_TREVOR_IN_HELI(SWITCH_CAM_STRUCT &thisSwitchCam, BOOL bReturnTrueOnce = TRUE)
|
|
|
|
INT iCurrentNode
|
|
VECTOR vHeliPos
|
|
|
|
SWITCH eSwitchCamState
|
|
|
|
CASE SWITCH_CAM_IDLE
|
|
CDEBUG3LN(DEBUG_MISSION, "HANDLE_SWITCH_CAM_MICHAEL_TO_TREVOR_IN_HELI: eSwitchCamState = SWITCH_CAM_IDLE")
|
|
BREAK
|
|
|
|
CASE SWITCH_CAM_SETUP_SPLINE_1
|
|
CDEBUG3LN(DEBUG_MISSION, "HANDLE_SWITCH_CAM_MICHAEL_TO_TREVOR_IN_HELI: eSwitchCamState = SWITCH_CAM_SETUP_SPLINE_1")
|
|
eSavedMode = GET_FOLLOW_VEHICLE_CAM_VIEW_MODE()
|
|
//[MF] If this switch cam exists, delete it and we'll create a fresh one.
|
|
IF DOES_SWITCH_CAM_EXIST(scsSwitchCamMichaelToTrevorInHeli)
|
|
DESTROY_SWITCH_CAM(scsSwitchCamMichaelToTrevorInHeli)
|
|
ENDIF
|
|
|
|
//[MF] Destroying previous switch cam since we delay destroying it until the cutscene begins
|
|
IF DOES_SWITCH_CAM_EXIST(scsSwitchCamTrevorInHeliToMichael)
|
|
DESTROY_SWITCH_CAM(scsSwitchCamTrevorInHeliToMichael)
|
|
ENDIF
|
|
|
|
TASK_PLAY_ANIM(peds[mpf_franklin].id, sSwitchAnimLibrary_MikeAndFrankAnims, "bss_1_mcs_2_leadout_fra", INSTANT_BLEND_IN, DEFAULT, -1, AF_NOT_INTERRUPTABLE)
|
|
TASK_PLAY_ANIM(peds[mpf_michael].id, sSwitchAnimLibrary_MikeAndFrankAnims, "bss_1_mcs_2_leadout_mic", INSTANT_BLEND_IN, DEFAULT, -1, AF_NOT_INTERRUPTABLE)
|
|
FORCE_PED_AI_AND_ANIMATION_UPDATE(peds[mpf_michael].id, TRUE)
|
|
|
|
SETUP_SPLINE_CAM_NODE_ARRAY_MICHAEL_TO_TREVOR_IN_HELI(thisSwitchCam, peds[mpf_michael].id, peds[mpf_trevor].id)
|
|
|
|
CREATE_SPLINE_CAM(thisSwitchCam)
|
|
|
|
DELETE_ALL_CARS_IN_UBER_PLAYBACK()
|
|
|
|
SET_CAM_ACTIVE(thisSwitchCam.ciSpline, TRUE)
|
|
RENDER_SCRIPT_CAMS(TRUE, FALSE)
|
|
SET_FORCE_HD_VEHICLE(vehs[mvf_helicopter].id, TRUE)
|
|
|
|
DISPLAY_RADAR(FALSE)
|
|
DISPLAY_HUD(FALSE)
|
|
|
|
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
|
|
bPlayerControlGiven = FALSE
|
|
|
|
SET_RENDER_HD_ONLY(FALSE)
|
|
|
|
FREEZE_ENTITY_POSITION(vehs[mvf_helicopter].id, FALSE)
|
|
|
|
thisSwitchCam.bIsSplineCamFinishedPlaying = FALSE
|
|
|
|
bMichaelCarToTrevHeli_AnimsStarted = FALSE
|
|
bPushInToFirstPerson = FALSE
|
|
|
|
vHeliPos = GET_ENTITY_COORDS(vehs[mvf_helicopter].id)
|
|
IF vHeliPos.Z < 40.0
|
|
vHeliPos.Z += 70.0
|
|
SET_ENTITY_COORDS(vehs[mvf_helicopter].id, vHeliPos)
|
|
ENDIF
|
|
|
|
eSwitchCamState = SWITCH_CAM_PLAYING_SPLINE_1
|
|
BREAK
|
|
|
|
CASE SWITCH_CAM_PLAYING_SPLINE_1
|
|
CDEBUG3LN(DEBUG_MISSION, "eSwitchCamState = SWITCH_CAM_PLAYING_SPLINE_1 ", GET_CAM_SPLINE_PHASE(thisSwitchCam.ciSpline))
|
|
|
|
iCurrentNode = UPDATE_SPLINE_CAM(thisSwitchCam)
|
|
|
|
IF IS_CAM_ACTIVE(thisSwitchCam.ciSpline)
|
|
|
|
IF iCurrentNode >= thisSwitchCam.iCamSwitchFocusNode
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING(fGameplayCamHeadingMichaelToTrevorInHeli)
|
|
SET_GAMEPLAY_CAM_RELATIVE_PITCH(fGameplayCamPitchMichaelToTrevorInHeli)
|
|
ENDIF
|
|
|
|
IF iCurrentNode >= thisSwitchCam.iCamSwitchFocusNode
|
|
OVERRIDE_LODSCALE_THIS_FRAME(fMichaelCarToTrevHeli_Low_LOD_Level)
|
|
IF NOT sCamDetails.bOKToSwitchPed
|
|
PRINTLN("Switching Player...")
|
|
sCamDetails.bOKToSwitchPed = TRUE
|
|
|
|
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_helicopter].id)
|
|
STOP_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_helicopter].id)
|
|
ENDIF
|
|
|
|
STREAMVOL_DELETE(sid_TrevHeliToMichael_BankRear)
|
|
|
|
//[MF] Load low LOD mountain details
|
|
sid_MichaelToTrevHeli_LowLODFrustrum = STREAMVOL_CREATE_FRUSTUM(GET_ENTITY_COORDS(peds[mpf_trevor].id), GET_ENTITY_FORWARD_VECTOR(peds[mpf_trevor].id), fMichaelCarToTrevHeli_SwitchCamLowLodFrustrumDist, FLAG_MAPDATA, STREAMVOL_LOD_FLAG_LOW)
|
|
SET_RENDER_HD_ONLY(FALSE)
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF NOT bMichaelCarToTrevHeli_AnimsStarted
|
|
IF GET_PLAYER_PED_ENUM(PLAYER_PED_ID()) = CHAR_TREVOR
|
|
CPRINTLN(DEBUG_MISSION,"Playing Trevor Switch Cam Anim")
|
|
TASK_PLAY_ANIM(peds[mpf_trevor].id, sSwitchAnimLibraryTrevToCar_HeliAnims, "mid_mission_inside_helicopter_trevor", DEFAULT, REALLY_SLOW_BLEND_OUT, -1, AF_NOT_INTERRUPTABLE)
|
|
TASK_PLAY_ANIM(peds[mpf_lester].id, sSwitchAnimLibraryTrevToCar_HeliAnims, "mid_mission_inside_helicopter_lester", DEFAULT, SLOW_BLEND_OUT, -1, AF_NOT_INTERRUPTABLE)
|
|
FORCE_PED_AI_AND_ANIMATION_UPDATE(peds[mpf_trevor].id)
|
|
FORCE_PED_AI_AND_ANIMATION_UPDATE(peds[mpf_lester].id)
|
|
bMichaelCarToTrevHeli_AnimsStarted = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF NOT bPushInToFirstPerson
|
|
IF (GET_CAM_SPLINE_PHASE(thisSwitchCam.ciSpline) >= 0.7 AND eSavedMode = CAM_VIEW_MODE_FIRST_PERSON)
|
|
PRINTLN("@@@@@@@@@@@ ANIMPOSTFX_PLAY - CamPushInNeutral @@@@@@@@@@@")
|
|
ANIMPOSTFX_PLAY("CamPushInNeutral", 0, FALSE)
|
|
PLAY_SOUND_FRONTEND(-1, "1st_Person_Transition", "PLAYER_SWITCH_CUSTOM_SOUNDSET")
|
|
bPushInToFirstPerson = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF GET_CAM_SPLINE_PHASE(thisSwitchCam.ciSpline) >= 1.00
|
|
OR (STREAMVOL_HAS_LOADED(sid_MichaelToTrevHeli_LowLODFrustrum) AND GET_CAM_SPLINE_PHASE(thisSwitchCam.ciSpline) >= 0.8)
|
|
CDEBUG3LN(DEBUG_MISSION, "eSwitchCamState = SWITCH_CAM_RETURN_TO_GAMEPLAY")
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING(fGameplayCamHeadingMichaelToTrevorInHeli)
|
|
SET_GAMEPLAY_CAM_RELATIVE_PITCH(fGameplayCamPitchMichaelToTrevorInHeli)
|
|
RENDER_SCRIPT_CAMS(FALSE, FALSE)
|
|
SET_RENDER_HD_ONLY(FALSE)
|
|
eSwitchCamState = SWITCH_CAM_RETURN_TO_GAMEPLAY
|
|
ENDIF
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE SWITCH_CAM_RETURN_TO_GAMEPLAY
|
|
CDEBUG3LN(DEBUG_MISSION, "eSwitchCamState = SWITCH_CAM_RETURN_TO_GAMEPLAY")
|
|
|
|
SET_TIME_SCALE(1.0)
|
|
|
|
CDEBUG3LN(DEBUG_MISSION, "eSwitchCamState = DESTROY_CAM(thisSwitchCam.ciSpline)")
|
|
IF DOES_CAM_EXIST(thisSwitchCam.ciSpline)
|
|
SET_CAM_ACTIVE(thisSwitchCam.ciSpline, FALSE)
|
|
DESTROY_CAM(thisSwitchCam.ciSpline)
|
|
ENDIF
|
|
DESTROY_ALL_CAMS()
|
|
|
|
IF NOT bPlayerControlGiven
|
|
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
|
DISPLAY_RADAR(TRUE)
|
|
DISPLAY_HUD(TRUE)
|
|
bPlayerControlGiven = TRUE
|
|
ENDIF
|
|
|
|
CLEAR_PED_TASKS(peds[mpf_trevor].id)
|
|
|
|
REMOVE_ANIM_DICT(sSwitchAnimLibraryTrevToCar_HeliAnims)
|
|
REMOVE_ANIM_DICT(sSwitchAnimLibrary_MikeAndFrankAnims)
|
|
UNLOAD_ALL_CAM_SHAKE_ANIM_LIBRARIES()
|
|
|
|
SET_TO_DEFAULT_DETAIL_RENDERING(DEFAULT, 2)
|
|
SET_FORCE_HD_VEHICLE(vehs[mvf_helicopter].id, FALSE)
|
|
|
|
SETTIMERA(0)
|
|
|
|
STREAMVOL_DELETE(sid_MichaelToTrevHeli_LowLODFrustrum)
|
|
eSwitchCamState = SWITCH_CAM_IDLE
|
|
thisSwitchCam.bIsSplineCamFinishedPlaying = TRUE
|
|
|
|
ROLL_UP_WINDOW(vehs[mvf_Michael_veh].id, SC_WINDOW_FRONT_LEFT)
|
|
ROLL_UP_WINDOW(vehs[mvf_Michael_veh].id, SC_WINDOW_FRONT_RIGHT)
|
|
|
|
RETURN TRUE
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
IF bReturnTrueOnce
|
|
RETURN FALSE
|
|
ELSE
|
|
RETURN thisSwitchCam.bIsSplineCamFinishedPlaying
|
|
ENDIF
|
|
ENDFUNC
|
|
|
|
|
|
/// PURPOSE:
|
|
/// Setup the individual spline node cam data for each node in the scripted switch cam
|
|
/// PARAMS:
|
|
/// thisSwitchCam - Switch cam to setup the spline node data for
|
|
/// piMichael - Michael's current ped index
|
|
/// piTrevor - Trevor's current ped index
|
|
PROC SETUP_SPLINE_CAM_NODE_ARRAY_TREVOR_IN_HELI_TO_MICHAEL(SWITCH_CAM_STRUCT &thisSwitchCam, PED_INDEX &piTrevor, PED_INDEX &piMichael)
|
|
CDEBUG3LN(DEBUG_MISSION, "SETUP_SPLINE_CAM_NODE_ARRAY_TREVOR_IN_HELI_TO_MICHAEL")
|
|
|
|
IF NOT thisSwitchCam.bInitialized
|
|
|
|
//--- Start of Cam Data ---
|
|
|
|
|
|
thisSwitchCam.nodes[0].SwitchCamType = SWITCH_CAM_OLD_SYSTEM
|
|
thisSwitchCam.nodes[0].iForceCamPointAtEntityIndex = -1
|
|
thisSwitchCam.nodes[0].bIsGameplayCamCopy = FALSE
|
|
thisSwitchCam.nodes[0].iNodeTime = 0
|
|
thisSwitchCam.nodes[0].vNodePos = <<-1.3574, 1.8668, -0.2382>>
|
|
thisSwitchCam.nodes[0].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[0].fNodeOffsetDist = 0.0000
|
|
thisSwitchCam.nodes[0].fNodeVerticleOffset = 0.0000
|
|
thisSwitchCam.nodes[0].bAttachToOriginPed = FALSE
|
|
thisSwitchCam.nodes[0].vNodeDir = <<0.0874, 0.1445, 0.2509>>
|
|
thisSwitchCam.nodes[0].bPointAtEntity = TRUE
|
|
thisSwitchCam.nodes[0].bPointAtOffsetIsRelative = TRUE
|
|
thisSwitchCam.nodes[0].bAttachOffsetIsRelative = TRUE
|
|
thisSwitchCam.nodes[0].fNodeFOV = 30.0000
|
|
thisSwitchCam.nodes[0].vClonedNodeOffset = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[0].iNodeToClone = 0
|
|
thisSwitchCam.nodes[0].NodeTimePostFX_Type = NO_EFFECT
|
|
thisSwitchCam.nodes[0].fNodeTimePostFXBlendTime = 0.0000
|
|
thisSwitchCam.nodes[0].fNodeTimePostFXTimeOffset = 0.0000
|
|
thisSwitchCam.nodes[0].fNodeMotionBlur = 0.0000
|
|
thisSwitchCam.nodes[0].NodeCamShakeType = CAM_SHAKE_DEFAULT
|
|
thisSwitchCam.nodes[0].fNodeCamShake = 0.0000
|
|
thisSwitchCam.nodes[0].iCamEaseType = 0
|
|
thisSwitchCam.nodes[0].fCamEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[0].fCamNodeVelocityScale = 0.0000
|
|
thisSwitchCam.nodes[0].bCamEaseForceLinear = TRUE
|
|
thisSwitchCam.nodes[0].bCamEaseForceLevel = FALSE
|
|
thisSwitchCam.nodes[0].fTimeScale = 1.0000
|
|
thisSwitchCam.nodes[0].iTimeScaleEaseType = 0
|
|
thisSwitchCam.nodes[0].fTimeScaleEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[0].bFlashEnabled = FALSE
|
|
thisSwitchCam.nodes[0].SCFE_FlashEffectUsed = SCFE_CODE_FLASH
|
|
thisSwitchCam.nodes[0].fMinExposure = 0.0000
|
|
thisSwitchCam.nodes[0].fMaxExposure = 0.0000
|
|
thisSwitchCam.nodes[0].iRampUpDuration = 0
|
|
thisSwitchCam.nodes[0].iRampDownDuration = 0
|
|
thisSwitchCam.nodes[0].iHoldDuration = 0
|
|
thisSwitchCam.nodes[0].fFlashNodePhaseOffset = 0.0000
|
|
thisSwitchCam.nodes[0].bIsLowDetailNode = TRUE
|
|
thisSwitchCam.nodes[0].bUseCustomDOF = TRUE
|
|
thisSwitchCam.nodes[0].NodeDOF_Info.fDOF_NearDOF = 0.0600
|
|
thisSwitchCam.nodes[0].NodeDOF_Info.fDOF_FarDOF = 10.0000
|
|
thisSwitchCam.nodes[0].NodeDOF_Info.fDOF_EffectStrength = 1.0000
|
|
|
|
thisSwitchCam.nodes[1].SwitchCamType = SWITCH_CAM_OLD_SYSTEM
|
|
thisSwitchCam.nodes[1].iForceCamPointAtEntityIndex = -1
|
|
thisSwitchCam.nodes[1].bIsGameplayCamCopy = FALSE
|
|
thisSwitchCam.nodes[1].iNodeTime = 1500
|
|
thisSwitchCam.nodes[1].vNodePos = <<-1.4130, 1.5631, 0.1155>>
|
|
thisSwitchCam.nodes[1].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[1].fNodeOffsetDist = 0.0000
|
|
thisSwitchCam.nodes[1].fNodeVerticleOffset = 0.0000
|
|
thisSwitchCam.nodes[1].bAttachToOriginPed = FALSE
|
|
thisSwitchCam.nodes[1].vNodeDir = <<-0.0956, 0.0073, 0.4327>>
|
|
thisSwitchCam.nodes[1].bPointAtEntity = TRUE
|
|
thisSwitchCam.nodes[1].bPointAtOffsetIsRelative = TRUE
|
|
thisSwitchCam.nodes[1].bAttachOffsetIsRelative = TRUE
|
|
thisSwitchCam.nodes[1].fNodeFOV = 30.0000
|
|
thisSwitchCam.nodes[1].vClonedNodeOffset = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[1].iNodeToClone = 0
|
|
thisSwitchCam.nodes[1].NodeTimePostFX_Type = NO_EFFECT
|
|
thisSwitchCam.nodes[1].fNodeTimePostFXBlendTime = 1.0000
|
|
thisSwitchCam.nodes[1].fNodeTimePostFXTimeOffset = 0.0000
|
|
thisSwitchCam.nodes[1].fNodeMotionBlur = 0.0000
|
|
thisSwitchCam.nodes[1].NodeCamShakeType = CAM_SHAKE_DEFAULT
|
|
thisSwitchCam.nodes[1].fNodeCamShake = 0.0000
|
|
thisSwitchCam.nodes[1].iCamEaseType = 2
|
|
thisSwitchCam.nodes[1].fCamEaseScaler = 1.0000
|
|
thisSwitchCam.nodes[1].fCamNodeVelocityScale = 0.0000
|
|
thisSwitchCam.nodes[1].bCamEaseForceLinear = TRUE
|
|
thisSwitchCam.nodes[1].bCamEaseForceLevel = FALSE
|
|
thisSwitchCam.nodes[1].fTimeScale = 1.0000
|
|
thisSwitchCam.nodes[1].iTimeScaleEaseType = 0
|
|
thisSwitchCam.nodes[1].fTimeScaleEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[1].bFlashEnabled = TRUE
|
|
thisSwitchCam.nodes[1].SCFE_FlashEffectUsed = SCFE_SwitchShortTrevorIn
|
|
thisSwitchCam.nodes[1].fMinExposure = 0.0000
|
|
thisSwitchCam.nodes[1].fMaxExposure = 0.0000
|
|
thisSwitchCam.nodes[1].iRampUpDuration = 0
|
|
thisSwitchCam.nodes[1].iRampDownDuration = 0
|
|
thisSwitchCam.nodes[1].iHoldDuration = 0
|
|
thisSwitchCam.nodes[1].fFlashNodePhaseOffset = 0.9900
|
|
thisSwitchCam.nodes[1].bIsLowDetailNode = TRUE
|
|
thisSwitchCam.nodes[1].bUseCustomDOF = TRUE
|
|
thisSwitchCam.nodes[1].NodeDOF_Info.fDOF_NearDOF = 0.1000
|
|
thisSwitchCam.nodes[1].NodeDOF_Info.fDOF_FarDOF = 16.0000
|
|
thisSwitchCam.nodes[1].NodeDOF_Info.fDOF_EffectStrength = 1.0000
|
|
|
|
thisSwitchCam.nodes[2].SwitchCamType = SWITCH_CAM_OLD_SYSTEM
|
|
thisSwitchCam.nodes[2].iForceCamPointAtEntityIndex = -1
|
|
thisSwitchCam.nodes[2].bIsGameplayCamCopy = FALSE
|
|
thisSwitchCam.nodes[2].iNodeTime = 600
|
|
thisSwitchCam.nodes[2].vNodePos = <<-1.7076, 2.1871, 2.7493>>
|
|
thisSwitchCam.nodes[2].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[2].fNodeOffsetDist = 0.0000
|
|
thisSwitchCam.nodes[2].fNodeVerticleOffset = 0.0000
|
|
thisSwitchCam.nodes[2].bAttachToOriginPed = FALSE
|
|
thisSwitchCam.nodes[2].vNodeDir = <<-0.4081, 0.4474, 3.1630>>
|
|
thisSwitchCam.nodes[2].bPointAtEntity = TRUE
|
|
thisSwitchCam.nodes[2].bPointAtOffsetIsRelative = TRUE
|
|
thisSwitchCam.nodes[2].bAttachOffsetIsRelative = TRUE
|
|
thisSwitchCam.nodes[2].fNodeFOV = 30.0000
|
|
thisSwitchCam.nodes[2].vClonedNodeOffset = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[2].iNodeToClone = 0
|
|
thisSwitchCam.nodes[2].NodeTimePostFX_Type = NO_EFFECT
|
|
thisSwitchCam.nodes[2].fNodeTimePostFXBlendTime = 1.0000
|
|
thisSwitchCam.nodes[2].fNodeTimePostFXTimeOffset = 0.0000
|
|
thisSwitchCam.nodes[2].fNodeMotionBlur = 0.3000
|
|
thisSwitchCam.nodes[2].NodeCamShakeType = CAM_SHAKE_DEFAULT
|
|
thisSwitchCam.nodes[2].fNodeCamShake = 0.0000
|
|
thisSwitchCam.nodes[2].iCamEaseType = 1
|
|
thisSwitchCam.nodes[2].fCamEaseScaler = 0.5000
|
|
thisSwitchCam.nodes[2].fCamNodeVelocityScale = 0.0000
|
|
thisSwitchCam.nodes[2].bCamEaseForceLinear = TRUE
|
|
thisSwitchCam.nodes[2].bCamEaseForceLevel = FALSE
|
|
thisSwitchCam.nodes[2].fTimeScale = 1.0000
|
|
thisSwitchCam.nodes[2].iTimeScaleEaseType = 0
|
|
thisSwitchCam.nodes[2].fTimeScaleEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[2].bFlashEnabled = TRUE
|
|
thisSwitchCam.nodes[2].SCFE_FlashEffectUsed = SCFE_SwitchShortMichaelMid
|
|
thisSwitchCam.nodes[2].fMinExposure = 0.0000
|
|
thisSwitchCam.nodes[2].fMaxExposure = 0.0000
|
|
thisSwitchCam.nodes[2].iRampUpDuration = 0
|
|
thisSwitchCam.nodes[2].iRampDownDuration = 0
|
|
thisSwitchCam.nodes[2].iHoldDuration = 0
|
|
thisSwitchCam.nodes[2].fFlashNodePhaseOffset = 0.4000
|
|
thisSwitchCam.nodes[2].bIsLowDetailNode = TRUE
|
|
thisSwitchCam.nodes[2].bUseCustomDOF = TRUE
|
|
thisSwitchCam.nodes[2].NodeDOF_Info.fDOF_NearDOF = 0.1700
|
|
thisSwitchCam.nodes[2].NodeDOF_Info.fDOF_FarDOF = 20.0000
|
|
thisSwitchCam.nodes[2].NodeDOF_Info.fDOF_EffectStrength = 1.0000
|
|
|
|
thisSwitchCam.nodes[3].bIsCamCutNode = TRUE
|
|
|
|
thisSwitchCam.nodes[4].SwitchCamType = SWITCH_CAM_OLD_SYSTEM
|
|
thisSwitchCam.nodes[4].iForceCamPointAtEntityIndex = -1
|
|
thisSwitchCam.nodes[4].bIsGameplayCamCopy = FALSE
|
|
thisSwitchCam.nodes[4].iNodeTime = 0
|
|
thisSwitchCam.nodes[4].vNodePos = <<2.6577, 0.8505, -0.0030>>
|
|
thisSwitchCam.nodes[4].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[4].fNodeOffsetDist = 0.0000
|
|
thisSwitchCam.nodes[4].fNodeVerticleOffset = 0.0000
|
|
thisSwitchCam.nodes[4].bAttachToOriginPed = FALSE
|
|
thisSwitchCam.nodes[4].vNodeDir = <<-4.2795, 0.0000, 113.5217>>
|
|
thisSwitchCam.nodes[4].bPointAtEntity = FALSE
|
|
thisSwitchCam.nodes[4].bPointAtOffsetIsRelative = FALSE
|
|
thisSwitchCam.nodes[4].bAttachOffsetIsRelative = FALSE
|
|
thisSwitchCam.nodes[4].fNodeFOV = 40.0000
|
|
thisSwitchCam.nodes[4].vClonedNodeOffset = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[4].iNodeToClone = 0
|
|
thisSwitchCam.nodes[4].NodeTimePostFX_Type = NO_EFFECT
|
|
thisSwitchCam.nodes[4].fNodeTimePostFXBlendTime = 1.0000
|
|
thisSwitchCam.nodes[4].fNodeTimePostFXTimeOffset = 0.0000
|
|
thisSwitchCam.nodes[4].fNodeMotionBlur = 0.3000
|
|
thisSwitchCam.nodes[4].NodeCamShakeType = CAM_SHAKE_MEDIUM
|
|
thisSwitchCam.nodes[4].fNodeCamShake = 0.1500
|
|
thisSwitchCam.nodes[4].iCamEaseType = 1
|
|
thisSwitchCam.nodes[4].fCamEaseScaler = 1.0000
|
|
thisSwitchCam.nodes[4].fCamNodeVelocityScale = 0.0000
|
|
thisSwitchCam.nodes[4].bCamEaseForceLinear = TRUE
|
|
thisSwitchCam.nodes[4].bCamEaseForceLevel = FALSE
|
|
thisSwitchCam.nodes[4].fTimeScale = 1.0000
|
|
thisSwitchCam.nodes[4].iTimeScaleEaseType = 0
|
|
thisSwitchCam.nodes[4].fTimeScaleEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[4].bFlashEnabled = FALSE
|
|
thisSwitchCam.nodes[4].SCFE_FlashEffectUsed = SCFE_CODE_FLASH
|
|
thisSwitchCam.nodes[4].fMinExposure = 0.0000
|
|
thisSwitchCam.nodes[4].fMaxExposure = 0.0000
|
|
thisSwitchCam.nodes[4].iRampUpDuration = 0
|
|
thisSwitchCam.nodes[4].iRampDownDuration = 0
|
|
thisSwitchCam.nodes[4].iHoldDuration = 0
|
|
thisSwitchCam.nodes[4].fFlashNodePhaseOffset = 0.0000
|
|
thisSwitchCam.nodes[4].bIsLowDetailNode = TRUE
|
|
thisSwitchCam.nodes[4].bUseCustomDOF = FALSE
|
|
thisSwitchCam.nodes[4].NodeDOF_Info.fDOF_NearDOF = 0.0000
|
|
thisSwitchCam.nodes[4].NodeDOF_Info.fDOF_FarDOF = 0.0000
|
|
thisSwitchCam.nodes[4].NodeDOF_Info.fDOF_EffectStrength = 0.0000
|
|
|
|
thisSwitchCam.nodes[5].SwitchCamType = SWITCH_CAM_OLD_SYSTEM
|
|
thisSwitchCam.nodes[5].iForceCamPointAtEntityIndex = -1
|
|
thisSwitchCam.nodes[5].bIsGameplayCamCopy = FALSE
|
|
thisSwitchCam.nodes[5].iNodeTime = 500
|
|
thisSwitchCam.nodes[5].vNodePos = <<2.6138, 0.8314, 0.6365>>
|
|
thisSwitchCam.nodes[5].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[5].fNodeOffsetDist = 0.0000
|
|
thisSwitchCam.nodes[5].fNodeVerticleOffset = 0.0000
|
|
thisSwitchCam.nodes[5].bAttachToOriginPed = FALSE
|
|
thisSwitchCam.nodes[5].vNodeDir = <<-4.2795, 0.0000, 113.5217>>
|
|
thisSwitchCam.nodes[5].bPointAtEntity = FALSE
|
|
thisSwitchCam.nodes[5].bPointAtOffsetIsRelative = FALSE
|
|
thisSwitchCam.nodes[5].bAttachOffsetIsRelative = FALSE
|
|
thisSwitchCam.nodes[5].fNodeFOV = 40.0000
|
|
thisSwitchCam.nodes[5].vClonedNodeOffset = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[5].iNodeToClone = 0
|
|
thisSwitchCam.nodes[5].NodeTimePostFX_Type = NO_EFFECT
|
|
thisSwitchCam.nodes[5].fNodeTimePostFXBlendTime = 0.0000
|
|
thisSwitchCam.nodes[5].fNodeTimePostFXTimeOffset = 0.0000
|
|
thisSwitchCam.nodes[5].fNodeMotionBlur = 0.0000
|
|
thisSwitchCam.nodes[5].NodeCamShakeType = CAM_SHAKE_MEDIUM
|
|
thisSwitchCam.nodes[5].fNodeCamShake = 0.1500
|
|
thisSwitchCam.nodes[5].iCamEaseType = 1
|
|
thisSwitchCam.nodes[5].fCamEaseScaler = 0.9000
|
|
thisSwitchCam.nodes[5].fCamNodeVelocityScale = 0.0000
|
|
thisSwitchCam.nodes[5].bCamEaseForceLinear = TRUE
|
|
thisSwitchCam.nodes[5].bCamEaseForceLevel = FALSE
|
|
thisSwitchCam.nodes[5].fTimeScale = 1.0000
|
|
thisSwitchCam.nodes[5].iTimeScaleEaseType = 0
|
|
thisSwitchCam.nodes[5].fTimeScaleEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[5].bFlashEnabled = FALSE
|
|
thisSwitchCam.nodes[5].SCFE_FlashEffectUsed = SCFE_CODE_FLASH
|
|
thisSwitchCam.nodes[5].fMinExposure = 0.0000
|
|
thisSwitchCam.nodes[5].fMaxExposure = 0.0000
|
|
thisSwitchCam.nodes[5].iRampUpDuration = 0
|
|
thisSwitchCam.nodes[5].iRampDownDuration = 0
|
|
thisSwitchCam.nodes[5].iHoldDuration = 0
|
|
thisSwitchCam.nodes[5].fFlashNodePhaseOffset = 0.0000
|
|
thisSwitchCam.nodes[5].bIsLowDetailNode = TRUE
|
|
thisSwitchCam.nodes[5].bUseCustomDOF = FALSE
|
|
thisSwitchCam.nodes[5].NodeDOF_Info.fDOF_NearDOF = 0.0000
|
|
thisSwitchCam.nodes[5].NodeDOF_Info.fDOF_FarDOF = 0.0000
|
|
thisSwitchCam.nodes[5].NodeDOF_Info.fDOF_EffectStrength = 0.0000
|
|
|
|
thisSwitchCam.nodes[6].SwitchCamType = SWITCH_CAM_OLD_SYSTEM
|
|
thisSwitchCam.nodes[6].iForceCamPointAtEntityIndex = -1
|
|
thisSwitchCam.nodes[6].bIsGameplayCamCopy = FALSE
|
|
thisSwitchCam.nodes[6].iNodeTime = 1000
|
|
thisSwitchCam.nodes[6].vNodePos = <<2.5496, 0.8035, 0.6313>>
|
|
thisSwitchCam.nodes[6].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[6].fNodeOffsetDist = 0.0000
|
|
thisSwitchCam.nodes[6].fNodeVerticleOffset = 0.0000
|
|
thisSwitchCam.nodes[6].bAttachToOriginPed = FALSE
|
|
thisSwitchCam.nodes[6].vNodeDir = <<-4.2795, 0.0000, 113.5214>>
|
|
thisSwitchCam.nodes[6].bPointAtEntity = FALSE
|
|
thisSwitchCam.nodes[6].bPointAtOffsetIsRelative = FALSE
|
|
thisSwitchCam.nodes[6].bAttachOffsetIsRelative = FALSE
|
|
thisSwitchCam.nodes[6].fNodeFOV = 40.0000
|
|
thisSwitchCam.nodes[6].vClonedNodeOffset = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[6].iNodeToClone = 0
|
|
thisSwitchCam.nodes[6].NodeTimePostFX_Type = NO_EFFECT
|
|
thisSwitchCam.nodes[6].fNodeTimePostFXBlendTime = 0.0000
|
|
thisSwitchCam.nodes[6].fNodeTimePostFXTimeOffset = 0.0000
|
|
thisSwitchCam.nodes[6].fNodeMotionBlur = 0.0000
|
|
thisSwitchCam.nodes[6].NodeCamShakeType = CAM_SHAKE_MEDIUM
|
|
thisSwitchCam.nodes[6].fNodeCamShake = 0.2000
|
|
thisSwitchCam.nodes[6].iCamEaseType = 0
|
|
thisSwitchCam.nodes[6].fCamEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[6].fCamNodeVelocityScale = 0.0000
|
|
thisSwitchCam.nodes[6].bCamEaseForceLinear = TRUE
|
|
thisSwitchCam.nodes[6].bCamEaseForceLevel = FALSE
|
|
thisSwitchCam.nodes[6].fTimeScale = 1.0000
|
|
thisSwitchCam.nodes[6].iTimeScaleEaseType = 0
|
|
thisSwitchCam.nodes[6].fTimeScaleEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[6].bFlashEnabled = FALSE
|
|
thisSwitchCam.nodes[6].SCFE_FlashEffectUsed = SCFE_CODE_FLASH
|
|
thisSwitchCam.nodes[6].fMinExposure = 0.0000
|
|
thisSwitchCam.nodes[6].fMaxExposure = 0.0000
|
|
thisSwitchCam.nodes[6].iRampUpDuration = 0
|
|
thisSwitchCam.nodes[6].iRampDownDuration = 0
|
|
thisSwitchCam.nodes[6].iHoldDuration = 0
|
|
thisSwitchCam.nodes[6].fFlashNodePhaseOffset = 0.0000
|
|
thisSwitchCam.nodes[6].bIsLowDetailNode = FALSE
|
|
thisSwitchCam.nodes[6].bUseCustomDOF = FALSE
|
|
thisSwitchCam.nodes[6].NodeDOF_Info.fDOF_NearDOF = 0.0000
|
|
thisSwitchCam.nodes[6].NodeDOF_Info.fDOF_FarDOF = 0.0000
|
|
thisSwitchCam.nodes[6].NodeDOF_Info.fDOF_EffectStrength = 0.0000
|
|
|
|
thisSwitchCam.nodes[7].SwitchCamType = SWITCH_CAM_OLD_SYSTEM
|
|
thisSwitchCam.nodes[7].iForceCamPointAtEntityIndex = -1
|
|
thisSwitchCam.nodes[7].bIsGameplayCamCopy = FALSE
|
|
thisSwitchCam.nodes[7].iNodeTime = 0
|
|
thisSwitchCam.nodes[7].vNodePos = <<3.6208, 1.1263, 0.6699>>
|
|
thisSwitchCam.nodes[7].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[7].fNodeOffsetDist = 0.0000
|
|
thisSwitchCam.nodes[7].fNodeVerticleOffset = 0.0000
|
|
thisSwitchCam.nodes[7].bAttachToOriginPed = FALSE
|
|
thisSwitchCam.nodes[7].vNodeDir = <<-10.0052, 0.0000, 104.9732>>
|
|
thisSwitchCam.nodes[7].bPointAtEntity = FALSE
|
|
thisSwitchCam.nodes[7].bPointAtOffsetIsRelative = FALSE
|
|
thisSwitchCam.nodes[7].bAttachOffsetIsRelative = FALSE
|
|
thisSwitchCam.nodes[7].fNodeFOV = 50.0000
|
|
thisSwitchCam.nodes[7].vClonedNodeOffset = <<0.0000, 0.0000, 0.0000>>
|
|
thisSwitchCam.nodes[7].iNodeToClone = 0
|
|
thisSwitchCam.nodes[7].NodeTimePostFX_Type = NO_EFFECT
|
|
thisSwitchCam.nodes[7].fNodeTimePostFXBlendTime = 0.0000
|
|
thisSwitchCam.nodes[7].fNodeTimePostFXTimeOffset = 0.0000
|
|
thisSwitchCam.nodes[7].fNodeMotionBlur = 0.0000
|
|
thisSwitchCam.nodes[7].NodeCamShakeType = CAM_SHAKE_MEDIUM
|
|
thisSwitchCam.nodes[7].fNodeCamShake = 0.1500
|
|
thisSwitchCam.nodes[7].iCamEaseType = 0
|
|
thisSwitchCam.nodes[7].fCamEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[7].fCamNodeVelocityScale = 0.0000
|
|
thisSwitchCam.nodes[7].bCamEaseForceLinear = FALSE
|
|
thisSwitchCam.nodes[7].bCamEaseForceLevel = FALSE
|
|
thisSwitchCam.nodes[7].fTimeScale = 1.0000
|
|
thisSwitchCam.nodes[7].iTimeScaleEaseType = 0
|
|
thisSwitchCam.nodes[7].fTimeScaleEaseScaler = 0.0000
|
|
thisSwitchCam.nodes[7].bFlashEnabled = FALSE
|
|
thisSwitchCam.nodes[7].SCFE_FlashEffectUsed = SCFE_CODE_FLASH
|
|
thisSwitchCam.nodes[7].fMinExposure = 0.0000
|
|
thisSwitchCam.nodes[7].fMaxExposure = 0.0000
|
|
thisSwitchCam.nodes[7].iRampUpDuration = 0
|
|
thisSwitchCam.nodes[7].iRampDownDuration = 0
|
|
thisSwitchCam.nodes[7].iHoldDuration = 0
|
|
thisSwitchCam.nodes[7].fFlashNodePhaseOffset = 0.0000
|
|
thisSwitchCam.nodes[7].bIsLowDetailNode = FALSE
|
|
thisSwitchCam.nodes[7].bUseCustomDOF = FALSE
|
|
thisSwitchCam.nodes[7].NodeDOF_Info.fDOF_NearDOF = 0.0000
|
|
thisSwitchCam.nodes[7].NodeDOF_Info.fDOF_FarDOF = 0.0000
|
|
thisSwitchCam.nodes[7].NodeDOF_Info.fDOF_EffectStrength = 0.0000
|
|
|
|
|
|
|
|
thisSwitchCam.iNumNodes = 8
|
|
thisSwitchCam.iCamSwitchFocusNode = 4
|
|
thisSwitchCam.fSwitchSoundAudioStartPhase = 0.5200
|
|
thisSwitchCam.fSwitchSoundAudioEndPhase = 0.6600
|
|
thisSwitchCam.bSwitchSoundPlayOpeningPulse = TRUE
|
|
thisSwitchCam.bSwitchSoundPlayMoveLoop = TRUE
|
|
thisSwitchCam.bSwitchSoundPlayExitPulse = FALSE
|
|
thisSwitchCam.bSplineNoSmoothing = TRUE
|
|
thisSwitchCam.bAddGameplayCamAsLastNode = FALSE
|
|
thisSwitchCam.iGameplayNodeBlendDuration = 2000
|
|
|
|
|
|
//--- End of Cam Data ---
|
|
|
|
|
|
thisSwitchCam.strOutputStructName = "thisSwitchCam"
|
|
thisSwitchCam.strOutputFileName = "CameraInfo_BigScore_TrevorInHeliToMichael.txt"
|
|
thisSwitchCam.strXMLFileName = "CameraInfo_BigScore_TrevorInHeliToMichael.xml"
|
|
|
|
|
|
thisSwitchCam.bInitialized = TRUE
|
|
ENDIF
|
|
|
|
thisSwitchCam.piPeds[0] = piTrevor
|
|
thisSwitchCam.piPeds[1] = piMichael
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
/// PURPOSE:
|
|
/// Handle the playback of the switch cam. The will setup, play, shut down and cleanup the switch cam spline
|
|
/// PARAMS:
|
|
/// thisSwitchCam - Switch camera to playback
|
|
/// bReturnTrueOnce - If you only want this function to return TRUE once upon completion. Set to FALSE to have this function to return true every time this is called once the camera is finished playback.
|
|
/// RETURNS:
|
|
/// TRUE when camera is complete, FALSE if playback is still active, or if the camera has completed playback and bReturnTrueOnce is set to TRUE.
|
|
FUNC BOOL HANDLE_SWITCH_CAM_TREVOR_IN_HELI_TO_MICHAEL(SWITCH_CAM_STRUCT &thisSwitchCam, BOOL bReturnTrueOnce = TRUE)
|
|
|
|
INT iCurrentNode
|
|
|
|
SWITCH eSwitchCamState
|
|
|
|
CASE SWITCH_CAM_IDLE
|
|
CDEBUG3LN(DEBUG_MISSION, "eSwitchCamState = SWITCH_CAM_IDLE")
|
|
BREAK
|
|
|
|
CASE SWITCH_CAM_REQUEST_ASSETS
|
|
CDEBUG3LN(DEBUG_MISSION, "eSwitchCamState = SWITCH_CAM_REQUEST_ASSETS")
|
|
|
|
NEW_LOAD_SCENE_START_SPHERE(vTrevHeliToMichaelCar_SwitchCamLoadSphereLocation, fTrevHeliToMichaelCar_SwitchCamLoadSphereRadius)
|
|
|
|
BREAK
|
|
|
|
CASE SWITCH_CAM_SETUP_SPLINE_1
|
|
CDEBUG3LN(DEBUG_MISSION, "eSwitchCamState = SWITCH_CAM_SETUP_SPLINE_1")
|
|
|
|
DESTROY_ALL_CAMS()
|
|
|
|
SETUP_SPLINE_CAM_NODE_ARRAY_TREVOR_IN_HELI_TO_MICHAEL(thisSwitchCam, peds[mpf_trevor].id, peds[mpf_michael].id)
|
|
|
|
NEW_LOAD_SCENE_START_SPHERE(vTrevHeliToMichaelCar_SwitchCamLoadSphereLocation, fTrevHeliToMichaelCar_SwitchCamLoadSphereRadius, NEWLOADSCENE_FLAG_LONGSWITCH_CUTSCENE)
|
|
|
|
TASK_PLAY_ANIM(peds[mpf_trevor].id, sSwitchAnimLibraryTrevToCar_HeliAnims, "mid_mission_inside_helicopter_trevor", INSTANT_BLEND_IN, REALLY_SLOW_BLEND_OUT)
|
|
TASK_PLAY_ANIM(peds[mpf_lester].id, sSwitchAnimLibraryTrevToCar_HeliAnims, "mid_mission_inside_helicopter_lester", INSTANT_BLEND_IN, REALLY_SLOW_BLEND_OUT)
|
|
FORCE_PED_AI_AND_ANIMATION_UPDATE(peds[mpf_lester].id, FALSE)
|
|
FORCE_PED_AI_AND_ANIMATION_UPDATE(peds[mpf_trevor].id, FALSE)
|
|
|
|
//[MF] rolling down windows so they don't block player's view of characters
|
|
ROLL_DOWN_WINDOW(vehs[mvf_Michael_veh].id, SC_WINDOW_FRONT_LEFT)
|
|
ROLL_DOWN_WINDOW(vehs[mvf_Michael_veh].id, SC_WINDOW_FRONT_RIGHT)
|
|
|
|
SET_ENTITY_COORDS(vehs[mvf_helicopter].id, GET_ENTITY_COORDS(vehs[mvf_helicopter].id) + (<<0.0, 0.0, 10.0>>))
|
|
SET_HELI_BLADES_FULL_SPEED(vehs[mvf_helicopter].id)
|
|
|
|
CREATE_SPLINE_CAM(thisSwitchCam)
|
|
|
|
SET_CAM_ACTIVE(thisSwitchCam.ciSpline, TRUE)
|
|
RENDER_SCRIPT_CAMS(TRUE, FALSE)
|
|
|
|
DISPLAY_RADAR(FALSE)
|
|
DISPLAY_HUD(FALSE)
|
|
|
|
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
|
|
bPlayerControlGiven = FALSE
|
|
|
|
bTrevHeliToMichaelCar_DestGeoRequested = FALSE
|
|
thisSwitchCam.bIsSplineCamFinishedPlaying = FALSE
|
|
bTrevHeliToMichaelCar_StopRequestGeo = FALSE
|
|
bCustomSwitchCamRendering_HeliToCar = TRUE
|
|
|
|
//[MF] ensure Michael's vehicle is in the proper posiiton
|
|
SET_ENTITY_COORDS(vehs[mvf_Michael_veh].id,vBACK_BANK)
|
|
SET_ENTITY_HEADING(vehs[mvf_Michael_veh].id,fHEADING_BACK)
|
|
|
|
SET_GAME_PAUSES_FOR_STREAMING(FALSE)
|
|
SET_FORCE_HD_VEHICLE(vehs[mvf_helicopter].id, TRUE)
|
|
SET_VEHICLE_RADIO_ENABLED(vehs[mvf_Michael_veh].id, FALSE)
|
|
|
|
eSwitchCamState = SWITCH_CAM_PLAYING_SPLINE_1
|
|
|
|
BREAK
|
|
|
|
CASE SWITCH_CAM_PLAYING_SPLINE_1
|
|
CDEBUG3LN(DEBUG_MISSION, "eSwitchCamState = SWITCH_CAM_PLAYING_SPLINE_1", GET_CAM_SPLINE_PHASE(thisSwitchCam.ciSpline))
|
|
|
|
iCurrentNode = UPDATE_SPLINE_CAM(thisSwitchCam)
|
|
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_Michael_veh].id)
|
|
SET_ENTITY_COORDS(vehs[mvf_Michael_veh].id,vBACK_BANK)
|
|
SET_ENTITY_HEADING(vehs[mvf_Michael_veh].id,fHEADING_BACK)
|
|
ENDIF
|
|
IF IS_CAM_ACTIVE(thisSwitchCam.ciSpline)
|
|
IF GET_CAM_SPLINE_PHASE(thisSwitchCam.ciSpline) < fTrevHeliToMichaelCar_DestGeoRequested_Phase
|
|
OVERRIDE_LODSCALE_THIS_FRAME(0.2)
|
|
ENDIF
|
|
|
|
IF NOT bTrevHeliToMichaelCar_DestGeoRequested
|
|
IF bTrevHeliMichaelCar_DestGeoRequestEnabled
|
|
NEW_LOAD_SCENE_START_SPHERE(vTrevHeliToMichaelCar_SwitchCamLoadSphereLocation, fTrevHeliToMichaelCar_SwitchCamLoadSphereRadius, NEWLOADSCENE_FLAG_LONGSWITCH_CUTSCENE)
|
|
bTrevHeliToMichaelCar_DestGeoRequested = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF bTrevHeliMichaelCar_EarlyFocusPedSwitchEnabled
|
|
IF NOT sCamDetails.bOKToSwitchPed
|
|
IF GET_CAM_SPLINE_PHASE(thisSwitchCam.ciSpline) >= fTrevHeliToMichaelCar_DestGeoRequested_Phase
|
|
sCamDetails.bOKToSwitchPed = TRUE
|
|
FREEZE_ENTITY_POSITION(vehs[mvf_helicopter].id, TRUE)
|
|
PRINTLN("Setting: PlayerSwitchTakeControlFlag = TCF_CLEAR_TASK_INTERRUPT_CHECKS")
|
|
PlayerSwitchTakeControlFlag = TCF_CLEAR_TASK_INTERRUPT_CHECKS
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF GET_PLAYER_PED_ENUM(PLAYER_PED_ID()) = CHAR_MICHAEL
|
|
IF PlayerSwitchTakeControlFlag = TCF_CLEAR_TASK_INTERRUPT_CHECKS
|
|
PRINTLN("Setting: PlayerSwitchTakeControlFlag = TCF_NONE")
|
|
//[MF] Restoring player clear task interrupt check for player switches
|
|
PlayerSwitchTakeControlFlag = TCF_NONE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
IF iCurrentNode >= thisSwitchCam.iCamSwitchFocusNode - 1
|
|
IF NOT IS_PED_INJURED(peds[mpf_franklin].id)
|
|
IF NOT IS_SCRIPT_TASK_RUNNING_OR_STARTING(peds[mpf_franklin].id, SCRIPT_TASK_PLAY_ANIM)
|
|
TASK_PLAY_ANIM(peds[mpf_franklin].id, sSwitchAnimLibrary_MikeAndFrankAnims, "bss_1_mcs_2_leadin_fra", INSTANT_BLEND_IN, DEFAULT, DEFAULT, AF_LOOPING)
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT IS_PED_INJURED(peds[mpf_michael].id)
|
|
IF NOT IS_SCRIPT_TASK_RUNNING_OR_STARTING(peds[mpf_michael].id, SCRIPT_TASK_PLAY_ANIM)
|
|
TASK_PLAY_ANIM(peds[mpf_michael].id, sSwitchAnimLibrary_MikeAndFrankAnims, "bss_1_mcs_2_leadin_mic", INSTANT_BLEND_IN, DEFAULT, DEFAULT, AF_LOOPING)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF NOT bTrevHeliToMichaelCar_StopRequestGeo
|
|
|
|
IF iCurrentNode >= thisSwitchCam.iCamSwitchFocusNode
|
|
NEW_LOAD_SCENE_STOP()
|
|
WAIT(0)
|
|
sid_TrevHeliToMichael_BankRear = STREAMVOL_CREATE_FRUSTUM((<<-111.2, -638.1, 36.5>>), (<<0.9, -1.6, 0.0>>), 350.0, FLAG_MAPDATA)
|
|
|
|
OVERRIDE_LODSCALE_THIS_FRAME(1.0)//[MF] Forces a faster loading of high detail art.
|
|
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_helicopter].id)
|
|
SET_FORCE_HD_VEHICLE(vehs[mvf_helicopter].id, FALSE)
|
|
ENDIF
|
|
|
|
bTrevHeliToMichaelCar_StopRequestGeo = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF GET_CAM_SPLINE_PHASE(thisSwitchCam.ciSpline) >= 1.00
|
|
CDEBUG3LN(DEBUG_MISSION, "eSwitchCamState = SWITCH_CAM_RETURN_TO_GAMEPLAY")
|
|
eSwitchCamState = SWITCH_CAM_RETURN_TO_GAMEPLAY
|
|
ENDIF
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE SWITCH_CAM_RETURN_TO_GAMEPLAY
|
|
CDEBUG3LN(DEBUG_MISSION, "eSwitchCamState = SWITCH_CAM_RETURN_TO_GAMEPLAY")
|
|
|
|
SET_TIME_SCALE(1.0)
|
|
|
|
CDEBUG3LN(DEBUG_MISSION, "eSwitchCamState = DESTROY_CAM(thisSwitchCam.ciSpline)")
|
|
|
|
SETTIMERA(0)
|
|
|
|
STREAMVOL_DELETE(sid_TrevHeliToMichael_BankRear)
|
|
|
|
FREEZE_ENTITY_POSITION(vehs[mvf_helicopter].id, FALSE)
|
|
|
|
eSwitchCamState = SWITCH_CAM_IDLE
|
|
|
|
thisSwitchCam.bIsSplineCamFinishedPlaying = TRUE
|
|
|
|
sCamDetails.bRun = FALSE
|
|
|
|
SET_RENDER_HD_ONLY(FALSE)
|
|
SET_GAME_PAUSES_FOR_STREAMING(TRUE)
|
|
SET_TO_DEFAULT_DETAIL_RENDERING()
|
|
|
|
SET_VEHICLE_RADIO_ENABLED(vehs[mvf_Michael_veh].id, TRUE)
|
|
|
|
//[MF] so we're not stuck on Michael and Franklin talking.
|
|
KILL_ANY_CONVERSATION()
|
|
|
|
PlayerSwitchTakeControlFlag = TCF_NONE
|
|
|
|
//[MF] Safety to ensure we're going to a cutscene after this. If we aren't abort the cam so player isn't stuck in it.
|
|
IF NOT HAS_CUTSCENE_LOADED()
|
|
RENDER_SCRIPT_CAMS(FALSE, FALSE)
|
|
IF DOES_SWITCH_CAM_EXIST(thisSwitchCam)
|
|
DESTROY_SWITCH_CAM(thisSwitchCam)
|
|
REMOVE_ANIM_DICT(sSwitchAnimLibraryTrevToCar_HeliAnims)
|
|
REMOVE_ANIM_DICT(sSwitchAnimLibrary_MikeAndFrankAnims)
|
|
UNLOAD_ALL_CAM_SHAKE_ANIM_LIBRARIES()
|
|
ENDIF
|
|
ENDIF
|
|
|
|
bMichaelCarToTrevHeli_UseCustomSwitch = TRUE
|
|
|
|
RETURN TRUE
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
IF bReturnTrueOnce
|
|
RETURN FALSE
|
|
ELSE
|
|
RETURN thisSwitchCam.bIsSplineCamFinishedPlaying
|
|
ENDIF
|
|
ENDFUNC
|
|
|
|
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
|
|
/// PURPOSE:
|
|
/// Create the debug widgets for working with the scripted character switch cam.
|
|
PROC CREATE_SWITCH_CAM_SCRIPT_SPECIFIC_WIDGETS()
|
|
CDEBUG3LN(DEBUG_MISSION, "CREATE_SWITCH_CAM_SCRIPT_SPECIFIC_WIDGETS")
|
|
|
|
START_WIDGET_GROUP("Custom Switch Cameras - Extra Tunables")
|
|
|
|
START_WIDGET_GROUP("Michael Car To Trevor Truck")
|
|
ADD_WIDGET_FLOAT_SLIDER("Dialogue Michael Start Phase", fPlaySwitchConvoMike, 0.0, 1.0, 0.01)
|
|
ADD_WIDGET_FLOAT_SLIDER("Dialogue Trevor Start Phase", fPlaySwitchConvoTrev, 0.0, 1.0, 0.01)
|
|
START_WIDGET_GROUP("Trevor Tuner")
|
|
START_WIDGET_GROUP("Trevor Gameplay Cam Tuner")
|
|
ADD_WIDGET_FLOAT_SLIDER("Gameplay Cam Heading Trevor", fGameplayCamHeadingMichaelToTrevorInCar, -180.0, 180.0, 0.25)
|
|
ADD_WIDGET_FLOAT_SLIDER("Gameplay Cam Pitch Trevor", fGameplayCamPitchMichaelToTrevorInCar, -180.0, 180.0, 0.25)
|
|
STOP_WIDGET_GROUP()
|
|
ADD_WIDGET_VECTOR_SLIDER("Trevor Location", vMichaelToTrevorTruck_TrevLocation, -10000.0, 10000.0, 0.25)
|
|
ADD_WIDGET_FLOAT_SLIDER("Trevor Heading", fMichaelToTrevorTruck_TrevHeading, -180.0, 180.0, 0.25)
|
|
ADD_WIDGET_INT_SLIDER("Pee Anim Loop Duration", iMichealToTrevorTruck_PeeLoopDuration, 0, 5000, 500)
|
|
ADD_WIDGET_FLOAT_SLIDER("Transition To Player Loco Phase", fMikeCarToTrevTruck_TransitionToPlayerLocoPhase, 0.0, 1.0, 0.1)
|
|
START_WIDGET_GROUP("Trevor Pee Tuner")
|
|
ADD_WIDGET_VECTOR_SLIDER("Pee Effect Bone Offset", vTrevor_PeeFX_BoneOffset, -1.0, 1.0, 0.01)
|
|
ADD_WIDGET_VECTOR_SLIDER("Pee Effect Bone Rotation", vTrevor_PeeFX_BoneRot, -360.0, 360.0, 1.0)
|
|
ADD_WIDGET_FLOAT_SLIDER("Pee Effect Stop Phase", fTrevor_PeeFX_Stop_Phase, 0.0, 1.0, 0.05)
|
|
STOP_WIDGET_GROUP()
|
|
STOP_WIDGET_GROUP()
|
|
START_WIDGET_GROUP("Streaming Tuner")
|
|
ADD_WIDGET_FLOAT_SLIDER("Streaming Sphere Radius", fMichaelToTrevorTruck_SwitchCamLoadSphereRadius, 0.0, 100.0, 0.1)
|
|
ADD_WIDGET_FLOAT_SLIDER("Character Switch Spline Phase", fMikeToTrevTruck_CharSwitchPhase, 0.0, 1.0, 0.1)
|
|
STOP_WIDGET_GROUP()
|
|
STOP_WIDGET_GROUP()
|
|
|
|
START_WIDGET_GROUP("Trevor Heli To Michael Car")
|
|
START_WIDGET_GROUP("Streaming Tuner")
|
|
ADD_WIDGET_BOOL("Enable Early Switch Focus Ped Phase", bTrevHeliMichaelCar_EarlyFocusPedSwitchEnabled)
|
|
ADD_WIDGET_BOOL("Enable Early Geo Streaming Request", bTrevHeliMichaelCar_DestGeoRequestEnabled)
|
|
ADD_WIDGET_FLOAT_SLIDER("Switch Focus Ped Phase", fTrevHeliToMichaelCar_DestGeoRequested_Phase, 0.0, 1.0, 0.05)
|
|
ADD_WIDGET_FLOAT_SLIDER("Streaming Sphere Radius", fTrevHeliToMichaelCar_SwitchCamLoadSphereRadius, 0.0, 10.0, 0.1)
|
|
ADD_WIDGET_VECTOR_SLIDER("Streaming Sphere Location", vTrevHeliToMichaelCar_SwitchCamLoadSphereLocation, -10000.0, 10000.0, 0.25)
|
|
STOP_WIDGET_GROUP()
|
|
|
|
ADD_WIDGET_BOOL("Warp To Heliport", bTrevHeliToMichaelCar_TeleportToPos)
|
|
STOP_WIDGET_GROUP()
|
|
|
|
START_WIDGET_GROUP("Michael Car To Trevor Heli")
|
|
START_WIDGET_GROUP("Streaming Tuner")
|
|
ADD_WIDGET_FLOAT_SLIDER("Low LOD Scale", fMichaelCarToTrevHeli_Low_LOD_Level, 0.01, 10.0, 0.25)
|
|
ADD_WIDGET_FLOAT_SLIDER("Low LOD Load Frustrum Distance", fMichaelCarToTrevHeli_SwitchCamLowLodFrustrumDist, 0.0, 10000, 250)
|
|
STOP_WIDGET_GROUP()
|
|
STOP_WIDGET_GROUP()
|
|
|
|
START_WIDGET_GROUP("Force Switch Debug Tools")
|
|
ADD_WIDGET_BOOL("Enable dedicated debug mode", bDEBUG_IsInIsolatedDebugMode)
|
|
ADD_WIDGET_BOOL("Setup Trevor Heli to Michael Car Switch", bSetupTrevorToMichaelHeliSwitch)
|
|
ADD_WIDGET_BOOL("Setup Michael Car to Trevor Heli Switch", bSetupMichaelToTrevorHeliSwitch)
|
|
ADD_WIDGET_BOOL("Start Switch Cam", bDEBUG_SwitchCamIsActive)
|
|
STOP_WIDGET_GROUP()
|
|
|
|
|
|
STOP_WIDGET_GROUP()
|
|
|
|
ENDPROC
|
|
|
|
PROC P_DEBUG_FORCE_CHARACTER_SELECT(SELECTOR_SLOTS_ENUM selectorSlotChar, MPF_MISSION_PED_FLAGS missionPedFlag)
|
|
|
|
sSelectorPeds.pedID[selectorSlotChar] = peds[missionPedFlag].id
|
|
MAKE_SELECTOR_PED_SELECTION(sSelectorPeds, selectorSlotChar)
|
|
TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds)
|
|
|
|
ENDPROC
|
|
|
|
PROC DEBUG_SETUP_TREVOR_TO_MICHAEL_HELI_SWITCH(BOOL bStartingOnTrevor)
|
|
REQUEST_MODEL(FROGGER)
|
|
|
|
WHILE NOT HAS_MODEL_LOADED(FROGGER)
|
|
WAIT(0)
|
|
CPRINTLN(DEBUG_MISSION,"Loading Helicopter Model: FROGGER")
|
|
ENDWHILE
|
|
|
|
IF bStartingOnTrevor
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_TREVOR
|
|
|
|
P_DEBUG_FORCE_CHARACTER_SELECT(SELECTOR_PED_TREVOR, mpf_trevor)
|
|
|
|
ENDIF
|
|
|
|
sSelectorPeds.pedID[SELECTOR_PED_MICHAEL] = peds[mpf_michael].id
|
|
SET_SELECTOR_PED_BLOCKED(sSelectorPeds, SELECTOR_PED_MICHAEL, FALSE)
|
|
ELSE
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_MICHAEL
|
|
|
|
P_DEBUG_FORCE_CHARACTER_SELECT(SELECTOR_PED_MICHAEL, mpf_michael)
|
|
|
|
ENDIF
|
|
|
|
sSelectorPeds.pedID[SELECTOR_PED_TREVOR] = peds[mpf_trevor].id
|
|
SET_SELECTOR_PED_BLOCKED(sSelectorPeds, SELECTOR_PED_TREVOR, FALSE)
|
|
ENDIF
|
|
|
|
IF IS_PED_IN_ANY_VEHICLE(peds[mpf_trevor].id)
|
|
SET_VEHICLE_ON_GROUND_PROPERLY(GET_VEHICLE_PED_IS_IN(peds[mpf_trevor].id))
|
|
WAIT(0)
|
|
TASK_LEAVE_VEHICLE(peds[mpf_trevor].id, GET_VEHICLE_PED_IS_IN(peds[mpf_trevor].id), ECF_WARP_PED)
|
|
ENDIF
|
|
|
|
IF IS_PED_IN_ANY_VEHICLE(peds[mpf_lester].id)
|
|
SET_VEHICLE_ON_GROUND_PROPERLY(GET_VEHICLE_PED_IS_IN(peds[mpf_lester].id))
|
|
WAIT(0)
|
|
TASK_LEAVE_VEHICLE(peds[mpf_lester].id, GET_VEHICLE_PED_IS_IN(peds[mpf_lester].id), ECF_WARP_PED)
|
|
ENDIF
|
|
|
|
IF NOT DOES_ENTITY_EXIST(vehs[mvf_helicopter].id)
|
|
OR IS_ENTITY_DEAD(vehs[mvf_helicopter].id)
|
|
vehs[mvf_helicopter].id = CREATE_VEHICLE(frogger, << 1758.3090, 3284.5278, 40.7 >>, 133.1852 )
|
|
SET_VEHICLE_ENGINE_CAN_DEGRADE(vehs[mvf_helicopter].id,false)
|
|
ELSE
|
|
IF NOT bDEBUG_SwitchCamIsActive //[MF] Only reset the helicopter's positon if we aren't about to view a switch cam
|
|
SET_ENTITY_COORDS(vehs[mvf_helicopter].id, << 1758.3090, 3284.5278, 40.7 >>)
|
|
SET_ENTITY_HEADING(vehs[mvf_helicopter].id, 133.1852)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
SET_PED_INTO_VEHICLE(peds[mpf_trevor].id, vehs[mvf_helicopter].id)
|
|
SET_PED_INTO_VEHICLE(peds[mpf_lester].id, vehs[mvf_helicopter].id, VS_BACK_LEFT)
|
|
|
|
IF IS_PED_IN_ANY_VEHICLE(peds[mpf_michael].id)
|
|
SET_VEHICLE_ON_GROUND_PROPERLY(GET_VEHICLE_PED_IS_IN(peds[mpf_michael].id))
|
|
WAIT(0)
|
|
TASK_LEAVE_VEHICLE(peds[mpf_trevor].id, GET_VEHICLE_PED_IS_IN(peds[mpf_michael].id), ECF_WARP_PED)
|
|
ENDIF
|
|
|
|
IF NOT DOES_ENTITY_EXIST(vehs[mvf_Michael_veh].id)
|
|
OR IS_ENTITY_DEAD(vehs[mvf_Michael_veh].id)
|
|
WHILE NOT CREATE_PLAYER_VEHICLE(vehs[mvf_Michael_veh].id,CHAR_MICHAEL,vBACK_BANK, fHEADING_BACK)
|
|
CPRINTLN(DEBUG_MISSION,"Creating Michael's vehicle...")
|
|
WAIT(0)
|
|
ENDWHILE
|
|
ELSE
|
|
SET_ENTITY_COORDS(vehs[mvf_Michael_veh].id, vBACK_BANK)
|
|
SET_ENTITY_HEADING(vehs[mvf_Michael_veh].id, fHEADING_BACK)
|
|
ENDIF
|
|
|
|
SET_PED_INTO_VEHICLE(peds[mpf_michael].id, vehs[mvf_Michael_veh].id)
|
|
|
|
ENDPROC
|
|
|
|
|
|
PROC HANDLE_SWITCH_CAM_SCRIPT_SPECIFIC_WIDGETS()
|
|
|
|
IF bTrevHeliToMichaelCar_TeleportToPos
|
|
SET_PED_COORDS_KEEP_VEHICLE(peds[mpf_trevor].id, (<<1771.9, 3276.0, 41.4>>))
|
|
bTrevHeliToMichaelCar_TeleportToPos = FALSE
|
|
ENDIF
|
|
|
|
IF bSetupTrevorToMichaelHeliSwitch
|
|
|
|
DEBUG_SETUP_TREVOR_TO_MICHAEL_HELI_SWITCH(TRUE)
|
|
bSetupTrevorToMichaelHeliSwitch = FALSE
|
|
ENDIF
|
|
|
|
IF bSetupMichaelToTrevorHeliSwitch
|
|
DEBUG_SETUP_TREVOR_TO_MICHAEL_HELI_SWITCH(FALSE)
|
|
bSetupMichaelToTrevorHeliSwitch = FALSE
|
|
ENDIF
|
|
|
|
IF bDEBUG_IsInIsolatedDebugMode
|
|
IF IS_BUTTON_JUST_PRESSED(PAD1, DPADLEFT)
|
|
bDEBUG_SwitchCamIsActive = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF bDEBUG_SwitchCamIsActive
|
|
|
|
BOOL bDEBUG_StartingSwitchOnTrevor
|
|
|
|
|
|
IF eSwitchCamState = SWITCH_CAM_IDLE
|
|
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
bDEBUG_StartingSwitchOnTrevor = TRUE
|
|
ELSE
|
|
bDEBUG_StartingSwitchOnTrevor = FALSE
|
|
ENDIF
|
|
|
|
DEBUG_SETUP_TREVOR_TO_MICHAEL_HELI_SWITCH(bDEBUG_StartingSwitchOnTrevor)
|
|
|
|
//[MF] Popping Trevor's Helicopter Into The Air
|
|
IF NOT bDEBUG_StartingSwitchOnTrevor
|
|
SET_ENTITY_COORDS(vehs[mvf_helicopter].id, << 1758.3090, 3284.5278, 80.7 >>)
|
|
ENDIF
|
|
eSwitchCamState = SWITCH_CAM_SETUP_SPLINE_1
|
|
ENDIF
|
|
|
|
WAIT(5000)
|
|
sCamDetails.bOKToSwitchPed = FALSE
|
|
|
|
IF bDEBUG_StartingSwitchOnTrevor
|
|
WHILE NOT HANDLE_SWITCH_CAM_TREVOR_IN_HELI_TO_MICHAEL(scsSwitchCamTrevorInHeliToMichael)
|
|
WAIT(0)
|
|
|
|
UPDATE_SPLINE_CAM_WIDGETS(scsSwitchCamMichaelToTrevorInHeli)
|
|
UPDATE_SPLINE_CAM_WIDGETS(scsSwitchCamTrevorInHeliToMichael)
|
|
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_MICHAEL
|
|
IF sCamDetails.bOKToSwitchPed = TRUE
|
|
P_DEBUG_FORCE_CHARACTER_SELECT(SELECTOR_PED_MICHAEL, mpf_michael)
|
|
sCamDetails.bOKToSwitchPed = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
ENDWHILE
|
|
ELSE
|
|
WHILE NOT HANDLE_SWITCH_CAM_MICHAEL_TO_TREVOR_IN_HELI(scsSwitchCamMichaelToTrevorInHeli)
|
|
WAIT(0)
|
|
|
|
UPDATE_SPLINE_CAM_WIDGETS(scsSwitchCamMichaelToTrevorInHeli)
|
|
UPDATE_SPLINE_CAM_WIDGETS(scsSwitchCamTrevorInHeliToMichael)
|
|
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_TREVOR
|
|
IF sCamDetails.bOKToSwitchPed = TRUE
|
|
P_DEBUG_FORCE_CHARACTER_SELECT(SELECTOR_PED_TREVOR, mpf_trevor)
|
|
sCamDetails.bOKToSwitchPed = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
ENDWHILE
|
|
ENDIF
|
|
|
|
sCamDetails.bOKToSwitchPed = FALSE
|
|
bDEBUG_SwitchCamIsActive = FALSE
|
|
ENDIF
|
|
|
|
|
|
ENDPROC
|
|
|
|
#ENDIF
|
|
// ===========================================================================================================
|
|
// Termination
|
|
|
|
// ===========================================================================================================
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
// Mission Helpers
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
PROC GET_SKIP_STAGE_COORD_AND_HEADING(MSF_MISSION_STAGE_FLAGS eStage, VECTOR &vCoord, FLOAT &fHeading,int iChar = 0)
|
|
if iChar = 0 //mike
|
|
SWITCH eStage
|
|
CASE msf_0_strip_club vCoord = <<92.0847, -1280.7062, 28.1447 >> fHeading = 73.3971 BREAK
|
|
CASE msf_1_font_of_bank vCoord = vFRONT_BANK fHeading = fHEADING_FRONT BREAK
|
|
CASE msf_2_back_of_bank vCoord = vBACK_BANK fHeading = fHEADING_BACK BREAK
|
|
CASE msf_3_get_in_position vCoord = vBACK_BANK fHeading = fHEADING_BACK BREAK
|
|
CASE msf_4_heli_follow_truck vCoord = <<1095.7894, -1421.1515, 37.5>> fHeading = -168 BREAK
|
|
//CASE msf_4_heli_follow_truck vCoord = <<1095.7894, -1421.1515,102.4156>> fHeading = -168 BREAK
|
|
CASE msf_5_CONSTRUCTION_HOLE vCoord = <<-76.4238, -528.6735, 80 >> fHeading = 176.7705 BREAK //87.5000
|
|
CASE msf_6_drop_off_point vCoord = << 7.0467, -614.5734, 61.0681 >> fHeading = 187.9638 BREAK
|
|
CASE msf_7_passed vCoord = <<19.2811, 534.3147, 173.6274>> fHeading = 189.0861 BREAK
|
|
ENDSWITCH
|
|
elif iChar = 1 //trev
|
|
SWITCH eStage
|
|
CASE msf_0_strip_club vCoord = <<92.0847, -1280.7062, 28.1447 >> fHeading = 73.3971 BREAK
|
|
CASE msf_1_font_of_bank vCoord = <<1681.2954, 1320.6780, 86.0397 >> fHeading = 346.5002 BREAK
|
|
CASE msf_2_back_of_bank vCoord = <<1993.6239, 2541.7837, 53.6037>> fHeading = 318.9926 BREAK
|
|
CASE msf_3_get_in_position vCoord = <<1758.3090, 3284.5278, 40.7 >> fHeading = 133.1852 BREAK
|
|
CASE msf_4_heli_follow_truck vCoord = <<1095.7894, -1421.1515, 37.5>> fHeading = -168 BREAK
|
|
//CASE msf_4_heli_follow_truck vCoord = <<1095.7894, -1421.1515,102.4156>> fHeading = -168 BREAK
|
|
CASE msf_5_CONSTRUCTION_HOLE vCoord = <<-76.4238, -528.6735, 80 >> fHeading = 176.7705 BREAK //87.5
|
|
CASE msf_6_drop_off_point vCoord = << 7.0467, -614.5734, 61.0681 >> fHeading = 187.9638 BREAK
|
|
case msf_7_Passed vCoord = <<1759.5400, 3290.2327, 40.1387>> fHeading = 259.1121 BREAK
|
|
ENDSWITCH
|
|
endif
|
|
CPRINTLN(DEBUG_MISSION,"vCoord: ", vCoord, " fheading: ", fHeading, " iChar: ", iChar)
|
|
ENDPROC
|
|
FUNC BOOL IsEntityAlive(ENTITY_INDEX mEntity)
|
|
If DOES_ENTITY_EXIST(mEntity)
|
|
if IS_ENTITY_A_VEHICLE(mEntity)
|
|
if IS_VEHICLE_DRIVEABLE(GET_VEHICLE_INDEX_FROM_ENTITY_INDEX(mEntity))
|
|
return TRUE
|
|
endif
|
|
elif IS_ENTITY_A_PED(mEntity)
|
|
if not IS_PED_INJURED(GET_PED_INDEX_FROM_ENTITY_INDEX(mEntity))
|
|
return TRUE
|
|
ENDIF
|
|
endif
|
|
ENDIF
|
|
return FALSE
|
|
ENDFUNC
|
|
FUNC BOOL INIT_CAM()
|
|
switch iSFstage
|
|
case 0
|
|
sfmov = REQUEST_SCALEFORM_MOVIE("SECURITY_CAM")
|
|
iSFstage++
|
|
break
|
|
case 1
|
|
IF HAS_SCALEFORM_MOVIE_LOADED(sfmov)
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(sfmov, "SET_LAYOUT")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(sfmov, "SET_LOCATION")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("FH1_REC")
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
iSFstage++
|
|
RETURN TRUE
|
|
ENDIF
|
|
break
|
|
case 2
|
|
RETURN TRUE
|
|
break
|
|
endswitch
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
/// PURPOSE:
|
|
/// Handles all the drawing of the camera UI
|
|
PROC DO_CAM_UI()
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(sfmov, "SET_TIME")
|
|
IF GET_CLOCK_HOURS() >= 0 AND GET_CLOCK_HOURS() <= 12
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(GET_CLOCK_HOURS())
|
|
ELSE
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(GET_CLOCK_HOURS() - 12)
|
|
ENDIF
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(GET_CLOCK_MINUTES())
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(00)
|
|
IF GET_CLOCK_HOURS() >= 0 AND GET_CLOCK_HOURS() < 12
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("LSH_TIMEAM")
|
|
ELSE
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("LSH_TIMEPM")
|
|
ENDIF
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
DRAW_SCALEFORM_MOVIE_FULLSCREEN(sfmov,255,255,255,0)
|
|
SET_TIMECYCLE_MODIFIER("scanline_cam_cheap")
|
|
|
|
DISABLE_CONTROL_ACTION(player_control,INPUT_VEH_EXIT)
|
|
|
|
if HAS_SOUND_FINISHED(camhum)
|
|
PLAY_SOUND_FRONTEND(camhum,"Camera_Hum","BIG_SCORE_SETUP_SOUNDS")
|
|
endif
|
|
|
|
ENDPROC
|
|
proc stop_mission_audio_scenes(int exclude = 0)
|
|
|
|
if IS_AUDIO_SCENE_ACTIVE("BS_1_drive_START")
|
|
and exclude != 1
|
|
STOP_AUDIO_SCENE("BS_1_drive_START")
|
|
endif
|
|
|
|
if IS_AUDIO_SCENE_ACTIVE("BS_1_BANK_CHECK_OUT")
|
|
and exclude != 2
|
|
STOP_AUDIO_SCENE("BS_1_BANK_CHECK_OUT")
|
|
endif
|
|
|
|
if IS_AUDIO_SCENE_ACTIVE("BS_1_BANK_HINT_CAM")
|
|
and exclude != 3
|
|
STOP_AUDIO_SCENE("BS_1_BANK_HINT_CAM")
|
|
endif
|
|
|
|
if IS_AUDIO_SCENE_ACTIVE("BS_1_DRIVE_AROUND_BACK")
|
|
and exclude != 4
|
|
STOP_AUDIO_SCENE("BS_1_DRIVE_AROUND_BACK")
|
|
endif
|
|
|
|
if IS_AUDIO_SCENE_ACTIVE("BS_1_SWITCH_TO_TREVOR")
|
|
and exclude != 5
|
|
STOP_AUDIO_SCENE("BS_1_SWITCH_TO_TREVOR")
|
|
endif
|
|
|
|
if IS_AUDIO_SCENE_ACTIVE("BS_1_FLY_TO_TRUCKS")
|
|
and exclude != 6
|
|
STOP_AUDIO_SCENE("BS_1_FLY_TO_TRUCKS")
|
|
endif
|
|
|
|
if IS_AUDIO_SCENE_ACTIVE("BS_1_TRUCKS_SPOTTED")
|
|
and exclude != 7
|
|
STOP_AUDIO_SCENE("BS_1_TRUCKS_SPOTTED")
|
|
endif
|
|
|
|
if IS_AUDIO_SCENE_ACTIVE("BS_1_TRUCKS_HINT_CAM")
|
|
and exclude != 8
|
|
STOP_AUDIO_SCENE("BS_1_TRUCKS_HINT_CAM")
|
|
endif
|
|
|
|
if IS_AUDIO_SCENE_ACTIVE("BS_1_TRUCKS_ENTER_TUNNEL")
|
|
and exclude != 9
|
|
STOP_AUDIO_SCENE("BS_1_TRUCKS_ENTER_TUNNEL")
|
|
endif
|
|
|
|
if IS_AUDIO_SCENE_ACTIVE("BS_1_SEARCH_FOR_ENTRANCE")
|
|
and exclude != 10
|
|
STOP_AUDIO_SCENE("BS_1_SEARCH_FOR_ENTRANCE")
|
|
endif
|
|
|
|
if IS_AUDIO_SCENE_ACTIVE("BS_1_VIEW_RECORDING")
|
|
and exclude != 11
|
|
STOP_AUDIO_SCENE("BS_1_VIEW_RECORDING")
|
|
endif
|
|
|
|
if IS_AUDIO_SCENE_ACTIVE("BS_1_HELI_RETURN_TO_AIRSTRIP")
|
|
and exclude != 12
|
|
STOP_AUDIO_SCENE("BS_1_HELI_RETURN_TO_AIRSTRIP")
|
|
endif
|
|
|
|
if IS_AUDIO_SCENE_ACTIVE("BS_1_CAR_RETURN_TO_FRANKLINS")
|
|
and exclude != 13
|
|
STOP_AUDIO_SCENE("BS_1_CAR_RETURN_TO_FRANKLINS")
|
|
endif
|
|
endproc
|
|
proc Security_gate_setup(BUILDING_STATE_ENUM bstate = BUILDINGSTATE_NORMAL)
|
|
SET_BUILDING_STATE(BUILDINGNAME_ES_BANK_CAR_PARK_SHUTTERS,bstate)
|
|
endproc
|
|
PROC REQUEST_TRAFFIC_IN_ADVANCE(FLOAT fCutoffTime)
|
|
IF fCurrentPlaybackTime < fCutoffTime
|
|
INT iuber = 0
|
|
REPEAT COUNT_OF(TrafficCarID) iuber
|
|
IF TrafficCarRecording[iuber] != 0
|
|
IF TrafficCarStartime[iuber] < fCutoffTime
|
|
REQUEST_MODEL(TrafficCarModel[iuber])
|
|
REQUEST_VEHICLE_RECORDING(TrafficCarRecording[iuber], "FH1UBER")
|
|
ENDIF
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
REPEAT COUNT_OF(SetPieceCarID) iuber
|
|
IF SetPieceCarRecording[iuber] != 0
|
|
IF SetPieceCarStartime[iuber] < fCutoffTime
|
|
IF NOT DOES_ENTITY_EXIST(SetPieceCarID[iuber])
|
|
REQUEST_MODEL(SetPieceCarModel[iuber])
|
|
ENDIF
|
|
REQUEST_VEHICLE_RECORDING(SetPieceCarRecording[iuber], "FH1UBER")
|
|
ENDIF
|
|
ENDIF
|
|
ENDREPEAT
|
|
ENDIF
|
|
ENDPROC
|
|
PROC LOAD_UBER_CHASE_DATA()
|
|
TrafficCarPos[0] = <<1094.9021, -1724.9916, 28.7513>>
|
|
TrafficCarQuatX[0] = 0.0003
|
|
TrafficCarQuatY[0] = -0.0020
|
|
TrafficCarQuatZ[0] = 0.9865
|
|
TrafficCarQuatW[0] = -0.1636
|
|
TrafficCarRecording[0] = 1
|
|
TrafficCarStartime[0] = 2970.0000
|
|
TrafficCarModel[0] = premier//stratum//penumbra
|
|
|
|
TrafficCarPos[1] = <<1124.5498, -1741.1417, 28.9311>>
|
|
TrafficCarQuatX[1] = 0.0008
|
|
TrafficCarQuatY[1] = -0.0002
|
|
TrafficCarQuatZ[1] = 0.1767
|
|
TrafficCarQuatW[1] = 0.9843
|
|
TrafficCarRecording[1] = 2
|
|
TrafficCarStartime[1] = 3102.0000
|
|
TrafficCarModel[1] = serrano//rancherxl
|
|
|
|
TrafficCarPos[2] = <<1098.3792, -1748.8092, 35.1966>>
|
|
TrafficCarQuatX[2] = -0.0009
|
|
TrafficCarQuatY[2] = 0.0009
|
|
TrafficCarQuatZ[2] = -0.5723
|
|
TrafficCarQuatW[2] = 0.8200
|
|
TrafficCarRecording[2] = 3
|
|
TrafficCarStartime[2] = 3564.0000
|
|
TrafficCarModel[2] = premier
|
|
|
|
TrafficCarPos[3] = <<1079.2882, -1712.6084, 29.0574>>
|
|
TrafficCarQuatX[3] = 0.0000
|
|
TrafficCarQuatY[3] = -0.0001
|
|
TrafficCarQuatZ[3] = 0.9870
|
|
TrafficCarQuatW[3] = -0.1608
|
|
TrafficCarRecording[3] = 4
|
|
TrafficCarStartime[3] = 4092.0000
|
|
TrafficCarModel[3] = serrano//rancherxl
|
|
|
|
TrafficCarPos[4] = <<1084.3353, -1748.2080, 35.4187>>
|
|
TrafficCarQuatX[4] = 0.0002
|
|
TrafficCarQuatY[4] = -0.0001
|
|
TrafficCarQuatZ[4] = -0.5776
|
|
TrafficCarQuatW[4] = 0.8163
|
|
TrafficCarRecording[4] = 5
|
|
TrafficCarStartime[4] = 4488.0000
|
|
TrafficCarModel[4] = serrano//utillitruck3
|
|
|
|
TrafficCarPos[5] = <<1059.9586, -1730.4474, 35.2553>>
|
|
TrafficCarQuatX[5] = -0.0013
|
|
TrafficCarQuatY[5] = 0.0083
|
|
TrafficCarQuatZ[5] = 0.9843
|
|
TrafficCarQuatW[5] = -0.1765
|
|
TrafficCarRecording[5] = 6
|
|
TrafficCarStartime[5] = 5610.0000
|
|
TrafficCarModel[5] = serrano//rancherxl
|
|
|
|
TrafficCarPos[6] = <<1057.1438, -1722.0253, 35.1296>>
|
|
TrafficCarQuatX[6] = -0.0015
|
|
TrafficCarQuatY[6] = 0.0094
|
|
TrafficCarQuatZ[6] = 0.9877
|
|
TrafficCarQuatW[6] = -0.1560
|
|
TrafficCarRecording[6] = 7
|
|
TrafficCarStartime[6] = 5742.0000
|
|
TrafficCarModel[6] = serrano//utillitruck3
|
|
|
|
TrafficCarPos[7] = <<1066.2435, -1754.8478, 35.3732>>
|
|
TrafficCarQuatX[7] = -0.0011
|
|
TrafficCarQuatY[7] = 0.0006
|
|
TrafficCarQuatZ[7] = -0.5739
|
|
TrafficCarQuatW[7] = 0.8189
|
|
TrafficCarRecording[7] = 8
|
|
TrafficCarStartime[7] = 5874.0000
|
|
TrafficCarModel[7] = serrano//rancherxl
|
|
|
|
TrafficCarPos[8] = <<1059.5776, -1759.7831, 35.0615>>
|
|
TrafficCarQuatX[8] = 0.0005
|
|
TrafficCarQuatY[8] = 0.0000
|
|
TrafficCarQuatZ[8] = -0.4766
|
|
TrafficCarQuatW[8] = 0.8791
|
|
TrafficCarRecording[8] = 9
|
|
TrafficCarStartime[8] = 6402.0000
|
|
TrafficCarModel[8] = premier//peyote
|
|
|
|
TrafficCarPos[9] = <<1057.0295, -1757.4359, 35.1548>>
|
|
TrafficCarQuatX[9] = -0.0005
|
|
TrafficCarQuatY[9] = 0.0007
|
|
TrafficCarQuatZ[9] = -0.5842
|
|
TrafficCarQuatW[9] = 0.8116
|
|
TrafficCarRecording[9] = 10
|
|
TrafficCarStartime[9] = 6468.0000
|
|
TrafficCarModel[9] = premier//stratum
|
|
|
|
TrafficCarPos[10] = <<1027.8516, -1770.6709, 35.2252>>
|
|
TrafficCarQuatX[10] = 0.0414
|
|
TrafficCarQuatY[10] = -0.0311
|
|
TrafficCarQuatZ[10] = -0.6375
|
|
TrafficCarQuatW[10] = 0.7687
|
|
TrafficCarRecording[10] = 11
|
|
TrafficCarStartime[10] = 8250.0000
|
|
TrafficCarModel[10] = premier//manana
|
|
|
|
TrafficCarPos[11] = <<867.5558, -1748.6525, 29.4237>>
|
|
TrafficCarQuatX[11] = -0.0075
|
|
TrafficCarQuatY[11] = -0.0064
|
|
TrafficCarQuatZ[11] = 0.6388
|
|
TrafficCarQuatW[11] = 0.7693
|
|
TrafficCarRecording[11] = 12
|
|
TrafficCarStartime[11] = 17754.0000
|
|
TrafficCarModel[11] = serrano//rancherxl
|
|
|
|
TrafficCarPos[12] = <<860.6240, -1747.1852, 28.9555>>
|
|
TrafficCarQuatX[12] = -0.0082
|
|
TrafficCarQuatY[12] = -0.0064
|
|
TrafficCarQuatZ[12] = 0.6768
|
|
TrafficCarQuatW[12] = 0.7361
|
|
TrafficCarRecording[12] = 13
|
|
TrafficCarStartime[12] = 18216.0000
|
|
TrafficCarModel[12] = premier//stratum//peyote
|
|
|
|
TrafficCarPos[13] = <<860.9755, -1742.0430, 29.0624>>
|
|
TrafficCarQuatX[13] = -0.0066
|
|
TrafficCarQuatY[13] = -0.0052
|
|
TrafficCarQuatZ[13] = 0.6624
|
|
TrafficCarQuatW[13] = 0.7491
|
|
TrafficCarRecording[13] = 14
|
|
TrafficCarStartime[13] = 18216.0000
|
|
TrafficCarModel[13] = premier//penumbra
|
|
|
|
TrafficCarPos[14] = <<845.2426, -1762.8329, 28.6199>>
|
|
TrafficCarQuatX[14] = 0.0017
|
|
TrafficCarQuatY[14] = -0.0013
|
|
TrafficCarQuatZ[14] = -0.6127
|
|
TrafficCarQuatW[14] = 0.7903
|
|
TrafficCarRecording[14] = 15
|
|
TrafficCarStartime[14] = 19668.0000
|
|
TrafficCarModel[14] = premier//stratum
|
|
|
|
TrafficCarPos[15] = <<837.1574, -1723.8857, 28.7141>>
|
|
TrafficCarQuatX[15] = -0.0005
|
|
TrafficCarQuatY[15] = 0.0000
|
|
TrafficCarQuatZ[15] = -0.0404
|
|
TrafficCarQuatW[15] = 0.9992
|
|
TrafficCarRecording[15] = 16
|
|
TrafficCarStartime[15] = 19932.0000
|
|
TrafficCarModel[15] = premier//stratum
|
|
|
|
TrafficCarPos[16] = <<801.6107, -1752.7430, 28.7486>>
|
|
TrafficCarQuatX[16] = 0.0028
|
|
TrafficCarQuatY[16] = -0.0031
|
|
TrafficCarQuatZ[16] = 0.7449
|
|
TrafficCarQuatW[16] = -0.6671
|
|
TrafficCarRecording[16] = 17
|
|
TrafficCarStartime[16] = 21780.0000
|
|
TrafficCarModel[16] = premier//manana
|
|
|
|
TrafficCarPos[17] = <<789.3914, -1751.3726, 28.8925>>
|
|
TrafficCarQuatX[17] = 0.0032
|
|
TrafficCarQuatY[17] = -0.0037
|
|
TrafficCarQuatZ[17] = 0.7530
|
|
TrafficCarQuatW[17] = -0.6580
|
|
TrafficCarRecording[17] = 18
|
|
TrafficCarStartime[17] = 22506.0000
|
|
TrafficCarModel[17] = premier
|
|
|
|
TrafficCarPos[18] = <<768.2957, -1744.7550, 29.0428>>
|
|
TrafficCarQuatX[18] = 0.0008
|
|
TrafficCarQuatY[18] = -0.0008
|
|
TrafficCarQuatZ[18] = -0.6955
|
|
TrafficCarQuatW[18] = 0.7185
|
|
TrafficCarRecording[18] = 19
|
|
TrafficCarStartime[18] = 24420.0000
|
|
TrafficCarModel[18] = premier//stratum//manana
|
|
|
|
TrafficCarPos[19] = <<848.1189, -1592.2108, 31.3671>>
|
|
TrafficCarQuatX[19] = -0.0098
|
|
TrafficCarQuatY[19] = -0.0003
|
|
TrafficCarQuatZ[19] = 0.0308
|
|
TrafficCarQuatW[19] = 0.9995
|
|
TrafficCarRecording[19] = 20
|
|
TrafficCarStartime[19] = 29766.0000
|
|
TrafficCarModel[19] = serrano//rancherxl//tiptruck
|
|
|
|
TrafficCarPos[20] = <<789.3643, -1395.0581, 26.5083>>
|
|
TrafficCarQuatX[20] = -0.0005
|
|
TrafficCarQuatY[20] = 0.0083
|
|
TrafficCarQuatZ[20] = 0.9999
|
|
TrafficCarQuatW[20] = -0.0085
|
|
TrafficCarRecording[20] = 21
|
|
TrafficCarStartime[20] = 41008.0000
|
|
TrafficCarModel[20] = premier//penumbra
|
|
|
|
ParkedCarPos[0] = <<707.8363, -1395.9775, 25.8513>>
|
|
ParkedCarQuatX[0] = -0.0024
|
|
ParkedCarQuatY[0] = 0.0013
|
|
ParkedCarQuatZ[0] = 0.8060
|
|
ParkedCarQuatW[0] = 0.5919
|
|
ParkedCarModel[0] = premier//stratum//penumbra
|
|
|
|
ParkedCarPos[1] = <<709.5156, -1401.8848, 25.9322>>
|
|
ParkedCarQuatX[1] = -0.0006
|
|
ParkedCarQuatY[1] = -0.0007
|
|
ParkedCarQuatZ[1] = 0.7992
|
|
ParkedCarQuatW[1] = 0.6011
|
|
ParkedCarModel[1] = premier
|
|
|
|
TrafficCarPos[21] = <<656.9852, -1438.7355, 30.5204>>
|
|
TrafficCarQuatX[21] = -0.0061
|
|
TrafficCarQuatY[21] = 0.0032
|
|
TrafficCarQuatZ[21] = 0.7272
|
|
TrafficCarQuatW[21] = -0.6864
|
|
TrafficCarRecording[21] = 22
|
|
TrafficCarStartime[21] = 52624.0000
|
|
TrafficCarModel[21] = serrano//rancherxl
|
|
|
|
TrafficCarPos[22] = <<649.5815, -1443.6371, 30.0296>>
|
|
TrafficCarQuatX[22] = -0.0048
|
|
TrafficCarQuatY[22] = 0.0041
|
|
TrafficCarQuatZ[22] = 0.7389
|
|
TrafficCarQuatW[22] = -0.6738
|
|
TrafficCarRecording[22] = 23
|
|
TrafficCarStartime[22] = 53812.0000
|
|
TrafficCarModel[22] = premier//penumbra
|
|
|
|
TrafficCarPos[23] = <<538.8035, -1418.0469, 28.6650>>
|
|
TrafficCarQuatX[23] = 0.0003
|
|
TrafficCarQuatY[23] = 0.0000
|
|
TrafficCarQuatZ[23] = 0.0253
|
|
TrafficCarQuatW[23] = 0.9997
|
|
TrafficCarRecording[23] = 24
|
|
TrafficCarStartime[23] = 59290.0000
|
|
TrafficCarModel[23] = premier//stratum//peyote
|
|
|
|
TrafficCarPos[24] = <<533.0499, -1416.2839, 28.9904>>
|
|
TrafficCarQuatX[24] = 0.0000
|
|
TrafficCarQuatY[24] = 0.0002
|
|
TrafficCarQuatZ[24] = 1.0000
|
|
TrafficCarQuatW[24] = 0.0034
|
|
TrafficCarRecording[24] = 25
|
|
TrafficCarStartime[24] = 59620.0000
|
|
TrafficCarModel[24] = serrano//rancherxl
|
|
|
|
TrafficCarPos[25] = <<484.8600, -1444.9907, 28.7354>>
|
|
TrafficCarQuatX[25] = 0.0004
|
|
TrafficCarQuatY[25] = 0.0002
|
|
TrafficCarQuatZ[25] = -0.7033
|
|
TrafficCarQuatW[25] = 0.7109
|
|
TrafficCarRecording[25] = 26
|
|
TrafficCarStartime[25] = 61996.0000
|
|
TrafficCarModel[25] = premier//penumbra
|
|
|
|
TrafficCarPos[26] = <<471.0496, -1415.1317, 28.9925>>
|
|
TrafficCarQuatX[26] = -0.0002
|
|
TrafficCarQuatY[26] = -0.0002
|
|
TrafficCarQuatZ[26] = 0.5543
|
|
TrafficCarQuatW[26] = 0.8323
|
|
TrafficCarRecording[26] = 27
|
|
TrafficCarStartime[26] = 62788.0000
|
|
TrafficCarModel[26] = premier//stratum//ingot
|
|
|
|
ParkedCarPos[2] = <<501.9684, -1337.3604, 28.7765>>
|
|
ParkedCarQuatX[2] = -0.0015
|
|
ParkedCarQuatY[2] = 0.0014
|
|
ParkedCarQuatZ[2] = -0.4395
|
|
ParkedCarQuatW[2] = 0.8982
|
|
ParkedCarModel[2] = premier//penumbra
|
|
|
|
ParkedCarPos[3] = <<503.8632, -1340.4531, 28.8254>>
|
|
ParkedCarQuatX[3] = 0.0006
|
|
ParkedCarQuatY[3] = 0.0004
|
|
ParkedCarQuatZ[3] = -0.3988
|
|
ParkedCarQuatW[3] = 0.9170
|
|
ParkedCarModel[3] = premier
|
|
|
|
TrafficCarPos[27] = <<521.3064, -1324.2755, 28.8192>>
|
|
TrafficCarQuatX[27] = 0.0012
|
|
TrafficCarQuatY[27] = 0.0014
|
|
TrafficCarQuatZ[27] = 0.3395
|
|
TrafficCarQuatW[27] = 0.9406
|
|
TrafficCarRecording[27] = 28
|
|
TrafficCarStartime[27] = 66154.0000
|
|
TrafficCarModel[27] = premier//stratum//manana
|
|
//
|
|
// ParkedCarPos[4] = <<519.8814, -1343.1223, 28.8116>>
|
|
// ParkedCarQuatX[4] = -0.0018
|
|
// ParkedCarQuatY[4] = 0.0088
|
|
// ParkedCarQuatZ[4] = 0.2345
|
|
// ParkedCarQuatW[4] = 0.9721
|
|
// ParkedCarModel[4] = penumbra
|
|
//
|
|
// ParkedCarPos[5] = <<515.7321, -1344.2231, 28.8422>>
|
|
// ParkedCarQuatX[5] = -0.0079
|
|
// ParkedCarQuatY[5] = -0.0082
|
|
// ParkedCarQuatZ[5] = 0.0867
|
|
// ParkedCarQuatW[5] = 0.9962
|
|
// ParkedCarModel[5] = premier
|
|
|
|
TrafficCarPos[28] = <<493.0157, -1260.1964, 28.8755>>
|
|
TrafficCarQuatX[28] = 0.0022
|
|
TrafficCarQuatY[28] = -0.0021
|
|
TrafficCarQuatZ[28] = 0.7097
|
|
TrafficCarQuatW[28] = -0.7045
|
|
TrafficCarRecording[28] = 29
|
|
TrafficCarStartime[28] = 70444.0000
|
|
TrafficCarModel[28] = premier//manana
|
|
|
|
TrafficCarPos[29] = <<485.2056, -1193.5140, 41.2846>>
|
|
TrafficCarQuatX[29] = -0.0029
|
|
TrafficCarQuatY[29] = -0.0028
|
|
TrafficCarQuatZ[29] = 0.6941
|
|
TrafficCarQuatW[29] = 0.7199
|
|
TrafficCarRecording[29] = 30
|
|
TrafficCarStartime[29] = 75130.0000
|
|
TrafficCarModel[29] = premier//stratum//penumbra
|
|
|
|
TrafficCarPos[30] = <<504.7741, -1176.6111, 28.8833>>
|
|
TrafficCarQuatX[30] = -0.0020
|
|
TrafficCarQuatY[30] = -0.0000
|
|
TrafficCarQuatZ[30] = 0.0099
|
|
TrafficCarQuatW[30] = 0.9999
|
|
TrafficCarRecording[30] = 31
|
|
TrafficCarStartime[30] = 75526.0000
|
|
TrafficCarModel[30] = premier//ingot
|
|
|
|
TrafficCarPos[31] = <<500.8426, -1132.7350, 29.0899>>
|
|
TrafficCarQuatX[31] = -0.0001
|
|
TrafficCarQuatY[31] = 0.0000
|
|
TrafficCarQuatZ[31] = -0.3028
|
|
TrafficCarQuatW[31] = 0.9531
|
|
TrafficCarRecording[31] = 32
|
|
TrafficCarStartime[31] = 78298.0000
|
|
TrafficCarModel[31] = serrano//rancherxl
|
|
|
|
TrafficCarPos[32] = <<481.2516, -1134.4500, 28.9857>>
|
|
TrafficCarQuatX[32] = -0.0001
|
|
TrafficCarQuatY[32] = 0.0001
|
|
TrafficCarQuatZ[32] = 0.7071
|
|
TrafficCarQuatW[32] = -0.7071
|
|
TrafficCarRecording[32] = 33
|
|
TrafficCarStartime[32] = 78430.0000
|
|
TrafficCarModel[32] = premier
|
|
|
|
TrafficCarPos[33] = <<492.8828, -1128.5598, 28.9559>>
|
|
TrafficCarQuatX[33] = 0.0010
|
|
TrafficCarQuatY[33] = 0.0010
|
|
TrafficCarQuatZ[33] = 0.7238
|
|
TrafficCarQuatW[33] = 0.6900
|
|
TrafficCarRecording[33] = 34
|
|
TrafficCarStartime[33] = 78562.0000
|
|
TrafficCarModel[33] = premier
|
|
|
|
TrafficCarPos[34] = <<497.8196, -1104.1888, 28.8836>>
|
|
TrafficCarQuatX[34] = -0.0000
|
|
TrafficCarQuatY[34] = 0.0061
|
|
TrafficCarQuatZ[34] = 1.0000
|
|
TrafficCarQuatW[34] = -0.0014
|
|
TrafficCarRecording[34] = 35
|
|
TrafficCarStartime[34] = 80344.0000
|
|
TrafficCarModel[34] = serrano//rancherxl
|
|
|
|
TrafficCarPos[35] = <<470.4125, -1032.5781, 33.3936>>
|
|
TrafficCarQuatX[35] = -0.0252
|
|
TrafficCarQuatY[35] = -0.0286
|
|
TrafficCarQuatZ[35] = 0.7504
|
|
TrafficCarQuatW[35] = 0.6599
|
|
TrafficCarRecording[35] = 36
|
|
TrafficCarStartime[35] = 88858.0000
|
|
TrafficCarModel[35] = DUMMY_MODEL_FOR_SCRIPT //manana
|
|
|
|
TrafficCarPos[36] = <<380.9980, -1134.3085, 28.9309>>
|
|
TrafficCarQuatX[36] = 0.0024
|
|
TrafficCarQuatY[36] = 0.0025
|
|
TrafficCarQuatZ[36] = 0.7109
|
|
TrafficCarQuatW[36] = -0.7032
|
|
TrafficCarRecording[36] = 37
|
|
TrafficCarStartime[36] = 90574.0000
|
|
TrafficCarModel[36] = premier//stratum//manana
|
|
|
|
ParkedCarPos[6] = <<372.9772, -1136.5481, 29.1298>>
|
|
ParkedCarQuatX[6] = -0.0186
|
|
ParkedCarQuatY[6] = -0.0177
|
|
ParkedCarQuatZ[6] = 0.7270
|
|
ParkedCarQuatW[6] = -0.6861
|
|
ParkedCarModel[6] = serrano//burrito
|
|
|
|
TrafficCarPos[37] = <<328.8199, -1134.4833, 28.9543>>
|
|
TrafficCarQuatX[37] = -0.0001
|
|
TrafficCarQuatY[37] = 0.0001
|
|
TrafficCarQuatZ[37] = -0.7043
|
|
TrafficCarQuatW[37] = 0.7099
|
|
TrafficCarRecording[37] = 38
|
|
TrafficCarStartime[37] = 95194.0000
|
|
TrafficCarModel[37] = premier
|
|
|
|
TrafficCarPos[38] = <<321.5484, -1134.5587, 29.0881>>
|
|
TrafficCarQuatX[38] = -0.0002
|
|
TrafficCarQuatY[38] = 0.0002
|
|
TrafficCarQuatZ[38] = -0.7034
|
|
TrafficCarQuatW[38] = 0.7108
|
|
TrafficCarRecording[38] = 39
|
|
TrafficCarStartime[38] = 96052.0000
|
|
TrafficCarModel[38] = DUMMY_MODEL_FOR_SCRIPT //rancherxl
|
|
|
|
TrafficCarPos[39] = <<374.7384, -1053.8479, 28.9763>>
|
|
TrafficCarQuatX[39] = 0.0007
|
|
TrafficCarQuatY[39] = -0.0006
|
|
TrafficCarQuatZ[39] = -0.6988
|
|
TrafficCarQuatW[39] = 0.7153
|
|
TrafficCarRecording[39] = 40
|
|
TrafficCarStartime[39] = 100936.0000
|
|
TrafficCarModel[39] = premier//ruiner
|
|
|
|
TrafficCarPos[40] = <<382.6972, -1053.6361, 28.8843>>
|
|
TrafficCarQuatX[40] = -0.0011
|
|
TrafficCarQuatY[40] = 0.0010
|
|
TrafficCarQuatZ[40] = -0.7014
|
|
TrafficCarQuatW[40] = 0.7128
|
|
TrafficCarRecording[40] = 41
|
|
TrafficCarStartime[40] = 100936.0000
|
|
TrafficCarModel[40] = serrano//rancherxl
|
|
|
|
TrafficCarPos[41] = <<396.9267, -978.9899, 29.0242>>
|
|
TrafficCarQuatX[41] = -0.0000
|
|
TrafficCarQuatY[41] = -0.0009
|
|
TrafficCarQuatZ[41] = 0.9998
|
|
TrafficCarQuatW[41] = 0.0211
|
|
TrafficCarRecording[41] = 42
|
|
TrafficCarStartime[41] = 111232.0000
|
|
TrafficCarModel[41] = serrano//rancherxl
|
|
|
|
TrafficCarPos[42] = <<387.2838, -957.0242, 29.0587>>
|
|
TrafficCarQuatX[42] = 0.0002
|
|
TrafficCarQuatY[42] = -0.0004
|
|
TrafficCarQuatZ[42] = 0.7264
|
|
TrafficCarQuatW[42] = -0.6873
|
|
TrafficCarRecording[42] = 43
|
|
TrafficCarStartime[42] = 117370.0000
|
|
TrafficCarModel[42] = serrano//rancherxl
|
|
|
|
TrafficCarPos[43] = <<378.7138, -956.7831, 28.9829>>
|
|
TrafficCarQuatX[43] = 0.0000
|
|
TrafficCarQuatY[43] = -0.0000
|
|
TrafficCarQuatZ[43] = 0.7138
|
|
TrafficCarQuatW[43] = -0.7004
|
|
TrafficCarRecording[43] = 44
|
|
TrafficCarStartime[43] = 117436.0000
|
|
TrafficCarModel[43] = serrano//rebel2
|
|
|
|
TrafficCarPos[44] = <<400.5379, -936.7937, 28.9378>>
|
|
TrafficCarQuatX[44] = -0.0000
|
|
TrafficCarQuatY[44] = -0.0006
|
|
TrafficCarQuatZ[44] = 0.9998
|
|
TrafficCarQuatW[44] = 0.0187
|
|
TrafficCarRecording[44] = 45
|
|
TrafficCarStartime[44] = 119086.0000
|
|
TrafficCarModel[44] = premier
|
|
|
|
TrafficCarPos[45] = <<408.7719, -877.9841, 28.9611>>
|
|
TrafficCarQuatX[45] = 0.0036
|
|
TrafficCarQuatY[45] = -0.0001
|
|
TrafficCarQuatZ[45] = -0.0204
|
|
TrafficCarQuatW[45] = 0.9998
|
|
TrafficCarRecording[45] = 46
|
|
TrafficCarStartime[45] = 122650.0000
|
|
TrafficCarModel[45] = premier//stratum//ingot
|
|
|
|
TrafficCarPos[46] = <<421.5898, -849.4219, 29.2132>>
|
|
TrafficCarQuatX[46] = -0.0565
|
|
TrafficCarQuatY[46] = -0.0543
|
|
TrafficCarQuatZ[46] = 0.7197
|
|
TrafficCarQuatW[46] = 0.6898
|
|
TrafficCarRecording[46] = 47
|
|
TrafficCarStartime[46] = 124432.0000
|
|
TrafficCarModel[46] = premier//manana
|
|
|
|
TrafficCarPos[47] = <<422.5729, -821.7974, 28.8209>>
|
|
TrafficCarQuatX[47] = 0.0192
|
|
TrafficCarQuatY[47] = 0.0192
|
|
TrafficCarQuatZ[47] = 0.7070
|
|
TrafficCarQuatW[47] = 0.7067
|
|
TrafficCarRecording[47] = 48
|
|
TrafficCarStartime[47] = 125818.0000
|
|
TrafficCarModel[47] = serrano//rancherxl
|
|
|
|
TrafficCarPos[48] = <<403.5500, -810.9785, 28.8325>>
|
|
TrafficCarQuatX[48] = -0.0000
|
|
TrafficCarQuatY[48] = 0.0000
|
|
TrafficCarQuatZ[48] = 1.0000
|
|
TrafficCarQuatW[48] = -0.0000
|
|
TrafficCarRecording[48] = 49
|
|
TrafficCarStartime[48] = 126346.0000
|
|
TrafficCarModel[48] = premier
|
|
|
|
TrafficCarPos[49] = <<408.7001, -694.7044, 28.9669>>
|
|
TrafficCarQuatX[49] = 0.0076
|
|
TrafficCarQuatY[49] = -0.0000
|
|
TrafficCarQuatZ[49] = 0.0000
|
|
TrafficCarQuatW[49] = 1.0000
|
|
TrafficCarRecording[49] = 50
|
|
TrafficCarStartime[49] = 144757.0000
|
|
TrafficCarModel[49] = serrano//rancherxl
|
|
|
|
TrafficCarPos[50] = <<399.3801, -674.1376, 28.8158>>
|
|
TrafficCarQuatX[50] = 0.0007
|
|
TrafficCarQuatY[50] = 0.0007
|
|
TrafficCarQuatZ[50] = 0.6916
|
|
TrafficCarQuatW[50] = 0.7223
|
|
TrafficCarRecording[50] = 51
|
|
TrafficCarStartime[50] = 145813.0000
|
|
TrafficCarModel[50] = premier
|
|
|
|
ParkedCarPos[7] = <<409.8649, -655.0555, 28.0074>>
|
|
ParkedCarQuatX[7] = 0.0000
|
|
ParkedCarQuatY[7] = 0.0000
|
|
ParkedCarQuatZ[7] = 0.7213
|
|
ParkedCarQuatW[7] = -0.6926
|
|
ParkedCarModel[7] = premier//stratum//dilettante
|
|
|
|
ParkedCarPos[8] = <<392.8911, -643.9622, 28.0134>>
|
|
ParkedCarQuatX[8] = -0.0001
|
|
ParkedCarQuatY[8] = -0.0000
|
|
ParkedCarQuatZ[8] = 0.7089
|
|
ParkedCarQuatW[8] = 0.7053
|
|
ParkedCarModel[8] = premier//dilettante
|
|
|
|
ParkedCarPos[9] = <<429.7155, -638.2184, 28.5253>>
|
|
ParkedCarQuatX[9] = -0.0003
|
|
ParkedCarQuatY[9] = 0.0000
|
|
ParkedCarQuatZ[9] = -0.0189
|
|
ParkedCarQuatW[9] = 0.9998
|
|
ParkedCarModel[9] = bus
|
|
|
|
TrafficCarPos[51] = <<333.5482, -662.7706, 28.9943>>
|
|
TrafficCarQuatX[51] = 0.0000
|
|
TrafficCarQuatY[51] = -0.0000
|
|
TrafficCarQuatZ[51] = 0.7987
|
|
TrafficCarQuatW[51] = -0.6017
|
|
TrafficCarRecording[51] = 52
|
|
TrafficCarStartime[51] = 152347.0000
|
|
TrafficCarModel[51] = premier//stratum//ingot
|
|
|
|
TrafficCarPos[52] = <<327.5386, -660.2631, 28.7691>>
|
|
TrafficCarQuatX[52] = -0.0000
|
|
TrafficCarQuatY[52] = 0.0001
|
|
TrafficCarQuatZ[52] = 0.8171
|
|
TrafficCarQuatW[52] = -0.5764
|
|
TrafficCarRecording[52] = 53
|
|
TrafficCarStartime[52] = 152347.0000
|
|
TrafficCarModel[52] = premier//penumbra
|
|
|
|
ParkedCarPos[10] = <<257.7682, -626.4667, 40.9463>>
|
|
ParkedCarQuatX[10] = 0.0462
|
|
ParkedCarQuatY[10] = 0.0124
|
|
ParkedCarQuatZ[10] = -0.1716
|
|
ParkedCarQuatW[10] = 0.9840
|
|
ParkedCarModel[10] = serrano//rancherxl
|
|
|
|
TrafficCarPos[53] = <<127.3681, -577.9399, 31.2777>>
|
|
TrafficCarQuatX[53] = 0.0008
|
|
TrafficCarQuatY[53] = -0.0012
|
|
TrafficCarQuatZ[53] = 0.8310
|
|
TrafficCarQuatW[53] = -0.5562
|
|
TrafficCarRecording[53] = 54
|
|
TrafficCarStartime[53] = 161917.0000
|
|
TrafficCarModel[53] = premier//stratum//ingot
|
|
|
|
TrafficCarPos[54] = <<99.9988, -544.2546, 33.5235>>
|
|
TrafficCarQuatX[54] = -0.0017
|
|
TrafficCarQuatY[54] = -0.0009
|
|
TrafficCarQuatZ[54] = 0.7134
|
|
TrafficCarQuatW[54] = -0.7008
|
|
TrafficCarRecording[54] = 55
|
|
TrafficCarStartime[54] = 163699.0000
|
|
TrafficCarModel[54] = premier//ingot
|
|
|
|
// TrafficCarPos[55] = <<102.0943, -561.2410, 43.1619>>
|
|
// TrafficCarQuatX[55] = 0.0015
|
|
// TrafficCarQuatY[55] = 0.0063
|
|
// TrafficCarQuatZ[55] = 0.9840
|
|
// TrafficCarQuatW[55] = 0.1779
|
|
// TrafficCarRecording[55] = 56
|
|
// TrafficCarStartime[55] = 163765.0000
|
|
// TrafficCarModel[55] = ingot
|
|
|
|
TrafficCarPos[56] = <<108.3187, -581.6124, 31.0713>>
|
|
TrafficCarQuatX[56] = 0.0009
|
|
TrafficCarQuatY[56] = -0.0004
|
|
TrafficCarQuatZ[56] = -0.1665
|
|
TrafficCarQuatW[56] = 0.9860
|
|
TrafficCarRecording[56] = 57
|
|
TrafficCarStartime[56] = 163765.0000
|
|
TrafficCarModel[56] = premier//stratum//penumbra
|
|
|
|
// TrafficCarPos[57] = <<97.7940, -557.4409, 43.1147>>
|
|
// TrafficCarQuatX[57] = -0.0002
|
|
// TrafficCarQuatY[57] = 0.0054
|
|
// TrafficCarQuatZ[57] = 0.9843
|
|
// TrafficCarQuatW[57] = 0.1767
|
|
// TrafficCarRecording[57] = 58
|
|
// TrafficCarStartime[57] = 163963.0000
|
|
// TrafficCarModel[57] = ingot
|
|
|
|
TrafficCarPos[58] = <<-124.8340, -690.5775, 34.6172>>
|
|
TrafficCarQuatX[58] = -0.0011
|
|
TrafficCarQuatY[58] = -0.0065
|
|
TrafficCarQuatZ[58] = 0.9848
|
|
TrafficCarQuatW[58] = 0.1733
|
|
TrafficCarRecording[58] = 59
|
|
TrafficCarStartime[58] = 186261.0000
|
|
TrafficCarModel[58] = premier//ruiner
|
|
|
|
TrafficCarPos[59] = <<-112.3217, -727.3997, 34.2949>>
|
|
TrafficCarQuatX[59] = 0.0026
|
|
TrafficCarQuatY[59] = -0.0020
|
|
TrafficCarQuatZ[59] = -0.5987
|
|
TrafficCarQuatW[59] = 0.8009
|
|
TrafficCarRecording[59] = 60
|
|
TrafficCarStartime[59] = 188307.0000
|
|
TrafficCarModel[59] = premier//stratum//manana
|
|
|
|
TrafficCarPos[60] = <<-94.2945, -712.0757, 34.2515>>
|
|
TrafficCarQuatX[60] = -0.0092
|
|
TrafficCarQuatY[60] = 0.0142
|
|
TrafficCarQuatZ[60] = 0.5341
|
|
TrafficCarQuatW[60] = 0.8453
|
|
TrafficCarRecording[60] = 61
|
|
TrafficCarStartime[60] = 188505.0000
|
|
TrafficCarModel[60] = premier//manana
|
|
|
|
TrafficCarPos[61] = <<-127.4751, -746.0173, 33.8412>>
|
|
TrafficCarQuatX[61] = 0.0199
|
|
TrafficCarQuatY[61] = -0.0038
|
|
TrafficCarQuatZ[61] = -0.1870
|
|
TrafficCarQuatW[61] = 0.9822
|
|
TrafficCarRecording[61] = 62
|
|
TrafficCarStartime[61] = 189957.0000
|
|
TrafficCarModel[61] = premier//stratum//dilettante
|
|
|
|
TrafficCarPos[62] = <<-129.9522, -753.0590, 33.7323>>
|
|
TrafficCarQuatX[62] = 0.0233
|
|
TrafficCarQuatY[62] = -0.0065
|
|
TrafficCarQuatZ[62] = -0.2697
|
|
TrafficCarQuatW[62] = 0.9626
|
|
TrafficCarRecording[62] = 63
|
|
TrafficCarStartime[62] = 190815.0000
|
|
TrafficCarModel[62] = serrano//rancherxl
|
|
|
|
TrafficCarPos[63] = <<-37.9436, -752.9625, 32.3440>>
|
|
TrafficCarQuatX[63] = -0.0028
|
|
TrafficCarQuatY[63] = -0.0054
|
|
TrafficCarQuatZ[63] = 0.8178
|
|
TrafficCarQuatW[63] = -0.5754
|
|
TrafficCarRecording[63] = 64
|
|
TrafficCarStartime[63] = 195171.0000
|
|
TrafficCarModel[63] = premier//serrano
|
|
|
|
TrafficCarPos[64] = <<-16.8790, -743.6087, 31.9734>>
|
|
TrafficCarQuatX[64] = 0.0066
|
|
TrafficCarQuatY[64] = 0.0088
|
|
TrafficCarQuatZ[64] = 0.5713
|
|
TrafficCarQuatW[64] = 0.8206
|
|
TrafficCarRecording[64] = 65
|
|
TrafficCarStartime[64] = 195765.0000
|
|
TrafficCarModel[64] = serrano
|
|
|
|
ParkedCarPos[11] = <<48.7516, -687.4161, 43.5806>>
|
|
ParkedCarQuatX[11] = -0.0083
|
|
ParkedCarQuatY[11] = 0.0015
|
|
ParkedCarQuatZ[11] = 0.9857
|
|
ParkedCarQuatW[11] = 0.1680
|
|
ParkedCarModel[11] = premier//stratum//dilettante
|
|
|
|
TrafficCarPos[65] = <<57.4123, -677.5038, 31.1767>>
|
|
TrafficCarQuatX[65] = -0.0001
|
|
TrafficCarQuatY[65] = -0.0006
|
|
TrafficCarQuatZ[65] = 0.9843
|
|
TrafficCarQuatW[65] = 0.1765
|
|
TrafficCarRecording[65] = 66
|
|
TrafficCarStartime[65] = 203421.0000
|
|
TrafficCarModel[65] = serrano//rebel2
|
|
|
|
TrafficCarPos[66] = <<69.8850, -690.3309, 31.2761>>
|
|
TrafficCarQuatX[66] = -0.0000
|
|
TrafficCarQuatY[66] = 0.0000
|
|
TrafficCarQuatZ[66] = -0.1711
|
|
TrafficCarQuatW[66] = 0.9853
|
|
TrafficCarRecording[66] = 67
|
|
TrafficCarStartime[66] = 204147.0000
|
|
TrafficCarModel[66] = serrano//rancherxl
|
|
|
|
SetPieceCarPos[0] = <<1225.3907, -1685.3101, 39.4209>>
|
|
SetPieceCarQuatX[0] = -0.0236
|
|
SetPieceCarQuatY[0] = -0.0719
|
|
SetPieceCarQuatZ[0] = 0.8377
|
|
SetPieceCarQuatW[0] = 0.5409
|
|
SetPieceCarRecording[0] = 101
|
|
SetPieceCarStartime[0] = 0.0000
|
|
SetPieceCarRecordingSpeed[0] = 1.0000
|
|
SetPieceCarModel[0] = stockade
|
|
vehs[mvf_security_truck_fol].id = SetPieceCarID[0]
|
|
|
|
ENDPROC
|
|
Proc Manage_UBER_rec(VEHICLE_INDEX veh, string recName)
|
|
|
|
SWITCH uber_state
|
|
// **** INITIALISE UBER PLAYBACK ****
|
|
CASE UBER_INIT
|
|
INITIALISE_UBER_PLAYBACK(recName,001,FALSE)
|
|
SET_FORCE_UBER_PLAYBACK_TO_USE_DEFAULT_PED_MODEL(TRUE)
|
|
SET_UBER_PLAYBACK_TO_CLEANUP_DEFAULT_PED_MODEL(TRUE)
|
|
CREATE_ALL_WAITING_UBER_CARS()
|
|
LOAD_UBER_CHASE_DATA()
|
|
bPlayTrafficRecordingEvenIfPlayerIsAheadOfChase = true
|
|
fUberPlaybackDensitySwitchOffRange = 700
|
|
fUberPlaybackMinCreationDistance = 400
|
|
fCurrentPlaybackTime = 0.0
|
|
//roads
|
|
bCarsAreOn = false
|
|
SWITCH_ALL_RANDOM_CARS_ON()
|
|
|
|
SET_ROADS_IN_AREA(<<1184.57813, -1801.74841, 25>>,<<780.50098, -1454.51013, 37>>,false)
|
|
SET_ROADS_IN_AREA(<<859.14117, -1563.11743, 24>>,<<242.78966, -829.41626, 33>>,false)
|
|
SET_ROADS_IN_AREA(<<535.71149, -552.73450, 24>>,<<35.41522, -1156.01208, 33>>,false)
|
|
SET_ROADS_IN_AREA(<<-159.27182, -539.10400, 28>>,<<416.92444, -832.99457, 41.5>>,false)
|
|
iRoadBlock_1 = ADD_ROAD_NODE_SPEED_ZONE(<<824.89844, -1748.84338, 28.48285>>,29,0)
|
|
iRoadBlock_2 = ADD_ROAD_NODE_SPEED_ZONE(<<796.60425, -1435.00281, 26.20493>>,23.8,0)
|
|
iRoadBlock_3 = ADD_ROAD_NODE_SPEED_ZONE(<<541.35822, -1431.70422, 28.34233>>,21,0)
|
|
iRoadBlock_4 = ADD_ROAD_NODE_SPEED_ZONE(<<499.58060, -1132.15405, 28.45514>>,18,0) // after bridge
|
|
iRoadBlock_5 = ADD_ROAD_NODE_SPEED_ZONE(<<398.24036, -1048.06909, 28.44339>>,22,0)
|
|
iRoadBlock_6 = ADD_ROAD_NODE_SPEED_ZONE(<<403.37341, -955.11713, 28.44834>>,20,0)
|
|
iRoadBlock_7 = ADD_ROAD_NODE_SPEED_ZONE(<<406.04382, -853.28693, 28.33914>>,25,0)// problem zone
|
|
iRoadBlock_8 = ADD_ROAD_NODE_SPEED_ZONE(<<354.64478, -667.05859, 28.33901>>,27,0)//tunnel enterance
|
|
|
|
uber_state = UBER_PLAY
|
|
BREAK
|
|
// **** START PLAYBACK OF MAIN CAR ****
|
|
|
|
CASE UBER_PLAY
|
|
REQUEST_TRAFFIC_IN_ADVANCE(10000)
|
|
fCurrentPlaybackTime = 0.0
|
|
START_PLAYBACK_RECORDED_VEHICLE_WITH_FLAGS(veh, 001,recName, 4, 0, DRIVINGMODE_AVOIDCARS_RECKLESS)
|
|
SET_UBER_PLAYBACK_TO_TIME_NOW(veh,7000)
|
|
CREATE_ALL_WAITING_UBER_CARS()
|
|
uber_state = UBER_UPDATE
|
|
BREAK
|
|
|
|
// **** UPDATE UBER PLAYBACK ****
|
|
CASE UBER_UPDATE
|
|
IF IS_VEHICLE_DRIVEABLE(veh)
|
|
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(veh)
|
|
fCurrentPlaybackTime = GET_TIME_POSITION_IN_RECORDING(veh)
|
|
if not DOES_ENTITY_EXIST(vehs[mvf_security_truck_fol].id)
|
|
vehs[mvf_security_truck_fol].id = SetPieceCarID[0]
|
|
endif
|
|
SET_PLAYBACK_SPEED(veh, fPlaybackSpeed)
|
|
REQUEST_TRAFFIC_IN_ADVANCE(5000)
|
|
UPDATE_UBER_PLAYBACK(veh, fPlaybackSpeed)
|
|
|
|
ELSE
|
|
CLEANUP_UBER_PLAYBACK()
|
|
REMOVE_ROAD_NODE_SPEED_ZONE(iRoadBlock_1)
|
|
REMOVE_ROAD_NODE_SPEED_ZONE(iRoadBlock_2)
|
|
REMOVE_ROAD_NODE_SPEED_ZONE(iRoadBlock_3)
|
|
REMOVE_ROAD_NODE_SPEED_ZONE(iRoadBlock_4)
|
|
REMOVE_ROAD_NODE_SPEED_ZONE(iRoadBlock_5)
|
|
REMOVE_ROAD_NODE_SPEED_ZONE(iRoadBlock_6)
|
|
REMOVE_ROAD_NODE_SPEED_ZONE(iRoadBlock_7)
|
|
REMOVE_ROAD_NODE_SPEED_ZONE(iRoadBlock_8)
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
endproc
|
|
|
|
PROC Point_Gameplay_cam_at_coord(float targetHeading)
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING(targetHeading - GET_ENTITY_HEADING(Player_ped_id()))
|
|
endproc
|
|
func float get_pitch_for_Entity(Entity_index ent)
|
|
|
|
vector vec_ba
|
|
vector direction_vec
|
|
|
|
if isentityalive(ent)
|
|
and isentityalive(PLAYER_PED_ID())
|
|
vec_ba = get_entity_coords(ent) - get_entity_coords(player_ped_id())
|
|
endif
|
|
|
|
direction_vec = normalise_vector(vec_ba)
|
|
|
|
return (atan2(direction_vec.z, vmag(<<direction_vec.x, direction_vec.y, 0.0>>)))
|
|
|
|
endfunc
|
|
FUNC ped_index TREV()
|
|
return peds[mpf_trevor].id
|
|
ENDFUNC
|
|
FUNC ped_index MIKE()
|
|
return peds[mpf_michael].id
|
|
endfunc
|
|
FUNC ped_index LESTER()
|
|
return peds[mpf_lester].id
|
|
endfunc
|
|
FUNC ped_index FRANK()
|
|
return peds[mpf_franklin].id
|
|
endfunc
|
|
Func bool Is_clock_time_less_than_or_equal(int h,int m)
|
|
if GET_CLOCK_HOURS() < h
|
|
return true
|
|
elif GET_CLOCK_HOURS() = h
|
|
if GET_CLOCK_MINUTES() < m
|
|
or GET_CLOCK_MINUTES() = m
|
|
return true
|
|
else
|
|
return false
|
|
endif
|
|
elif GET_CLOCK_HOURS() > h
|
|
return false
|
|
endif
|
|
|
|
return false
|
|
endfunc
|
|
|
|
PROC countdownSound()
|
|
INT iHours, iMinutes, iSeconds
|
|
iHours = GET_CLOCK_HOURS()
|
|
iMinutes = GET_CLOCK_MINUTES()
|
|
iSeconds = GET_CLOCK_SECONDS()
|
|
|
|
IF iCountdownAudioEvent = 0
|
|
IF iMinutes = 25 AND iSeconds >= 30
|
|
PLAY_SOUND_FRONTEND(-1, "10_SEC_WARNING", "HUD_MINI_GAME_SOUNDSET")
|
|
iCountdownAudioEvent++
|
|
ENDIF
|
|
ELIF iCountdownAudioEvent = 1
|
|
IF iMinutes = 26 AND iSeconds >= 0
|
|
PLAY_SOUND_FRONTEND(-1, "10_SEC_WARNING", "HUD_MINI_GAME_SOUNDSET")
|
|
iCountdownAudioEvent++
|
|
ENDIF
|
|
ELIF iCountdownAudioEvent = 2
|
|
IF iMinutes = 26 AND iSeconds >= 30
|
|
PLAY_SOUND_FRONTEND(-1, "10_SEC_WARNING", "HUD_MINI_GAME_SOUNDSET")
|
|
iCountdownAudioEvent++
|
|
ENDIF
|
|
ELIF iCountdownAudioEvent = 3
|
|
IF iMinutes = 27 AND iSeconds >= 0
|
|
PLAY_SOUND_FRONTEND(-1, "10_SEC_WARNING", "HUD_MINI_GAME_SOUNDSET")
|
|
iCountdownAudioEvent++
|
|
ENDIF
|
|
ELIF iCountdownAudioEvent = 4
|
|
IF iMinutes = 27 AND iSeconds >= 30
|
|
PLAY_SOUND_FRONTEND(-1, "10_SEC_WARNING", "HUD_MINI_GAME_SOUNDSET")
|
|
iCountdownAudioEvent++
|
|
ENDIF
|
|
ELIF iCountdownAudioEvent = 5
|
|
IF iMinutes = 28 AND iSeconds >= 0
|
|
PLAY_SOUND_FRONTEND(-1, "10_SEC_WARNING", "HUD_MINI_GAME_SOUNDSET")
|
|
iCountdownAudioEvent++
|
|
ENDIF
|
|
ELIF iCountdownAudioEvent = 6
|
|
IF iMinutes = 28 AND iSeconds >= 15
|
|
PLAY_SOUND_FRONTEND(-1, "10_SEC_WARNING", "HUD_MINI_GAME_SOUNDSET")
|
|
iCountdownAudioEvent++
|
|
ENDIF
|
|
ELIF iCountdownAudioEvent = 7
|
|
IF iMinutes = 28 AND iSeconds >= 30
|
|
PLAY_SOUND_FRONTEND(-1, "10_SEC_WARNING", "HUD_MINI_GAME_SOUNDSET")
|
|
iCountdownAudioEvent++
|
|
ENDIF
|
|
ELIF iCountdownAudioEvent = 8
|
|
IF iMinutes = 28 AND iSeconds >= 45
|
|
PLAY_SOUND_FRONTEND(-1, "10_SEC_WARNING", "HUD_MINI_GAME_SOUNDSET")
|
|
iCountdownAudioEvent++
|
|
ENDIF
|
|
ELIF iCountdownAudioEvent = 9
|
|
IF iMinutes = 29 AND iSeconds >= 0
|
|
PLAY_SOUND_FRONTEND(-1, "10_SEC_WARNING", "HUD_MINI_GAME_SOUNDSET")
|
|
iCountdownAudioEvent++
|
|
ENDIF
|
|
ELIF iCountdownAudioEvent = 10
|
|
IF iMinutes = 29 AND iSeconds >= 15
|
|
PLAY_SOUND_FRONTEND(-1, "10_SEC_WARNING", "HUD_MINI_GAME_SOUNDSET")
|
|
iCountdownAudioEvent++
|
|
ENDIF
|
|
ELIF iCountdownAudioEvent = 11
|
|
IF iMinutes = 29 AND iSeconds >= 30
|
|
PLAY_SOUND_FRONTEND(-1, "10_SEC_WARNING", "HUD_MINI_GAME_SOUNDSET")
|
|
iCountdownAudioEvent++
|
|
ENDIF
|
|
ELIF iCountdownAudioEvent = 12
|
|
IF iMinutes = 29 AND iSeconds >= 45
|
|
PLAY_SOUND_FRONTEND(-1, "10_SEC_WARNING", "HUD_MINI_GAME_SOUNDSET")
|
|
iCountdownAudioEvent++
|
|
ENDIF
|
|
ELIF iCountdownAudioEvent = 13
|
|
IF iMinutes >= 30 AND iHours = 15
|
|
PLAY_SOUND_FRONTEND(-1, "TIMER_STOP", "HUD_MINI_GAME_SOUNDSET")
|
|
iCountdownAudioEvent++
|
|
ENDIF
|
|
ENDIF
|
|
// PRINTLN("@@@@@@@@@@@@@@@ iCountdownAudioEvent:", iCountdownAudioEvent, " iHours:", iHours, " iMinutes:", iMinutes, " iSeconds:", iSeconds, " @@@@@@@@@@@@@@@@@@@")
|
|
|
|
ENDPROC
|
|
|
|
BOOL bWentInBridge1
|
|
BOOL bWentOutBridge1
|
|
BOOL bWentInBridge2
|
|
BOOL bWentOutBridge2
|
|
BOOl bSetUnderTheBridgeStat
|
|
|
|
PROC manage_bridges_achievement()
|
|
|
|
//INT iTemp
|
|
VECTOR vClosestNode, vHeliCoords
|
|
FLOAT fHeliMaxRange_X, fHeliMinRange_X, fHeliMaxRange_Y, fHeliMinRange_Y
|
|
FLOAT fCurDistSq1
|
|
FLOAT fCurDistSq2
|
|
|
|
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_helicopter].id)
|
|
IF bBridge = FALSE
|
|
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehs[mvf_helicopter].id)
|
|
AND NOT IS_ENTITY_IN_ANGLED_AREA(vehs[mvf_helicopter].id, <<335.038849,-659.229736,40.802753>>, <<79.029335,-561.329224,28.069180>>, 34.687500)
|
|
// REPEAT 32 iTemp
|
|
// IF IS_BIT_SET(g_savedGlobals.sAmbient.iBridgesFlownUnderFlags, iTemp)
|
|
// PRINTSTRING("BRIDGE 1")PRINTNL()
|
|
// bBridge = TRUE
|
|
// ENDIF
|
|
// IF IS_BIT_SET(g_savedGlobals.sAmbient.iBridgesFlownUnderFlags2, iTemp)
|
|
// PRINTSTRING("BRIDGE 2")PRINTNL()
|
|
// bBridge = TRUE
|
|
// ENDIF
|
|
// IF IS_BIT_SET(g_savedGlobals.sAmbient.iBridgesFlownUnderFlags3, iTemp)
|
|
// PRINTSTRING("BRIDGE 3")PRINTNL()
|
|
// bBridge = TRUE
|
|
// ENDIF
|
|
// ENDREPEAT
|
|
fCurDistSq1 = VDIST2(<<636.83197, -1428.86707, 8.60403>>,GET_ENTITY_COORDS(PLAYER_PED_ID()))
|
|
IF fCurDistSq1 < 10000.0 //This is 100m
|
|
IF IS_ENTITY_IN_ANGLED_AREA(vehs[mvf_helicopter].id, <<599.864319,-1452.673584,7.386136>>, <<688.002136,-1451.465210,27.684410>>, 10.750000)
|
|
bWentInBridge1 = TRUE
|
|
ENDIF
|
|
|
|
IF IS_ENTITY_IN_ANGLED_AREA( vehs[mvf_helicopter].id, <<678.311707,-1413.951538,7.958761>>, <<589.502563,-1416.228882,27.585014>>, 10.750000)
|
|
bWentOutBridge1 = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
fCurDistSq2 =VDIST2(<<592.38153, -1180.68628, 8.87134>>,GET_ENTITY_COORDS(PLAYER_PED_ID()))//This is 200m
|
|
IF fCurDistSq2 < 20000.0 //This is 100m
|
|
IF IS_ENTITY_IN_ANGLED_AREA( vehs[mvf_helicopter].id, <<491.187988,-1233.989258,6.291784>>, <<687.082397,-1250.511841,40.418732>>, 14.250000)
|
|
bWentInBridge2 = TRUE
|
|
ENDIF
|
|
|
|
IF IS_ENTITY_IN_ANGLED_AREA(vehs[mvf_helicopter].id, <<489.855194,-1178.115356,6.291779>>, <<696.421570,-1149.358276,40.812756>>, 14.250000)
|
|
bWentOutBridge2 = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF bWentInBridge1 = TRUE
|
|
AND bWentOutBridge1 = TRUE
|
|
bBridge = TRUE
|
|
ENDIF
|
|
|
|
IF bWentInBridge2 = TRUE
|
|
AND bWentOutBridge2 = TRUE
|
|
bBridge = TRUE
|
|
ENDIF
|
|
|
|
//Check to see if there is a vehicle node above the player. This will suggest that the player is flying under a road.
|
|
IF GET_CLOSEST_VEHICLE_NODE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehs[mvf_helicopter].id, <<0,0,5>>), vClosestNode)
|
|
vHeliCoords = GET_ENTITY_COORDS(PLAYER_PED_ID())
|
|
|
|
fHeliMaxRange_X = (vHeliCoords.x + 4)
|
|
fHeliMinRange_X = (vHeliCoords.x - 4)
|
|
|
|
fHeliMaxRange_Y = (vHeliCoords.y + 4)
|
|
fHeliMinRange_Y = (vHeliCoords.y - 4)
|
|
|
|
IF VclosestNode.z > vHeliCoords.z
|
|
IF VclosestNode.x <= fHeliMaxRange_X
|
|
AND VclosestNode.x >= fHeliMinRange_X
|
|
AND VclosestNode.y <= fHeliMaxRange_Y
|
|
AND VclosestNode.y >= fHeliMinRange_Y
|
|
PRINTSTRING("BRIDGE 4")PRINTNL()
|
|
bBridge = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
if bBridge
|
|
IF NOT bSetUnderTheBridgeStat
|
|
INFORM_STAT_SYSTEM_OF_BOOL_STAT_HAPPENED(FH1_UNDER_BRIDGE)
|
|
bSetUnderTheBridgeStat = TRUE
|
|
//INFORM_MISSION_STATS_OF_INCREMENT(FH1_UNDER_BRIDGE)
|
|
ENDIF
|
|
endif
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
proc set_peds_CS_OUTFITS()
|
|
|
|
IF ISENTITYALIVE(MIKE())
|
|
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Michael",MIKE())
|
|
ENDIF
|
|
IF ISENTITYALIVE(FRANK())
|
|
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Franklin",FRANK())
|
|
ENDIF
|
|
IF ISENTITYALIVE(TREV())
|
|
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Trevor",TREV())
|
|
ENDIF
|
|
if IsEntityAlive(LESTER())
|
|
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Lester",LESTER())
|
|
endif
|
|
if IsEntityAlive(peds[mpf_guard].id)
|
|
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("security_guard",peds[mpf_guard].id)
|
|
endif
|
|
|
|
endproc
|
|
proc DO_SHAKE_INTERP()
|
|
if bstopshake
|
|
if GET_GAME_TIMER()- ishake > 250
|
|
fshakeAmp = fshakeAmp - 0.05
|
|
ishake = get_game_timer()
|
|
endif
|
|
|
|
If fshakeAmp > 1.0
|
|
fshakeAmp = 1.0
|
|
ENDIF
|
|
|
|
IF fshakeAmp <= 0
|
|
fshakeAmp = 0
|
|
bstopshake = false
|
|
endif
|
|
SET_GAMEPLAY_CAM_SHAKE_AMPLITUDE(fshakeAmp)
|
|
endif
|
|
|
|
endproc
|
|
Proc Do_timelapse_BS1()
|
|
sTimelapse.currentTimeOfDay = GET_CURRENT_TIMEOFDAY()
|
|
|
|
IF sTimelapse.iTimelapseCut = 0
|
|
if GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
REQUEST_CUTSCENE_WITH_PLAYBACK_LIST("bs_1_int", CS_SECTION_1 | CS_SECTION_2 | CS_SECTION_3 | CS_SECTION_4 | CS_SECTION_5 | CS_SECTION_6 | CS_SECTION_7 | CS_SECTION_8 )
|
|
elif GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
REQUEST_CUTSCENE_WITH_PLAYBACK_LIST("bs_1_int", CS_SECTION_4 | CS_SECTION_5 | CS_SECTION_6 | CS_SECTION_7 | CS_SECTION_8)
|
|
elif GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN
|
|
REQUEST_CUTSCENE_WITH_PLAYBACK_LIST("bs_1_int", CS_SECTION_4 | CS_SECTION_5 | CS_SECTION_6 | CS_SECTION_7 | CS_SECTION_8)
|
|
endif
|
|
ENDIF
|
|
|
|
while not DO_TIMELAPSE(SP_HEIST_FINALE_1,sTimelapse)
|
|
DISPLAY_RADAR(false)
|
|
DISPLAY_HUD(false)
|
|
wait(0)
|
|
endwhile
|
|
endproc
|
|
|
|
proc clear_players_task_on_control_input(script_task_name task_name)
|
|
|
|
if get_script_task_status(player_ped_id(), task_name) = performing_task
|
|
|
|
int left_stick_x
|
|
int left_stick_y
|
|
int right_stick_x
|
|
int right_stick_y
|
|
int stick_dead_zone = 28
|
|
|
|
GET_CONTROL_VALUE_OF_ANALOGUE_STICKS(left_stick_x, left_stick_y, right_stick_x, right_stick_y)
|
|
|
|
IF NOT IS_LOOK_INVERTED()
|
|
right_stick_y *= -1
|
|
ENDIF
|
|
|
|
// invert the vertical
|
|
IF (left_stick_y > STICK_DEAD_ZONE)
|
|
OR (left_stick_y < (STICK_DEAD_ZONE * -1))
|
|
or (left_stick_x > STICK_DEAD_ZONE)
|
|
OR (left_stick_x < (STICK_DEAD_ZONE * -1))
|
|
//or is_control_pressed(player_control, input_sprint)
|
|
|
|
clear_ped_tasks(player_ped_id())
|
|
|
|
endif
|
|
endif
|
|
endproc
|
|
Proc Create_guard(MPF_MISSION_PED_FLAGS guard,vector pos,float heading)
|
|
|
|
peds[guard].id = create_ped(PEDTYPE_MISSION,S_M_M_ARMOURED_01,pos,heading)
|
|
if guard = mpf_guard
|
|
SET_PED_COMPONENT_VARIATION(peds[guard].id,PED_COMP_HEAD,0,1)
|
|
SET_PED_PROP_INDEX(peds[guard].id,ANCHOR_HEAD,1,0)
|
|
else
|
|
SET_PED_COMPONENT_VARIATION(peds[guard].id,PED_COMP_HEAD,2,0)
|
|
endif
|
|
|
|
SET_PED_CONFIG_FLAG(peds[guard].id,PCF_RunFromFiresAndExplosions,false)
|
|
SET_PED_HIGHLY_PERCEPTIVE(peds[guard].id,true)
|
|
GIVE_WEAPON_TO_PED(peds[guard].id,WEAPONTYPE_ADVANCEDRIFLE,INFINITE_AMMO,true,true)
|
|
SET_CURRENT_PED_WEAPON(peds[guard].id,WEAPONTYPE_ADVANCEDRIFLE,true)
|
|
SET_PED_LEG_IK_MODE(peds[guard].id,LEG_IK_PARTIAL)
|
|
|
|
OPEN_SEQUENCE_TASK(peds[guard].seq)
|
|
if guard = mpf_guard
|
|
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-77.96, -677.87, 33.47 >>,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT,90)
|
|
else
|
|
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<9.47284, -710.34497, 45.01460>>,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT,189.8286)
|
|
endif
|
|
TASK_PLAY_ANIM(null,"missbigscore1guard_wait_rifle","wait_base",slow_BLEND_IN,INSTANT_BLEND_OUT)
|
|
TASK_PLAY_ANIM(null,"missbigscore1guard_wait_rifle","wait_a",INSTANT_BLEND_in,INSTANT_BLEND_OUT)
|
|
TASK_PLAY_ANIM(null,"missbigscore1guard_wait_rifle","wait_b",INSTANT_BLEND_in,INSTANT_BLEND_OUT)
|
|
TASK_PLAY_ANIM(null,"missbigscore1guard_wait_rifle","wait_c",INSTANT_BLEND_in,SLOW_BLEND_OUT)
|
|
|
|
SET_SEQUENCE_TO_REPEAT(peds[guard].seq,REPEAT_FOREVER)
|
|
CLOSE_SEQUENCE_TASK(peds[guard].seq)
|
|
TASK_PERFORM_SEQUENCE(peds[guard].id,peds[guard].seq)
|
|
|
|
SET_PED_RELATIONSHIP_GROUP_HASH(peds[guard].id,rel_guard)
|
|
if guard = mpf_guardF
|
|
peds[guard].scenario_index = ADD_SCENARIO_BLOCKING_AREA(<<-3.84928, -728.36700, 44.09243>>,<<5.56493, -705.19385, 47.59827>>)
|
|
else
|
|
peds[guard].scenario_index = ADD_SCENARIO_BLOCKING_AREA(<<-93.01785, -670.31049, 34.46116>>,<<-65.72590, -686.62421, 31.73092>>)
|
|
endif
|
|
CLEAR_AREA_OF_PEDS(pos,100)
|
|
endproc
|
|
Proc give_all_peds_earpiece(bool bremove = false)
|
|
if DOES_ENTITY_EXIST(mike())
|
|
and not IS_PED_INJURED(mike())
|
|
if not bremove
|
|
SET_PED_COMP_ITEM_CURRENT_SP(mike(), COMP_TYPE_PROPS, PROPS_P0_HEADSET)
|
|
else
|
|
REMOVE_PED_COMP_ITEM_SP(mike(), COMP_TYPE_PROPS, PROPS_P0_HEADSET)
|
|
endif
|
|
endif
|
|
if DOES_ENTITY_EXIST(frank())
|
|
and not IS_PED_INJURED(frank())
|
|
if not bremove
|
|
SET_PED_COMP_ITEM_CURRENT_SP(frank(), COMP_TYPE_PROPS, PROPS_P1_HEADSET)
|
|
else
|
|
REMOVE_PED_COMP_ITEM_SP(frank(), COMP_TYPE_PROPS, PROPS_P1_HEADSET)
|
|
endif
|
|
endif
|
|
if does_entity_exist(trev())
|
|
and not IS_PED_INJURED(trev())
|
|
if not bremove
|
|
SET_PED_COMP_ITEM_CURRENT_SP(trev(), COMP_TYPE_PROPS, PROPS_P2_HEADSET)
|
|
else
|
|
REMOVE_PED_COMP_ITEM_SP(trev(), COMP_TYPE_PROPS, PROPS_P2_HEADSET)
|
|
endif
|
|
endif
|
|
|
|
endproc
|
|
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
// HOT SWAP
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
Proc Hotswap_Menu(BOOL bBlockMike = FALSE, BOOL bBlockFrank = FALSE, BOOL bBlockTrev = FALSE,
|
|
BOOL bHintMike = FALSE, BOOL bHintFrank = FALSE, BOOL bHintTrev = FALSE)
|
|
//Enable or disable selecabilty in the hot swap
|
|
|
|
if DOES_ENTITY_EXIST(mike())
|
|
sSelectorPeds.pedID[SELECTOR_PED_MICHAEL] = peds[mpf_michael].id
|
|
SET_SELECTOR_PED_BLOCKED(sSelectorPeds,SELECTOR_PED_MICHAEL,bBlockMike)
|
|
SET_SELECTOR_PED_HINT(sSelectorPeds,SELECTOR_PED_MICHAEL,bHintMike)
|
|
ELSE
|
|
SET_SELECTOR_PED_BLOCKED(sSelectorPeds,SELECTOR_PED_MICHAEL,true)
|
|
ENDIF
|
|
|
|
if DOES_ENTITY_EXIST(frank())
|
|
sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN] = peds[mpf_franklin].id
|
|
SET_SELECTOR_PED_BLOCKED(sSelectorPeds,SELECTOR_PED_FRANKLIN,bBlockFrank)
|
|
SET_SELECTOR_PED_HINT(sSelectorPeds,SELECTOR_PED_FRANKLIN,bHintFrank)
|
|
ELSE
|
|
SET_SELECTOR_PED_BLOCKED(sSelectorPeds,SELECTOR_PED_FRANKLIN,true)
|
|
ENDIF
|
|
|
|
if DOES_ENTITY_EXIST(trev())
|
|
sSelectorPeds.pedID[SELECTOR_PED_TREVOR] = peds[mpf_trevor].id
|
|
SET_SELECTOR_PED_BLOCKED(sSelectorPeds,SELECTOR_PED_TREVOR,bBlockTrev)
|
|
SET_SELECTOR_PED_HINT(sSelectorPeds,SELECTOR_PED_TREVOR,bHintTrev)
|
|
ELSE
|
|
SET_SELECTOR_PED_BLOCKED(sSelectorPeds,SELECTOR_PED_TREVOR,true)
|
|
ENDIF
|
|
|
|
|
|
endproc
|
|
|
|
FUNC BOOL Display_Selector_HUD()
|
|
IF bIgnoreNoPlayerControl
|
|
IF UPDATE_SELECTOR_HUD(sSelectorPeds,FALSE) // Returns TRUE when the player has made a selection
|
|
IF NOT HAS_SELECTOR_PED_BEEN_SELECTED(sSelectorPeds, SELECTOR_PED_MULTIPLAYER)
|
|
sCamDetails.pedTo = sSelectorPeds.pedID[sSelectorPeds.eNewSelectorPed]
|
|
return TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF UPDATE_SELECTOR_HUD(sSelectorPeds) // Returns TRUE when the player has made a selection
|
|
IF NOT HAS_SELECTOR_PED_BEEN_SELECTED(sSelectorPeds, SELECTOR_PED_MULTIPLAYER)
|
|
sCamDetails.pedTo = sSelectorPeds.pedID[sSelectorPeds.eNewSelectorPed]
|
|
return TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
//PURPOSE: Carries out a swap using the sCamDetail struct for cam interpolation
|
|
FUNC SWITCHSTATE Do_Hotswap()
|
|
|
|
IF NOT sCamDetails.bRun
|
|
return SWITCH_NOSTATE
|
|
elif sCamDetails.bRun
|
|
|
|
if bcustomswitch_trev_to_mike
|
|
CPRINTLN(DEBUG_MISSION,"bcustomswitch_trev_to_mike")
|
|
if HANDLE_SWITCH_CAM_TREVOR_IN_HELI_TO_MICHAEL(scsSwitchCamTrevorInHeliToMichael)
|
|
sCamDetails.bRun = FALSE
|
|
return SWITCH_COMPLETE
|
|
else
|
|
return SWITCH_IN_PROGRESS
|
|
endif
|
|
elif bcustomswitch_mike_to_trev_inHeli
|
|
CPRINTLN(DEBUG_MISSION,"bcustomswitch_mike_to_trev_inHeli")
|
|
if HANDLE_SWITCH_CAM_MICHAEL_TO_TREVOR_IN_HELI(scsSwitchCamMichaelToTrevorInHeli)
|
|
sCamDetails.bRun = FALSE
|
|
return SWITCH_COMPLETE
|
|
else
|
|
return SWITCH_IN_PROGRESS
|
|
endif
|
|
elif bcustomswitch_mike_to_trev_inCar
|
|
CPRINTLN(DEBUG_MISSION,"bcustomswitch_mike_to_trev_inCar")
|
|
if HANDLE_SWITCH_CAM_MICHAEL_TO_TREVOR_IN_TRUCK(scsSwitchCamMichaelToTrevorInTruck)
|
|
sCamDetails.bRun = FALSE
|
|
return SWITCH_COMPLETE
|
|
else
|
|
return SWITCH_IN_PROGRESS
|
|
endif
|
|
else
|
|
int iswitchflag = 0
|
|
|
|
if bLongSpline
|
|
and DOES_CAM_EXIST(sCamDetails.camTo)
|
|
IF RUN_SWITCH_CAM_FROM_PLAYER_TO_CAM(sCamDetails,sCamDetails.camTo,SWITCH_TYPE_AUTO,iswitchflag)
|
|
return SWITCH_IN_PROGRESS
|
|
ELSE
|
|
sCamDetails.bRun = FALSE
|
|
return SWITCH_COMPLETE
|
|
ENDIF
|
|
else
|
|
switch eSwitchTypeStage
|
|
CASE S_TYPE_INIT
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(TREV(),MIKE()) < 100
|
|
eSwitchTypeStage = S_TYPE_SHORT
|
|
else
|
|
eSwitchTypeStage = S_TYPE_AUTO
|
|
endif
|
|
BREAK
|
|
CASE S_TYPE_SHORT
|
|
IF RUN_SWITCH_CAM_FROM_PLAYER_TO_PED(sCamDetails,SWITCH_TYPE_SHORT,iswitchflag)
|
|
return SWITCH_IN_PROGRESS
|
|
ELSE
|
|
sCamDetails.bRun = FALSE
|
|
eSwitchTypeStage = S_TYPE_INIT
|
|
return SWITCH_COMPLETE
|
|
ENDIF
|
|
BREAK
|
|
CASE S_TYPE_AUTO
|
|
IF RUN_SWITCH_CAM_FROM_PLAYER_TO_PED(sCamDetails,SWITCH_TYPE_AUTO,iswitchflag)
|
|
return SWITCH_IN_PROGRESS
|
|
ELSE
|
|
sCamDetails.bRun = FALSE
|
|
eSwitchTypeStage = S_TYPE_INIT
|
|
return SWITCH_COMPLETE
|
|
ENDIF
|
|
BREAK
|
|
endswitch
|
|
endif
|
|
endif
|
|
|
|
endif
|
|
return SWITCH_NOSTATE
|
|
ENDFUNC
|
|
FUNC BOOL Set_Current_Player_Ped(SELECTOR_SLOTS_ENUM pedChar, BOOL bWait = FALSE, BOOL bCleanUpModel = TRUE)
|
|
|
|
IF bWait
|
|
WHILE NOT SET_CURRENT_SELECTOR_PED(pedChar, bCleanUpModel)
|
|
WAIT(0)
|
|
ENDWHILE
|
|
ELSE
|
|
IF NOT SET_CURRENT_SELECTOR_PED(pedChar, bCleanUpModel)
|
|
RETURN FALSE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// Additional stuff to set up ped for use in mission
|
|
SWITCH pedChar
|
|
CASE SELECTOR_PED_MICHAEL
|
|
peds[mpf_michael].id = PLAYER_PED_ID()
|
|
ADD_PED_FOR_DIALOGUE(convo_struct, 1, mike() , "MICHAEL")
|
|
BREAK
|
|
CASE SELECTOR_PED_FRANKLIN
|
|
peds[mpf_franklin].id = PLAYER_PED_ID()
|
|
ADD_PED_FOR_DIALOGUE(convo_struct, 2, frank(), "FRANKLIN")
|
|
BREAK
|
|
CASE SELECTOR_PED_TREVOR
|
|
peds[mpf_trevor].id = PLAYER_PED_ID()
|
|
ADD_PED_FOR_DIALOGUE(convo_struct, 0,trev(), "TREVOR")
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN TRUE
|
|
ENDFUNC
|
|
Proc Manage_hotswap()
|
|
vector pos
|
|
//hot swap checks-------------------------------------------------
|
|
SWITCHSTATE hsStatus
|
|
if bHotSwap
|
|
if player_ped_id() = MIKE()
|
|
SET_SELECTOR_PED_HINT(sSelectorPeds,SELECTOR_PED_TREVOR,false)
|
|
SET_SELECTOR_PED_PRIORITY(sSelectorPeds,SELECTOR_PED_TREVOR,SELECTOR_PED_MICHAEL,SELECTOR_PED_FRANKLIN)
|
|
elif player_ped_id() = TREV()
|
|
SET_SELECTOR_PED_HINT(sSelectorPeds,SELECTOR_PED_MICHAEL,false)
|
|
SET_SELECTOR_PED_PRIORITY(sSelectorPeds,SELECTOR_PED_MICHAEL,SELECTOR_PED_TREVOR,SELECTOR_PED_FRANKLIN)
|
|
elif player_ped_id() = frank()
|
|
SET_SELECTOR_PED_HINT(sSelectorPeds,SELECTOR_PED_MICHAEL,false)
|
|
SET_SELECTOR_PED_PRIORITY(sSelectorPeds,SELECTOR_PED_MICHAEL,SELECTOR_PED_TREVOR,SELECTOR_PED_FRANKLIN)
|
|
endif
|
|
if not sCamDetails.brun
|
|
and not bCustomSwitchCamRendering_HeliToCar
|
|
IF GET_PLAYER_WANTED_LEVEL(player_id()) = 0
|
|
if Display_Selector_HUD()
|
|
|
|
INFORM_MISSION_STATS_OF_INCREMENT(FH1_SWITCHES)
|
|
//====================================================== UI NEW PED CHOSEN ============================================================
|
|
if IS_MESSAGE_BEING_DISPLAYED()
|
|
CLEAR_PRINTS()
|
|
endif
|
|
if IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
CLEAR_HELP()
|
|
endif
|
|
|
|
CLEAR_MISSION_LOCATE_STUFF(sLocatesData)
|
|
CLEAR_MISSION_LOCATION_TEXT_AND_BLIPS(sLocatesData)
|
|
PAUSE_CLOCK(true)
|
|
if GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(mike()),GET_ENTITY_COORDS(trev())) > 70
|
|
and not IS_ENTITY_ON_SCREEN(sCamDetails.pedTo)
|
|
bLongSpline = true
|
|
else
|
|
bLongSpline = false
|
|
endif
|
|
eSwitchTypeStage = S_TYPE_INIT
|
|
//======================================= Safety =============================================
|
|
if IsEntityAlive(mike())
|
|
SET_ENTITY_INVINCIBLE(MIKE(),true)
|
|
endif
|
|
if IsEntityAlive(lester())
|
|
SET_ENTITY_INVINCIBLE(LESTER(),true)
|
|
endif
|
|
if IsEntityAlive(trev())
|
|
SET_ENTITY_INVINCIBLE(TREV(),true)
|
|
endif
|
|
if IsEntityAlive(frank())
|
|
SET_ENTITY_INVINCIBLE(FRANK(),true)
|
|
endif
|
|
if IsEntityAlive(vehs[mvf_helicopter].id)
|
|
SET_ENTITY_INVINCIBLE(vehs[mvf_helicopter].id,true)
|
|
endif
|
|
if IsEntityAlive(vehs[mvf_trevor_veh].id)
|
|
SET_ENTITY_INVINCIBLE(vehs[mvf_trevor_veh].id,true)
|
|
endif
|
|
if IsEntityAlive(vehs[mvf_Michael_veh].id)
|
|
SET_ENTITY_INVINCIBLE(vehs[mvf_Michael_veh].id,true)
|
|
endif
|
|
//========================================= MICHAEL PICKED ===============================================
|
|
if sSelectorPeds.eNewSelectorPed = SELECTOR_PED_MICHAEL
|
|
pos = GET_ENTITY_COORDS(mike())
|
|
//SWITCH INTERRUPT From Trev
|
|
if eDialogue_stateT = DI_RUNNING_DIALOGUE_TREVOR
|
|
and eInterruptstage = INTERRUPT_NONE
|
|
and IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
if eTREV_Dialogue = T_di_FILL1
|
|
or eTREV_Dialogue = T_di_FILL2
|
|
or eTREV_Dialogue = T_di_END
|
|
//store line too allow the convo to continue on re-switch
|
|
lbl_TREVSwitchInterrupt = GET_STANDARD_CONVERSATION_LABEL_FOR_FUTURE_RESUMPTION()
|
|
lbl_TREVSwitchroot = GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_ROOT()
|
|
b_TREVSpeechSwitchStopped = true
|
|
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
|
|
PRINTLN("@@@@@@@@@@@@@ KILL TREVOR CONVO NOW AND SAVE ROOT: ", lbl_TREVSwitchroot, " AND LABEL: ", lbl_TREVSwitchInterrupt, " @@@@@@@@@@@@@@@@@@")
|
|
endif
|
|
endif
|
|
//=============================== STAGE 0 ====================================
|
|
if mission_stage = enum_to_int(msf_0_strip_club)
|
|
if bLongSpline
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_Michael_veh].id)
|
|
STOP_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_Michael_veh].id)
|
|
endif
|
|
START_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_Michael_veh].id,1,"FH1RECMIKE")
|
|
fSwitchTimeRec = GET_CLOSEST_TIME_POSITION_IN_RECORDING_TO_POINT(pos,1,"FH1RECMIKE",20)
|
|
SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_Michael_veh].id,fSwitchTimeRec)
|
|
SET_PLAYBACK_SPEED(vehs[mvf_Michael_veh].id,0)
|
|
FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehs[mvf_Michael_veh].id)
|
|
SET_ENTITY_COORDS(MIKE(),GET_POSITION_OF_VEHICLE_RECORDING_ID_AT_TIME(GET_VEHICLE_RECORDING_ID(1,"FH1RECMIKE"),fSwitchTimeRec))
|
|
|
|
if not IS_PED_IN_VEHICLE(MIKE(),vehs[mvf_Michael_veh].id)
|
|
SET_PED_INTO_VEHICLE(MIKE(),vehs[mvf_Michael_veh].id)
|
|
FORCE_PED_AI_AND_ANIMATION_UPDATE(MIKE())
|
|
endif
|
|
if not IS_PED_IN_VEHICLE(FRANK(),vehs[mvf_Michael_veh].id)
|
|
SET_PED_INTO_VEHICLE(FRANK(),vehs[mvf_Michael_veh].id,VS_FRONT_RIGHT)
|
|
FORCE_PED_AI_AND_ANIMATION_UPDATE(FRANK())
|
|
endif
|
|
sCamDetails.camTo = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED,
|
|
(GET_POSITION_OF_VEHICLE_RECORDING_ID_AT_TIME(GET_VEHICLE_RECORDING_ID(1,"FH1RECMIKE"),fSwitchTimeRec)+ <<0,0,30>>),
|
|
GET_ENTITY_ROTATION(sCamDetails.pedTo))
|
|
endif
|
|
endif
|
|
//=============================== STAGE 1 ====================================
|
|
if mission_stage = enum_to_int(msf_1_font_of_bank)
|
|
if mission_substage = STAGE_ENTRY
|
|
if bLongSpline
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_Michael_veh].id)
|
|
STOP_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_Michael_veh].id)
|
|
endif
|
|
START_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_Michael_veh].id,1,"FH1RECMIKE")
|
|
fSwitchTimeRec = GET_CLOSEST_TIME_POSITION_IN_RECORDING_TO_POINT(vFRONT_BANK,1,"FH1RECMIKE",20) - 10000
|
|
SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_Michael_veh].id,fSwitchTimeRec)
|
|
SET_PLAYBACK_SPEED(vehs[mvf_Michael_veh].id,0)
|
|
FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehs[mvf_Michael_veh].id)
|
|
SET_ENTITY_COORDS(MIKE(),GET_POSITION_OF_VEHICLE_RECORDING_ID_AT_TIME(GET_VEHICLE_RECORDING_ID(1,"FH1RECMIKE"),fSwitchTimeRec))
|
|
|
|
if not IS_PED_IN_VEHICLE(MIKE(),vehs[mvf_Michael_veh].id)
|
|
SET_PED_INTO_VEHICLE(MIKE(),vehs[mvf_Michael_veh].id)
|
|
FORCE_PED_AI_AND_ANIMATION_UPDATE(MIKE())
|
|
endif
|
|
if not IS_PED_IN_VEHICLE(FRANK(),vehs[mvf_Michael_veh].id)
|
|
SET_PED_INTO_VEHICLE(FRANK(),vehs[mvf_Michael_veh].id,VS_FRONT_RIGHT)
|
|
FORCE_PED_AI_AND_ANIMATION_UPDATE(FRANK())
|
|
endif
|
|
sCamDetails.camTo = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED,
|
|
(GET_POSITION_OF_VEHICLE_RECORDING_ID_AT_TIME(GET_VEHICLE_RECORDING_ID(1,"FH1RECMIKE"),fSwitchTimeRec)+ <<0,0,30>>),
|
|
GET_ENTITY_ROTATION(sCamDetails.pedTo))
|
|
endif
|
|
else
|
|
if bLongSpline
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_Michael_veh].id)
|
|
STOP_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_Michael_veh].id)
|
|
endif
|
|
START_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_Michael_veh].id,2,"FH1RECMIKE")
|
|
fSwitchTimeRec = GET_CLOSEST_TIME_POSITION_IN_RECORDING_TO_POINT(pos,2,"FH1RECMIKE")
|
|
SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_Michael_veh].id,fSwitchTimeRec)
|
|
SET_PLAYBACK_SPEED(vehs[mvf_Michael_veh].id,0)
|
|
FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehs[mvf_Michael_veh].id)
|
|
SET_ENTITY_COORDS(MIKE(),GET_POSITION_OF_VEHICLE_RECORDING_ID_AT_TIME(GET_VEHICLE_RECORDING_ID(2,"FH1RECMIKE"),fSwitchTimeRec))
|
|
|
|
if not IS_PED_IN_VEHICLE(MIKE(),vehs[mvf_Michael_veh].id)
|
|
SET_PED_INTO_VEHICLE(MIKE(),vehs[mvf_Michael_veh].id)
|
|
FORCE_PED_AI_AND_ANIMATION_UPDATE(MIKE())
|
|
endif
|
|
if not IS_PED_IN_VEHICLE(FRANK(),vehs[mvf_Michael_veh].id)
|
|
SET_PED_INTO_VEHICLE(FRANK(),vehs[mvf_Michael_veh].id,VS_FRONT_RIGHT)
|
|
FORCE_PED_AI_AND_ANIMATION_UPDATE(FRANK())
|
|
endif
|
|
sCamDetails.camTo = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED,
|
|
(GET_POSITION_OF_VEHICLE_RECORDING_ID_AT_TIME(GET_VEHICLE_RECORDING_ID(2,"FH1RECMIKE"),fSwitchTimeRec)+ <<0,0,30>>),
|
|
GET_ENTITY_ROTATION(sCamDetails.pedTo))
|
|
endif
|
|
endif
|
|
//=============================== STAGE 2 ====================================
|
|
elif mission_stage = enum_to_int(msf_2_back_of_bank)
|
|
or mission_stage = enum_to_int(msf_3_get_in_position)
|
|
if mission_substage = STAGE_ENTRY
|
|
REQUEST_CUTSCENE("BSS_1_MCS_2")
|
|
SET_SRL_FORCE_PRESTREAM(SRL_PRESTREAM_FORCE_OFF) //#BUG:1542524
|
|
lbl_MIKESwitchInterrupt = ""
|
|
lbl_MIKESwitchroot = ""
|
|
b_MIKESpeechSwitchStopped = false
|
|
eMike_dialogue = M_di_NONE
|
|
if bLongSpline
|
|
if DOES_ENTITY_EXIST(vehs[mvf_Michael_veh].id)
|
|
SET_ENTITY_COORDS(vehs[mvf_Michael_veh].id,vBACK_BANK)
|
|
SET_ENTITY_HEADING(vehs[mvf_Michael_veh].id,fHEADING_BACK)
|
|
SET_VEHICLE_ON_GROUND_PROPERLY(vehs[mvf_Michael_veh].id)
|
|
clear_area(<< -114.0502, -652.3067, 34.9012 >>,40,true)
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
if DOES_ENTITY_EXIST(vehs[mvf_helicopter].id)
|
|
IF IS_PED_IN_VEHICLE(peds[mpf_trevor].id, vehs[mvf_helicopter].id)
|
|
eSwitchCamState = SWITCH_CAM_REQUEST_ASSETS
|
|
HANDLE_SWITCH_CAM_TREVOR_IN_HELI_TO_MICHAEL(scsSwitchCamTrevorInHeliToMichael)
|
|
|
|
bcustomswitch_trev_to_mike = true
|
|
eSwitchCamState = SWITCH_CAM_SETUP_SPLINE_1
|
|
ENDIF
|
|
ENDIF
|
|
|
|
elif mission_Stage = enum_to_int(msf_6_drop_off_point)
|
|
if bLongSpline
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_Michael_veh].id)
|
|
STOP_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_Michael_veh].id)
|
|
endif
|
|
START_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_Michael_veh].id,3,"FH1RECMIKE")
|
|
fSwitchTimeRec = GET_CLOSEST_TIME_POSITION_IN_RECORDING_TO_POINT(pos,3,"FH1RECMIKE")
|
|
SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_Michael_veh].id,fSwitchTimeRec)
|
|
SET_PLAYBACK_SPEED(vehs[mvf_Michael_veh].id,0)
|
|
FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehs[mvf_Michael_veh].id)
|
|
SET_ENTITY_COORDS(MIKE(),GET_POSITION_OF_VEHICLE_RECORDING_ID_AT_TIME(GET_VEHICLE_RECORDING_ID(3,"FH1RECMIKE"),fSwitchTimeRec))
|
|
if not IS_PED_IN_VEHICLE(MIKE(),vehs[mvf_Michael_veh].id)
|
|
SET_PED_INTO_VEHICLE(MIKE(),vehs[mvf_Michael_veh].id)
|
|
FORCE_PED_AI_AND_ANIMATION_UPDATE(MIKE())
|
|
endif
|
|
if not IS_PED_IN_VEHICLE(FRANK(),vehs[mvf_Michael_veh].id)
|
|
SET_PED_INTO_VEHICLE(FRANK(),vehs[mvf_Michael_veh].id,VS_FRONT_RIGHT)
|
|
FORCE_PED_AI_AND_ANIMATION_UPDATE(FRANK())
|
|
endif
|
|
sCamDetails.camTo = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED,
|
|
(GET_POSITION_OF_VEHICLE_RECORDING_ID_AT_TIME(GET_VEHICLE_RECORDING_ID(3,"FH1RECMIKE"),fSwitchTimeRec)+ <<0,0,30>>),
|
|
GET_ENTITY_ROTATION(sCamDetails.pedTo))
|
|
|
|
endif
|
|
|
|
endif
|
|
//=============================== ALWAYS ====================================
|
|
if IsEntityAlive(vehs[mvf_Michael_veh].id)
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(vehs[mvf_Michael_veh].id,TRUE)
|
|
endif
|
|
//set_other party invincible
|
|
//on
|
|
if IsEntityAlive(TREV())
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(TREV(),true)
|
|
ENDIF
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(lester(),true)
|
|
if IsEntityAlive(vehs[mvf_helicopter].id)
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(vehs[mvf_helicopter].id,true)
|
|
endif
|
|
if IsEntityAlive(vehs[mvf_trevor_veh].id)
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(vehs[mvf_trevor_veh].id,true)
|
|
endif
|
|
//off
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(MIKE(),false)
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(frank(),false)
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(vehs[mvf_Michael_veh].id,false)
|
|
|
|
|
|
//========================================= TREVOR PICKED ===============================================
|
|
elif sSelectorPeds.eNewSelectorPed = SELECTOR_PED_TREVOR
|
|
//Switch interrupt from mike
|
|
if eDialogue_stateM = DI_RUNNING_DIALOGUE_MIKE
|
|
and eInterruptstage = INTERRUPT_NONE
|
|
and IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
if eMike_dialogue = M_di_TO_FRONT
|
|
or eMike_dialogue = M_di_TO_BACK
|
|
or eMike_dialogue = M_di_END
|
|
//store line too allow the convo to continue on re-switch
|
|
lbl_MIKESwitchInterrupt = GET_STANDARD_CONVERSATION_LABEL_FOR_FUTURE_RESUMPTION()
|
|
lbl_MIKESwitchroot = GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_ROOT()
|
|
b_MIKESpeechSwitchStopped = true
|
|
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
|
|
PRINTLN("@@@@@@@@@@@@@ KILL MIKE CONVO NOW AND SAVE ROOT: ", lbl_MIKESwitchroot, " AND LABEL: ", lbl_MIKESwitchInterrupt, " @@@@@@@@@@@@@@@@@@")
|
|
endif
|
|
endif
|
|
//=============================== TREVOR POSITION ====================================
|
|
if bLongSpline
|
|
|
|
//if been 4 second put trev on recording of cloest point
|
|
pos = GET_ENTITY_COORDS(trev())
|
|
if mission_stage < ENUM_TO_INT(msf_4_heli_follow_truck)
|
|
if heli_switch = TO_HELI
|
|
if IsEntityAlive(vehs[mvf_trevor_veh].id)
|
|
|
|
if Is_clock_time_less_than_or_equal(14,45)
|
|
and bcustomswitch_mike_to_trev_inCar
|
|
eSwitchCamState = SWITCH_CAM_SETUP_SPLINE_1
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_trevor_veh].id)
|
|
STOP_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_trevor_veh].id)
|
|
endif
|
|
|
|
ELSE
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_trevor_veh].id)
|
|
STOP_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_trevor_veh].id)
|
|
endif
|
|
START_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_trevor_veh].id,3,"FH1REC")
|
|
fSwitchTimeRec = GET_CLOSEST_TIME_POSITION_IN_RECORDING_TO_POINT(pos,3,"FH1REC")
|
|
if fSwitchTimeRec <= 10000
|
|
fSwitchTimeRec = 10000
|
|
endif
|
|
SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_trevor_veh].id,fSwitchTimeRec)
|
|
SET_PLAYBACK_SPEED(vehs[mvf_trevor_veh].id,0)
|
|
FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehs[mvf_trevor_veh].id)
|
|
SET_ENTITY_COORDS(TREV(),GET_POSITION_OF_VEHICLE_RECORDING_ID_AT_TIME(GET_VEHICLE_RECORDING_ID(3,"FH1REC"),fSwitchTimeRec))
|
|
if not IS_PED_IN_VEHICLE(TREV(),vehs[mvf_trevor_veh].id)
|
|
SET_PED_INTO_VEHICLE(TREV(),vehs[mvf_trevor_veh].id)
|
|
FORCE_PED_AI_AND_ANIMATION_UPDATE(TREV())
|
|
endif
|
|
if not IS_PED_IN_VEHICLE(lester(),vehs[mvf_trevor_veh].id)
|
|
SET_PED_INTO_VEHICLE(lester(),vehs[mvf_trevor_veh].id,VS_FRONT_RIGHT)
|
|
FORCE_PED_AI_AND_ANIMATION_UPDATE(lester())
|
|
endif
|
|
|
|
endif
|
|
sCamDetails.camTo = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED,
|
|
(GET_POSITION_OF_VEHICLE_RECORDING_ID_AT_TIME(GET_VEHICLE_RECORDING_ID(3,"FH1REC"),fSwitchTimeRec)+ <<0,0,30>>),
|
|
GET_ENTITY_ROTATION(sCamDetails.pedTo))
|
|
endif
|
|
elif heli_switch = TO_TRUCKS
|
|
AND IS_PED_IN_VEHICLE( peds[mpf_trevor].id, Vehs[mvf_helicopter].id)
|
|
if IsEntityAlive(vehs[mvf_helicopter].id)
|
|
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_helicopter].id)
|
|
STOP_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_helicopter].id)
|
|
endif
|
|
START_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_helicopter].id,4,"FH1REC")
|
|
fSwitchTimeRec = GET_CLOSEST_TIME_POSITION_IN_RECORDING_TO_POINT(pos,4,"FH1REC")
|
|
SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_helicopter].id,fSwitchTimeRec)
|
|
SET_PLAYBACK_SPEED(vehs[mvf_helicopter].id,0)
|
|
FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehs[mvf_helicopter].id)
|
|
SET_ENTITY_COORDS(TREV(),GET_POSITION_OF_VEHICLE_RECORDING_ID_AT_TIME(GET_VEHICLE_RECORDING_ID(4,"FH1REC"),fSwitchTimeRec))
|
|
if not IS_PED_IN_VEHICLE(TREV(),vehs[mvf_helicopter].id)
|
|
SET_PED_INTO_VEHICLE(TREV(),vehs[mvf_helicopter].id)
|
|
FORCE_PED_AI_AND_ANIMATION_UPDATE(TREV())
|
|
endif
|
|
if not IS_PED_IN_VEHICLE(lester(),vehs[mvf_helicopter].id)
|
|
SET_PED_INTO_VEHICLE(lester(),vehs[mvf_helicopter].id,VS_BACK_LEFT)
|
|
FORCE_PED_AI_AND_ANIMATION_UPDATE(lester())
|
|
endif
|
|
|
|
bcustomswitch_mike_to_trev_inHeli = true
|
|
eSwitchCamState = SWITCH_CAM_SETUP_SPLINE_1
|
|
endif
|
|
endif
|
|
endif
|
|
if mission_stage = ENUM_TO_INT(msf_6_drop_off_point)
|
|
if IsEntityAlive(vehs[mvf_helicopter].id)
|
|
|
|
START_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_helicopter].id,5,"FH1REC")
|
|
fSwitchTimeRec = GET_CLOSEST_TIME_POSITION_IN_RECORDING_TO_POINT(pos,5,"FH1REC")
|
|
SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_helicopter].id,fSwitchTimeRec)
|
|
SET_PLAYBACK_SPEED(vehs[mvf_helicopter].id,0)
|
|
FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehs[mvf_helicopter].id)
|
|
SET_ENTITY_COORDS(TREV(),GET_POSITION_OF_VEHICLE_RECORDING_ID_AT_TIME(GET_VEHICLE_RECORDING_ID(5,"FH1REC"),fSwitchTimeRec))
|
|
if not IS_PED_IN_VEHICLE(TREV(),vehs[mvf_helicopter].id)
|
|
SET_PED_INTO_VEHICLE(TREV(),vehs[mvf_helicopter].id)
|
|
FORCE_PED_AI_AND_ANIMATION_UPDATE(TREV())
|
|
endif
|
|
if not IS_PED_IN_VEHICLE(lester(),vehs[mvf_helicopter].id)
|
|
SET_PED_INTO_VEHICLE(lester(),vehs[mvf_helicopter].id,VS_BACK_LEFT)
|
|
FORCE_PED_AI_AND_ANIMATION_UPDATE(lester())
|
|
endif
|
|
|
|
sCamDetails.camTo = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED,
|
|
(GET_POSITION_OF_VEHICLE_RECORDING_ID_AT_TIME(GET_VEHICLE_RECORDING_ID(5,"FH1REC"),fSwitchTimeRec)+ <<0,0,30>>),
|
|
GET_ENTITY_ROTATION(sCamDetails.pedTo))
|
|
endif
|
|
endif
|
|
|
|
|
|
endif
|
|
|
|
//=============================== ALWAYS ====================================
|
|
if IS_PED_IN_ANY_VEHICLE(TREV())
|
|
IF IS_VEHICLE_DRIVEABLE(GET_VEHICLE_PED_IS_IN(TREV()))
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(GET_VEHICLE_PED_IS_IN(TREV()),TRUE)
|
|
ENDIF
|
|
endif
|
|
//set_other party invincible
|
|
//on
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(TREV(),false)
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(lester(),false)
|
|
if IsEntityAlive(vehs[mvf_helicopter].id)
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(vehs[mvf_helicopter].id,false)
|
|
endif
|
|
if IsEntityAlive(vehs[mvf_trevor_veh].id)
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(vehs[mvf_trevor_veh].id,false)
|
|
endif
|
|
//off
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(MIKE(),true)
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(frank(),true)
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(vehs[mvf_Michael_veh].id,true)
|
|
endif
|
|
//anything that was waiting to resume leave to the switch system to pick up.
|
|
// lbl_Interrupt = ""
|
|
// lbl_root = ""
|
|
// eInterruptstage = INTERRUPT_NONE
|
|
|
|
idescentstage = 0
|
|
sCamDetails.bRun = TRUE
|
|
sCamDetails.bPedSwitched = false
|
|
endif
|
|
ENDIF
|
|
endif
|
|
//====================================================== Start SWITCH ============================================================
|
|
hsStatus = Do_Hotswap()
|
|
//====================================================== RUNNING ============================================================
|
|
if hsStatus = SWITCH_IN_PROGRESS
|
|
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_Michael_veh].id)
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(vehs[mvf_Michael_veh].id,TRUE)
|
|
ENDIF
|
|
|
|
IF sCamDetails.bOKToSwitchPed
|
|
IF NOT sCamDetails.bPedSwitched
|
|
IF TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds, TRUE, TRUE, PlayerSwitchTakeControlFlag)
|
|
clear_area(GET_ENTITY_COORDS(sCamDetails.pedTo),10,true)
|
|
sCamDetails.bPedSwitched = TRUE
|
|
//======================================= SWITCHED =============================================
|
|
//=========================== Trev ===========================
|
|
if DOES_ENTITY_EXIST(trev())
|
|
if sSelectorPeds.pedID[SELECTOR_PED_TREVOR] = NULL
|
|
peds[mpf_trevor].id = PLAYER_PED_ID()
|
|
iUnfreezeDelay = get_game_timer()
|
|
if IS_PED_IN_ANY_VEHICLE(trev())
|
|
FREEZE_ENTITY_POSITION(GET_VEHICLE_PED_IS_IN(trev()),false)
|
|
endif
|
|
ELSE
|
|
peds[mpf_trevor].id = sSelectorPeds.pedID[SELECTOR_PED_TREVOR]
|
|
SET_PED_RELATIONSHIP_GROUP_HASH(trev(),rel_buddy)
|
|
ENDIF
|
|
IF NOT IS_PED_INJURED(trev())
|
|
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(trev(), TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
//=========================== Mike ===========================
|
|
if DOES_ENTITY_EXIST(mike())
|
|
if sSelectorPeds.pedID[SELECTOR_PED_MICHAEL] = NULL
|
|
peds[mpf_michael].id = PLAYER_PED_ID()
|
|
iUnfreezeDelay = get_game_timer()
|
|
FREEZE_ENTITY_POSITION(vehs[mvf_Michael_veh].id ,false)
|
|
ELSE
|
|
peds[mpf_michael].id = sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]
|
|
SET_PED_RELATIONSHIP_GROUP_HASH(mike(),rel_buddy)
|
|
ENDIF
|
|
IF NOT IS_PED_INJURED(mike())
|
|
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(mike(), TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
//=========================== FRANK ===========================
|
|
if DOES_ENTITY_EXIST(Frank())
|
|
if sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN] = NULL
|
|
peds[mpf_franklin].id = PLAYER_PED_ID()
|
|
iUnfreezeDelay = get_game_timer()
|
|
ELSE
|
|
peds[mpf_franklin].id = sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN]
|
|
SET_PED_RELATIONSHIP_GROUP_HASH(FRANK(),rel_buddy)
|
|
ENDIF
|
|
IF NOT IS_PED_INJURED(frank())
|
|
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(frank(), TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
endif
|
|
ENDIF
|
|
//=========================== Keep Tasks so they don't just stop =================================
|
|
|
|
if get_game_timer() - iUnfreezeDelay > 2000
|
|
and bLongSpline
|
|
if IS_PED_IN_ANY_VEHICLE(sCamDetails.pedTo)
|
|
FREEZE_ENTITY_POSITION(GET_VEHICLE_PED_IS_IN(sCamDetails.pedTo) ,false)
|
|
endif
|
|
endif
|
|
|
|
if mission_stage = enum_to_int(msf_0_strip_club)
|
|
|
|
//=========================== TREV TASKS ===========================
|
|
if not bcustomswitch_mike_to_trev_inCar
|
|
if heli_switch = TO_HELI
|
|
IF NOT IS_PED_INJURED(trev())
|
|
AND NOT IS_ENTITY_DEAD(vehs[mvf_trevor_veh].id)
|
|
if GET_SCRIPT_TASK_STATUS(trev(),SCRIPT_TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE) != PERFORMING_TASK
|
|
TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE(trev(),vehs[mvf_trevor_veh].id,vAIRFIELD,50,DRIVINGMODE_AVOIDCARS | DF_ForceJoinInRoadDirection ,5)
|
|
endif
|
|
ENDIF
|
|
elif heli_switch = TO_TRUCKS
|
|
IF NOT IS_PED_INJURED(trev())
|
|
AND NOT IS_ENTITY_DEAD(vehs[mvf_helicopter].id)
|
|
if GET_SCRIPT_TASK_STATUS(trev(),SCRIPT_TASK_VEHICLE_MISSION) != PERFORMING_TASK
|
|
TASK_VEHICLE_MISSION_COORS_TARGET(trev(),vehs[mvf_helicopter].id,<< 1527.6018, -591.3962, 336.5655 >>,MISSION_CIRCLE,10,DRIVINGMODE_AVOIDCARS,4,-1)
|
|
endif
|
|
ENDIF
|
|
endif
|
|
endif
|
|
//=========================== MIKE TASKS ===========================
|
|
IF NOT IS_PED_INJURED(mike())
|
|
AND NOT IS_ENTITY_DEAD(vehs[mvf_Michael_veh].id)
|
|
if GET_SCRIPT_TASK_STATUS(mike(),SCRIPT_TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE) != PERFORMING_TASK
|
|
TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE(mike(),vehs[mvf_Michael_veh].id,vFRONT_BANK,15,DRIVINGMODE_AVOIDCARS | DF_ForceJoinInRoadDirection ,5)
|
|
endif
|
|
ENDIF
|
|
elif mission_stage = enum_to_int(msf_1_font_of_bank)
|
|
//=========================== TREV TASKS ===========================
|
|
if not bcustomswitch_mike_to_trev_inCar
|
|
if heli_switch = TO_HELI
|
|
IF NOT IS_PED_INJURED(trev())
|
|
AND NOT IS_ENTITY_DEAD(vehs[mvf_trevor_veh].id)
|
|
if GET_SCRIPT_TASK_STATUS(trev(),SCRIPT_TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE) != PERFORMING_TASK
|
|
TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE(trev(),vehs[mvf_trevor_veh].id,vAIRFIELD,50,DRIVINGMODE_AVOIDCARS | DF_ForceJoinInRoadDirection ,5)
|
|
endif
|
|
ENDIF
|
|
elif heli_switch = TO_TRUCKS
|
|
IF NOT IS_PED_INJURED(trev())
|
|
AND NOT IS_ENTITY_DEAD(vehs[mvf_helicopter].id)
|
|
if GET_SCRIPT_TASK_STATUS(trev(),SCRIPT_TASK_VEHICLE_MISSION) != PERFORMING_TASK
|
|
TASK_VEHICLE_MISSION_COORS_TARGET(trev(),vehs[mvf_helicopter].id,<< 1527.6018, -591.3962, 336.5655 >>,MISSION_CIRCLE,10,DRIVINGMODE_AVOIDCARS,4,-1)
|
|
endif
|
|
ENDIF
|
|
endif
|
|
endif
|
|
//=========================== MIKE TASKS ===========================
|
|
if mission_substage = STAGE_ENTRY
|
|
if sCamDetails.pedTo = MIKE()
|
|
IF NOT IS_PED_INJURED(mike())
|
|
AND NOT IS_ENTITY_DEAD(vehs[mvf_Michael_veh].id)
|
|
if GET_SCRIPT_TASK_STATUS(mike(),SCRIPT_TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE) != PERFORMING_TASK
|
|
TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE(mike(),vehs[mvf_Michael_veh].id,vFRONT_BANK,10,DRIVINGMODE_AVOIDCARS,6)
|
|
endif
|
|
ENDIF
|
|
endif
|
|
elif mission_substage > STAGE_ENTRY
|
|
IF NOT IS_PED_INJURED(mike())
|
|
AND NOT IS_ENTITY_DEAD(vehs[mvf_Michael_veh].id)
|
|
if GET_SCRIPT_TASK_STATUS(MIKE(),SCRIPT_TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE) != PERFORMING_TASK
|
|
TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE(MIKE(),vehs[mvf_Michael_veh].id,vBACK_BANK,13,DRIVINGMODE_AVOIDCARS | DF_ForceJoinInRoadDirection ,3)
|
|
endif
|
|
ENDIF
|
|
endif
|
|
|
|
elif mission_stage = enum_to_int(msf_2_back_of_bank)
|
|
//=========================== TREV TASKS ===========================
|
|
if not bcustomswitch_mike_to_trev_inCar
|
|
if heli_switch = TO_HELI
|
|
IF NOT IS_PED_INJURED(trev())
|
|
AND NOT IS_ENTITY_DEAD(vehs[mvf_trevor_veh].id)
|
|
if GET_SCRIPT_TASK_STATUS(trev(),SCRIPT_TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE) != PERFORMING_TASK
|
|
TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE(trev(),vehs[mvf_trevor_veh].id,<< 1799.9630, 3321.9102, 40.8868 >>,50,DRIVINGMODE_AVOIDCARS | DF_ForceJoinInRoadDirection ,5)
|
|
endif
|
|
ENDIF
|
|
elif heli_switch = TO_TRUCKS
|
|
IF NOT IS_PED_INJURED(trev())
|
|
AND NOT IS_ENTITY_DEAD(vehs[mvf_helicopter].id)
|
|
if GET_SCRIPT_TASK_STATUS(trev(),SCRIPT_TASK_VEHICLE_MISSION) != PERFORMING_TASK
|
|
TASK_VEHICLE_MISSION_COORS_TARGET(trev(),vehs[mvf_helicopter].id,<< 1527.6018, -591.3962, 336.5655 >>,MISSION_CIRCLE,10,DRIVINGMODE_AVOIDCARS,4,-1)
|
|
endif
|
|
ENDIF
|
|
endif
|
|
endif
|
|
//=========================== MIKE TASKS ===========================
|
|
if mission_substage = STAGE_ENTRY
|
|
if bLongSpline
|
|
if DOES_ENTITY_EXIST(vehs[mvf_Michael_veh].id)
|
|
SET_ENTITY_COORDS(vehs[mvf_Michael_veh].id,vBACK_BANK)
|
|
SET_ENTITY_HEADING(vehs[mvf_Michael_veh].id,fHEADING_BACK)
|
|
SET_VEHICLE_ON_GROUND_PROPERLY(vehs[mvf_Michael_veh].id)
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
elif mission_stage = enum_to_int(msf_6_drop_off_point)
|
|
//=========================== TREV TASKS ===========================
|
|
IF NOT IS_PED_INJURED(trev())
|
|
AND NOT IS_ENTITY_DEAD(vehs[mvf_helicopter].id)
|
|
if GET_SCRIPT_TASK_STATUS(trev(),SCRIPT_TASK_VEHICLE_MISSION) != PERFORMING_TASK
|
|
TASK_VEHICLE_MISSION_COORS_TARGET(trev(),vehs[mvf_helicopter].id,<< 1728.8278, 3126.1279,106.3001 >>,MISSION_CIRCLE,10,DRIVINGMODE_AVOIDCARS,4,-1)
|
|
endif
|
|
ENDIF
|
|
//=========================== MIKE TASKS ===========================
|
|
IF NOT IS_PED_INJURED(MIKE())
|
|
AND NOT IS_ENTITY_DEAD(vehs[mvf_Michael_veh].id)
|
|
if GET_SCRIPT_TASK_STATUS(MIKE(),SCRIPT_TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE) != PERFORMING_TASK
|
|
TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE(MIKE(),vehs[mvf_Michael_veh].id, << 11.2359, 547.3271, 174.8878 >>,10,DRIVINGMODE_AVOIDCARS | DF_ForceJoinInRoadDirection ,3)
|
|
endif
|
|
ENDIF
|
|
endif
|
|
|
|
//======================================= DESCENT =============================================
|
|
if not bcustomswitch_mike_to_trev_inCar
|
|
and not bcustomswitch_mike_to_trev_inHeli
|
|
and not bcustomswitch_trev_to_mike
|
|
if bLongSpline
|
|
|
|
if GET_PLAYER_SWITCH_TYPE() = SWITCH_TYPE_LONG
|
|
or GET_PLAYER_SWITCH_TYPE() = SWITCH_TYPE_MEDIUM
|
|
|
|
if GET_PLAYER_SWITCH_STATE() = SWITCH_STATE_JUMPCUT_DESCENT
|
|
|
|
if GET_PLAYER_SWITCH_JUMP_CUT_INDEX() > 0
|
|
CLEAR_AREA_OF_VEHICLES(GET_ENTITY_COORDS(sCamDetails.pedTo), 100.0)
|
|
if sCamDetails.pedTo = MIKE()
|
|
SET_VEHICLE_USE_MORE_RESTRICTIVE_SPAWN_CHECKS(vehs[mvf_Michael_veh].id,true)
|
|
SET_VEHICLE_WILL_FORCE_OTHER_VEHICLES_TO_STOP(vehs[mvf_Michael_veh].id,true)
|
|
elif sCamDetails.pedTo = trev()
|
|
if IsEntityAlive(vehs[mvf_trevor_veh].id)
|
|
SET_VEHICLE_USE_MORE_RESTRICTIVE_SPAWN_CHECKS(vehs[mvf_trevor_veh].id,true)
|
|
SET_VEHICLE_WILL_FORCE_OTHER_VEHICLES_TO_STOP(vehs[mvf_trevor_veh].id,true)
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
switch idescentstage
|
|
case 0
|
|
if GET_PLAYER_SWITCH_JUMP_CUT_INDEX() = 1
|
|
if sCamDetails.pedTo = MIKE()
|
|
if IsEntityAlive(vehs[mvf_Michael_veh].id)
|
|
and IS_PED_IN_VEHICLE(sCamDetails.pedTo,vehs[mvf_Michael_veh].id)
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_Michael_veh].id)
|
|
SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_Michael_veh].id,(fSwitchTimeRec - 5000) - GET_TIME_POSITION_IN_RECORDING(vehs[mvf_Michael_veh].id))
|
|
|
|
else
|
|
if mission_stage = ENUM_TO_INT(msf_0_strip_club)
|
|
|
|
START_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_Michael_veh].id,1,"FH1RECMIKE")
|
|
elif mission_stage = ENUM_TO_INT(msf_1_font_of_bank)
|
|
if mission_substage = STAGE_ENTRY
|
|
|
|
START_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_Michael_veh].id,1,"FH1RECMIKE")
|
|
else
|
|
|
|
START_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_Michael_veh].id,2,"FH1RECMIKE")
|
|
endif
|
|
elif mission_Stage = enum_to_int(msf_6_drop_off_point)
|
|
|
|
START_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_Michael_veh].id,3,"FH1RECMIKE")
|
|
endif
|
|
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_Michael_veh].id)
|
|
SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_Michael_veh].id,(fSwitchTimeRec - 5000))
|
|
ENDIF
|
|
endif
|
|
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_Michael_veh].id)
|
|
SET_PLAYBACK_SPEED(vehs[mvf_Michael_veh].id,0.5)
|
|
FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehs[mvf_Michael_veh].id)
|
|
ENDIF
|
|
endif
|
|
elif sCamDetails.pedTo = trev()
|
|
if IsEntityAlive(vehs[mvf_trevor_veh].id)
|
|
and IS_PED_IN_VEHICLE(sCamDetails.pedTo,vehs[mvf_trevor_veh].id)
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_trevor_veh].id)
|
|
SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_trevor_veh].id,(fSwitchTimeRec - 5000) - GET_TIME_POSITION_IN_RECORDING(vehs[mvf_trevor_veh].id))
|
|
|
|
else
|
|
START_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_trevor_veh].id,3,"FH1REC")
|
|
SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_trevor_veh].id,(fSwitchTimeRec - 5000))
|
|
|
|
endif
|
|
SET_PLAYBACK_SPEED(vehs[mvf_trevor_veh].id,0.5)
|
|
FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehs[mvf_trevor_veh].id)
|
|
endif
|
|
if IsEntityAlive(vehs[mvf_helicopter].id)
|
|
and IS_PED_IN_VEHICLE(sCamDetails.pedTo,vehs[mvf_helicopter].id)
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_helicopter].id)
|
|
SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_helicopter].id,(fSwitchTimeRec - 5000) - GET_TIME_POSITION_IN_RECORDING(vehs[mvf_helicopter].id))
|
|
|
|
else
|
|
if mission_stage = ENUM_TO_INT(msf_6_drop_off_point)
|
|
START_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_helicopter].id,5,"FH1REC")
|
|
else
|
|
START_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_helicopter].id,4,"FH1REC")
|
|
endif
|
|
SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_helicopter].id,(fSwitchTimeRec - 5000))
|
|
|
|
endif
|
|
|
|
SET_PLAYBACK_SPEED(vehs[mvf_helicopter].id,0.5)
|
|
FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehs[mvf_helicopter].id)
|
|
endif
|
|
endif
|
|
idescentstage++
|
|
elif GET_PLAYER_SWITCH_JUMP_CUT_INDEX() = 0
|
|
idescentstage++
|
|
endif
|
|
break
|
|
case 1
|
|
if GET_PLAYER_SWITCH_JUMP_CUT_INDEX() = 0
|
|
if sCamDetails.pedTo = MIKE()
|
|
if IsEntityAlive(vehs[mvf_Michael_veh].id)
|
|
and IS_PED_IN_VEHICLE(sCamDetails.pedTo,vehs[mvf_Michael_veh].id)
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_Michael_veh].id)
|
|
SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_Michael_veh].id,(fSwitchTimeRec) - GET_TIME_POSITION_IN_RECORDING(vehs[mvf_Michael_veh].id))
|
|
|
|
else
|
|
if mission_stage = ENUM_TO_INT(msf_0_strip_club)
|
|
START_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_Michael_veh].id,1,"FH1RECMIKE")
|
|
|
|
elif mission_stage = ENUM_TO_INT(msf_1_font_of_bank)
|
|
if mission_substage = STAGE_ENTRY
|
|
START_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_Michael_veh].id,1,"FH1RECMIKE")
|
|
|
|
else
|
|
START_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_Michael_veh].id,2,"FH1RECMIKE")
|
|
|
|
endif
|
|
elif mission_Stage = enum_to_int(msf_6_drop_off_point)
|
|
|
|
START_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_Michael_veh].id,3,"FH1RECMIKE")
|
|
endif
|
|
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_Michael_veh].id)
|
|
SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_Michael_veh].id,(fSwitchTimeRec))
|
|
ENDIF
|
|
endif
|
|
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_Michael_veh].id)
|
|
SET_PLAYBACK_SPEED(vehs[mvf_Michael_veh].id,1.2)
|
|
FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehs[mvf_Michael_veh].id)
|
|
ENDIF
|
|
endif
|
|
elif sCamDetails.pedTo = trev()
|
|
if IsEntityAlive(vehs[mvf_trevor_veh].id)
|
|
and IS_PED_IN_VEHICLE(sCamDetails.pedTo,vehs[mvf_trevor_veh].id)
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_trevor_veh].id)
|
|
SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_trevor_veh].id,fSwitchTimeRec - GET_TIME_POSITION_IN_RECORDING(vehs[mvf_trevor_veh].id))
|
|
|
|
else
|
|
START_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_trevor_veh].id,3,"FH1REC")
|
|
SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_trevor_veh].id,fSwitchTimeRec)
|
|
|
|
endif
|
|
SET_PLAYBACK_SPEED(vehs[mvf_trevor_veh].id,0.5)
|
|
FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehs[mvf_trevor_veh].id)
|
|
endif
|
|
if IsEntityAlive(vehs[mvf_helicopter].id)
|
|
and IS_PED_IN_VEHICLE(sCamDetails.pedTo,vehs[mvf_helicopter].id)
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_helicopter].id)
|
|
SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_helicopter].id,fSwitchTimeRec - GET_TIME_POSITION_IN_RECORDING(vehs[mvf_helicopter].id))
|
|
else
|
|
if mission_stage = ENUM_TO_INT(msf_6_drop_off_point)
|
|
START_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_helicopter].id,5,"FH1REC")
|
|
else
|
|
START_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_helicopter].id,4,"FH1REC")
|
|
endif
|
|
SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_helicopter].id,fSwitchTimeRec)
|
|
endif
|
|
|
|
SET_PLAYBACK_SPEED(vehs[mvf_helicopter].id,0.5)
|
|
FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehs[mvf_helicopter].id)
|
|
endif
|
|
endif
|
|
idescentstage++
|
|
endif
|
|
break
|
|
case 2
|
|
if GET_PLAYER_SWITCH_JUMP_CUT_INDEX() != 0
|
|
if sCamDetails.pedTo = MIKE()
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_Michael_veh].id)
|
|
SET_PLAYBACK_SPEED(vehs[mvf_Michael_veh].id,1)
|
|
|
|
endif
|
|
elif sCamDetails.pedTo = trev()
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_helicopter].id)
|
|
SET_PLAYBACK_SPEED(vehs[mvf_helicopter].id,1)
|
|
|
|
elif IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_trevor_veh].id)
|
|
SET_PLAYBACK_SPEED(vehs[mvf_trevor_veh].id,1)
|
|
|
|
endif
|
|
endif
|
|
endif
|
|
break
|
|
endswitch
|
|
endif
|
|
endif
|
|
else
|
|
if GET_PLAYER_SWITCH_TYPE() = SWITCH_TYPE_LONG
|
|
or GET_PLAYER_SWITCH_TYPE() = SWITCH_TYPE_MEDIUM
|
|
if GET_PLAYER_SWITCH_STATE() = SWITCH_STATE_JUMPCUT_DESCENT
|
|
or GET_PLAYER_SWITCH_STATE() = SWITCH_STATE_OUTRO_HOLD
|
|
or GET_PLAYER_SWITCH_STATE() = SWITCH_STATE_OUTRO_SWOOP
|
|
or GET_PLAYER_SWITCH_STATE() = SWITCH_STATE_OUTRO
|
|
or GET_PLAYER_SWITCH_STATE() = SWITCH_STATE_FINISHED
|
|
|
|
if IS_PED_IN_ANY_VEHICLE(sCamDetails.pedTo)
|
|
FREEZE_ENTITY_POSITION(GET_VEHICLE_PED_IS_IN(sCamDetails.pedTo) ,false)
|
|
if not IS_PED_IN_FLYING_VEHICLE(sCamDetails.pedTo)
|
|
SET_VEHICLE_ON_GROUND_PROPERLY(GET_VEHICLE_PED_IS_IN(sCamDetails.pedTo))
|
|
endif
|
|
endif
|
|
else
|
|
|
|
if IS_PED_IN_ANY_VEHICLE(sCamDetails.pedTo)
|
|
FREEZE_ENTITY_POSITION(GET_VEHICLE_PED_IS_IN(sCamDetails.pedTo) ,true)
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
if NOT IS_ENTITY_DEAD(vehs[mvf_helicopter].id)
|
|
if IS_HELI_PART_BROKEN(vehs[mvf_helicopter].id,true,true,true)
|
|
SET_VEHICLE_FIXED(vehs[mvf_helicopter].id)
|
|
ENDIF
|
|
endif
|
|
endif
|
|
//====================================================== DONE ============================================================
|
|
IF hsStatus = SWITCH_COMPLETE
|
|
|
|
if IsEntityAlive(vehs[mvf_trevor_veh].id)
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_trevor_veh].id)
|
|
STOP_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_trevor_veh].id)
|
|
endif
|
|
endif
|
|
if IsEntityAlive(vehs[mvf_helicopter].id)
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_helicopter].id)
|
|
STOP_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_helicopter].id)
|
|
endif
|
|
endif
|
|
if IsEntityAlive(vehs[mvf_Michael_veh].id)
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_Michael_veh].id)
|
|
STOP_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_Michael_veh].id)
|
|
endif
|
|
endif
|
|
|
|
if not bcustomswitch_mike_to_trev_inCar
|
|
and not bcustomswitch_mike_to_trev_inHeli
|
|
and not bcustomswitch_trev_to_mike
|
|
SET_PLAYER_CONTROL(player_id(),true)
|
|
CLEAR_PED_TASKS(player_ped_id())
|
|
else
|
|
//[MF] Only clear Michael's task if we aren't currently displaying the switch cam from Michael that transitions directly to a cutscene.
|
|
IF DOES_CAM_EXIST(scsSwitchCamTrevorInHeliToMichael.ciSpline)
|
|
IF NOT IS_CAM_ACTIVE(scsSwitchCamTrevorInHeliToMichael.ciSpline)
|
|
SET_PLAYER_CONTROL(player_id(),true)
|
|
CLEAR_PED_TASKS(player_ped_id())
|
|
bCustomSwitchCamRendering_HeliToCar = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
endif
|
|
|
|
bcustomswitch_mike_to_trev_inCar = false
|
|
bcustomswitch_mike_to_trev_inHeli = false
|
|
bcustomswitch_trev_to_mike = false
|
|
|
|
//[MF] Only stop redering the script cam if we aren't currently displaying the switch cam from Michael that transitions directly to a cutscene.
|
|
IF DOES_CAM_EXIST(scsSwitchCamTrevorInHeliToMichael.ciSpline)
|
|
IF NOT IS_CAM_ACTIVE(scsSwitchCamTrevorInHeliToMichael.ciSpline)
|
|
RENDER_SCRIPT_CAMS(false,true)
|
|
ENDIF
|
|
ELSE
|
|
RENDER_SCRIPT_CAMS(false,true)
|
|
ENDIF
|
|
|
|
SET_FRONTEND_RADIO_ACTIVE(true)
|
|
iLastSwapTimer = get_game_timer() //so that if the player quickly goes back and forth they wont see an unrealistic leap
|
|
PAUSE_CLOCK(false)
|
|
|
|
//cleanup stuff
|
|
CLEAR_MISSION_LOCATE_STUFF(sLocatesData)
|
|
CLEAR_MISSION_LOCATION_TEXT_AND_BLIPS(sLocatesData)
|
|
CLEANUP_SELECTOR_CAM(sCamDetails)
|
|
stop_mission_audio_scenes()
|
|
|
|
// if eDialogue_stateM != DI_EXIT_DIALOGUE_MIKE
|
|
// eDialogue_stateM = DI_START_CONDITION_MIKE
|
|
// endif
|
|
// if eDialogue_stateT != DI_EXIT_DIALOGUE_TREVOR
|
|
// eDialogue_stateT = DI_START_CONDITION_TREVOR
|
|
// endif
|
|
|
|
if PLAYER_PED_ID() = TREV()
|
|
if mission_stage < enum_to_int(msf_4_heli_follow_truck)
|
|
if heli_switch = TO_HELI
|
|
if not IS_AUDIO_SCENE_ACTIVE("BS_1_SWITCH_TO_TREVOR")
|
|
START_AUDIO_SCENE("BS_1_SWITCH_TO_TREVOR")
|
|
endif
|
|
elif heli_switch = TO_TRUCKS
|
|
if not IS_AUDIO_SCENE_ACTIVE("BS_1_FLY_TO_TRUCKS")
|
|
START_AUDIO_SCENE("BS_1_FLY_TO_TRUCKS")
|
|
endif
|
|
endif
|
|
endif
|
|
if IsEntityAlive(vehs[mvf_helicopter].id)
|
|
SET_ENTITY_INVINCIBLE(vehs[mvf_helicopter].id,false)
|
|
endif
|
|
else
|
|
//move heli to safe place and restore at least half health
|
|
if IsEntityAlive(vehs[mvf_helicopter].id)
|
|
and IsEntityAlive(TREV())
|
|
and IsEntityAlive(LESTER())
|
|
if GET_ENTITY_HEALTH(vehs[mvf_helicopter].id) < 700
|
|
SET_ENTITY_HEALTH(vehs[mvf_helicopter].id,700)
|
|
endif
|
|
if IS_HELI_PART_BROKEN(vehs[mvf_helicopter].id,true,true,true)
|
|
SET_VEHICLE_FIXED(vehs[mvf_helicopter].id)
|
|
ENDIF
|
|
if is_ped_in_vehicle(TREV(),vehs[mvf_helicopter].id)
|
|
and is_ped_in_vehicle(LESTER(),vehs[mvf_helicopter].id)
|
|
VECTOR currenthelipos = GET_ENTITY_COORDS(vehs[mvf_helicopter].id)
|
|
if IS_ENTITY_OCCLUDED(vehs[mvf_helicopter].id)
|
|
and not IS_ENTITY_ON_SCREEN(vehs[mvf_helicopter].id)
|
|
and currenthelipos.z < 300
|
|
SET_ENTITY_COORDS(vehs[mvf_helicopter].id,(currenthelipos + <<0,0,200>>),true,true)
|
|
SET_HELI_BLADES_FULL_SPEED(vehs[mvf_helicopter].id)
|
|
SET_VEHICLE_ENGINE_ON(vehs[mvf_helicopter].id,true,true)
|
|
endif
|
|
endif
|
|
SET_ENTITY_INVINCIBLE(vehs[mvf_helicopter].id,true)
|
|
endif
|
|
endif
|
|
//======================================= unSafety =============================================
|
|
if IsEntityAlive(mike())
|
|
SET_ENTITY_INVINCIBLE(MIKE(),false)
|
|
endif
|
|
if IsEntityAlive(lester())
|
|
SET_ENTITY_INVINCIBLE(LESTER(),false)
|
|
endif
|
|
if IsEntityAlive(trev())
|
|
SET_ENTITY_INVINCIBLE(TREV(),false)
|
|
endif
|
|
if IsEntityAlive(frank())
|
|
SET_ENTITY_INVINCIBLE(FRANK(),false)
|
|
endif
|
|
if IsEntityAlive(vehs[mvf_helicopter].id)
|
|
SET_ENTITY_INVINCIBLE(vehs[mvf_helicopter].id,false)
|
|
endif
|
|
if IsEntityAlive(vehs[mvf_trevor_veh].id)
|
|
SET_ENTITY_INVINCIBLE(vehs[mvf_trevor_veh].id,false)
|
|
endif
|
|
if IsEntityAlive(vehs[mvf_Michael_veh].id)
|
|
SET_ENTITY_INVINCIBLE(vehs[mvf_Michael_veh].id,false)
|
|
endif
|
|
endif
|
|
endif
|
|
endproc
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
// Mission Cleanup
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
|
|
PROC Mission_Cleanup(bool bMissionPassed = false)
|
|
|
|
if GET_PLAYER_PED_ENUM(player_ped_id()) = CHAR_MICHAEL
|
|
g_replay.iReplayInt[2] = 0
|
|
elif GET_PLAYER_PED_ENUM(player_ped_id()) = CHAR_TREVOR
|
|
g_replay.iReplayInt[2] = 1
|
|
endif
|
|
|
|
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_Michael_veh].id)
|
|
SET_VEHICLE_RADIO_ENABLED(vehs[mvf_Michael_veh].id,true)
|
|
ENDIF
|
|
|
|
UPDATE_DYNAMIC_VEHICLE_GEN_POSITION(VEHGEN_WEB_HELIPAD_TREVOR_COUNTRY, <<0,0,0>>, 0.0)
|
|
|
|
SET_BUILDING_STATE( BUILDINGNAME_IPL_BIG_SCORE_HOLE_COVER, BUILDINGSTATE_NORMAL)
|
|
SET_BUILDING_STATE( BUILDINGNAME_IPL_JEWEL_HEIST_BIKE_TUNNELS, BUILDINGSTATE_NORMAL)
|
|
|
|
IF IS_CUTSCENE_ACTIVE()
|
|
STOP_CUTSCENE_IMMEDIATELY()
|
|
REMOVE_CUTSCENE()
|
|
ENDIF
|
|
|
|
if DOES_ENTITY_EXIST(TREV())
|
|
AND NOT IS_ENTITY_DEAD(TREV())
|
|
IF NOT IS_ENTITY_VISIBLE(TREV())
|
|
SET_ENTITY_VISIBLE(TREV(),true)
|
|
ENDIF
|
|
endif
|
|
if NOT IS_ENTITY_DEAD(lester())
|
|
IF NOT IS_ENTITY_VISIBLE(lester())
|
|
SET_ENTITY_VISIBLE(lester(),true)
|
|
ENDIF
|
|
endif
|
|
if NOT IS_ENTITY_DEAD(vehs[mvf_helicopter].id)
|
|
IF NOT IS_ENTITY_VISIBLE(vehs[mvf_helicopter].id)
|
|
SET_ENTITY_VISIBLE(vehs[mvf_helicopter].id,true)
|
|
ENDIF
|
|
endif
|
|
|
|
SET_VEHICLE_GEN_AVAILABLE(VEHGEN_WEB_HELIPAD_TREVOR_COUNTRY, TRUE)
|
|
RENDER_SCRIPT_CAMS(false,false)
|
|
DISPLAY_RADAR(true)
|
|
DISPLAY_HUD(true)
|
|
STOP_SOUND(camZoom)
|
|
STOP_SOUND(camhum)
|
|
CLEAR_TIMECYCLE_MODIFIER()
|
|
//========================PEDS VEHS======================
|
|
for i = 0 TO Enum_to_int(MPF_NUM_OF_PEDS)-1
|
|
if DOES_ENTITY_EXIST(peds[i].id)
|
|
AND (NOT IS_PED_INJURED(peds[i].id))
|
|
if peds[i].id != player_ped_id()
|
|
if peds[i].id = peds[mpf_franklin].id
|
|
or peds[i].id = peds[mpf_lester].id
|
|
or peds[i].id = peds[mpf_michael].id
|
|
or peds[i].id = peds[mpf_trevor].id
|
|
SAFE_DELETE_PED(peds[i].id)
|
|
else
|
|
SAFE_RELEASE_PED(peds[i].id)
|
|
endif
|
|
endif
|
|
if DOES_BLIP_EXIST(peds[i].blip)
|
|
REMOVE_BLIP(peds[i].blip)
|
|
endif
|
|
REMOVE_SCENARIO_BLOCKING_AREA(peds[i].scenario_index)
|
|
endif
|
|
endfor
|
|
//all vehicles are now no longer needed
|
|
for i = 0 TO Enum_to_int(MVF_NUM_OF_VEH)-1
|
|
if DOES_ENTITY_EXIST(vehs[i].id)
|
|
SAFE_RELEASE_VEHICLE(vehs[i].id)
|
|
endif
|
|
endfor
|
|
|
|
//objects
|
|
if DOES_ENTITY_EXIST(objdummy)
|
|
DELETE_OBJECT(objdummy)
|
|
endif
|
|
if DOES_ENTITY_EXIST(objcam)
|
|
if IS_ENTITY_ATTACHED(objcam)
|
|
DETACH_ENTITY(objcam)
|
|
endif
|
|
SAFE_DELETE_OBJECT(objcam)
|
|
endif
|
|
//===========Destroys============
|
|
|
|
give_all_peds_earpiece(true) //bremove true
|
|
|
|
DESTROY_ALL_CAMS()
|
|
CLEAR_FOCUS()
|
|
CLEANUP_SELECTOR_CAM(sCamDetails)
|
|
|
|
TRIGGER_MUSIC_EVENT("FH1_FAIL")
|
|
|
|
|
|
stop_mission_audio_scenes()
|
|
CLEAR_PRINTS()
|
|
if IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
CLEAR_HELP()
|
|
ENDIF
|
|
remove_cutscene()
|
|
STREAMVOL_DELETE(vol_construction)
|
|
NEW_LOAD_SCENE_STOP()
|
|
|
|
RELEASE_SOUND_ID(camzoom)
|
|
RELEASE_SOUND_ID(camhum)
|
|
|
|
if interior_carpark != null
|
|
UNPIN_INTERIOR(interior_carpark)
|
|
endif
|
|
if interior_tunnel != null
|
|
UNPIN_INTERIOR(interior_tunnel)
|
|
endif
|
|
if interior_constuction != null
|
|
UNPIN_INTERIOR(interior_constuction)
|
|
endif
|
|
|
|
KILL_ANY_CONVERSATION()
|
|
|
|
CLEAR_MISSION_LOCATE_STUFF(sLocatesData)
|
|
CLEAR_MISSION_LOCATION_TEXT_AND_BLIPS(sLocatesData)
|
|
|
|
if DOES_BLIP_EXIST(blip_objective)
|
|
remove_blip(blip_objective)
|
|
endif
|
|
|
|
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(sfmov)
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(S_M_M_ARMOURED_01)
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(BULLDOZER)
|
|
REMOVE_ANIM_DICT("missbigscore1guard_wait_rifle")
|
|
//===============================
|
|
|
|
//============Resets=============
|
|
|
|
If is_screen_faded_out()
|
|
and bMissionPassed
|
|
DO_SCREEN_FADE_IN(2000)
|
|
ENDIF
|
|
|
|
SET_PLAYER_CONTROL(player_id(),true)
|
|
|
|
//cam
|
|
Display_hud(true)
|
|
DISPLAY_RADAR(true)
|
|
RENDER_SCRIPT_CAMS(false,false)
|
|
KILL_CHASE_HINT_CAM(localChaseHintCamStruct)
|
|
STOP_GAMEPLAY_HINT(true)
|
|
SET_CINEMATIC_BUTTON_ACTIVE(true)
|
|
|
|
//uber
|
|
CLEANUP_UBER_PLAYBACK()
|
|
SET_VEHICLE_POPULATION_BUDGET(3)
|
|
SET_PED_POPULATION_BUDGET(3)
|
|
uber_state = UBER_INIT
|
|
|
|
//tasks
|
|
if not IS_PED_INJURED(player_ped_id())
|
|
CLEAR_PED_TASKS(player_ped_id())
|
|
endif
|
|
CLEAR_SEQUENCE_TASK(seq)
|
|
CLEAR_SEQUENCE_TASK(peds[mpf_guard].seq)
|
|
CLEAR_SEQUENCE_TASK(peds[mpf_guardf].seq)
|
|
|
|
//off mission
|
|
SET_VEHICLE_MODEL_IS_SUPPRESSED(TAILGATER,false)
|
|
SET_VEHICLE_MODEL_IS_SUPPRESSED(BODHI2,false)
|
|
ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE,true)
|
|
ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE_WAIT_CRUISING,true)
|
|
ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE_WAIT_PULLED_OVER,true)
|
|
SET_ALL_RANDOM_PEDS_FLEE(player_id(),false)
|
|
SET_MAX_WANTED_LEVEL(5)
|
|
|
|
SET_ROADS_BACK_TO_ORIGINAL(<< 534.7286, -1144.5100, 8.0146 >>,<< 243.1961, -560.9398, 65.8140 >>)
|
|
SET_WANTED_LEVEL_MULTIPLIER(1)
|
|
ENABLE_STRIP_CLUBS()
|
|
REMOVE_SCENARIO_BLOCKING_AREAS()
|
|
CLEAR_WEATHER_TYPE_PERSIST()
|
|
|
|
disable_taxi_hailing(false)
|
|
//===============================
|
|
|
|
PRINTSTRING("...finale heist 1 Mission Cleanup")
|
|
PRINTNL()
|
|
ENDPROC
|
|
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
// Mission Pass
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
|
|
PROC Mission_Passed()
|
|
stop_mission_audio_scenes()
|
|
PRINTSTRING("...finale hesit 1 Mission Passed")
|
|
PRINTNL()
|
|
|
|
Mission_Flow_Mission_Passed()
|
|
Mission_Cleanup(true)
|
|
|
|
// B*1409141 - Ensure Chop is present at Franklin's apartment
|
|
REACTIVATE_NAMED_WORLD_BRAINS_WAITING_TILL_OUT_OF_RANGE("chop")
|
|
TERMINATE_THIS_THREAD()
|
|
ENDPROC
|
|
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
// Mission Fail
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
|
|
PROC Mission_Failed(MFF_MISSION_FAIL_FLAGS fail_condition = mff_default)
|
|
if not sCamDetails.bRun
|
|
TRIGGER_MUSIC_EVENT("FH1_FAIL")
|
|
KILL_ANY_CONVERSATION()
|
|
STRING strReason = ""
|
|
|
|
//show fail message
|
|
SWITCH fail_condition
|
|
CASE mff_debug_fail
|
|
strReason = "FH1_FAILDB"
|
|
BREAK
|
|
case mff_franklin_dead_fail
|
|
strReason = "CMN_FDIED"
|
|
break
|
|
case mff_lester_dead_fail
|
|
strReason = "FH1_FAILLD"
|
|
break
|
|
case mff_lost_truck
|
|
strReason = "FH1_FAILLT"
|
|
break
|
|
case mff_mike_dead_fail
|
|
strReason = "CMN_MDIED"
|
|
break
|
|
case mff_too_close_fail
|
|
strReason = "FH1_FAILTC"
|
|
break
|
|
case mff_trevor_dead_fail
|
|
strReason = "CMN_TDIED"
|
|
break
|
|
case mff_Mike_car_des
|
|
strReason = "CMN_MDEST"
|
|
break
|
|
case mff_trev_car_des
|
|
strReason = "CMN_TDEST"
|
|
break
|
|
case mff_heli_des
|
|
strReason = "FH1_FAILHD"
|
|
break
|
|
case mff_bank_knows
|
|
strReason = "FH1_FAILBK"
|
|
SET_PLAYER_WANTED_LEVEL(PLAYER_ID(),2)
|
|
break
|
|
case mff_left_franklin
|
|
strReason = "CMN_FLEFT"
|
|
break
|
|
case mff_left_lester
|
|
strReason = "FH1_FAILLES"
|
|
break
|
|
case mff_time
|
|
|
|
strReason = "FH1_FAILTI"
|
|
break
|
|
case mff_left_mission
|
|
strreason = "FH1_FMIKEL"
|
|
break
|
|
DEFAULT
|
|
strReason = "FH1_FAILDF"
|
|
BREAk
|
|
ENDSWITCH
|
|
|
|
|
|
//if in the custom lester cam clean this up before fail screen
|
|
if NOT IS_ENTITY_DEAD(TREV())
|
|
IF NOT IS_ENTITY_VISIBLE(TREV())
|
|
SET_ENTITY_VISIBLE(TREV(),true)
|
|
ENDIF
|
|
endif
|
|
if NOT IS_ENTITY_DEAD(lester())
|
|
IF NOT IS_ENTITY_VISIBLE(lester())
|
|
SET_ENTITY_VISIBLE(lester(),true)
|
|
ENDIF
|
|
endif
|
|
if NOT IS_ENTITY_DEAD(vehs[mvf_helicopter].id)
|
|
IF NOT IS_ENTITY_VISIBLE(vehs[mvf_helicopter].id)
|
|
SET_ENTITY_VISIBLE(vehs[mvf_helicopter].id,true)
|
|
ENDIF
|
|
endif
|
|
RENDER_SCRIPT_CAMS(false,false)
|
|
DISPLAY_RADAR(true)
|
|
DISPLAY_HUD(true)
|
|
TRIGGER_MUSIC_EVENT("FH1_FAIL")
|
|
STOP_SOUND(camZoom)
|
|
STOP_SOUND(camhum)
|
|
CLEAR_TIMECYCLE_MODIFIER()
|
|
|
|
MISSION_FLOW_MISSION_FAILED_WITH_REASON(strReason)
|
|
|
|
WHILE NOT GET_MISSION_FLOW_SAFE_TO_CLEANUP()
|
|
KILL_ANY_CONVERSATION()
|
|
if fail_condition = mff_default
|
|
and not bFailedConvo
|
|
if IsEntityAlive(LESTER())
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,3,LESTER(),"Lester")
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_FAILTME",CONV_PRIORITY_MEDIUM)
|
|
bFailedConvo = true
|
|
endif
|
|
endif
|
|
endif
|
|
//Maintain anything that could look weird during fade out (e.g. enemies walking off).
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
// Call RemovePlayerFromRestrictedVehicle() here if you need to
|
|
|
|
// check if we need to respawn the player in a different position,
|
|
// if so call MISSION_FLOW_SET_FAIL_WARP_LOCATION() + SET_REPLAY_DECLINED_VEHICLE_WARP_LOCATION here
|
|
MISSION_FLOW_SET_FAIL_WARP_LOCATION(<<92.0847, -1280.7062, 28.1447 >>, 73.3971)
|
|
// SET_REPLAY_DECLINED_VEHICLE_WARP_LOCATION(<<-1574.9478, 5169.6572, 18.5775>>, 163.3193)
|
|
|
|
MISSION_CLEANUP() // must only take 1 frame and terminate the thread
|
|
TERMINATE_THIS_THREAD()
|
|
endif
|
|
ENDPROC
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
// MISSION STAGE MANAGEMENT
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
|
|
PROC Mission_stage_management()
|
|
SWITCH stageswitch
|
|
CASE STAGESWITCH_REQUESTED
|
|
CPRINTLN(DEBUG_MISSION,"[stageManagement] mission_stage switch requested from mission_stage: ", mission_stage, " to mission_stage ", requestedStage)
|
|
stageswitch = STAGESWITCH_EXITING
|
|
mission_substage = STAGE_EXIT
|
|
BREAK
|
|
CASE STAGESWITCH_EXITING
|
|
CPRINTLN(DEBUG_MISSION,"[StageManagement] Exiting mission_stage: ", mission_stage)
|
|
stageSwitch = STAGESWITCH_ENTERING
|
|
mission_substage = STAGE_ENTRY
|
|
mission_stage = requestedStage
|
|
BREAK
|
|
CASE STAGESWITCH_ENTERING
|
|
CPRINTLN(DEBUG_MISSION,"[StageManagement] Entered mission_stage: ", mission_stage)
|
|
requestedStage = -1
|
|
stageSwitch = STAGESWITCH_IDLE
|
|
BREAK
|
|
CASE STAGESWITCH_IDLE
|
|
IF (GET_GAME_TIMER() - iStageTimer) > 2500
|
|
CPRINTLN(DEBUG_MISSION,"[StageManagement] mission_stage: ", mission_stage, " mission_substage: ", mission_substage)
|
|
iStageTimer = GET_GAME_TIMER()
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDPROC
|
|
FUNC BOOL Mission_Set_Stage(MSF_MISSION_STAGE_FLAGS newStage)
|
|
If stageswitch = STAGESWITCH_IDLE
|
|
requestedstage = ENUM_TO_INT(newStage)
|
|
stageswitch = STAGESWITCH_REQUESTED
|
|
return True
|
|
else
|
|
return false
|
|
endif
|
|
ENDFUNC
|
|
PROC unload_uber_chase()
|
|
for i = 1 to 67
|
|
if HAS_VEHICLE_RECORDING_BEEN_LOADED(i,"FH1UBER")
|
|
CPRINTLN(DEBUG_MISSION,"remove rec: ",i)
|
|
REMOVE_VEHICLE_RECORDING(i,"FH1UBER")
|
|
endif
|
|
endfor
|
|
endproc
|
|
Proc Load_asset_Stage(MSF_MISSION_STAGE_FLAGS newMissionStage,bool Breset = false)
|
|
|
|
|
|
PRINTLN("Load_asset_Stage : ", ENUM_TO_INT(newMissionStage))
|
|
//asset loading
|
|
switch newMissionStage
|
|
case msf_0_strip_club
|
|
Load_Asset_Model(sAssetData,frogger2) //helicopter
|
|
break
|
|
case msf_1_font_of_bank
|
|
Load_Asset_AnimDict(sAssetData,"missbigscore1guard_wait_rifle")
|
|
Load_Asset_Model(sAssetData,frogger2) //helicopter
|
|
Load_Asset_Recording(sAssetData,001,"FH1RECMIKE")
|
|
Load_Asset_Recording(sAssetData,002,"FH1RECMIKE")
|
|
Load_Asset_Recording(sAssetData,003,"FH1REC")
|
|
Load_Asset_Recording(sAssetData,004,"FH1REC")
|
|
|
|
//[MF] Switch Cam Assets
|
|
Load_Asset_AnimDict(sAssetData, sSwitchAnimLibrary_MikeAndFrankAnims)
|
|
Load_Asset_AnimDict(sAssetData, sSwitchAnimLibraryCarToTruck_PissAnims)
|
|
Load_Asset_AnimDict(sAssetData, sSwitchAnimLibraryTrevToCar_HeliAnims)
|
|
Load_Asset_AnimDict(sAssetData, "shake_cam_all@")
|
|
break
|
|
case msf_2_back_of_bank
|
|
case msf_3_get_in_position
|
|
if bReset
|
|
Load_Asset_Model(sAssetData,frogger2) //helicopter
|
|
Load_Asset_AnimDict(sAssetData,"missbigscore1guard_wait_rifle")
|
|
Load_Asset_Recording(sAssetData,003,"FH1REC")
|
|
Load_Asset_Recording(sAssetData,004,"FH1REC")
|
|
|
|
//[MF] Switch Cam Assets
|
|
Load_Asset_AnimDict(sAssetData, sSwitchAnimLibrary_MikeAndFrankAnims)
|
|
Load_Asset_AnimDict(sAssetData, sSwitchAnimLibraryCarToTruck_PissAnims)
|
|
Load_Asset_AnimDict(sAssetData, sSwitchAnimLibraryTrevToCar_HeliAnims)
|
|
Load_Asset_AnimDict(sAssetData, "shake_cam_all@")
|
|
endif
|
|
REQUEST_CUTSCENE("bss_1_mcs_2")
|
|
SET_SRL_FORCE_PRESTREAM(SRL_PRESTREAM_FORCE_OFF) //#BUG:1542524
|
|
break
|
|
case msf_4_heli_follow_truck
|
|
if bReset
|
|
// Load_Asset_Model(IG_LESTERCREST)//Lester
|
|
Load_Asset_Model(sAssetData,frogger2) //helicopter
|
|
Load_Asset_AnimDict(sAssetData,"missbigscore1guard_wait_rifle")
|
|
endif
|
|
|
|
Load_Asset_Model(sAssetData,S_M_M_ARMOURED_01)
|
|
Load_Asset_Model(sAssetData,STOCKADE) // security truck
|
|
load_asset_model(sAssetData,PROP_PAP_CAMERA_01)
|
|
Load_Asset_Recording(sAssetData,001,"FH1UBER")
|
|
Load_Asset_AnimDict(sAssetData, "missheist_the_big_score_setup_1@camera@idle_a")
|
|
|
|
break
|
|
case msf_5_CONSTRUCTION_HOLE
|
|
if bReset
|
|
// Load_Asset_Model(IG_LESTERCREST)//Lester
|
|
Load_Asset_Model(sAssetData,frogger2) //helicopter
|
|
Load_Asset_AnimDict(sAssetData,"missbigscore1guard_wait_rifle")
|
|
Load_Asset_AnimDict(sAssetData, "missheist_the_big_score_setup_1@camera@idle_a")
|
|
load_asset_model(sAssetData,PROP_PAP_CAMERA_01)
|
|
endif
|
|
load_asset_model(sAssetData,PROP_LD_TEST_01)
|
|
break
|
|
case msf_6_drop_off_point
|
|
if bReset
|
|
// Load_Asset_Model(IG_LESTERCREST)//Lester
|
|
Load_Asset_Model(sAssetData,frogger2) //helicopter
|
|
Load_Asset_AnimDict(sAssetData,"missbigscore1guard_wait_rifle")
|
|
endif
|
|
Load_Asset_AnimDict(sAssetData,"missheist_the_big_score_setup_1@heli_exit")
|
|
Load_Asset_Recording(sAssetData,005,"FH1REC")
|
|
Load_Asset_Recording(sAssetData,003,"FH1RECMIKE")
|
|
break
|
|
case msf_7_passed
|
|
Load_Asset_Model(sAssetData,frogger2)
|
|
break
|
|
endswitch
|
|
|
|
|
|
endproc
|
|
|
|
PROC RESET_EVERYTHING()
|
|
|
|
IF IS_CUTSCENE_ACTIVE()
|
|
STOP_CUTSCENE_IMMEDIATELY()
|
|
REMOVE_CUTSCENE()
|
|
WHILE IS_CUTSCENE_ACTIVE()
|
|
WAIT(0)
|
|
ENDWHILE
|
|
ENDIF
|
|
|
|
if not IS_REPLAY_BEING_SET_UP()
|
|
NEW_LOAD_SCENE_STOP()
|
|
CLEAR_FOCUS()
|
|
IF STREAMVOL_IS_VALID(vol_construction)
|
|
STREAMVOL_DELETE(vol_construction)
|
|
endif
|
|
endif
|
|
|
|
//==============PEDS==============
|
|
for i = 0 TO Enum_to_int(MPF_NUM_OF_PEDS)-1
|
|
if DOES_ENTITY_EXIST(peds[i].id)
|
|
AND (NOT IS_PED_INJURED(peds[i].id))
|
|
if IS_PED_IN_ANY_VEHICLE(peds[i].id)
|
|
SET_PED_COORDS_NO_GANG(peds[i].id,(GET_ENTITY_COORDS(GET_VEHICLE_PED_IS_IN(peds[i].id))+<<0,-2,0>>))
|
|
endif
|
|
if peds[i].id != player_ped_id()
|
|
DELETE_PED(peds[i].id)
|
|
endif
|
|
endif
|
|
endfor
|
|
//================================
|
|
|
|
//==============VEHS==============
|
|
for i = 0 TO Enum_to_int(MVF_NUM_OF_VEH)-1
|
|
if DOES_ENTITY_EXIST(vehs[i].id)
|
|
DELETE_VEHICLE(vehs[i].id)
|
|
endif
|
|
endfor
|
|
//================================
|
|
//objects
|
|
if DOES_ENTITY_EXIST(objcam)
|
|
if IS_ENTITY_ATTACHED(objcam)
|
|
DETACH_ENTITY(objcam)
|
|
endif
|
|
SAFE_DELETE_OBJECT(objcam)
|
|
endif
|
|
if DOES_ENTITY_EXIST(objdummy)
|
|
DELETE_OBJECT(objdummy)
|
|
endif
|
|
//-----------RESETS--------------
|
|
CLEANUP_UBER_PLAYBACK()
|
|
SWITCH_ALL_ROADS_BACK_TO_ORIGINAL()
|
|
SET_VEHICLE_POPULATION_BUDGET(3)
|
|
SET_PED_POPULATION_BUDGET(3)
|
|
uber_state = UBER_INIT
|
|
|
|
if not IS_PED_INJURED(player_ped_id())
|
|
CLEAR_PED_TASKS(player_ped_id())
|
|
SET_ENTITY_VISIBLE(player_ped_id(),true)
|
|
endif
|
|
|
|
SET_WANTED_LEVEL_MULTIPLIER(0.8)
|
|
CLEAR_PLAYER_WANTED_LEVEL(player_id())
|
|
|
|
Display_hud(true)
|
|
DISPLAY_RADAR(true)
|
|
RENDER_SCRIPT_CAMS(false,false)
|
|
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
|
|
|
CLEAR_SEQUENCE_TASK(seq)
|
|
CLEAR_SEQUENCE_TASK(peds[mpf_guard].seq)
|
|
CLEAR_SEQUENCE_TASK(peds[mpf_guardf].seq)
|
|
|
|
iHoleTimer = get_Game_timer()
|
|
iLastSwapTimer = get_game_timer()
|
|
KILL_CHASE_HINT_CAM(localChaseHintCamStruct)
|
|
|
|
STOP_GAMEPLAY_HINT(true)
|
|
SET_CINEMATIC_BUTTON_ACTIVE(true)
|
|
|
|
//swaps
|
|
bHotSwap = false
|
|
bcustomswitch_mike_to_trev_inCar = false
|
|
bcustomswitch_mike_to_trev_inHeli = false
|
|
bcustomswitch_trev_to_mike = false
|
|
|
|
bLeftbuddyprint = false
|
|
bheliPrintDisplayed = false
|
|
bLeftArea_printed = false
|
|
|
|
bTruckSkipForward = false
|
|
bheliset = false
|
|
btimeReset = false
|
|
|
|
bfirstwarningCL = true
|
|
bFailTimerStarted = true
|
|
bMissedBackCS = false
|
|
|
|
b_displayed_get_heli= false
|
|
bHeliStageLoaded = false
|
|
bFCSanimsLoaded = false
|
|
bAUDIOStreamLoaded = false
|
|
bplayingstream = false
|
|
b_cutscene_loaded = false
|
|
bIgnoreNoPlayerControl = FALSE
|
|
|
|
CLEANUP_SELECTOR_CAM(sCamDetails)
|
|
//----------- Dialogue ---------
|
|
|
|
eDialogue_stateM = DI_START_CONDITION_MIKE
|
|
eDialogue_stateT = DI_START_CONDITION_TREVOR
|
|
eInterruptstage = INTERRUPT_NONE
|
|
iDialogueTimer = get_game_timer()
|
|
bDialoguePlayed = false
|
|
bFailedConvo = false
|
|
bPrisonWarning = false
|
|
lbl_Interrupt = ""
|
|
lbl_root = ""
|
|
lbl_MikeswitchInterrupt = ""
|
|
lbl_mikeswitchroot = ""
|
|
b_mikeSpeechSwitchStopped = false
|
|
lbl_trevswitchInterrupt = ""
|
|
lbl_trevswitchroot = ""
|
|
b_trevSpeechSwitchStopped = false
|
|
|
|
|
|
//------------CS--------------
|
|
bcs_mike = false
|
|
bcs_trev = false
|
|
bcs_frank = false
|
|
bcs_lester = false
|
|
bcs_sec = false
|
|
bcs_mikecar = false
|
|
bcs_cam = false
|
|
|
|
bSwitchedToMike = false
|
|
//------------ streaming assets --------------
|
|
bloadDozer = false
|
|
bcreateDozers = false
|
|
bloadGuards = false
|
|
bcreateGuards = false
|
|
iSFstage = 0
|
|
//----------DESTROYS-------------
|
|
|
|
TRIGGER_MUSIC_EVENT("FH1_FAIL")
|
|
stop_mission_audio_scenes()
|
|
STOP_SOUND(camZoom)
|
|
STOP_SOUND(camhum)
|
|
DESTROY_ALL_CAMS()
|
|
CLEAR_TIMECYCLE_MODIFIER()
|
|
|
|
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(sfmov)
|
|
|
|
CLEAR_PRINTS()
|
|
REMOVE_SCENARIO_BLOCKING_AREAS()
|
|
if interior_constuction != null
|
|
UNPIN_INTERIOR(interior_constuction)
|
|
endif
|
|
if interior_Tunnel != null
|
|
UNPIN_INTERIOR(interior_tunnel)
|
|
endif
|
|
if interior_carpark != null
|
|
UNPIN_INTERIOR(interior_carpark)
|
|
endif
|
|
KILL_ANY_CONVERSATION()
|
|
|
|
//locates stuff
|
|
CLEAR_MISSION_LOCATE_STUFF(sLocatesData)
|
|
CLEAR_MISSION_LOCATION_TEXT_AND_BLIPS(sLocatesData)
|
|
|
|
if DOES_BLIP_EXIST(blip_objective)
|
|
remove_blip(blip_objective)
|
|
endif
|
|
|
|
remove_PED_FOR_DIALOGUE(convo_struct,0)
|
|
remove_PED_FOR_DIALOGUE(convo_struct,1)
|
|
remove_PED_FOR_DIALOGUE(convo_struct,2)
|
|
remove_PED_FOR_DIALOGUE(convo_struct,3)
|
|
|
|
//-------------------------------
|
|
|
|
ENDPROC
|
|
PROC SU_GENERAL()
|
|
|
|
SET_MAX_WANTED_LEVEL(2)
|
|
|
|
if DOES_ENTITY_EXIST(trev())
|
|
if player_ped_id() != trev()
|
|
SET_PED_RELATIONSHIP_GROUP_HASH(trev(),rel_buddy)
|
|
endif
|
|
endif
|
|
if DOES_ENTITY_EXIST(mike())
|
|
if player_ped_id() != mike()
|
|
SET_PED_RELATIONSHIP_GROUP_HASH(mike(),rel_buddy)
|
|
endif
|
|
endif
|
|
if DOES_ENTITY_EXIST(frank())
|
|
SET_PED_RELATIONSHIP_GROUP_HASH(frank(),rel_buddy)
|
|
endif
|
|
|
|
if IsEntityAlive(lester())
|
|
SET_PED_RELATIONSHIP_GROUP_HASH(lester(),rel_buddy)
|
|
SET_PED_MOVEMENT_CLIPSET(lester(),"move_lester_CaneUp")
|
|
SET_PED_WEAPON_MOVEMENT_CLIPSET(lester(),"move_lester_CaneUp")
|
|
endif
|
|
|
|
|
|
if IsEntityAlive(vehs[mvf_Michael_veh].id)
|
|
SET_ENTITY_COLLISION(vehs[mvf_Michael_veh].id,true)
|
|
SET_VEHICLE_HAS_STRONG_AXLES(vehs[mvf_Michael_veh].id,true)
|
|
endif
|
|
if IsEntityAlive(vehs[mvf_trevor_veh].id)
|
|
SET_ENTITY_COLLISION(vehs[mvf_trevor_veh].id,true)
|
|
SET_VEHICLE_HAS_STRONG_AXLES(vehs[mvf_trevor_veh].id,true)
|
|
endif
|
|
|
|
|
|
if player_ped_id() = mike()
|
|
//on
|
|
if IsEntityAlive(TREV())
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(TREV(),true)
|
|
endif
|
|
if IsEntityAlive(lester())
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(lester(),true)
|
|
endif
|
|
if IsEntityAlive(vehs[mvf_helicopter].id)
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(vehs[mvf_helicopter].id,true)
|
|
endif
|
|
if IsEntityAlive(vehs[mvf_trevor_veh].id)
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(vehs[mvf_trevor_veh].id,true)
|
|
endif
|
|
//off
|
|
if IsEntityAlive(mike())
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(MIKE(),false)
|
|
endif
|
|
if IsEntityAlive(FRANK())
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(frank(),false)
|
|
endif
|
|
if IsEntityAlive(vehs[mvf_Michael_veh].id)
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(vehs[mvf_Michael_veh].id,false)
|
|
endif
|
|
|
|
elif player_ped_id() = trev()
|
|
//on
|
|
if IsEntityAlive(TREV())
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(TREV(),false)
|
|
endif
|
|
if IsEntityAlive(lester())
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(lester(),false)
|
|
endif
|
|
if IsEntityAlive(vehs[mvf_helicopter].id)
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(vehs[mvf_helicopter].id,false)
|
|
endif
|
|
if IsEntityAlive(vehs[mvf_trevor_veh].id)
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(vehs[mvf_trevor_veh].id,false)
|
|
endif
|
|
//off
|
|
if IsEntityAlive(mike())
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(MIKE(),true)
|
|
endif
|
|
if IsEntityAlive(FRANK())
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(frank(),true)
|
|
endif
|
|
if IsEntityAlive(vehs[mvf_Michael_veh].id)
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(vehs[mvf_Michael_veh].id,true)
|
|
endif
|
|
endif
|
|
|
|
//ready for checks
|
|
btimeReset = true
|
|
endproc
|
|
PROC SU_0_STRIP_CLUB()
|
|
SET_CLOCK_TIME(12,0,0)
|
|
//michael start
|
|
Set_Current_Player_Ped(SELECTOR_PED_MICHAEL,true)
|
|
peds[mpf_michael].id = player_ped_id()
|
|
|
|
REQUEST_CLIP_SET("move_lester_CaneUp")
|
|
while not HAS_CLIP_SET_LOADED("move_lester_CaneUp")
|
|
wait(0)
|
|
endwhile
|
|
while not CREATE_PLAYER_VEHICLE(vehs[mvf_Michael_veh].id,CHAR_MICHAEL,<< 90.3864, -1278.8374, 28.0896 >>, 98.4832)
|
|
wait(0)
|
|
endwhile
|
|
while not CREATE_PLAYER_PED_ON_FOOT(peds[mpf_franklin].id,CHAR_FRANKLIN,<< 94.5331, -1277.5521, 28.1446 >>,15.2302)
|
|
wait(0)
|
|
endwhile
|
|
|
|
while not CREATE_PLAYER_VEHICLE(vehs[mvf_trevor_veh].id,CHAR_TREVOR,<< 83.4733, -1281.3232, 29.1518 >>, 96.9356)
|
|
wait(0)
|
|
endwhile
|
|
SET_ENTITY_COLLISION(vehs[mvf_trevor_veh].id,true)
|
|
while not CREATE_PLAYER_PED_INSIDE_VEHICLE(peds[mpf_trevor].id,CHAR_TREVOR,vehs[mvf_trevor_veh].id)
|
|
wait(0)
|
|
endwhile
|
|
while not CREATE_NPC_PED_INSIDE_VEHICLE(peds[mpf_lester].id,CHAR_LESTER,vehs[mvf_trevor_veh].id,VS_FRONT_RIGHT)
|
|
wait(0)
|
|
endwhile
|
|
SET_PED_PROP_INDEX(peds[mpf_lester].id, INT_TO_ENUM(PED_PROP_POSITION,1), 0, 0)
|
|
|
|
IF IS_REPLAY_BEING_SET_UP()
|
|
END_REPLAY_SETUP()
|
|
Else
|
|
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), false)
|
|
endif
|
|
|
|
btimeReset = true
|
|
heli_switch = TO_HELI
|
|
eTREV_Dialogue = T_di_FILL1
|
|
eMike_dialogue = M_di_TO_FRONT
|
|
eBOTH_dialogue = BOTH_TIME_INFO
|
|
CLEAR_AREA_OF_PEDS(<< 97.6772, -1290.7390, 28.2688 >>,300)
|
|
Point_Gameplay_cam_at_coord(get_entity_heading(player_ped_id()))
|
|
|
|
ENDPROC
|
|
PROC SU_1_FONT_OF_BANK()
|
|
|
|
//michael
|
|
while not CREATE_PLAYER_VEHICLE(vehs[mvf_Michael_veh].id,CHAR_MICHAEL,vFRONT_BANK, fHEADING_FRONT )
|
|
wait(0)
|
|
endwhile
|
|
//franklin
|
|
while not CREATE_PLAYER_PED_INSIDE_VEHICLE(peds[mpf_franklin].id,CHAR_FRANKLIN,vehs[mvf_Michael_veh].id,VS_FRONT_RIGHT)
|
|
wait(0)
|
|
endwhile
|
|
//trev veh
|
|
while not CREATE_PLAYER_VEHICLE(vehs[mvf_trevor_veh].id,CHAR_TREVOR,<< 1681.2954, 1320.6780, 86.0397 >>, 346.5002)
|
|
wait(0)
|
|
endwhile
|
|
//lester
|
|
while not CREATE_NPC_PED_INSIDE_VEHICLE(peds[mpf_lester].id,CHAR_LESTER,vehs[mvf_trevor_veh].id,VS_FRONT_RIGHT)
|
|
wait(0)
|
|
endwhile
|
|
SET_PED_PROP_INDEX(peds[mpf_lester].id, INT_TO_ENUM(PED_PROP_POSITION,1), 0, 0)
|
|
REQUEST_CLIP_SET("move_lester_CaneUp")
|
|
while not HAS_CLIP_SET_LOADED("move_lester_CaneUp")
|
|
wait(0)
|
|
endwhile
|
|
|
|
if g_replay.iReplayInt[2] = 0
|
|
Set_Current_Player_Ped(SELECTOR_PED_MICHAEL,true)
|
|
peds[mpf_michael].id = player_ped_id()
|
|
//trev
|
|
while not CREATE_PLAYER_PED_INSIDE_VEHICLE(peds[mpf_trevor].id,CHAR_TREVOR,vehs[mvf_trevor_veh].id)
|
|
wait(0)
|
|
endwhile
|
|
if IsEntityAlive(mike())
|
|
and IsEntityAlive(vehs[mvf_Michael_veh].id)
|
|
IF IS_REPLAY_BEING_SET_UP()
|
|
END_REPLAY_SETUP(vehs[mvf_Michael_veh].id)
|
|
Else
|
|
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), False)
|
|
SET_PED_INTO_VEHICLE(MIKE(),vehs[mvf_Michael_veh].id)
|
|
endif
|
|
endif
|
|
|
|
elif g_replay.iReplayInt[2] = 1
|
|
Set_Current_Player_Ped(SELECTOR_PED_TREVOR,true)
|
|
peds[mpf_trevor].id = player_ped_id()
|
|
//trev
|
|
while not CREATE_PLAYER_PED_INSIDE_VEHICLE(peds[mpf_michael].id,CHAR_MICHAEL,vehs[mvf_Michael_veh].id)
|
|
wait(0)
|
|
endwhile
|
|
if IsEntityAlive(TREV())
|
|
and IsEntityAlive(vehs[mvf_trevor_veh].id)
|
|
IF IS_REPLAY_BEING_SET_UP()
|
|
END_REPLAY_SETUP(vehs[mvf_trevor_veh].id)
|
|
Else
|
|
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), False)
|
|
SET_PED_INTO_VEHICLE(TREV(),vehs[mvf_trevor_veh].id)
|
|
endif
|
|
SET_VEHICLE_ON_GROUND_PROPERLY(vehs[mvf_trevor_veh].id)
|
|
SET_VEHICLE_FORWARD_SPEED(vehs[mvf_trevor_veh].id,25)
|
|
SET_VEHICLE_ENGINE_ON(vehs[mvf_trevor_veh].id,true,true)
|
|
endif
|
|
if not IS_AUDIO_SCENE_ACTIVE("BS_1_SWITCH_TO_TREVOR")
|
|
START_AUDIO_SCENE("BS_1_SWITCH_TO_TREVOR")
|
|
endif
|
|
endif
|
|
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,0,trev(),"TREVOR",true)
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,1,mike(),"MICHAEL",true)
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,2,frank(),"FRANKLIN",true)
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,3,lester(),"LESTER",true)
|
|
|
|
//heli
|
|
vehs[mvf_helicopter].id = CREATE_VEHICLE(frogger2,<< 1758.3090, 3284.5278, 40.7 >>, 133.1852)
|
|
SET_VEHICLE_ENGINE_CAN_DEGRADE(vehs[mvf_helicopter].id,false)
|
|
SET_ENTITY_ALWAYS_PRERENDER(vehs[mvf_helicopter].id,true)
|
|
SET_VEHICLE_LIVERY(vehs[mvf_helicopter].id,1)
|
|
SET_ENTITY_COLLISION(vehs[mvf_helicopter].id,true)
|
|
FREEZE_ENTITY_POSITION(vehs[mvf_helicopter].id,true)
|
|
SET_VEHICLE_ENGINE_CAN_DEGRADE(vehs[mvf_helicopter].id,false)
|
|
Unload_Asset_Model(sAssetData,frogger2)
|
|
give_all_peds_earpiece()
|
|
|
|
if IS_REPLAY_IN_PROGRESS()
|
|
and g_replayMissionStage = 1
|
|
and g_replay.iReplayInt[0] = 1
|
|
and not g_bShitskipAccepted
|
|
and not b_zskipped
|
|
SET_CLOCK_TIME(13,15,0)
|
|
else
|
|
SET_CLOCK_TIME(12,45,0)
|
|
endif
|
|
|
|
btimeReset = true
|
|
Hotswap_Menu(false,true,false)
|
|
bHotSwap = true
|
|
|
|
heli_switch = TO_HELI
|
|
eTREV_Dialogue = T_di_FILL1
|
|
eMike_dialogue = M_di_TO_BACK
|
|
eBOTH_dialogue = BOTH_WARN1
|
|
|
|
clear_area(GET_ENTITY_COORDS(player_ped_id()),50,true)
|
|
Point_Gameplay_cam_at_coord(get_entity_heading(player_ped_id()))
|
|
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(1,"Stage 1: Front of bank")
|
|
|
|
ENDPROC
|
|
PROC SU_2_BACK_OF_BANK()
|
|
|
|
// Set the position you want the vehicle to spawn at.
|
|
UPDATE_DYNAMIC_VEHICLE_GEN_POSITION(VEHGEN_WEB_HELIPAD_TREVOR_COUNTRY, <<1702.9482, 3272.0217, 40.1539>>, 247.3247)
|
|
|
|
// Delete the vehicle gen and create your version of the frogger here.
|
|
DELETE_VEHICLE_GEN_VEHICLE(VEHGEN_WEB_HELIPAD_TREVOR_COUNTRY)
|
|
|
|
// Force the current one to respawn at new location
|
|
CLEAR_MUST_LEAVE_AREA_VEHICLE_GEN_FLAG(VEHGEN_WEB_HELIPAD_TREVOR_COUNTRY)
|
|
|
|
//heli
|
|
vehs[mvf_helicopter].id = CREATE_VEHICLE(frogger2,<< 1758.3090, 3284.5278, 40.7 >>, 133.1852)
|
|
SET_VEHICLE_ENGINE_CAN_DEGRADE(vehs[mvf_helicopter].id,false)
|
|
SET_ENTITY_ALWAYS_PRERENDER(vehs[mvf_helicopter].id,true)
|
|
SET_VEHICLE_LIVERY(vehs[mvf_helicopter].id,1)
|
|
SET_ENTITY_COLLISION(vehs[mvf_helicopter].id,true)
|
|
FREEZE_ENTITY_POSITION(vehs[mvf_helicopter].id,true)
|
|
Unload_Asset_Model(sAssetData,frogger2)
|
|
//michael
|
|
while not CREATE_PLAYER_VEHICLE(vehs[mvf_Michael_veh].id,CHAR_MICHAEL,vBACK_BANK,fHEADING_BACK)
|
|
wait(0)
|
|
endwhile
|
|
//franklin
|
|
while not CREATE_PLAYER_PED_INSIDE_VEHICLE(peds[mpf_franklin].id,CHAR_FRANKLIN,vehs[mvf_Michael_veh].id,VS_FRONT_RIGHT)
|
|
wait(0)
|
|
endwhile
|
|
//trev veh
|
|
while not CREATE_PLAYER_VEHICLE(vehs[mvf_trevor_veh].id,CHAR_TREVOR,<<1993.6239, 2541.7837, 53.6037>>,318.9926)
|
|
wait(0)
|
|
endwhile
|
|
REQUEST_CLIP_SET("move_lester_CaneUp")
|
|
while not HAS_CLIP_SET_LOADED("move_lester_CaneUp")
|
|
wait(0)
|
|
endwhile
|
|
|
|
if g_replay.iReplayInt[2] = 0
|
|
Set_Current_Player_Ped(SELECTOR_PED_MICHAEL,true)
|
|
peds[mpf_michael].id = player_ped_id()
|
|
//trev
|
|
while not CREATE_PLAYER_PED_INSIDE_VEHICLE(peds[mpf_trevor].id,CHAR_TREVOR,vehs[mvf_trevor_veh].id)
|
|
wait(0)
|
|
endwhile
|
|
//lester
|
|
while not CREATE_NPC_PED_INSIDE_VEHICLE(peds[mpf_lester].id,CHAR_LESTER,vehs[mvf_trevor_veh].id,VS_FRONT_RIGHT)
|
|
wait(0)
|
|
endwhile
|
|
SET_PED_PROP_INDEX(peds[mpf_lester].id, INT_TO_ENUM(PED_PROP_POSITION,1), 0, 0)
|
|
|
|
if IsEntityAlive(vehs[mvf_Michael_veh].id)
|
|
and IsEntityAlive(mike())
|
|
IF IS_REPLAY_BEING_SET_UP()
|
|
END_REPLAY_SETUP(vehs[mvf_Michael_veh].id)
|
|
Else
|
|
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), False)
|
|
SET_PED_INTO_VEHICLE(MIKE(),vehs[mvf_Michael_veh].id)
|
|
endif
|
|
endif
|
|
SET_PLAYER_CONTROL(player_id(),false,SPC_LEAVE_CAMERA_CONTROL_ON)
|
|
Hotswap_Menu(false,true,false)
|
|
bHotSwap = false
|
|
|
|
elif g_replay.iReplayInt[2] = 1
|
|
Set_Current_Player_Ped(SELECTOR_PED_TREVOR,true)
|
|
peds[mpf_trevor].id = player_ped_id()
|
|
if not IS_AUDIO_SCENE_ACTIVE("BS_1_SWITCH_TO_TREVOR")
|
|
START_AUDIO_SCENE("BS_1_SWITCH_TO_TREVOR")
|
|
endif
|
|
//mike
|
|
while not CREATE_PLAYER_PED_INSIDE_VEHICLE(peds[mpf_michael].id,CHAR_MICHAEL,vehs[mvf_Michael_veh].id)
|
|
wait(0)
|
|
endwhile
|
|
//lester
|
|
while not CREATE_NPC_PED_INSIDE_VEHICLE(peds[mpf_lester].id,CHAR_LESTER,vehs[mvf_trevor_veh].id,VS_FRONT_RIGHT)
|
|
wait(0)
|
|
endwhile
|
|
SET_PED_PROP_INDEX(peds[mpf_lester].id, INT_TO_ENUM(PED_PROP_POSITION,1), 0, 0)
|
|
//trev
|
|
if IsEntityAlive(vehs[mvf_trevor_veh].id)
|
|
and IsEntityAlive(TREV())
|
|
IF IS_REPLAY_BEING_SET_UP()
|
|
END_REPLAY_SETUP(vehs[mvf_trevor_veh].id)
|
|
Else
|
|
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), False)
|
|
SET_PED_INTO_VEHICLE(TREV(),vehs[mvf_trevor_veh].id)
|
|
endif
|
|
SET_VEHICLE_FORWARD_SPEED(vehs[mvf_trevor_veh].id,25)
|
|
SET_VEHICLE_ENGINE_ON(vehs[mvf_trevor_veh].id,true,true)
|
|
endif
|
|
Hotswap_Menu(false,true,false)
|
|
bHotSwap = true
|
|
endif
|
|
|
|
if g_replay.iReplayInt[1] = 1
|
|
if IS_REPLAY_IN_PROGRESS()
|
|
and g_bShitskipAccepted
|
|
and( g_replayMissionStage = 3 or g_replayMissionStage = 2)
|
|
g_replay.iReplayInt[2] = 1
|
|
bHotSwap = false
|
|
endif
|
|
SET_CLOCK_TIME(14,00,0)
|
|
bMissedBackCS = true
|
|
eBOTH_dialogue = BOTH_WARN3
|
|
else
|
|
eBOTH_dialogue = BOTH_WARN2
|
|
SET_CLOCK_TIME(13,45,0)
|
|
endif
|
|
|
|
btimeReset = true
|
|
|
|
give_all_peds_earpiece()
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,0,trev(),"TREVOR",true)
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,1,mike(),"MICHAEL",true)
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,2,frank(),"FRANKLIN",true)
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,3,lester(),"LESTER",true)
|
|
|
|
heli_switch = TO_HELI
|
|
eTREV_Dialogue = T_di_THINKING
|
|
eMike_dialogue = M_di_TO_BACK
|
|
|
|
clear_area(GET_ENTITY_COORDS(player_ped_id()),50,true)
|
|
Point_Gameplay_cam_at_coord(get_entity_heading(player_ped_id()))
|
|
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(2,"Stage 2: Back of bank")
|
|
|
|
ENDPROC
|
|
PROC SU_3_GET_IN_POSITION()
|
|
|
|
SET_CLOCK_TIME(14,00,0)
|
|
|
|
//heli
|
|
vehs[mvf_helicopter].id = CREATE_VEHICLE(frogger2,<< 1758.3090, 3284.5278, 40.7 >>, 133.1852)
|
|
SET_VEHICLE_ENGINE_CAN_DEGRADE(vehs[mvf_helicopter].id,false)
|
|
SET_ENTITY_ALWAYS_PRERENDER(vehs[mvf_helicopter].id,true)
|
|
SET_VEHICLE_LIVERY(vehs[mvf_helicopter].id,1)
|
|
SET_ENTITY_COLLISION(vehs[mvf_helicopter].id,true)
|
|
FREEZE_ENTITY_POSITION(vehs[mvf_helicopter].id,true)
|
|
Unload_Asset_Model(sAssetData,frogger2)
|
|
bHasTrevSwitchConvoPlayed = TRUE
|
|
//michael
|
|
while not CREATE_PLAYER_VEHICLE(vehs[mvf_Michael_veh].id,CHAR_MICHAEL,vBACK_BANK,fHEADING_BACK)
|
|
wait(0)
|
|
endwhile
|
|
//franklin
|
|
while not CREATE_PLAYER_PED_INSIDE_VEHICLE(peds[mpf_franklin].id,CHAR_FRANKLIN,vehs[mvf_Michael_veh].id,VS_FRONT_RIGHT)
|
|
wait(0)
|
|
endwhile
|
|
while not CREATE_PLAYER_VEHICLE(vehs[mvf_trevor_veh].id,CHAR_TREVOR,<< 1768.0714, 3293.4478, 40.2011 >>,305.7980)
|
|
wait(0)
|
|
endwhile
|
|
REQUEST_CLIP_SET("move_lester_CaneUp")
|
|
while not HAS_CLIP_SET_LOADED("move_lester_CaneUp")
|
|
wait(0)
|
|
endwhile
|
|
|
|
if g_replay.iReplayInt[2] = 0
|
|
Set_Current_Player_Ped(SELECTOR_PED_MICHAEL,true)
|
|
peds[mpf_michael].id = player_ped_id()
|
|
|
|
while not CREATE_PLAYER_PED_INSIDE_VEHICLE(peds[mpf_trevor].id,CHAR_TREVOR,vehs[mvf_helicopter].id)
|
|
wait(0)
|
|
endwhile
|
|
//lester
|
|
while not CREATE_NPC_PED_INSIDE_VEHICLE(peds[mpf_lester].id,CHAR_LESTER,vehs[mvf_helicopter].id,VS_BACK_LEFT)
|
|
wait(0)
|
|
endwhile
|
|
SET_PED_PROP_INDEX(peds[mpf_lester].id, INT_TO_ENUM(PED_PROP_POSITION,1), 0, 0)
|
|
|
|
if IsEntityAlive(vehs[mvf_Michael_veh].id)
|
|
and IsEntityAlive(mike())
|
|
IF IS_REPLAY_BEING_SET_UP()
|
|
END_REPLAY_SETUP(vehs[mvf_Michael_veh].id)
|
|
Else
|
|
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), False)
|
|
SET_PED_INTO_VEHICLE(MIKE(),vehs[mvf_Michael_veh].id)
|
|
endif
|
|
endif
|
|
SET_PLAYER_CONTROL(player_id(),false,SPC_LEAVE_CAMERA_CONTROL_ON)
|
|
Hotswap_Menu(false,true,false)
|
|
bHotSwap = false
|
|
|
|
elif g_replay.iReplayInt[2] = 1
|
|
Set_Current_Player_Ped(SELECTOR_PED_TREVOR,true)
|
|
peds[mpf_trevor].id = player_ped_id()
|
|
if not IS_AUDIO_SCENE_ACTIVE("BS_1_FLY_TO_TRUCKS")
|
|
START_AUDIO_SCENE("BS_1_FLY_TO_TRUCKS")
|
|
endif
|
|
//mike
|
|
while not CREATE_PLAYER_PED_INSIDE_VEHICLE(peds[mpf_michael].id,CHAR_MICHAEL,vehs[mvf_Michael_veh].id)
|
|
wait(0)
|
|
endwhile
|
|
while not CREATE_NPC_PED_INSIDE_VEHICLE(peds[mpf_lester].id,CHAR_LESTER,vehs[mvf_helicopter].id,VS_BACK_LEFT)
|
|
wait(0)
|
|
endwhile
|
|
SET_PED_PROP_INDEX(peds[mpf_lester].id, INT_TO_ENUM(PED_PROP_POSITION,1), 0, 0)
|
|
//trev
|
|
if IsEntityAlive(vehs[mvf_helicopter].id)
|
|
and IsEntityAlive(TREV())
|
|
IF IS_REPLAY_BEING_SET_UP()
|
|
END_REPLAY_SETUP(vehs[mvf_helicopter].id)
|
|
Else
|
|
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), False)
|
|
SET_PED_INTO_VEHICLE(TREV(),vehs[mvf_helicopter].id)
|
|
endif
|
|
endif
|
|
|
|
Hotswap_Menu(false,true,false)
|
|
bHotSwap = true
|
|
endif
|
|
|
|
if g_replay.iReplayInt[1] = 1
|
|
if IS_REPLAY_IN_PROGRESS()
|
|
and g_bShitskipAccepted
|
|
and( g_replayMissionStage = 3 or g_replayMissionStage = 2)
|
|
g_replay.iReplayInt[2] = 1
|
|
bHotSwap = false
|
|
endif
|
|
SET_CLOCK_TIME(14,15,0)
|
|
eTREV_Dialogue = T_di_THINKING
|
|
bMissedBackCS = true
|
|
eBOTH_dialogue = BOTH_WARN3
|
|
else
|
|
SET_CLOCK_TIME(14,00,0)
|
|
eTREV_Dialogue = T_di_BRAD
|
|
eBOTH_dialogue = BOTH_WARN2
|
|
endif
|
|
|
|
btimeReset = true
|
|
give_all_peds_earpiece()
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,0,trev(),"TREVOR",true)
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,1,mike(),"MICHAEL",true)
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,2,frank(),"FRANKLIN",true)
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,3,lester(),"LESTER",true)
|
|
|
|
heli_switch = TO_TRUCKS
|
|
eMike_dialogue = M_di_TO_BACK
|
|
eBOTH_dialogue = BOTH_WARN3
|
|
|
|
clear_area(GET_ENTITY_COORDS(player_ped_id()),50,true)
|
|
FREEZE_ENTITY_POSITION(vehs[mvf_helicopter].id,false)
|
|
Point_Gameplay_cam_at_coord(get_entity_heading(player_ped_id()))
|
|
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(3,"Stage 3: Get in Position")
|
|
|
|
ENDPROC
|
|
PROC SU_4_HELI_FOLLOW_TRUCK()
|
|
|
|
Set_Current_Player_Ped(SELECTOR_PED_TREVOR,true)
|
|
peds[mpf_trevor].id = player_ped_id()
|
|
|
|
//create helicopter
|
|
vehs[mvf_helicopter].id = CREATE_VEHICLE(frogger2, <<1095.7894, -1421.1515,102.4156>>, 183.9259)
|
|
Unload_Asset_Model(sAssetData,frogger2)
|
|
SET_VEHICLE_ENGINE_CAN_DEGRADE(vehs[mvf_helicopter].id,false)
|
|
SET_ENTITY_ALWAYS_PRERENDER(vehs[mvf_helicopter].id,true)
|
|
SET_VEHICLE_ENGINE_ON(vehs[mvf_helicopter].id,true,true)
|
|
SET_HELI_BLADES_FULL_SPEED(vehs[mvf_helicopter].id)
|
|
SET_VEHICLE_LIVERY(vehs[mvf_helicopter].id,1)
|
|
FREEZE_ENTITY_POSITION(vehs[mvf_helicopter].id, true)
|
|
|
|
NEW_LOAD_SCENE_START_SPHERE(<<1079.2714, -1998.5048, 46.6193>>, 100)
|
|
IF IS_NEW_LOAD_SCENE_ACTIVE()
|
|
WHILE NOT IS_NEW_LOAD_SCENE_LOADED()
|
|
PRINTLN("@@@@@@@@ WHILE NOT IS_NEW_LOAD_SCENE_LOADED() @@@@@@@@@@@")
|
|
WAIT(0)
|
|
ENDWHILE
|
|
ENDIF
|
|
REQUEST_VEHICLE_RECORDING(001,"FH1UBER")
|
|
while not HAS_VEHICLE_RECORDING_BEEN_LOADED(001,"FH1UBER")
|
|
wait(0)
|
|
endwhile
|
|
//place trevor in the correct place ready for hot swap
|
|
|
|
//create security truck and driver
|
|
vehs[mvf_security_truck].id = CREATE_VEHICLE(STOCKADE,<< 1025.5339, -1756.0054, 35.2748 >>, 81.9993)
|
|
peds[mpf_securityDriver].id = CREATE_PED_INSIDE_VEHICLE(vehs[mvf_security_truck].id,PEDTYPE_MISSION,S_M_M_ARMOURED_01)
|
|
SET_PED_COMPONENT_VARIATION(peds[mpf_securityDriver].id, PED_COMP_HEAD, 0, 0)
|
|
//place lester in helicopter
|
|
while not CREATE_NPC_PED_INSIDE_VEHICLE(peds[mpf_lester].id,CHAR_LESTER,vehs[mvf_helicopter].id,VS_BACK_LEFT)
|
|
wait(0)
|
|
endwhile
|
|
SET_PED_PROP_INDEX(peds[mpf_lester].id, INT_TO_ENUM(PED_PROP_POSITION,1), 0, 0)
|
|
//michael
|
|
while not CREATE_PLAYER_VEHICLE(vehs[mvf_Michael_veh].id,CHAR_MICHAEL,vBACK_BANK,fHEADING_BACK)
|
|
wait(0)
|
|
endwhile
|
|
while not CREATE_PLAYER_PED_INSIDE_VEHICLE(peds[mpf_michael].id,CHAR_MICHAEL,vehs[mvf_Michael_veh].id)
|
|
wait(0)
|
|
endwhile
|
|
//franklin
|
|
while not CREATE_PLAYER_PED_INSIDE_VEHICLE(peds[mpf_franklin].id,CHAR_FRANKLIN,vehs[mvf_Michael_veh].id,VS_FRONT_RIGHT)
|
|
wait(0)
|
|
endwhile
|
|
REQUEST_CLIP_SET("move_lester_CaneUp")
|
|
while not HAS_CLIP_SET_LOADED("move_lester_CaneUp")
|
|
wait(0)
|
|
endwhile
|
|
|
|
IF IS_REPLAY_BEING_SET_UP()
|
|
END_REPLAY_SETUP(vehs[mvf_helicopter].id)
|
|
Else
|
|
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), False)
|
|
SET_PED_INTO_VEHICLE(TREV(),vehs[mvf_helicopter].id)
|
|
endif
|
|
FREEZE_ENTITY_POSITION(vehs[mvf_helicopter].id,false)
|
|
uber_state = UBER_INIT
|
|
bTruckSkipForward = true
|
|
give_all_peds_earpiece()
|
|
print_now("FH1_TRUCK",DEFAULT_GOD_TEXT_TIME,1)
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,0,trev(),"TREVOR",true)
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,1,mike(),"MICHAEL",true)
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,2,frank(),"FRANKLIN",true)
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,3,lester(),"LESTER",true)
|
|
clear_area(<< 1041.8492, -1773.0105,110.6172 >>,300,true)
|
|
ENDPROC
|
|
PROC SU_5_CONSTRUCTION_HOLE()
|
|
Set_Current_Player_Ped(SELECTOR_PED_TREVOR,true)
|
|
peds[mpf_trevor].id = player_ped_id()
|
|
|
|
//create helicopter
|
|
vehs[mvf_helicopter].id = CREATE_VEHICLE(frogger2,<<-76.4238, -528.6735, 87.5 >>,176.7705)
|
|
Unload_Asset_Model(sAssetData,frogger2)
|
|
SET_VEHICLE_ENGINE_CAN_DEGRADE(vehs[mvf_helicopter].id,false)
|
|
SET_ENTITY_ALWAYS_PRERENDER(vehs[mvf_helicopter].id,true)
|
|
SET_VEHICLE_ENGINE_ON(vehs[mvf_helicopter].id,true,true)
|
|
SET_HELI_BLADES_FULL_SPEED(vehs[mvf_helicopter].id)
|
|
SET_VEHICLE_LIVERY(vehs[mvf_helicopter].id,1)
|
|
FREEZE_ENTITY_POSITION(vehs[mvf_helicopter].id, true)
|
|
|
|
|
|
interior_constuction = GET_INTERIOR_AT_COORDS(<< 12.8829, -634.9265, 15.0884>>)
|
|
IF IS_VALID_INTERIOR(interior_constuction)
|
|
PIN_INTERIOR_IN_MEMORY(interior_constuction)
|
|
endif
|
|
while not IS_INTERIOR_READY(interior_constuction)
|
|
wait(0)
|
|
endwhile
|
|
//place lester in helicopter
|
|
while not CREATE_NPC_PED_INSIDE_VEHICLE(peds[mpf_lester].id,CHAR_LESTER,vehs[mvf_helicopter].id,VS_BACK_LEFT)
|
|
wait(0)
|
|
endwhile
|
|
SET_PED_PROP_INDEX(peds[mpf_lester].id, INT_TO_ENUM(PED_PROP_POSITION,1), 0, 0)
|
|
//michael
|
|
while not CREATE_PLAYER_VEHICLE(vehs[mvf_Michael_veh].id,CHAR_MICHAEL,vBACK_BANK,fHEADING_BACK)
|
|
wait(0)
|
|
endwhile
|
|
while not CREATE_PLAYER_PED_INSIDE_VEHICLE(peds[mpf_michael].id,CHAR_MICHAEL,vehs[mvf_Michael_veh].id)
|
|
wait(0)
|
|
endwhile
|
|
//franklin
|
|
while not CREATE_PLAYER_PED_INSIDE_VEHICLE(peds[mpf_franklin].id,CHAR_FRANKLIN,vehs[mvf_Michael_veh].id,VS_FRONT_RIGHT)
|
|
wait(0)
|
|
endwhile
|
|
REQUEST_CLIP_SET("move_lester_CaneUp")
|
|
while not HAS_CLIP_SET_LOADED("move_lester_CaneUp")
|
|
wait(0)
|
|
endwhile
|
|
|
|
IF IS_REPLAY_BEING_SET_UP()
|
|
END_REPLAY_SETUP(vehs[mvf_helicopter].id)
|
|
Else
|
|
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), False)
|
|
SET_PED_INTO_VEHICLE(TREV(),vehs[mvf_helicopter].id)
|
|
endif
|
|
|
|
FREEZE_ENTITY_POSITION(vehs[mvf_helicopter].id,false)
|
|
|
|
give_all_peds_earpiece()
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,0,trev(),"TREVOR",true)
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,1,mike(),"MICHAEL",true)
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,2,frank(),"FRANKLIN",true)
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,3,lester(),"LESTER",true)
|
|
|
|
iSFstage = 0
|
|
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
|
|
SET_GAMEPLAY_CAM_RELATIVE_PITCH()
|
|
CLEAR_AREA(<< -77.3855, -591.1019, 94.5943 >>,300,true)
|
|
|
|
ENDPROC
|
|
PROC SU_6_DROP_OFF_POINT()
|
|
Set_Current_Player_Ped(SELECTOR_PED_TREVOR,true)
|
|
peds[mpf_trevor].id = player_ped_id()
|
|
|
|
interior_constuction = GET_INTERIOR_AT_COORDS(<< 12.8829, -634.9265, 15.0884 >>)
|
|
IF IS_VALID_INTERIOR(interior_constuction)
|
|
PIN_INTERIOR_IN_MEMORY(interior_constuction)
|
|
endif
|
|
|
|
//create helicopter
|
|
vehs[mvf_helicopter].id = CREATE_VEHICLE(frogger2,<< 7.0467, -614.5734, 61.0681 >>,187.9638)
|
|
Unload_Asset_Model(sAssetData,frogger2)
|
|
SET_VEHICLE_ENGINE_CAN_DEGRADE(vehs[mvf_helicopter].id,false)
|
|
SET_ENTITY_ALWAYS_PRERENDER(vehs[mvf_helicopter].id,true)
|
|
SET_VEHICLE_ENGINE_ON(vehs[mvf_helicopter].id,true,true)
|
|
SET_HELI_BLADES_FULL_SPEED(vehs[mvf_helicopter].id)
|
|
SET_VEHICLE_LIVERY(vehs[mvf_helicopter].id,1)
|
|
FREEZE_ENTITY_POSITION(vehs[mvf_helicopter].id,true)
|
|
|
|
//place lester in helicopter
|
|
while not CREATE_NPC_PED_INSIDE_VEHICLE(peds[mpf_lester].id,CHAR_LESTER,vehs[mvf_helicopter].id,VS_BACK_LEFT)
|
|
wait(0)
|
|
endwhile
|
|
SET_PED_PROP_INDEX(peds[mpf_lester].id, INT_TO_ENUM(PED_PROP_POSITION,1), 0, 0)
|
|
//michael
|
|
while not CREATE_PLAYER_VEHICLE(vehs[mvf_Michael_veh].id,CHAR_MICHAEL,vBACK_BANK,fHEADING_BACK)
|
|
wait(0)
|
|
endwhile
|
|
while not CREATE_PLAYER_PED_INSIDE_VEHICLE(peds[mpf_michael].id,CHAR_MICHAEL,vehs[mvf_Michael_veh].id)
|
|
wait(0)
|
|
endwhile
|
|
//franklin
|
|
while not CREATE_PLAYER_PED_INSIDE_VEHICLE(peds[mpf_franklin].id,CHAR_FRANKLIN,vehs[mvf_Michael_veh].id,VS_FRONT_RIGHT)
|
|
wait(0)
|
|
endwhile
|
|
REQUEST_CLIP_SET("move_lester_CaneUp")
|
|
while not HAS_CLIP_SET_LOADED("move_lester_CaneUp")
|
|
wait(0)
|
|
endwhile
|
|
|
|
IF IS_REPLAY_BEING_SET_UP()
|
|
END_REPLAY_SETUP(vehs[mvf_helicopter].id)
|
|
Else
|
|
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), False)
|
|
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_helicopter].id)
|
|
SET_PED_INTO_VEHICLE(TREV(),vehs[mvf_helicopter].id)
|
|
ENDIF
|
|
endif
|
|
|
|
eTREV_Dialogue = T_di_END
|
|
eMike_dialogue = M_di_END
|
|
give_all_peds_earpiece()
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,0,trev(),"TREVOR",true)
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,1,mike(),"MICHAEL",true)
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,2,frank(),"FRANKLIN",true)
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,3,lester(),"LESTER",true)
|
|
|
|
FREEZE_ENTITY_POSITION(vehs[mvf_helicopter].id,false)
|
|
CLEAR_AREA(<< 59.2427, -572.2118, 72.9076 >>,300,true)
|
|
Point_Gameplay_cam_at_coord(get_entity_heading(player_ped_id()))
|
|
|
|
ENDPROC
|
|
PROC SU_PASSED()
|
|
if DOES_ENTITY_EXIST(player_ped_id())
|
|
if g_replay.iReplayInt[2] = 1
|
|
while not CREATE_PLAYER_VEHICLE(vehs[mvf_trevor_veh].id,CHAR_TREVOR,<<1759.5400, 3290.2327, 40.1387>>, 259.1121)
|
|
wait(0)
|
|
endwhile
|
|
|
|
vehs[mvf_helicopter].id = CREATE_VEHICLE(frogger2,<<1744.3944, 3269.2964, 40.2207>>, 359.9513)
|
|
Unload_Asset_Model(sAssetData,frogger2)
|
|
SET_VEHICLE_ENGINE_CAN_DEGRADE(vehs[mvf_helicopter].id,false)
|
|
SET_ENTITY_ALWAYS_PRERENDER(vehs[mvf_helicopter].id,true)
|
|
SET_VEHICLE_LIVERY(vehs[mvf_helicopter].id,1)
|
|
|
|
IF IS_REPLAY_BEING_SET_UP()
|
|
END_REPLAY_SETUP(vehs[mvf_helicopter].id)
|
|
else
|
|
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), False)
|
|
SET_PED_INTO_VEHICLE(trev(),vehs[mvf_helicopter].id)
|
|
ENDIF
|
|
else
|
|
Set_Current_Player_Ped(SELECTOR_PED_FRANKLIN,true)
|
|
peds[mpf_franklin].id = player_ped_id()
|
|
IF IS_REPLAY_BEING_SET_UP()
|
|
END_REPLAY_SETUP()
|
|
else
|
|
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), False)
|
|
endif
|
|
endif
|
|
endif
|
|
mission_passed()
|
|
endPROC
|
|
PROC MISSION_STAGE_SKIP()
|
|
//a skip has been made
|
|
IF bDoSkip = TRUE
|
|
|
|
//begin the skip if the switching is idle
|
|
if stageSwitch = STAGESWITCH_IDLE
|
|
if not IS_SCREEN_FADED_OUT()
|
|
IF NOT IS_SCREEN_FADING_OUT()
|
|
DO_SCREEN_FADE_OUT(1000)
|
|
ENDIF
|
|
else
|
|
Mission_Set_Stage(INT_TO_ENUM(MSF_MISSION_STAGE_FLAGS, iSkipToStage))
|
|
endif
|
|
|
|
//Needs to be carried out before states own entering stage
|
|
ELIF stageSwitch = STAGESWITCH_ENTERING
|
|
|
|
RENDER_SCRIPT_CAMS(false,false)
|
|
SET_PLAYER_CONTROL(player_id(), true)
|
|
|
|
RESET_EVERYTHING()
|
|
|
|
Start_Skip_Streaming(sAssetData)
|
|
DELETE_VEHICLE_GEN_VEHICLE(VEHGEN_WEB_HELIPAD_TREVOR_COUNTRY)
|
|
CLEAR_MUST_LEAVE_AREA_VEHICLE_GEN_FLAG(VEHGEN_WEB_HELIPAD_TREVOR_COUNTRY)
|
|
|
|
|
|
// -------------------------- Not a Replay ----------------------------
|
|
IF NOT IS_REPLAY_BEING_SET_UP()
|
|
VECTOR vWarpCoord
|
|
FLOAT fWarpHeading
|
|
GET_SKIP_STAGE_COORD_AND_HEADING(int_to_enum(msf_mission_stage_flags, iSkipToStage), vWarpCoord, fWarpHeading,g_replay.iReplayInt[2])
|
|
SET_ENTITY_COORDS(PLAYER_PED_ID(), vWarpCoord)
|
|
SET_ENTITY_HEADING(PLAYER_PED_ID(), fWarpHeading)
|
|
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), TRUE)
|
|
Load_Asset_NewLoadScene_Sphere(sAssetData, vWarpCoord, 25.0)
|
|
ENDIF
|
|
// --------------------------------------------------------------------
|
|
|
|
Load_asset_Stage(int_to_enum(MSF_MISSION_STAGE_FLAGS, mission_stage),true)
|
|
|
|
PRINTLN("ENTERING LOOP FOR SKIP STREAMING...")
|
|
WHILE NOT Update_Skip_Streaming(sAssetData)
|
|
WAIT(0)
|
|
ENDWHILE
|
|
PRINTLN("...EXITED LOOP FOR SKIP STREAMING")
|
|
|
|
//set up stage
|
|
SWITCH int_to_enum(MSF_MISSION_STAGE_FLAGS, mission_stage)
|
|
CASE msf_0_strip_club SU_0_STRIP_CLUB() break
|
|
CASE msf_1_font_of_bank SU_1_FONT_OF_BANK() BREAK
|
|
CASE msf_2_back_of_bank SU_2_BACK_OF_BANK() BREAK
|
|
case msf_3_get_in_position SU_3_GET_IN_POSITION() break
|
|
CASE msf_4_heli_follow_truck SU_4_HELI_FOLLOW_TRUCK() BREAK
|
|
CASE msf_5_CONSTRUCTION_HOLE SU_5_CONSTRUCTION_HOLE() break
|
|
CASE msf_6_drop_off_point SU_6_DROP_OFF_POINT() break
|
|
CASE msf_7_passed SU_PASSED() break
|
|
ENDSWITCH
|
|
|
|
SU_GENERAL()
|
|
bDoSkip = FALSE
|
|
IF NOT IS_REPLAY_BEING_SET_UP()
|
|
NEW_LOAD_SCENE_STOP()
|
|
endif
|
|
ENDIF
|
|
#if Is_debug_build
|
|
//Check is a skip being asked for, dont allow skip during setup stage
|
|
ELIF LAUNCH_MISSION_STAGE_MENU(zMenuNames, iSkipToStage, mission_stage, TRUE)
|
|
b_zskipped = true
|
|
g_replay.iReplayInt[0] = 0
|
|
g_replay.iReplayInt[1] = 0
|
|
if GET_PLAYER_PED_ENUM(player_ped_id()) = CHAR_MICHAEL
|
|
g_replay.iReplayInt[2] = 0
|
|
elif GET_PLAYER_PED_ENUM(player_ped_id()) = CHAR_TREVOR
|
|
g_replay.iReplayInt[2] = 1
|
|
endif
|
|
IF iSkipToStage > ENUM_TO_INT(msf_6_drop_off_point)
|
|
MISSION_PASSED()
|
|
ELSE
|
|
iSkipToStage = CLAMP_INT(iSkipToStage, 0, ENUM_TO_INT(MSF_NUM_OF_STAGES)-1)
|
|
if IS_SCREEN_FADED_IN()
|
|
DO_SCREEN_FADE_OUT(1000)
|
|
bDoSkip = true
|
|
endif
|
|
endif
|
|
#endif
|
|
ENDIF
|
|
ENDPROC
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
// MISSION CHECKS
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
BOOL bShowHelpOnce = FALSE
|
|
func bool Front_bank_CS()
|
|
|
|
IF iFrontCS_stage > 0
|
|
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_Michael_veh].id)
|
|
IF NOT IS_PED_IN_VEHICLE(MIKE(),vehs[mvf_Michael_veh].id)
|
|
OR GET_IS_TASK_ACTIVE(MIKE(),CODE_TASK_EXIT_VEHICLE)
|
|
CLEAR_PED_SECONDARY_TASK(MIKE())
|
|
IF IS_ENTITY_PLAYING_ANIM(MIKE(),"missbigscore1_mcs1","michael_bss_1_mcs_1")
|
|
STOP_ANIM_TASK(MIKE(),"missbigscore1_mcs1","michael_bss_1_mcs_1")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF NOT IS_PED_IN_VEHICLE(FRANK(),vehs[mvf_Michael_veh].id)
|
|
OR GET_IS_TASK_ACTIVE(FRANK(),CODE_TASK_EXIT_VEHICLE)
|
|
CLEAR_PED_SECONDARY_TASK(FRANK())
|
|
IF IS_ENTITY_PLAYING_ANIM(FRANK(),"missbigscore1_mcs1","franklin_bss_1_mcs_1")
|
|
STOP_ANIM_TASK(FRANK(),"missbigscore1_mcs1","franklin_bss_1_mcs_1")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
switch iFrontCS_stage
|
|
case 0
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_MCS1",CONV_PRIORITY_VERY_HIGH)
|
|
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_Michael_veh].id)
|
|
IF IS_PED_IN_VEHICLE(MIKE(),vehs[mvf_Michael_veh].id)
|
|
TASK_PLAY_ANIM(MIKE(),"missbigscore1_mcs1","michael_bss_1_mcs_1",NORMAL_BLEND_IN,WALK_BLEND_OUT,-1,AF_SECONDARY)
|
|
TASK_PLAY_ANIM(FRANK(),"missbigscore1_mcs1","franklin_bss_1_mcs_1",NORMAL_BLEND_IN,WALK_BLEND_OUT,-1,AF_SECONDARY)
|
|
|
|
IF GET_FOLLOW_VEHICLE_CAM_VIEW_MODE() != CAM_VIEW_MODE_THIRD_PERSON_NEAR
|
|
AND GET_FOLLOW_VEHICLE_CAM_VIEW_MODE() != CAM_VIEW_MODE_THIRD_PERSON_FAR
|
|
AND GET_FOLLOW_VEHICLE_CAM_VIEW_MODE() != CAM_VIEW_MODE_THIRD_PERSON_MEDIUM
|
|
AND GET_FOLLOW_VEHICLE_CAM_VIEW_MODE() != CAM_VIEW_MODE_FIRST_PERSON
|
|
eSavedMode = GET_FOLLOW_VEHICLE_CAM_VIEW_MODE()
|
|
SET_FOLLOW_VEHICLE_CAM_VIEW_MODE(CAM_VIEW_MODE_THIRD_PERSON_MEDIUM)
|
|
ELSE
|
|
eSavedMode = NUM_CAM_VIEW_MODES
|
|
ENDIF
|
|
|
|
REPLAY_RECORD_BACK_FOR_TIME(0.0, 12.0, REPLAY_IMPORTANCE_HIGHEST)
|
|
|
|
cameraIndex = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED,<<0.2,-733.7,45.3>>,<<10.6,0,-14.2>>,40)fshakeAmp = 0.35
|
|
SHAKE_CAM(cameraIndex,"HAND_SHAKE",fshakeAmp)
|
|
SET_CAM_ACTIVE(cameraIndex,true)
|
|
ihintstage = 0
|
|
SET_CINEMATIC_BUTTON_ACTIVE(FALSE)
|
|
bHint_camOn = false
|
|
eMike_dialogue = M_di_NONE
|
|
eDialogue_stateM = DI_START_CONDITION_MIKE
|
|
bShowHelpOnce = FALSE
|
|
iFrontCS_stage++
|
|
ENDIF
|
|
ENDIF
|
|
endif
|
|
break
|
|
case 1
|
|
IF NOT IS_PED_IN_VEHICLE(MIKE(),vehs[mvf_Michael_veh].id)
|
|
CLEAR_PED_SECONDARY_TASK(MIKE())
|
|
CLEAR_PED_SECONDARY_TASK(FRANK())
|
|
ENDIF
|
|
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
CLEAR_PED_SECONDARY_TASK(MIKE())
|
|
CLEAR_PED_SECONDARY_TASK(FRANK())
|
|
RENDER_SCRIPT_CAMS(false,false)
|
|
CLEAR_HELP(false)
|
|
iFrontCS_stage++
|
|
else
|
|
|
|
if IS_ENTITY_IN_ANGLED_AREA(vehs[mvf_Michael_veh].id,<<-2.55928, -743.97137, 45>>,<<-14.34047, -739.44629, 43.15934>>,4.46)
|
|
and IS_PED_IN_VEHICLE(MIKE(),vehs[mvf_Michael_veh].id)
|
|
and not GET_IS_TASK_ACTIVE(MIKE(),CODE_TASK_EXIT_VEHICLE)
|
|
|
|
if not bHint_camOn
|
|
if IS_ENTITY_IN_ANGLED_AREA(vehs[mvf_Michael_veh].id,<<-2.55928, -743.97137, 45>>,<<-14.34047, -739.44629, 43.15934>>,4.46)
|
|
IF bShowHelpOnce = FALSE
|
|
PRINT_HELP("FH1_FBHELP")
|
|
bShowHelpOnce = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
endif
|
|
|
|
if (GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_IN_VEHICLE) != CAM_VIEW_MODE_FIRST_PERSON
|
|
AND SHOULD_CONTROL_CHASE_HINT_CAM(sHintCamStruct, false))
|
|
OR (GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_IN_VEHICLE) = CAM_VIEW_MODE_FIRST_PERSON
|
|
AND NOT bHint_camOn
|
|
AND IS_DISABLED_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_VEH_CIN_CAM)
|
|
AND GET_GAME_TIMER() > iFrontBankDelay)
|
|
clear_Area(<<-3.72364, -751.49194, 44.46628>>,5.5,true)
|
|
if not bHint_camOn
|
|
if IS_AUDIO_SCENE_ACTIVE("BS_1_BANK_CHECK_OUT")
|
|
STOP_AUDIO_SCENE("BS_1_BANK_CHECK_OUT")
|
|
endif
|
|
if not IS_AUDIO_SCENE_ACTIVE("BS_1_BANK_HINT_CAM")
|
|
START_AUDIO_SCENE("BS_1_BANK_HINT_CAM")
|
|
endif
|
|
|
|
//Add delay for turning on / off camera
|
|
iFrontBankDelay = GET_GAME_TIMER() + 500
|
|
|
|
REPLAY_RECORD_BACK_FOR_TIME(5.0, 10.0, REPLAY_IMPORTANCE_HIGHEST)
|
|
|
|
PRINTLN("FRONT BANK CAM ON!")
|
|
|
|
// SET_PLAYER_CONTROL(player_id(),false,SPC_DONT_STOP_OTHER_CARS_AROUND_PLAYER)
|
|
RENDER_SCRIPT_CAMS(true,false)
|
|
DISPLAY_RADAR(false)
|
|
display_hud(false)
|
|
if IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
and not IS_HELP_MESSAGE_FADING_OUT()
|
|
CLEAR_HELP(false)
|
|
endif
|
|
bHint_camOn = true
|
|
endif
|
|
elif (GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_IN_VEHICLE) != CAM_VIEW_MODE_FIRST_PERSON
|
|
AND not SHOULD_CONTROL_CHASE_HINT_CAM(sHintCamStruct, false))
|
|
OR ( GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_IN_VEHICLE) = CAM_VIEW_MODE_FIRST_PERSON
|
|
AND bHint_camOn
|
|
AND IS_DISABLED_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_VEH_CIN_CAM)
|
|
AND GET_GAME_TIMER() > iFrontBankDelay)
|
|
if bHint_camOn
|
|
if not IS_AUDIO_SCENE_ACTIVE("BS_1_BANK_CHECK_OUT")
|
|
START_AUDIO_SCENE("BS_1_BANK_CHECK_OUT")
|
|
endif
|
|
if IS_AUDIO_SCENE_ACTIVE("BS_1_BANK_HINT_CAM")
|
|
STOP_AUDIO_SCENE("BS_1_BANK_HINT_CAM")
|
|
endif
|
|
|
|
PRINTLN("FRONT BANK CAM OFF!")
|
|
|
|
//Add delay for turning on / off camera
|
|
iFrontBankDelay = GET_GAME_TIMER() + 500
|
|
|
|
RENDER_SCRIPT_CAMS(false,false)
|
|
DISPLAY_RADAR(true)
|
|
display_hud(true)
|
|
// SET_PLAYER_CONTROL(player_id(),true)
|
|
bHint_camOn = false
|
|
endif
|
|
endif
|
|
else
|
|
if IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
and not IS_HELP_MESSAGE_FADING_OUT()
|
|
CLEAR_HELP(false)
|
|
endif
|
|
RENDER_SCRIPT_CAMS(false,false)
|
|
DISPLAY_RADAR(true)
|
|
display_hud(true)
|
|
SET_PLAYER_CONTROL(player_id(),true)
|
|
endif
|
|
endif
|
|
break
|
|
case 2
|
|
|
|
break
|
|
endswitch
|
|
|
|
if iFrontCS_stage = 2
|
|
|
|
IF eSavedMode != NUM_CAM_VIEW_MODES
|
|
IF NOT localChaseHintCamStruct.bHintInterpingBack
|
|
AND NOT IS_GAMEPLAY_HINT_ACTIVE()
|
|
SET_FOLLOW_VEHICLE_CAM_VIEW_MODE(eSavedMode)
|
|
eSavedMode = NUM_CAM_VIEW_MODES
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RENDER_SCRIPT_CAMS(false,false)
|
|
DISPLAY_RADAR(true)
|
|
display_hud(true)
|
|
SET_CINEMATIC_BUTTON_ACTIVE(true)
|
|
SET_PLAYER_CONTROL(player_id(),true)
|
|
Unload_Asset_Anim_Dict(sAssetData,"missbigscore1_mcs1")
|
|
return true
|
|
endif
|
|
|
|
IF DOES_ENTITY_EXIST(peds[mpf_guardF].id)
|
|
if not IS_PED_HEADTRACKING_PED(MIKE(),peds[mpf_guardF].id)
|
|
TASK_LOOK_AT_ENTITY(MIKE(),peds[mpf_guardF].id,-1, SLF_WHILE_NOT_IN_FOV | SLF_WIDEST_YAW_LIMIT)
|
|
endif
|
|
if not IS_PED_HEADTRACKING_PED(FRANK(),peds[mpf_guardF].id)
|
|
TASK_LOOK_AT_ENTITY(FRANK(),peds[mpf_guardF].id,-1, SLF_WHILE_NOT_IN_FOV | SLF_WIDEST_YAW_LIMIT)
|
|
endif
|
|
ENDIF
|
|
|
|
|
|
return false
|
|
endfunc
|
|
Proc AUDIO_Interrupt()
|
|
switch eInterruptstage
|
|
case INTERRUPT_NONE
|
|
|
|
break
|
|
|
|
case INTERRUPT_STORE_CURRENT
|
|
if IS_SCRIPTED_CONVERSATION_ONGOING()
|
|
eSavedChar = GET_CURRENT_PLAYER_PED_ENUM()
|
|
lbl_Interrupt = GET_STANDARD_CONVERSATION_LABEL_FOR_FUTURE_RESUMPTION()
|
|
lbl_root = GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_ROOT()
|
|
CPRINTLN(DEBUG_MISSION,"***** eSavedChar:", eSavedChar, " *****INTERRUPT_STORE_CURRENT****************: ",lbl_Interrupt," ",lbl_root)
|
|
if not IS_STRING_NULL_OR_EMPTY(lbl_Interrupt)
|
|
and not IS_STRING_NULL_OR_EMPTY(lbl_root)
|
|
AND NOT ARE_STRINGS_EQUAL(lbl_Interrupt, "NULL")
|
|
AND NOT ARE_STRINGS_EQUAL(lbl_root, "NULL")
|
|
CPRINTLN(DEBUG_MISSION,"INTERRUPT_KILL_CURRENT")
|
|
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()//KILL_ANY_CONVERSATION()
|
|
eInterruptstage = INTERRUPT_KILL_CURRENT
|
|
endif
|
|
else
|
|
eInterruptstage = INTERRUPTOR_SAFE
|
|
endif
|
|
break
|
|
|
|
case INTERRUPT_KILL_CURRENT
|
|
if IS_SAFE_TO_DISPLAY_GODTEXT()
|
|
CPRINTLN(DEBUG_MISSION,"****************INTERRUPT_KILL_CURRENT*******************: ",lbl_Interrupt," ",lbl_root)
|
|
eInterruptstage = INTERRUPTOR_SAFE
|
|
endif
|
|
break
|
|
|
|
case INTERRUPTOR_SAFE
|
|
CPRINTLN(DEBUG_MISSION,"*******************INTERRUPTOR_SAFE********************: ",lbl_Interrupt," ",lbl_root)
|
|
//used for safe to start interrupting convo
|
|
break
|
|
|
|
case INTERRUPT_RESTART_READY
|
|
CPRINTLN(DEBUG_MISSION,"***** eSavedChar:", eSavedChar, " ******** GET_CURRENT_PLAYER_PED_ENUM: ", GET_CURRENT_PLAYER_PED_ENUM()," ***********INTERRUPT_COMING*********************: ",lbl_Interrupt," ",lbl_root)
|
|
IF eSavedChar = GET_CURRENT_PLAYER_PED_ENUM()
|
|
AND NOT IS_PLAYER_SWITCH_IN_PROGRESS()
|
|
AND IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
if not IS_STRING_NULL_OR_EMPTY(lbl_Interrupt)
|
|
and not IS_STRING_NULL_OR_EMPTY(lbl_root)
|
|
AND NOT ARE_STRINGS_EQUAL(lbl_Interrupt, "NULL")
|
|
AND NOT ARE_STRINGS_EQUAL(lbl_root, "NULL")
|
|
if IS_SAFE_TO_DISPLAY_GODTEXT()
|
|
and not IS_SCRIPTED_CONVERSATION_ONGOING()
|
|
if get_Game_timer() - iInterrupt_restart_delay > INTERRUPT_RESTART_DELAY
|
|
CPRINTLN(DEBUG_MISSION,"************************INTERRUPT_RESTART_GO*********************: ",lbl_Interrupt," ",lbl_root)
|
|
if CREATE_CONVERSATION_FROM_SPECIFIC_LINE(convo_struct,"FH1AUD",lbl_root,lbl_Interrupt,CONV_PRIORITY_MEDIUM)
|
|
lbl_Interrupt = ""
|
|
lbl_root = ""
|
|
eInterruptstage = INTERRUPT_RESTART_PlAYING
|
|
endif
|
|
endif
|
|
else
|
|
iInterrupt_restart_delay = get_game_timer()
|
|
endif
|
|
else
|
|
lbl_Interrupt = ""
|
|
lbl_root = ""
|
|
eInterruptstage = INTERRUPT_NONE
|
|
endif
|
|
ELSE
|
|
if IS_STRING_NULL_OR_EMPTY(lbl_Interrupt)
|
|
OR IS_STRING_NULL_OR_EMPTY(lbl_root)
|
|
OR ARE_STRINGS_EQUAL(lbl_Interrupt, "NULL")
|
|
OR ARE_STRINGS_EQUAL(lbl_root, "NULL")
|
|
lbl_Interrupt = ""
|
|
lbl_root = ""
|
|
eInterruptstage = INTERRUPT_NONE
|
|
endif
|
|
ENDIF
|
|
break
|
|
case INTERRUPT_RESTART_PlAYING
|
|
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
eInterruptstage = INTERRUPT_NONE
|
|
endif
|
|
break
|
|
endswitch
|
|
endproc
|
|
proc AUDIO_manange_dialogue()
|
|
if not sCamDetails.bRun
|
|
//╞═══════════════════════════════════════════════════════════ TREV ══════════════════════════════════════════════════════════════╡
|
|
if PLAYER_PED_ID() = TREV()
|
|
switch eTREV_Dialogue
|
|
|
|
//╞═══════════════════════════════════════ FILL 1 ═════════════════════════════════════════════╡
|
|
case T_di_FILL1
|
|
switch eDialogue_stateT
|
|
|
|
case DI_START_CONDITION_TREVOR
|
|
if b_TREVSpeechSwitchStopped
|
|
if not IS_MESSAGE_BEING_DISPLAYED()
|
|
and eInterruptstage = INTERRUPT_NONE
|
|
if CREATE_CONVERSATION_FROM_SPECIFIC_LINE(convo_struct,"FH1AUD",lbl_TREVSwitchroot,lbl_TREVSWITCHInterrupt,CONV_PRIORITY_MEDIUM)
|
|
b_convo_paused = false
|
|
lbl_TREVswitchInterrupt = ""
|
|
lbl_TREVswitchroot = ""
|
|
b_TREVSpeechSwitchStopped = false
|
|
eDialogue_stateT = DI_RUNNING_DIALOGUE_TREVOR
|
|
endif
|
|
endif
|
|
else
|
|
if not IS_MESSAGE_BEING_DISPLAYED()
|
|
and not Is_clock_time_less_than_or_equal(12,15)
|
|
b_convo_paused = false
|
|
iDialogueTimer = GET_GAME_TIMER()
|
|
eDialogue_stateT = DI_TRIGGER_DIALOGUE_TREVOR
|
|
endif
|
|
endif
|
|
break
|
|
|
|
case DI_TRIGGER_DIALOGUE_TREVOR
|
|
if IS_PED_IN_ANY_VEHICLE(trev())
|
|
if IS_PED_IN_VEHICLE(lester(),GET_VEHICLE_PED_IS_IN(trev()))
|
|
if GET_GAME_TIMER() - iDialogueTimer > 3000
|
|
and IS_SAFE_TO_DISPLAY_GODTEXT()
|
|
and eInterruptstage = INTERRUPT_NONE
|
|
if CREATE_CONVERSATION(convo_struct, "FH1AUD", "FH1_TFILL1", CONV_PRIORITY_MEDIUM)
|
|
eDialogue_stateT = DI_RUNNING_DIALOGUE_TREVOR
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
break
|
|
|
|
case DI_RUNNING_DIALOGUE_TREVOR
|
|
if eInterruptstage = INTERRUPT_NONE
|
|
if IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
if IS_PED_IN_ANY_VEHICLE(trev())
|
|
if IS_PED_IN_VEHICLE(lester(),GET_VEHICLE_PED_IS_IN(trev()))
|
|
if b_convo_paused
|
|
PAUSE_FACE_TO_FACE_CONVERSATION(false)
|
|
b_convo_paused = false
|
|
endif
|
|
else
|
|
if not b_convo_paused
|
|
PAUSE_FACE_TO_FACE_CONVERSATION(true)
|
|
b_convo_paused = true
|
|
endif
|
|
endif
|
|
else
|
|
if not b_convo_paused
|
|
PAUSE_FACE_TO_FACE_CONVERSATION(true)
|
|
b_convo_paused = true
|
|
endif
|
|
endif
|
|
else
|
|
eDialogue_stateT = DI_EXIT_DIALOGUE_TREVOR
|
|
endif
|
|
endif
|
|
break
|
|
|
|
case DI_EXIT_DIALOGUE_TREVOR
|
|
lbl_TREVswitchInterrupt = ""
|
|
lbl_TREVswitchroot = ""
|
|
b_TREVSpeechSwitchStopped = false
|
|
eTREV_Dialogue = T_di_FILL2
|
|
eDialogue_stateT = DI_START_CONDITION_TREVOR
|
|
iDialogueTimer = GET_GAME_TIMER()
|
|
break
|
|
|
|
endswitch
|
|
break
|
|
//╞═══════════════════════════════════════ FILL 2 ═════════════════════════════════════════════╡
|
|
case T_di_FILL2
|
|
switch eDialogue_stateT
|
|
|
|
case DI_START_CONDITION_TREVOR
|
|
PRINTLN("@@@@@@@@@@@@ DI_START_CONDITION @@@@@@@@@@@@")
|
|
if b_TREVSpeechSwitchStopped
|
|
if not IS_MESSAGE_BEING_DISPLAYED()
|
|
and eInterruptstage = INTERRUPT_NONE
|
|
if CREATE_CONVERSATION_FROM_SPECIFIC_LINE(convo_struct,"FH1AUD",lbl_TREVSwitchroot,lbl_TREVSWITCHInterrupt,CONV_PRIORITY_MEDIUM)
|
|
b_convo_paused = false
|
|
lbl_TREVswitchInterrupt = ""
|
|
lbl_TREVswitchroot = ""
|
|
b_TREVSpeechSwitchStopped = false
|
|
eDialogue_stateT = DI_RUNNING_DIALOGUE_TREVOR
|
|
endif
|
|
endif
|
|
else
|
|
if not IS_MESSAGE_BEING_DISPLAYED()
|
|
and not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
b_convo_paused = false
|
|
iDialogueTimer = GET_GAME_TIMER()
|
|
eDialogue_stateT = DI_TRIGGER_DIALOGUE_TREVOR
|
|
endif
|
|
endif
|
|
break
|
|
|
|
case DI_TRIGGER_DIALOGUE_TREVOR
|
|
PRINTLN("@@@@@@@@@@@@ DI_TRIGGER_DIALOGUE @@@@@@@@@@@@")
|
|
if IS_PED_IN_ANY_VEHICLE(trev())
|
|
if IS_PED_IN_VEHICLE(lester(),GET_VEHICLE_PED_IS_IN(trev()))
|
|
if not IS_MESSAGE_BEING_DISPLAYED()
|
|
and eInterruptstage = INTERRUPT_NONE
|
|
if CREATE_CONVERSATION(convo_struct, "FH1AUD", "FH1_TALK4", CONV_PRIORITY_MEDIUM)
|
|
eDialogue_stateT = DI_RUNNING_DIALOGUE_TREVOR
|
|
endif
|
|
endif
|
|
ENDIF
|
|
endif
|
|
break
|
|
case DI_RUNNING_DIALOGUE_TREVOR
|
|
PRINTLN("@@@@@@@@@@@@ DI_RUNNING_DIALOGUE @@@@@@@@@@@@")
|
|
if eInterruptstage = INTERRUPT_NONE
|
|
if IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
if IS_PED_IN_ANY_VEHICLE(trev())
|
|
if IS_PED_IN_VEHICLE(lester(),GET_VEHICLE_PED_IS_IN(trev()))
|
|
if b_convo_paused
|
|
PAUSE_FACE_TO_FACE_CONVERSATION(false)
|
|
b_convo_paused = false
|
|
endif
|
|
else
|
|
if not b_convo_paused
|
|
PAUSE_FACE_TO_FACE_CONVERSATION(true)
|
|
b_convo_paused = true
|
|
endif
|
|
endif
|
|
else
|
|
if not b_convo_paused
|
|
PAUSE_FACE_TO_FACE_CONVERSATION(true)
|
|
b_convo_paused = true
|
|
endif
|
|
endif
|
|
else
|
|
eDialogue_stateT = DI_EXIT_DIALOGUE_TREVOR
|
|
endif
|
|
endif
|
|
break
|
|
|
|
case DI_EXIT_DIALOGUE_TREVOR
|
|
PRINTLN("@@@@@@@@@@@@ DI_EXIT_DIALOGUE @@@@@@@@@@@@")
|
|
lbl_TREVswitchInterrupt = ""
|
|
lbl_TREVswitchroot = ""
|
|
b_TREVSpeechSwitchStopped = false
|
|
eTREV_Dialogue = T_di_THINKING
|
|
eDialogue_stateT = DI_START_CONDITION_TREVOR
|
|
iDialogueTimer = GET_GAME_TIMER()
|
|
break
|
|
endswitch
|
|
break
|
|
//╞═══════════════════════════════════════ BRAD ═════════════════════════════════════════════╡
|
|
case T_di_BRAD
|
|
switch eDialogue_stateT
|
|
case DI_START_CONDITION_TREVOR
|
|
if b_TREVSpeechSwitchStopped
|
|
if not IS_MESSAGE_BEING_DISPLAYED()
|
|
and eInterruptstage = INTERRUPT_NONE
|
|
if CREATE_CONVERSATION_FROM_SPECIFIC_LINE(convo_struct,"FH1AUD",lbl_TREVSwitchroot,lbl_TREVSWITCHInterrupt,CONV_PRIORITY_MEDIUM)
|
|
b_convo_paused = false
|
|
lbl_TREVswitchInterrupt = ""
|
|
lbl_TREVswitchroot = ""
|
|
b_TREVSpeechSwitchStopped = false
|
|
eDialogue_stateT = DI_RUNNING_DIALOGUE_TREVOR
|
|
endif
|
|
endif
|
|
else
|
|
if not IS_MESSAGE_BEING_DISPLAYED()
|
|
if not Is_clock_time_less_than_or_equal(14,00)
|
|
or g_replay.iReplayInt[1] = 1
|
|
b_convo_paused = false
|
|
iDialogueTimer = GET_GAME_TIMER()
|
|
eDialogue_stateT = DI_TRIGGER_DIALOGUE_TREVOR
|
|
endif
|
|
endif
|
|
endif
|
|
break
|
|
|
|
case DI_TRIGGER_DIALOGUE_TREVOR
|
|
//TRIGGER BRAD STUFF
|
|
if IS_PED_IN_ANY_VEHICLE(trev())
|
|
if IS_PED_IN_VEHICLE(lester(),GET_VEHICLE_PED_IS_IN(trev()))
|
|
if GET_GAME_TIMER() - iDialogueTimer > 3000
|
|
and not IS_MESSAGE_BEING_DISPLAYED()
|
|
and eInterruptstage = INTERRUPT_NONE
|
|
if CREATE_CONVERSATION(convo_struct, "FH1AUD", "FH1_TALK4b", CONV_PRIORITY_MEDIUM)
|
|
eDialogue_stateT = DI_RUNNING_DIALOGUE_TREVOR
|
|
endif
|
|
endif
|
|
endif
|
|
ENDIF
|
|
break
|
|
|
|
case DI_RUNNING_DIALOGUE_TREVOR
|
|
if eInterruptstage = INTERRUPT_NONE
|
|
if IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
if IS_PED_IN_ANY_VEHICLE(trev())
|
|
if IS_PED_IN_VEHICLE(lester(),GET_VEHICLE_PED_IS_IN(trev()))
|
|
if b_convo_paused
|
|
PAUSE_FACE_TO_FACE_CONVERSATION(false)
|
|
b_convo_paused = false
|
|
endif
|
|
else
|
|
if not b_convo_paused
|
|
PAUSE_FACE_TO_FACE_CONVERSATION(true)
|
|
b_convo_paused = true
|
|
endif
|
|
endif
|
|
else
|
|
if not b_convo_paused
|
|
PAUSE_FACE_TO_FACE_CONVERSATION(true)
|
|
b_convo_paused = true
|
|
endif
|
|
endif
|
|
else
|
|
eDialogue_stateT = DI_EXIT_DIALOGUE_TREVOR
|
|
endif
|
|
endif
|
|
break
|
|
|
|
case DI_EXIT_DIALOGUE_TREVOR
|
|
lbl_TREVswitchInterrupt = ""
|
|
lbl_TREVswitchroot = ""
|
|
b_TREVSpeechSwitchStopped = false
|
|
eTREV_Dialogue = T_di_THINKING
|
|
eDialogue_stateT = DI_START_CONDITION_TREVOR
|
|
iDialogueTimer = GET_GAME_TIMER()
|
|
break
|
|
endswitch
|
|
break
|
|
|
|
//╞═══════════════════════════════════════ WHAT YOU THINKING ═════════════════════════════════════════════╡
|
|
case T_di_THINKING
|
|
switch eDialogue_stateT
|
|
case DI_START_CONDITION_TREVOR
|
|
if b_TREVSpeechSwitchStopped
|
|
if not IS_MESSAGE_BEING_DISPLAYED()
|
|
and eInterruptstage = INTERRUPT_NONE
|
|
if CREATE_CONVERSATION_FROM_SPECIFIC_LINE(convo_struct,"FH1AUD",lbl_TREVSwitchroot,lbl_TREVSWITCHInterrupt,CONV_PRIORITY_MEDIUM)
|
|
b_convo_paused = false
|
|
lbl_TREVswitchInterrupt = ""
|
|
lbl_TREVswitchroot = ""
|
|
b_TREVSpeechSwitchStopped = false
|
|
eDialogue_stateT = DI_RUNNING_DIALOGUE_TREVOR
|
|
endif
|
|
endif
|
|
else
|
|
if not IS_MESSAGE_BEING_DISPLAYED()
|
|
if g_replay.iReplayInt[1] = 1
|
|
b_convo_paused = false
|
|
iDialogueTimer = GET_GAME_TIMER()
|
|
eDialogue_stateT = DI_TRIGGER_DIALOGUE_TREVOR
|
|
endif
|
|
endif
|
|
endif
|
|
break
|
|
|
|
case DI_TRIGGER_DIALOGUE_TREVOR
|
|
IF DOES_ENTITY_EXIST(vehs[mvf_helicopter].id)
|
|
if IS_PED_IN_VEHICLE(trev(),vehs[mvf_helicopter].id)
|
|
if IS_PED_IN_VEHICLE(lester(),GET_VEHICLE_PED_IS_IN(trev()))
|
|
if GET_GAME_TIMER() - iDialogueTimer > 3000
|
|
and not IS_MESSAGE_BEING_DISPLAYED()
|
|
and eInterruptstage = INTERRUPT_NONE
|
|
AND b_displayed_get_heli
|
|
if CREATE_CONVERSATION(convo_struct, "FH1AUD", "FH1_FILL3", CONV_PRIORITY_MEDIUM)
|
|
eDialogue_stateT = DI_RUNNING_DIALOGUE_TREVOR
|
|
endif
|
|
endif
|
|
endif
|
|
ENDIF
|
|
ENDIF
|
|
break
|
|
|
|
case DI_RUNNING_DIALOGUE_TREVOR
|
|
if eInterruptstage = INTERRUPT_NONE
|
|
if IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
if IS_PED_IN_ANY_VEHICLE(trev())
|
|
if IS_PED_IN_VEHICLE(lester(),GET_VEHICLE_PED_IS_IN(trev()))
|
|
if b_convo_paused
|
|
PAUSE_FACE_TO_FACE_CONVERSATION(false)
|
|
b_convo_paused = false
|
|
endif
|
|
else
|
|
if not b_convo_paused
|
|
PAUSE_FACE_TO_FACE_CONVERSATION(true)
|
|
b_convo_paused = true
|
|
endif
|
|
endif
|
|
else
|
|
if not b_convo_paused
|
|
PAUSE_FACE_TO_FACE_CONVERSATION(true)
|
|
b_convo_paused = true
|
|
endif
|
|
endif
|
|
else
|
|
eDialogue_stateT = DI_EXIT_DIALOGUE_TREVOR
|
|
endif
|
|
endif
|
|
break
|
|
|
|
case DI_EXIT_DIALOGUE_TREVOR
|
|
lbl_TREVswitchInterrupt = ""
|
|
lbl_TREVswitchroot = ""
|
|
b_TREVSpeechSwitchStopped = false
|
|
eTREV_Dialogue = T_di_NONE
|
|
eDialogue_stateT = DI_START_CONDITION_TREVOR
|
|
iDialogueTimer = GET_GAME_TIMER()
|
|
break
|
|
endswitch
|
|
break
|
|
|
|
//╞═══════════════════════════════════════ END ═════════════════════════════════════════════╡
|
|
case T_di_END
|
|
switch eDialogue_stateT
|
|
case DI_START_CONDITION_TREVOR
|
|
if b_TREVSpeechSwitchStopped
|
|
if not IS_MESSAGE_BEING_DISPLAYED()
|
|
and eInterruptstage = INTERRUPT_NONE
|
|
IF bShowObjective
|
|
if CREATE_CONVERSATION_FROM_SPECIFIC_LINE(convo_struct,"FH1AUD",lbl_TREVSwitchroot,lbl_TREVSWITCHInterrupt,CONV_PRIORITY_MEDIUM)
|
|
b_convo_paused = false
|
|
lbl_TREVswitchInterrupt = ""
|
|
lbl_TREVswitchroot = ""
|
|
b_TREVSpeechSwitchStopped = false
|
|
eDialogue_stateT = DI_RUNNING_DIALOGUE_TREVOR
|
|
endif
|
|
ENDIF
|
|
endif
|
|
else
|
|
if mission_stage = enum_to_int(msf_6_drop_off_point)
|
|
and mission_substage >= 1
|
|
if not IS_MESSAGE_BEING_DISPLAYED()
|
|
b_convo_paused = false
|
|
iDialogueTimer = GET_GAME_TIMER()
|
|
eDialogue_stateT = DI_TRIGGER_DIALOGUE_TREVOR
|
|
endif
|
|
endif
|
|
endif
|
|
break
|
|
|
|
case DI_TRIGGER_DIALOGUE_TREVOR
|
|
if IsEntityAlive(vehs[mvf_helicopter].id)
|
|
if IS_PED_IN_VEHICLE(trev(),vehs[mvf_helicopter].id)
|
|
and IS_PED_IN_VEHICLE(lester(),vehs[mvf_helicopter].id)
|
|
if not IS_MESSAGE_BEING_DISPLAYED()
|
|
and get_game_timer() - iDialogueTimer > 5000
|
|
and eInterruptstage = INTERRUPT_NONE
|
|
if CREATE_CONVERSATION(convo_struct, "FH1AUD", "FH1_ENDT", CONV_PRIORITY_MEDIUM)
|
|
eDialogue_stateT = DI_RUNNING_DIALOGUE_TREVOR
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
break
|
|
|
|
case DI_RUNNING_DIALOGUE_TREVOR
|
|
if eInterruptstage = INTERRUPT_NONE
|
|
if IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
if IsEntityAlive(vehs[mvf_helicopter].id)
|
|
if IS_PED_IN_VEHICLE(trev(),vehs[mvf_helicopter].id)
|
|
and IS_PED_IN_VEHICLE(lester(),vehs[mvf_helicopter].id)
|
|
if b_convo_paused
|
|
PAUSE_FACE_TO_FACE_CONVERSATION(false)
|
|
b_convo_paused = false
|
|
endif
|
|
else
|
|
if not b_convo_paused
|
|
PAUSE_FACE_TO_FACE_CONVERSATION(true)
|
|
b_convo_paused = true
|
|
endif
|
|
endif
|
|
endif
|
|
else
|
|
eDialogue_stateT = DI_EXIT_DIALOGUE_TREVOR
|
|
endif
|
|
endif
|
|
break
|
|
|
|
case DI_EXIT_DIALOGUE_TREVOR
|
|
lbl_TREVswitchInterrupt = ""
|
|
lbl_TREVswitchroot = ""
|
|
b_TREVSpeechSwitchStopped = false
|
|
eTREV_Dialogue = T_di_NONE
|
|
eDialogue_stateT = DI_START_CONDITION_TREVOR
|
|
iDialogueTimer = GET_GAME_TIMER()
|
|
break
|
|
endswitch
|
|
break
|
|
//╞═══════════════════════════════════════ NONE ═════════════════════════════════════════════╡
|
|
case T_di_NONE
|
|
switch eDialogue_stateT
|
|
case DI_START_CONDITION_TREVOR
|
|
|
|
break
|
|
endswitch
|
|
break
|
|
endswitch
|
|
//╞═══════════════════════════════════════════════════════════ MIKE ══════════════════════════════════════════════════════════════╡
|
|
elif player_ped_id() = MIKE()
|
|
switch eMike_dialogue
|
|
//╞═══════════════════════════════════════ FRONT ═════════════════════════════════════════════╡
|
|
case M_di_TO_FRONT
|
|
switch eDialogue_stateM
|
|
case DI_START_CONDITION_MIKE
|
|
if b_mikeSpeechSwitchStopped
|
|
if not IS_MESSAGE_BEING_DISPLAYED()
|
|
and eInterruptstage = INTERRUPT_NONE
|
|
if CREATE_CONVERSATION_FROM_SPECIFIC_LINE(convo_struct,"FH1AUD",lbl_mikeSwitchroot,lbl_mikeSWITCHInterrupt,CONV_PRIORITY_MEDIUM)
|
|
b_convo_paused = false
|
|
lbl_MikeswitchInterrupt = ""
|
|
lbl_mikeswitchroot = ""
|
|
b_mikeSpeechSwitchStopped = false
|
|
eDialogue_stateM = DI_RUNNING_DIALOGUE_MIKE
|
|
endif
|
|
endif
|
|
else
|
|
if mission_stage = ENUM_TO_INT(msf_0_strip_club)
|
|
and mission_substage = 7
|
|
and not IS_MESSAGE_BEING_DISPLAYED()
|
|
b_convo_paused = false
|
|
iDialogueTimer = GET_GAME_TIMER()
|
|
eDialogue_stateM = DI_TRIGGER_DIALOGUE_MIKE
|
|
endif
|
|
endif
|
|
break
|
|
case DI_TRIGGER_DIALOGUE_MIKE
|
|
if IS_PED_IN_VEHICLE(mike(),vehs[mvf_Michael_veh].id)
|
|
and IS_PED_IN_VEHICLE(frank(),vehs[mvf_Michael_veh].id)
|
|
if GET_GAME_TIMER() - iDialogueTimer > 4000
|
|
and not IS_MESSAGE_BEING_DISPLAYED()
|
|
and eInterruptstage = INTERRUPT_NONE
|
|
and not DOES_CAM_EXIST(scsSwitchCamTrevorInHeliToMichael.ciSpline) //[MF] Make sure we're not in the switch cam that's supposed to transition to a cutscene
|
|
if CREATE_CONVERSATION(convo_struct, "FH1AUD", "FH1_FILL4", CONV_PRIORITY_MEDIUM)
|
|
eDialogue_stateM = DI_RUNNING_DIALOGUE_MIKE
|
|
endif
|
|
endif
|
|
endif
|
|
break
|
|
case DI_RUNNING_DIALOGUE_MIKE
|
|
if eInterruptstage = INTERRUPT_NONE
|
|
if IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
if IS_PED_IN_VEHICLE(mike(),vehs[mvf_Michael_veh].id)
|
|
and IS_PED_IN_VEHICLE(frank(),vehs[mvf_Michael_veh].id)
|
|
if b_convo_paused
|
|
PAUSE_FACE_TO_FACE_CONVERSATION(false)
|
|
b_convo_paused = false
|
|
endif
|
|
else
|
|
if not b_convo_paused
|
|
PAUSE_FACE_TO_FACE_CONVERSATION(true)
|
|
b_convo_paused = true
|
|
endif
|
|
endif
|
|
else
|
|
eDialogue_stateM = DI_EXIT_DIALOGUE_MIKE
|
|
endif
|
|
endif
|
|
break
|
|
case DI_EXIT_DIALOGUE_MIKE
|
|
lbl_MikeswitchInterrupt = ""
|
|
lbl_mikeswitchroot = ""
|
|
b_mikeSpeechSwitchStopped = false
|
|
eMike_dialogue = M_di_TO_BACK
|
|
eDialogue_stateM = DI_START_CONDITION_MIKE
|
|
iDialogueTimer = GET_GAME_TIMER()
|
|
break
|
|
endswitch
|
|
break
|
|
//╞═══════════════════════════════════════ BACK ═════════════════════════════════════════════╡
|
|
case M_di_TO_BACK
|
|
switch eDialogue_stateM
|
|
case DI_START_CONDITION_MIKE
|
|
if b_mikeSpeechSwitchStopped
|
|
if not IS_MESSAGE_BEING_DISPLAYED()
|
|
and eInterruptstage = INTERRUPT_NONE
|
|
if CREATE_CONVERSATION_FROM_SPECIFIC_LINE(convo_struct,"FH1AUD",lbl_mikeSwitchroot,lbl_mikeSWITCHInterrupt,CONV_PRIORITY_MEDIUM)
|
|
b_convo_paused = false
|
|
lbl_MikeswitchInterrupt = ""
|
|
lbl_mikeswitchroot = ""
|
|
b_mikeSpeechSwitchStopped = false
|
|
eDialogue_stateM = DI_RUNNING_DIALOGUE_MIKE
|
|
endif
|
|
endif
|
|
else
|
|
if mission_stage = enum_to_int(msf_1_font_of_bank)
|
|
and mission_substage = 4
|
|
and not IS_MESSAGE_BEING_DISPLAYED()
|
|
b_convo_paused = false
|
|
iDialogueTimer = GET_GAME_TIMER()
|
|
eDialogue_stateM = DI_TRIGGER_DIALOGUE_MIKE
|
|
endif
|
|
endif
|
|
break
|
|
case DI_TRIGGER_DIALOGUE_MIKE
|
|
if IS_PED_IN_VEHICLE(mike(),vehs[mvf_Michael_veh].id)
|
|
and IS_PED_IN_VEHICLE(frank(),vehs[mvf_Michael_veh].id)
|
|
if GET_GAME_TIMER() - iDialogueTimer > 1000
|
|
and not IS_MESSAGE_BEING_DISPLAYED()
|
|
and eInterruptstage = INTERRUPT_NONE
|
|
and not DOES_CAM_EXIST(scsSwitchCamTrevorInHeliToMichael.ciSpline)
|
|
if CREATE_CONVERSATION(convo_struct, "FH1AUD", "FH1_FILL5", CONV_PRIORITY_MEDIUM)
|
|
eDialogue_stateM = DI_RUNNING_DIALOGUE_MIKE
|
|
endif
|
|
endif
|
|
endif
|
|
break
|
|
case DI_RUNNING_DIALOGUE_MIKE
|
|
if eInterruptstage = INTERRUPT_NONE
|
|
if IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
if IS_PED_IN_VEHICLE(mike(),vehs[mvf_Michael_veh].id)
|
|
and IS_PED_IN_VEHICLE(frank(),vehs[mvf_Michael_veh].id)
|
|
if b_convo_paused
|
|
PAUSE_FACE_TO_FACE_CONVERSATION(false)
|
|
b_convo_paused = false
|
|
endif
|
|
else
|
|
if not b_convo_paused
|
|
PAUSE_FACE_TO_FACE_CONVERSATION(true)
|
|
b_convo_paused = true
|
|
endif
|
|
endif
|
|
else
|
|
eDialogue_stateM = DI_EXIT_DIALOGUE_MIKE
|
|
endif
|
|
endif
|
|
break
|
|
case DI_EXIT_DIALOGUE_MIKE
|
|
lbl_MikeswitchInterrupt = ""
|
|
lbl_mikeswitchroot = ""
|
|
b_mikeSpeechSwitchStopped = false
|
|
eMike_dialogue = M_di_NONE
|
|
eDialogue_stateM = DI_START_CONDITION_MIKE
|
|
iDialogueTimer = GET_GAME_TIMER()
|
|
break
|
|
endswitch
|
|
break
|
|
//╞═══════════════════════════════════════ END ═════════════════════════════════════════════╡
|
|
case M_di_END
|
|
switch eDialogue_stateM
|
|
case DI_START_CONDITION_MIKE
|
|
if b_mikeSpeechSwitchStopped
|
|
if not IS_MESSAGE_BEING_DISPLAYED()
|
|
and eInterruptstage = INTERRUPT_NONE
|
|
if CREATE_CONVERSATION_FROM_SPECIFIC_LINE(convo_struct,"FH1AUD",lbl_mikeSwitchroot,lbl_mikeSWITCHInterrupt,CONV_PRIORITY_MEDIUM)
|
|
b_convo_paused = false
|
|
lbl_MikeswitchInterrupt = ""
|
|
lbl_mikeswitchroot = ""
|
|
b_mikeSpeechSwitchStopped = false
|
|
eDialogue_stateM = DI_RUNNING_DIALOGUE_MIKE
|
|
endif
|
|
endif
|
|
else
|
|
if mission_stage = enum_to_int(msf_6_drop_off_point)
|
|
and mission_substage >= 1
|
|
if not IS_MESSAGE_BEING_DISPLAYED()
|
|
b_convo_paused = false
|
|
iDialogueTimer = GET_GAME_TIMER()
|
|
eDialogue_stateM = DI_TRIGGER_DIALOGUE_MIKE
|
|
endif
|
|
endif
|
|
endif
|
|
break
|
|
|
|
case DI_TRIGGER_DIALOGUE_MIKE
|
|
if IsEntityAlive(vehs[mvf_Michael_veh].id)
|
|
if IS_PED_IN_VEHICLE(mike(),vehs[mvf_Michael_veh].id)
|
|
and IS_PED_IN_VEHICLE(frank(),vehs[mvf_Michael_veh].id)
|
|
if not IS_MESSAGE_BEING_DISPLAYED()
|
|
and eInterruptstage = INTERRUPT_NONE
|
|
if CREATE_CONVERSATION(convo_struct, "FH1AUD", "FH1_ENDM", CONV_PRIORITY_MEDIUM)
|
|
eDialogue_stateM = DI_RUNNING_DIALOGUE_MIKE
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
break
|
|
|
|
case DI_RUNNING_DIALOGUE_MIKE
|
|
if eInterruptstage = INTERRUPT_NONE
|
|
if IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
if IsEntityAlive(vehs[mvf_Michael_veh].id)
|
|
if IS_PED_IN_VEHICLE(mike(),vehs[mvf_Michael_veh].id)
|
|
and IS_PED_IN_VEHICLE(frank(),vehs[mvf_Michael_veh].id)
|
|
if b_convo_paused
|
|
PAUSE_FACE_TO_FACE_CONVERSATION(false)
|
|
b_convo_paused = false
|
|
endif
|
|
else
|
|
if not b_convo_paused
|
|
PAUSE_FACE_TO_FACE_CONVERSATION(true)
|
|
b_convo_paused = true
|
|
endif
|
|
endif
|
|
endif
|
|
else
|
|
eDialogue_stateM = DI_EXIT_DIALOGUE_MIKE
|
|
endif
|
|
endif
|
|
break
|
|
|
|
case DI_EXIT_DIALOGUE_MIKE
|
|
lbl_MikeswitchInterrupt = ""
|
|
lbl_mikeswitchroot = ""
|
|
b_mikeSpeechSwitchStopped = false
|
|
eMike_dialogue = M_di_NONE
|
|
eDialogue_stateM = DI_START_CONDITION_MIKE
|
|
iDialogueTimer = GET_GAME_TIMER()
|
|
bShowObjective = true
|
|
break
|
|
endswitch
|
|
break
|
|
//╞═══════════════════════════════════════ NONE ═════════════════════════════════════════════╡
|
|
case M_di_NONE
|
|
switch eDialogue_stateM
|
|
case DI_START_CONDITION_MIKE
|
|
|
|
break
|
|
endswitch
|
|
break
|
|
endswitch
|
|
endif
|
|
//╞═══════════════════════════════════════════════════════════ BOTH ══════════════════════════════════════════════════════════════╡
|
|
if mission_stage < enum_to_int(msf_4_heli_follow_truck)
|
|
switch eBOTH_dialogue
|
|
case BOTH_TIME_INFO
|
|
if mission_stage = ENUM_TO_INT(msf_0_strip_club)
|
|
and mission_substage = 7
|
|
if eInterruptstage = INTERRUPT_NONE
|
|
eInterruptstage = INTERRUPT_STORE_CURRENT
|
|
endif
|
|
if eInterruptstage = INTERRUPTOR_SAFE
|
|
and not IS_MESSAGE_BEING_DISPLAYED()
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_TIMER",CONV_PRIORITY_MEDIUM)
|
|
Hotswap_Menu(false,true,false)
|
|
bHotSwap = true
|
|
eInterruptstage = INTERRUPT_RESTART_READY PRINTLN("@@@@@@@@@@@@ eInterruptstage = INTERRUPT_RESTART_READY 1")
|
|
eBOTH_dialogue = BOTH_WARN1
|
|
endif
|
|
endif
|
|
endif
|
|
break
|
|
case BOTH_WARN1
|
|
eBOTH_dialogue = BOTH_WARN2
|
|
break
|
|
case BOTH_WARN2
|
|
IF NOT IS_PED_INJURED(TREV())
|
|
if( not Is_clock_time_less_than_or_equal(13,30) and Is_clock_time_less_than_or_equal(13,45) )
|
|
if eInterruptstage = INTERRUPT_NONE
|
|
eInterruptstage = INTERRUPT_STORE_CURRENT
|
|
endif
|
|
if eInterruptstage = INTERRUPTOR_SAFE
|
|
and not IS_MESSAGE_BEING_DISPLAYED()
|
|
if player_ped_id() = trev()
|
|
IF DOES_ENTITY_EXIST(vehs[mvf_helicopter].id)
|
|
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_helicopter].id)
|
|
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehs[mvf_helicopter].id)
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_UPDATE_P",CONV_PRIORITY_MEDIUM)
|
|
eInterruptstage = INTERRUPT_RESTART_READY PRINTLN("@@@@@@@@@@@@ eInterruptstage = INTERRUPT_RESTART_READY 2")
|
|
eBOTH_dialogue = BOTH_WARN3
|
|
endif
|
|
ELSE
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_UPDATE",CONV_PRIORITY_MEDIUM)
|
|
eInterruptstage = INTERRUPT_RESTART_READY PRINTLN("@@@@@@@@@@@@ eInterruptstage = INTERRUPT_RESTART_READY 3")
|
|
eBOTH_dialogue = BOTH_WARN3
|
|
endif
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_UPDATE",CONV_PRIORITY_MEDIUM)
|
|
eInterruptstage = INTERRUPT_RESTART_READY PRINTLN("@@@@@@@@@@@@ eInterruptstage = INTERRUPT_RESTART_READY 4")
|
|
eBOTH_dialogue = BOTH_WARN3
|
|
endif
|
|
ENDIF
|
|
else
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_UPDATE_P",CONV_PRIORITY_MEDIUM)
|
|
eInterruptstage = INTERRUPT_RESTART_READY PRINTLN("@@@@@@@@@@@@ eInterruptstage = INTERRUPT_RESTART_READY 5")
|
|
eBOTH_dialogue = BOTH_WARN3
|
|
endif
|
|
endif
|
|
endif
|
|
else
|
|
|
|
endif
|
|
ENDIF
|
|
break
|
|
case BOTH_WARN3
|
|
eBOTH_dialogue = BOTH_WARN4
|
|
break
|
|
case BOTH_WARN4
|
|
if not Is_clock_time_less_than_or_equal(15,00)
|
|
if eInterruptstage = INTERRUPT_NONE
|
|
eInterruptstage = INTERRUPT_STORE_CURRENT
|
|
endif
|
|
if eInterruptstage = INTERRUPTOR_SAFE
|
|
and not IS_MESSAGE_BEING_DISPLAYED()
|
|
if player_ped_id() = trev()
|
|
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_helicopter].id)
|
|
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehs[mvf_helicopter].id)
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_300_P",CONV_PRIORITY_MEDIUM)
|
|
eInterruptstage = INTERRUPT_RESTART_READY PRINTLN("@@@@@@@@@@@@ eInterruptstage = INTERRUPT_RESTART_READY 6")
|
|
eBOTH_dialogue = BOTH_WARN5
|
|
endif
|
|
ELSE
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_300",CONV_PRIORITY_MEDIUM)
|
|
eInterruptstage = INTERRUPT_RESTART_READY PRINTLN("@@@@@@@@@@@@ eInterruptstage = INTERRUPT_RESTART_READY 7")
|
|
eBOTH_dialogue = BOTH_WARN5
|
|
endif
|
|
ENDIF
|
|
ELSE
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_300",CONV_PRIORITY_MEDIUM)
|
|
eInterruptstage = INTERRUPT_RESTART_READY PRINTLN("@@@@@@@@@@@@ eInterruptstage = INTERRUPT_RESTART_READY 8")
|
|
eBOTH_dialogue = BOTH_WARN5
|
|
endif
|
|
ENDIF
|
|
else
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_300_P",CONV_PRIORITY_MEDIUM)
|
|
eInterruptstage = INTERRUPT_RESTART_READY PRINTLN("@@@@@@@@@@@@ eInterruptstage = INTERRUPT_RESTART_READY 9")
|
|
eBOTH_dialogue = BOTH_WARN5
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
break
|
|
endswitch
|
|
endif
|
|
endif
|
|
AUDIO_Interrupt()
|
|
|
|
endproc
|
|
|
|
PROC update_lester_anims(vector vTarget)
|
|
vector voffset = GET_OFFSET_FROM_ENTITY_GIVEN_WORLD_COORDS(lester(),vTarget)
|
|
|
|
switch eLESTER_side
|
|
CASE LEST_SLIDE
|
|
if not IS_SCRIPT_TASK_RUNNING_OR_STARTING(lester(),script_TASK_SHUFFLE_TO_NEXT_VEHICLE_SEAT)
|
|
and not IS_ENTITY_PLAYING_ANIM(lester(),"missheist_the_big_score_setup_1@camera@idle_a","idle_a")
|
|
and not IS_ENTITY_PLAYING_ANIM(lester(),"missheist_the_big_score_setup_1@camera@idle_a","idle_c")
|
|
if GET_PED_VEHICLE_SEAT(lester(),vehs[mvf_helicopter].id) = VS_BACK_LEFT
|
|
TASK_SHUFFLE_TO_NEXT_VEHICLE_SEAT(lester(),vehs[mvf_helicopter].id)
|
|
eLESTER_side = LESTER_RIGHT
|
|
|
|
elif GET_PED_VEHICLE_SEAT(lester(),vehs[mvf_helicopter].id) = VS_BACK_RIGHT
|
|
TASK_SHUFFLE_TO_NEXT_VEHICLE_SEAT(lester(),vehs[mvf_helicopter].id)
|
|
eLESTER_side = LESTER_lEFT
|
|
|
|
endif
|
|
endif
|
|
BREAK
|
|
case LESTER_LEFT
|
|
IF GET_PED_VEHICLE_SEAT(lester(),vehs[mvf_helicopter].id) = VS_BACK_LEFT
|
|
and not IS_SCRIPT_TASK_RUNNING_OR_STARTING(lester(),script_TASK_SHUFFLE_TO_NEXT_VEHICLE_SEAT)
|
|
if not IS_ENTITY_PLAYING_ANIM(lester(),"missheist_the_big_score_setup_1@camera@idle_a","idle_a")
|
|
TASK_PLAY_ANIM(lester(),"missheist_the_big_score_setup_1@camera@idle_a","idle_a",WALK_BLEND_IN,WALK_BLEND_OUT,-1,AF_LOOPING | AF_SECONDARY| AF_NOT_INTERRUPTABLE)
|
|
endif
|
|
|
|
if voffset.x >= 1.2
|
|
CLEAR_PED_TASKS(lester())
|
|
eLESTER_side = LEST_SLIDE
|
|
endif
|
|
ENDIF
|
|
break
|
|
case LESTER_RIGHT
|
|
IF GET_PED_VEHICLE_SEAT(lester(),vehs[mvf_helicopter].id) = VS_BACK_RIGHT
|
|
and not IS_SCRIPT_TASK_RUNNING_OR_STARTING(lester(),script_TASK_SHUFFLE_TO_NEXT_VEHICLE_SEAT)
|
|
if not IS_ENTITY_PLAYING_ANIM(lester(),"missheist_the_big_score_setup_1@camera@idle_a","idle_c")
|
|
TASK_PLAY_ANIM(lester(),"missheist_the_big_score_setup_1@camera@idle_a","idle_c",WALK_BLEND_IN,WALK_BLEND_OUT,-1,AF_LOOPING | AF_UPPERBODY| AF_SECONDARY| AF_NOT_INTERRUPTABLE)
|
|
endif
|
|
|
|
if voffset.x <= -1.2
|
|
CLEAR_PED_TASKS(lester())
|
|
eLESTER_side = LEST_SLIDE
|
|
endif
|
|
ENDIF
|
|
break
|
|
endswitch
|
|
ENDPROC
|
|
PROC manage_lester_Cam()
|
|
|
|
if mission_stage = enum_to_int(msf_4_heli_follow_truck)
|
|
and mission_substage > 11
|
|
if DOES_CAM_EXIST(cameraIndex)
|
|
DESTROY_CAM(cameraIndex)
|
|
endif
|
|
if DOES_CAM_EXIST(camfollow)
|
|
DESTROY_CAM(camfollow)
|
|
endif
|
|
if DOES_CAM_EXIST(Camtarget)
|
|
DESTROY_CAM(Camtarget)
|
|
endif
|
|
IF NOT IS_ENTITY_DEAD(TREV())
|
|
IF NOT IS_ENTITY_VISIBLE(TREV())
|
|
SET_ENTITY_VISIBLE(TREV(),true)
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT IS_ENTITY_DEAD(LESTER())
|
|
IF NOT IS_ENTITY_VISIBLE(lester())
|
|
SET_ENTITY_VISIBLE(lester(),true)
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT IS_ENTITY_DEAD(vehs[mvf_helicopter].id)
|
|
IF NOT IS_ENTITY_VISIBLE(vehs[mvf_helicopter].id)
|
|
SET_ENTITY_VISIBLE(vehs[mvf_helicopter].id,true)
|
|
ENDIF
|
|
ENDIF
|
|
RENDER_SCRIPT_CAMS(false,false)
|
|
DISPLAY_RADAR(true)
|
|
DISPLAY_HUD(true)
|
|
|
|
STOP_SOUND(camZoom)
|
|
STOP_SOUND(camhum)
|
|
|
|
elif mission_stage = enum_to_int(msf_4_heli_follow_truck)
|
|
and mission_substage > 3
|
|
and INIT_CAM()
|
|
|
|
switch iLESTERCAM_stage
|
|
//create cams
|
|
case 0
|
|
SET_CINEMATIC_BUTTON_ACTIVE(false)
|
|
|
|
cameraIndex = CREATE_CAMERA(CAMTYPE_SCRIPTED)
|
|
ATTACH_CAM_TO_ENTITY(cameraIndex,vehs[mvf_helicopter].id,<<0,0,0>>)
|
|
POINT_CAM_AT_ENTITY(cameraIndex,vehs[mvf_security_truck].id,<<0,-12.5,0>>)
|
|
SET_CAM_FOV(cameraIndex,35)
|
|
SHAKE_CAM(cameraIndex,"hand_shake",1)
|
|
SET_CAM_ACTIVE(cameraIndex,true)
|
|
|
|
camfollow = CREATE_CAMERA(CAMTYPE_SCRIPTED)
|
|
ATTACH_CAM_TO_ENTITY(camfollow,vehs[mvf_helicopter].id,<<0,0,0>>)
|
|
SHAKE_CAM(camfollow,"hand_shake",1)
|
|
|
|
Camtarget = CREATE_CAMERA(CAMTYPE_SCRIPTED)
|
|
ATTACH_CAM_TO_ENTITY(Camtarget,vehs[mvf_helicopter].id,<<0,0,0>>)
|
|
SHAKE_CAM(Camtarget,"hand_shake",1)
|
|
iLESTERCAM_stage++
|
|
break
|
|
|
|
|
|
//loop between vans
|
|
|
|
case 1 //return as index
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_security_truck].id)
|
|
if (fCurrentPlaybackTime > 30000 and fCurrentPlaybackTime < 31000)
|
|
or (fCurrentPlaybackTime > 85000 and fCurrentPlaybackTime < 86000)
|
|
or (fCurrentPlaybackTime > 133000 and fCurrentPlaybackTime < 134000)
|
|
or (fCurrentPlaybackTime > 175000 and fCurrentPlaybackTime < 176000)
|
|
POINT_CAM_AT_ENTITY(camfollow,vehs[mvf_security_truck_fol].id,<<0,0,0>>)
|
|
SET_CAM_FOV(camfollow,45)
|
|
SET_CAM_ACTIVE_WITH_INTERP(camfollow,cameraIndex,3000)
|
|
iLESTERCAM_stage++
|
|
endif
|
|
endif
|
|
break
|
|
case 2 // return as follow
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_security_truck].id)
|
|
if (fCurrentPlaybackTime > 34000 and fCurrentPlaybackTime < 35000)
|
|
or (fCurrentPlaybackTime > 90000 and fCurrentPlaybackTime < 91000)
|
|
or (fCurrentPlaybackTime > 138000 and fCurrentPlaybackTime < 139000)
|
|
or (fCurrentPlaybackTime > 180000 and fCurrentPlaybackTime < 181000)
|
|
POINT_CAM_AT_ENTITY(cameraIndex,vehs[mvf_security_truck].id,<<-2,-5,0>>)
|
|
SET_CAM_FOV(cameraIndex,42)
|
|
SET_CAM_ACTIVE_WITH_INTERP(cameraIndex,camfollow,4000)
|
|
iLESTERCAM_stage++
|
|
endif
|
|
endif
|
|
break
|
|
case 3
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_security_truck].id)
|
|
if (fCurrentPlaybackTime > 40000 and fCurrentPlaybackTime < 41000)
|
|
or (fCurrentPlaybackTime > 99000 and fCurrentPlaybackTime < 100000)
|
|
or (fCurrentPlaybackTime > 144000 and fCurrentPlaybackTime < 145000)
|
|
or (fCurrentPlaybackTime > 186000 and fCurrentPlaybackTime < 187000)
|
|
POINT_CAM_AT_ENTITY(camfollow,vehs[mvf_security_truck_fol].id,<<2,-7,3>>)
|
|
SET_CAM_FOV(camfollow,32)
|
|
SET_CAM_ACTIVE_WITH_INTERP(camfollow,cameraIndex,2000)
|
|
iLESTERCAM_stage++
|
|
endif
|
|
endif
|
|
break
|
|
case 4
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_security_truck].id)
|
|
if (fCurrentPlaybackTime > 48000 and fCurrentPlaybackTime < 49000)
|
|
or (fCurrentPlaybackTime > 105000 and fCurrentPlaybackTime < 106000)
|
|
or (fCurrentPlaybackTime > 148000 and fCurrentPlaybackTime < 149000)
|
|
or (fCurrentPlaybackTime > 190000 and fCurrentPlaybackTime < 191000)
|
|
POINT_CAM_AT_ENTITY(cameraIndex,vehs[mvf_security_truck].id,<<5,3,1>>)
|
|
SET_CAM_FOV(cameraIndex,35)
|
|
SET_CAM_ACTIVE_WITH_INTERP(cameraIndex,camfollow,3000)
|
|
iLESTERCAM_stage++
|
|
endif
|
|
endif
|
|
break
|
|
case 5
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_security_truck].id)
|
|
if (fCurrentPlaybackTime > 52000 and fCurrentPlaybackTime < 53000)
|
|
or (fCurrentPlaybackTime > 114000 and fCurrentPlaybackTime < 1150000)
|
|
or (fCurrentPlaybackTime > 153000 and fCurrentPlaybackTime < 154000)
|
|
or (fCurrentPlaybackTime > 194000 and fCurrentPlaybackTime < 195000)
|
|
POINT_CAM_AT_ENTITY(camfollow,vehs[mvf_security_truck].id,<<1,-12.5,2>>)
|
|
SET_CAM_FOV(camfollow,40)
|
|
SET_CAM_ACTIVE_WITH_INTERP(camfollow,cameraIndex,2000)
|
|
iLESTERCAM_stage++
|
|
endif
|
|
endif
|
|
break
|
|
case 6
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_security_truck].id)
|
|
if (fCurrentPlaybackTime > 60000 and fCurrentPlaybackTime < 61000)
|
|
or (fCurrentPlaybackTime > 122000 and fCurrentPlaybackTime < 123000)
|
|
or (fCurrentPlaybackTime > 157000 and fCurrentPlaybackTime < 158000)
|
|
or (fCurrentPlaybackTime > 197500 and fCurrentPlaybackTime < 199000)
|
|
POINT_CAM_AT_ENTITY(cameraIndex,vehs[mvf_security_truck].id,<<-3,-12.5,0>>)
|
|
SET_CAM_FOV(cameraIndex,43)
|
|
SET_CAM_ACTIVE_WITH_INTERP(cameraIndex,camfollow,2000)
|
|
iLESTERCAM_stage++
|
|
endif
|
|
endif
|
|
break
|
|
case 7
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_security_truck].id)
|
|
if (fCurrentPlaybackTime > 72000 and fCurrentPlaybackTime < 73000)
|
|
or (fCurrentPlaybackTime > 124000 and fCurrentPlaybackTime < 125000)
|
|
or (fCurrentPlaybackTime > 160000 and fCurrentPlaybackTime < 161000)
|
|
iLESTERCAM_stage = 1
|
|
endif
|
|
endif
|
|
break
|
|
// point of interest 1 - bridge
|
|
case 8
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_security_truck].id)
|
|
if (fCurrentPlaybackTime > 75800 and fCurrentPlaybackTime < 80000)
|
|
|
|
POINT_CAM_AT_COORD(Camtarget,<<522.83740, -1233.52051, 34.04720>>)
|
|
SET_CAM_FOV(Camtarget,45)
|
|
SET_CAM_ACTIVE_WITH_INTERP(Camtarget,cameraIndex,2000)
|
|
iLESTERCAM_stage = 9
|
|
endif
|
|
endif
|
|
break
|
|
case 9
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_security_truck].id)
|
|
if (fCurrentPlaybackTime > 80000 and fCurrentPlaybackTime < 82000)
|
|
POINT_CAM_AT_ENTITY(cameraIndex,vehs[mvf_security_truck].id,<<0,0,0>>)
|
|
SET_CAM_FOV(cameraIndex,40)
|
|
SET_CAM_ACTIVE_WITH_INTERP(cameraIndex,Camtarget,2000)
|
|
iLESTERCAM_stage = 1
|
|
endif
|
|
endif
|
|
break
|
|
// point of interest 2 - police station
|
|
case 10
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_security_truck].id)
|
|
if (fCurrentPlaybackTime > 125600 and fCurrentPlaybackTime < 127000)
|
|
|
|
POINT_CAM_AT_COORD(Camtarget,<<408.45987, -985.92719, 29.09093>>)
|
|
SET_CAM_FOV(Camtarget,45)
|
|
SET_CAM_ACTIVE_WITH_INTERP(Camtarget,cameraIndex,3000)
|
|
iLESTERCAM_stage = 11
|
|
endif
|
|
endif
|
|
break
|
|
case 11
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_security_truck].id)
|
|
if (fCurrentPlaybackTime > 130000 and fCurrentPlaybackTime < 131000)
|
|
POINT_CAM_AT_ENTITY(cameraIndex,vehs[mvf_security_truck].id,<<0,0,0>>)
|
|
SET_CAM_FOV(cameraIndex,35)
|
|
SET_CAM_ACTIVE_WITH_INTERP(cameraIndex,Camtarget,3000)
|
|
iLESTERCAM_stage = 1
|
|
endif
|
|
endif
|
|
break
|
|
// point of interest 3 - tunnel exit
|
|
case 12
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_security_truck].id)
|
|
if (fCurrentPlaybackTime > 160000 and fCurrentPlaybackTime < 162000)
|
|
|
|
POINT_CAM_AT_COORD(Camtarget,<<79.28018, -559.11414, 31.16214>>)
|
|
SET_CAM_FOV(Camtarget,45)
|
|
SET_CAM_ACTIVE_WITH_INTERP(Camtarget,cameraIndex,4000)
|
|
iLESTERCAM_stage = 13
|
|
endif
|
|
endif
|
|
break
|
|
case 13
|
|
if not bTunnel
|
|
if IS_CAM_ACTIVE(Camtarget)
|
|
and not IS_CAM_INTERPOLATING(Camtarget)
|
|
POINT_CAM_AT_ENTITY(cameraIndex,vehs[mvf_security_truck].id,<<0,0,0>>)
|
|
SET_CAM_FOV(cameraIndex,35)
|
|
SET_CAM_ACTIVE_WITH_INTERP(cameraIndex,Camtarget,2000)
|
|
iLESTERCAM_stage = 1
|
|
endif
|
|
endif
|
|
break
|
|
endswitch
|
|
endif
|
|
|
|
if mission_stage = enum_to_int(msf_5_CONSTRUCTION_HOLE)
|
|
and INIT_CAM()
|
|
if mission_substage < 5
|
|
switch iHoleStage
|
|
case 0
|
|
SET_CINEMATIC_BUTTON_ACTIVE(false)
|
|
//cams on hole
|
|
cameraIndex = CREATE_CAMERA(CAMTYPE_SCRIPTED)
|
|
ATTACH_CAM_TO_ENTITY(cameraIndex,vehs[mvf_helicopter].id,<<0,0,0>>)
|
|
POINT_CAM_AT_COORD(cameraIndex,vHOLE)
|
|
SET_CAM_FOV(cameraIndex,60)
|
|
SHAKE_CAM(cameraIndex,"hand_shake",1)
|
|
SET_CAM_ACTIVE(cameraIndex,true)
|
|
|
|
camfollow = CREATE_CAMERA(CAMTYPE_SCRIPTED)
|
|
ATTACH_CAM_TO_ENTITY(camfollow,vehs[mvf_helicopter].id,<<0,0,0>>)
|
|
SHAKE_CAM(camfollow,"hand_shake",1)
|
|
iCamTimer = get_Game_timer()
|
|
iHoleStage++
|
|
|
|
break
|
|
case 1 //interp to follow
|
|
if get_game_timer() - icamTimer > 2000
|
|
if DOES_CAM_EXIST(cameraIndex)
|
|
and DOES_CAM_EXIST(camfollow)
|
|
POINT_CAM_AT_COORD(camfollow,<<24.51892, -634.02692, 15.08808>>)
|
|
SET_CAM_FOV(camfollow,55)
|
|
SET_CAM_ACTIVE_WITH_INTERP(camfollow,cameraIndex,3000)
|
|
iCamTimer = get_Game_timer()
|
|
iHoleStage++
|
|
endif
|
|
endif
|
|
break
|
|
case 2 // set and start iterp to camindex
|
|
if get_game_timer() - icamTimer > 4000
|
|
if DOES_CAM_EXIST(cameraIndex)
|
|
and DOES_CAM_EXIST(camfollow)
|
|
POINT_CAM_AT_COORD(cameraIndex,<<15.07439, -641.73126,15.08808>>)
|
|
SET_CAM_FOV(cameraIndex,56)
|
|
SET_CAM_ACTIVE_WITH_INTERP(cameraIndex,camfollow,5000)
|
|
iCamTimer = get_Game_timer()
|
|
iHoleStage++
|
|
endif
|
|
endif
|
|
break
|
|
case 3
|
|
if get_game_timer() - icamTimer > 8000
|
|
if DOES_CAM_EXIST(cameraIndex)
|
|
and DOES_CAM_EXIST(camfollow)
|
|
POINT_CAM_AT_COORD(camfollow,<<17.36475, -645.56958, 15.08808>>)
|
|
SET_CAM_FOV(camfollow,54)
|
|
SET_CAM_ACTIVE_WITH_INTERP(camfollow,cameraIndex,4000)
|
|
iCamTimer = get_Game_timer()
|
|
iHoleStage++
|
|
endif
|
|
endif
|
|
break
|
|
case 4
|
|
if get_game_timer() - icamTimer > 4500
|
|
if DOES_CAM_EXIST(cameraIndex)
|
|
and DOES_CAM_EXIST(camfollow)
|
|
POINT_CAM_AT_COORD(cameraIndex,<<17.36475, -645.56958, 15.08808>>)
|
|
SET_CAM_FOV(cameraIndex,52)
|
|
SET_CAM_ACTIVE_WITH_INTERP(cameraIndex,camfollow,1000)
|
|
iCamTimer = get_Game_timer()
|
|
iHoleStage++
|
|
endif
|
|
endif
|
|
break
|
|
case 5
|
|
if get_game_timer() - icamTimer > 5000
|
|
if DOES_CAM_EXIST(cameraIndex)
|
|
and DOES_CAM_EXIST(camfollow)
|
|
POINT_CAM_AT_COORD(camfollow,<<19.90802, -641.74707, 15.08808>>)
|
|
SET_CAM_FOV(camfollow,55)
|
|
SET_CAM_ACTIVE_WITH_INTERP(camfollow,cameraIndex,1500)
|
|
iCamTimer = get_Game_timer()
|
|
iHoleStage++
|
|
endif
|
|
endif
|
|
break
|
|
case 6
|
|
if get_game_timer() - icamTimer > 3000
|
|
if DOES_CAM_EXIST(cameraIndex)
|
|
and DOES_CAM_EXIST(camfollow)
|
|
POINT_CAM_AT_COORD(cameraIndex,<<17.18857, -635.11615, 15.08808>>)
|
|
SET_CAM_FOV(cameraIndex,59)
|
|
SET_CAM_ACTIVE_WITH_INTERP(cameraIndex,camfollow,3000)
|
|
iCamTimer = get_Game_timer()
|
|
iHoleStage++
|
|
endif
|
|
endif
|
|
break
|
|
case 7
|
|
if get_game_timer() - icamTimer > 5000
|
|
if DOES_CAM_EXIST(cameraIndex)
|
|
and DOES_CAM_EXIST(camfollow)
|
|
POINT_CAM_AT_COORD(camfollow,<<21.87010, -628.49554,15.08808>>)
|
|
SET_CAM_FOV(camfollow,60)
|
|
SET_CAM_ACTIVE_WITH_INTERP(camfollow,cameraIndex,4000)
|
|
iCamTimer = get_Game_timer()
|
|
iHoleStage++
|
|
endif
|
|
endif
|
|
break
|
|
case 8
|
|
if get_game_timer() - icamTimer > 6000
|
|
if DOES_CAM_EXIST(cameraIndex)
|
|
and DOES_CAM_EXIST(camfollow)
|
|
POINT_CAM_AT_COORD(cameraIndex,<<24.27826, -644.17523,15.08808>>)
|
|
SET_CAM_FOV(cameraIndex,57)
|
|
SET_CAM_ACTIVE_WITH_INTERP(cameraIndex,camfollow,2000)
|
|
iCamTimer = get_Game_timer()
|
|
iHoleStage++
|
|
endif
|
|
endif
|
|
break
|
|
case 9
|
|
if get_game_timer() - icamTimer > 6000
|
|
iCamTimer = get_Game_timer()
|
|
iHoleStage = 1
|
|
endif
|
|
break
|
|
case 10
|
|
|
|
break
|
|
endswitch
|
|
else
|
|
IF NOT IS_ENTITY_DEAD(TREV())
|
|
IF NOT IS_ENTITY_VISIBLE(TREV())
|
|
SET_ENTITY_VISIBLE(TREV(),true)
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT IS_ENTITY_DEAD(LESTER())
|
|
IF NOT IS_ENTITY_VISIBLE(lester())
|
|
SET_ENTITY_VISIBLE(lester(),true)
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT IS_ENTITY_DEAD(vehs[mvf_helicopter].id)
|
|
IF NOT IS_ENTITY_VISIBLE(vehs[mvf_helicopter].id)
|
|
SET_ENTITY_VISIBLE(vehs[mvf_helicopter].id,true)
|
|
ENDIF
|
|
ENDIF
|
|
RENDER_SCRIPT_CAMS(false,false)
|
|
DISPLAY_RADAR(true)
|
|
DISPLAY_HUD(true)
|
|
DESTROY_ALL_CAMS()
|
|
STOP_SOUND(camZoom)
|
|
STOP_SOUND(camhum)
|
|
endif
|
|
endif
|
|
|
|
//-------------------------turn film cam on and off------------------------
|
|
if bLesterCam
|
|
|
|
REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME()
|
|
|
|
REMAP_LODSCALE_RANGE_THIS_FRAME(1.7,4.7,1.0,1.8)
|
|
//SUPPRESS_HD_MAP_STREAMING_THIS_FRAME()
|
|
SET_INSTANCE_PRIORITY_HINT(INSTANCE_HINT_HELICAM)
|
|
DISABLE_CELLPHONE_CAMERA_APP_THIS_FRAME_ONLY()
|
|
DISABLE_SELECTOR_THIS_FRAME()
|
|
|
|
if mission_stage = enum_to_int(msf_4_heli_follow_truck)
|
|
and not bTunnel
|
|
stop_mission_audio_scenes(8)
|
|
if not IS_AUDIO_SCENE_ACTIVE("BS_1_TRUCKS_HINT_CAM")
|
|
START_AUDIO_SCENE("BS_1_TRUCKS_HINT_CAM")
|
|
endif
|
|
elif mission_stage = enum_to_int(msf_5_CONSTRUCTION_HOLE)
|
|
stop_mission_audio_scenes(11)
|
|
if not IS_AUDIO_SCENE_ACTIVE("BS_1_VIEW_RECORDING")
|
|
START_AUDIO_SCENE("BS_1_VIEW_RECORDING")
|
|
endif
|
|
endif
|
|
if mission_stage = enum_to_int(msf_4_heli_follow_truck)
|
|
if get_game_timer() - iFaceHintTimer > 1500
|
|
SET_ENTITY_FACING(vehs[mvf_helicopter].id,GET_ENTITY_COORDS(vehs[mvf_security_truck].id))
|
|
endif
|
|
endif
|
|
else
|
|
iFaceHintTimer = GET_GAME_TIMER()
|
|
|
|
if mission_stage = enum_to_int(msf_4_heli_follow_truck)
|
|
and not bTunnel
|
|
stop_mission_audio_scenes(7)
|
|
if not IS_AUDIO_SCENE_ACTIVE("BS_1_TRUCKS_SPOTTED")
|
|
START_AUDIO_SCENE("BS_1_TRUCKS_SPOTTED")
|
|
endif
|
|
elif mission_stage = enum_to_int(msf_5_CONSTRUCTION_HOLE)
|
|
stop_mission_audio_scenes(10)
|
|
if not IS_AUDIO_SCENE_ACTIVE("BS_1_SEARCH_FOR_ENTRANCE")
|
|
START_AUDIO_SCENE("BS_1_SEARCH_FOR_ENTRANCE")
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
if DOES_CAM_EXIST(cameraIndex)
|
|
and DOES_CAM_EXIST(camfollow)
|
|
BOOL bLesterCamLastFrame = bLesterCam
|
|
switch ihintstage
|
|
case 0 //off
|
|
bLesterCam = false
|
|
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_helicopter].id)
|
|
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehs[mvf_helicopter].id)
|
|
if IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_VEH_CIN_CAM)
|
|
hintCheckTimer = get_game_timer()
|
|
bLesterCam = true
|
|
ihintstage = 1
|
|
endif
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//Toggle the multihead blinders
|
|
IF bLesterCamLastFrame <> bLesterCam
|
|
SET_MULTIHEAD_SAFE(bLesterCam,TRUE)
|
|
ENDIF
|
|
break
|
|
|
|
case 1 // check
|
|
// button was tapped toggle
|
|
if get_game_timer() - hintCheckTimer <= 500 //toggle
|
|
if not IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_VEH_CIN_CAM)
|
|
hintCheckTimer = get_game_timer()
|
|
ihintstage = 3
|
|
endif
|
|
else
|
|
//held down check if no longer held
|
|
ihintstage = 2
|
|
endif
|
|
break
|
|
|
|
case 2 // held
|
|
if not IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_VEH_CIN_CAM)
|
|
ihintstage = 0
|
|
endif
|
|
break
|
|
|
|
case 3 // toggle
|
|
// bLesterCam = true
|
|
if get_game_timer() - hintCheckTimer > 500
|
|
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_helicopter].id)
|
|
if IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL,INPUT_VEH_CIN_CAM)
|
|
OR NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehs[mvf_helicopter].id)
|
|
ihintstage = 0
|
|
endif
|
|
ENDIF
|
|
endif
|
|
break
|
|
|
|
endswitch
|
|
|
|
if bLesterCam // ON
|
|
IF NOT IS_CUTSCENE_PLAYING()
|
|
if IS_CAM_ACTIVE(camfollow)
|
|
or IS_CAM_ACTIVE(cameraIndex)
|
|
SET_ENTITY_VISIBLE(TREV(),false)
|
|
SET_ENTITY_VISIBLE(lester(),false)
|
|
SET_ENTITY_VISIBLE(vehs[mvf_helicopter].id,false)
|
|
RENDER_SCRIPT_CAMS(true,false)
|
|
DISPLAY_RADAR(false)
|
|
DISPLAY_HUD(false)
|
|
if IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
CLEAR_HELP()
|
|
endif
|
|
|
|
DO_CAM_UI()
|
|
|
|
|
|
if DOES_CAM_EXIST(GET_RENDERING_CAM())
|
|
if GET_CAM_FOV(GET_RENDERING_CAM()) != camPrevFOV
|
|
PLAY_SOUND_FRONTEND(camzoom,"Camera_Zoom","BIG_SCORE_SETUP_SOUNDS")
|
|
elif GET_CAM_FOV(GET_RENDERING_CAM()) = camPrevFOV
|
|
STOP_SOUND(camzoom)
|
|
endif
|
|
camPrevFOV = GET_CAM_FOV(GET_RENDERING_CAM())
|
|
endif
|
|
|
|
endif
|
|
ENDIF
|
|
else // OFF
|
|
IF NOT IS_ENTITY_DEAD(TREV())
|
|
IF NOT IS_ENTITY_VISIBLE(TREV())
|
|
SET_ENTITY_VISIBLE(TREV(),true)
|
|
CLEAR_TIMECYCLE_MODIFIER()
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT IS_ENTITY_DEAD(LESTER())
|
|
IF NOT IS_ENTITY_VISIBLE(lester())
|
|
SET_ENTITY_VISIBLE(lester(),true)
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT IS_ENTITY_DEAD(vehs[mvf_helicopter].id)
|
|
IF NOT IS_ENTITY_VISIBLE(vehs[mvf_helicopter].id)
|
|
SET_ENTITY_VISIBLE(vehs[mvf_helicopter].id,true)
|
|
ENDIF
|
|
ENDIF
|
|
RENDER_SCRIPT_CAMS(false,false)
|
|
DISPLAY_RADAR(true)
|
|
DISPLAY_HUD(true)
|
|
STOP_SOUND(camZoom)
|
|
STOP_SOUND(camhum)
|
|
endif
|
|
endif
|
|
endproc
|
|
FUNC bool HOLE_INFO_DONE()
|
|
switch iHOLE_INFO_STAGE
|
|
case 0
|
|
if IS_PED_IN_VEHICLE(trev(),vehs[mvf_helicopter].id)
|
|
and IS_PED_IN_VEHICLE(lester(),vehs[mvf_helicopter].id)
|
|
if not IS_MESSAGE_BEING_DISPLAYED()
|
|
and get_game_timer() - iHoleTimer > 1000
|
|
if CREATE_CONVERSATION(convo_struct, "FH1AUD", "FH1_HOLECAM", CONV_PRIORITY_MEDIUM)
|
|
iHoleTimer = get_game_timer()
|
|
iHOLE_INFO_STAGE++
|
|
endif
|
|
endif
|
|
endif
|
|
break
|
|
case 1
|
|
if IS_PED_IN_VEHICLE(trev(),vehs[mvf_helicopter].id)
|
|
and IS_PED_IN_VEHICLE(lester(),vehs[mvf_helicopter].id)
|
|
if not IS_MESSAGE_BEING_DISPLAYED()
|
|
and get_game_timer() - iHoleTimer > 3000
|
|
if CREATE_CONVERSATION(convo_struct, "FH1AUD", "FH1_HOLECAM", CONV_PRIORITY_MEDIUM)
|
|
iHoleTimer = get_game_timer()
|
|
iHOLE_INFO_STAGE++
|
|
endif
|
|
endif
|
|
endif
|
|
break
|
|
case 2
|
|
if IS_PED_IN_VEHICLE(trev(),vehs[mvf_helicopter].id)
|
|
and IS_PED_IN_VEHICLE(lester(),vehs[mvf_helicopter].id)
|
|
if not IS_MESSAGE_BEING_DISPLAYED()
|
|
and get_game_timer() - iHoleTimer > 1000
|
|
if CREATE_CONVERSATION(convo_struct, "FH1AUD", "FH1_HOLECAM", CONV_PRIORITY_MEDIUM)
|
|
iHoleTimer = get_game_timer()
|
|
iHOLE_INFO_STAGE++
|
|
endif
|
|
endif
|
|
endif
|
|
break
|
|
case 3
|
|
if IS_PED_IN_VEHICLE(trev(),vehs[mvf_helicopter].id)
|
|
and IS_PED_IN_VEHICLE(lester(),vehs[mvf_helicopter].id)
|
|
if not IS_MESSAGE_BEING_DISPLAYED()
|
|
and get_game_timer() - iHoleTimer > 2500
|
|
if CREATE_CONVERSATION(convo_struct, "FH1AUD", "FH1_HOLECAM", CONV_PRIORITY_MEDIUM)
|
|
iHoleTimer = get_game_timer()
|
|
iHOLE_INFO_STAGE++
|
|
endif
|
|
endif
|
|
endif
|
|
break
|
|
case 4
|
|
return true
|
|
break
|
|
endswitch
|
|
return false
|
|
ENDFUNC
|
|
FUNC bool Filmed_hole()
|
|
// --------------------------- In position check ---------------------------
|
|
|
|
if IS_ENTITY_IN_ANGLED_AREA(vehs[mvf_helicopter].id,<<30.85060, -616.74359, 30>>,<<19.54452, -648.75940, 48>>,24.0)
|
|
and IS_PED_IN_VEHICLE(trev(),vehs[mvf_helicopter].id)
|
|
and not GET_IS_TASK_ACTIVE(trev(),CODE_TASK_EXIT_VEHICLE)
|
|
//----------------------Can Resume Lester's comments---------------------------
|
|
|
|
if DOES_BLIP_EXIST(blip_objective)
|
|
remove_blip(blip_objective)
|
|
endif
|
|
|
|
bDialoguePlayed = false //reset for lester to say get back to the hole
|
|
|
|
//filming finished
|
|
if not IS_SCRIPTED_CONVERSATION_ONGOING()
|
|
and get_game_timer() - iHoleTimer > 3000
|
|
and HOLE_INFO_DONE()
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_HOLE2",CONV_PRIORITY_VERY_HIGH)
|
|
IF NOT IS_ENTITY_DEAD(TREV())
|
|
IF NOT IS_ENTITY_VISIBLE(TREV())
|
|
SET_ENTITY_VISIBLE(TREV(),true)
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT IS_ENTITY_DEAD(LESTER())
|
|
IF NOT IS_ENTITY_VISIBLE(lester())
|
|
SET_ENTITY_VISIBLE(lester(),true)
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT IS_ENTITY_DEAD(vehs[mvf_helicopter].id)
|
|
IF NOT IS_ENTITY_VISIBLE(vehs[mvf_helicopter].id)
|
|
SET_ENTITY_VISIBLE(vehs[mvf_helicopter].id,true)
|
|
ENDIF
|
|
ENDIF
|
|
RENDER_SCRIPT_CAMS(false,false)
|
|
DISPLAY_RADAR(true)
|
|
DISPLAY_HUD(true)
|
|
SET_PLAYER_CONTROL(player_id(),true)
|
|
STOP_SOUND(camZoom)
|
|
STOP_SOUND(camhum)
|
|
return true
|
|
endif
|
|
endif
|
|
|
|
else // left filming area
|
|
|
|
// lester's comments are interrupted and then tells player to go back(Only once does he tell the player to go back)
|
|
|
|
if not IS_MESSAGE_BEING_DISPLAYED()
|
|
and not bDialoguePlayed
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_HOLEBK",CONV_PRIORITY_MEDIUM)
|
|
bDialoguePlayed = true
|
|
endif
|
|
endif
|
|
|
|
// re blip position
|
|
if not DOES_BLIP_EXIST(blip_objective)
|
|
blip_objective = CREATE_BLIP_FOR_COORD(<< 25.33051, -637.68353, 15.08808 >>)
|
|
endif
|
|
iHoleTimer = get_Game_timer()
|
|
SET_PLAYER_CONTROL(player_id(),true)
|
|
IF NOT IS_PED_INJURED(trev())
|
|
if GET_SCRIPT_TASK_STATUS(trev(),SCRIPT_TASK_VEHICLE_MISSION) = PERFORMING_TASK
|
|
CLEAR_PED_TASKS(trev())
|
|
endif
|
|
ENDIF
|
|
endif
|
|
|
|
if bLesterCam
|
|
SET_PLAYER_CONTROL(player_id(),false)
|
|
IF NOT IS_PED_INJURED(trev())
|
|
if GET_SCRIPT_TASK_STATUS(trev(),SCRIPT_TASK_VEHICLE_MISSION) <> PERFORMING_TASK
|
|
TASK_HELI_MISSION(trev(),vehs[mvf_helicopter].id,null,null,GET_ENTITY_COORDS(vehs[mvf_helicopter].id),MISSION_GOTO,0.01,-1,-1,-1,-1)
|
|
endif
|
|
ENDIF
|
|
else
|
|
SET_PLAYER_CONTROL(player_id(),true)
|
|
IF NOT IS_PED_INJURED(trev())
|
|
if GET_SCRIPT_TASK_STATUS(trev(),SCRIPT_TASK_VEHICLE_MISSION) = PERFORMING_TASK
|
|
CLEAR_PED_TASKS(trev())
|
|
endif
|
|
ENDIF
|
|
endif
|
|
|
|
return false
|
|
ENDFUNC
|
|
proc find_hole_dialogue()
|
|
switch eholestage
|
|
|
|
case HOLE_OBJECTIVE
|
|
if IS_SAFE_TO_DISPLAY_GODTEXT()
|
|
and IS_PED_IN_VEHICLE(TREV(),vehs[mvf_helicopter].id)
|
|
bFrankHELP1 = false
|
|
eholestage = HOLE_UNSEEN
|
|
endif
|
|
break
|
|
|
|
case HOLE_UNSEEN
|
|
|
|
// can see the hole as its on screen for 2.5 secs
|
|
if not bSeenHole
|
|
|
|
//timer before franklin tells the player where exactly to look
|
|
if timera() > 90000
|
|
and mission_substage > STAGE_ENTRY
|
|
and mission_substage < 3
|
|
if not bDialoguePlayed
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_TIMEH",CONV_PRIORITY_VERY_HIGH)
|
|
bDialoguePlayed = true
|
|
endif
|
|
endif
|
|
if not DOES_BLIP_EXIST(blip_objective)
|
|
and not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
blip_objective = CREATE_BLIP_FOR_COORD(vHOLE)
|
|
endif
|
|
endif
|
|
|
|
// at the wrong construction site
|
|
if not bWrongSite
|
|
and GET_DISTANCE_BETWEEN_COORDS(<<73.15453, -374.87485, 38.92091>>,GET_ENTITY_COORDS(TREV())) < 130
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_WRCH",CONV_PRIORITY_VERY_HIGH)
|
|
bWrongSite = true
|
|
endif
|
|
endif
|
|
|
|
if bFrankHELP1
|
|
iONSCREENTIME = 800
|
|
else
|
|
iONSCREENTIME = 2000
|
|
endif
|
|
|
|
if (IS_POINT_VISIBLE(vHOLE,2,200)and not IS_ENTITY_OCCLUDED(objdummy))
|
|
or ( GET_DISTANCE_BETWEEN_COORDS(vHOLE,GET_ENTITY_COORDS(TREV())) < 50)
|
|
if get_game_timer() - iHoleTimer > iONSCREENTIME
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_HOLE1",CONV_PRIORITY_VERY_HIGH)
|
|
bSeenHole = true
|
|
if not DOES_BLIP_EXIST(blip_objective)
|
|
blip_objective = CREATE_BLIP_FOR_COORD(vHOLE)
|
|
endif
|
|
if DOES_ENTITY_EXIST(objdummy)
|
|
DELETE_OBJECT(objdummy)
|
|
endif
|
|
bCloserLest = true
|
|
eholestage = HOLE_SEEN
|
|
endif
|
|
endif
|
|
else
|
|
iHoleTimer = get_game_timer()
|
|
endif
|
|
endif
|
|
|
|
|
|
break
|
|
case HOLE_SEEN
|
|
|
|
if IS_ENTITY_IN_ANGLED_AREA(vehs[mvf_helicopter].id,<<30.85060, -616.74359, 30>>,<<19.54452, -648.75940, 48>>,20)
|
|
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_FINDH",CONV_PRIORITY_VERY_HIGH)
|
|
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED()
|
|
eholestage = HOLE_STABLE
|
|
endif
|
|
else
|
|
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
|
|
endif
|
|
else
|
|
if get_game_timer() - iCloserTimer > 30000
|
|
if bCloserLest
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_ABOVE",CONV_PRIORITY_VERY_HIGH)
|
|
bCloserLest = false
|
|
iCloserTimer = get_game_timer()
|
|
endif
|
|
else
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_HOLEV",CONV_PRIORITY_VERY_HIGH)
|
|
bCloserLest = true
|
|
iCloserTimer = get_game_timer()
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
break
|
|
case HOLE_STABLE
|
|
|
|
break
|
|
endswitch
|
|
endproc
|
|
|
|
proc draw_TimeLeft_meter()
|
|
if not IS_PAUSE_MENU_ACTIVE()
|
|
DRAW_CLOCK("FH1_TIME",true,14,45,TIMER_STYLE_DONTUSEMILLISECONDS)
|
|
endif
|
|
endproc
|
|
proc Checks_Area_Assets()
|
|
|
|
if not bloadGuards
|
|
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),vFRONT_BANK) < 200
|
|
or GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),vBACK_BANK) < 200
|
|
or (mission_stage = enum_to_int(msf_4_heli_follow_truck) and mission_substage > 10)
|
|
REQUEST_MODEL(S_M_M_ARMOURED_01)
|
|
REQUEST_ANIM_DICT("missbigscore1guard_wait_rifle")
|
|
bloadGuards = true
|
|
bcreateGuards = true
|
|
endif
|
|
else
|
|
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),vFRONT_BANK) < 200
|
|
or GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),vBACK_BANK) < 200
|
|
or (mission_stage = enum_to_int(msf_4_heli_follow_truck) and mission_substage > 10)
|
|
if HAS_MODEL_LOADED(S_M_M_ARMOURED_01)
|
|
and HAS_ANIM_DICT_LOADED("missbigscore1guard_wait_rifle")
|
|
and bcreateGuards
|
|
if not IsEntityAlive(peds[mpf_guard].id)
|
|
Create_guard(mpf_guard,<<-77.96, -677.87, 33.47 >>, 64.7755)
|
|
endif
|
|
if not IsEntityAlive(peds[mpf_guardf].id)
|
|
Create_guard(mpf_guardf,<<9.47284, -710.34497, 45.01460>>, 209.3389)
|
|
CLEAR_AREA(<<3.41664, -710.20435, 44.97406>>,4,true)
|
|
endif
|
|
bcreateGuards = false
|
|
endif
|
|
elif GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),vFRONT_BANK) > 230
|
|
and GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),vBACK_BANK) > 230
|
|
if mission_stage != enum_to_int(msf_4_heli_follow_truck)
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(S_M_M_ARMOURED_01)
|
|
endif
|
|
SAFE_RELEASE_PED(peds[mpf_guard].id)
|
|
SAFE_RELEASE_PED(peds[mpf_guardf].id)
|
|
REMOVE_ANIM_DICT("missbigscore1guard_wait_rifle")
|
|
bloadGuards = false
|
|
endif
|
|
endif
|
|
|
|
if mission_stage >= ENUM_TO_INT(msf_4_heli_follow_truck)
|
|
if not bloadDozer
|
|
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),vHOLE) < 300
|
|
REQUEST_MODEL(BULLDOZER)
|
|
bloadDozer = true
|
|
bcreateDozers = true
|
|
endif
|
|
else
|
|
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),vHOLE) < 300
|
|
if HAS_MODEL_LOADED(BULLDOZER)
|
|
and bcreateDozers
|
|
if not IsEntityAlive(vehs[mvf_bulldozer1].id)
|
|
vehs[mvf_bulldozer1].id = CREATE_VEHICLE(bulldozer,<<26.76431, -609.32452, 30.62795>>, 252.2286)
|
|
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehs[mvf_bulldozer1].id,false)
|
|
SET_VEHICLE_ON_GROUND_PROPERLY(vehs[mvf_bulldozer1].id)
|
|
|
|
endif
|
|
if not IsEntityAlive(vehs[mvf_bulldozer2].id)
|
|
vehs[mvf_bulldozer2].id = CREATE_VEHICLE(bulldozer,<<36.85886, -648.69897, 30.62794>>, 140.3838)
|
|
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehs[mvf_bulldozer2].id,false)
|
|
SET_VEHICLE_ON_GROUND_PROPERLY(vehs[mvf_bulldozer2].id)
|
|
endif
|
|
bcreateDozers = false
|
|
endif
|
|
elif GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),vHOLE) > 330
|
|
SAFE_RELEASE_VEHICLE(vehs[mvf_bulldozer1].id)
|
|
SAFE_RELEASE_VEHICLE(vehs[mvf_bulldozer1].id)
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(BULLDOZER)
|
|
bloadDozer = false
|
|
endif
|
|
endif
|
|
endif
|
|
endproc
|
|
proc Check_Death_Fail()
|
|
//=============================== death checks ==========================================
|
|
|
|
for i = 0 to enum_to_int(MPF_NUM_OF_PEDS) -1
|
|
if DOES_ENTITY_EXIST(peds[i].id)
|
|
if IS_PED_INJURED(peds[i].id)
|
|
if peds[i].id = mike()
|
|
Mission_Failed(mff_mike_dead_fail)
|
|
elif peds[i].id = trev()
|
|
Mission_Failed(mff_trevor_dead_fail)
|
|
elif peds[i].id = frank()
|
|
Mission_Failed(mff_franklin_dead_fail)
|
|
elif peds[i].id = lester()
|
|
Mission_Failed(mff_lester_dead_fail)
|
|
elif peds[i].id = peds[mpf_guard].id
|
|
or peds[i].id = peds[mpf_guardf].id
|
|
or peds[i].id = peds[mpf_worker1].id
|
|
or peds[i].id = peds[mpf_worker2].id
|
|
or peds[i].id = peds[mpf_worker3].id
|
|
Mission_Failed(mff_bank_knows)
|
|
endif
|
|
SAFE_RELEASE_PED(peds[i].id)
|
|
ENDIF
|
|
ENDIF
|
|
ENDFOR
|
|
for i = 0 to enum_to_int(MVF_NUM_OF_VEH) -1
|
|
if DOES_ENTITY_EXIST(vehs[i].id)
|
|
if vehs[i].id = vehs[mvf_Michael_veh].id
|
|
and IS_VEHICLE_DRIVEABLE(vehs[i].id)
|
|
if IS_ENTITY_ON_FIRE(vehs[mvf_Michael_veh].id)
|
|
Mission_Failed(mff_Mike_car_des)
|
|
endif
|
|
if DOES_VEHICLE_HAVE_STUCK_VEHICLE_CHECK(vehs[mvf_Michael_veh].id)
|
|
if IS_VEHICLE_STUCK_ON_ROOF(vehs[mvf_Michael_veh].id)
|
|
if PLAYER_PED_ID() = MIKE()
|
|
Mission_Failed(mff_Mike_car_des)
|
|
endif
|
|
endif
|
|
else
|
|
ADD_VEHICLE_UPSIDEDOWN_CHECK(vehs[mvf_Michael_veh].id)
|
|
endif
|
|
endif
|
|
if vehs[i].id = vehs[mvf_trevor_veh].id
|
|
and IS_VEHICLE_DRIVEABLE(vehs[i].id)
|
|
if IS_ENTITY_ON_FIRE(vehs[mvf_trevor_veh].id)
|
|
Mission_Failed(mff_trev_car_des)
|
|
endif
|
|
if DOES_VEHICLE_HAVE_STUCK_VEHICLE_CHECK(vehs[mvf_trevor_veh].id)
|
|
if IS_VEHICLE_STUCK_ON_ROOF(vehs[mvf_trevor_veh].id)
|
|
if PLAYER_PED_ID() = trev()
|
|
Mission_Failed(mff_trev_car_des)
|
|
endif
|
|
endif
|
|
else
|
|
ADD_VEHICLE_UPSIDEDOWN_CHECK(vehs[mvf_trevor_veh].id)
|
|
endif
|
|
endif
|
|
if not IS_VEHICLE_DRIVEABLE(vehs[i].id)
|
|
if vehs[i].id = vehs[mvf_Michael_veh].id
|
|
Mission_Failed(mff_Mike_car_des)
|
|
endif
|
|
if vehs[i].id = vehs[mvf_trevor_veh].id
|
|
|
|
Mission_Failed(mff_Trev_car_des)
|
|
endif
|
|
if vehs[i].id = vehs[mvf_helicopter].id
|
|
Mission_Failed(mff_heli_des)
|
|
endif
|
|
SAFE_RELEASE_VEHICLE(vehs[i].id)
|
|
ELSE
|
|
IF NOT IS_CUTSCENE_PLAYING()
|
|
if vehs[i].id = vehs[mvf_helicopter].id
|
|
IF IS_ENTITY_IN_AIR(vehs[mvf_helicopter].id)
|
|
AND NOT IS_PED_IN_VEHICLE(TREV(), vehs[mvf_helicopter].id)
|
|
VECTOR currenthelipos = GET_ENTITY_COORDS(vehs[mvf_helicopter].id)
|
|
IF currenthelipos.z > 200
|
|
Mission_Failed(mff_left_lester)//mff_left_mission
|
|
SAFE_RELEASE_VEHICLE(vehs[i].id)
|
|
ENDIF
|
|
ENDIF
|
|
endif
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDFOR
|
|
//=============================== fail check ==========================================
|
|
//mike left bank check
|
|
if btimeReset
|
|
|
|
if not Is_clock_time_less_than_or_equal(15,24)
|
|
and mission_stage < enum_To_int(msf_4_heli_follow_truck)
|
|
countdownSound()
|
|
ENDIF
|
|
|
|
if not Is_clock_time_less_than_or_equal(15,30)
|
|
and mission_stage < enum_To_int(msf_4_heli_follow_truck)
|
|
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
|
|
Mission_Failed(mff_time)
|
|
endif
|
|
|
|
if mission_stage < enum_to_int(msf_6_drop_off_point)
|
|
if IsEntityAlive(MIKE())
|
|
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(MIKE(),<<7.03093, -710.37170, 45.01460>>) > 2000
|
|
and player_ped_id() = mike()
|
|
Mission_Failed(mff_left_mission)
|
|
elif GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(MIKE(),<<7.03093, -710.37170, 45.01460>>) > 1900
|
|
and player_ped_id() = mike()
|
|
if IS_SAFE_TO_DISPLAY_GODTEXT()
|
|
and not bLeftArea_printed
|
|
print_now("FH1_MIKERT",DEFAULT_GOD_TEXT_TIME,1)
|
|
bLeftArea_printed = true
|
|
endif
|
|
else
|
|
bLeftArea_printed = false
|
|
endif
|
|
endif
|
|
elif mission_stage = enum_to_int(msf_6_drop_off_point)
|
|
if IsEntityAlive(MIKE())
|
|
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(MIKE(),<<1743.80652, 3270.31860, 40.20966>>) < 600
|
|
and player_ped_id() = mike()
|
|
Mission_Failed(mff_left_mission)
|
|
elif GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(MIKE(),<<1743.80652, 3270.31860, 40.20966>>) < 700
|
|
and player_ped_id() = mike()
|
|
if IS_SAFE_TO_DISPLAY_GODTEXT()
|
|
and not bLeftArea_printed
|
|
print_now("FH1_MISSRT",DEFAULT_GOD_TEXT_TIME,1)
|
|
bLeftArea_printed = true
|
|
endif
|
|
else
|
|
bLeftArea_printed = false
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
//fail check for leaving buddy
|
|
if not IS_CUTSCENE_PLAYING()
|
|
if player_ped_id() = mike()
|
|
if IsEntityAlive(frank())
|
|
fDist = vdist(GET_ENTITY_COORDS(mike()),GET_ENTITY_COORDS(frank()))
|
|
if fdist > 90
|
|
if not bLeftbuddyprint
|
|
PRINT_NOW("FH1_HEADBKF",DEFAULT_GOD_TEXT_TIME,1)
|
|
bLeftbuddyprint = true
|
|
endif
|
|
if fdist > 120
|
|
mission_failed(mff_left_franklin)
|
|
endif
|
|
else
|
|
bLeftbuddyprint = false
|
|
endif
|
|
endif
|
|
elif player_ped_id() = trev()
|
|
if IsEntityAlive(lester())
|
|
if GET_DISTANCE_BETWEEN_ENTITIES(trev(),lester()) > 90
|
|
AND eSwitchCamState = SWITCH_CAM_IDLE
|
|
if not bLeftbuddyprint
|
|
PRINT_NOW("FH1_HEADBKL",DEFAULT_GOD_TEXT_TIME,1)
|
|
bLeftbuddyprint = true
|
|
endif
|
|
if GET_DISTANCE_BETWEEN_ENTITIES(trev(),lester()) > 120
|
|
mission_failed(mff_left_lester)
|
|
endif
|
|
else
|
|
bLeftbuddyprint = false
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
//check if the player is close to the bank to set wanted multiplier
|
|
|
|
if IS_ENTITY_AT_COORD(PLAYER_PED_ID(),<< 4.5757, -707.3064, 46.2527 >>,<<150,150,60>>)
|
|
if wantedMultiplier < 1
|
|
wantedMultiplier = 1
|
|
SET_WANTED_LEVEL_MULTIPLIER(wantedMultiplier)
|
|
endif
|
|
if GET_PLAYER_WANTED_LEVEL(player_id()) > 0
|
|
OR IS_EXPLOSION_IN_AREA(EXP_TAG_DONTCARE, <<-51.41013, -753.00482, 28.25766>>, <<80.25236, -683.17981, 100.06847>>)
|
|
Mission_Failed(mff_bank_knows)
|
|
endif
|
|
else
|
|
if wantedMultiplier > 0
|
|
wantedMultiplier = 0
|
|
SET_WANTED_LEVEL_MULTIPLIER(wantedMultiplier)
|
|
endif
|
|
endif
|
|
|
|
// guards interaction fail
|
|
if DOES_ENTITY_EXIST(peds[mpf_guardF].id)
|
|
If HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(peds[mpf_guardF].id,player_ped_id(),true)
|
|
or IS_PED_IN_COMBAT(peds[mpf_guardf].id,player_ped_id())
|
|
or IS_PED_BEING_STEALTH_KILLED(peds[mpf_guardf].id)
|
|
or IS_PROJECTILE_IN_AREA((GET_ENTITY_COORDS(peds[mpf_guardf].id)- <<15,15,5>>),(GET_ENTITY_COORDS(peds[mpf_guardf].id)+ <<15,15,5>>),true)
|
|
SET_PLAYER_WANTED_LEVEL(player_id(),1)
|
|
if GET_SCRIPT_TASK_STATUS(peds[mpf_guardF].id,SCRIPT_TASK_AIM_GUN_AT_ENTITY) != PERFORMING_TASK
|
|
TASK_AIM_GUN_AT_ENTITY(peds[mpf_guardF].id,player_ped_id(),-1)
|
|
endif
|
|
Mission_Failed(mff_bank_knows)
|
|
endif
|
|
endif
|
|
if DOES_ENTITY_EXIST(peds[mpf_guard].id)
|
|
if HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(peds[mpf_guard].id,player_ped_id(),true)
|
|
or IS_PED_IN_COMBAT(peds[mpf_guard].id,player_ped_id())
|
|
or IS_PROJECTILE_IN_AREA((GET_ENTITY_COORDS(peds[mpf_guard].id)- <<15,15,5>>),(GET_ENTITY_COORDS(peds[mpf_guard].id)+ <<15,15,5>>),true)
|
|
SET_PLAYER_WANTED_LEVEL(player_id(),1)
|
|
if GET_SCRIPT_TASK_STATUS(peds[mpf_guard].id,SCRIPT_TASK_AIM_GUN_AT_ENTITY) != PERFORMING_TASK
|
|
TASK_AIM_GUN_AT_ENTITY(peds[mpf_guard].id,player_ped_id(),-1)
|
|
endif
|
|
Mission_Failed(mff_bank_knows)
|
|
endif
|
|
endif
|
|
|
|
if IsEntityAlive(player_ped_id())
|
|
if IS_PED_IN_ANY_VEHICLE(player_ped_id())
|
|
if IS_PED_IN_ANY_HELI(player_ped_id())
|
|
if IS_ENTITY_IN_ANGLED_AREA(player_ped_id(),<<-98.69806, -671.90033, 34.46694>>,<<-85.72156, -676.68573, 40.92188>>,25)
|
|
or IS_ENTITY_IN_ANGLED_AREA(player_ped_id(),<<4.47685, -705.70099, 58.89827>>,<<17.18902, -732.90491, 43.21600>>,47)
|
|
if IsEntityAlive(peds[mpf_guard].id)
|
|
if GET_SCRIPT_TASK_STATUS(peds[mpf_guard].id,SCRIPT_TASK_AIM_GUN_AT_ENTITY) != PERFORMING_TASK
|
|
TASK_AIM_GUN_AT_ENTITY(peds[mpf_guard].id,player_ped_id(),-1)
|
|
endif
|
|
endif
|
|
if IsEntityAlive(peds[mpf_guardF].id)
|
|
if GET_SCRIPT_TASK_STATUS(peds[mpf_guardF].id,SCRIPT_TASK_AIM_GUN_AT_ENTITY) != PERFORMING_TASK
|
|
TASK_AIM_GUN_AT_ENTITY(peds[mpf_guardF].id,player_ped_id(),-1)
|
|
endif
|
|
endif
|
|
Mission_Failed(mff_bank_knows)
|
|
endif
|
|
else
|
|
if IS_ENTITY_AT_COORD(player_ped_id(),<<8.12, -713.66, 44.57>>,<<12,12,5>>)
|
|
or IS_ENTITY_IN_ANGLED_AREA(player_ped_id(),<<30.85060, -616.74359, 15>>,<<19.54452, -648.75940, 29>>,20)
|
|
if IsEntityAlive(peds[mpf_guard].id)
|
|
if GET_SCRIPT_TASK_STATUS(peds[mpf_guard].id,SCRIPT_TASK_AIM_GUN_AT_ENTITY) != PERFORMING_TASK
|
|
TASK_AIM_GUN_AT_ENTITY(peds[mpf_guard].id,player_ped_id(),-1)
|
|
endif
|
|
endif
|
|
if IsEntityAlive(peds[mpf_guardF].id)
|
|
if GET_SCRIPT_TASK_STATUS(peds[mpf_guardF].id,SCRIPT_TASK_AIM_GUN_AT_ENTITY) != PERFORMING_TASK
|
|
TASK_AIM_GUN_AT_ENTITY(peds[mpf_guardF].id,player_ped_id(),-1)
|
|
endif
|
|
endif
|
|
Mission_Failed(mff_bank_knows)
|
|
endif
|
|
endif
|
|
endif
|
|
if IS_ENTITY_IN_ANGLED_AREA(player_ped_id(),<<-83.04369, -678.85724, 38>>,<<-69.75829, -683.59113, 32.18783>>,14)
|
|
if IsEntityAlive(peds[mpf_guard].id)
|
|
if GET_SCRIPT_TASK_STATUS(peds[mpf_guard].id,SCRIPT_TASK_AIM_GUN_AT_ENTITY) != PERFORMING_TASK
|
|
TASK_AIM_GUN_AT_ENTITY(peds[mpf_guard].id,player_ped_id(),-1)
|
|
endif
|
|
endif
|
|
Mission_Failed(mff_bank_knows)
|
|
endif
|
|
endif
|
|
|
|
endif
|
|
|
|
endproc
|
|
proc CHECKS_heli()
|
|
//heli
|
|
if IsEntityAlive(vehs[mvf_helicopter].id)
|
|
if GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehs[mvf_helicopter].id),GET_ENTITY_COORDS(player_ped_id())) < 200
|
|
and not bheliset
|
|
SET_VEHICLE_ON_GROUND_PROPERLY(vehs[mvf_helicopter].id)
|
|
FREEZE_ENTITY_POSITION(vehs[mvf_helicopter].id,false)
|
|
bheliset = true
|
|
endif
|
|
if player_ped_id() = MIKE()
|
|
SET_VEHICLE_ENGINE_CAN_DEGRADE(vehs[mvf_helicopter].id,false)
|
|
if GET_VEHICLE_ENGINE_HEALTH(vehs[mvf_helicopter].id) < 300
|
|
SET_VEHICLE_ENGINE_HEALTH(vehs[mvf_helicopter].id,550)
|
|
endif
|
|
set_vehicle_is_considered_by_player(vehs[mvf_helicopter].id,false)
|
|
elif player_ped_id() = TREV()
|
|
SET_VEHICLE_ENGINE_CAN_DEGRADE(vehs[mvf_helicopter].id,false)
|
|
set_vehicle_is_considered_by_player(vehs[mvf_helicopter].id,true)
|
|
endif
|
|
else
|
|
if DOES_ENTITY_EXIST(TREV())
|
|
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(TREV(),vAIRFIELD) < 300
|
|
DELETE_VEHICLE_GEN_VEHICLE(VEHGEN_WEB_HELIPAD_TREVOR_COUNTRY)
|
|
if HAS_MODEL_LOADED(frogger2)
|
|
vehs[mvf_helicopter].id = CREATE_VEHICLE(frogger2,<< 1758.3090, 3284.5278, 40.7 >>, 133.1852 )
|
|
SET_ENTITY_ALWAYS_PRERENDER(vehs[mvf_helicopter].id,true)
|
|
SET_VEHICLE_LIVERY(vehs[mvf_helicopter].id,1)
|
|
SET_ENTITY_COLLISION(vehs[mvf_helicopter].id,true)
|
|
FREEZE_ENTITY_POSITION(vehs[mvf_helicopter].id,true)
|
|
Unload_Asset_Model(sAssetData,frogger2)
|
|
endif
|
|
elif GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(TREV(),vAIRFIELD) < 350
|
|
Load_Asset_Model(sAssetData,frogger2)
|
|
endif
|
|
endif
|
|
endif
|
|
// VEH's Check for trevor in the heli
|
|
if mission_stage = ENUM_TO_INT(msf_4_heli_follow_truck)
|
|
or mission_stage = ENUM_TO_INT(msf_5_CONSTRUCTION_HOLE)
|
|
if DOES_ENTITY_EXIST(vehs[mvf_helicopter].id)
|
|
and DOES_ENTITY_EXIST(trev())
|
|
and not IS_CUTSCENE_PLAYING()
|
|
if not IS_PED_IN_VEHICLE(trev(),vehs[mvf_helicopter].id)
|
|
if bheliPrintDisplayed = false
|
|
PRINT_NOW("FH1_BKHELI",DEFAULT_GOD_TEXT_TIME,1)
|
|
bheliPrintDisplayed = true
|
|
endif
|
|
if DOES_BLIP_EXIST(blip_objective)
|
|
SET_BLIP_DISPLAY(blip_objective,DISPLAY_NOTHING)
|
|
endif
|
|
if not DOES_BLIP_EXIST(vehs[mvf_helicopter].blip)
|
|
vehs[mvf_helicopter].blip = CREATE_BLIP_FOR_VEHICLE(vehs[mvf_helicopter].id,false)
|
|
endif
|
|
else
|
|
bheliPrintDisplayed = false
|
|
if DOES_BLIP_EXIST(blip_objective)
|
|
SET_BLIP_DISPLAY(blip_objective,DISPLAY_BLIP)
|
|
endif
|
|
if DOES_BLIP_EXIST(vehs[mvf_helicopter].blip)
|
|
remove_blip(vehs[mvf_helicopter].blip)
|
|
endif
|
|
endif
|
|
endif
|
|
else
|
|
if DOES_BLIP_EXIST(vehs[mvf_helicopter].blip)
|
|
remove_blip(vehs[mvf_helicopter].blip)
|
|
endif
|
|
endif
|
|
|
|
//trevor pos check
|
|
if player_ped_id() != TREV()
|
|
if IsEntityAlive(vehs[mvf_trevor_veh].id)
|
|
and IsEntityAlive(TREV())
|
|
and IsEntityAlive(LESTER())
|
|
and heli_switch = TO_HELI
|
|
if GET_DISTANCE_BETWEEN_COORDS(vAIRFIELD,GET_ENTITY_COORDS(vehs[mvf_trevor_veh].id)) < 60
|
|
if DOES_ENTITY_EXIST(vehs[mvf_helicopter].id)
|
|
and IS_VEHICLE_DRIVEABLE(vehs[mvf_helicopter].id)
|
|
FREEZE_ENTITY_POSITION(vehs[mvf_helicopter].id,false)
|
|
SET_PED_INTO_VEHICLE(lester(),vehs[mvf_helicopter].id,VS_BACK_LEFT)
|
|
heli_switch = TO_TRUCKS
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
endproc
|
|
proc CHECKS_lester()
|
|
//used to attach the camera to lester
|
|
if DOES_ENTITY_EXIST(objcam)
|
|
and IsEntityAlive(lester())
|
|
if not battachedCam
|
|
if DOES_ENTITY_HAVE_PHYSICS(objCam)
|
|
and DOES_ENTITY_HAVE_PHYSICS(lester())
|
|
ATTACH_ENTITY_TO_ENTITY(objcam,lester(),GET_PED_BONE_INDEX(lester(),BONETAG_PH_R_HAND),<<0,0,0>>,<<0,0,0>>)
|
|
IF IsEntityAlive(vehs[mvf_helicopter].id)
|
|
SET_ENTITY_NO_COLLISION_ENTITY(objcam,vehs[mvf_helicopter].id,FALSE)
|
|
ENDIF
|
|
battachedCam = true
|
|
endif
|
|
endif
|
|
endif
|
|
//stop lester sprinting
|
|
if IsEntityAlive(lester())
|
|
SET_PED_MAX_MOVE_BLEND_RATIO(lester(),PEDMOVEBLENDRATIO_WALK)
|
|
endif
|
|
//Lester looks at trev
|
|
if mission_stage < enum_to_int(msf_4_heli_follow_truck)
|
|
if IsEntityAlive(LESTER())
|
|
and IsEntityAlive(vehs[mvf_helicopter].id)
|
|
and IsEntityAlive(TREV())
|
|
if IS_PED_IN_VEHICLE(lester(),vehs[mvf_helicopter].id)
|
|
if not IS_PED_HEADTRACKING_ENTITY(lester(),trev())
|
|
TASK_LOOK_AT_ENTITY(lester(),TREV(),-1,SLF_WHILE_NOT_IN_FOV|SLF_WIDEST_YAW_LIMIT|SLF_WIDEST_PITCH_LIMIT)
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
endproc
|
|
proc CHECKS_hole()
|
|
//construction hole
|
|
if mission_stage > enum_to_int(msf_4_heli_follow_truck)
|
|
if IsEntityAlive(player_ped_id())
|
|
//construction audio
|
|
if not bAUDIOStreamLoaded
|
|
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),vHOLE) < 250
|
|
if LOAD_STREAM("Construction_Stream","BIG_SCORE_SETUP_SOUNDS")
|
|
bAUDIOStreamLoaded = true
|
|
endif
|
|
endif
|
|
else
|
|
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),vHOLE) > 250
|
|
STOP_STREAM()
|
|
bAUDIOStreamLoaded = false
|
|
bplayingstream = false
|
|
else
|
|
if not bplayingstream
|
|
and bAUDIOStreamLoaded
|
|
PLAY_STREAM_FROM_POSITION(<<26,-636, 17>>)
|
|
bplayingstream = true
|
|
endif
|
|
endif
|
|
endif
|
|
//peds in hole
|
|
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),vHOLE) < 300
|
|
if b_create_workers
|
|
/*if bworkersloaded
|
|
if not IsEntityAlive(peds[mpf_worker1].id)
|
|
peds[mpf_worker1].id = create_ped(PEDTYPE_MISSION,S_M_Y_CONSTRUCT_01,<<5.91112, -655.18097, 15.09623>>,173.28)
|
|
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(peds[mpf_worker1].id,true)
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(peds[mpf_worker1].id,true)
|
|
TASK_START_SCENARIO_AT_POSITION(peds[mpf_worker1].id,"WORLD_HUMAN_HAMMERING",<<5.91112, -655.18097, 15.09623>>,173.28)
|
|
endif
|
|
if not IsEntityAlive(peds[mpf_worker2].id)
|
|
peds[mpf_worker2].id = create_ped(PEDTYPE_MISSION,S_M_Y_CONSTRUCT_01,<<14.64482, -647.54327, 15.08808>>,117.52)
|
|
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(peds[mpf_worker2].id,true)
|
|
TASK_START_SCENARIO_AT_POSITION(peds[mpf_worker2].id,"WORLD_HUMAN_WELDING",<<14.64482, -647.54327, 15.08808>>,117.52)
|
|
endif
|
|
if not IsEntityAlive(peds[mpf_worker3].id)
|
|
peds[mpf_worker3].id = create_ped(PEDTYPE_MISSION,S_M_Y_CONSTRUCT_01,<<10.53172, -626.45038, 14.68462>>,-176.69)
|
|
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(peds[mpf_worker3].id,true)
|
|
TASK_START_SCENARIO_AT_POSITION(peds[mpf_worker3].id,"WORLD_HUMAN_CONST_DRILL",<<10.53172, -626.45038, 14.68462>>,-176.69)
|
|
endif
|
|
if not IsEntityAlive(peds[mpf_worker4].id)
|
|
peds[mpf_worker4].id = create_ped(PEDTYPE_MISSION,S_M_Y_CONSTRUCT_01,<<37.45826, -668.00366, 15.48347>>,-63.09)
|
|
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(peds[mpf_worker4].id,true)
|
|
OPEN_SEQUENCE_TASK(seq)
|
|
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-7.47202, -610.15527, 14.60039>>,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP)
|
|
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<37.10248, -667.52417, 15.48347>>,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP)
|
|
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<7.00026, -654.31519, 15.09687>>,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP)
|
|
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<38.43104, -643.26019, 15.08808>>,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP)
|
|
SET_SEQUENCE_TO_REPEAT(seq,REPEAT_FOREVER)
|
|
CLOSE_SEQUENCE_TASK(seq)
|
|
TASK_PERFORM_SEQUENCE(peds[mpf_worker4].id,seq)
|
|
CLEAR_SEQUENCE_TASK(seq)
|
|
endif
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(S_M_Y_CONSTRUCT_01)
|
|
b_create_workers = false
|
|
bworkersloaded = false
|
|
else
|
|
REQUEST_MODEL(S_M_Y_CONSTRUCT_01)
|
|
if HAS_MODEL_LOADED(S_M_Y_CONSTRUCT_01)
|
|
bworkersloaded = true
|
|
endif
|
|
endif*/
|
|
endif
|
|
elif GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),vHOLE) > 330
|
|
b_create_workers = true
|
|
if DOES_ENTITY_EXIST(peds[mpf_worker1].id)
|
|
safe_delete_ped(peds[mpf_worker1].id)
|
|
endif
|
|
if DOES_ENTITY_EXIST(peds[mpf_worker2].id)
|
|
SAFE_DELETE_PED(peds[mpf_worker2].id)
|
|
endif
|
|
if DOES_ENTITY_EXIST(peds[mpf_worker3].id)
|
|
SAFE_DELETE_PED(peds[mpf_worker3].id)
|
|
endif
|
|
if DOES_ENTITY_EXIST(peds[mpf_worker4].id)
|
|
SAFE_DELETE_PED(peds[mpf_worker4].id)
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
endproc
|
|
PROC MISSION_CHECKS()
|
|
|
|
if btimeReset
|
|
if mission_stage < enum_to_int(msf_4_heli_follow_truck)
|
|
AUDIO_manange_dialogue()
|
|
draw_TimeLeft_meter()
|
|
endif
|
|
endif
|
|
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
IF DOES_ENTITY_EXIST(vehs[mvf_helicopter].id)
|
|
AND DOES_ENTITY_EXIST(trev())
|
|
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_helicopter].id)
|
|
IF IS_PED_IN_VEHICLE(trev(),vehs[mvf_helicopter].id)
|
|
INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(NULL,FH1_CAR_DAMAGE)
|
|
INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(vehs[mvf_helicopter].id,FH1_HELI_DAMAGE)
|
|
ENDIF
|
|
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_trevor_veh].id)
|
|
IF IS_PED_IN_VEHICLE(trev(),vehs[mvf_trevor_veh].id)
|
|
INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(vehs[mvf_trevor_veh].id,FH1_CAR_DAMAGE)
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_trevor_veh].id)
|
|
IF IS_PED_IN_VEHICLE(trev(),vehs[mvf_trevor_veh].id)
|
|
INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(vehs[mvf_trevor_veh].id,FH1_CAR_DAMAGE)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF DOES_ENTITY_EXIST(vehs[mvf_Michael_veh].id)
|
|
AND DOES_ENTITY_EXIST(MIKE())
|
|
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_Michael_veh].id)
|
|
IF IS_PED_IN_VEHICLE(mike(),vehs[mvf_Michael_veh].id)
|
|
PRINTSTRING("Checking damage on Mikes car")PRINTNL()
|
|
INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(vehs[mvf_Michael_veh].id,FH1_CAR_DAMAGE)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
Manage_hotswap()
|
|
DO_SHAKE_INTERP()
|
|
Checks_Area_Assets()
|
|
Check_Death_Fail()
|
|
CHECKS_heli()
|
|
CHECKS_lester()
|
|
CHECKS_hole()
|
|
|
|
//stats
|
|
if DOES_ENTITY_EXIST(player_ped_id())
|
|
and not IS_PED_INJURED(player_ped_id())
|
|
if IS_PED_IN_ANY_VEHICLE(player_ped_id())
|
|
|
|
IF NOT IS_PED_IN_ANY_BOAT(PLAYER_PED_ID())
|
|
AND NOT IS_PED_IN_ANY_PLANE(PLAYER_PED_ID())
|
|
AND NOT IS_PED_IN_ANY_HELI(PLAYER_PED_ID())
|
|
INFORM_MISSION_STATS_OF_SPEED_WATCH_ENTITY(GET_VEHICLE_PED_IS_IN(player_ped_id()), FH1_MAX_SPEED)
|
|
PRINTLN("Setting FH1_MAX_SPEED to watch player veh")
|
|
ELSE
|
|
PRINTLN("Setting FH1_MAX_SPEED to null")
|
|
INFORM_MISSION_STATS_OF_SPEED_WATCH_ENTITY(null, FH1_MAX_SPEED)
|
|
ENDIF
|
|
|
|
IF DOES_ENTITY_EXIST(vehs[mvf_helicopter].id)
|
|
AND DOES_ENTITY_EXIST(trev())
|
|
IF IS_PED_IN_VEHICLE(trev(),vehs[mvf_helicopter].id)
|
|
PRINTLN("Setting FH1_MAX_HELI_SPEED to watch player veh")
|
|
INFORM_MISSION_STATS_OF_SPEED_WATCH_ENTITY(GET_VEHICLE_PED_IS_IN(player_ped_id()), FH1_MAX_HELI_SPEED)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
else
|
|
PRINTLN("Setting all speed watch to null")
|
|
INFORM_MISSION_STATS_OF_SPEED_WATCH_ENTITY(null)
|
|
endif
|
|
endif
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
iheliWidget = enum_to_int(heli_switch)
|
|
wDialoguestage = enum_to_int(eDialogue_stateM)
|
|
wBOTH_dialogue = ENUM_TO_INT(eBOTH_dialogue)
|
|
wTREV_Dialogue = ENUM_TO_INT(eTREV_Dialogue)
|
|
wMike_dialogue = ENUM_TO_INT(eMike_dialogue)
|
|
wb_TREVSpeechSwitchStopped = b_TREVSpeechSwitchStopped
|
|
wb_MIKESpeechSwitchStopped = b_MIKESpeechSwitchStopped
|
|
#endif
|
|
|
|
ENDPROC
|
|
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
// MISSION SETUP
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
|
|
PROC MISSION_SETUP()
|
|
bHotSwap = false
|
|
|
|
camhum = GET_SOUND_ID()
|
|
camzoom = GET_SOUND_ID()
|
|
|
|
SET_ALL_RANDOM_PEDS_FLEE(player_id(),true)
|
|
REMOVE_RELATIONSHIP_GROUP(rel_buddy)
|
|
REMOVE_RELATIONSHIP_GROUP(rel_guard)
|
|
ADD_RELATIONSHIP_GROUP("BUDDY", rel_buddy)
|
|
ADD_RELATIONSHIP_GROUP("GUARD",rel_guard)
|
|
|
|
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE,rel_buddy,rel_buddy)
|
|
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE,RELGROUPHASH_PLAYER,rel_buddy)
|
|
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE,rel_buddy,RELGROUPHASH_PLAYER)
|
|
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE,rel_guard,rel_guard)
|
|
|
|
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_DISLIKE,RELGROUPHASH_PLAYER,rel_guard)
|
|
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_DISLIKE,rel_guard,RELGROUPHASH_PLAYER)
|
|
|
|
ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE,false)
|
|
ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE_WAIT_CRUISING,false)
|
|
ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE_WAIT_PULLED_OVER ,false)
|
|
|
|
SET_VEHICLE_GEN_AVAILABLE(VEHGEN_WEB_HELIPAD_TREVOR_COUNTRY, FALSE)
|
|
SET_BUILDING_STATE( BUILDINGNAME_IPL_BIG_SCORE_HOLE_COVER, BUILDINGSTATE_DESTROYED)
|
|
SET_BUILDING_STATE( BUILDINGNAME_IPL_JEWEL_HEIST_BIKE_TUNNELS, BUILDINGSTATE_DESTROYED)
|
|
|
|
SET_VEHICLE_MODEL_IS_SUPPRESSED(TAILGATER,true)
|
|
SET_VEHICLE_MODEL_IS_SUPPRESSED(BODHI2,true)
|
|
SET_VEHICLE_MODEL_IS_SUPPRESSED(bus,true)
|
|
disable_taxi_hailing(true)
|
|
|
|
SET_MAX_WANTED_LEVEL(2)
|
|
SET_WEATHER_TYPE_PERSIST("EXTRASUNNY")
|
|
|
|
SET_BUILDING_STATE(BUILDINGNAME_ES_BANK_CAR_PARK_SHUTTERS,BUILDINGSTATE_NORMAL)
|
|
|
|
SET_MISSION_START_VEHICLE_AS_VEHICLE_GEN(<<78.4684, -1295.3275, 28.1690>>, 29.1546)
|
|
RESOLVE_VEHICLES_INSIDE_ANGLED_AREA(<<77.12664, -1261.75354, 28.25048>>,<<104.40543, -1305.11694, 39.38937>>,40,<<78.4684, -1295.3275, 28.1690>>, 29.1546)
|
|
//Dan H delete player's vehicle if not franklin
|
|
DELETE_ALL_SCRIPT_CREATED_PLAYER_VEHICLES(CHAR_MICHAEL | CHAR_TREVOR)
|
|
|
|
btimeReset = false
|
|
IF Is_Replay_In_Progress()
|
|
or IS_REPEAT_PLAY_ACTIVE()
|
|
|
|
PRINTLN("REPLAY IS IN PROGRESS!")
|
|
|
|
IF Is_Replay_In_Progress()
|
|
iSkipToStage = Get_Replay_Mid_Mission_Stage()
|
|
if g_bShitskipAccepted
|
|
iSkipToStage++
|
|
if iskipToStage >= 7
|
|
iskipToStage = 7
|
|
endif
|
|
endif
|
|
b_zskipped = false
|
|
elif IS_REPEAT_PLAY_ACTIVE()
|
|
iSkipToStage = 0
|
|
endif
|
|
// New replay streaming
|
|
IF IS_REPLAY_IN_PROGRESS()
|
|
VECTOR vSkipToCoord
|
|
FLOAT fSkipToHeading
|
|
GET_SKIP_STAGE_COORD_AND_HEADING(int_to_enum(MSF_MISSION_STAGE_FLAGS,iSkipToStage), vSkipToCoord, fSkipToHeading,g_replay.iReplayInt[2])
|
|
START_REPLAY_SETUP(vSkipToCoord, fSkipToHeading)
|
|
ENDIF
|
|
|
|
bDoSkip = TRUE
|
|
ELSE
|
|
//Grab trev
|
|
IF NOT DOES_ENTITY_EXIST(peds[mpf_trevor].id)
|
|
IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.ped[0])
|
|
SET_ENTITY_AS_MISSION_ENTITY(g_sTriggerSceneAssets.ped[0], TRUE, TRUE)
|
|
peds[mpf_trevor].id = g_sTriggerSceneAssets.ped[0]
|
|
ENDIF
|
|
ENDIF
|
|
//Grab mike
|
|
IF NOT DOES_ENTITY_EXIST(peds[mpf_michael].id)
|
|
IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.ped[1])
|
|
SET_ENTITY_AS_MISSION_ENTITY(g_sTriggerSceneAssets.ped[1], TRUE, TRUE)
|
|
peds[mpf_michael].id = g_sTriggerSceneAssets.ped[1]
|
|
ENDIF
|
|
ENDIF
|
|
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(0,"Stage 0: Strip club")
|
|
mission_stage = enum_to_int(msf_0_strip_club)
|
|
Load_asset_Stage(msf_0_strip_club)
|
|
g_replay.iReplayInt[0] = 0
|
|
g_replay.iReplayInt[1] = 0
|
|
g_replay.iReplayInt[2] = 0
|
|
endif
|
|
|
|
mission_substage = STAGE_ENTRY
|
|
|
|
IF IS_PLAYER_PLAYING(PLAYER_ID())
|
|
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
// Initial Cutscene
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
Proc Run_Init_CutScene()
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF IS_CUTSCENE_ACTIVE()
|
|
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J)
|
|
STOP_CUTSCENE()
|
|
REMOVE_CUTSCENE()
|
|
WHILE IS_CUTSCENE_ACTIVE()
|
|
WAIT(0)
|
|
ENDWHILE
|
|
ENDIF
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
IF NOT b_cutscene_loaded
|
|
if NOT IS_CUTSCENE_ACTIVE()
|
|
|
|
if GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
REQUEST_CUTSCENE_WITH_PLAYBACK_LIST("bs_1_int", CS_SECTION_1 | CS_SECTION_2 | CS_SECTION_3 | CS_SECTION_4 | CS_SECTION_5 | CS_SECTION_6 | CS_SECTION_7 | CS_SECTION_8 |
|
|
CS_SECTION_9)
|
|
elif GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
REQUEST_CUTSCENE_WITH_PLAYBACK_LIST("bs_1_int", CS_SECTION_3 | CS_SECTION_4 | CS_SECTION_5 | CS_SECTION_6 | CS_SECTION_7 | CS_SECTION_8 |
|
|
CS_SECTION_9)
|
|
elif GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN
|
|
REQUEST_CUTSCENE_WITH_PLAYBACK_LIST("bs_1_int", CS_SECTION_4 | CS_SECTION_5 | CS_SECTION_6 | CS_SECTION_7 | CS_SECTION_8 |
|
|
CS_SECTION_9)
|
|
endif
|
|
set_peds_CS_OUTFITS()
|
|
WAIT(0)
|
|
endif
|
|
IF HAS_CUTSCENE_LOADED()
|
|
//pre mission setup
|
|
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
|
|
|
|
if GET_CURRENT_PLAYER_PED_ENUM() != CHAR_TREVOR
|
|
if IsEntityAlive(peds[mpf_trevor].id)
|
|
REGISTER_ENTITY_FOR_CUTSCENE(peds[mpf_trevor].id,"Trevor",CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
|
|
else
|
|
REGISTER_ENTITY_FOR_CUTSCENE(null,"Trevor",CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY,GET_PLAYER_PED_MODEL(CHAR_TREVOR))
|
|
endif
|
|
endif
|
|
if GET_CURRENT_PLAYER_PED_ENUM() != CHAR_MICHAEL
|
|
if IsEntityAlive(peds[mpf_michael].id)
|
|
REGISTER_ENTITY_FOR_CUTSCENE(peds[mpf_michael].id,"Michael",CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
|
|
else
|
|
REGISTER_ENTITY_FOR_CUTSCENE(null,"Michael",CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY,GET_PLAYER_PED_MODEL(CHAR_MICHAEL))
|
|
endif
|
|
endif
|
|
if GET_CURRENT_PLAYER_PED_ENUM() != CHAR_FRANKLIN
|
|
if IsEntityAlive(peds[mpf_franklin].id)
|
|
REGISTER_ENTITY_FOR_CUTSCENE(peds[mpf_franklin].id,"Franklin",CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
|
|
else
|
|
REGISTER_ENTITY_FOR_CUTSCENE(null,"Franklin",CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY,GET_PLAYER_PED_MODEL(CHAR_FRANKLIN))
|
|
endif
|
|
endif
|
|
|
|
REGISTER_ENTITY_FOR_CUTSCENE(null,"Lester",CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY,GET_NPC_PED_MODEL(CHAR_LESTER))
|
|
|
|
if DOES_ENTITY_EXIST(g_sTriggerSceneAssets.object[0])
|
|
if IS_ENTITY_ATTACHED(g_sTriggerSceneAssets.object[0])
|
|
DETACH_ENTITY(g_sTriggerSceneAssets.object[0],false)
|
|
endif
|
|
REGISTER_ENTITY_FOR_CUTSCENE(g_sTriggerSceneAssets.object[0],"BS_Beer_Bottle",CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY)
|
|
endif
|
|
|
|
// if DOES_ENTITY_EXIST(g_sTriggerSceneAssets.object[1])
|
|
// REGISTER_ENTITY_FOR_CUTSCENE(g_sTriggerSceneAssets.object[1],"stripclub_fridge_door",CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY)
|
|
// endif
|
|
//
|
|
// if DOES_ENTITY_EXIST(g_sTriggerSceneAssets.object[2])
|
|
// REGISTER_ENTITY_FOR_CUTSCENE(g_sTriggerSceneAssets.object[2],"stripclub_fridge",CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY)
|
|
// endif
|
|
if GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
START_CUTSCENE(CUTSCENE_PLAYER_FP_FLASH_MICHAEL)
|
|
elif GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
START_CUTSCENE()
|
|
elif GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN
|
|
START_CUTSCENE(CUTSCENE_PLAYER_FP_FLASH_MICHAEL)
|
|
endif
|
|
b_cutscene_loaded = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
endproc
|
|
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
// Mission stages
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
PROC ST_0_STRIP_CLUB()
|
|
Switch mission_substage
|
|
case STAGE_ENTRY
|
|
if IS_REPLAY_IN_PROGRESS()
|
|
mission_substage = 3
|
|
else
|
|
Run_Init_CutScene()
|
|
IF b_cutscene_loaded
|
|
mission_substage++
|
|
endif
|
|
endif
|
|
break
|
|
case 1
|
|
if IS_CUTSCENE_PLAYING()
|
|
if IS_REPEAT_PLAY_ACTIVE()
|
|
and IS_SCREEN_FADED_OUT()
|
|
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
|
|
endif
|
|
STOP_GAMEPLAY_HINT(TRUE)
|
|
SET_TODS_CUTSCENE_RUNNING(sTimelapse, false,false,2000,true,false)
|
|
SET_CLOCK_TIME(12,0,0)
|
|
btimeReset = true
|
|
CLEAR_AREA(<< 90.3864, -1278.8374, 28.0896 >>,200,true)
|
|
|
|
DELETE_VEHICLE_GEN_VEHICLES_IN_AREA(<< 90.3864, -1278.8374, 28.0896 >>,20)
|
|
DELETE_VEHICLE_GEN_VEHICLE(VEHGEN_TREVOR_SAVEHOUSE_STRIPCLUB)
|
|
DELETE_VEHICLE_GEN_VEHICLE(VEHGEN_WEB_HELIPAD_TREVOR_COUNTRY)
|
|
CLEAR_MUST_LEAVE_AREA_VEHICLE_GEN_FLAG(VEHGEN_WEB_HELIPAD_TREVOR_COUNTRY)
|
|
|
|
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
|
|
|
|
mission_substage++
|
|
endif
|
|
break
|
|
case 2
|
|
if IS_CUTSCENE_PLAYING()
|
|
if not IsEntityAlive(vehs[mvf_Michael_veh].id)
|
|
CREATE_PLAYER_VEHICLE(vehs[mvf_Michael_veh].id,CHAR_MICHAEL,<< 90.3864, -1278.8374, 28.0896 >>, 98.4832)
|
|
|
|
elif not IsEntityAlive(vehs[mvf_trevor_veh].id)
|
|
if CREATE_PLAYER_VEHICLE(vehs[mvf_trevor_veh].id,CHAR_TREVOR,<< 83.4733, -1281.3232, 29.1518 >>, 96.9356)
|
|
SET_ENTITY_COLLISION(vehs[mvf_trevor_veh].id,true)
|
|
endif
|
|
|
|
elif not IsEntityAlive(TREV())
|
|
and GET_CURRENT_PLAYER_PED_ENUM() != CHAR_TREVOR
|
|
if DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Trevor"))
|
|
peds[mpf_trevor].id = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Trevor"))
|
|
endif
|
|
|
|
elif not IsEntityAlive(MIKE())
|
|
and GET_CURRENT_PLAYER_PED_ENUM() != CHAR_MICHAEL
|
|
if DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Michael"))
|
|
peds[mpf_michael].id = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Michael"))
|
|
endif
|
|
|
|
elif not IsEntityAlive(FRANK())
|
|
and GET_CURRENT_PLAYER_PED_ENUM() != CHAR_FRANKLIN
|
|
if DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Franklin"))
|
|
peds[mpf_franklin].id = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Franklin"))
|
|
endif
|
|
|
|
elif not IsEntityAlive(LESTER())
|
|
if DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Lester"))
|
|
peds[mpf_lester].id = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Lester"))
|
|
endif
|
|
|
|
else
|
|
Hotswap_Menu(false,true,true)
|
|
bcs_mike = false
|
|
bcs_trev = false
|
|
bcs_frank = false
|
|
bcs_lester = false
|
|
bcs_cam = false
|
|
bSwitchedToMike = false
|
|
mission_substage++
|
|
endif
|
|
endif
|
|
break
|
|
case 3
|
|
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Michael")
|
|
OR NOT IS_CUTSCENE_PLAYING()
|
|
REPLAY_STOP_EVENT()
|
|
|
|
if GET_CURRENT_PLAYER_PED_ENUM() != CHAR_MICHAEL
|
|
MAKE_SELECTOR_PED_SELECTION(sSelectorPeds,SELECTOR_PED_MICHAEL)
|
|
TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds, TRUE, TRUE)
|
|
peds[mpf_trevor].id = sSelectorPeds.pedID[SELECTOR_PED_TREVOR]
|
|
peds[mpf_franklin].id = sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN]
|
|
bSwitchedToMike = true
|
|
endif
|
|
peds[mpf_michael].id = player_ped_id()
|
|
SET_ENTITY_COORDS(mike(),<<92.8082, -1282.6401, 28.2537>> )
|
|
set_entity_heading(mike(),38.2535)
|
|
//TASK_FOLLOW_NAV_MESH_TO_COORD(MIKE(),<<90.8650, -1280.3580, 28.1095>>,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP)
|
|
|
|
SIMULATE_PLAYER_INPUT_GAIT(PLAYER_ID(), PEDMOVE_WALK, 800, 38.2535, FALSE)
|
|
FORCE_PED_MOTION_STATE(MIKE(),MS_ON_FOOT_WALK,false,FAUS_CUTSCENE_EXIT)
|
|
|
|
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
|
|
bcs_mike = true
|
|
endif
|
|
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Trevor")
|
|
OR NOT IS_CUTSCENE_PLAYING()
|
|
SET_PED_INTO_VEHICLE(TREV(),vehs[mvf_trevor_veh].id)
|
|
FORCE_PED_AI_AND_ANIMATION_UPDATE(trev())
|
|
|
|
bcs_trev = true
|
|
endif
|
|
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Franklin")
|
|
OR NOT IS_CUTSCENE_PLAYING()
|
|
SET_ENTITY_COORDS(frank(),<< 94.5331, -1277.5521, 28.1446 >>)
|
|
SET_ENTITY_HEADING(FRANK(), 15.2302)
|
|
TASK_ENTER_VEHICLE(frank(),vehs[mvf_Michael_veh].id,DEFAULT_TIME_NEVER_WARP,VS_FRONT_RIGHT,PEDMOVEBLENDRATIO_WALK)
|
|
SET_PED_MIN_MOVE_BLEND_RATIO(Frank(),PEDMOVEBLENDRATIO_WALK)
|
|
FORCE_PED_MOTION_STATE(Frank(),MS_ON_FOOT_WALK,false,FAUS_CUTSCENE_EXIT)
|
|
|
|
bcs_frank = true
|
|
endif
|
|
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Lester")
|
|
OR NOT IS_CUTSCENE_PLAYING()
|
|
SET_PED_INTO_VEHICLE(lester(),vehs[mvf_trevor_veh].id,VS_FRONT_RIGHT)
|
|
SET_PED_CONFIG_FLAG(LESTER(),PCF_ForcedToUseSpecificGroupSeatIndex,true)
|
|
FORCE_PED_AI_AND_ANIMATION_UPDATE(lester())
|
|
REQUEST_CLIP_SET("move_lester_CaneUp")
|
|
|
|
bcs_lester = true
|
|
endif
|
|
if CAN_SET_EXIT_STATE_FOR_CAMERA()
|
|
OR NOT IS_CUTSCENE_PLAYING()
|
|
|
|
bcs_cam = true
|
|
endif
|
|
|
|
if (bcs_mike and bcs_trev and bcs_frank and bcs_lester and bcs_cam)
|
|
or IS_REPLAY_IN_PROGRESS()
|
|
or b_zskipped
|
|
//This needs to be here as we swap mission triggers around this mission.
|
|
//Without it the game will memory fault as we pass this mission. 100% unavoidable PT.
|
|
MISSION_FLOW_RELEASE_TRIGGER_SCENE_ASSETS(SP_HEIST_FINALE_1)
|
|
|
|
//Load_Asset_Recording(sAssetData,001,"FH1RECMIKE")
|
|
//Load_Asset_Recording(sAssetData,003,"FH1REC")
|
|
//Load_Asset_Recording(sAssetData,004,"FH1REC")
|
|
REQUEST_VEHICLE_RECORDING(1,"FH1RECMIKE")
|
|
REQUEST_VEHICLE_RECORDING(4,"FH1REC")
|
|
REQUEST_VEHICLE_RECORDING(3,"FH1REC")
|
|
//michael start
|
|
CLEAR_AREA(<< 90.3864, -1278.8374, 28.0896 >>,20,true)
|
|
|
|
IF NOT IS_SCREEN_FADED_OUT()
|
|
SET_PLAYER_CONTROL(player_id(),true)
|
|
ENDIF
|
|
PAUSE_CLOCK(false)
|
|
DISPLAY_RADAR(true)
|
|
display_hud(true)
|
|
b_zskipped = false
|
|
mission_substage++
|
|
endif
|
|
break
|
|
case 4
|
|
if HAS_VEHICLE_RECORDING_BEEN_LOADED(3,"FH1REC")
|
|
//convo setup
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,0,trev(),"TREVOR",true)
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,1,mike(),"MICHAEL",true)
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,2,frank(),"FRANKLIN",true)
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,3,lester(),"LESTER",true)
|
|
give_all_peds_earpiece()
|
|
|
|
SET_PED_MOVEMENT_CLIPSET(lester(),"move_lester_CaneUp")
|
|
SET_PED_WEAPON_MOVEMENT_CLIPSET(lester(),"move_lester_CaneUp")
|
|
SET_PED_CONFIG_FLAG(frank(),PCF_GetOutBurningVehicle,false)
|
|
SET_PED_CONFIG_FLAG(lester(),PCF_GetOutBurningVehicle,false)
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(TREV(),true)
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(lester(),true)
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(vehs[mvf_trevor_veh].id,true)
|
|
|
|
//relationship
|
|
if DOES_ENTITY_EXIST(trev())
|
|
SET_PED_RELATIONSHIP_GROUP_HASH(trev(),rel_buddy)
|
|
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(trev(),true)
|
|
|
|
endif
|
|
if DOES_ENTITY_EXIST(frank())
|
|
SET_PED_RELATIONSHIP_GROUP_HASH(frank(),rel_buddy)
|
|
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(frank(),true)
|
|
endif
|
|
if DOES_ENTITY_EXIST(lester())
|
|
SET_PED_RELATIONSHIP_GROUP_HASH(lester(),rel_buddy)
|
|
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(lester(),true)
|
|
endif
|
|
SET_WANTED_LEVEL_MULTIPLIER(0.7)
|
|
if bSwitchedToMike
|
|
ANIMPOSTFX_PLAY("SwitchSceneMichael", 1000, FALSE)
|
|
PLAY_SOUND_FRONTEND(-1, "Hit_1", "LONG_PLAYER_SWITCH_SOUNDS")
|
|
endif
|
|
mission_substage++
|
|
endif
|
|
break
|
|
case 5
|
|
IF IS_SCREEN_FADED_OUT()
|
|
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
|
|
SET_PED_MIN_MOVE_BLEND_RATIO(mike(),PEDMOVE_WALK)
|
|
FORCE_PED_MOTION_STATE(mike(),MS_ON_FOOT_WALK,true,FAUS_CUTSCENE_EXIT)
|
|
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
|
|
|
|
ENDIF
|
|
if IS_SCREEN_FADED_IN()
|
|
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
|
idelay = get_game_timer()
|
|
SET_SCRIPTS_SAFE_FOR_CUTSCENE(false)
|
|
mission_substage++
|
|
endif
|
|
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF bDEBUG_IsInIsolatedDebugMode
|
|
SCRIPT_ASSERT("[MF] In Isolated Switch Cam Debug Mode. All Gameplay Logic is disabled. YOU SHOULD NOT BE SEEING THIS ON ANY SUBMITTED SCRIPTS.")
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
WHILE bDEBUG_IsInIsolatedDebugMode
|
|
//CPRINTLN(DEBUG_MISSION,"SCRIPT IS BLOCKED!")
|
|
HANDLE_SWITCH_CAM_SCRIPT_SPECIFIC_WIDGETS()
|
|
UPDATE_SPLINE_CAM_WIDGETS(scsSwitchCamMichaelToTrevorInHeli)
|
|
UPDATE_SPLINE_CAM_WIDGETS(scsSwitchCamTrevorInHeliToMichael)
|
|
WAIT(0)
|
|
ENDWHILE
|
|
#ENDIF
|
|
break
|
|
case 6
|
|
|
|
//---------next stage load--------
|
|
Load_asset_Stage(msf_1_font_of_bank) //load next stage
|
|
//--------------------------------
|
|
iDelay = GET_GAME_TIMER()
|
|
mission_substage++
|
|
|
|
break
|
|
case 7
|
|
if not sCamDetails.bRun
|
|
if player_ped_id() = mike()
|
|
//Sort out trev and lester
|
|
IF NOT IS_PED_INJURED(trev())
|
|
AND NOT IS_ENTITY_DEAD(vehs[mvf_trevor_veh].id)
|
|
if GET_SCRIPT_TASK_STATUS(trev(),SCRIPT_TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE) != PERFORMING_TASK
|
|
TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE(trev(),vehs[mvf_trevor_veh].id,<< 1799.9630, 3321.9102, 40.8868 >>,55,DRIVINGMODE_AVOIDCARS | DF_ForceJoinInRoadDirection ,5)
|
|
endif
|
|
ENDIF
|
|
|
|
if not IS_AUDIO_SCENE_ACTIVE("BS_1_drive_START")
|
|
if IS_PED_IN_ANY_VEHICLE(player_ped_id())
|
|
START_AUDIO_SCENE("BS_1_drive_START")
|
|
endif
|
|
endif
|
|
|
|
if IS_PLAYER_AT_LOCATION_WITH_BUDDIES_IN_VEHICLE(sLocatesData,<<-9.34495, -741.32111, 43.15848>>,<<0.1,0.1,LOCATE_SIZE_HEIGHT>>,true,frank(),NULL,NULL,vehs[mvf_Michael_veh].id,"FH1_BANK","FH1_FRCAR","","","","CMN_GENGETINY","CMN_GENGETBCKY",FALSE,true)
|
|
or (DOES_BLIP_EXIST(sLocatesData.LocationBlip) And IS_ENTITY_IN_ANGLED_AREA(MIKE(),<<-2.55928, -743.97137, 45>>,<<-14.34047, -739.44629, 43.15934>>,4.46))
|
|
and not GET_IS_TASK_ACTIVE(MIKE(),CODE_TASK_EXIT_VEHICLE)
|
|
CLEAR_MISSION_LOCATION_TEXT_AND_BLIPS(sLocatesData)
|
|
BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(vehs[mvf_Michael_veh].id)
|
|
if IS_AUDIO_SCENE_ACTIVE("BS_1_drive_START")
|
|
STOP_AUDIO_SCENE("BS_1_drive_START")
|
|
endif
|
|
bDialoguePlayed = false
|
|
bHotSwap = false
|
|
IF IS_THIS_PRINT_BEING_DISPLAYED("FH1_BANK")
|
|
CLEAR_PRINTS()
|
|
ENDIF
|
|
mission_substage = MIKE_AT_SCOPE_POINT
|
|
endif
|
|
|
|
elif player_ped_id() = trev()
|
|
|
|
IS_PLAYER_AT_LOCATION_WITH_BUDDIES_IN_VEHICLE(sLocatesData,vAIRFIELD,<<0.1,0.1,LOCATE_SIZE_HEIGHT>>,true,lester(),NULL,NULL,vehs[mvf_trevor_veh].id,"","","","","","","",FALSE,true,true)
|
|
|
|
if not b_displayed_get_heli
|
|
and DOES_BLIP_EXIST(sLocatesData.LocationBlip)
|
|
and IS_SAFE_TO_DISPLAY_GODTEXT()
|
|
print_now("FH1_AIR",DEFAULT_GOD_TEXT_TIME,1)
|
|
b_displayed_get_heli = true
|
|
endif
|
|
|
|
IF NOT IS_PED_INJURED(mike())
|
|
AND NOT IS_ENTITY_DEAD(vehs[mvf_Michael_veh].id)
|
|
if GET_SCRIPT_TASK_STATUS(mike(),SCRIPT_TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE) != PERFORMING_TASK
|
|
TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE(mike(),vehs[mvf_Michael_veh].id,vFRONT_BANK,8,DRIVINGMODE_AVOIDCARS,2)
|
|
endif
|
|
ENDIF
|
|
|
|
//mike is at the front of the bank
|
|
if IS_ENTITY_AT_COORD(mike(),vFRONT_BANK,<<4,4,2>>)
|
|
or (not Is_clock_time_less_than_or_equal(12,35)
|
|
and not IS_ENTITY_ON_SCREEN(vehs[mvf_Michael_veh].id)
|
|
and IS_ENTITY_OCCLUDED(vehs[mvf_Michael_veh].id)
|
|
and GET_GAME_TIMER() - iWindowTimer > 15000
|
|
and GET_GAME_TIMER() - iLastSwapTimer > 10000)
|
|
|
|
if eInterruptstage = INTERRUPT_NONE
|
|
eInterruptstage = INTERRUPT_STORE_CURRENT
|
|
endif
|
|
if eInterruptstage = INTERRUPTOR_SAFE
|
|
if not IS_MESSAGE_BEING_DISPLAYED()
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_TRVFBS",CONV_PRIORITY_MEDIUM)
|
|
eInterruptstage = INTERRUPT_RESTART_READY PRINTLN("@@@@@@@@@@@@ eInterruptstage = INTERRUPT_RESTART_READY 10")
|
|
// if not IS_ENTITY_ON_SCREEN(vehs[mvf_Michael_veh].id)
|
|
// and IS_ENTITY_OCCLUDED(vehs[mvf_Michael_veh].id)
|
|
// SET_ENTITY_COORDS(vehs[mvf_Michael_veh].id,vFRONT_BANK)
|
|
// SET_ENTITY_HEADING(vehs[mvf_Michael_veh].id,fHEADING_FRONT)
|
|
// SET_VEHICLE_ON_GROUND_PROPERLY(vehs[mvf_Michael_veh].id)
|
|
// endif
|
|
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(1,"Stage 1: Front of bank")
|
|
mission_substage = STAGE_ENTRY
|
|
mission_set_stage(msf_1_font_of_bank)
|
|
iWindowTimer = get_game_timer()
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
endif
|
|
endif
|
|
break
|
|
|
|
// mike front of bank run front of bank
|
|
case MIKE_AT_SCOPE_POINT
|
|
IF IS_THIS_PRINT_BEING_DISPLAYED("FH1_BANK")
|
|
CLEAR_PRINTS()
|
|
ENDIF
|
|
if IS_VEHICLE_ALMOST_STOPPED(vehs[mvf_Michael_veh].id)
|
|
and IS_PED_IN_VEHICLE(MIKE(),vehs[mvf_Michael_veh].id)
|
|
and not GET_IS_TASK_ACTIVE(trev(),CODE_TASK_EXIT_VEHICLE)
|
|
IF IS_THIS_PRINT_BEING_DISPLAYED("FH1_BANK")
|
|
CLEAR_PRINTS()
|
|
ENDIF
|
|
CLEAR_MISSION_LOCATION_TEXT_AND_BLIPS(sLocatesData)
|
|
KILL_FACE_TO_FACE_CONVERSATION()
|
|
mission_substage = STAGE_ENTRY
|
|
mission_set_stage(msf_1_font_of_bank)
|
|
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(1,"Stage 1: Front of bank")
|
|
else
|
|
IS_PLAYER_AT_LOCATION_WITH_BUDDIES_IN_VEHICLE(sLocatesData,<<-9.34495, -741.32111, 43.15848>>,<<0.1,0.1,LOCATE_SIZE_HEIGHT>>,true,frank(),NULL,NULL,vehs[mvf_Michael_veh].id,"","FH1_FRCAR","","","","CMN_GENGETINY","CMN_GENGETBCKY",FALSE,true)
|
|
BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(vehs[mvf_Michael_veh].id)
|
|
endif
|
|
break
|
|
endswitch
|
|
ENDPROC
|
|
PROC ST_1_FRONT_OF_BANK()
|
|
|
|
IF mission_substage > 0
|
|
if player_ped_id() = mike()
|
|
// DISABLE_CINEMATIC_BONNET_CAMERA_THIS_UPDATE()
|
|
ENDIF
|
|
ENDIF
|
|
|
|
switch mission_substage
|
|
|
|
case stage_entry
|
|
if IS_SCREEN_FADED_OUT()
|
|
REPLAY_RECORD_BACK_FOR_TIME(0.0, 10.0, REPLAY_IMPORTANCE_HIGHEST)
|
|
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
|
|
endif
|
|
if not sCamDetails.bRun
|
|
if player_ped_id() = TREV()
|
|
|
|
IS_PLAYER_AT_LOCATION_WITH_BUDDIES_IN_VEHICLE(sLocatesData,vAIRFIELD,<<0.1,0.1,LOCATE_SIZE_HEIGHT>>,true,lester(),NULL,NULL,vehs[mvf_trevor_veh].id,"","","","","","","",FALSE,true,true)
|
|
|
|
if not b_displayed_get_heli
|
|
and not IS_PED_IN_VEHICLE(trev(),vehs[mvf_helicopter].id)
|
|
and DOES_BLIP_EXIST(sLocatesData.LocationBlip)
|
|
and IS_SAFE_TO_DISPLAY_GODTEXT()
|
|
print_now("FH1_AIR",DEFAULT_GOD_TEXT_TIME,1)
|
|
b_displayed_get_heli = true
|
|
endif
|
|
|
|
//mike and frank are at the front of the bank whilst player is still trev *they missed it*
|
|
if not Is_clock_time_less_than_or_equal(13,15)
|
|
and GET_GAME_TIMER() - iWindowTimer > 15000
|
|
and GET_GAME_TIMER() - iLastSwapTimer > 5000
|
|
if eInterruptstage = INTERRUPT_NONE
|
|
eInterruptstage = INTERRUPT_STORE_CURRENT
|
|
endif
|
|
if eInterruptstage = INTERRUPTOR_SAFE
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_TRVFBE",CONV_PRIORITY_MEDIUM)
|
|
eInterruptstage = INTERRUPT_RESTART_READY PRINTLN("@@@@@@@@@@@@ eInterruptstage = INTERRUPT_RESTART_READY 11")
|
|
//---------next stage load--------
|
|
Load_asset_Stage(msf_2_back_of_bank) //load next stage
|
|
//--------------------------------
|
|
g_replay.iReplayInt[0] = 1
|
|
mission_substage = 4
|
|
iWindowTimer = get_game_timer()
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
elif player_ped_id() = mike()
|
|
if IS_REPLAY_IN_PROGRESS()
|
|
and g_replayMissionStage = 1
|
|
and g_replay.iReplayInt[0] = 1
|
|
and not g_bShitskipAccepted
|
|
and not b_zskipped
|
|
// ------------PLAYER HAS RESET FROM THIS STAGE------------
|
|
iFrontCS_stage = 2
|
|
mission_substage = 3// jump to after front of bank CS
|
|
REMOVE_VEHICLE_RECORDING(001,"FH1RECMIKE")
|
|
Else
|
|
//***switch needs to set car in the correct place***
|
|
|
|
if not bFCSanimsLoaded
|
|
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(MIKE(),vFRONT_BANK) < 60
|
|
Load_Asset_AnimDict(sAssetData,"missbigscore1_mcs1")
|
|
bFCSanimsLoaded = true
|
|
endif
|
|
else
|
|
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(MIKE(),vFRONT_BANK) > 90
|
|
Unload_Asset_Anim_Dict(sAssetData,"missbigscore1_mcs1")
|
|
bFCSanimsLoaded = false
|
|
endif
|
|
endif
|
|
|
|
if IS_PLAYER_AT_LOCATION_WITH_BUDDIES_IN_VEHICLE(sLocatesData,<<-9.34495, -741.32111, 43.15848>>,<<0.1,0.1,LOCATE_SIZE_HEIGHT>>,true,frank(),NULL,NULL,vehs[mvf_Michael_veh].id,"FH1_BANK","FH1_FRCAR","","","","CMN_GENGETINY","CMN_GENGETBCKY",FALSE,true)
|
|
CLEAR_MISSION_LOCATION_TEXT_AND_BLIPS(sLocatesData)
|
|
BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(vehs[mvf_Michael_veh].id)
|
|
KILL_FACE_TO_FACE_CONVERSATION()
|
|
if IS_AUDIO_SCENE_ACTIVE("BS_1_drive_START")
|
|
STOP_AUDIO_SCENE("BS_1_drive_START")
|
|
endif
|
|
|
|
IF IS_THIS_PRINT_BEING_DISPLAYED("FH1_BANK")
|
|
CLEAR_PRINTS()
|
|
ENDIF
|
|
|
|
bDialoguePlayed = false
|
|
bHotSwap = false
|
|
mission_substage++
|
|
ELSE
|
|
IF (DOES_BLIP_EXIST(sLocatesData.LocationBlip)
|
|
And IS_ENTITY_IN_ANGLED_AREA(MIKE(),<<-2.55928, -743.97137, 45>>,<<-14.34047, -739.44629, 43.15934>>,4.46))
|
|
and not GET_IS_TASK_ACTIVE(MIKE(),CODE_TASK_EXIT_VEHICLE)
|
|
CLEAR_MISSION_LOCATION_TEXT_AND_BLIPS(sLocatesData)
|
|
BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(vehs[mvf_Michael_veh].id)
|
|
KILL_FACE_TO_FACE_CONVERSATION()
|
|
if IS_AUDIO_SCENE_ACTIVE("BS_1_drive_START")
|
|
STOP_AUDIO_SCENE("BS_1_drive_START")
|
|
endif
|
|
|
|
IF IS_THIS_PRINT_BEING_DISPLAYED("FH1_BANK")
|
|
CLEAR_PRINTS()
|
|
ENDIF
|
|
|
|
bDialoguePlayed = false
|
|
bHotSwap = false
|
|
mission_substage++
|
|
endif
|
|
ENDIF
|
|
endif
|
|
endif
|
|
endif
|
|
break
|
|
case 1
|
|
IF IS_THIS_PRINT_BEING_DISPLAYED("FH1_BANK")
|
|
CLEAR_PRINTS()
|
|
ENDIF
|
|
if IS_VEHICLE_ALMOST_STOPPED(vehs[mvf_Michael_veh].id)
|
|
and IS_PED_IN_VEHICLE(MIKE(),vehs[mvf_Michael_veh].id)
|
|
and not GET_IS_TASK_ACTIVE(trev(),CODE_TASK_EXIT_VEHICLE)
|
|
and HAS_ANIM_DICT_LOADED("missbigscore1_mcs1")
|
|
CLEAR_MISSION_LOCATION_TEXT_AND_BLIPS(sLocatesData)
|
|
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
|
|
|
|
|
|
START_AUDIO_SCENE("BS_1_BANK_CHECK_OUT")
|
|
REMOVE_VEHICLE_RECORDING(001,"FH1RECMIKE")
|
|
mission_substage++
|
|
else
|
|
KILL_FACE_TO_FACE_CONVERSATION()
|
|
endif
|
|
SET_PLAYER_CONTROL(player_id(),false,SPC_LEAVE_CAMERA_CONTROL_ON | SPC_DONT_STOP_OTHER_CARS_AROUND_PLAYER)
|
|
else
|
|
IS_PLAYER_AT_LOCATION_WITH_BUDDIES_IN_VEHICLE(sLocatesData,<<-9.34495, -741.32111, 43.15848>>,<<0.1,0.1,LOCATE_SIZE_HEIGHT>>,true,frank(),NULL,NULL,vehs[mvf_Michael_veh].id,"","FH1_FRCAR","","","","CMN_GENGETINY","CMN_GENGETBCKY",FALSE,true)
|
|
BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(vehs[mvf_Michael_veh].id)
|
|
endif
|
|
break
|
|
case 2
|
|
SET_VEHICLE_RADIO_ENABLED(vehs[mvf_Michael_veh].id,false)
|
|
STOP_FIRE_IN_RANGE(vFRONT_BANK,100)
|
|
SPECIAL_ABILITY_DEACTIVATE(player_id())
|
|
//misc
|
|
iDelay = GET_GAME_TIMER()
|
|
iFrontCS_stage = 0
|
|
mission_substage++
|
|
break
|
|
case 3
|
|
if Front_bank_CS()
|
|
if IS_AUDIO_SCENE_ACTIVE("BS_1_BANK_CHECK_OUT")
|
|
STOP_AUDIO_SCENE("BS_1_BANK_CHECK_OUT")
|
|
endif
|
|
if IS_AUDIO_SCENE_ACTIVE("BS_1_BANK_HINT_CAM")
|
|
STOP_AUDIO_SCENE("BS_1_BANK_HINT_CAM")
|
|
endif
|
|
//player
|
|
SET_PLAYER_CONTROL(player_id(),true)
|
|
SET_VEH_RADIO_STATION(vehs[mvf_Michael_veh].id, "OFF")
|
|
SET_VEHICLE_RADIO_ENABLED(vehs[mvf_Michael_veh].id,true)
|
|
//---------next stage load--------
|
|
Load_asset_Stage(msf_2_back_of_bank) //load next stage
|
|
//--------------------------------
|
|
g_replay.iReplayInt[0] = 1
|
|
bstopshake = true
|
|
iDelay = GET_GAME_TIMER()
|
|
Hotswap_Menu(false,true,false)
|
|
bHotSwap = true
|
|
eMike_dialogue = M_di_TO_BACK
|
|
eDialogue_stateM = DI_START_CONDITION_MIKE
|
|
iDialogueTimer = GET_GAME_TIMER()
|
|
mission_substage++
|
|
endif
|
|
break
|
|
case 4 //* dialogue dependent on stage number *
|
|
if not sCamDetails.bRun
|
|
if player_ped_id() = TREV()
|
|
if heli_switch = TO_HELI
|
|
IS_PLAYER_AT_LOCATION_WITH_BUDDIES_IN_VEHICLE(sLocatesData,vAIRFIELD,<<0.1,0.1,LOCATE_SIZE_HEIGHT>>,true,lester(),NULL,NULL,vehs[mvf_trevor_veh].id,"","","","","","","",FALSE,true,true)
|
|
if not b_displayed_get_heli
|
|
and DOES_BLIP_EXIST(sLocatesData.LocationBlip)
|
|
and IS_SAFE_TO_DISPLAY_GODTEXT()
|
|
print_now("FH1_AIR",DEFAULT_GOD_TEXT_TIME,1)
|
|
b_displayed_get_heli = true
|
|
endif
|
|
elif heli_switch = TO_TRUCKS
|
|
IS_PLAYER_AT_LOCATION_WITH_BUDDIES_IN_VEHICLE(sLocatesData,vTRUCK_START,<<0.1,0.1,LOCATE_SIZE_HEIGHT>>,FALSE,NULL,lester(),NULL,vehs[mvf_helicopter].id,"","","","","","FH1_HELI","FH1_BKHELI",FALSE,true)
|
|
endif
|
|
|
|
IF NOT IS_PED_INJURED(mike())
|
|
AND NOT IS_ENTITY_DEAD(vehs[mvf_Michael_veh].id)
|
|
if GET_SCRIPT_TASK_STATUS(mike(),SCRIPT_TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE) != PERFORMING_TASK
|
|
TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE(mike(),vehs[mvf_Michael_veh].id,vBACK_BANK,8,DRIVINGMODE_AVOIDCARS,2)
|
|
endif
|
|
ENDIF
|
|
|
|
// if mike at bank | (time over & not on screen) | (player at airfield) & no message on screen
|
|
if IS_ENTITY_AT_COORD(mike(),vBACK_BANK,<<3,3,2>>)
|
|
|
|
or (not Is_clock_time_less_than_or_equal(13,45)
|
|
and not IS_ENTITY_ON_SCREEN(vehs[mvf_Michael_veh].id)
|
|
and IS_ENTITY_OCCLUDED(vehs[mvf_Michael_veh].id)
|
|
and GET_GAME_TIMER() - iLastSwapTimer > 9000 and GET_GAME_TIMER() - iWindowTimer > 15000)
|
|
|
|
or (DOES_BLIP_EXIST(sLocatesData.LocationBlip)And GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(TREV(),vAIRFIELD) < 100 and GET_GAME_TIMER() - iLastSwapTimer > 9000)
|
|
|
|
if eInterruptstage = INTERRUPT_NONE
|
|
eInterruptstage = INTERRUPT_STORE_CURRENT
|
|
endif
|
|
if eInterruptstage = INTERRUPTOR_SAFE
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_TRVBB",CONV_PRIORITY_MEDIUM)
|
|
eInterruptstage = INTERRUPT_RESTART_READY PRINTLN("@@@@@@@@@@@@ eInterruptstage = INTERRUPT_RESTART_READY 12")
|
|
if not IS_ENTITY_ON_SCREEN(vehs[mvf_Michael_veh].id)
|
|
and IS_ENTITY_OCCLUDED(vehs[mvf_Michael_veh].id)
|
|
SET_ENTITY_COORDS(vehs[mvf_Michael_veh].id,vBACK_BANK)
|
|
SET_ENTITY_HEADING(vehs[mvf_Michael_veh].id,fHEADING_BACK)
|
|
SET_VEHICLE_ON_GROUND_PROPERLY(vehs[mvf_Michael_veh].id)
|
|
endif
|
|
REQUEST_CUTSCENE("BSS_1_MCS_2")
|
|
SET_SRL_FORCE_PRESTREAM(SRL_PRESTREAM_FORCE_OFF) //#BUG:1542524
|
|
|
|
mission_substage = stage_entry
|
|
mission_set_Stage(msf_2_back_of_bank)
|
|
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(2,"Stage 2: Back of bank")
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
elif player_ped_id() = mike()
|
|
|
|
//Sort out trev and lester
|
|
if heli_switch = TO_HELI
|
|
IF NOT IS_PED_INJURED(TREV())
|
|
AND NOT IS_ENTITY_DEAD(vehs[mvf_trevor_veh].id)
|
|
if GET_SCRIPT_TASK_STATUS(trev(),SCRIPT_TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE) != PERFORMING_TASK
|
|
TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE(trev(),vehs[mvf_trevor_veh].id,<< 1799.9630, 3321.9102, 40.8868 >>,70,DRIVINGMODE_AVOIDCARS,5)
|
|
endif
|
|
ENDIF
|
|
elif heli_switch = TO_TRUCKS
|
|
IF NOT IS_PED_INJURED(TREV())
|
|
AND NOT IS_ENTITY_DEAD(vehs[mvf_helicopter].id)
|
|
if GET_SCRIPT_TASK_STATUS(trev(),SCRIPT_TASK_VEHICLE_MISSION) != PERFORMING_TASK
|
|
and IS_PED_IN_VEHICLE(trev(),vehs[mvf_helicopter].id)
|
|
and IS_PED_IN_VEHICLE(lester(),vehs[mvf_helicopter].id)
|
|
TASK_VEHICLE_MISSION_COORS_TARGET(trev(),vehs[mvf_helicopter].id,<< 1527.6018, -591.3962, 336.5655 >>,MISSION_CIRCLE,10,DRIVINGMODE_AVOIDCARS,4,-1)
|
|
endif
|
|
ENDIF
|
|
endif
|
|
if not IS_AUDIO_SCENE_ACTIVE("BS_1_DRIVE_AROUND_BACK")
|
|
START_AUDIO_SCENE("BS_1_DRIVE_AROUND_BACK")
|
|
endif
|
|
|
|
if IS_PLAYER_AT_LOCATION_WITH_BUDDIES_IN_VEHICLE(sLocatesData,vBACK_BANK,<<2.5,2.5,LOCATE_SIZE_HEIGHT>>,true,frank(),NULL,NULL,vehs[mvf_Michael_veh].id,"FH1_BENTR","FH1_FRCAR","","","","","FH1_BKCAR",FALSE,true)
|
|
BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(vehs[mvf_Michael_veh].id)
|
|
bHotSwap = false
|
|
mission_substage = MIKE_AT_SCOPE_POINT
|
|
endif
|
|
|
|
endif
|
|
endif
|
|
break
|
|
|
|
case MIKE_AT_SCOPE_POINT
|
|
if IS_VEHICLE_ALMOST_STOPPED(vehs[mvf_Michael_veh].id)
|
|
|
|
REPLAY_RECORD_BACK_FOR_TIME(5.0, 2.0, REPLAY_IMPORTANCE_HIGHEST)
|
|
|
|
SET_PLAYER_CONTROL(player_id(),false,SPC_LEAVE_CAMERA_CONTROL_ON)
|
|
mission_substage = stage_entry
|
|
mission_set_Stage(msf_2_back_of_bank)
|
|
KILL_ANY_CONVERSATION()
|
|
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(2,"Stage 2: Back of bank")
|
|
endif
|
|
break
|
|
|
|
endswitch
|
|
|
|
ENDPROC
|
|
|
|
PROC ST_2_BACK_OF_BANK()
|
|
switch mission_substage
|
|
case STAGE_ENTRY
|
|
if IS_SCREEN_FADED_OUT()
|
|
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
|
|
endif
|
|
if not sCamDetails.bRun
|
|
if player_ped_id() = trev()
|
|
|
|
Mission_Set_Stage(msf_3_get_in_position)
|
|
mission_substage= STAGE_ENTRY
|
|
|
|
elif player_ped_id() = mike()
|
|
// if g_replay.iReplayInt[1] = 1
|
|
// //skip cutscene as it's replay and has played before
|
|
// Point_Gameplay_cam_at_coord(238)
|
|
// SET_PLAYER_CONTROL(player_id(),false,SPC_LEAVE_CAMERA_CONTROL_ON)
|
|
// bIgnoreNoPlayerControl = TRUE
|
|
// SET_PED_INTO_VEHICLE(mike(),vehs[mvf_Michael_veh].id)
|
|
// SET_PED_INTO_VEHICLE(frank(),vehs[mvf_Michael_veh].id,VS_FRONT_RIGHT)
|
|
// FORCE_PED_AI_AND_ANIMATION_UPDATE(mike())
|
|
// FORCE_PED_AI_AND_ANIMATION_UPDATE(frank())
|
|
// //guard
|
|
// SET_CURRENT_PED_WEAPON(peds[mpf_guard].id,WEAPONTYPE_ADVANCEDRIFLE,true)
|
|
// //vehs
|
|
// SET_VEHICLE_ON_GROUND_PROPERLY(vehs[mvf_Michael_veh].id)
|
|
// //interior
|
|
//
|
|
// if interior_carpark != null
|
|
// UNPIN_INTERIOR(interior_carpark)
|
|
// endif
|
|
//
|
|
// mission_substage = 4
|
|
// else
|
|
interior_carpark = GET_INTERIOR_AT_COORDS(<<-77.30131, -678.88495, 33.32175>>)
|
|
IF IS_VALID_INTERIOR(interior_carpark)
|
|
PIN_INTERIOR_IN_MEMORY(interior_carpark)
|
|
endif
|
|
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
bHotSwap = false
|
|
// Load_Asset_Recording(001,"FH1UBER")
|
|
//start security Guard anim.
|
|
IF DOES_ENTITY_EXIST(peds[mpf_guard].id)
|
|
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(peds[mpf_guard].id,true)
|
|
ENDIF
|
|
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
|
|
bcs_mike = false
|
|
bcs_trev = false
|
|
bcs_frank = false
|
|
bcs_cam = false
|
|
SET_INTERIOR_CAPPED(INTERIOR_DT1_03_CARPARK, FALSE)
|
|
mission_substage++
|
|
endif
|
|
// endif
|
|
endif
|
|
endif
|
|
break
|
|
case 1
|
|
if HAS_CUTSCENE_LOADED()
|
|
if interior_carpark = null
|
|
or IS_INTERIOR_READY(interior_carpark)
|
|
// KILL_ANY_CONVERSATION()
|
|
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
|
|
SET_VEHICLE_RADIO_ENABLED(vehs[mvf_Michael_veh].id,false)
|
|
|
|
if IS_AUDIO_SCENE_ACTIVE("BS_1_DRIVE_AROUND_BACK")
|
|
STOP_AUDIO_SCENE("BS_1_DRIVE_AROUND_BACK")
|
|
endif
|
|
|
|
REGISTER_ENTITY_FOR_CUTSCENE(vehs[mvf_Michael_veh].id,"Michaels_car",CU_ANIMATE_EXISTING_SCRIPT_ENTITY) //mike car
|
|
REGISTER_ENTITY_FOR_CUTSCENE(frank(),"Franklin",CU_ANIMATE_EXISTING_SCRIPT_ENTITY) //frank
|
|
REGISTER_ENTITY_FOR_CUTSCENE(peds[mpf_guard].id,"security_guard",CU_ANIMATE_EXISTING_SCRIPT_ENTITY)//guard
|
|
|
|
set_peds_CS_OUTFITS()
|
|
CLEAR_TIMECYCLE_MODIFIER()
|
|
STOP_SOUND(camZoom)
|
|
STOP_SOUND(camhum)
|
|
|
|
IF DOES_SWITCH_CAM_EXIST(scsSwitchCamTrevorInHeliToMichael)
|
|
DESTROY_SWITCH_CAM(scsSwitchCamTrevorInHeliToMichael)
|
|
ENDIF
|
|
|
|
//[MF] making sure that the assets for the switch cam are requested properly
|
|
if heli_switch = TO_HELI
|
|
and vTrevPreSwitchLoc.y < 2600 //[MF] ensure we're not too far past the overpass where Trevor takes a tinkle.
|
|
eSwitchCamState = SWITCH_CAM_REQUEST_ASSETS
|
|
HANDLE_SWITCH_CAM_MICHAEL_TO_TREVOR_IN_TRUCK(scsSwitchCamMichaelToTrevorInTruck)
|
|
ENDIF
|
|
|
|
START_CUTSCENE(CUTSCENE_SUPPRESS_FP_TRANSITION_FLASH)
|
|
|
|
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
|
|
|
|
mission_substage++
|
|
endif
|
|
endif
|
|
break
|
|
case 2
|
|
if IS_CUTSCENE_PLAYING()
|
|
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
|
|
REMOVE_VEHICLE_WINDOW(vehs[mvf_Michael_veh].id,SC_WINDOW_FRONT_RIGHT)
|
|
CLEAR_AREA(vBACK_BANK,500,true)
|
|
bcs_mike = false
|
|
bcs_trev = false
|
|
bcs_frank = false
|
|
bcs_sec = false
|
|
bcs_mikecar = false
|
|
bcs_cam = false
|
|
bCustomSwitchCamRendering_HeliToCar = FALSE
|
|
Point_Gameplay_cam_at_coord(238)
|
|
mission_substage++
|
|
endif
|
|
break
|
|
case 3
|
|
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Michael",PLAYER_ZERO)
|
|
SET_PED_INTO_VEHICLE(mike(),vehs[mvf_Michael_veh].id)
|
|
|
|
bcs_mike = true
|
|
else
|
|
Point_Gameplay_cam_at_coord(238)
|
|
endif
|
|
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Franklin",PLAYER_ONE)
|
|
SET_PED_INTO_VEHICLE(frank(),vehs[mvf_Michael_veh].id,VS_FRONT_RIGHT)
|
|
|
|
bcs_frank = true
|
|
endif
|
|
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("security_guard",S_M_M_ARMOURED_01)
|
|
|
|
bcs_sec = true
|
|
endif
|
|
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Michaels_car",TAILGATER)
|
|
SET_VEHICLE_USE_CUTSCENE_WHEEL_COMPRESSION(vehs[mvf_Michael_veh].id)
|
|
|
|
bcs_mikecar = true
|
|
endif
|
|
|
|
IF CAN_SET_EXIT_STATE_FOR_CAMERA()
|
|
|
|
ENDIF
|
|
|
|
if bcs_mike
|
|
and bcs_frank
|
|
and bcs_sec
|
|
and bcs_mikecar
|
|
|
|
REPLAY_STOP_EVENT()
|
|
//REPLAY_RECORD_BACK_FOR_TIME(0.0, 5.0, REPLAY_IMPORTANCE_HIGHEST) - stop recording trevor peeing
|
|
|
|
SET_PLAYER_CONTROL(player_id(),false, SPC_DONT_STOP_OTHER_CARS_AROUND_PLAYER)
|
|
eMike_dialogue = M_di_NONE
|
|
eDialogue_stateM = DI_START_CONDITION_MIKE
|
|
//guard
|
|
SET_CURRENT_PED_WEAPON(peds[mpf_guard].id,WEAPONTYPE_ADVANCEDRIFLE,true)
|
|
//interior
|
|
if interior_carpark != null
|
|
UNPIN_INTERIOR(interior_carpark)
|
|
endif
|
|
SET_INTERIOR_CAPPED_ON_EXIT(INTERIOR_DT1_03_CARPARK, TRUE)
|
|
|
|
g_replay.iReplayInt[1] = 1
|
|
vTrevPreSwitchLoc = GET_ENTITY_COORDS(peds[mpf_trevor].id)
|
|
|
|
if eTREV_Dialogue = T_di_FILL1
|
|
PRINTLN("@@@@@@@@@@@@@ if eTREV_Dialogue = T_di_FILL1 @@@@@@@@@@@@@@@@@@")
|
|
b_convo_paused = false
|
|
lbl_TREVswitchInterrupt = ""
|
|
lbl_TREVswitchroot = ""
|
|
b_TREVSpeechSwitchStopped = false
|
|
eTREV_Dialogue = T_di_BRAD
|
|
endif
|
|
|
|
if heli_switch = TO_HELI
|
|
and vTrevPreSwitchLoc.y < 2600 //[MF] ensure we're not too far past the overpass where Trevor takes a tinkle.
|
|
bcustomswitch_mike_to_trev_inCar = true
|
|
eSwitchCamState = SWITCH_CAM_SETUP_SPLINE_1
|
|
HANDLE_SWITCH_CAM_MICHAEL_TO_TREVOR_IN_TRUCK(scsSwitchCamMichaelToTrevorInTruck)
|
|
ELIF heli_switch = TO_TRUCKS
|
|
AND IS_PED_IN_VEHICLE( peds[mpf_trevor].id, Vehs[mvf_helicopter].id)
|
|
AND bMichaelCarToTrevHeli_UseCustomSwitch = TRUE
|
|
bcustomswitch_mike_to_trev_inHeli = TRUE
|
|
eSwitchCamState = SWITCH_CAM_SETUP_SPLINE_1
|
|
HANDLE_SWITCH_CAM_MICHAEL_TO_TREVOR_IN_HELI(scsSwitchCamMichaelToTrevorInHeli)
|
|
bMichaelCarToTrevHeli_UseCustomSwitch = FALSE
|
|
endif
|
|
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_Michael_veh].id)
|
|
SET_VEHICLE_RADIO_ENABLED(vehs[mvf_Michael_veh].id,true)
|
|
ENDIF
|
|
sCamDetails.bRun = TRUE
|
|
Do_forced_hotswap(SELECTOR_PED_TREVOR)
|
|
|
|
mission_substage++
|
|
endif
|
|
break
|
|
case 4
|
|
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
bcs_mike = false
|
|
bcs_trev = false
|
|
bcs_frank = false
|
|
bcs_sec = false
|
|
bcs_mikecar = false
|
|
bcs_cam = false
|
|
Hotswap_Menu(false,true,false)
|
|
bHotSwap = true
|
|
REMOVE_CUTSCENE()
|
|
mission_substage++
|
|
endif
|
|
break
|
|
case 5
|
|
if not sCamDetails.bRun
|
|
if player_ped_id() = trev()
|
|
SET_MULTIHEAD_SAFE(FALSE) //B* 2166335: Disable multihead blinders
|
|
bHotSwap = false
|
|
Mission_Set_Stage(msf_3_get_in_position)
|
|
mission_substage = STAGE_ENTRY
|
|
if not IS_PLAYER_CONTROL_ON(player_id())
|
|
SET_PLAYER_CONTROL(player_id(),true)
|
|
endif
|
|
bIgnoreNoPlayerControl = FALSE
|
|
// elif player_ped_id() = mike() //[MF] Switch now happens automatically so the below logic is no longer needed.
|
|
|
|
// bcustomswitch_mike_to_trev_inHeli = TRUE
|
|
// eSwitchCamState = SWITCH_CAM_SETUP_SPLINE_1
|
|
// HANDLE_SWITCH_CAM_MICHAEL_TO_TREVOR_IN_HELI(scsSwitchCamMichaelToTrevorInHeli)
|
|
// sCamDetails.bRun = TRUE
|
|
// Do_forced_hotswap(SELECTOR_PED_TREVOR)
|
|
// if IS_PLAYER_CONTROL_ON(player_id())
|
|
// SET_PLAYER_CONTROL(player_id(),false,SPC_LEAVE_CAMERA_CONTROL_ON | SPC_DONT_STOP_OTHER_CARS_AROUND_PLAYER)
|
|
// endif
|
|
//
|
|
// if IS_SCREEN_FADED_IN()
|
|
// and not IS_CUTSCENE_PLAYING()
|
|
// and IS_SAFE_TO_DISPLAY_GODTEXT()
|
|
// Print_now("FH1_SWITCH",DEFAULT_GOD_TEXT_TIME,1)
|
|
// endif
|
|
endif
|
|
endif
|
|
break
|
|
endswitch
|
|
ENDPROC
|
|
PROC ST_3_GET_IN_POSITION()
|
|
|
|
if bHotSwap = true
|
|
if IsEntityAlive(vehs[mvf_helicopter].id)
|
|
if (DOES_BLIP_EXIST(sLocatesData.LocationBlip) And GET_DISTANCE_BETWEEN_COORDS(vTRUCK_START,GET_ENTITY_COORDS(vehs[mvf_helicopter].id)) < 1000)
|
|
bMissedBackCS = true
|
|
endif
|
|
endif
|
|
|
|
if (not Is_clock_time_less_than_or_equal(14,30) and GET_GAME_TIMER() - iLastSwapTimer > 29000 and GET_GAME_TIMER() - iWindowTimer > 20000)
|
|
or bMissedBackCS
|
|
if not sCamDetails.bRun
|
|
and player_ped_id() = trev()
|
|
if eInterruptstage = INTERRUPT_NONE
|
|
eInterruptstage = INTERRUPT_STORE_CURRENT
|
|
endif
|
|
if eInterruptstage = INTERRUPTOR_SAFE
|
|
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_trevor_veh].id)
|
|
IF IS_PED_IN_VEHICLE(TREV(),vehs[mvf_trevor_veh].id)
|
|
OR bHasTrevSwitchConvoPlayed
|
|
g_replay.iReplayInt[1] = 1
|
|
eInterruptstage = INTERRUPT_RESTART_READY PRINTLN("@@@@@@@@@@@@ eInterruptstage = INTERRUPT_RESTART_READY 13")
|
|
|
|
REMOVE_CUTSCENE()
|
|
REMOVE_VEHICLE_RECORDING(3,"FH1REC")
|
|
REMOVE_VEHICLE_RECORDING(4,"FH1REC")
|
|
bHotSwap = false
|
|
//endif
|
|
ELSE
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_TMBB_H",CONV_PRIORITY_MEDIUM)
|
|
g_replay.iReplayInt[1] = 1
|
|
eInterruptstage = INTERRUPT_RESTART_READY PRINTLN("@@@@@@@@@@@@ eInterruptstage = INTERRUPT_RESTART_READY 17")
|
|
|
|
REMOVE_CUTSCENE()
|
|
REMOVE_VEHICLE_RECORDING(3,"FH1REC")
|
|
REMOVE_VEHICLE_RECORDING(4,"FH1REC")
|
|
bHotSwap = false
|
|
endif
|
|
ENDIF
|
|
ENDIF
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
IF NOT IS_ENTITY_DEAD(vehs[mvf_helicopter].id)
|
|
AND NOT IS_PED_INJURED(trev())
|
|
AND NOT IS_PED_INJURED(LESTER())
|
|
IF IS_THIS_CONVERSATION_PLAYING("FH1_TALK4")
|
|
and IS_PED_IN_VEHICLE(trev(),vehs[mvf_helicopter].id)
|
|
and IS_PED_IN_VEHICLE(LESTER(),vehs[mvf_helicopter].id)
|
|
PRINTLN("@@@@@@@@@ KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE - FH1_TALK4 @@@@@@@@@")
|
|
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
|
|
ENDIF
|
|
ENDIF
|
|
|
|
switch mission_substage
|
|
case STAGE_ENTRY
|
|
if IS_SCREEN_FADED_OUT()
|
|
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
|
|
endif
|
|
if not IS_PLAYER_CONTROL_ON(player_id())
|
|
SET_PLAYER_CONTROL(player_id(),true)
|
|
endif
|
|
|
|
REPLAY_RECORD_BACK_FOR_TIME(0.0, 8.0, REPLAY_IMPORTANCE_HIGHEST)
|
|
|
|
mission_substage++
|
|
break
|
|
case 1
|
|
if not sCamDetails.bRun
|
|
if player_ped_id() = MIKE()
|
|
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
|
|
mission_substage= STAGE_ENTRY
|
|
Mission_Set_Stage(msf_2_back_of_bank)
|
|
|
|
elif player_ped_id() = TREV()
|
|
switch heli_switch
|
|
case TO_HELI
|
|
|
|
if not b_displayed_get_heli
|
|
and IS_SAFE_TO_DISPLAY_GODTEXT()
|
|
and DOES_BLIP_EXIST(sLocatesData.LocationBlip)
|
|
print_now("FH1_AIR",DEFAULT_GOD_TEXT_TIME,1)
|
|
b_displayed_get_heli = true
|
|
endif
|
|
|
|
if IS_PLAYER_AT_LOCATION_WITH_BUDDIES_ANY_MEANS(sLocatesData,vAIRFIELD,<<0.1,0.1,LOCATE_SIZE_HEIGHT>>,true,lester(),NULL,NULL,"","","","","",FALSE,true,true)
|
|
or (DOES_BLIP_EXIST(sLocatesData.LocationBlip)And GET_DISTANCE_BETWEEN_COORDS(vAIRFIELD,GET_ENTITY_COORDS(TREV())) < 15)
|
|
if IS_PED_IN_VEHICLE(TREV(),vehs[mvf_trevor_veh].id)
|
|
BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(vehs[mvf_trevor_veh].id)
|
|
endif
|
|
|
|
REPLAY_RECORD_BACK_FOR_TIME(5.0, 10.0, REPLAY_IMPORTANCE_HIGHEST)
|
|
|
|
CLEAR_MISSION_LOCATE_STUFF(sLocatesData)
|
|
CLEAR_MISSION_LOCATION_TEXT_AND_BLIPS(sLocatesData)
|
|
FREEZE_ENTITY_POSITION(vehs[mvf_helicopter].id,false)
|
|
SET_MAX_WANTED_LEVEL(2)
|
|
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(3,"Stage 3: Get in Position")
|
|
heli_switch = TO_TRUCKS
|
|
b_displayed_get_heli = false
|
|
bDialoguePlayed = false
|
|
bPrisonWarning = false
|
|
ENDIF
|
|
|
|
break
|
|
case TO_TRUCKS
|
|
if IsEntityAlive(vehs[mvf_helicopter].id)
|
|
|
|
|
|
if IS_PED_IN_VEHICLE(trev(),vehs[mvf_helicopter].id)
|
|
g_replay.iReplayInt[1] = 1
|
|
stop_mission_audio_scenes(6)//6 excludes stopping on fly to trucks
|
|
if not IS_AUDIO_SCENE_ACTIVE("BS_1_FLY_TO_TRUCKS")
|
|
START_AUDIO_SCENE("BS_1_FLY_TO_TRUCKS")
|
|
|
|
REPLAY_RECORD_BACK_FOR_TIME(2.0, 10.0, REPLAY_IMPORTANCE_HIGH)
|
|
|
|
endif
|
|
endif
|
|
|
|
if not bPrisonWarning
|
|
and IS_PED_IN_VEHICLE(trev(),vehs[mvf_helicopter].id)
|
|
and IS_PED_IN_VEHICLE(LESTER(),vehs[mvf_helicopter].id)
|
|
and GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(trev(),<<1692.16467, 2615.41187, 58.89342>>) < 400
|
|
IF IS_POINT_VISIBLE(<<1692.16467, 2615.41187, 58.89342>>,50,500)
|
|
if eInterruptstage = INTERRUPT_NONE
|
|
eInterruptstage = INTERRUPT_STORE_CURRENT
|
|
endif
|
|
if eInterruptstage = INTERRUPTOR_SAFE
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_PRISWRN",CONV_PRIORITY_MEDIUM)
|
|
eInterruptstage = INTERRUPT_RESTART_READY PRINTLN("@@@@@@@@@@@@ eInterruptstage = INTERRUPT_RESTART_READY 14")
|
|
bPrisonWarning = true
|
|
endif
|
|
endif
|
|
ENDIF
|
|
endif
|
|
|
|
if not b_displayed_get_heli
|
|
and IS_PED_IN_VEHICLE(trev(),vehs[mvf_helicopter].id,true)
|
|
and IS_PED_IN_VEHICLE(LESTER(),vehs[mvf_helicopter].id,true)
|
|
and DOES_BLIP_EXIST(sLocatesData.LocationBlip)
|
|
and IS_SAFE_TO_DISPLAY_GODTEXT()
|
|
if eInterruptstage = INTERRUPT_NONE
|
|
eInterruptstage = INTERRUPT_STORE_CURRENT
|
|
endif
|
|
if eInterruptstage = INTERRUPTOR_SAFE
|
|
print_now("FH1_FLY",DEFAULT_GOD_TEXT_TIME,1)
|
|
eInterruptstage = INTERRUPT_RESTART_READY PRINTLN("@@@@@@@@@@@@ eInterruptstage = INTERRUPT_RESTART_READY 15")
|
|
b_displayed_get_heli = true
|
|
endif
|
|
endif
|
|
|
|
if not bDialoguePlayed
|
|
and not IS_PED_IN_VEHICLE(trev(),vehs[mvf_trevor_veh].id)
|
|
and not IS_PED_IN_VEHICLE(LESTER(),vehs[mvf_trevor_veh].id)
|
|
and not IS_PED_IN_VEHICLE(LESTER(),vehs[mvf_helicopter].id)
|
|
and GET_DISTANCE_BETWEEN_ENTITIES(trev(),vehs[mvf_helicopter].id) < GET_DISTANCE_BETWEEN_ENTITIES(trev(),vehs[mvf_trevor_veh].id)
|
|
and GET_DISTANCE_BETWEEN_ENTITIES(trev(),LESTER()) < 20
|
|
if eInterruptstage = INTERRUPT_NONE
|
|
eInterruptstage = INTERRUPT_STORE_CURRENT
|
|
endif
|
|
if eInterruptstage = INTERRUPTOR_SAFE
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_LESSLOW",CONV_PRIORITY_MEDIUM)
|
|
TASK_LOOK_AT_ENTITY(TREV(),LESTER(),-1,SLF_WHILE_NOT_IN_FOV | SLF_WIDEST_YAW_LIMIT)
|
|
eInterruptstage = INTERRUPT_RESTART_READY PRINTLN("@@@@@@@@@@@@ eInterruptstage = INTERRUPT_RESTART_READY 16")
|
|
bDialoguePlayed = true
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
if not bHeliStageLoaded
|
|
And GET_DISTANCE_BETWEEN_COORDS(vTRUCK_START,GET_ENTITY_COORDS(vehs[mvf_helicopter].id)) < 1000
|
|
if g_replay.iReplayInt[1] = 1
|
|
//---------next stage load--------
|
|
Load_asset_Stage(msf_4_heli_follow_truck) //load next stage
|
|
//--------------------------------
|
|
bHeliStageLoaded = true
|
|
endif
|
|
endif
|
|
|
|
if IS_PLAYER_AT_LOCATION_WITH_BUDDIES_IN_VEHICLE(sLocatesData,vTRUCK_START,<<0.1,0.1,LOCATE_SIZE_HEIGHT>>,FALSE,NULL,lester(),NULL,vehs[mvf_helicopter].id,"","","","","","FH1_HELI","FH1_BKHELI",FALSE,true)
|
|
or (DOES_BLIP_EXIST(sLocatesData.LocationBlip)And GET_DISTANCE_BETWEEN_COORDS(vTRUCK_START,GET_ENTITY_COORDS(vehs[mvf_helicopter].id)) < 380)
|
|
IF HAS_MODEL_LOADED(stockade)
|
|
AND HAS_MODEL_LOADED(S_M_M_ARMOURED_01)
|
|
vehs[mvf_security_truck].id = CREATE_VEHICLE(stockade,<< 1025.5339, -1756.0054, 35.2748 >>, 81.9993)
|
|
peds[mpf_securityDriver].id = CREATE_PED_INSIDE_VEHICLE(vehs[mvf_security_truck].id,PEDTYPE_MISSION,S_M_M_ARMOURED_01)
|
|
SET_PED_COMPONENT_VARIATION(peds[mpf_securityDriver].id, PED_COMP_HEAD, 0, 0)
|
|
SET_ENTITY_LOD_DIST(vehs[mvf_security_truck].id,350)
|
|
CLEAR_MISSION_LOCATE_STUFF(sLocatesData)
|
|
CLEAR_MISSION_LOCATION_TEXT_AND_BLIPS(sLocatesData)
|
|
bTruckSkipForward = false
|
|
mission_substage = stage_entry
|
|
DISPLAY_RADAR(false)
|
|
DISPLAY_HUD(false)
|
|
|
|
REPLAY_RECORD_BACK_FOR_TIME(2.0, 10.0, REPLAY_IMPORTANCE_HIGH)
|
|
|
|
mission_set_stage(msf_4_heli_follow_truck)
|
|
ENDIF
|
|
endif
|
|
endif
|
|
break
|
|
endswitch
|
|
endif
|
|
endif
|
|
break
|
|
endswitch
|
|
ENDPROC
|
|
|
|
|
|
PROC ST_4_HELI_FOLLOW_TRUCK()
|
|
|
|
OBJECT_INDEX objWeapon
|
|
|
|
switch mission_substage
|
|
case stage_entry
|
|
bWentInBridge1 = FALSE
|
|
bWentOutBridge1 = FALSE
|
|
bWentInBridge2 = FALSE
|
|
bWentOutBridge2 = FALSE
|
|
bSetUnderTheBridgeStat = FALSE
|
|
|
|
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(4,"Stage 4: Follow truck")
|
|
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,0,trev(),"TREVOR")
|
|
ADD_PED_FOR_DIALOGUE(convo_struct,3,lester(),"LESTER")
|
|
Unload_Asset_Anim_Dict(sAssetData,"missbigscore1guard_wait_rifle")
|
|
REMOVE_VEHICLE_RECORDING(003,"FH1REC")
|
|
REMOVE_VEHICLE_RECORDING(004,"FH1REC")
|
|
REMOVE_VEHICLE_RECORDING(002,"FH1RECMIKE")
|
|
SAFE_RELEASE_VEHICLE(vehs[mvf_trevor_veh].id)
|
|
REMOVE_PTFX_ASSET()
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(BODHI2)
|
|
give_all_peds_earpiece()
|
|
|
|
SET_ENTITY_INVINCIBLE(vehs[mvf_security_truck].id,true)
|
|
SET_VEHICLE_RADIO_ENABLED(vehs[mvf_security_truck].id,false)
|
|
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(peds[mpf_securityDriver].id,true)
|
|
|
|
SET_ROADS_IN_AREA(<<1184.57813, -1801.74841, 25>>,<<780.50098, -1454.51013, 37>>,false)
|
|
SET_ROADS_IN_AREA(<<859.14117, -1563.11743, 24>>,<<242.78966, -829.41626, 33>>,false)
|
|
SET_ROADS_IN_AREA(<<535.71149, -552.73450, 24>>,<<35.41522, -1156.01208, 33>>,false)
|
|
SET_ROADS_IN_AREA(<<-159.27182, -539.10400, 28>>,<<416.92444, -832.99457, 41.5>>,false)
|
|
iRoadBlock_1 = ADD_ROAD_NODE_SPEED_ZONE(<<824.89844, -1748.84338, 28.48285>>,29,0)
|
|
iRoadBlock_2 = ADD_ROAD_NODE_SPEED_ZONE(<<796.60425, -1435.00281, 26.20493>>,23.8,0)
|
|
iRoadBlock_3 = ADD_ROAD_NODE_SPEED_ZONE(<<541.35822, -1431.70422, 28.34233>>,21,0)
|
|
iRoadBlock_4 = ADD_ROAD_NODE_SPEED_ZONE(<<499.58060, -1132.15405, 28.45514>>,18,0) // after bridge
|
|
iRoadBlock_5 = ADD_ROAD_NODE_SPEED_ZONE(<<398.24036, -1048.06909, 28.44339>>,22,0)
|
|
iRoadBlock_6 = ADD_ROAD_NODE_SPEED_ZONE(<<403.37341, -955.11713, 28.44834>>,20,0)
|
|
iRoadBlock_7 = ADD_ROAD_NODE_SPEED_ZONE(<<406.04382, -853.28693, 28.33914>>,25,0)// problem zone
|
|
iRoadBlock_8 = ADD_ROAD_NODE_SPEED_ZONE(<<354.64478, -667.05859, 28.33901>>,27,0)//tunnel enterance
|
|
|
|
bfirstwarningCL = true
|
|
bFailTimerStarted = false
|
|
|
|
//set truck to full speed recording
|
|
fPlaybackSpeed = 1
|
|
|
|
SET_VEHICLE_POPULATION_BUDGET(1)
|
|
SET_PED_POPULATION_BUDGET(1)
|
|
|
|
SET_CINEMATIC_BUTTON_ACTIVE(false)
|
|
|
|
bLesterCam = false
|
|
if not DOES_ENTITY_EXIST(objCam)
|
|
objcam = CREATE_OBJECT(PROP_PAP_CAMERA_01,GET_ENTITY_COORDS(lester()))
|
|
IF IsEntityAlive(vehs[mvf_helicopter].id)
|
|
SET_ENTITY_NO_COLLISION_ENTITY(objcam,vehs[mvf_helicopter].id,FALSE)
|
|
ENDIF
|
|
battachedCam = false
|
|
endif
|
|
IF NOT IS_ENTITY_DEAD(TREV())
|
|
IF NOT IS_ENTITY_VISIBLE(TREV())
|
|
SET_ENTITY_VISIBLE(TREV(),true)
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT IS_ENTITY_DEAD(LESTER())
|
|
IF NOT IS_ENTITY_VISIBLE(lester())
|
|
SET_ENTITY_VISIBLE(lester(),true)
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT IS_ENTITY_DEAD(vehs[mvf_helicopter].id)
|
|
IF NOT IS_ENTITY_VISIBLE(vehs[mvf_helicopter].id)
|
|
SET_ENTITY_VISIBLE(vehs[mvf_helicopter].id,true)
|
|
ENDIF
|
|
ENDIF
|
|
RENDER_SCRIPT_CAMS(false,false)
|
|
REPLAY_RECORD_BACK_FOR_TIME(0, 5, REPLAY_IMPORTANCE_HIGHEST)
|
|
//DISPLAY_RADAR(true)
|
|
//DISPLAY_HUD(true)
|
|
iSFstage = 0
|
|
i_tunnle_check = 0 //stat helper
|
|
ihintstage = 0 // hint cam
|
|
mission_substage++
|
|
BREAK
|
|
case 1
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_security_truck].id)
|
|
and IsEntityAlive(vehs[mvf_security_truck].id)
|
|
and IsEntityAlive(vehs[mvf_security_truck_fol].id)
|
|
add_entity_to_audio_MIX_GROUP(vehs[mvf_security_truck].id,"BS_1_TRUCKS_Group")
|
|
add_entity_to_audio_MIX_GROUP(vehs[mvf_security_truck_fol].id,"BS_1_TRUCKS_Group")
|
|
|
|
//Ensure security trucks are high detail
|
|
IF NOT IS_VEHICLE_HIGH_DETAIL( vehs[mvf_security_truck].id )
|
|
AND NOT IS_VEHICLE_HIGH_DETAIL( vehs[mvf_security_truck_fol].id )
|
|
REQUEST_VEHICLE_HIGH_DETAIL_MODEL( vehs[mvf_security_truck].id )
|
|
REQUEST_VEHICLE_HIGH_DETAIL_MODEL( vehs[mvf_security_truck_fol].id )
|
|
ENDIF
|
|
|
|
Unload_Asset_Model(sAssetData,STOCKADE)
|
|
IF IS_SCREEN_FADED_OUT()
|
|
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
|
|
SET_GAMEPLAY_CAM_RELATIVE_PITCH()
|
|
ENDIF
|
|
cameraIndex = CREATE_CAMERA()
|
|
ATTACH_CAM_TO_ENTITY(cameraIndex,vehs[mvf_helicopter].id,<<-6.32,15,6>>,false)
|
|
POINT_CAM_AT_ENTITY(cameraIndex,vehs[mvf_security_truck].id,<<0,-15,0>>)
|
|
|
|
SET_CAM_ACTIVE(cameraIndex,true)
|
|
if bTruckSkipForward
|
|
SET_CAM_FOV(cameraIndex,31)
|
|
RENDER_SCRIPT_CAMS(true,false)
|
|
SET_PLAYER_CONTROL(player_id(),false)
|
|
SET_ENTITY_VELOCITY(vehs[mvf_helicopter].id,<<0,-50,0>>)
|
|
TASK_HELI_CHASE(TREV(),vehs[mvf_security_truck].id,<<0,0,80>>)
|
|
iSPOTTEDTIME = 4000
|
|
else
|
|
SET_CAM_FOV(cameraIndex,27)
|
|
RENDER_SCRIPT_CAMS(true,true,4000,false)
|
|
vector vhelipos
|
|
vhelipos = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehs[mvf_security_truck].id,<<0,0,45>>)
|
|
TASK_HELI_MISSION(TREV(),vehs[mvf_helicopter].id,null,null,vhelipos,MISSION_GOTO,35,-1,-1,-1,-1,-1)
|
|
iSPOTTEDTIME = 5200
|
|
endif
|
|
iDelay = GET_GAME_TIMER()
|
|
DISPLAY_RADAR(false)
|
|
DISPLAY_HUD(false)
|
|
TRIGGER_MUSIC_EVENT("FH1_TRUCKS")
|
|
bDialoguePlayed = false
|
|
bPushInToFirstPerson = FALSE
|
|
mission_substage++
|
|
HANG_UP_AND_PUT_AWAY_PHONE()
|
|
if IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
KILL_ANY_CONVERSATION()
|
|
endif
|
|
endif
|
|
break
|
|
case 2
|
|
if not bDialoguePlayed
|
|
and not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_GOTCON",CONV_PRIORITY_LOW)
|
|
stop_mission_audio_scenes()
|
|
if not IS_AUDIO_SCENE_ACTIVE("BS_1_TRUCKS_SPOTTED")
|
|
START_AUDIO_SCENE("BS_1_TRUCKS_SPOTTED")
|
|
endif
|
|
bDialoguePlayed = true
|
|
endif
|
|
endif
|
|
IF GET_GAME_TIMER() - IDELAY > ISPOTTEDTIME - 300
|
|
AND NOT bPushInToFirstPerson
|
|
AND GET_FOLLOW_VEHICLE_CAM_VIEW_MODE() = CAM_VIEW_MODE_FIRST_PERSON
|
|
ANIMPOSTFX_PLAY("CamPushInNeutral", 0, FALSE)
|
|
PLAY_SOUND_FRONTEND(-1, "1st_Person_Transition", "PLAYER_SWITCH_CUSTOM_SOUNDSET")
|
|
bPushInToFirstPerson = TRUE
|
|
ENDIF
|
|
if get_game_timer() - iDelay > iSPOTTEDTIME
|
|
SET_PLAYER_CONTROL(player_id(),true)
|
|
CLEAR_PED_TASKS(TREV())
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
|
|
SET_GAMEPLAY_CAM_RELATIVE_PITCH()
|
|
RENDER_SCRIPT_CAMS(false,true,4000,false) // make sure both timings change together
|
|
DISPLAY_RADAR(true)
|
|
DISPLAY_HUD(true)
|
|
SET_PLAYER_CONTROL(player_id(),true)
|
|
iLESTERCAM_stage = 0
|
|
iDelay = GET_GAME_TIMER()
|
|
mission_substage++
|
|
else
|
|
SUPPRESS_HD_MAP_STREAMING_THIS_FRAME()
|
|
OVERRIDE_LODSCALE_THIS_FRAME(2.0)
|
|
REMAP_LODSCALE_RANGE_THIS_FRAME(1.7,4.7,1.0,1.8)
|
|
endif
|
|
break
|
|
case 3
|
|
DISABLE_FIRST_PERSON_FLASH_EFFECT_THIS_UPDATE()
|
|
if get_game_timer() - idelay > 4000 // make sure both timings change together
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_ROUTE",CONV_PRIORITY_LOW)
|
|
PRINT_HELP("FH1_FILM")
|
|
Unload_Asset_Model(sAssetData,STOCKADE)
|
|
Load_Asset_Model(sAssetData,police3)
|
|
mission_substage++
|
|
endif
|
|
endif
|
|
break
|
|
case 4 //* control hint dependant on stage number*
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_security_truck].id)
|
|
if GET_TIME_POSITION_IN_RECORDING(vehs[mvf_security_truck].id) > 20500
|
|
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_FILL",CONV_PRIORITY_LOW)
|
|
vehs[mvf_pol1].id = CREATE_VEHICLE(police3,<<407.8519, -984.2310, 28.2662>>, 230.4461)
|
|
vehs[mvf_pol2].id = CREATE_VEHICLE(police3,<<408.2209, -997.6844, 28.2664>>, 229.8704)
|
|
Unload_Asset_Model(sAssetData,police3)
|
|
mission_substage++
|
|
endif
|
|
else
|
|
KILL_ANY_CONVERSATION()
|
|
endif
|
|
endif
|
|
endif
|
|
break
|
|
case 5
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_security_truck].id)
|
|
if GET_TIME_POSITION_IN_RECORDING(vehs[mvf_security_truck].id) > 69700
|
|
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_FILL2",CONV_PRIORITY_LOW)
|
|
iLESTERCAM_stage = 8
|
|
mission_substage++
|
|
endif
|
|
else
|
|
KILL_ANY_CONVERSATION()
|
|
endif
|
|
endif
|
|
endif
|
|
break
|
|
case 6
|
|
if GET_TIME_POSITION_IN_RECORDING(vehs[mvf_security_truck].id) > 118000
|
|
CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_CHATTER",CONV_PRIORITY_LOW)
|
|
//tunnel interior pinning
|
|
interior_tunnel = GET_INTERIOR_AT_COORDS(<< 224.4949, -608.8183, 27.8671 >>)
|
|
IF IS_VALID_INTERIOR(interior_tunnel)
|
|
PIN_INTERIOR_IN_MEMORY(interior_tunnel)
|
|
endif
|
|
SAFE_RELEASE_VEHICLE(vehs[mvf_pol1].id)
|
|
SAFE_RELEASE_VEHICLE(vehs[mvf_pol2].id)
|
|
mission_substage++
|
|
endif
|
|
break
|
|
case 7
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_security_truck].id)
|
|
if(fCurrentPlaybackTime > 124000 and fCurrentPlaybackTime < 125000)
|
|
iLESTERCAM_stage = 10
|
|
endif
|
|
endif
|
|
|
|
if IS_ENTITY_AT_COORD(peds[mpf_securityDriver].id,<< 292.5266, -643.8066, 28.3005 >>,<<20,20,20>>)
|
|
|
|
REPLAY_RECORD_BACK_FOR_TIME(4.0, 6.0, REPLAY_IMPORTANCE_HIGHEST)
|
|
|
|
CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_Tunnel",CONV_PRIORITY_VERY_HIGH)
|
|
bTunnel = true
|
|
iLESTERCAM_stage = 12
|
|
if IS_GAMEPLAY_HINT_ACTIVE()
|
|
KILL_CHASE_HINT_CAM(localChaseHintCamStruct)
|
|
SET_GAMEPLAY_COORD_HINT(<<79.28018, -559.11414, 31.16214>>,-1)
|
|
endif
|
|
stop_mission_audio_scenes()
|
|
if not IS_AUDIO_SCENE_ACTIVE("BS_1_TRUCKS_ENTER_TUNNEL")
|
|
START_AUDIO_SCENE("BS_1_TRUCKS_ENTER_TUNNEL")
|
|
endif
|
|
SET_ENTITY_COORDS(vehs[mvf_Michael_veh].id,vBACK_BANK)
|
|
SET_ENTITY_HEADING(vehs[mvf_Michael_veh].id,fHEADING_BACK)
|
|
REMOVE_CUTSCENE()
|
|
mission_substage++
|
|
endif
|
|
break
|
|
case 8
|
|
if IS_ENTITY_AT_COORD(peds[mpf_securityDriver].id,<< 89.9054, -563.3521, 30.6528 >>,<<20,20,20>>)
|
|
|
|
REPLAY_RECORD_BACK_FOR_TIME(4.0, 6.0, REPLAY_IMPORTANCE_HIGHEST)
|
|
|
|
//out of the tunnel
|
|
bTunnel = false
|
|
request_cutscene("BSS_1_MCS_3")
|
|
//unpin interior
|
|
if interior_tunnel != null
|
|
UNPIN_INTERIOR(interior_tunnel)
|
|
endif
|
|
interior_carpark = GET_INTERIOR_AT_COORDS(<<-73.4359, -680.0825, 32.7495>>)
|
|
IF IS_VALID_INTERIOR(interior_carpark)
|
|
PIN_INTERIOR_IN_MEMORY(interior_carpark)
|
|
endif
|
|
stop_mission_audio_scenes()
|
|
if bLesterCam
|
|
if not IS_AUDIO_SCENE_ACTIVE("BS_1_TRUCKS_HINT_CAM")
|
|
START_AUDIO_SCENE("BS_1_TRUCKS_HINT_CAM")
|
|
endif
|
|
else
|
|
if not IS_AUDIO_SCENE_ACTIVE("BS_1_TRUCKS_SPOTTED")
|
|
START_AUDIO_SCENE("BS_1_TRUCKS_SPOTTED")
|
|
endif
|
|
endif
|
|
bDialoguePlayed = false
|
|
mission_substage++
|
|
endif
|
|
break
|
|
case 9 //*using to dialogue on re-appearing trucks*
|
|
CREATE_FORCED_OBJECT(<< -84.3858, -670.8411, 35.1694 >>,5,PROP_BOLLARD_02A,true)
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_security_truck].id)
|
|
if GET_TIME_POSITION_IN_RECORDING(vehs[mvf_security_truck].id) >185500
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_SECCHECK",CONV_PRIORITY_VERY_HIGH)
|
|
REPLAY_RECORD_BACK_FOR_TIME(4.0, 6.0, REPLAY_IMPORTANCE_HIGHEST)
|
|
mission_substage++
|
|
endif
|
|
endif
|
|
endif
|
|
break
|
|
case 10 //van at gate//*being used to kill the cam*
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_security_truck].id)
|
|
if GET_TIME_POSITION_IN_RECORDING(vehs[mvf_security_truck].id) >198000
|
|
bLesterCam = false
|
|
CLEAR_PED_SECONDARY_TASK(lester())
|
|
IF NOT IS_ENTITY_DEAD(TREV())
|
|
IF NOT IS_ENTITY_VISIBLE(TREV())
|
|
SET_ENTITY_VISIBLE(TREV(),true)
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT IS_ENTITY_DEAD(LESTER())
|
|
IF NOT IS_ENTITY_VISIBLE(lester())
|
|
SET_ENTITY_VISIBLE(lester(),true)
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT IS_ENTITY_DEAD(vehs[mvf_helicopter].id)
|
|
IF NOT IS_ENTITY_VISIBLE(vehs[mvf_helicopter].id)
|
|
SET_ENTITY_VISIBLE(vehs[mvf_helicopter].id,true)
|
|
ENDIF
|
|
ENDIF
|
|
RENDER_SCRIPT_CAMS(false,false)
|
|
DISPLAY_RADAR(true)
|
|
DISPLAY_HUD(true)
|
|
STOP_SOUND(camZoom)
|
|
STOP_SOUND(camhum)
|
|
CLEAR_TIMECYCLE_MODIFIER()
|
|
SET_INTERIOR_CAPPED(INTERIOR_DT1_03_CARPARK, FALSE)
|
|
fPlaybackSpeed = 0.1
|
|
SET_VEHICLE_POPULATION_BUDGET(3)
|
|
SET_PED_POPULATION_BUDGET(3)
|
|
SWITCH_ALL_ROADS_BACK_TO_ORIGINAL()
|
|
//---------next stage load--------
|
|
load_Asset_Model(sAssetData,S_M_M_ARMOURED_01)
|
|
//--------------------------------
|
|
mission_substage++
|
|
endif
|
|
endif
|
|
break
|
|
case 11
|
|
bool debugtest1
|
|
bool debugtest2
|
|
bool debugtest3
|
|
bool debugtest4
|
|
bool debugtest5
|
|
|
|
debugtest1 = false
|
|
debugtest2 = false
|
|
debugtest3 = false
|
|
debugtest4 = false
|
|
debugtest5 = false
|
|
|
|
if HAS_CUTSCENE_LOADED()
|
|
debugtest1 = true
|
|
CPRINTLN(DEBUG_MISSION,"HAS_CUTSCENE_LOADED true")
|
|
endif
|
|
if IS_INTERIOR_READY(interior_carpark)
|
|
debugtest2 = true
|
|
CPRINTLN(DEBUG_MISSION,"IS_INTERIOR_READY true")
|
|
endif
|
|
if HAS_MODEL_LOADED(S_M_M_ARMOURED_01)
|
|
debugtest3 = true
|
|
CPRINTLN(DEBUG_MISSION,"HAS_MODEL_LOADED true")
|
|
endif
|
|
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
debugtest4 = true
|
|
CPRINTLN(DEBUG_MISSION,"not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED true")
|
|
endif
|
|
|
|
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_helicopter].id)
|
|
IF IS_PED_SITTING_IN_VEHICLE(PLAYER_PED_ID(), vehs[mvf_helicopter].id)
|
|
debugtest5 = true
|
|
ENDIF
|
|
ENDIF
|
|
|
|
if debugtest1
|
|
and debugtest2
|
|
and debugtest3
|
|
and debugtest4
|
|
and debugtest5
|
|
//---------next stage load--------
|
|
Load_asset_Stage(msf_5_CONSTRUCTION_HOLE) //load next stage
|
|
load_Asset_Model(sAssetData,S_M_M_ARMOURED_01)
|
|
|
|
|
|
//--------------------------------
|
|
//delete entities
|
|
objWeapon = CREATE_WEAPON_OBJECT_FROM_CURRENT_PED_WEAPON_WITH_COMPONENTS(PEDS[mpf_guard].id)
|
|
// CREATE_WEAPON_OBJECT_FROM_CURRENT_PED_WEAPON_WITH_COMPONENTS
|
|
REGISTER_ENTITY_FOR_CUTSCENE(objWeapon, "security_guard_gun", CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY)
|
|
REGISTER_ENTITY_FOR_CUTSCENE(PEDS[mpf_guard].id,"security_guard",CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY)
|
|
REGISTER_ENTITY_FOR_CUTSCENE(peds[mpf_securityDriver].id,"Casey",CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY)
|
|
REGISTER_ENTITY_FOR_CUTSCENE(vehs[mvf_security_truck].id,"security_truck",CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY)
|
|
//REGISTER_ENTITY_FOR_CUTSCENE(vehs[mvf_security_truck_fol].id,"security_truck_fol",CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY)
|
|
|
|
REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(vehs[mvf_security_truck].id)
|
|
REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(vehs[mvf_security_truck_fol].id)
|
|
|
|
Security_gate_setup(BUILDINGSTATE_DESTROYED)
|
|
HANG_UP_AND_PUT_AWAY_PHONE()
|
|
SET_SCRIPTS_SAFE_FOR_CUTSCENE(true)
|
|
set_peds_CS_OUTFITS()
|
|
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
|
|
start_cutscene()
|
|
SET_FRONTEND_RADIO_ACTIVE(FALSE)
|
|
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
|
|
|
|
mission_substage++
|
|
endif
|
|
break
|
|
case 12
|
|
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_helicopter].id)
|
|
SET_FORCE_HD_VEHICLE(vehs[mvf_helicopter].id, TRUE)
|
|
ENDIF
|
|
|
|
if IS_CUTSCENE_PLAYING()
|
|
stop_mission_audio_scenes()
|
|
TRIGGER_MUSIC_EVENT("FH1_ONION86")
|
|
|
|
IF NOT IS_PED_INJURED(peds[mpf_securityDriver].id)
|
|
PRINTSTRING("set casey collision ") PRINTVECTOR(GET_ENTITY_COORDS(peds[mpf_securityDriver].id)) PRINTNL()
|
|
SET_ENTITY_COLLISION(peds[mpf_securityDriver].id, FALSE)
|
|
ENDIF
|
|
|
|
if DOES_ENTITY_EXIST(vehs[mvf_security_truck_fol].id)
|
|
DELETE_VEHICLE(vehs[mvf_security_truck_fol].id)
|
|
endif
|
|
clear_area(<< -84.3858, -670.8411, 35.1694 >>,200,true)
|
|
//heli
|
|
SET_ENTITY_COORDS(vehs[mvf_helicopter].id,<<-76.4238, -528.6735, 87.5 >>)
|
|
SET_ENTITY_HEADING(vehs[mvf_helicopter].id, 176.7705)
|
|
FREEZE_ENTITY_POSITION(vehs[mvf_helicopter].id,true)
|
|
SET_HELI_BLADES_FULL_SPEED(vehs[mvf_helicopter].id)
|
|
SET_PED_INTO_VEHICLE(trev(),vehs[mvf_helicopter].id)
|
|
SET_PED_INTO_VEHICLE(lester(),vehs[mvf_helicopter].id,VS_BACK_LEFT)
|
|
FORCE_PED_AI_AND_ANIMATION_UPDATE(lester())
|
|
interior_constuction = GET_INTERIOR_AT_COORDS(<< 12.8829, -634.9265, 15.0884 >>)
|
|
IF IS_VALID_INTERIOR(interior_constuction)
|
|
PIN_INTERIOR_IN_MEMORY(interior_constuction)
|
|
endif
|
|
KILL_CHASE_HINT_CAM(localChaseHintCamStruct)
|
|
mission_substage++
|
|
endif
|
|
break
|
|
case 13
|
|
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_helicopter].id)
|
|
SET_FORCE_HD_VEHICLE(vehs[mvf_helicopter].id, TRUE)
|
|
ENDIF
|
|
|
|
if CAN_SET_EXIT_STATE_FOR_CAMERA()
|
|
bcs_cam = true
|
|
endif
|
|
|
|
// IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("security_guard_gun")
|
|
// GIVE_WEAPON_OBJECT_TO_PED(objWeapon, PEDS[mpf_guard].id)
|
|
// ENDIF
|
|
|
|
if bcs_cam
|
|
|
|
REPLAY_STOP_EVENT()
|
|
|
|
SET_SCRIPTS_SAFE_FOR_CUTSCENE(false)
|
|
//frank and mike
|
|
SET_PED_INTO_VEHICLE(mike(),vehs[mvf_Michael_veh].id)
|
|
set_ped_into_vehicle(frank(),vehs[mvf_Michael_veh].id,VS_FRONT_RIGHT)
|
|
force_peD_ai_and_animation_update(mike())
|
|
FORCE_PED_AI_AND_ANIMATION_UPDATE(frank())
|
|
SET_VEHICLE_ON_GROUND_PROPERLY(vehs[mvf_Michael_veh].id)
|
|
//heli
|
|
FREEZE_ENTITY_POSITION(vehs[mvf_helicopter].id,false)
|
|
SET_HELI_BLADES_FULL_SPEED(vehs[mvf_helicopter].id)
|
|
SET_VEHICLE_FORWARD_SPEED(vehs[mvf_helicopter].id,1)
|
|
SET_PED_INTO_VEHICLE(lester(),vehs[mvf_helicopter].id,VS_BACK_LEFT)
|
|
SET_PED_INTO_VEHICLE(trev(),vehs[mvf_helicopter].id)
|
|
FORCE_PED_AI_AND_ANIMATION_UPDATE(trev())
|
|
|
|
//gate
|
|
Security_gate_setup()
|
|
Point_Gameplay_cam_at_coord(get_entity_heading(player_ped_id()))
|
|
if interior_carpark != null
|
|
UNPIN_INTERIOR(interior_carpark)
|
|
endif
|
|
NEW_LOAD_SCENE_STOP()
|
|
TRIGGER_MUSIC_EVENT("FH1_TRUCKS_2")
|
|
mission_substage++
|
|
endif
|
|
break
|
|
case 14
|
|
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_helicopter].id)
|
|
SET_FORCE_HD_VEHICLE(vehs[mvf_helicopter].id, TRUE)
|
|
ENDIF
|
|
|
|
IF NOT IS_CUTSCENE_ACTIVE()
|
|
SET_FRONTEND_RADIO_ACTIVE(TRUE)
|
|
SET_INTERIOR_CAPPED_ON_EXIT(INTERIOR_DT1_03_CARPARK, TRUE)
|
|
mission_substage = STAGE_ENTRY
|
|
mission_set_stage(msf_5_CONSTRUCTION_HOLE)
|
|
ENDIF
|
|
break
|
|
endswitch
|
|
|
|
clear_players_task_on_control_input(script_task_vehicle_MISSION)
|
|
|
|
//speed up stopped behind traffic
|
|
if mission_substage > STAGE_ENTRY and mission_substage < 9 //van at gate
|
|
if fCurrentPlaybackTime < 10000 //start
|
|
fPlaybackSpeed = 0.75
|
|
CREATE_ALL_WAITING_UBER_CARS()
|
|
elif fCurrentPlaybackTime > 10000 and fCurrentPlaybackTime < 20000
|
|
fPlaybackSpeed = 0.85
|
|
elif fCurrentPlaybackTime > 20000 and fCurrentPlaybackTime < 30000
|
|
fPlaybackSpeed = 1.0
|
|
elif fCurrentPlaybackTime > 107000 and fCurrentPlaybackTime < 116000
|
|
fPlaybackSpeed = 1.4
|
|
elif fCurrentPlaybackTime > 131500 and fCurrentPlaybackTime < 139000
|
|
fPlaybackSpeed = 1.4
|
|
elif fCurrentPlaybackTime > 152000 and fCurrentPlaybackTime < 162000
|
|
fPlaybackSpeed = 0.8
|
|
elif fCurrentPlaybackTime > 162000 and fCurrentPlaybackTime < 168000
|
|
vector vTrucksOffset = GET_OFFSET_FROM_ENTITY_GIVEN_WORLD_COORDS(vehs[mvf_security_truck].id, GET_ENTITY_COORDS(vehs[mvf_helicopter].id))
|
|
if vtrucksOffset.y < -1.0
|
|
and vtrucksOffset.z > 10
|
|
fPlaybackSpeed = 0.2
|
|
else
|
|
fPlaybackSpeed = 1.0
|
|
endif
|
|
elif fCurrentPlaybackTime > 168000
|
|
fPlaybackSpeed = 1.0
|
|
else
|
|
fPlaybackSpeed = 1.2
|
|
endif
|
|
|
|
endif
|
|
|
|
SET_VEHICLE_CEILING_HEIGHT(vehs[mvf_helicopter].id,420.0) //#bug:1498268
|
|
|
|
if wSkip
|
|
SET_UBER_PLAYBACK_TO_TIME_NOW(vehs[mvf_security_truck].id,165000)
|
|
SET_ENTITY_COORDS(vehs[mvf_helicopter].id,<< 89.9054, -563.3521, 100.6528 >>)
|
|
wSkip = false
|
|
wSkippedUber = true
|
|
mission_substage = 8
|
|
endif
|
|
|
|
//update UBER recording
|
|
Manage_UBER_rec(vehs[mvf_security_truck].id,"FH1UBER")
|
|
//trucks only damaged by the player.
|
|
if DOES_ENTITY_EXIST(vehs[mvf_security_truck].id)
|
|
if IS_VEHICLE_DRIVEABLE(vehs[mvf_security_truck].id)
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(vehs[mvf_security_truck].id,true)
|
|
endif
|
|
endif
|
|
if DOES_ENTITY_EXIST(vehs[mvf_security_truck_fol].id)
|
|
if IS_VEHICLE_DRIVEABLE(vehs[mvf_security_truck_fol].id)
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(vehs[mvf_security_truck_fol].id,true)
|
|
endif
|
|
endif
|
|
|
|
if mission_substage < 11
|
|
if IsEntityAlive(lester())
|
|
and IsEntityAlive(vehs[mvf_security_truck].id)
|
|
update_lester_anims(GET_ENTITY_COORDS(vehs[mvf_security_truck].id))
|
|
endif
|
|
manage_lester_Cam()
|
|
endif
|
|
|
|
//dialgoue for coming back out the tunnel
|
|
if mission_substage = 9
|
|
and IS_ENTITY_ON_SCREEN(vehs[mvf_security_truck_fol].id)
|
|
and not IS_ENTITY_OCCLUDED(vehs[mvf_security_truck_fol].id)
|
|
and not bDialoguePlayed
|
|
and fCurrentPlaybackTime > 171500
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_Tunnel2",CONV_PRIORITY_MEDIUM)
|
|
REPLAY_RECORD_BACK_FOR_TIME(4.0, 6.0, REPLAY_IMPORTANCE_HIGHEST)
|
|
bDialoguePlayed = true
|
|
endif
|
|
endif
|
|
|
|
//distance check
|
|
|
|
if mission_substage < 11
|
|
and mission_stage = enum_to_int(msf_4_heli_follow_truck)
|
|
and DOES_ENTITY_EXIST(peds[mpf_securityDriver].id)
|
|
|
|
fDist = vdist(GET_ENTITY_COORDS(peds[mpf_securityDriver].id),GET_ENTITY_COORDS(player_ped_id()))
|
|
float fDistMaxLimit = 550
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_security_truck].id)
|
|
float fcurrentTime = GET_TIME_POSITION_IN_RECORDING(vehs[mvf_security_truck].id)
|
|
if fcurrentTime <= 20000
|
|
fDistMaxLimit = 550
|
|
|
|
elif fcurrentTime > 20000 and fcurrentTime <= 150000 //tunnel
|
|
fDistMaxLimit = 450
|
|
|
|
elif fcurrentTime > 150000
|
|
fDistMaxLimit = 350
|
|
endif
|
|
|
|
float heightDif
|
|
vector vtruckCoord
|
|
vector vheliCoord
|
|
vtruckCoord = GET_ENTITY_COORDS(vehs[mvf_security_truck].id)
|
|
vheliCoord = GET_ENTITY_COORDS(vehs[mvf_helicopter].id)
|
|
|
|
heightDif = vtruckCoord.z - vheliCoord.z
|
|
if heightDif < 0
|
|
heightDif *= -1
|
|
endif
|
|
if not wSkippedUber
|
|
//------------too far away-----------------
|
|
if fdist > fDistMaxLimit
|
|
if not bFailTimerStarted
|
|
INFORM_STAT_SYSTEM_OF_BOOL_STAT_HAPPENED(FH1_PERFECT_DISTANCE)
|
|
PRINT_NOW("FH1_FRWARN",DEFAULT_GOD_TEXT_TIME,1)
|
|
bFailTimerStarted = true
|
|
endif
|
|
|
|
if get_game_timer() - iInFailTimer > 10500
|
|
and not IS_AMBIENT_SPEECH_PLAYING(LESTER())
|
|
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
|
|
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(LESTER(),"FINH1_BDAA","Lester",SPEECH_PARAMS_FORCE)
|
|
mission_failed(mff_lost_truck)
|
|
elif get_game_timer() - iInFailTimer > 3000
|
|
if not IS_AMBIENT_SPEECH_PLAYING(LESTER())
|
|
and get_game_timer() - iGetCloser > 5000
|
|
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(LESTER(),"FINH1_BFAA","Lester",SPEECH_PARAMS_FORCE)
|
|
iGetCloser = get_Game_timer()
|
|
endif
|
|
endif
|
|
//------------too close-------------------
|
|
elif fdist < 30
|
|
if bTunnel = false
|
|
or heightDif < 9
|
|
if fCurrentPlaybackTime < 162000
|
|
or fCurrentPlaybackTime > 171500
|
|
or heightDif < 9
|
|
if not IS_AMBIENT_SPEECH_PLAYING(LESTER())
|
|
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
|
|
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(LESTER(),"FINH1_BCAA","Lester",SPEECH_PARAMS_FORCE)
|
|
if IsEntityAlive(vehs[mvf_security_truck].id)
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_security_truck].id)
|
|
STOP_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_security_truck].id)
|
|
endif
|
|
endif
|
|
if IsEntityAlive(vehs[mvf_security_truck].id)
|
|
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_security_truck_fol].id)
|
|
STOP_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_security_truck_fol].id)
|
|
endif
|
|
endif
|
|
mission_failed(mff_too_close_fail)
|
|
endif
|
|
endif
|
|
endif
|
|
elif fdist < 60
|
|
if bTunnel = false
|
|
if fCurrentPlaybackTime < 162000
|
|
or fCurrentPlaybackTime > 169000
|
|
if bfirstwarningCL
|
|
INFORM_STAT_SYSTEM_OF_BOOL_STAT_HAPPENED(FH1_PERFECT_DISTANCE)
|
|
PRINT_NOW("FH1_CLWARN",DEFAULT_GOD_TEXT_TIME,1)
|
|
iInFailTimer = GET_GAME_TIMER()
|
|
bfirstwarningCL = false
|
|
else
|
|
if get_game_timer() - iInFailTimer > 10000
|
|
and not IS_AMBIENT_SPEECH_PLAYING(LESTER())
|
|
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(LESTER(),"FINH1_BEAA","Lester",SPEECH_PARAMS_FORCE)
|
|
iInFailTimer = GET_GAME_TIMER()
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
//------------ NORMAL ------------
|
|
else
|
|
iInFailTimer = GET_GAME_TIMER()
|
|
bFailTimerStarted = false
|
|
bfirstwarningCL = true
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
if DOES_ENTITY_EXIST(vehs[mvf_security_truck].id)
|
|
CLEAR_ROOM_FOR_ENTITY(vehs[mvf_security_truck].id)
|
|
SET_ENTITY_LOD_DIST(vehs[mvf_security_truck].id,ROUND(fDistMaxLimit))
|
|
endif
|
|
if DOES_ENTITY_EXIST(vehs[mvf_security_truck_fol].id)
|
|
CLEAR_ROOM_FOR_ENTITY(vehs[mvf_security_truck_fol].id)
|
|
SET_ENTITY_LOD_DIST(vehs[mvf_security_truck_fol].id,ROUND(fDistMaxLimit))
|
|
endif
|
|
endif
|
|
|
|
//head tracking
|
|
if IsEntityAlive(TREV())
|
|
and IsEntityAlive(LESTER())
|
|
and IsEntityAlive(vehs[mvf_security_truck].id)
|
|
if not IS_PED_HEADTRACKING_ENTITY(trev(),vehs[mvf_security_truck].id)
|
|
TASK_LOOK_AT_ENTITY(TREV(),vehs[mvf_security_truck].id,-1,SLF_WHILE_NOT_IN_FOV | SLF_WIDEST_PITCH_LIMIT | SLF_WIDEST_YAW_LIMIT)
|
|
endif
|
|
if not IS_PED_HEADTRACKING_ENTITY(lester(),vehs[mvf_security_truck].id)
|
|
TASK_LOOK_AT_ENTITY(lester(),vehs[mvf_security_truck].id,-1,SLF_WHILE_NOT_IN_FOV | SLF_WIDEST_PITCH_LIMIT | SLF_WIDEST_YAW_LIMIT)
|
|
endif
|
|
endif
|
|
|
|
|
|
if IsEntityAlive(vehs[mvf_helicopter].id)
|
|
switch i_tunnle_check
|
|
case 0
|
|
if IS_ENTITY_IN_ANGLED_AREA(vehs[mvf_helicopter].id,<<291.67627, -653.67816, 28.37552>>,<<297.37866, -639.35156, 33.76371>>,10)
|
|
i_tunnle_check++
|
|
endif
|
|
break
|
|
case 1
|
|
if IS_ENTITY_IN_ANGLED_AREA(vehs[mvf_helicopter].id,<<192.95865, -607.28772, 28.54596>>,<<202.67386, -592.18152, 33.89706>>,10)
|
|
i_tunnle_check++
|
|
endif
|
|
break
|
|
case 2
|
|
if IS_ENTITY_IN_ANGLED_AREA(vehs[mvf_helicopter].id,<<124.56654, -583.90997, 30.61664>>,<<130.59349, -568.08618, 37.65457>>,10)
|
|
INFORM_STAT_SYSTEM_OF_BOOL_STAT_HAPPENED(FH1_THROUGH_TUNNEL)
|
|
i_tunnle_check++
|
|
endif
|
|
break
|
|
endswitch
|
|
endif
|
|
|
|
MANAGE_BRIDGES_ACHIEVEMENT()
|
|
|
|
ENDPROC
|
|
|
|
BOOL bFindHoleGodText
|
|
BOOL bBeenToHole
|
|
|
|
PROC ST_5_CONSTRUCTION_HOLE()
|
|
switch mission_substage
|
|
case stage_entry
|
|
SETTIMERA(0)
|
|
IF IS_SCREEN_FADED_OUT()
|
|
TRIGGER_MUSIC_EVENT("AH1_HOLE_RESTART")
|
|
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
|
|
ENDIF
|
|
SET_CINEMATIC_BUTTON_ACTIVE(false)
|
|
KILL_ANY_CONVERSATION()
|
|
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(5,"Stage 5: Construction hole")
|
|
|
|
bBeenToHole = FALSE
|
|
bFindHoleGodText = FALSE
|
|
bDialoguePlayed = false
|
|
bWrongSite = false
|
|
bSeenHole = false
|
|
bAUDIOStreamLoaded = false
|
|
lbl_Interrupt = ""
|
|
lbl_root = ""
|
|
|
|
eInterruptstage = INTERRUPT_NONE
|
|
|
|
vol_construction = STREAMVOL_CREATE_SPHERE(<<12.29, -638.08, 15.09>>,20,FLAG_MAPDATA)
|
|
iDelay = GET_GAME_TIMER()
|
|
|
|
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_helicopter].id)
|
|
SET_FORCE_HD_VEHICLE(vehs[mvf_helicopter].id, TRUE)
|
|
ENDIF
|
|
|
|
objdummy = CREATE_OBJECT(PROP_LD_TEST_01,<<25.30480, -635.79169, 30.30575>>)
|
|
if not DOES_ENTITY_EXIST(objCam)
|
|
objcam = CREATE_OBJECT(PROP_PAP_CAMERA_01,GET_ENTITY_COORDS(lester()))
|
|
IF IsEntityAlive(vehs[mvf_helicopter].id)
|
|
SET_ENTITY_NO_COLLISION_ENTITY(objcam,vehs[mvf_helicopter].id,FALSE)
|
|
ENDIF
|
|
battachedCam = false
|
|
endif
|
|
Unload_Asset_Model(sAssetData,PROP_LD_TEST_01)
|
|
FREEZE_ENTITY_POSITION(objdummy,true)
|
|
ADD_SCENARIO_BLOCKING_AREA(<<71.25517, -613.30609, 10.67887>>,<<2.50692, -654.65991, 39.92294>>)
|
|
CLEAR_AREA(vHOLE,30,true)
|
|
DESTROY_ALL_CAMS()
|
|
iHoleStage = 0
|
|
bLesterCam = false
|
|
ihintstage = 0 // hint cam
|
|
iHOLE_INFO_STAGE = 0
|
|
b_create_workers = true
|
|
b_get_near_help = FALSE
|
|
b_film_hole_help_reminder = FALSE
|
|
IF NOT IS_ENTITY_DEAD(TREV())
|
|
IF NOT IS_ENTITY_VISIBLE(TREV())
|
|
SET_ENTITY_VISIBLE(TREV(),true)
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT IS_ENTITY_DEAD(LESTER())
|
|
IF NOT IS_ENTITY_VISIBLE(lester())
|
|
SET_ENTITY_VISIBLE(lester(),true)
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT IS_ENTITY_DEAD(vehs[mvf_helicopter].id)
|
|
IF NOT IS_ENTITY_VISIBLE(vehs[mvf_helicopter].id)
|
|
SET_ENTITY_VISIBLE(vehs[mvf_helicopter].id,true)
|
|
ENDIF
|
|
ENDIF
|
|
RENDER_SCRIPT_CAMS(false,false)
|
|
DISPLAY_RADAR(true)
|
|
DISPLAY_HUD(true)
|
|
STOP_SOUND(camZoom)
|
|
STOP_SOUND(camhum)
|
|
stop_mission_audio_scenes()
|
|
if not IS_AUDIO_SCENE_ACTIVE("BS_1_SEARCH_FOR_ENTRANCE")
|
|
START_AUDIO_SCENE("BS_1_SEARCH_FOR_ENTRANCE")
|
|
endif
|
|
|
|
REPLAY_RECORD_BACK_FOR_TIME(0.0, 10.0, REPLAY_IMPORTANCE_HIGHEST)
|
|
|
|
mission_substage++
|
|
break
|
|
case 1
|
|
if GET_GAME_TIMER() - iDelay > 500
|
|
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData, IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_INFO",CONV_PRIORITY_MEDIUM)
|
|
eholestage = HOLE_OBJECTIVE
|
|
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_OPEN(FH1_FIND_HOLE_TIME)
|
|
mission_substage++
|
|
endif
|
|
ENDIF
|
|
endif
|
|
break
|
|
case 2
|
|
IF NOT bFindHoleGodText
|
|
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData, IAT_IGNORE_DIALOGUE_IF_SUBTITLES_OFF)
|
|
Print_now("FH1_HOLE",DEFAULT_GOD_TEXT_TIME,1)
|
|
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_OPEN(FH1_FIND_HOLE_TIME)
|
|
bFindHoleGodText = TRUE
|
|
ENDIF
|
|
ELSE
|
|
find_hole_dialogue()
|
|
ENDIF
|
|
|
|
IF NOT bBeenToHole
|
|
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_helicopter].id)
|
|
IF IS_ENTITY_IN_ANGLED_AREA(vehs[mvf_helicopter].id, <<16.890251,-659.901367,29.972874>>, <<50.351219,-569.759949,87.376694>>, 66.750000)
|
|
AND IS_PED_IN_VEHICLE(trev(),vehs[mvf_helicopter].id)
|
|
AND NOT GET_IS_TASK_ACTIVE(trev(),CODE_TASK_EXIT_VEHICLE)
|
|
// IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData, IAT_IGNORE_DIALOGUE_IF_SUBTITLES_OFF)
|
|
Print_now("FH1_HOVERN",DEFAULT_GOD_TEXT_TIME,1)
|
|
bBeenToHole = TRUE
|
|
IF NOT bFindHoleGodText
|
|
REPLAY_RECORD_BACK_FOR_TIME(4.0, 6.0, REPLAY_IMPORTANCE_HIGHEST)
|
|
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_OPEN(FH1_FIND_HOLE_TIME)
|
|
bFindHoleGodText = TRUE
|
|
ENDIF
|
|
// ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF NOT b_get_near_help
|
|
IF NOT IS_ENTITY_IN_ANGLED_AREA(vehs[mvf_helicopter].id, <<16.890251,-659.901367,29.972874>>, <<50.351219,-569.759949,87.376694>>, 66.750000)
|
|
AND IS_PED_IN_VEHICLE(trev(),vehs[mvf_helicopter].id)
|
|
AND NOT GET_IS_TASK_ACTIVE(trev(),CODE_TASK_EXIT_VEHICLE)
|
|
PRINT_HELP("FH1_CSHELP2")
|
|
b_get_near_help = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
if IS_ENTITY_IN_ANGLED_AREA(vehs[mvf_helicopter].id,<<17.52435, -655.95490, 30.76982>>,<<34.11578, -609.88947, 54.92456>>,48)
|
|
and IS_PED_IN_VEHICLE(trev(),vehs[mvf_helicopter].id)
|
|
and not GET_IS_TASK_ACTIVE(trev(),CODE_TASK_EXIT_VEHICLE)
|
|
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED()
|
|
if eholestage = HOLE_STABLE
|
|
//---------next stage load--------
|
|
Load_asset_Stage(msf_6_drop_off_point) //load next stage
|
|
SET_OBJECT_AS_NO_LONGER_NEEDED(objdummy)
|
|
|
|
//--------------------------------
|
|
if DOES_BLIP_EXIST(blip_objective)
|
|
remove_blip(blip_objective)
|
|
endif
|
|
iDelay = get_game_timer()
|
|
|
|
|
|
mission_substage++
|
|
endif
|
|
endif
|
|
break
|
|
case 3
|
|
IF bLesterCam = FALSE
|
|
IF b_film_hole_help_reminder = FALSE
|
|
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
PRINT_HELP("FH1_FILM")
|
|
b_film_hole_help_reminder = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
iHOLE_INFO_STAGE = 0
|
|
bDialoguePlayed = false
|
|
iHoleTimer = GET_GAME_TIMER()
|
|
mission_substage++
|
|
else
|
|
if bLesterCam
|
|
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("FH1_FILM")
|
|
CLEAR_HELP()
|
|
ENDIF
|
|
SET_PLAYER_CONTROL(player_id(),false)
|
|
IF NOT IS_PED_INJURED(TREV())
|
|
if GET_SCRIPT_TASK_STATUS(trev(),SCRIPT_TASK_VEHICLE_MISSION) <> PERFORMING_TASK
|
|
//TASK_HELI_MISSION(trev(),vehs[mvf_helicopter].id,null,null,GET_ENTITY_COORDS(vehs[mvf_helicopter].id),MISSION_GOTO,-1,-1,-1,-1,-1)
|
|
TASK_HELI_MISSION(trev(),vehs[mvf_helicopter].id,null,null,GET_ENTITY_COORDS(vehs[mvf_helicopter].id),MISSION_GOTO,0,-1,-1,-1,-1)
|
|
endif
|
|
ENDIF
|
|
else
|
|
SET_PLAYER_CONTROL(player_id(),true)
|
|
IF NOT IS_PED_INJURED(TREV())
|
|
if GET_SCRIPT_TASK_STATUS(trev(),SCRIPT_TASK_VEHICLE_MISSION) = PERFORMING_TASK
|
|
CLEAR_PED_TASKS(trev())
|
|
endif
|
|
ENDIF
|
|
endif
|
|
endif
|
|
break
|
|
case 4
|
|
IF bLesterCam = FALSE
|
|
IF b_film_hole_help_reminder = FALSE
|
|
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
PRINT_HELP("FH1_FILM")
|
|
b_film_hole_help_reminder = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("FH1_FILM")
|
|
CLEAR_HELP()
|
|
ENDIF
|
|
ENDIF
|
|
|
|
if filmed_hole()
|
|
|
|
REPLAY_RECORD_BACK_FOR_TIME(7.0, 7.0, REPLAY_IMPORTANCE_HIGHEST)
|
|
//Quick disable multihead fade if lester cam still active
|
|
IF bLesterCam
|
|
SET_MULTIHEAD_SAFE(FALSE,TRUE)
|
|
ENDIF
|
|
bLesterCam = false
|
|
IF NOT IS_ENTITY_DEAD(TREV())
|
|
IF NOT IS_ENTITY_VISIBLE(TREV())
|
|
SET_ENTITY_VISIBLE(TREV(),true)
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT IS_ENTITY_DEAD(LESTER())
|
|
IF NOT IS_ENTITY_VISIBLE(lester())
|
|
SET_ENTITY_VISIBLE(lester(),true)
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT IS_ENTITY_DEAD(vehs[mvf_helicopter].id)
|
|
IF NOT IS_ENTITY_VISIBLE(vehs[mvf_helicopter].id)
|
|
SET_ENTITY_VISIBLE(vehs[mvf_helicopter].id,true)
|
|
ENDIF
|
|
ENDIF
|
|
RENDER_SCRIPT_CAMS(false,false)
|
|
CLEAR_TIMECYCLE_MODIFIER()
|
|
DISPLAY_RADAR(true)
|
|
DISPLAY_HUD(true)
|
|
STOP_SOUND(camZoom)
|
|
STOP_SOUND(camhum)
|
|
IF NOT IS_PED_INJURED(TREV())
|
|
if GET_SCRIPT_TASK_STATUS(trev(),SCRIPT_TASK_VEHICLE_MISSION) = PERFORMING_TASK
|
|
CLEAR_PED_TASKS(trev())
|
|
endif
|
|
ENDIF
|
|
TRIGGER_MUSIC_EVENT("FH1_END")
|
|
mission_substage++
|
|
endif
|
|
break
|
|
case 5
|
|
IF bLesterCam = FALSE
|
|
IF b_film_hole_help_reminder = FALSE
|
|
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
PRINT_HELP("FH1_FILM")
|
|
b_film_hole_help_reminder = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("FH1_FILM")
|
|
CLEAR_HELP()
|
|
ENDIF
|
|
ENDIF
|
|
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(sfmov)
|
|
DESTROY_ALL_CAMS()
|
|
SET_CINEMATIC_BUTTON_ACTIVE(true)
|
|
clear_help(false)
|
|
STOP_SOUND(camZoom)
|
|
STOP_SOUND(camhum)
|
|
//lester back into his seat
|
|
if GET_PED_VEHICLE_SEAT(lester(),vehs[mvf_helicopter].id) = VS_BACK_RIGHT
|
|
and not IS_SCRIPT_TASK_RUNNING_OR_STARTING(lester(),script_TASK_SHUFFLE_TO_NEXT_VEHICLE_SEAT)
|
|
TASK_SHUFFLE_TO_NEXT_VEHICLE_SEAT(lester(),vehs[mvf_helicopter].id)
|
|
endif
|
|
//cam stuff
|
|
REPLAY_RECORD_BACK_FOR_TIME(2.0, 7.0, REPLAY_IMPORTANCE_HIGHEST)
|
|
mission_substage = STAGE_ENTRY
|
|
mission_set_stage(msf_6_drop_off_point)
|
|
endif
|
|
break
|
|
endswitch
|
|
|
|
if mission_substage < 5
|
|
manage_lester_Cam()
|
|
if IsEntityAlive(lester())
|
|
update_lester_anims(vHOLE)
|
|
endif
|
|
endif
|
|
|
|
|
|
|
|
if mission_substage < 4
|
|
if IS_PED_IN_VEHICLE(TREV(),vehs[mvf_helicopter].id)
|
|
and IS_PED_IN_VEHICLE(Lester(),vehs[mvf_helicopter].id)
|
|
if b_convo_paused
|
|
and IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
PAUSE_FACE_TO_FACE_CONVERSATION(false)
|
|
b_convo_paused = false
|
|
endif
|
|
else
|
|
if not b_convo_paused
|
|
PAUSE_FACE_TO_FACE_CONVERSATION(true)
|
|
b_convo_paused = true
|
|
endif
|
|
endif
|
|
endif
|
|
ENDPROC
|
|
PROC ST_6_DROP_OFF_POINT()
|
|
|
|
switch mission_substage
|
|
case stage_entry
|
|
|
|
IF IS_SCREEN_FADED_OUT()
|
|
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
|
|
Point_Gameplay_cam_at_coord(187.9638)
|
|
ENDIF
|
|
|
|
if DOES_ENTITY_EXIST(vehs[mvf_helicopter].id)
|
|
FREEZE_ENTITY_POSITION(vehs[mvf_helicopter].id,false)
|
|
endif
|
|
|
|
Hotswap_Menu(False,true,false)
|
|
bHotSwap = true
|
|
|
|
eMike_dialogue = M_di_END
|
|
eDialogue_stateM = DI_START_CONDITION_MIKE
|
|
eInterruptstage = INTERRUPT_NONE
|
|
|
|
if DOES_ENTITY_EXIST(objcam)
|
|
if IS_ENTITY_ATTACHED(objcam)
|
|
DETACH_ENTITY(objcam)
|
|
endif
|
|
SAFE_DELETE_OBJECT(objcam)
|
|
endif
|
|
IF NOT IS_PED_INJURED(LESTER())
|
|
CLEAR_PED_SECONDARY_TASK(lester())
|
|
ENDIF
|
|
|
|
REPLAY_RECORD_BACK_FOR_TIME(0.0, 10.0, REPLAY_IMPORTANCE_HIGH)
|
|
|
|
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(6,"Stage 6: Drop off point",true)
|
|
bShowObjective = false
|
|
mission_substage++
|
|
break
|
|
case 1 //*using to trigger dialogue in the manager*
|
|
if not sCamDetails.bRun
|
|
if player_ped_id() = mike()
|
|
|
|
if IS_STREAMVOL_ACTIVE()
|
|
STREAMVOL_DELETE(vol_construction)
|
|
endif
|
|
if interior_constuction != null
|
|
UNPIN_INTERIOR(interior_constuction)
|
|
endif
|
|
|
|
IF NOT IS_PED_INJURED(TREV())
|
|
AND NOT IS_ENTITY_DEAD(vehs[mvf_helicopter].id)
|
|
if GET_SCRIPT_TASK_STATUS(trev(),SCRIPT_TASK_VEHICLE_MISSION) != PERFORMING_TASK
|
|
TASK_VEHICLE_MISSION_COORS_TARGET(trev(),vehs[mvf_helicopter].id,<< 1728.8278, 3126.1279,106.3001 >>,MISSION_CIRCLE,30,DRIVINGMODE_AVOIDCARS,4,-1)
|
|
endif
|
|
ENDIF
|
|
|
|
//on
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(TREV(),true)
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(lester(),true)
|
|
if IsEntityAlive(vehs[mvf_helicopter].id)
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(vehs[mvf_helicopter].id,true)
|
|
endif
|
|
if IsEntityAlive(vehs[mvf_trevor_veh].id)
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(vehs[mvf_trevor_veh].id,true)
|
|
endif
|
|
//off
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(MIKE(),false)
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(frank(),false)
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(vehs[mvf_Michael_veh].id,false)
|
|
|
|
stop_mission_audio_scenes(13)
|
|
if not IS_AUDIO_SCENE_ACTIVE("BS_1_CAR_RETURN_TO_FRANKLINS")
|
|
START_AUDIO_SCENE("BS_1_CAR_RETURN_TO_FRANKLINS")
|
|
endif
|
|
|
|
if IS_SAFE_TO_DISPLAY_GODTEXT()
|
|
if bShowObjective
|
|
print_now("FH1_End2",DEFAULT_GOD_TEXT_TIME,1)
|
|
bShowObjective = false
|
|
endif
|
|
endif
|
|
|
|
if IS_PLAYER_AT_LOCATION_WITH_BUDDIES_IN_VEHICLE(sLocatesData,<<17.56, 547.32, 175.11>>,<<7,3,LOCATE_SIZE_HEIGHT>>,true,frank(),null,null,vehs[mvf_Michael_veh].id,"","FH1_FRCAR","","","","FH1_CAR","FH1_BKCAR")
|
|
if IS_VEHICLE_ALMOST_STOPPED(vehs[mvf_Michael_veh].id)
|
|
|
|
REPLAY_RECORD_BACK_FOR_TIME(6.0, 10.0, REPLAY_IMPORTANCE_HIGHEST)
|
|
|
|
SET_PLAYER_PED_CAN_ENTER_SAVEHOUSE(CHAR_MICHAEL, SAVEHOUSE_FRANKLIN_VH, FALSE)
|
|
DOOR_SYSTEM_SET_DOOR_STATE(ENUM_TO_INT(DOORHASH_F_HOUSE_VH_F), DOORSTATE_UNLOCKED, FALSE, TRUE)
|
|
SET_PED_CONFIG_FLAG(frank(), PCF_OpenDoorArmIK, TRUE)
|
|
|
|
OPEN_SEQUENCE_TASK(seq)
|
|
TASK_LEAVE_ANY_VEHICLE(null,0,ECF_DONT_WAIT_FOR_VEHICLE_TO_STOP)
|
|
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<6.4282, 535.5682, 175.0280>>,PEDMOVE_WALK,DEFAULT_TIME_BEFORE_WARP,1,ENAV_DEFAULT,DEFAULT_NAVMESH_FINAL_HEADING)
|
|
// TASK_GO_STRAIGHT_TO_COORD(null,<<5.7777, 535.8402, 175.0280>>,PEDMOVE_WALK)
|
|
CLOSE_SEQUENCE_TASK(seq)
|
|
TASK_PERFORM_SEQUENCE(frank(),seq)
|
|
CLEAR_SEQUENCE_TASK(seq)
|
|
SET_PLAYER_CONTROL(PLAYER_ID(),false,SPC_LEAVE_CAMERA_CONTROL_ON)
|
|
//cam
|
|
DESTROY_ALL_CAMS()
|
|
HANG_UP_AND_PUT_AWAY_PHONE()
|
|
CLEAR_AREA(<< 17.8857, 572.9736, 180.1063 >>,50,true)
|
|
cameraIndex = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED,<<7.5984, 539.8885, 175.7547>>, <<7.1088, 0.0000, -38.9600>>,45.5983)
|
|
SET_CAM_ACTIVE(cameraIndex,true)
|
|
SET_CAM_PARAMS(cameraIndex,<<7.6983, 540.0698, 175.7795>>, <<6.0492, 0.0000, -38.9600>>,45.5983,7000)
|
|
RENDER_SCRIPT_CAMS(true,false)
|
|
fshakeAmp = 0.1
|
|
SHAKE_CAM(cameraIndex,"HAND_SHAKE",fshakeAmp)
|
|
DISPLAY_RADAR(false)
|
|
DISPLAY_HUD(false)
|
|
SET_GAMEPLAY_COORD_HINT(<<8.17981, 539.19104, 176.37321>>,10000,0)
|
|
bsetEndCam = False
|
|
bHotSwap = false
|
|
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
|
|
eMike_dialogue = M_di_NONE
|
|
bDialoguePlayed = false
|
|
iDelay = get_game_timer()
|
|
mission_substage++
|
|
else
|
|
BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(vehs[mvf_Michael_veh].id,4,1)
|
|
endif
|
|
endif
|
|
elif player_ped_id() = TREV()
|
|
|
|
IF NOT IS_PED_INJURED(MIKE())
|
|
AND NOT IS_ENTITY_DEAD(vehs[mvf_Michael_veh].id)
|
|
if GET_SCRIPT_TASK_STATUS(MIKE(),SCRIPT_TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE) != PERFORMING_TASK
|
|
TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE(MIKE(),vehs[mvf_Michael_veh].id, << 11.2359, 547.3271, 174.8878 >>,10,DRIVINGMODE_AVOIDCARS_OBEYLIGHTS,2)
|
|
endif
|
|
ENDIF
|
|
|
|
//Michael party
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(mike(),true)
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(frank(),true)
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(vehs[mvf_Michael_veh].id,true)
|
|
//Trevor lot invincible
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(trev(),false)
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(lester(),false)
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(vehs[mvf_helicopter].id,false)
|
|
|
|
if GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(player_ped_id()),vHOLE) > 200
|
|
if IS_STREAMVOL_ACTIVE()
|
|
STREAMVOL_DELETE(vol_construction)
|
|
endif
|
|
if interior_constuction != null
|
|
UNPIN_INTERIOR(interior_constuction)
|
|
endif
|
|
endif
|
|
|
|
if GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(player_ped_id()),<<1753.27808, 3262.48755, 40.32073>>) < 200
|
|
if not IsEntityAlive(vehs[mvf_trevor_veh].id)
|
|
CREATE_PLAYER_VEHICLE(vehs[mvf_trevor_veh].id,CHAR_TREVOR,<< 1768.0714, 3293.4478, 40.2011 >>, 305.7980)
|
|
else
|
|
SET_ENTITY_COORDS(vehs[mvf_trevor_veh].id,<< 1768.0714, 3293.4478, 40.2011 >>)
|
|
SET_ENTITY_HEADING(vehs[mvf_trevor_veh].id,305.7980)
|
|
SET_VEHICLE_ON_GROUND_PROPERLY(vehs[mvf_trevor_veh].id)
|
|
FREEZE_ENTITY_POSITION(vehs[mvf_trevor_veh].id,false)
|
|
endif
|
|
endif
|
|
|
|
stop_mission_audio_scenes(12)
|
|
if not IS_AUDIO_SCENE_ACTIVE("BS_1_HELI_RETURN_TO_AIRSTRIP")
|
|
START_AUDIO_SCENE("BS_1_HELI_RETURN_TO_AIRSTRIP")
|
|
endif
|
|
|
|
if IS_SAFE_TO_DISPLAY_GODTEXT()
|
|
and DOES_BLIP_EXIST(sLocatesData.LocationBlip)
|
|
if not bShowObjective
|
|
print_now("FH1_AIR2",DEFAULT_GOD_TEXT_TIME,1)
|
|
eTREV_Dialogue = T_di_END
|
|
bShowObjective = true
|
|
endif
|
|
endif
|
|
|
|
if IS_PLAYER_AT_LOCATION_WITH_BUDDIES_IN_VEHICLE(sLocatesData,<<1754.60693, 3268.81152, 40.24541>>,<<15,15,LOCATE_SIZE_HEIGHT>>,true,lester(),NULL,NULL,vehs[mvf_helicopter].id,"","","","","","FH1_HELI","FH1_BKHELI",FALSE,true)
|
|
and IS_VEHICLE_ALMOST_STOPPED(vehs[mvf_helicopter].id)
|
|
|
|
SET_PLAYER_CONTROL(player_id(),false)
|
|
// SET_VEHICLE_ENGINE_ON(vehs[mvf_helicopter].id,false,false)
|
|
BRING_VEHICLE_TO_HALT(vehs[mvf_helicopter].id,5,1)
|
|
|
|
|
|
if IsEntityAlive(vehs[mvf_trevor_veh].id)
|
|
SET_ENTITY_COORDS(vehs[mvf_trevor_veh].id,<< 1768.0714, 3293.4478, 40.2011 >>)
|
|
SET_ENTITY_HEADING(vehs[mvf_trevor_veh].id,305.7980)
|
|
endif
|
|
CLEAR_AREA(<<1754.60693, 3268.81152, 40.24541>>,20,true)
|
|
//tasks
|
|
//trev
|
|
TASK_LOOK_AT_COORD(TREV(),GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(TREV(),<<-3.30,3,0>>),-1,SLF_WIDEST_YAW_LIMIT | SLF_USE_TORSO)
|
|
//lester
|
|
CLEAR_PED_TASKS_IMMEDIATELY(LESTER())
|
|
FORCE_PED_AI_AND_ANIMATION_UPDATE(LESTER())
|
|
iSyncScene = CREATE_SYNCHRONIZED_SCENE(<<0,0,0>>,<<0,0,0>>)
|
|
ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(iSyncScene,vehs[mvf_helicopter].id,GET_ENTITY_BONE_INDEX_BY_NAME(vehs[mvf_helicopter].id,"seat_dside_r"))
|
|
TASK_SYNCHRONIZED_SCENE(lester(),iSyncScene,"missheist_the_big_score_setup_1@heli_exit","lester_exit_heli",INSTANT_BLEND_IN,WALK_BLEND_OUT,SYNCED_SCENE_DONT_INTERRUPT)
|
|
|
|
//cams
|
|
DESTROY_ALL_CAMS()
|
|
cameraIndex = CREATE_CAMERA(CAMTYPE_ANIMATED, TRUE)
|
|
PLAY_SYNCHRONIZED_CAM_ANIM(cameraIndex,iSyncScene,"lester_exit_heli_CAM","missheist_the_big_score_setup_1@heli_exit")
|
|
RENDER_SCRIPT_CAMS(true,false)
|
|
|
|
REPLAY_RECORD_BACK_FOR_TIME(5.0, 15.0, REPLAY_IMPORTANCE_HIGHEST)
|
|
|
|
HANG_UP_AND_PUT_AWAY_PHONE()
|
|
DISPLAY_RADAR(false)
|
|
DISPLAY_HUD(false)
|
|
bHotSwap = false
|
|
iDelay = get_game_timer()
|
|
|
|
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
|
|
eTREV_Dialogue = T_di_NONE
|
|
bDialoguePlayed = false
|
|
mission_substage++
|
|
endif
|
|
|
|
endif
|
|
endif
|
|
break
|
|
case 2
|
|
if player_ped_id() = TREV()
|
|
if not sCamDetails.bRun
|
|
if IS_SAFE_TO_DISPLAY_GODTEXT()
|
|
and not bDialoguePlayed
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_FINT",CONV_PRIORITY_MEDIUM)
|
|
bDialoguePlayed = true
|
|
endif
|
|
endif
|
|
|
|
if IS_SYNCHRONIZED_SCENE_RUNNING(iSyncScene)
|
|
and GET_SYNCHRONIZED_SCENE_PHASE(iSyncScene) >= 1
|
|
TASK_FOLLOW_NAV_MESH_TO_COORD(lester(),GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(lester(),<<0,10,0>>),PEDMOVE_WALK)
|
|
TASK_LOOK_AT_ENTITY(TREV(),LESTER(),15000,SLF_WIDEST_YAW_LIMIT | SLF_WHILE_NOT_IN_FOV)
|
|
iDelay = get_game_timer()
|
|
mission_substage++
|
|
endif
|
|
endif
|
|
ELSE
|
|
if player_ped_id() = mike()
|
|
if IS_SAFE_TO_DISPLAY_GODTEXT()
|
|
and not bDialoguePlayed
|
|
if CREATE_CONVERSATION(convo_struct,"FH1AUD","FH1_FINM",CONV_PRIORITY_MEDIUM)
|
|
bDialoguePlayed = true
|
|
endif
|
|
endif
|
|
if not IS_PED_IN_ANY_VEHICLE(FRANK())
|
|
SET_PED_RESET_FLAG(FRANK(), PRF_SearchForClosestDoor, TRUE)
|
|
IF get_game_timer() - iDelay > 4000
|
|
if not bsetEndCam
|
|
RENDER_SCRIPT_CAMS(false,false)
|
|
|
|
SET_ENTITY_COORDS(FRANK(), <<8.7834, 540.8622, 175.0277>>,true,true)
|
|
SET_ENTITY_HEADING(FRANK(), 154.3967)
|
|
/*SET_ENTITY_COORDS(FRANK(),<<8.91393, 540.71735, 175.02716>>,true,true)
|
|
SET_ENTITY_HEADING(FRANK(),154.30)*/
|
|
// SET_PLAYER_CONTROL(PLAYER_ID(),true)
|
|
STOP_GAMEPLAY_HINT()
|
|
bsetEndCam = true
|
|
endif
|
|
IF get_game_timer() - iDelay > 3500
|
|
SET_PLAYER_CONTROL(PLAYER_ID(),true)
|
|
ENDIF
|
|
// IF IS_ENTITY_IN_ANGLED_AREA(FRANK(), <<6.609171,536.303101,174.528046>>, <<8.059766,538.846924,177.778122>>, 3.000000)
|
|
// IF NOT IS_ENTITY_ON_SCREEN(FRANK())
|
|
// IF NOT IS_SPHERE_VISIBLE(GET_ENTITY_COORDS(FRANK(), FALSE), 1)
|
|
IF GET_SCRIPT_TASK_STATUS(FRANK(), SCRIPT_TASK_PERFORM_SEQUENCE) != PERFORMING_TASK
|
|
PRINTLN("@@@@@@@@@@@@@@@@@@@ DELETE_PED(peds[mpf_franklin].id) @@@@@@@@@@@@@@@@@@@")
|
|
DELETE_PED(peds[mpf_franklin].id)
|
|
DISPLAY_HUD(true)
|
|
mission_substage++
|
|
ENDIF
|
|
// ENDIF
|
|
ENDIF
|
|
else
|
|
iDelay = get_game_timer()
|
|
endif
|
|
ENDIF
|
|
ENDIF
|
|
|
|
break
|
|
case 3
|
|
if player_ped_id() = MIKE()
|
|
mission_substage++
|
|
elif player_ped_id() = trev()
|
|
if not sCamDetails.bRun
|
|
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
bstopshake = true
|
|
RENDER_SCRIPT_CAMS(false,false)
|
|
DISPLAY_RADAR(true)
|
|
DISPLAY_HUD(true)
|
|
DESTROY_ALL_CAMS()
|
|
if IsEntityAlive(LESTER())
|
|
delete_ped(peds[mpf_lester].id)
|
|
endif
|
|
mission_substage++
|
|
endif
|
|
ENDIF
|
|
endif
|
|
break
|
|
case 4
|
|
if player_ped_id() = MIKE()
|
|
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_Michael_veh].id)
|
|
SET_VEHICLE_RADIO_ENABLED(vehs[mvf_Michael_veh].id,true)
|
|
ENDIF
|
|
SET_PLAYER_PED_CAN_ENTER_SAVEHOUSE(CHAR_MICHAEL, SAVEHOUSE_FRANKLIN_VH,FALSE)
|
|
SET_PLAYER_CONTROL(PLAYER_ID(),true)
|
|
Mission_Passed()
|
|
elif player_ped_id() = trev()
|
|
SET_PLAYER_CONTROL(PLAYER_ID(),true)
|
|
Mission_Passed()
|
|
endif
|
|
break
|
|
endswitch
|
|
|
|
AUDIO_manange_dialogue()
|
|
|
|
ENDPROC
|
|
PROC ST_7_PASSED()
|
|
switch mission_substage
|
|
case STAGE_ENTRY
|
|
IF IS_SCREEN_FADED_OUT()
|
|
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
|
|
endif
|
|
mission_substage++
|
|
break
|
|
case 1
|
|
Mission_Passed()
|
|
break
|
|
endswitch
|
|
ENDPROC
|
|
|
|
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
// MISSION FLOW
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
PROC mission_flow()
|
|
Switch int_to_enum(MSF_MISSION_STAGE_FLAGS, mission_stage)
|
|
|
|
case msf_0_strip_club ST_0_STRIP_CLUB() break
|
|
case msf_1_font_of_bank ST_1_FRONT_OF_BANK() break
|
|
case msf_2_back_of_bank ST_2_BACK_OF_BANK() break
|
|
case msf_3_get_in_position ST_3_GET_IN_POSITION() break
|
|
case msf_4_heli_follow_truck ST_4_HELI_FOLLOW_TRUCK() break
|
|
case msf_5_CONSTRUCTION_HOLE ST_5_CONSTRUCTION_HOLE() break
|
|
case msf_6_drop_off_point ST_6_DROP_OFF_POINT() break
|
|
case msf_7_passed ST_7_PASSED() break
|
|
|
|
endswitch
|
|
ENDPROC
|
|
#IF IS_DEBUG_BUILD
|
|
PROC DO_DEBUG()
|
|
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_S)
|
|
MISSION_PASSED()
|
|
ELIF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_F)
|
|
MISSION_FAILED(mff_debug_fail)
|
|
ENDIF
|
|
ENDPROC
|
|
#endif
|
|
// ===========================================================================================================
|
|
// Script Loop
|
|
// ===========================================================================================================
|
|
|
|
SCRIPT
|
|
|
|
PRINTSTRING("...finale heist setup Mission Launched")
|
|
PRINTNL()
|
|
|
|
|
|
|
|
IF (HAS_FORCE_CLEANUP_OCCURRED())
|
|
if GET_CAUSE_OF_MOST_RECENT_FORCE_CLEANUP() = FORCE_CLEANUP_FLAG_SP_TO_MP
|
|
PRINTSTRING("...finale heist setup Mission Force Cleanup Single player to Multiplayer")
|
|
PRINTNL()
|
|
Mission_Flow_Mission_Force_Cleanup()
|
|
Mission_Cleanup()
|
|
TERMINATE_THIS_THREAD()
|
|
else
|
|
if not sCamDetails.bRun
|
|
PRINTSTRING("...finale heist setup Mission Force Cleanup Single player default")
|
|
PRINTNL()
|
|
Mission_Flow_Mission_Force_Cleanup()
|
|
if IS_CUTSCENE_ACTIVE()
|
|
SET_CUTSCENE_FADE_VALUES()
|
|
endif
|
|
// WHILE NOT GET_MISSION_FLOW_SAFE_TO_CLEANUP()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
Mission_Cleanup()
|
|
TERMINATE_THIS_THREAD()
|
|
endif
|
|
endif
|
|
ENDIF
|
|
|
|
DISABLE_STRIP_CLUBS()
|
|
SET_MISSION_FLAG(TRUE)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
//z menu for skipping stages
|
|
zMenuNames[msf_0_strip_club].sTxtLabel = "Stage 0: Strip club"
|
|
zMenuNames[msf_1_font_of_bank].sTxtLabel = "Stage 1: TREV: TRUCK 1 / MIKE: Front Bank"
|
|
zMenuNames[msf_2_back_of_bank].sTxtLabel = "Stage 2: TREV: TRUCK 2 / MIKE: Back Bank"
|
|
zMenuNames[msf_3_get_in_position].sTxtLabel = "Stage 3: TREV: HELI / MIKE: Back Bank"
|
|
zMenuNames[msf_4_heli_follow_truck].sTxtLabel = "Stage 4: Follow truck"
|
|
zMenuNames[msf_5_construction_hole].sTxtLabel = "Stage 5: Construction hole"
|
|
zMenuNames[msf_6_drop_off_point].sTxtLabel = "Stage 6: Drop off point"
|
|
zMenuNames[msf_7_passed].sTxtLabel = "--------- PASSED -----------"
|
|
|
|
zMenuNames[CST_INIT].sTxtLabel = "Initial Cutscene"
|
|
zMenuNames[CST_INIT].bSelectable = false
|
|
zMenuNames[CST_MCS_2].sTxtLabel = "Stage 2: MCS_2"
|
|
zMenuNames[CST_MCS_2].bSelectable = false
|
|
zMenuNames[CST_MCS_3].sTxtLabel = "Stage 4: MCS_3"
|
|
zMenuNames[CST_MCS_3].bSelectable = false
|
|
|
|
widget_debug_cv = START_WIDGET_GROUP("Finale heist setup Menu")
|
|
//widget_debug_cv = START_WIDGET_GROUP("MISSION DEBUG")
|
|
|
|
SET_LOCATES_HEADER_WIDGET_GROUP(widget_debug_cv)
|
|
//uber recording widget
|
|
SET_UBER_PARENT_WIDGET_GROUP(widget_debug_cv)
|
|
ADD_WIDGET_VECTOR_SLIDER("Cam offset: ",vdebugcamOFfset,-50,50,0.01)
|
|
|
|
ADD_WIDGET_INT_READ_ONLY("mission stage:", mission_stage)
|
|
ADD_WIDGET_INT_READ_ONLY("mission substage:", mission_substage)
|
|
|
|
ADD_WIDGET_INT_READ_ONLY("Heli stage: ", iheliWidget)
|
|
|
|
START_WIDGET_GROUP("Dialogue:")
|
|
ADD_WIDGET_INT_READ_ONLY("Mike:f=0|b=1: ", wMike_dialogue)
|
|
ADD_WIDGET_INT_READ_ONLY("Trev:f1=0|f2=1: ", wTREV_Dialogue)
|
|
ADD_WIDGET_INT_READ_ONLY("SC=0|T=1|R=2|E=3: ", wDialoguestage)
|
|
ADD_WIDGET_INT_READ_ONLY("both: ", wBOTH_dialogue)
|
|
ADD_WIDGET_BOOL("wb_TREVSpeechSwitchStopped: ", wb_TREVSpeechSwitchStopped)
|
|
ADD_WIDGET_BOOL("wb_MIKESpeechSwitchStopped: ", wb_MIKESpeechSwitchStopped)
|
|
STOP_WIDGET_GROUP()
|
|
|
|
START_WIDGET_GROUP("Follow trucks debug skip")
|
|
ADD_WIDGET_BOOL("skip to after tunnel:",wSkip)
|
|
STOP_WIDGET_GROUP()
|
|
CREATE_SWITCH_CAM_SCRIPT_SPECIFIC_WIDGETS()
|
|
STOP_WIDGET_GROUP()
|
|
|
|
SETUP_SPLINE_CAM_NODE_ARRAY_MICHAEL_TO_TREVOR_IN_TRUCK(scsSwitchCamMichaelToTrevorInTruck, peds[mpf_michael].id, peds[mpf_trevor].id)
|
|
SETUP_SPLINE_CAM_NODE_ARRAY_MICHAEL_TO_TREVOR_IN_HELI(scsSwitchCamMichaelToTrevorInHeli, peds[mpf_michael].id, peds[mpf_trevor].id)
|
|
SETUP_SPLINE_CAM_NODE_ARRAY_TREVOR_IN_HELI_TO_MICHAEL(scsSwitchCamTrevorInHeliToMichael, peds[mpf_trevor].id, peds[mpf_michael].id)
|
|
|
|
CREATE_SPLINE_CAM_WIDGETS(scsSwitchCamMichaelToTrevorInTruck, "Michael Car", "Trevor Truck", widget_debug_cv)
|
|
CREATE_SPLINE_CAM_WIDGETS(scsSwitchCamMichaelToTrevorInHeli, "Michael Car", "Trevor Heli", widget_debug_cv)
|
|
CREATE_SPLINE_CAM_WIDGETS(scsSwitchCamTrevorInHeliToMichael, "Trevor Heli", "Michael Car", widget_debug_cv)
|
|
|
|
#endif
|
|
|
|
REQUEST_ADDITIONAL_TEXT("FINH1",MISSION_TEXT_SLOT)
|
|
|
|
WHILE NOT HAS_ADDITIONAL_TEXT_LOADED(MISSION_TEXT_SLOT)
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
MISSION_SETUP()
|
|
|
|
WHILE (TRUE)
|
|
|
|
REPLAY_CHECK_FOR_EVENT_THIS_FRAME("M_TheBigScoreSetup")
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
UPDATE_SPLINE_CAM_WIDGETS(scsSwitchCamMichaelToTrevorInTruck)
|
|
UPDATE_SPLINE_CAM_WIDGETS(scsSwitchCamMichaelToTrevorInHeli)
|
|
UPDATE_SPLINE_CAM_WIDGETS(scsSwitchCamTrevorInHeliToMichael)
|
|
#ENDIF
|
|
|
|
//prestreaming loop
|
|
Update_Asset_Management_System(sAssetData) // Deals with loading any assets and keeps track of what has been loaded
|
|
Update_Cutscene_Prestreaming(sCutscenePedVariationRegister)
|
|
//main loop
|
|
Mission_stage_management()
|
|
MISSION_STAGE_SKIP()
|
|
|
|
if not bDoSkip
|
|
MISSION_CHECKS()
|
|
mission_flow()
|
|
endif
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
DO_DEBUG()
|
|
HANDLE_SWITCH_CAM_SCRIPT_SPECIFIC_WIDGETS()
|
|
#ENDIF
|
|
|
|
WAIT(0)
|
|
|
|
ENDWHILE
|
|
ENDSCRIPT
|