//╔═════════════════════════════════════════════════════════════════════════════╗ //║ ║ //║ Author: Alan Litobarski Date: 28/05/2010 ║ //║ ║ //╠═════════════════════════════════════════════════════════════════════════════╣ //║ ║ //║ Street Race Police Bait - (carsteal3.sc) ║ //║ ║ //║ Pull-up alongside the owner of an expensive sports car ║ //║ and challenge him to a street race. Half way through you ║ //║ have your buddies pretending to be cops pull you over, ║ //║ and you jack his car. ║ //║ ║ //╚═════════════════════════════════════════════════════════════════════════════╝ //Compile out Title Update changes to header functions. //Must be before includes. //CONST_INT USE_TU_CHANGES 0 // Removed by Kenneth R. //═════════════════════════════════╡ HEADERS ╞═══════════════════════════════════ USING "rage_builtins.sch" USING "globals.sch" USING "commands_audio.sch" USING "commands_camera.sch" USING "commands_cutscene.sch" USING "commands_clock.sch" USING "commands_debug.sch" USING "commands_entity.sch" USING "commands_fire.sch" USING "commands_graphics.sch" USING "commands_hud.sch" USING "commands_misc.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 "commands_physics.sch" USING "dialogue_public.sch" USING "flow_public_core_override.sch" USING "script_blips.sch" USING "script_player.sch" USING "script_misc.sch" USING "chase_hint_cam.sch" USING "locates_public.sch" USING "selector_public.sch" USING "replay_public.sch" USING "comms_control_public.sch" USING "cam_recording_public.sch" USING "help_at_location.sch" USING "cutscene_public.sch" USING "mission_stat_public.sch" USING "script_ped.sch" USING "CompletionPercentage_public.sch" USING "carsteal_public.sch" USING "clearmissionarea.sch" USING "building_control_public.sch" USING "commands_recording.sch" USING "push_in_public.sch" USING "emergency_call.sch" USING "spline_cam_edit.sch" // total should not exceed 225 CONST_INT TOTAL_NUMBER_OF_TRAFFIC_CARS 340 //125 CONST_INT TOTAL_NUMBER_OF_PARKED_CARS 25 CONST_INT TOTAL_NUMBER_OF_SET_PIECE_CARS 60 // total should not exceed 12 CONST_INT MAX_NUMBER_OF_TRAFFIC_CARS_PLAYING_BACK 12 CONST_INT MAX_NUMBER_OF_SET_PIECE_CARS_PLAYING_BACK 15 // 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" USING "select_mission_stage.sch" #ENDIF //Debug Variables //#IF IS_DEBUG_BUILD // INT iCinCamID, iCinCamIDLast // BOOL bCinCamSave // BOOL bCinCamOutput // BOOL bCinCamDebug // BOOL bCinCamLink, bCinCamLinkLast // // VECTOR vCinCamPos, vCinCamPosLast // VECTOR vCinCamRot, vCinCamRotLast // FLOAT fCinCamFov, fCinCamFovLast // VECTOR vCinCamTanIn, vCinCamTanInLast // FLOAT fCinCamTanInMag, fCinCamTanInMagLast // VECTOR vCinCamTanOut, vCinCamTanOutLast // FLOAT fCinCamTanOutMag, fCinCamTanOutMagLast // FLOAT fCinCamRec, fCinCamRecLast //#ENDIF //Integers CONST_INT MAX_CAR_HEALTH 2000 INT iCutsceneStage INT iDialogueStage = 0 INT iDialogueLineCount[5] INT iDialogueTimer[3] CONST_INT iTotalEffects 8 INT iGameTimer ENUM CHASE_TIMER_INDEX CHASE_TIMER_F620, CHASE_TIMER_ENTITYXF, CHASE_TIMER_CHEETAH ENDENUM INT iRoadNodeTimer INT iChaseTimer[COUNT_OF(CHASE_TIMER_INDEX)] VECTOR vCurrentPoint[COUNT_OF(CHASE_TIMER_INDEX)], vChasePoint[COUNT_OF(CHASE_TIMER_INDEX)] FLOAT fCurrentPoint[COUNT_OF(CHASE_TIMER_INDEX)], fChasePoint[COUNT_OF(CHASE_TIMER_INDEX)] INT iInterruptTimer ENUM CHASE_CARS CHASE_CAR_F620, CHASE_CAR_ENTITYXF, CHASE_CAR_CHEETAH ENDENUM INT iCarHealth[COUNT_OF(CHASE_CARS)] FLOAT fCarGasTank[COUNT_OF(CHASE_CARS)] FLOAT fCarEngineHealth[COUNT_OF(CHASE_CARS)] //Bools BOOL bVideoRecording BOOL bInitStage BOOL bCleanupStage BOOL bRadar = TRUE #IF IS_DEBUG_BUILD //Debug BOOL bAutoSkipping #ENDIF BOOL bSkipped //Used for J-skipping and Mid Mission Replay BOOL bPreloaded //For Preloaded Cutscene BOOL bReplaySkip BOOL bCutsceneSkipped //Tracks if WAS_CUTSCENE_SKIPPED() returns TRUE BOOL bPassed //Passed the mission BOOL bDelayHUD = FALSE BOOL bPinnedChopShop BOOL bSetUncapped BOOL bHasChanged //Variable for storing the state of “player has changed outfit” //BOOL bSparks[iTotalEffects] BOOL bAbilityUsed BOOL bWaitForPlayer = TRUE #IF IS_DEBUG_BUILD BOOL bDebugAudio #ENDIF //Vectors and Floats VECTOR VECTOR_ZERO = <<0.0, 0.0, 0.0>> FLOAT fModifyTopSpeed = 0.0 VECTOR vPlayerStart = <<117.1050, -414.6006, 40.1527>> CONST_FLOAT fPlayerStart 268.8413 VECTOR vRival1Start = <<2577.2300, 360.6015, 107.8564>> CONST_FLOAT fRival1Start 0.0 VECTOR vRival2Start = <<2583.5542, 360.2650, 107.7638>> CONST_FLOAT fRival2Start -1.3639 VECTOR vPoliceStart1 = <<2682.7749, 5131.3569, 43.8418>> CONST_FLOAT fPoliceStart1 147.9465 //VECTOR vPoliceRotate1 = <<0.0, -9.1609, 147.9465>> VECTOR vPoliceStart2 = <<2684.9312, 5131.9438, 43.8593>> CONST_FLOAT fPoliceStart2 135.0532 //VECTOR vPoliceRotate2 = <<-0.0799, -9.6398, 135.0532>> VECTOR vTown = <<2571.36, 360.45, 107.4569>> //<<2577.3052, 364.9556, 107.4569>> VECTOR vGarage = <<488.8870, -1323.6843, 28.1722>> //VECTOR vCinematicCam //FLOAT fForceBoost //Boost for bike //Text Labels //Audio //Strings STRING sCarrecGasStation = "ALgasstation" STRING sCarrecSetup = "ALubersetup" STRING sCarrecCop = "ALubercop" STRING sCarrecGarage = "ALgarage" //Playback FLOAT fPlaybackSpeed = 1.0 //Anim Dicts STRING sAnimDictCar3 = "misscarsteal3" STRING sAnimDictCar3PullOver = "misscarsteal3pullover" //STRING sAnimDictPhoneUse = "veh@low@front_ds@base" //═════════════════════════════════╡ INDEXES ╞═══════════════════════════════════ //Ped PED_INDEX pedRival1 PED_INDEX pedRival2 PED_INDEX pedDevin PED_INDEX pedMolly PED_INDEX pedWorker1 PED_INDEX pedWorker2 //Vehicle VEHICLE_INDEX vehPlayer VEHICLE_INDEX vehRival1 VEHICLE_INDEX vehRival2 VEHICLE_INDEX vehPolice1 VEHICLE_INDEX vehPolice2 VEHICLE_INDEX vehDevin VEHICLE_INDEX vehCutscene VEHICLE_INDEX vehTrailer[5] //Blip BLIP_INDEX blipStart BLIP_INDEX blipPlayer BLIP_INDEX blipRival1 BLIP_INDEX blipRival2 BLIP_INDEX blipPolice BLIP_INDEX blipPolice2 BLIP_INDEX blipGarage //Camera CAMERA_INDEX camMain CAMERA_INDEX camCinematic //CAMERA_INDEX camSwitch //CAMERA_INDEX camGameplay //Sequence SEQUENCE_INDEX seqMain //Interior INTERIOR_INSTANCE_INDEX intChopShop //Streaming Volume STREAMVOL_ID svolCarStealOutro //Object OBJECT_INDEX objID OBJECT_INDEX objRamp //Doors HASH_ENUM STUDIO_GATES_HASH_ENUM DOORHASH_GARAGE_FRONT ENDENUM INT iSlidingGarageDoor = ENUM_TO_INT(DOORHASH_GARAGE_FRONT) //Rope //ROPE_INDEX ropeChain //Particles //PTFX_ID ptfxSparks[iTotalEffects] //PTFX_ID ptfxFric[iTotalEffects] //PTFX_ID ptfxSmoke[iTotalEffects] //Weapons //WEAPON_TYPE wtUnarmed = WEAPONTYPE_UNARMED //Relationship Groups REL_GROUP_HASH relGroupBuddy REL_GROUP_HASH relGroupEnemy //Locates Struct LOCATES_HEADER_DATA sLocatesData //Hint Cam Struct CHASE_HINT_CAM_STRUCT localChaseHintCamStruct //Push In Cam Struct PUSH_IN_DATA pushInData //Dialogue structPedsForConversation sPedsForConversation INT i_CST3_MCS1_AnimStartTime = 0 INT i_CST3_MCS1_DialogueDelay = 0 #IF IS_DEBUG_BUILD WIDGET_GROUP_ID widGroup #ENDIF //══════════════════════════════════╡ ENUMS ╞════════════════════════════════════ ENUM MissionObjective initMission, cutIntro, stageArrive, cutRace, stageRace, cutSwitch, stageChase, cutBridge, stageDriveHome, cutHome, passMission, failMission ENDENUM MissionObjective eMissionObjective = initMission #IF IS_DEBUG_BUILD MissionObjective eMissionObjectiveAutoJSkip = initMission #ENDIF ENUM MissionFail failDefault, failPlayerDied, failMichaelDied, failFranklinDied, failTrevorDied, failTrevorShot, failDevinDied, failDevinShot, failDevinCarDestroyed, failDevinCarDamaged, failRacerDied, failCarDestroyed, failBikeDestroyed, failBikeDestroyedTrevor, failBikeDamagedTrevor, failLeftBehind, failAbandonedBike, failAbandonedCar, failRacerShot, failRacerSpooked, failRacerLeft, failDamagedCar, failStuckCar, failRaceDisrupted ENDENUM MissionFail eMissionFail = failDefault //Stage Selector #IF IS_DEBUG_BUILD INT iStageSkipMenu CONST_INT MAX_SKIP_MENU_LENGTH COUNT_OF(MissionObjective) - 2 //Number of stages in mission minus Pass/Fail MissionStageMenuTextStruct SkipMenuStruct[MAX_SKIP_MENU_LENGTH] PROC MissionNames() SkipMenuStruct[0].sTxtLabel = "initMission" SkipMenuStruct[1].sTxtLabel = "cutIntro - (CAR_1_INT_CONCAT)" SkipMenuStruct[2].sTxtLabel = "stageArrive" SkipMenuStruct[3].sTxtLabel = "cutRace - (Car_steal_3_mcs_1)" SkipMenuStruct[4].sTxtLabel = "stageRace" SkipMenuStruct[5].sTxtLabel = "cutSwitch - (Car_steal_3_mcs_2)" SkipMenuStruct[6].sTxtLabel = "stageChase" SkipMenuStruct[7].sTxtLabel = "cutBridge - (Car_steal_3_mcs_3)" SkipMenuStruct[8].sTxtLabel = "stageDriveHome" SkipMenuStruct[9].sTxtLabel = "cutHome" ENDPROC #ENDIF //Text STRING sConversationBlock = "CST3AUD" INT iTriggeredTextHashes[100] INT iNumTextHashesStored = 0 PROC REMOVE_LABEL_ARRAY_SPACES() INT iArrayLength = COUNT_OF(iTriggeredTextHashes) INT i = 0 REPEAT (iArrayLength - 1) i IF iTriggeredTextHashes[i] = 0 IF iTriggeredTextHashes[i+1] != 0 iTriggeredTextHashes[i] = iTriggeredTextHashes[i+1] iTriggeredTextHashes[i+1] = 0 ENDIF ENDIF ENDREPEAT ENDPROC FUNC INT GET_LABEL_INDEX(INT iLabelHash) INT i = 0 REPEAT iNumTextHashesStored i IF iTriggeredTextHashes[i] = iLabelHash RETURN i ENDIF ENDREPEAT RETURN -1 ENDFUNC FUNC BOOL HAS_LABEL_BEEN_TRIGGERED(STRING strLabel) INT iHash = GET_HASH_KEY(strLabel) IF GET_LABEL_INDEX(iHash) != -1 RETURN TRUE ENDIF RETURN FALSE ENDFUNC PROC SET_LABEL_AS_TRIGGERED(STRING strLabel, BOOL bTrigger) INT iHash = GET_HASH_KEY(strLabel) IF bTrigger IF NOT HAS_LABEL_BEEN_TRIGGERED(strLabel) INT iArraySize = COUNT_OF(iTriggeredTextHashes) IF iNumTextHashesStored < iArraySize iTriggeredTextHashes[iNumTextHashesStored] = iHash iNumTextHashesStored++ ELSE #IF IS_DEBUG_BUILD SCRIPT_ASSERT("SET_LABEL_AS_TRIGGERED: Label array is full.") #ENDIF ENDIF ENDIF ELSE INT iIndex = GET_LABEL_INDEX(iHash) IF iIndex != -1 iTriggeredTextHashes[iIndex] = 0 REMOVE_LABEL_ARRAY_SPACES() iNumTextHashesStored-- ENDIF ENDIF ENDPROC PROC CLEAR_TRIGGERED_LABELS() INT iArraySize = COUNT_OF(iTriggeredTextHashes) INT i = 0 REPEAT iArraySize i iTriggeredTextHashes[i] = 0 ENDREPEAT iNumTextHashesStored = 0 ENDPROC //Models INT iLoadedModelHashes[25] FUNC BOOL HAS_MODEL_BEEN_LOADED(MODEL_NAMES mnModel) INT iHash = ENUM_TO_INT(mnModel) INT i REPEAT COUNT_OF(iLoadedModelHashes) i IF iLoadedModelHashes[i] = iHash RETURN TRUE ENDIF ENDREPEAT RETURN FALSE ENDFUNC PROC SET_MODEL_AS_LOADED(MODEL_NAMES mnModel, BOOL bIsLoaded) INT iHash = ENUM_TO_INT(mnModel) INT i = 0 BOOL bQuitLoop = FALSE WHILE i < COUNT_OF(iLoadedModelHashes) AND NOT bQuitLoop IF bIsLoaded IF iLoadedModelHashes[i] = 0 iLoadedModelHashes[i] = iHash bQuitLoop = TRUE ENDIF ELSE IF iLoadedModelHashes[i] = iHash iLoadedModelHashes[i] = 0 bQuitLoop = TRUE ENDIF ENDIF i++ ENDWHILE ENDPROC PROC CLEAR_LOADED_MODELS() INT i = 0 REPEAT COUNT_OF(iLoadedModelHashes) i iLoadedModelHashes[i] = 0 ENDREPEAT ENDPROC FUNC BOOL HAS_MODEL_LOADED_CHECK(MODEL_NAMES mnModel) IF NOT HAS_MODEL_BEEN_LOADED(mnModel) REQUEST_MODEL(mnModel) #IF IS_DEBUG_BUILD PRINTLN("LOADING MODEL #", ENUM_TO_INT(mnModel)) #ENDIF IF HAS_MODEL_LOADED(mnModel) SET_MODEL_AS_LOADED(mnModel, TRUE) #IF IS_DEBUG_BUILD PRINTLN("MODEL #", ENUM_TO_INT(mnModel), " LOADED") #ENDIF ENDIF ELSE RETURN TRUE ENDIF RETURN FALSE ENDFUNC //Recordings INT iLoadedRecordingHashes[30] FUNC BOOL HAS_RECORDING_BEEN_LOADED(INT iFileNumber, STRING sRecordingName) TEXT_LABEL txtHash txtHash = iFileNumber txtHash += sRecordingName INT iHash = GET_HASH_KEY(txtHash) INT i REPEAT COUNT_OF(iLoadedRecordingHashes) i IF iLoadedRecordingHashes[i] = iHash RETURN TRUE ENDIF ENDREPEAT RETURN FALSE ENDFUNC PROC SET_RECORDING_AS_LOADED(INT iFileNumber, STRING sRecordingName, BOOL bIsLoaded) TEXT_LABEL txtHash txtHash = iFileNumber txtHash += sRecordingName INT iHash = GET_HASH_KEY(txtHash) INT i = 0 BOOL bQuitLoop = FALSE WHILE i < COUNT_OF(iLoadedRecordingHashes) AND NOT bQuitLoop IF bIsLoaded IF iLoadedRecordingHashes[i] = 0 iLoadedRecordingHashes[i] = iHash bQuitLoop = TRUE ENDIF ELSE IF iLoadedRecordingHashes[i] = iHash iLoadedRecordingHashes[i] = 0 bQuitLoop = TRUE ENDIF ENDIF i++ ENDWHILE ENDPROC PROC CLEAR_LOADED_RECORDINGS() INT i = 0 REPEAT COUNT_OF(iLoadedRecordingHashes) i iLoadedRecordingHashes[i] = 0 ENDREPEAT ENDPROC FUNC BOOL HAS_RECORDING_LOADED_CHECK(INT iFileNumber, STRING sRecordingName) IF NOT HAS_RECORDING_BEEN_LOADED(iFileNumber, sRecordingName) REQUEST_VEHICLE_RECORDING(iFileNumber, sRecordingName) IF HAS_VEHICLE_RECORDING_BEEN_LOADED(iFileNumber, sRecordingName) SET_RECORDING_AS_LOADED(iFileNumber, sRecordingName, TRUE) PRINTSTRING("RECORDING ") PRINTINT(iFileNumber) PRINTSTRING(" ") PRINTSTRING(sRecordingName) PRINTSTRING(" LOADED") PRINTNL() ELSE PRINTSTRING("LOADING RECORDING ") PRINTINT(iFileNumber) PRINTSTRING(" ") PRINTSTRING(sRecordingName) PRINTNL() ENDIF ELSE RETURN TRUE ENDIF RETURN FALSE ENDFUNC PROC UNLOAD_RECORDING(INT iFileNumber, STRING sRecordingName) IF HAS_RECORDING_BEEN_LOADED(iFileNumber, sRecordingName) REMOVE_VEHICLE_RECORDING(iFileNumber, sRecordingName) SET_RECORDING_AS_LOADED(iFileNumber, sRecordingName, FALSE) ENDIF ENDPROC //Animation Dictionaries INT iAnimDictHashes[20] FUNC BOOL HAS_ANIM_DICT_BEEN_LOADED(STRING strAnimDict) INT iHash = GET_HASH_KEY(strAnimDict) INT iNumHashes = COUNT_OF(iAnimDictHashes) INT i = 0 REPEAT iNumHashes i IF iAnimDictHashes[i] = iHash RETURN TRUE ENDIF ENDREPEAT RETURN FALSE ENDFUNC PROC SET_ANIM_DICT_AS_LOADED(STRING strAnimDict, BOOL bIsLoaded) INT iHash = GET_HASH_KEY(strAnimDict) INT iNumHashes = COUNT_OF(iAnimDictHashes) INT i = 0 BOOL bQuitLoop = FALSE WHILE i < iNumHashes AND NOT bQuitLoop IF bIsLoaded IF iAnimDictHashes[i] = 0 iAnimDictHashes[i] = iHash bQuitLoop = TRUE ENDIF ELSE IF iAnimDictHashes[i] = iHash iAnimDictHashes[i] = 0 bQuitLoop = TRUE ENDIF ENDIF i++ ENDWHILE ENDPROC PROC CLEAR_LOADED_ANIM_DICTS() INT iNumHashes = COUNT_OF(iAnimDictHashes) INT i = 0 REPEAT iNumHashes i iAnimDictHashes[i] = 0 ENDREPEAT ENDPROC FUNC BOOL HAS_ANIM_DICT_LOADED_CHECK(STRING strAnimDict) IF NOT HAS_ANIM_DICT_BEEN_LOADED(strAnimDict) REQUEST_ANIM_DICT(strAnimDict) #IF IS_DEBUG_BUILD PRINTLN("LOADING ANIM DICT ", strAnimDict) #ENDIF IF HAS_ANIM_DICT_LOADED(strAnimDict) SET_ANIM_DICT_AS_LOADED(strAnimDict, TRUE) #IF IS_DEBUG_BUILD PRINTLN("ANIM DICT ", strAnimDict, " LOADED") #ENDIF ENDIF ELSE RETURN TRUE ENDIF RETURN FALSE ENDFUNC PROC UNLOAD_ANIM_DICT(STRING strAnimDict) IF HAS_ANIM_DICT_BEEN_LOADED(strAnimDict) REMOVE_ANIM_DICT(strAnimDict) SET_ANIM_DICT_AS_LOADED(strAnimDict, FALSE) ENDIF ENDPROC //Audio ENUM AUDIO_TRACK NO_AUDIO, CAR1_MISSION_START, CAR1_MISSION_RESTART, CAR1_COP_BIKES, CAR1_COPS_RESTART, CAR1_APPROACH, CAR1_CHASE_START, CAR1_PULL_OVER, CAR1_CHASE_RESTART, CAR1_BRIDGE, CAR1_MISSION_FAIL ENDENUM AUDIO_TRACK ePrepAudioTrack = NO_AUDIO AUDIO_TRACK ePlayAudioTrack = NO_AUDIO //════════════════════════════════╡ STRUCTURES ╞═════════════════════════════════ //Switch SELECTOR_PED_STRUCT sSelectorPeds SELECTOR_CAM_STRUCT sCamDetails //════════════════════════════════╡ FUNCTIONS ╞══════════════════════════════════ BOOL bPlayerControl = TRUE PROC SAFE_SET_PLAYER_CONTROL(PLAYER_INDEX iPlayerIndex, BOOL bSetControlOn, SET_PLAYER_CONTROL_FLAGS iFlags = 0) SET_PLAYER_CONTROL(iPlayerIndex, bSetControlOn, iFlags) bPlayerControl = bSetControlOn ENDPROC FUNC BOOL SAFE_IS_PLAYER_CONTROL_ON() IF bPlayerControl RETURN TRUE ENDIF RETURN FALSE ENDFUNC PROC ADVANCE_CUTSCENE() SETTIMERA(0) iCutsceneStage++ ENDPROC PROC ADVANCE_STAGE() bCleanupStage = TRUE ENDPROC FUNC BOOL SKIPPED_STAGE() IF bSkipped = TRUE bSkipped = FALSE RETURN TRUE ELSE RETURN FALSE ENDIF ENDFUNC FUNC BOOL INIT_STAGE() IF bInitStage = FALSE SETTIMERA(0) bInitStage = TRUE RETURN TRUE ELSE RETURN FALSE ENDIF ENDFUNC FUNC BOOL CLEANUP_STAGE() IF bCleanupStage = TRUE SETTIMERA(0) bInitStage = FALSE bCleanupStage = FALSE iCutsceneStage = 0 iDialogueStage = 0 INT i REPEAT COUNT_OF(iDialogueLineCount) i iDialogueLineCount[i] = -1 ENDREPEAT REPEAT COUNT_OF(iDialogueTimer) i iDialogueTimer[i] = 0 ENDREPEAT RETURN TRUE ELSE RETURN FALSE ENDIF ENDFUNC PROC CLEAR_TEXT() CLEAR_PRINTS() CLEAR_HELP(TRUE) CLEAR_ALL_FLOATING_HELP() KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE() ENDPROC PROC PRINT_ADV(STRING sPrint, INT iDuration = DEFAULT_GOD_TEXT_TIME, BOOL bOnce = TRUE) IF NOT HAS_LABEL_BEEN_TRIGGERED(sPrint) PRINT_NOW(sPrint, iDuration, 1) SET_LABEL_AS_TRIGGERED(sPrint, bOnce) ENDIF ENDPROC PROC PRINT_HELP_ADV(STRING sPrint, BOOL bOnce = TRUE, INT iOverrideTime = -1) IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED() IF NOT HAS_LABEL_BEEN_TRIGGERED(sPrint) PRINT_HELP(sPrint, iOverrideTime) SET_LABEL_AS_TRIGGERED(sPrint, bOnce) PRINTLN("PRINTHELP ", sPrint) ENDIF ENDIF ENDPROC PROC PRINT_HELP_ADV_POS(STRING sPrint, VECTOR vLocation, ENTITY_INDEX entIndex = NULL, BOOL bOnce = TRUE, eARROW_DIRECTION eArrow = HELP_TEXT_SOUTH, INT iDuration = 7500) IF NOT HAS_LABEL_BEEN_TRIGGERED(sPrint) IF NOT ARE_VECTORS_EQUAL(vLocation, VECTOR_ZERO) AND vLocation.Z != 0.0 AND entIndex = NULL HELP_AT_LOCATION(sPrint, vLocation, eArrow, iDuration) ELIF NOT ARE_VECTORS_EQUAL(vLocation, VECTOR_ZERO) AND vLocation.Z = 0.0 AND entIndex = NULL HELP_AT_SCREEN_LOCATION(sPrint, vLocation.X, vLocation.Y, eArrow, iDuration) ELIF entIndex != NULL AND ARE_VECTORS_EQUAL(vLocation, VECTOR_ZERO) HELP_AT_ENTITY(sPrint, entIndex, eArrow, iDuration) ELIF entIndex != NULL AND NOT ARE_VECTORS_EQUAL(vLocation, VECTOR_ZERO) HELP_AT_ENTITY_OFFSET(sPrint, entIndex, vLocation, eArrow, iDuration) ENDIF SET_LABEL_AS_TRIGGERED(sPrint, bOnce) ENDIF ENDPROC FUNC PED_INDEX PLAYER_PED(enumCharacterList CHAR_TYPE) IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TYPE RETURN PLAYER_PED_ID() ELSE RETURN sSelectorPeds.pedID[GET_SELECTOR_SLOT_FROM_PLAYER_PED_ENUM(CHAR_TYPE)] ENDIF ENDFUNC PROC SET_PED_POSITION(PED_INDEX pedIndex, VECTOR vCoords, FLOAT fHeading, BOOL bKeepVehicle = TRUE) IF bKeepVehicle = TRUE SET_PED_COORDS_KEEP_VEHICLE(pedIndex, vCoords) ELSE SET_ENTITY_COORDS(pedIndex, vCoords) ENDIF SET_ENTITY_HEADING(pedIndex, fHeading) ENDPROC PROC SET_VEHICLE_POSITION(VEHICLE_INDEX vehicleIndex, VECTOR vCoords, FLOAT fHeading) SET_ENTITY_COORDS(vehicleIndex, vCoords) SET_ENTITY_HEADING(vehicleIndex, fHeading) ENDPROC PROC SPAWN_PLAYER(PED_INDEX &pedIndex, enumCharacterList eChar, VECTOR vStart, FLOAT fStart = 0.0, BOOL bDefault = FALSE) IF NOT DOES_ENTITY_EXIST(pedIndex) WHILE NOT CREATE_PLAYER_PED_ON_FOOT(pedIndex, eChar, vStart, fStart) WAIT(0) ENDWHILE IF bDefault = TRUE SET_PED_DEFAULT_COMPONENT_VARIATION(pedIndex) ENDIF ENDIF ENDPROC PROC SPAWN_PED(PED_INDEX &pedIndex, MODEL_NAMES eModel, VECTOR vStart, FLOAT fStart = 0.0, BOOL bDefault = TRUE) IF NOT DOES_ENTITY_EXIST(pedIndex) pedIndex = CREATE_PED(PEDTYPE_MISSION, eModel, vStart, fStart) IF bDefault = TRUE SET_PED_DEFAULT_COMPONENT_VARIATION(pedIndex) ENDIF SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(pedIndex, TRUE) ENDIF ENDPROC PROC SPAWN_VEHICLE(VEHICLE_INDEX &vehIndex, MODEL_NAMES eModel, VECTOR vStart, FLOAT fStart = 0.0, INT iColour = -1, FLOAT fDirt = 0.0) IF NOT DOES_ENTITY_EXIST(vehIndex) vehIndex = CREATE_VEHICLE(eModel, vStart, fStart) IF iColour >= 0 SET_VEHICLE_COLOURS(vehIndex, iColour, iColour) SET_VEHICLE_EXTRA_COLOURS(vehIndex, iColour, iColour) ENDIF SET_VEHICLE_DIRT_LEVEL(vehIndex, fDirt) SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehIndex, TRUE) ENDIF ENDPROC FUNC BOOL SAFE_DEATH_CHECK_PED(PED_INDEX &pedIndex) IF DOES_ENTITY_EXIST(pedIndex) IF IS_ENTITY_DEAD(pedIndex) OR IS_PED_INJURED(pedIndex) RETURN TRUE ENDIF ENDIF RETURN FALSE ENDFUNC FUNC BOOL SAFE_DEATH_CHECK_VEHICLE(VEHICLE_INDEX &vehIndex) IF DOES_ENTITY_EXIST(vehIndex) IF IS_ENTITY_DEAD(vehIndex) OR NOT IS_VEHICLE_DRIVEABLE(vehIndex) OR IS_VEHICLE_PERMANENTLY_STUCK(vehIndex) RETURN TRUE ENDIF ENDIF RETURN FALSE ENDFUNC PROC SAFE_ADD_BLIP_LOCATION(BLIP_INDEX &blipIndex, VECTOR vCoords, BOOL bRoute = FALSE) IF NOT DOES_BLIP_EXIST(blipIndex) blipIndex = CREATE_BLIP_FOR_COORD(vCoords, bRoute) SET_BLIP_PRIORITY(blipIndex, BLIPPRIORITY_HIGHEST) ENDIF ENDPROC PROC SAFE_ADD_BLIP_PED(BLIP_INDEX &blipIndex, PED_INDEX &pedIndex, BOOL bEnemy = TRUE) IF NOT DOES_BLIP_EXIST(blipIndex) IF DOES_ENTITY_EXIST(pedIndex) IF NOT IS_PED_INJURED(pedIndex) blipIndex = CREATE_BLIP_FOR_PED(pedIndex, bEnemy) IF bEnemy = FALSE SET_BLIP_PRIORITY(blipIndex, BLIPPRIORITY_HIGH) ENDIF ENDIF ENDIF ENDIF ENDPROC PROC SAFE_ADD_BLIP_VEHICLE(BLIP_INDEX &blipIndex, VEHICLE_INDEX &vehIndex, BOOL bEnemy = TRUE) IF NOT DOES_BLIP_EXIST(blipIndex) IF DOES_ENTITY_EXIST(vehIndex) IF NOT IS_ENTITY_DEAD(vehIndex) blipIndex = CREATE_BLIP_FOR_VEHICLE(vehIndex, bEnemy) IF bEnemy = FALSE SET_BLIP_PRIORITY(blipIndex, BLIPPRIORITY_HIGH) ENDIF ENDIF ENDIF ENDIF ENDPROC PROC SAFE_REMOVE_BLIP(BLIP_INDEX &blipIndex) IF DOES_BLIP_EXIST(blipIndex) REMOVE_BLIP(blipIndex) ENDIF ENDPROC PROC SAFE_DELETE_PED(PED_INDEX &pedIndex) IF DOES_ENTITY_EXIST(pedIndex) DELETE_PED(pedIndex) ENDIF ENDPROC PROC SAFE_DELETE_VEHICLE(VEHICLE_INDEX &vehicleIndex) IF DOES_ENTITY_EXIST(vehicleIndex) DELETE_VEHICLE(vehicleIndex) ENDIF ENDPROC PROC SAFE_DELETE_OBJECT(OBJECT_INDEX &objectIndex) IF DOES_ENTITY_EXIST(objectIndex) DELETE_OBJECT(objectIndex) ENDIF ENDPROC PROC SAFE_FREEZE_ENTITY_POSITION(ENTITY_INDEX EntityIndex, BOOL FrozenByScriptFlag) IF NOT IS_ENTITY_ATTACHED(EntityIndex) IF (IS_ENTITY_A_PED(EntityIndex) AND NOT IS_PED_IN_ANY_VEHICLE(GET_PED_INDEX_FROM_ENTITY_INDEX(EntityIndex))) OR NOT IS_ENTITY_A_PED(EntityIndex) FREEZE_ENTITY_POSITION(EntityIndex, FrozenByScriptFlag) ENDIF ENDIF ENDPROC PROC SET_TIME_IN_PLAYBACK_RECORDED_VEHICLE(VEHICLE_INDEX &vehIndex, FLOAT fTime) IF IS_VEHICLE_DRIVEABLE(vehIndex) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehIndex) SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehIndex, fTime - GET_TIME_POSITION_IN_RECORDING(vehIndex)) ENDIF ENDIF ENDPROC //Borrowed from locates_private.sch! PROC EMPTY_VEHICLE_OF_PEDS(VEHICLE_INDEX inVehicle) PED_INDEX pedTemp INT i INT iMaxNumberOfPassengers //Clear tasks of any passengers or drivers IF DOES_ENTITY_EXIST(inVehicle) IF IS_VEHICLE_DRIVEABLE(inVehicle) //Driver pedTemp = GET_PED_IN_VEHICLE_SEAT(inVehicle) IF DOES_ENTITY_EXIST(pedTemp) IF NOT IS_PED_INJURED(pedTemp) CLEAR_PED_TASKS_IMMEDIATELY(pedTemp) ENDIF ENDIF iMaxNumberOfPassengers = GET_VEHICLE_MAX_NUMBER_OF_PASSENGERS(inVehicle) //Passengers REPEAT iMaxNumberOfPassengers i IF NOT IS_VEHICLE_SEAT_FREE(inVehicle, INT_TO_ENUM(VEHICLE_SEAT, i)) pedTemp = GET_PED_IN_VEHICLE_SEAT(inVehicle, INT_TO_ENUM(VEHICLE_SEAT, i)) IF DOES_ENTITY_EXIST(pedTemp) IF NOT IS_PED_INJURED(pedTemp) CLEAR_PED_TASKS_IMMEDIATELY(pedTemp) ENDIF ENDIF ENDIF ENDREPEAT ENDIF ENDIF ENDPROC //═══════════════════════════╡ CAR STEAL SWITCH CAM ╞════════════════════════════ ENUM CAR_STEAL_SWITCH_CAM_STATE SWITCH_CAM_IDLE, SWITCH_CAM_START_SPLINE1, SWITCH_CAM_PLAYING_SPLINE1, SWITCH_CAM_START_CUTSCENE, SWITCH_CAM_WAITING_FOR_CUTSCENE, SWITCH_CAM_PLAYING_CUTSCENE, SWITCH_CAM_START_SPLINE2, SWITCH_CAM_WAITING_FOR_PLAYER_CONTROL, SWITCH_CAM_RETURN_TO_GAMEPLAY ENDENUM CAR_STEAL_SWITCH_CAM_STATE eCarStealSwitchCamState = SWITCH_CAM_IDLE SWITCH_CAM_STRUCT scsSwitchCam1 SWITCH_CAM_STRUCT scsSwitchCam2 STRING strAnimDictCar3LeadInOut = "misscarsteal3leadinout" STRING strAnimDictBikeIdle = "veh@bike@quad@front@base" STRING strAnimDictCamShake = "shake_cam_all@" STRING strCustomSwitchSRL = "carsteal1_customswitch" FLOAT fCustomSwitchSRLTime = 0.0 FLOAT fEndSceneDistanceToBlend = 3.80 INT iSyncedScene FLOAT fTrevorRecSkipTime = 0.0 BOOL bStoppedTrevRec = FALSE FLOAT fStopTrevRecTime = 4500.000 BOOL bStartedTrevRec2 = FALSE FLOAT fTrevRecSkipTime2 = 0.0 INT iTrevRecRevertTime = 5000 INT iPlayerControlDelay = 800 VECTOR vTrevorStartPos = <<2686.8792, 5131.9077, 43.8515>> FLOAT fTrevorStartHeading = 151.6033 VECTOR vMichaelStartPos = <<2682.7749, 5131.3569, 43.8418>> FLOAT fMichaelStartHeading = 147.9465 PED_INDEX piSceneTrevor PED_INDEX piSceneMichael VEHICLE_INDEX viSceneBike1 VEHICLE_INDEX viSceneBike2 VECTOR vCarStartPos = <<2801.3, 4435.5, 47.9>> FLOAT fCarStartHeading = 14.29 OBJECT_INDEX oiDonut1 VECTOR vDonut1Pos = <<2683.3, 5132.5, 43.8>> VECTOR vDonut1AttachPos VECTOR vDonut1AttachRot OBJECT_INDEX oiDonut2 VECTOR vDonut2Pos = <<2683.0, 5130.8, 43.9>> VECTOR vDonut2AttachPos VECTOR vDonut2AttachRot OBJECT_INDEX oiCellphone VECTOR vCellphonePos = <<2683.3, 5132.5, 44.8>> VECTOR vCellphoneAttachPos VECTOR vCellphoneAttachRot BOOL bCellphoneReattach = FALSE BOOL bSceneAnimsStarted = FALSE FLOAT fFranklinRecordingSkipTime = 30000.0 INT iWooshIn_ID = -1 INT iWooshing_ID = -1 INT iWooshOut_ID = -1 BOOL bStartWooshIn = FALSE BOOL bStopWooshIn = FALSE BOOL bStartWooshing = FALSE BOOL bStopWooshing = FALSE FLOAT fCustomCamFX1StartPhase = 0.54 FLOAT fCustomCamFX2StartPhase = 0.63 BOOL bCustomCamFX1Started = FALSE BOOL bCustomCamFX2Started = FALSE FLOAT fStartWhooshInSplinePhase = 0.54 FLOAT fStopWhooshInSplinePhase = 0.78 FLOAT fStartWhooshingSplinePhase = 0.57 FLOAT fStopWhooshingSplinePhase = 0.78 //BOOL bSpeechStarted structPedsForConversation splineCamSpeech1 //structPedsForConversation splineCamSpeech2 #IF IS_DEBUG_BUILD BOOL bSwitchCamDebugScenarioEnabled = FALSE #ENDIF BOOL bResetDebugScenario = FALSE BOOL bDebugStartWhooshIn = FALSE BOOL bDebugStopWhooshIn = FALSE BOOL bDebugStartWhooshOut = FALSE BOOL bDebugStopWhooshOut = FALSE PROC SETUP_SPLINE_CAM_1_NODE_ARRAY(SWITCH_CAM_STRUCT &thisSwitchCam, VEHICLE_INDEX &vi1, VEHICLE_INDEX &vi2) CDEBUG3LN(DEBUG_MISSION, "SETUP_SPLINE_CAM_1_NODE_ARRAY") IF NOT thisSwitchCam.bInitialized //Camera swith from Franklin to Bike Cops (ends when the cutscene starts) //--- 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.3643, -0.5889, 0.4792>> 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.0183, 0.0447, 0.3025>> thisSwitchCam.nodes[0].bPointAtEntity = TRUE thisSwitchCam.nodes[0].bPointAtOffsetIsRelative = FALSE thisSwitchCam.nodes[0].bAttachOffsetIsRelative = FALSE thisSwitchCam.nodes[0].fNodeFOV = 40.0000 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 = 1.0 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 = FALSE 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 = 2900 thisSwitchCam.nodes[1].vNodePos = <<-1.9817, -0.5034, 0.4696>> 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.0203, 0.0344, 0.2803>> thisSwitchCam.nodes[1].bPointAtEntity = TRUE thisSwitchCam.nodes[1].bPointAtOffsetIsRelative = FALSE thisSwitchCam.nodes[1].bAttachOffsetIsRelative = FALSE thisSwitchCam.nodes[1].fNodeFOV = 40.0000 thisSwitchCam.nodes[1].NodeTimePostFX_Type = NO_EFFECT thisSwitchCam.nodes[1].fNodeTimePostFXBlendTime = 0.0000 thisSwitchCam.nodes[1].fNodeTimePostFXTimeOffset = 0.0000 thisSwitchCam.nodes[1].fNodeMotionBlur = 0.0000 thisSwitchCam.nodes[1].NodeCamShakeType = CAM_SHAKE_MEDIUM thisSwitchCam.nodes[1].fNodeCamShake = 1.0 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 = FALSE thisSwitchCam.nodes[1].SCFE_FlashEffectUsed = SCFE_CODE_FLASH 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.0000 thisSwitchCam.nodes[1].bIsLowDetailNode = FALSE 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 = <<-7.6252, 24.0532, 0.3440>> 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 = <<-4.9335, 0.0000, -72.5827>> thisSwitchCam.nodes[2].bPointAtEntity = FALSE thisSwitchCam.nodes[2].bPointAtOffsetIsRelative = FALSE thisSwitchCam.nodes[2].bAttachOffsetIsRelative = FALSE thisSwitchCam.nodes[2].fNodeFOV = 40.0000 thisSwitchCam.nodes[2].NodeTimePostFX_Type = NO_EFFECT thisSwitchCam.nodes[2].fNodeTimePostFXBlendTime = 0.0000 thisSwitchCam.nodes[2].fNodeTimePostFXTimeOffset = 0.0000 thisSwitchCam.nodes[2].fNodeMotionBlur = 1.0000 thisSwitchCam.nodes[2].NodeCamShakeType = CAM_SHAKE_MEDIUM thisSwitchCam.nodes[2].fNodeCamShake = 1.0 thisSwitchCam.nodes[2].iCamEaseType = 0 thisSwitchCam.nodes[2].fCamEaseScaler = 0.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 = FALSE thisSwitchCam.nodes[2].SCFE_FlashEffectUsed = SCFE_CODE_FLASH 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.0000 thisSwitchCam.nodes[2].bIsLowDetailNode = FALSE 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 = <<2.7024, -65.6113, 3.9747>> 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 = <<-2.9265, 0.0274, 3.5865>> thisSwitchCam.nodes[4].bPointAtEntity = FALSE thisSwitchCam.nodes[4].bPointAtOffsetIsRelative = FALSE thisSwitchCam.nodes[4].bAttachOffsetIsRelative = FALSE thisSwitchCam.nodes[4].fNodeFOV = 30.0000 thisSwitchCam.nodes[4].NodeTimePostFX_Type = NO_EFFECT thisSwitchCam.nodes[4].fNodeTimePostFXBlendTime = 2.0000 thisSwitchCam.nodes[4].fNodeTimePostFXTimeOffset = 0.0000 thisSwitchCam.nodes[4].fNodeMotionBlur = 1.0000 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 = 1 thisSwitchCam.nodes[4].fTimeScaleEaseScaler = 1.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 = FALSE 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 = 600 thisSwitchCam.nodes[5].vNodePos = <<-0.8088, -7.2793, 0.9790>> 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 = <<1.1810, 0.6552, 0.4279>> thisSwitchCam.nodes[5].bPointAtEntity = TRUE thisSwitchCam.nodes[5].bPointAtOffsetIsRelative = TRUE thisSwitchCam.nodes[5].bAttachOffsetIsRelative = FALSE thisSwitchCam.nodes[5].fNodeFOV = 30.0000 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_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 = 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 = FALSE 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 = 900 thisSwitchCam.nodes[6].vNodePos = <<-0.8560, -6.5132, 0.9411>> 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 = <<1.1810, 0.6530, 0.4270>> thisSwitchCam.nodes[6].bPointAtEntity = TRUE thisSwitchCam.nodes[6].bPointAtOffsetIsRelative = TRUE thisSwitchCam.nodes[6].bAttachOffsetIsRelative = FALSE thisSwitchCam.nodes[6].fNodeFOV = 30.0000 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_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 = 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.iNumNodes = 7 thisSwitchCam.iCamSwitchFocusNode = 3 thisSwitchCam.bSplineNoSmoothing = FALSE thisSwitchCam.bAddGameplayCamAsLastNode = FALSE thisSwitchCam.iGameplayNodeBlendDuration = 0 //--- End of Cam Data --- thisSwitchCam.strOutputStructName = "thisSwitchCam" thisSwitchCam.strOutputFileName = "CameraInfo_CarSteal_CarToBike.txt" thisSwitchCam.strXMLFileName = "CameraInfo_CarSteal_CarToBike.xml" thisSwitchCam.bInitialized = TRUE ENDIF thisSwitchCam.viVehicles[0] = vi1 thisSwitchCam.viVehicles[1] = vi2 ENDPROC PROC SETUP_SPLINE_CAM_2_NODE_ARRAY(SWITCH_CAM_STRUCT &thisSwitchCam, VEHICLE_INDEX &viVehicle) CDEBUG3LN(DEBUG_MISSION, "SETUP_SPLINE_CAM_2_NODE_ARRAY") 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.5180, 2.8530, 0.2460>> 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.6690, -0.0850, 0.2480>> thisSwitchCam.nodes[0].bPointAtEntity = TRUE thisSwitchCam.nodes[0].bPointAtOffsetIsRelative = TRUE thisSwitchCam.nodes[0].bAttachOffsetIsRelative = FALSE thisSwitchCam.nodes[0].fNodeFOV = 0.0000 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 = 1 thisSwitchCam.nodes[0].fCamEaseScaler = 0.8000 thisSwitchCam.nodes[0].fCamNodeVelocityScale = 0.0000 thisSwitchCam.nodes[0].bCamEaseForceLinear = FALSE 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 = FALSE 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 = 5000 thisSwitchCam.nodes[1].vNodePos = <<2.1235, 2.5186, 0.2460>> 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.6300, -0.2496, 0.2500>> thisSwitchCam.nodes[1].bPointAtEntity = TRUE thisSwitchCam.nodes[1].bPointAtOffsetIsRelative = TRUE thisSwitchCam.nodes[1].bAttachOffsetIsRelative = FALSE thisSwitchCam.nodes[1].fNodeFOV = 0.0000 thisSwitchCam.nodes[1].NodeTimePostFX_Type = NO_EFFECT thisSwitchCam.nodes[1].fNodeTimePostFXBlendTime = 0.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 = 0 thisSwitchCam.nodes[1].fCamEaseScaler = 0.0000 thisSwitchCam.nodes[1].fCamNodeVelocityScale = 0.0000 thisSwitchCam.nodes[1].bCamEaseForceLinear = FALSE 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 = FALSE thisSwitchCam.nodes[1].SCFE_FlashEffectUsed = SCFE_CODE_FLASH 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.0000 thisSwitchCam.nodes[1].bIsLowDetailNode = FALSE 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.iNumNodes = 2 thisSwitchCam.iCamSwitchFocusNode = 0 thisSwitchCam.bSplineNoSmoothing = TRUE thisSwitchCam.bAddGameplayCamAsLastNode = FALSE thisSwitchCam.iGameplayNodeBlendDuration = 0 //--- End of Cam Data --- thisSwitchCam.strOutputStructName = "thisSwitchCam" thisSwitchCam.strOutputFileName = "CameraInfo_CarSteal_EndCam.txt" thisSwitchCam.strXMLFileName = "CameraInfo_CarSteal_EndCam.xml" thisSwitchCam.bInitialized = TRUE ENDIF thisSwitchCam.viVehicles[0] = viVehicle ENDPROC #IF IS_DEBUG_BUILD PROC CREATE_SWITCH_CAM_SCRIPT_SPECIFIC_WIDGETS(WIDGET_GROUP_ID wgidWidget) CDEBUG3LN(DEBUG_MISSION, "CREATE_SWITCH_CAM_SCRIPT_SPECIFIC_WIDGETS") SET_CURRENT_WIDGET_GROUP(wgidWidget) START_WIDGET_GROUP("Custom Switch Cameras - Extra Tunables -") ADD_WIDGET_BOOL("Restart Debug Scenario", bResetDebugScenario) START_WIDGET_GROUP("Misc") ADD_WIDGET_INT_SLIDER("Player Control Delay", iPlayerControlDelay, 0, 10000, 100) ADD_WIDGET_FLOAT_SLIDER("EndScene distance scale", fEndSceneDistanceToBlend, 0.0, 20.0, 0.5) START_WIDGET_GROUP("Trevor's Recording Tunables") ADD_WIDGET_FLOAT_SLIDER("Skip Time - Recording 1", fTrevorRecSkipTime, 0, 999999.9, 100.0) ADD_WIDGET_FLOAT_SLIDER("Stop Time - Recording 1", fStopTrevRecTime, 0.0, 999999.9, 100.0) ADD_WIDGET_FLOAT_SLIDER("Skip Time - Recording 2", fTrevRecSkipTime2, 0.0, 999999.9, 100.0) ADD_WIDGET_INT_SLIDER("Revert back to Rec Time - Recording 2", iTrevRecRevertTime, 0, 999999, 100) STOP_WIDGET_GROUP() START_WIDGET_GROUP("Donuts Tunables") ADD_WIDGET_VECTOR_SLIDER("Donut 1 Pos", vDonut1Pos, -10000.0, 10000.0, 0.01) ADD_WIDGET_VECTOR_SLIDER("Donut 1 Attach Pos", vDonut1AttachPos, -10000.0, 10000.0, 0.01) ADD_WIDGET_VECTOR_SLIDER("Donut 1 Attach Rot", vDonut1AttachRot, -10000.0, 10000.0, 0.01) ADD_WIDGET_VECTOR_SLIDER("Donut 2 Pos", vDonut2Pos, -10000.0, 10000.0, 0.01) ADD_WIDGET_VECTOR_SLIDER("Donut 2 Attach Pos", vDonut2AttachPos, -10000.0, 10000.0, 0.01) ADD_WIDGET_VECTOR_SLIDER("Donut 2 Attach Rot", vDonut2AttachRot, -10000.0, 10000.0, 0.01) STOP_WIDGET_GROUP() START_WIDGET_GROUP("Cellphone Prop Tunables") ADD_WIDGET_BOOL("Reattach Cellphone", bCellphoneReattach) ADD_WIDGET_VECTOR_SLIDER("Spawn Pos", vCellphonePos, -10000.0, 10000.0, 0.01) ADD_WIDGET_VECTOR_SLIDER("Attach Pos", vCellphoneAttachPos, -10000.0, 10000.0, 0.01) ADD_WIDGET_VECTOR_SLIDER("Attach Rot", vCellphoneAttachRot, -10000.0, 10000.0, 0.01) STOP_WIDGET_GROUP() START_WIDGET_GROUP("Whoosh Sounds") ADD_WIDGET_FLOAT_SLIDER("Start Whoosh Sound 'In' Spline Phase", fStartWhooshInSplinePhase, 0.0, 1.0, 0.05) ADD_WIDGET_FLOAT_SLIDER("Stop Whoosh Sound 'In' Spline Phase", fStopWhooshInSplinePhase, 0.0, 1.0, 0.05) //ADD_WIDGET_FLOAT_SLIDER("Start Whoosh Sound 'Out' Spline Phase", fStartWhooshOutSplinePhase, 0.0, 1.0, 0.05) ADD_WIDGET_BOOL("Start Woosh In", bDebugStartWhooshIn) ADD_WIDGET_BOOL("Stop Woosh In", bDebugStopWhooshIn) ADD_WIDGET_BOOL("Start Woosh Out", bDebugStartWhooshOut) ADD_WIDGET_BOOL("Stop Woosh Out", bDebugStopWhooshOut) STOP_WIDGET_GROUP() // START_WIDGET_GROUP("Michaels response to Franklin's cellphone call") // ADD_WIDGET_FLOAT_SLIDER("Spline Phase Start", fStartSpeech2SplinePhase, 0.0, 1.0, 0.05) // STOP_WIDGET_GROUP() STOP_WIDGET_GROUP() STOP_WIDGET_GROUP() CLEAR_CURRENT_WIDGET_GROUP(wgidWidget) ENDPROC #ENDIF FUNC BOOL HANDLE_SWITCH_CINEMATIC(SWITCH_CAM_STRUCT &thisSwitchCam1, SWITCH_CAM_STRUCT &thisSwitchCam2) //CDEBUG3LN(DEBUG_MISSION, "HANDLE_SWITCH_CINEMATIC") INT iCurrentNode FLOAT fCamPhase VECTOR vSyncScenePos = <<2683.80, 5131.16, 43.901>> VECTOR vSyncSceneRot = <<0.0, 0.0, -4.680>> SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME(0) SET_PED_DENSITY_MULTIPLIER_THIS_FRAME(0) RESET_ADAPTATION() SWITCH eCarStealSwitchCamState CASE SWITCH_CAM_START_SPLINE1 CDEBUG3LN(DEBUG_MISSION, "eCarStealSwitchCamState = SWITCH_CAM_START_SPLINE1") SET_GAME_PAUSES_FOR_STREAMING(FALSE) DESTROY_ALL_CAMS() SETUP_SPLINE_CAM_1_NODE_ARRAY(thisSwitchCam1, vehPlayer, vehPolice2) CREATE_SPLINE_CAM(thisSwitchCam1) SET_CAM_ACTIVE(thisSwitchCam1.ciSpline, TRUE) RENDER_SCRIPT_CAMS(TRUE, FALSE) CLEAR_AREA(<<2716.9924, 4787.3481, 43.5334>>, 1000.0, TRUE) IF DOES_ENTITY_EXIST(vehPlayer) IF NOT IS_ENTITY_DEAD(vehPlayer) START_PLAYBACK_RECORDED_VEHICLE(vehPlayer, 600, "ALuberSetup") SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehPlayer, fFranklinRecordingSkipTime) FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehPlayer) ENDIF ENDIF BEGIN_SRL() fCustomSwitchSRLTime = -9999.0 //To hide the cellphone and stop it ringing HIDE_ACTIVE_PHONE(TRUE) IF DOES_ENTITY_EXIST(PLAYER_PED_ID()) IF NOT IS_ENTITY_DEAD(PLAYER_PED_ID()) STOP_PED_RINGTONE(PLAYER_PED_ID()) CLEAR_BIT(BitSet_CellphoneDisplay, g_BS_PROMPT_FLASHHAND_TO_PLAY_REMOTE_RING) ENDIF ENDIF bStartWooshIn = FALSE bStopWooshIn = FALSE bCustomCamFX1Started = FALSE bCustomCamFX2Started = FALSE bSceneAnimsStarted = FALSE eCarStealSwitchCamState = SWITCH_CAM_PLAYING_SPLINE1 CDEBUG3LN(DEBUG_MISSION, "eCarStealSwitchCamState = SWITCH_CAM_PLAYING_SPLINE1") BREAK CASE SWITCH_CAM_PLAYING_SPLINE1 //CDEBUG3LN(DEBUG_MISSION, "eCarStealSwitchCamState = SWITCH_CAM_PLAYING_SPLINE1") OVERRIDE_LODSCALE_THIS_FRAME(1.0) fCustomSwitchSRLTime += (GET_FRAME_TIME() * 1000.0) IF fCustomSwitchSRLTime < 0.0 fCustomSwitchSRLTime = 0.0 ENDIF CDEBUG3LN(DEBUG_MISSION, "SRL Time = ", fCustomSwitchSRLTime) SET_SRL_TIME(fCustomSwitchSRLTime) IF IS_CAM_ACTIVE(thisSwitchCam1.ciSpline) iCurrentNode = UPDATE_SPLINE_CAM(thisSwitchCam1) fCamPhase = GET_CAM_SPLINE_PHASE(thisSwitchCam1.ciSpline) IF bStartWooshIn = FALSE IF fCamPhase >= fStartWhooshInSplinePhase iWooshIn_ID = GET_SOUND_ID() PLAY_SOUND_FRONTEND(iWooshIn_ID , "Hit_Out", "PLAYER_SWITCH_CUSTOM_SOUNDSET") bStartWooshIn = TRUE ENDIF ENDIF IF bStopWooshIn = FALSE IF fCamPhase >= fStopWhooshInSplinePhase STOP_SOUND(iWooshIn_ID) bStopWooshIn = TRUE ENDIF ENDIF IF bStartWooshing = FALSE IF fCamPhase >= fStartWhooshingSplinePhase iWooshing_ID = GET_SOUND_ID() PLAY_SOUND_FRONTEND(iWooshing_ID , "Short_Transition_In", "PLAYER_SWITCH_CUSTOM_SOUNDSET") bStartWooshing = TRUE ENDIF ENDIF IF bStopWooshing = FALSE IF fCamPhase >= fStopWhooshingSplinePhase STOP_SOUND(iWooshing_ID) bStopWooshing = TRUE ENDIF ENDIF IF NOT bCustomCamFX1Started IF fCamPhase >= fCustomCamFX1StartPhase CDEBUG3LN(DEBUG_MISSION, "FX1 Started...") ANIMPOSTFX_PLAY("SwitchShortFranklinIn", 0, FALSE) bCustomCamFX1Started = TRUE ENDIF ENDIF IF NOT bCustomCamFX2Started IF fCamPhase >= fCustomCamFX2StartPhase CDEBUG3LN(DEBUG_MISSION, "FX2 Started...") ANIMPOSTFX_PLAY("SwitchShortMichaelMid", 0, FALSE) bCustomCamFX2Started = TRUE ENDIF ENDIF //play animations IF NOT bSceneAnimsStarted IF iCurrentNode > 0 IF NOT IS_ENTITY_DEAD(PLAYER_PED(CHAR_MICHAEL)) AND NOT IS_ENTITY_DEAD(PLAYER_PED(CHAR_TREVOR)) iSyncedScene = CREATE_SYNCHRONIZED_SCENE(vSyncScenePos, vSyncSceneRot) TASK_SYNCHRONIZED_SCENE(PLAYER_PED(CHAR_MICHAEL), iSyncedScene, strAnimDictCar3LeadInOut, "byBike_idle_Mic", INSTANT_BLEND_IN, INSTANT_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_NONE, INSTANT_BLEND_IN, AIK_DISABLE_ARM_IK) TASK_SYNCHRONIZED_SCENE(PLAYER_PED(CHAR_TREVOR), iSyncedScene, strAnimDictCar3LeadInOut, "byBike_idle_Trev", INSTANT_BLEND_IN, INSTANT_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_NONE, INSTANT_BLEND_IN, AIK_DISABLE_ARM_IK) SET_SYNCHRONIZED_SCENE_LOOPED(iSyncedScene, TRUE) IF DOES_ENTITY_EXIST(vehPolice1) IF NOT IS_ENTITY_DEAD(vehPolice1) SET_ENTITY_COORDS(vehPolice1, vPoliceStart1) SET_ENTITY_HEADING(vehPolice1, fPoliceStart1) SET_VEHICLE_ON_GROUND_PROPERLY(vehPolice1) FORCE_ENTITY_AI_AND_ANIMATION_UPDATE(vehPolice1) ENDIF ENDIF IF DOES_ENTITY_EXIST(vehPolice2) IF NOT IS_ENTITY_DEAD(vehPolice2) SET_ENTITY_COORDS(vehPolice2, vPoliceStart2) SET_ENTITY_HEADING(vehPolice2, fPoliceStart2) SET_VEHICLE_ON_GROUND_PROPERLY(vehPolice2) FORCE_ENTITY_AI_AND_ANIMATION_UPDATE(vehPolice2) ENDIF ENDIF ENDIF bSceneAnimsStarted = TRUE ENDIF ENDIF // IF NOT bForcedCellStarted // IF iCurrentNode >= thisSwitchCam1.iCamSwitchFocusNode // CDEBUG3LN(DEBUG_MISSION, "Disabling Cellphone...") // KILL_ANY_CONVERSATION() // bForcedCellStarted = TRUE // ENDIF // ENDIF // // IF NOT bSpeech2Started // IF GET_CAM_SPLINE_PHASE(thisSwitchCam1.ciSpline) >= fStartSpeech2SplinePhase // CDEBUG3LN(DEBUG_MISSION, "Starting Speech 2...") // PLAY_SINGLE_LINE_FROM_CONVERSATION(splineCamSpeech2, "CST3AUD", "CST3_2secs", "CST3_2secs_3", CONV_PRIORITY_VERY_HIGH) // bSpeech2Started = TRUE // ENDIF // ENDIF IF fCamPhase >= 1.0 // AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() END_SRL() eCarStealSwitchCamState = SWITCH_CAM_START_CUTSCENE ELSE RETURN FALSE ENDIF ELSE RETURN FALSE ENDIF FALLTHRU CASE SWITCH_CAM_START_CUTSCENE CDEBUG3LN(DEBUG_MISSION, "eCarStealSwitchCamState = SWITCH_CAM_START_CUTSCENE") IF NOT HAS_CUTSCENE_LOADED() SCRIPT_ASSERT("Trying to play a cutscene that is not loaded (Car_steal_3_mcs_2)") ENDIF STOP_SOUND(iWooshOut_ID) IF IS_AUDIO_SCENE_ACTIVE("CAR_1_RACE_MAIN") STOP_AUDIO_SCENE("CAR_1_RACE_MAIN") ENDIF IF IS_AUDIO_SCENE_ACTIVE("CAR_1_FRANKLIN_CALLS_MICHAEL") STOP_AUDIO_SCENE("CAR_1_FRANKLIN_CALLS_MICHAEL") ENDIF FREEZE_ENTITY_POSITION(vehPolice1, FALSE) FREEZE_ENTITY_POSITION(vehPolice2, FALSE) REGISTER_ENTITY_FOR_CUTSCENE(PLAYER_PED(CHAR_TREVOR), "Trevor", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(PLAYER_PED(CHAR_MICHAEL), "Michael", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(vehPolice1, "Trevors_police_bike", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(vehPolice2, "Michaels_Police_bike", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE) IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_MICHAEL MAKE_SELECTOR_PED_SELECTION(sSelectorPeds, SELECTOR_PED_MICHAEL) TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds, TRUE, TRUE, TCF_CLEAR_TASK_INTERRUPT_CHECKS) SET_GAMEPLAY_CAM_FOLLOW_PED_THIS_UPDATE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN]) ENDIF SET_GAME_PAUSES_FOR_STREAMING(TRUE) START_CUTSCENE() CLEAR_TEXT() HIDE_ACTIVE_PHONE(FALSE) eCarStealSwitchCamState = SWITCH_CAM_WAITING_FOR_CUTSCENE CDEBUG3LN(DEBUG_MISSION, "eCarStealSwitchCamState = SWITCH_CAM_PLAYING_CUTSCENE") BREAK CASE SWITCH_CAM_WAITING_FOR_CUTSCENE //CDEBUG3LN(DEBUG_MISSION, "eCarStealSwitchCamState = SWITCH_CAM_PLAYING_CUTSCENE") IF IS_CUTSCENE_PLAYING() IF DOES_CAM_EXIST(thisSwitchCam1.ciSpline) IF IS_SYNCHRONIZED_SCENE_RUNNING(iSyncedScene) DETACH_SYNCHRONIZED_SCENE(iSyncedScene) ENDIF SET_TIME_SCALE(1.0) RENDER_SCRIPT_CAMS(FALSE, FALSE) DESTROY_CAM(thisSwitchCam1.ciSpline) //Remove Franklins vehicle recording for switch cam REMOVE_VEHICLE_RECORDING(600, "ALuberSetup") //Removing Michaels attached cellphone prop IF DOES_ENTITY_EXIST(oiCellPhone) DETACH_ENTITY(oiCellPhone) SAFE_DELETE_OBJECT(oiCellPhone) ENDIF //DELETING DONUTS IF DOES_ENTITY_EXIST(oiDonut1) DETACH_ENTITY(oiDonut1) SAFE_DELETE_OBJECT(oiDonut1) ENDIF IF DOES_ENTITY_EXIST(oiDonut2) DETACH_ENTITY(oiDonut2) SAFE_DELETE_OBJECT(oiDonut2) ENDIF ENDIF eCarStealSwitchCamState = SWITCH_CAM_PLAYING_CUTSCENE CDEBUG3LN(DEBUG_MISSION, "eCarStealSwitchCamState = SWITCH_CAM_PLAYING_CUTSCENE") ENDIF BREAK CASE SWITCH_CAM_PLAYING_CUTSCENE //CDEBUG3LN(DEBUG_MISSION, "eCarStealSwitchCamState = SWITCH_CAM_PLAYING_CUTSCENE") // IF CAN_SET_EXIT_STATE_FOR_CAMERA() // SETUP_SPLINE_CAM_2_NODE_ARRAY(thisSwitchCam2, vehPolice2) // CREATE_SPLINE_CAM(thisSwitchCam2) // // SET_CAM_ACTIVE(thisSwitchCam2.ciSpline, TRUE) // RENDER_SCRIPT_CAMS(TRUE, FALSE) // ENDIF IF IS_CUTSCENE_PLAYING() RETURN FALSE ELSE IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_IN_VEHICLE) != CAM_VIEW_MODE_FIRST_PERSON OR GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_BIKE) != CAM_VIEW_MODE_FIRST_PERSON SETUP_SPLINE_CAM_2_NODE_ARRAY(thisSwitchCam2, vehPolice2) CREATE_SPLINE_CAM(thisSwitchCam2) PRINTLN("Spline created") SET_CAM_ACTIVE(thisSwitchCam2.ciSpline, TRUE) RENDER_SCRIPT_CAMS(TRUE, FALSE) ENDIF //SPAWN DONUTS SAFE_DELETE_OBJECT(oiDonut1) oiDonut1 = CREATE_OBJECT_NO_OFFSET(PROP_DONUT_02B, <<2683.87842, 5130.14893, 43.85238>>, FALSE, FALSE) IF DOES_ENTITY_EXIST(oiDonut1) PLACE_OBJECT_ON_GROUND_PROPERLY(oiDonut1) ENDIF SAFE_DELETE_OBJECT(oiDonut2) oiDonut2 = CREATE_OBJECT_NO_OFFSET(PROP_DONUT_02B, <<2683.29028, 5128.59229, 43.85796>>, FALSE, FALSE) IF DOES_ENTITY_EXIST(oiDonut2) PLACE_OBJECT_ON_GROUND_PROPERLY(oiDonut2) ENDIF SETTIMERA(0) eCarStealSwitchCamState = SWITCH_CAM_IDLE RETURN TRUE //eCarStealSwitchCamState = SWITCH_CAM_START_SPLINE2 ENDIF FALLTHRU CASE SWITCH_CAM_START_SPLINE2 CDEBUG3LN(DEBUG_MISSION, "eCarStealSwitchCamState = SWITCH_CAM_START_SPLINE2") IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_MICHAEL MAKE_SELECTOR_PED_SELECTION(sSelectorPeds, SELECTOR_PED_MICHAEL) TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds) ENDIF //SPAWN DONUTS // SAFE_DELETE_OBJECT(oiDonut1) // oiDonut1 = CREATE_OBJECT_NO_OFFSET(PROP_DONUT_02B, vDonut1Pos, FALSE, FALSE) // IF DOES_ENTITY_EXIST(oiDonut1) // PLACE_OBJECT_ON_GROUND_PROPERLY(oiDonut1) // ENDIF // // SAFE_DELETE_OBJECT(oiDonut2) // oiDonut2 = CREATE_OBJECT_NO_OFFSET(PROP_DONUT_02B, vDonut2Pos, FALSE, FALSE) // IF DOES_ENTITY_EXIST(oiDonut2) // PLACE_OBJECT_ON_GROUND_PROPERLY(oiDonut2) // ENDIF // SETUP_SPLINE_CAM_2_NODE_ARRAY(thisSwitchCam2, vehPolice2) // CREATE_SPLINE_CAM(thisSwitchCam2) // // SET_CAM_ACTIVE(thisSwitchCam2.ciSpline, TRUE) // RENDER_SCRIPT_CAMS(TRUE, FALSE) SETTIMERA(0) eCarStealSwitchCamState = SWITCH_CAM_WAITING_FOR_PLAYER_CONTROL CDEBUG3LN(DEBUG_MISSION, "eCarStealSwitchCamState = SWITCH_CAM_WAITING_FOR_PLAYER_CONTROL") BREAK CASE SWITCH_CAM_WAITING_FOR_PLAYER_CONTROL //CDEBUG3LN(DEBUG_MISSION, "eCarStealSwitchCamState = SWITCH_CAM_WAITING_FOR_PLAYER_CONTROL") iCurrentNode = UPDATE_SPLINE_CAM(thisSwitchCam2) IF TIMERA() > iPlayerControlDelay eCarStealSwitchCamState = SWITCH_CAM_RETURN_TO_GAMEPLAY ENDIF BREAK CASE SWITCH_CAM_RETURN_TO_GAMEPLAY CDEBUG3LN(DEBUG_MISSION, "eCarStealSwitchCamState = SWITCH_CAM_RETURN_TO_GAMEPLAY") // INT iLeftX, iLeftY, iRightX, iRightY // GET_CONTROL_VALUE_OF_ANALOGUE_STICKS(iLeftX, iLeftY, iRightX, iRightY) IF IS_CAM_ACTIVE(thisSwitchCam2.ciSpline) iCurrentNode = UPDATE_SPLINE_CAM(thisSwitchCam2) // IF GET_CAM_SPLINE_PHASE(thisSwitchCam2.ciSpline) >= 1.0 // OR iLeftX <> 0 OR iLeftY <> 0 OR iRightX <> 0 OR iRightY <> 0 // OR IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_VEH_ACCELERATE) // OR IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_VEH_BRAKE) // STOP_RENDERING_SCRIPT_CAMS_USING_CATCH_UP(FALSE, fEndSceneDistanceToBlend, CAM_SPLINE_SLOW_IN_SMOOTH) // SET_CAM_ACTIVE(thisSwitchCam2.ciSpline, FALSE) // // RENDER_SCRIPT_CAMS(FALSE, FALSE) // IF DOES_CAM_EXIST(thisSwitchCam2.ciSpline) // DESTROY_CAM(thisSwitchCam2.ciSpline) // ENDIF SETTIMERA(0) eCarStealSwitchCamState = SWITCH_CAM_IDLE RETURN TRUE // ENDIF ENDIF BREAK ENDSWITCH RETURN FALSE ENDFUNC PROC UPDATE_SPLINE_CAM_HELPERS() //CDEBUG3LN(DEBUG_MISSION, "UPDATE_SPLINE_CAM_HELPERS") IF bResetDebugScenario //Set player SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) DO_SCREEN_FADE_OUT(0) DESTROY_ALL_CAMS() //Audio REGISTER_SCRIPT_WITH_AUDIO() SET_ALL_RANDOM_PEDS_FLEE(PLAYER_ID(), TRUE) //Ambulances etc. ENABLE_DISPATCH_SERVICE(DT_POLICE_RIDERS, FALSE) ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE, FALSE) ENABLE_DISPATCH_SERVICE(DT_POLICE_HELICOPTER, FALSE) ENABLE_DISPATCH_SERVICE(DT_FIRE_DEPARTMENT, FALSE) ENABLE_DISPATCH_SERVICE(DT_SWAT_AUTOMOBILE, FALSE) ENABLE_DISPATCH_SERVICE(DT_AMBULANCE_DEPARTMENT, FALSE) //Vehicle SET_VEHICLE_MODEL_IS_SUPPRESSED(F620, TRUE) SET_VEHICLE_MODEL_IS_SUPPRESSED(ENTITYXF, TRUE) SET_VEHICLE_MODEL_IS_SUPPRESSED(CHEETAH, TRUE) //Relationships REMOVE_RELATIONSHIP_GROUP(relGroupBuddy) REMOVE_RELATIONSHIP_GROUP(relGroupEnemy) ADD_RELATIONSHIP_GROUP("BUDDIES", relGroupBuddy) ADD_RELATIONSHIP_GROUP("ENEMIES", relGroupEnemy) SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE, relGroupBuddy, RELGROUPHASH_PLAYER) SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE, RELGROUPHASH_PLAYER, relGroupBuddy) CLEAR_AREA(vCarStartPos, 100.0, TRUE) CLEAR_AREA_OF_VEHICLES(vCarStartPos, 100.0) CLEAR_AREA_OF_COPS(vCarStartPos, 100.0) SWITCH_ALL_RANDOM_CARS_OFF() SUPPRESS_EMERGENCY_CALLS() CLEAR_PLAYER_WANTED_LEVEL(PLAYER_ID()) //Set Player IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_FRANKLIN WHILE NOT SET_CURRENT_SELECTOR_PED(SELECTOR_PED_FRANKLIN) CDEBUG3LN(DEBUG_MISSION, "Waiting for Franklin...") WAIT(0) ENDWHILE ENDIF IF DOES_ENTITY_EXIST(PLAYER_PED_ID()) IF NOT IS_PED_INJURED(PLAYER_PED_ID()) SET_ENTITY_COORDS(PLAYER_PED_ID(), vCarStartPos, TRUE, TRUE) SET_ENTITY_HEADING(PLAYER_PED_ID(), fCarStartHeading) FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), TRUE) ENDIF ENDIF //Request Additional Text REQUEST_ADDITIONAL_TEXT("H3HEIST", MISSION_TEXT_SLOT) WHILE NOT HAS_ADDITIONAL_TEXT_LOADED(MISSION_TEXT_SLOT) CDEBUG3LN(DEBUG_MISSION, "Waiting for mission text...") WAIT(0) ENDWHILE //REQUEST HAS_MODEL_LOADED_CHECK(GET_PLAYER_PED_MODEL(CHAR_MICHAEL)) HAS_MODEL_LOADED_CHECK(GET_PLAYER_PED_MODEL(CHAR_FRANKLIN)) HAS_MODEL_LOADED_CHECK(GET_PLAYER_PED_MODEL(CHAR_TREVOR)) HAS_MODEL_LOADED_CHECK(F620) HAS_MODEL_LOADED_CHECK(POLICEB) HAS_MODEL_LOADED_CHECK(PROP_PLAYER_PHONE_01) HAS_MODEL_LOADED_CHECK(PROP_DONUT_02) HAS_MODEL_LOADED_CHECK(PROP_DONUT_02B) HAS_ANIM_DICT_LOADED_CHECK(strAnimDictCar3LeadInOut) HAS_ANIM_DICT_LOADED_CHECK(strAnimDictBikeIdle) HAS_RECORDING_LOADED_CHECK(500, sCarrecCop) //sCarrecChase) // HAS_RECORDING_LOADED_CHECK(499, sCarrecChase) CDEBUG3LN(DEBUG_MISSION, "Waiting for Assets...") //CHECK FOR LOADED BOOL bAssetsLoaded = FALSE WHILE NOT bAssetsLoaded IF HAS_MODEL_LOADED_CHECK(GET_PLAYER_PED_MODEL(CHAR_MICHAEL)) AND HAS_MODEL_LOADED_CHECK(GET_PLAYER_PED_MODEL(CHAR_FRANKLIN)) AND HAS_MODEL_LOADED_CHECK(GET_PLAYER_PED_MODEL(CHAR_TREVOR)) CDEBUG3LN(DEBUG_MISSION, "Ped Models loaded...") IF HAS_MODEL_LOADED_CHECK(F620) AND HAS_MODEL_LOADED_CHECK(POLICEB) CDEBUG3LN(DEBUG_MISSION, "Vehicle Models loaded...") IF HAS_MODEL_LOADED_CHECK(PROP_PLAYER_PHONE_01) AND HAS_MODEL_LOADED_CHECK(PROP_DONUT_02) AND HAS_MODEL_LOADED_CHECK(PROP_DONUT_02B) CDEBUG3LN(DEBUG_MISSION, "Prop Models loaded...") IF HAS_ANIM_DICT_LOADED_CHECK(strAnimDictCar3LeadInOut) AND HAS_ANIM_DICT_LOADED_CHECK(strAnimDictBikeIdle) CDEBUG3LN(DEBUG_MISSION, "Animations loaded...") IF HAS_RECORDING_LOADED_CHECK(500, sCarrecCop) //sCarrecChase) // AND HAS_RECORDING_LOADED_CHECK(499, sCarrecChase) CDEBUG3LN(DEBUG_MISSION, "Recordings loaded...") bAssetsLoaded = TRUE ENDIF ENDIF ENDIF ENDIF ENDIF WAIT(0) ENDWHILE //TEMP LOADING OF AREA TO GET BIKES IN THE CORRECT POSITION CLEAR_AREA(vPoliceStart1, 100.0, TRUE) CLEAR_AREA_OF_VEHICLES(vPoliceStart1, 100.0) CLEAR_AREA_OF_COPS(vPoliceStart1, 100.0) VECTOR vTempPos = <<2683.1, 5122.2, 43.8374>> IF DOES_ENTITY_EXIST(PLAYER_PED_ID()) IF NOT IS_ENTITY_DEAD(PLAYER_PED_ID()) SET_ENTITY_COORDS(PLAYER_PED_ID(), vTempPos) SET_ENTITY_HEADING(PLAYER_PED_ID(), 0.0) ENDIF ENDIF SET_GAMEPLAY_CAM_RELATIVE_HEADING(0.0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(0.0) LOAD_SCENE(vPoliceStart1) //DO_SCREEN_FADE_IN(0) SAFE_DELETE_PED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) SAFE_DELETE_PED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) //SPAWN TREVOR'S BIKE SAFE_DELETE_VEHICLE(vehPolice1) SPAWN_VEHICLE(vehPolice1, POLICEB, vPoliceStart1, fPoliceStart1) IF DOES_ENTITY_EXIST(vehPolice1) IF NOT IS_ENTITY_DEAD(vehPolice1) SET_ENTITY_COORDS(vehPolice1, vPoliceStart1) SET_ENTITY_HEADING(vehPolice1, fPoliceStart1) SET_VEHICLE_ON_GROUND_PROPERLY(vehPolice1) SET_ENTITY_VISIBLE(vehPolice1, FALSE) ENDIF ENDIF //SPAWN MICHAEL'S BIKE SAFE_DELETE_VEHICLE(vehPolice2) SPAWN_VEHICLE(vehPolice2, POLICEB, vPoliceStart2, fPoliceStart2) IF DOES_ENTITY_EXIST(vehPolice2) IF NOT IS_ENTITY_DEAD(vehPolice2) SET_ENTITY_COORDS(vehPolice2, vPoliceStart2) SET_ENTITY_HEADING(vehPolice2, fPoliceStart2) SET_VEHICLE_ON_GROUND_PROPERLY(vehPolice2) SET_ENTITY_VISIBLE(vehPolice2, FALSE) ENDIF ENDIF WAIT(0) IF DOES_ENTITY_EXIST(vehPolice1) IF NOT IS_ENTITY_DEAD(vehPolice1) //SET_ENTITY_COLLISION(vehPolice1, FALSE) FREEZE_ENTITY_POSITION(vehPolice1, TRUE) ENDIF ENDIF IF DOES_ENTITY_EXIST(vehPolice2) IF NOT IS_ENTITY_DEAD(vehPolice2) //SET_ENTITY_COLLISION(vehPolice2, FALSE) FREEZE_ENTITY_POSITION(vehPolice2, TRUE) ENDIF ENDIF //SPAWN TREVOR SPAWN_PLAYER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], CHAR_TREVOR, vTrevorStartPos, fTrevorStartHeading) IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) IF NOT IS_ENTITY_DEAD(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) SET_ENTITY_VISIBLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], FALSE) SET_ENTITY_COLLISION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], FALSE) SET_PED_COMP_ITEM_CURRENT_SP(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], COMP_TYPE_OUTFIT, OUTFIT_P2_HIGHWAY_PATROL, FALSE) SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], relGroupBuddy) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE) SET_PED_CONFIG_FLAG(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PCF_WillFlyThroughWindscreen, FALSE) IF NOT IS_PED_WEARING_HELMET(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) SET_PED_HELMET_PROP_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], 5) SET_PED_HELMET_TEXTURE_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], 0) ENDIF GIVE_PED_HELMET(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE, PV_FLAG_SCRIPT_HELMET) IF DOES_ENTITY_EXIST(vehPolice1) IF NOT IS_ENTITY_DEAD(vehPolice1) SET_PED_INTO_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], vehPolice1) SET_VEHICLE_ENGINE_ON(vehPolice1, FALSE, TRUE) FREEZE_ENTITY_POSITION(vehPolice1, FALSE) START_PLAYBACK_RECORDED_VEHICLE(vehPolice1, 500, sCarrecCop) //499, sCarrecChase) SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehPolice1, fTrevorRecSkipTime) FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehPolice1) PAUSE_PLAYBACK_RECORDED_VEHICLE(vehPolice1) ENDIF ENDIF ENDIF ENDIF //SPAWN MICHAEL SAFE_DELETE_PED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) SPAWN_PLAYER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], CHAR_MICHAEL, vMichaelStartPos, fMichaelStartHeading) IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) IF NOT IS_ENTITY_DEAD(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) SET_ENTITY_VISIBLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE) SET_ENTITY_COLLISION(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE) SET_PED_COMP_ITEM_CURRENT_SP(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], COMP_TYPE_OUTFIT, OUTFIT_P0_HIGHWAY_PATROL, FALSE) SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], relGroupBuddy) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE) SET_PED_CONFIG_FLAG(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PCF_WillFlyThroughWindscreen, FALSE) IF NOT IS_PED_WEARING_HELMET(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) SET_PED_HELMET_PROP_INDEX(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], 4) SET_PED_HELMET_TEXTURE_INDEX(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], 0) ENDIF GIVE_PED_HELMET(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE, PV_FLAG_SCRIPT_HELMET) IF DOES_ENTITY_EXIST(vehPolice2) IF NOT IS_ENTITY_DEAD(vehPolice2) FREEZE_ENTITY_POSITION(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE) SET_PED_INTO_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], vehPolice2) SET_VEHICLE_ENGINE_ON(vehPolice2, FALSE, TRUE) ENDIF ENDIF ENDIF ENDIF //WAIT(2000) //DO_SCREEN_FADE_OUT(0) //SPAWN FRANKLIN (current player) SAFE_DELETE_VEHICLE(vehPlayer) SPAWN_VEHICLE(vehPlayer, F620, vCarStartPos, fCarStartHeading, 0) IF DOES_ENTITY_EXIST(vehPlayer) IF NOT IS_ENTITY_DEAD(vehPlayer) SET_ENTITY_COORDS(vehPlayer, vCarStartPos, TRUE, TRUE) SET_ENTITY_HEADING(vehPlayer, fCarStartHeading) SET_VEHICLE_ON_GROUND_PROPERLY(vehPlayer) FREEZE_ENTITY_POSITION(vehPlayer, TRUE) SET_VEHICLE_COLOURS(vehPlayer, 43, 43) SET_VEHICLE_EXTRA_COLOURS(vehPlayer, 48, 48) ENDIF ENDIF IF DOES_ENTITY_EXIST(PLAYER_PED_ID()) AND DOES_ENTITY_EXIST(vehPlayer) IF NOT IS_ENTITY_DEAD(PLAYER_PED_ID()) AND NOT IS_ENTITY_DEAD(vehPlayer) sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN] = PLAYER_PED_ID() DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_EXIT) IF DOES_ENTITY_EXIST(vehPlayer) IF NOT IS_ENTITY_DEAD(vehPlayer) IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehPlayer) FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), FALSE) SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehPlayer) ENDIF ENDIF ENDIF ENDIF ENDIF //SPAWN SCENE TREVOR & BIKE SAFE_DELETE_VEHICLE(viSceneBike1) SPAWN_VEHICLE(viSceneBike1, POLICEB, vPoliceStart1, fPoliceStart1) IF DOES_ENTITY_EXIST(viSceneBike1) IF NOT IS_ENTITY_DEAD(viSceneBike1) SET_VEHICLE_ON_GROUND_PROPERLY(viSceneBike1) SET_VEHICLE_ENGINE_ON(viSceneBike1, FALSE, TRUE) SET_ENTITY_COLLISION(viSceneBike1, FALSE) FREEZE_ENTITY_POSITION(viSceneBike1, TRUE) ENDIF ENDIF SAFE_DELETE_PED(piSceneTrevor) SPAWN_PLAYER(piSceneTrevor, CHAR_TREVOR, vTrevorStartPos, fTrevorStartHeading) IF DOES_ENTITY_EXIST(piSceneTrevor) IF NOT IS_ENTITY_DEAD(piSceneTrevor) SET_PED_COMP_ITEM_CURRENT_SP(piSceneTrevor, COMP_TYPE_OUTFIT, OUTFIT_P2_HIGHWAY_PATROL, FALSE) SET_PED_RELATIONSHIP_GROUP_HASH(piSceneTrevor, relGroupBuddy) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(piSceneTrevor, TRUE) IF NOT IS_PED_WEARING_HELMET(piSceneTrevor) SET_PED_HELMET_PROP_INDEX(piSceneTrevor, 5) SET_PED_HELMET_TEXTURE_INDEX(piSceneTrevor, 0) ENDIF GIVE_PED_HELMET(piSceneTrevor, TRUE, PV_FLAG_SCRIPT_HELMET) ENDIF ENDIF //SPAWN SCENE MICHAEL & BIKE SAFE_DELETE_VEHICLE(viSceneBike2) SPAWN_VEHICLE(viSceneBike2, POLICEB, vPoliceStart2, fPoliceStart2) IF DOES_ENTITY_EXIST(viSceneBike2) IF NOT IS_ENTITY_DEAD(viSceneBike2) SET_VEHICLE_ON_GROUND_PROPERLY(viSceneBike2) SET_VEHICLE_ENGINE_ON(viSceneBike2, FALSE, TRUE) SET_ENTITY_COLLISION(viSceneBike2, FALSE) FREEZE_ENTITY_POSITION(viSceneBike2, TRUE) ENDIF ENDIF SAFE_DELETE_PED(piSceneMichael) SPAWN_PLAYER(piSceneMichael, CHAR_MICHAEL, vMichaelStartPos, fMichaelStartHeading) IF DOES_ENTITY_EXIST(piSceneMichael) IF NOT IS_ENTITY_DEAD(piSceneMichael) SET_PED_COMP_ITEM_CURRENT_SP(piSceneMichael, COMP_TYPE_OUTFIT, OUTFIT_P0_HIGHWAY_PATROL, FALSE) SET_PED_RELATIONSHIP_GROUP_HASH(piSceneMichael, relGroupBuddy) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(piSceneMichael, TRUE) IF NOT IS_PED_WEARING_HELMET(piSceneMichael) SET_PED_HELMET_PROP_INDEX(piSceneMichael, 4) SET_PED_HELMET_TEXTURE_INDEX(piSceneMichael, 0) ENDIF GIVE_PED_HELMET(piSceneMichael, TRUE, PV_FLAG_SCRIPT_HELMET) ENDIF ENDIF //SPAWN ATTACHED DONUTS SAFE_DELETE_OBJECT(oiDonut1) oiDonut1 = CREATE_OBJECT_NO_OFFSET(PROP_DONUT_02B, vDonut1Pos, FALSE, FALSE) IF DOES_ENTITY_EXIST(oiDonut1) IF DOES_ENTITY_EXIST(piSceneMichael) IF NOT IS_ENTITY_DEAD(piSceneMichael) ATTACH_ENTITY_TO_ENTITY(oiDonut1, piSceneMichael, GET_PED_BONE_INDEX(piSceneMichael, BONETAG_PH_R_HAND), vDonut1AttachPos, vDonut1AttachRot) ENDIF ENDIF ENDIF SAFE_DELETE_OBJECT(oiDonut2) oiDonut2 = CREATE_OBJECT_NO_OFFSET(PROP_DONUT_02, vDonut2Pos, FALSE, FALSE) IF DOES_ENTITY_EXIST(oiDonut2) IF DOES_ENTITY_EXIST(piSceneTrevor) IF NOT IS_ENTITY_DEAD(piSceneTrevor) ATTACH_ENTITY_TO_ENTITY(oiDonut2, piSceneTrevor, GET_PED_BONE_INDEX(piSceneTrevor, BONETAG_PH_R_HAND), vDonut2AttachPos, vDonut2AttachRot) ENDIF ENDIF ENDIF //CELLPHONE SAFE_DELETE_OBJECT(oiCellPhone) oiCellPhone = CREATE_OBJECT_NO_OFFSET(PROP_PLAYER_PHONE_01, vCellphonePos, FALSE, FALSE) IF DOES_ENTITY_EXIST(oiCellPhone) IF DOES_ENTITY_EXIST(piSceneMichael) IF NOT IS_ENTITY_DEAD(piSceneMichael) ATTACH_ENTITY_TO_ENTITY(oiCellPhone, piSceneMichael, GET_PED_BONE_INDEX(piSceneMichael, BONETAG_PH_L_HAND), vCellphoneAttachPos, vCellphoneAttachRot) ENDIF ENDIF ENDIF WAIT(0) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0.0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10.0) WAIT(0) CLEAR_AREA(vCarStartPos, 100.0, TRUE) CLEAR_AREA_OF_VEHICLES(vCarStartPos, 100.0) CLEAR_AREA_OF_COPS(vCarStartPos, 100.0) LOAD_SCENE(vCarStartPos) //Fade In IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(0) ENDIF IF NOT IS_ENTITY_DEAD(PLAYER_PED(CHAR_FRANKLIN)) AND NOT IS_ENTITY_DEAD(vehPlayer) FREEZE_ENTITY_POSITION(vehPlayer, FALSE) ENDIF SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) VECTOR vPoint1 = <<2825.1, 4647.5, 40.1>> VECTOR vPoint2 = <<2660.4, 4641.2, 51.5>> WHILE NOT IS_ENTITY_IN_ANGLED_AREA(vehPlayer, vPoint1, vPoint2, 10.0, TRUE, TRUE, TM_IN_VEHICLE) CDEBUG3LN(DEBUG_MISSION, "Waiting for player to drive to trigger...") WAIT(0) ENDWHILE DISPLAY_RADAR(FALSE) DISPLAY_HUD(FALSE) SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) VECTOR vDriveTarget = <<2602.3, 5299.4, 44.4>> IF NOT IS_ENTITY_DEAD(PLAYER_PED(CHAR_FRANKLIN)) AND NOT IS_ENTITY_DEAD(vehPlayer) CLEAR_PED_TASKS(PLAYER_PED(CHAR_FRANKLIN)) TASK_VEHICLE_DRIVE_TO_COORD(PLAYER_PED_ID(), vehPlayer, vDriveTarget, 200.0, DRIVINGSTYLE_ACCURATE, DUMMY_MODEL_FOR_SCRIPT, DRIVINGMODE_AVOIDCARS_STOPFORPEDS_OBEYLIGHTS, 5.0, 2.0 ) ADD_PED_FOR_DIALOGUE(splineCamSpeech1, 3, PLAYER_PED_ID(), "FRANKLIN") ADD_PED_FOR_DIALOGUE(splineCamSpeech1, 1, piSceneMichael, "MICHAEL") REMOVE_PED_FOR_DIALOGUE(splineCamSpeech1, 1) PLAYER_CALL_CHAR_CELLPHONE(splineCamSpeech1, CHAR_MICHAEL, "CST3AUD", "CST3_2secs", CONV_PRIORITY_HIGH) ENDIF REQUEST_CUTSCENE("Car_steal_3_mcs_2", CUTSCENE_REQUESTED_FROM_Z_SKIP) IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Michael", PLAYER_PED(CHAR_MICHAEL)) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Trevor", PLAYER_PED(CHAR_TREVOR)) ENDIF REQUEST_ANIM_DICT(strAnimDictCamShake) WAIT(5000) bStoppedTrevRec = FALSE bStartedTrevRec2 = FALSE eCarStealSwitchCamState = SWITCH_CAM_START_SPLINE1 bResetDebugScenario = FALSE ENDIF IF HANDLE_SWITCH_CINEMATIC(scsSwitchCam1, scsSwitchCam2) ENDIF IF NOT bStoppedTrevRec IF DOES_ENTITY_EXIST(vehPolice1) IF NOT IS_ENTITY_DEAD(vehPolice1) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPolice1) CDEBUG2LN(DEBUG_MISSION, "Time of Trev's recording: ", GET_TIME_POSITION_IN_RECORDING(vehPolice1)) IF GET_TIME_POSITION_IN_RECORDING(vehPolice1) >= fStopTrevRecTime STOP_PLAYBACK_RECORDED_VEHICLE(vehPolice1) START_PLAYBACK_RECORDED_VEHICLE_USING_AI(vehPolice1, 500, sCarrecCop /*sCarrecChase*/, 10.0, DRIVINGMODE_AVOIDCARS) SET_PLAYBACK_TO_USE_AI_TRY_TO_REVERT_BACK_LATER(vehPolice1, iTrevRecRevertTime, DRIVINGMODE_AVOIDCARS, TRUE) SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehPolice1, fTrevRecSkipTime2) bStartedTrevRec2 = bStartedTrevRec2 ENABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_EXIT) bStoppedTrevRec = TRUE ENDIF ENDIF ENDIF ENDIF ENDIF IF bCellphoneReattach IF DOES_ENTITY_EXIST(oiCellPhone) AND DOES_ENTITY_EXIST(PLAYER_PED_ID())//,sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) DETACH_ENTITY(oiCellPhone) ATTACH_ENTITY_TO_ENTITY(oiCellPhone, PLAYER_PED_ID(), GET_PED_BONE_INDEX(PLAYER_PED_ID(), BONETAG_PH_L_HAND), vCellphoneAttachPos, vCellphoneAttachRot) ENDIF bCellphoneReattach = FALSE ENDIF IF bDebugStartWhooshIn STOP_SOUND(iWooshIn_ID) iWooshIn_ID = GET_SOUND_ID() PLAY_SOUND_FRONTEND(iWooshIn_ID , "IN", "SHORT_PLAYER_SWITCH_SOUND_SET") bDebugStartWhooshIn = FALSE ENDIF IF bDebugStopWhooshIn STOP_SOUND(iWooshIn_ID) bDebugStopWhooshIn = FALSE ENDIF IF bDebugStartWhooshOut STOP_SOUND(iWooshOut_ID) iWooshOut_ID = GET_SOUND_ID() PLAY_SOUND_FRONTEND(iWooshOut_ID, "OUT", "SHORT_PLAYER_SWITCH_SOUND_SET") bDebugStartWhooshOut = FALSE ENDIF IF bDebugStopWhooshOut STOP_SOUND(iWooshOut_ID) bDebugStopWhooshOut = FALSE ENDIF ENDPROC //CONST_INT iCinCams 250 // //STRUCT CamInterpData // VECTOR vPos // VECTOR vRot // FLOAT fFov // VECTOR vTanIn // VECTOR vTanOut // FLOAT fRec // BOOL bLink //ENDSTRUCT // //CamInterpData sCamIntData[iCinCams] // //PROC INIT_CINEMATIC_CAMS() // sCamIntData[0].vPos = <<185.1290, 6594.1812, 31.9177>> // sCamIntData[0].vRot = <<-10.8216, 0.0000, 10.9492>> // sCamIntData[0].fFov = 45.0000 // sCamIntData[0].vTanIn = <<0.0000, 0.0000, 0.0000>> // sCamIntData[0].vTanOut = <<0.0000, 0.0000, 0.0000>> // sCamIntData[0].fRec = 0.0000 // sCamIntData[0].bLink = TRUE // // sCamIntData[1].vPos = <<179.5871, 6583.5903, 31.7940>> // sCamIntData[1].vRot = <<-10.2048, 0.0000, -22.1628>> // sCamIntData[1].fFov = 45.0000 // sCamIntData[1].vTanIn = <<-6.4000, -13.0000, 0.0000>> // sCamIntData[1].vTanOut = <<0.0000, 0.0000, 0.0000>> // sCamIntData[1].fRec = 2014.4010 // sCamIntData[1].bLink = TRUE // // sCamIntData[2].vPos = <<172.6011, 6564.0415, 31.7822>> // sCamIntData[2].vRot = <<-13.1517, 0.0000, 63.5101>> // sCamIntData[2].fFov = 45.0000 // sCamIntData[2].vTanIn = <<-4.5000, -7.5000, 0.0000>> // sCamIntData[2].vTanOut = <<0.0000, 0.0000, 0.0000>> // sCamIntData[2].fRec = 3439.5959 // sCamIntData[2].bLink = TRUE // // sCamIntData[3].vPos = <<169.0506, 6556.9600, 31.7018>> // sCamIntData[3].vRot = <<-4.3687, 0.0000, 136.7127>> // sCamIntData[3].fFov = 36.5556 // sCamIntData[3].vTanIn = <<-2.9000, -3.7000, 0.0000>> // sCamIntData[3].vTanOut = <<0.0000, 0.0000, 0.0000>> // sCamIntData[3].fRec = 4045.9939 // sCamIntData[3].bLink = TRUE //ENDPROC FUNC FLOAT GET_INTERP_POINT_FLOAT(FLOAT fStartPos, FLOAT fEndPos, FLOAT fStartTime, FLOAT fEndTime, FLOAT fPointTime) RETURN ((((fEndPos - fStartPos) / (fEndTime - fStartTime)) * (fPointTime - fStartTime)) + fStartPos) ENDFUNC FUNC VECTOR GET_INTERP_POINT_VECTOR(VECTOR vStartPos, VECTOR vEndPos, FLOAT fStartTime, FLOAT fEndTime, FLOAT fPointTime) RETURN <> ENDFUNC //This function will return the value of a number after it has been raised to a power FUNC FLOAT TPO(FLOAT fNumber, INT iPower) INT iLoopControl //This will act as a counter to control how long the loop runs FLOAT fInitialValue = fNumber //This will be used in the loop to multiply the new value //by its initial value FLOAT fResult = 0 //This is the value that the function returns //Use an if statement to determine how to handle the power function //This loop will determine how many times to multiply the number by itself IF iPower = 0 fResult = 1 //Note n^0 = 1 ELIF iPower = 1 fResult = fNumber ELIF iPower < 0 iLoopControl = -iPower + 1 WHILE iLoopControl > 0 fNumber *= fInitialValue iLoopControl-- ENDWHILE fResult = 1 / fNumber ELIF iPower > 1 iLoopControl = iPower - 1 WHILE iLoopControl > 0 fNumber *= fInitialValue iLoopControl-- ENDWHILE fResult = fNumber ENDIF RETURN fResult ENDFUNC FUNC VECTOR HERMITE_CURVE(VECTOR vStartPoint, VECTOR vStartTangent, VECTOR vEndPoint, VECTOR vEndTangent, FLOAT fStartTime, FLOAT fEndTime, FLOAT fPointTime) FLOAT fScale, H1, H2, H3, H4 VECTOR vPoint fScale = fPointTime / (fEndTime - fStartTime) H1 = 2 * TPO(fScale, 3) - 3 * TPO(fScale, 2) + 1 H2 = -2 * TPO(fScale, 3) + 3 * TPO(fScale, 2) H3 = TPO(fScale, 3) - 2 * TPO(fScale, 2) + fScale H4 = TPO(fScale, 3) - TPO(fScale, 2) vPoint = H1 * vStartPoint + H2 * vEndPoint + H3 * vStartTangent + H4 * vEndTangent RETURN vPoint ENDFUNC //FUNC VECTOR GET_START_TANGENT_WITH_ADJUST(INT i) // //N is the number of frames (seconds, whatever) between two keypoints. // // // // 2 * N // // i-1 // //TD = TD * --------------- adjustment of outgoing tangent // // i i N + N // // i-1 i // // RETURN sCamIntData[i].vTanIn * ((2 * (sCamIntData[i].fRec - sCamIntData[CLAMP_INT(i - 1, 0, iCinCams - 1)].fRec)) / ((sCamIntData[i].fRec - sCamIntData[CLAMP_INT(i - 1, 0, iCinCams - 1)].fRec) + (sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].fRec - sCamIntData[i].fRec))) //ENDFUNC //FUNC VECTOR GET_END_TANGENT_WITH_ADJUST(INT i) // //N is the number of frames (seconds, whatever) between two keypoints. // // // // 2 * N // // i // //TS = TS * --------------- adjustment of incomming tangent // // i i N + N // // i-1 i // // RETURN sCamIntData[i].vTanOut * ((2 * (sCamIntData[i].fRec - sCamIntData[CLAMP_INT(i - 1, 0, iCinCams - 1)].fRec)) / ((sCamIntData[i].fRec - sCamIntData[CLAMP_INT(i - 1, 0, iCinCams - 1)].fRec) + (sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].fRec - sCamIntData[i].fRec))) //ENDFUNC //VECTOR vCamCurrentPos, vCamTargetPos, vCamCurrentRot, vCamTargetRot //FLOAT fShakeTime // //PROC CAM_SHAKE(CAMERA_INDEX camShake) // IF ARE_VECTORS_EQUAL(vCamCurrentPos, VECTOR_ZERO) // vCamCurrentPos = GET_CAM_COORD(camShake) // vCamTargetPos = GET_CAM_COORD(camShake) // ENDIF // // IF ARE_VECTORS_EQUAL(vCamCurrentRot, VECTOR_ZERO) // vCamCurrentRot = GET_CAM_ROT(camShake) // vCamTargetRot = GET_CAM_ROT(camShake) // ENDIF // // IF NOT ARE_VECTORS_EQUAL(vCamCurrentPos, VECTOR_ZERO) // AND NOT ARE_VECTORS_EQUAL(vCamCurrentRot, VECTOR_ZERO) // IF ARE_VECTORS_EQUAL(vCamCurrentPos, vCamTargetPos) // AND ARE_VECTORS_EQUAL(vCamCurrentRot, vCamTargetRot) // vCamTargetPos += <> // vCamTargetRot += <> // fShakeTime = 0.0 // ELSE // vCamCurrentPos = GET_INTERP_POINT_VECTOR(vCamCurrentPos, vCamTargetPos, 0.0, 10.0, fShakeTime) // vCamCurrentRot = GET_INTERP_POINT_VECTOR(vCamCurrentRot, vCamTargetRot, 0.0, 10.0, fShakeTime) // // fShakeTime += 1.0 // ENDIF // ENDIF // // SET_CAM_PARAMS(camShake, // GET_CAM_COORD(camShake) + vCamCurrentPos, // GET_CAM_COORD(camShake) + vCamCurrentRot, // GET_CAM_FOV(camShake)) //ENDPROC FUNC VECTOR CONVERT_ROTATION_TO_DIRECTION_VECTOR(VECTOR vRot) RETURN <<-SIN(vRot.Z) * COS(vRot.X), COS(vRot.Z) * COS(vRot.X), SIN(vRot.X)>> ENDFUNC FUNC VECTOR INVERT_VECTOR(VECTOR vVector) vVector.X = -vVector.X vVector.Y = -vVector.Y vVector.Z = -vVector.Z RETURN vVector ENDFUNC FUNC FLOAT GET_HEADING_BETWEEN_VECTORS(VECTOR vVector1, VECTOR vVector2) VECTOR vTemp = vVector2 - vVector1 RETURN GET_HEADING_FROM_VECTOR_2D(vTemp.X, vTemp.Y) ENDFUNC //OBJECT_INDEX objDummy // //PROC DRAW_CAMERA(VECTOR vCoords, VECTOR vRot, FLOAT fFov, FLOAT fScale = 1.0, INT iR = 255, INT iG = 0, INT iB = 0, INT iA = 255) // fFov = fFov // // IF NOT DOES_ENTITY_EXIST(objDummy) // objDummy = CREATE_OBJECT(PROP_POOL_CUEBALL, <<1.0, 1.0, 1.0>>) // ENDIF // // SET_ENTITY_COORDS(objDummy, vCoords) // SET_ENTITY_ROTATION(objDummy, vRot) // // FLOAT fWidth = 0.15 * fScale // FLOAT fDepth = 0.3 * fScale // // // Front Poly // //Vertices // DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, fDepth, fWidth>>), iR, iG, iB, iA) // DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, fDepth, -fWidth>>), iR, iG, iB, iA) // DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), iR, iG, iB, iA) // DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, fDepth, fWidth>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, fDepth, -fWidth>>), iR, iG, iB, iA) // //Triangles // DRAW_DEBUG_POLY(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, fDepth, fWidth>>), iR, iG, iB, CLAMP_INT(iA - 150, 0, 255)) // DRAW_DEBUG_POLY(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, fDepth, -fWidth>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, fDepth, fWidth>>), iR, iG, iB, CLAMP_INT(iA - 150, 0, 255)) // // // Back Poly // //Vertices // DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, -fDepth, fWidth>>), iR, iG, iB, iA) // DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, -fDepth, -fWidth>>), iR, iG, iB, iA) // DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), iR, iG, iB, iA) // DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, -fDepth, fWidth>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, -fDepth, -fWidth>>), iR, iG, iB, iA) // //Triangles // DRAW_DEBUG_POLY(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, -fDepth, fWidth>>), iR, iG, iB, CLAMP_INT(iA - 150, 0, 255)) // DRAW_DEBUG_POLY(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, -fDepth, -fWidth>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, -fDepth, fWidth>>), iR, iG, iB, CLAMP_INT(iA - 150, 0, 255)) // // // Mid Poly // //Vertices // DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), iR, iG, iB, iA) // DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), iR, iG, iB, iA) // DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, fDepth, fWidth>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, -fDepth, fWidth>>), iR, iG, iB, iA) // DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, fDepth, -fWidth>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, -fDepth, -fWidth>>), iR, iG, iB, iA) // //Triangles // DRAW_DEBUG_POLY(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, fDepth, fWidth>>), iR, iG, iB, CLAMP_INT(iA - 150, 0, 255)) // DRAW_DEBUG_POLY(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, -fDepth, fWidth>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, fDepth, fWidth>>), iR, iG, iB, CLAMP_INT(iA - 150, 0, 255)) // // DRAW_DEBUG_POLY(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, fDepth, -fWidth>>), iR, iG, iB, CLAMP_INT(iA - 150, 0, 255)) // DRAW_DEBUG_POLY(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, -fDepth, -fWidth>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, fDepth, -fWidth>>), iR, iG, iB, CLAMP_INT(iA - 150, 0, 255)) // // DRAW_DEBUG_POLY(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), iR, iG, iB, CLAMP_INT(iA - 150, 0, 255)) // DRAW_DEBUG_POLY(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <>), iR, iG, iB, CLAMP_INT(iA - 150, 0, 255)) // // DRAW_DEBUG_POLY(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, -fDepth, fWidth>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, fDepth, fWidth>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, fDepth, -fWidth>>), iR, iG, iB, CLAMP_INT(iA - 150, 0, 255)) // DRAW_DEBUG_POLY(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, -fDepth, fWidth>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, -fDepth, -fWidth>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-fWidth, fDepth, -fWidth>>), iR, iG, iB, CLAMP_INT(iA - 150, 0, 255)) // // // Cone Front Poly // //Vertices // DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<((fWidth / 4) * 3), fDepth + (fDepth / 2), ((fWidth / 4) * 3)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-((fWidth / 4) * 3), fDepth + (fDepth / 2), ((fWidth / 4) * 3)>>), iR, iG, iB, iA) // DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<((fWidth / 4) * 3), fDepth + (fDepth / 2), -((fWidth / 4) * 3)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-((fWidth / 4) * 3), fDepth + (fDepth / 2), -((fWidth / 4) * 3)>>), iR, iG, iB, iA) // DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<((fWidth / 4) * 3), fDepth + (fDepth / 2), ((fWidth / 4) * 3)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<((fWidth / 4) * 3), fDepth + (fDepth / 2), -((fWidth / 4) * 3)>>), iR, iG, iB, iA) // DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-((fWidth / 4) * 3), fDepth + (fDepth / 2), ((fWidth / 4) * 3)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-((fWidth / 4) * 3), fDepth + (fDepth / 2), -((fWidth / 4) * 3)>>), iR, iG, iB, iA) // //Triangles // DRAW_DEBUG_POLY(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<((fWidth / 4) * 3), fDepth + (fDepth / 2), ((fWidth / 4) * 3)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<((fWidth / 4) * 3), fDepth + (fDepth / 2), -((fWidth / 4) * 3)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-((fWidth / 4) * 3), fDepth + (fDepth / 2), ((fWidth / 4) * 3)>>), iR, iG, iB, CLAMP_INT(iA - 150, 0, 255)) // DRAW_DEBUG_POLY(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-((fWidth / 4) * 3), fDepth + (fDepth / 2), -((fWidth / 4) * 3)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<((fWidth / 4) * 3), fDepth + (fDepth / 2), -((fWidth / 4) * 3)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-((fWidth / 4) * 3), fDepth + (fDepth / 2), ((fWidth / 4) * 3)>>), iR, iG, iB, CLAMP_INT(iA - 150, 0, 255)) // // // Cone Back Poly // //Vertices // DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<((fWidth / 4) * 2), fDepth, ((fWidth / 4) * 2)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-((fWidth / 4) * 2), fDepth, ((fWidth / 4) * 2)>>), iR, iG, iB, iA) // DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<((fWidth / 4) * 2), fDepth, -((fWidth / 4) * 2)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-((fWidth / 4) * 2), fDepth, -((fWidth / 4) * 2)>>), iR, iG, iB, iA) // DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<((fWidth / 4) * 2), fDepth, ((fWidth / 4) * 2)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<((fWidth / 4) * 2), fDepth, -((fWidth / 4) * 2)>>), iR, iG, iB, iA) // DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-((fWidth / 4) * 2), fDepth, ((fWidth / 4) * 2)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-((fWidth / 4) * 2), fDepth, -((fWidth / 4) * 2)>>), iR, iG, iB, iA) // // // Cone Mid Poly // //Vertices // DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<((fWidth / 4) * 3), fDepth + (fDepth / 2), ((fWidth / 4) * 3)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<((fWidth / 4) * 2), fDepth, ((fWidth / 4) * 2)>>), iR, iG, iB, iA) // DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<((fWidth / 4) * 3), fDepth + (fDepth / 2), -((fWidth / 4) * 3)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<((fWidth / 4) * 2), fDepth, -((fWidth / 4) * 2)>>), iR, iG, iB, iA) // DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-((fWidth / 4) * 3), fDepth + (fDepth / 2), ((fWidth / 4) * 3)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-((fWidth / 4) * 2), fDepth, ((fWidth / 4) * 2)>>), iR, iG, iB, iA) // DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-((fWidth / 4) * 3), fDepth + (fDepth / 2), -((fWidth / 4) * 3)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-((fWidth / 4) * 2), fDepth, -((fWidth / 4) * 2)>>), iR, iG, iB, iA) // //Triangles // DRAW_DEBUG_POLY(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-((fWidth / 4) * 3), fDepth + (fDepth / 2), ((fWidth / 4) * 3)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<((fWidth / 4) * 3), fDepth + (fDepth / 2), ((fWidth / 4) * 3)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-((fWidth / 4) * 2), fDepth, ((fWidth / 4) * 2)>>), iR, iG, iB, CLAMP_INT(iA - 150, 0, 255)) // DRAW_DEBUG_POLY(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-((fWidth / 4) * 2), fDepth, ((fWidth / 4) * 2)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<((fWidth / 4) * 2), fDepth, ((fWidth / 4) * 2)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<((fWidth / 4) * 3), fDepth + (fDepth / 2), ((fWidth / 4) * 3)>>), iR, iG, iB, CLAMP_INT(iA - 150, 0, 255)) // // DRAW_DEBUG_POLY(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-((fWidth / 4) * 3), fDepth + (fDepth / 2), -((fWidth / 4) * 3)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<((fWidth / 4) * 3), fDepth + (fDepth / 2), -((fWidth / 4) * 3)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-((fWidth / 4) * 2), fDepth, -((fWidth / 4) * 2)>>), iR, iG, iB, CLAMP_INT(iA - 150, 0, 255)) // DRAW_DEBUG_POLY(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-((fWidth / 4) * 2), fDepth, -((fWidth / 4) * 2)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<((fWidth / 4) * 2), fDepth, -((fWidth / 4) * 2)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<((fWidth / 4) * 3), fDepth + (fDepth / 2), -((fWidth / 4) * 3)>>), iR, iG, iB, CLAMP_INT(iA - 150, 0, 255)) // // DRAW_DEBUG_POLY(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<((fWidth / 4) * 2), fDepth, ((fWidth / 4) * 2)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<((fWidth / 4) * 3), fDepth + (fDepth / 2), ((fWidth / 4) * 3)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<((fWidth / 4) * 2), fDepth, -((fWidth / 4) * 2)>>), iR, iG, iB, CLAMP_INT(iA - 150, 0, 255)) // DRAW_DEBUG_POLY(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<((fWidth / 4) * 2), fDepth, -((fWidth / 4) * 2)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<((fWidth / 4) * 3), fDepth + (fDepth / 2), ((fWidth / 4) * 3)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<((fWidth / 4) * 3), fDepth + (fDepth / 2), -((fWidth / 4) * 3)>>), iR, iG, iB, CLAMP_INT(iA - 150, 0, 255)) // // DRAW_DEBUG_POLY(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-((fWidth / 4) * 2), fDepth, ((fWidth / 4) * 2)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-((fWidth / 4) * 3), fDepth + (fDepth / 2), ((fWidth / 4) * 3)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-((fWidth / 4) * 2), fDepth, -((fWidth / 4) * 2)>>), iR, iG, iB, CLAMP_INT(iA - 150, 0, 255)) // DRAW_DEBUG_POLY(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-((fWidth / 4) * 2), fDepth, -((fWidth / 4) * 2)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-((fWidth / 4) * 3), fDepth + (fDepth / 2), ((fWidth / 4) * 3)>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(objDummy, <<-((fWidth / 4) * 3), fDepth + (fDepth / 2), -((fWidth / 4) * 3)>>), iR, iG, iB, CLAMP_INT(iA - 150, 0, 255)) //ENDPROC //PROC CINEMATIC_CAMERA() // //Make the camera // IF NOT DOES_CAM_EXIST(camCinematic) // camCinematic = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA") // // SET_CAM_NEAR_CLIP(camCinematic, 0.01) // SET_CAM_FAR_DOF(camCinematic, 10.0) // // #IF IS_DEBUG_BUILD // SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE) // #ENDIF // // INIT_CINEMATIC_CAMS() // ELSE // IF DOES_ENTITY_EXIST(vehRival1) // IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) // //Get the time in the recording // FLOAT fRecTime // // fRecTime = GET_TIME_POSITION_IN_RECORDING(vehRival1) // // INT i // // #IF IS_DEBUG_BUILD // //Debug Line // FLOAT ii // #ENDIF // // REPEAT iCinCams i // IF sCamIntData[i].fFov > 1.0 // #IF IS_DEBUG_BUILD // IF bCinCamDebug = TRUE //// REPEAT ROUND(sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].fRec - sCamIntData[i].fRec) / 100 ii //// DRAW_DEBUG_LINE(HERMITE_CURVE(sCamIntData[i].vPos, sCamIntData[i].vTanIn, sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vPos, sCamIntData[i].vTanOut, sCamIntData[i].fRec, sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].fRec, TO_FLOAT(ii * 100)), //// HERMITE_CURVE(sCamIntData[i].vPos, sCamIntData[i].vTanIn, sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vPos, sCamIntData[i].vTanOut, sCamIntData[i].fRec, sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].fRec, TO_FLOAT((ii + 1) * 100))) //// ENDREPEAT // // ii = 0.0 // FLOAT fStep = 0.04 // // VECTOR vColour = <<0.0, 0.0, 0.0>> // // WHILE ii < 1.0 // IF sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].fFov != 0 // vColour.X = 255.0 // // IF sCamIntData[i].bLink = FALSE // vColour.Y = CLAMP(255.0 - (255.0 / (GET_DISTANCE_BETWEEN_COORDS(HERMITE_CURVE(sCamIntData[i].vPos, GET_START_TANGENT_WITH_ADJUST(i), sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vPos, GET_END_TANGENT_WITH_ADJUST(i), 0.0, 1.0, ii), // HERMITE_CURVE(sCamIntData[i].vPos, GET_START_TANGENT_WITH_ADJUST(i), sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vPos, GET_END_TANGENT_WITH_ADJUST(i), 0.0, 1.0, CLAMP(ii + fStep, 0.0, 1.0))) * 5.0)), // 0.0, // 255.0) // // IF vColour.Y >= 255.0 // vColour.X = CLAMP(255.0 - (255.0 / ((GET_DISTANCE_BETWEEN_COORDS(HERMITE_CURVE(sCamIntData[i].vPos, GET_START_TANGENT_WITH_ADJUST(i), sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vPos, GET_END_TANGENT_WITH_ADJUST(i), 0.0, 1.0, ii), // HERMITE_CURVE(sCamIntData[i].vPos, GET_START_TANGENT_WITH_ADJUST(i), sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vPos, GET_END_TANGENT_WITH_ADJUST(i), 0.0, 1.0, CLAMP(ii + fStep, 0.0, 1.0))) * 5.0) - 255.0)), // 0.0, // 255.0) // ENDIF // ELSE // vColour.Y = CLAMP(255.0 - (255.0 / (GET_DISTANCE_BETWEEN_COORDS(HERMITE_CURVE(sCamIntData[i].vPos, GET_START_TANGENT_WITH_ADJUST(i), sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vPos, GET_START_TANGENT_WITH_ADJUST(CLAMP_INT(i + 1, 0, iCinCams - 1)), 0.0, 1.0, ii), // HERMITE_CURVE(sCamIntData[i].vPos, GET_START_TANGENT_WITH_ADJUST(i), sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vPos, GET_START_TANGENT_WITH_ADJUST(CLAMP_INT(i + 1, 0, iCinCams - 1)), 0.0, 1.0, CLAMP(ii + fStep, 0.0, 1.0))) * 5.0)), // 0.0, // 255.0) // // IF vColour.Y >= 255.0 // vColour.X = CLAMP(255.0 - (255.0 / ((GET_DISTANCE_BETWEEN_COORDS(HERMITE_CURVE(sCamIntData[i].vPos, GET_START_TANGENT_WITH_ADJUST(i), sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vPos, GET_START_TANGENT_WITH_ADJUST(CLAMP_INT(i + 1, 0, iCinCams - 1)), 0.0, 1.0, ii), // HERMITE_CURVE(sCamIntData[i].vPos, GET_START_TANGENT_WITH_ADJUST(i), sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vPos, GET_START_TANGENT_WITH_ADJUST(CLAMP_INT(i + 1, 0, iCinCams - 1)), 0.0, 1.0, CLAMP(ii + fStep, 0.0, 1.0))) * 5.0) - 255.0)), // 0.0, // 255.0) // ENDIF // ENDIF // // IF sCamIntData[i].bLink = FALSE // DRAW_DEBUG_LINE(HERMITE_CURVE(sCamIntData[i].vPos, GET_START_TANGENT_WITH_ADJUST(i), sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vPos, GET_END_TANGENT_WITH_ADJUST(i), 0.0, 1.0, ii), // HERMITE_CURVE(sCamIntData[i].vPos, GET_START_TANGENT_WITH_ADJUST(i), sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vPos, GET_END_TANGENT_WITH_ADJUST(i), 0.0, 1.0, CLAMP(ii + fStep, 0.0, 1.0)), // ROUND(vColour.X), // ROUND(vColour.Y), // ROUND(vColour.Z)) // ELSE // DRAW_DEBUG_LINE(HERMITE_CURVE(sCamIntData[i].vPos, GET_START_TANGENT_WITH_ADJUST(i), sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vPos, GET_START_TANGENT_WITH_ADJUST(CLAMP_INT(i + 1, 0, iCinCams - 1)), 0.0, 1.0, ii), // HERMITE_CURVE(sCamIntData[i].vPos, GET_START_TANGENT_WITH_ADJUST(i), sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vPos, GET_START_TANGENT_WITH_ADJUST(CLAMP_INT(i + 1, 0, iCinCams - 1)), 0.0, 1.0, CLAMP(ii + fStep, 0.0, 1.0)), // ROUND(vColour.X), // ROUND(vColour.Y), // ROUND(vColour.Z)) // ENDIF // ENDIF // // ii += fStep // ENDWHILE // // IF i = iCinCamID // DRAW_CAMERA(sCamIntData[i].vPos, sCamIntData[i].vRot, sCamIntData[i].fFov, 1.0, 255, 0, 255) // DRAW_DEBUG_SPHERE(sCamIntData[i].vPos, 0.025, 255, 0, 255) // // DRAW_DEBUG_LINE(sCamIntData[i].vPos, sCamIntData[i].vPos + sCamIntData[i].vTanIn, 255, 0, 255) // // //DRAW_DEBUG_SPHERE(sCamIntData[i].vPos + sCamIntData[i].vTanIn, 0.1, 255, 0, 255) // DRAW_DEBUG_POLY_WITH_THREE_COLOURS(sCamIntData[i].vPos + sCamIntData[i].vTanIn, // GET_OFFSET_FROM_COORD_AND_HEADING_IN_WORLD_COORDS(sCamIntData[i].vPos + sCamIntData[i].vTanIn, GET_HEADING_BETWEEN_VECTORS(sCamIntData[i].vPos, sCamIntData[i].vPos + sCamIntData[i].vTanIn), <<0.5, 0.5, 0.0>>), // GET_OFFSET_FROM_COORD_AND_HEADING_IN_WORLD_COORDS(sCamIntData[i].vPos + sCamIntData[i].vTanIn, GET_HEADING_BETWEEN_VECTORS(sCamIntData[i].vPos, sCamIntData[i].vPos + sCamIntData[i].vTanIn), <<-0.5, 0.5, 0.0>>), // 255, 0, 255, 255, // 255, 0, 255, 0, // 255, 0, 255, 0) // // IF sCamIntData[i].bLink = FALSE // DRAW_DEBUG_LINE(sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vPos, sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vPos + sCamIntData[i].vTanOut, 255, 0, 255) // // //DRAW_DEBUG_SPHERE(sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vPos + sCamIntData[i].vTanOut, 0.1, 255, 0, 255) // DRAW_DEBUG_POLY_WITH_THREE_COLOURS(sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vPos + sCamIntData[i].vTanOut, // GET_OFFSET_FROM_COORD_AND_HEADING_IN_WORLD_COORDS(sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vPos + sCamIntData[i].vTanOut, GET_HEADING_BETWEEN_VECTORS(sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vPos, sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vPos + sCamIntData[i].vTanOut), <<0.5, 0.5, 0.0>>), // GET_OFFSET_FROM_COORD_AND_HEADING_IN_WORLD_COORDS(sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vPos + sCamIntData[i].vTanOut, GET_HEADING_BETWEEN_VECTORS(sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vPos, sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vPos + sCamIntData[i].vTanOut), <<-0.5, 0.5, 0.0>>), // 255, 0, 255, 255, // 255, 0, 255, 0, // 255, 0, 255, 0) // ENDIF // ELIF i = CLAMP_INT(iCinCamID + 1, 0, iCinCams - 1) // AND sCamIntData[i].bLink = FALSE // DRAW_CAMERA(sCamIntData[i].vPos, sCamIntData[i].vRot, sCamIntData[i].fFov, 1.0, 255, 0, 255) // DRAW_DEBUG_SPHERE(sCamIntData[i].vPos, 0.025, 255, 0, 255) // ELSE // DRAW_CAMERA(sCamIntData[i].vPos, sCamIntData[i].vRot, sCamIntData[i].fFov, 1.0, ROUND(vColour.X), ROUND(vColour.Y), ROUND(vColour.Z)) // DRAW_DEBUG_SPHERE(sCamIntData[i].vPos, 0.025, ROUND(vColour.X), ROUND(vColour.Y), ROUND(vColour.Z)) // ENDIF // ENDIF // #ENDIF // // IF sCamIntData[i].fRec < fRecTime // IF sCamIntData[i].bLink = FALSE // SET_CAM_PARAMS(camCinematic, // /*Pos*/ HERMITE_CURVE(sCamIntData[i].vPos, GET_START_TANGENT_WITH_ADJUST(i), sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vPos, GET_END_TANGENT_WITH_ADJUST(i), sCamIntData[i].fRec, sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].fRec, fRecTime - sCamIntData[i].fRec), // /*Rot*/ HERMITE_CURVE(sCamIntData[i].vRot, GET_START_TANGENT_WITH_ADJUST(i), sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vRot, GET_END_TANGENT_WITH_ADJUST(i), sCamIntData[i].fRec, sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].fRec, fRecTime - sCamIntData[i].fRec), //GET_INTERP_POINT_VECTOR(sCamIntData[i].vRot, sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vRot, sCamIntData[i].fRec, sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].fRec, fRecTime), // /*Fov*/ CLAMP(GET_INTERP_POINT_FLOAT(sCamIntData[i].fFov, sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].fFov, sCamIntData[i].fRec, sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].fRec, fRecTime), 1.0, 130.0)) // ELSE // SET_CAM_PARAMS(camCinematic, // /*Pos*/ HERMITE_CURVE(sCamIntData[i].vPos, GET_START_TANGENT_WITH_ADJUST(i), sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vPos, GET_START_TANGENT_WITH_ADJUST(CLAMP_INT(i + 1, 0, iCinCams - 1)), sCamIntData[i].fRec, sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].fRec, fRecTime - sCamIntData[i].fRec), // /*Rot*/ HERMITE_CURVE(sCamIntData[i].vRot, GET_START_TANGENT_WITH_ADJUST(i), sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vRot, GET_START_TANGENT_WITH_ADJUST(CLAMP_INT(i + 1, 0, iCinCams - 1)), sCamIntData[i].fRec, sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].fRec, fRecTime - sCamIntData[i].fRec), //GET_INTERP_POINT_VECTOR(sCamIntData[i].vRot, sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].vRot, sCamIntData[i].fRec, sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].fRec, fRecTime), // /*Fov*/ CLAMP(GET_INTERP_POINT_FLOAT(sCamIntData[i].fFov, sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].fFov, sCamIntData[i].fRec, sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].fRec, fRecTime), 1.0, 130.0)) // ENDIF // // #IF IS_DEBUG_BUILD // IF bCinCamDebug = TRUE // IF fRecTime > sCamIntData[i].fRec // AND fRecTime < sCamIntData[CLAMP_INT(i + 1, 0, iCinCams - 1)].fRec // DRAW_CAMERA(GET_CAM_COORD(camCinematic), GET_CAM_ROT(camCinematic), GET_CAM_FOV(camCinematic), 1.2, 255, 0, 0) // DRAW_DEBUG_SPHERE(GET_CAM_COORD(camCinematic), 0.025, 255, 0, 0) // ENDIF // ENDIF // #ENDIF // ENDIF // ENDIF // ENDREPEAT // // #IF IS_DEBUG_BUILD // IF bCinCamSave = TRUE // //Get the time in the recording // CAMERA_INDEX camTemp // camTemp = GET_DEBUG_CAM() // // sCamIntData[iCinCamID].vPos = GET_CAM_COORD(camTemp) // sCamIntData[iCinCamID].vRot = GET_CAM_ROT(camTemp) // sCamIntData[iCinCamID].fFov = GET_CAM_FOV(camTemp) // sCamIntData[iCinCamID].vTanIn = VECTOR_ZERO // sCamIntData[iCinCamID].vTanOut = VECTOR_ZERO // sCamIntData[iCinCamID].fRec = fRecTime // sCamIntData[iCinCamID].bLink = FALSE // // vCinCamPos = GET_CAM_COORD(camTemp) // vCinCamRot = GET_CAM_ROT(camTemp) // fCinCamFov = GET_CAM_FOV(camTemp) // vCinCamTanIn = VECTOR_ZERO // vCinCamTanOut = VECTOR_ZERO // fCinCamRec = fRecTime // bCinCamLink = FALSE // // iCinCamID++ // // bCinCamSave = FALSE // ENDIF // // IF iCinCamIDLast != iCinCamID // vCinCamPos = sCamIntData[iCinCamID].vPos // vCinCamRot = sCamIntData[iCinCamID].vRot // fCinCamFov = sCamIntData[iCinCamID].fFov // vCinCamTanIn = sCamIntData[iCinCamID].vTanIn // vCinCamTanOut = sCamIntData[iCinCamID].vTanOut // fCinCamRec = sCamIntData[iCinCamID].fRec // bCinCamLink = sCamIntData[iCinCamID].bLink // // iCinCamIDLast = iCinCamID // ENDIF // // IF NOT ARE_VECTORS_EQUAL(vCinCamPosLast, vCinCamPos) // sCamIntData[iCinCamID].vPos = vCinCamPos // // vCinCamPosLast = vCinCamPos // ENDIF // // IF NOT ARE_VECTORS_EQUAL(vCinCamRotLast, vCinCamRot) // sCamIntData[iCinCamID].vRot = vCinCamRot // // vCinCamRotLast = vCinCamRot // ENDIF // // IF fCinCamFovLast != fCinCamFov // sCamIntData[iCinCamID].fFov = fCinCamFov // // fCinCamFovLast = fCinCamFov // ENDIF // // IF IS_MOUSE_BUTTON_PRESSED(MB_LEFT_BTN) // AND NOT IS_MOUSE_BUTTON_PRESSED(MB_RIGHT_BTN) // VECTOR vMouse // // vMouse = GET_SCRIPT_MOUSE_POINTER_IN_WORLD_COORDS() // PRINTVECTOR(vMouse) // PRINTNL() // // vCinCamTanIn.X = vMouse.X - sCamIntData[iCinCamID].vPos.X // vCinCamTanIn.Y = vMouse.Y - sCamIntData[iCinCamID].vPos.Y // // //GET_MOUSE_POSITION(vMouse.X, vMouse.Y) // // //vCinCamTanIn.X = (vMouse.X - 0.5) * 10.0 // //vCinCamTanIn.Y = (vMouse.Y - 0.5) * 10.0 // ENDIF // // IF NOT ARE_VECTORS_EQUAL(vCinCamTanInLast, vCinCamTanIn) // sCamIntData[iCinCamID].vTanIn = vCinCamTanIn // // fCinCamTanInMag = SQRT(TPO(vCinCamTanIn.X, 2) + TPO(vCinCamTanIn.Y, 2) + TPO(vCinCamTanIn.Z, 2)) // // vCinCamTanInLast = vCinCamTanIn // ENDIF // // IF fCinCamTanInMagLast != fCinCamTanInMag // VECTOR vUnit = vCinCamTanIn / VMAG(vCinCamTanIn) // // vCinCamTanIn = vUnit * fCinCamTanInMag // // fCinCamTanInMagLast = fCinCamTanInMag // ENDIF // // IF IS_MOUSE_BUTTON_PRESSED(MB_LEFT_BTN) // AND IS_MOUSE_BUTTON_PRESSED(MB_RIGHT_BTN) // VECTOR vMouse // // vMouse = GET_SCRIPT_MOUSE_POINTER_IN_WORLD_COORDS() // PRINTVECTOR(vMouse) // PRINTNL() // // vCinCamTanOut.X = vMouse.X - sCamIntData[CLAMP_INT(iCinCamID + 1, 0, iCinCams - 1)].vPos.X // vCinCamTanOut.Y = vMouse.Y - sCamIntData[CLAMP_INT(iCinCamID + 1, 0, iCinCams - 1)].vPos.Y // // //GET_MOUSE_POSITION(vMouse.X, vMouse.Y) // // //vCinCamTanOut.X = (vMouse.X - 0.5) * 10.0 // //vCinCamTanOut.Y = (vMouse.Y - 0.5) * 10.0 // ENDIF // // IF NOT ARE_VECTORS_EQUAL(vCinCamTanOutLast, vCinCamTanOut) // sCamIntData[iCinCamID].vTanOut = vCinCamTanOut // // fCinCamTanOutMag = SQRT(TPO(vCinCamTanOut.X, 2) + TPO(vCinCamTanOut.Y, 2) + TPO(vCinCamTanOut.Z, 2)) // // vCinCamTanOutLast = vCinCamTanOut // ENDIF // // IF fCinCamTanOutMagLast != fCinCamTanOutMag // VECTOR vUnit = vCinCamTanOut / VMAG(vCinCamTanOut) // // vCinCamTanOut = vUnit * fCinCamTanOutMag // // fCinCamTanOutMagLast = fCinCamTanOutMag // ENDIF // // IF fCinCamRecLast != fCinCamRec // sCamIntData[iCinCamID].fRec = fCinCamRec // // fCinCamRecLast = fCinCamRec // ENDIF // // IF bCinCamLinkLast != bCinCamLink // sCamIntData[iCinCamID].bLink = bCinCamLink // // bCinCamLinkLast = bCinCamLink // ENDIF // // IF bCinCamOutput = TRUE // INT iCamIndex // // OPEN_DEBUG_FILE() // // REPEAT iCinCams iCamIndex // IF NOT ARE_VECTORS_EQUAL(sCamIntData[iCamIndex].vPos, VECTOR_ZERO) // SAVE_STRING_TO_DEBUG_FILE("sCamIntData[") // SAVE_INT_TO_DEBUG_FILE(iCamIndex) // SAVE_STRING_TO_DEBUG_FILE("].vPos = <<") // SAVE_FLOAT_TO_DEBUG_FILE(sCamIntData[iCamIndex].vPos.X) // SAVE_STRING_TO_DEBUG_FILE(", ") // SAVE_FLOAT_TO_DEBUG_FILE(sCamIntData[iCamIndex].vPos.Y) // SAVE_STRING_TO_DEBUG_FILE(", ") // SAVE_FLOAT_TO_DEBUG_FILE(sCamIntData[iCamIndex].vPos.Z) // SAVE_STRING_TO_DEBUG_FILE(">>") // SAVE_NEWLINE_TO_DEBUG_FILE() // SAVE_STRING_TO_DEBUG_FILE("sCamIntData[") // SAVE_INT_TO_DEBUG_FILE(iCamIndex) // SAVE_STRING_TO_DEBUG_FILE("].vRot = <<") // SAVE_FLOAT_TO_DEBUG_FILE(sCamIntData[iCamIndex].vRot.X) // SAVE_STRING_TO_DEBUG_FILE(", ") // SAVE_FLOAT_TO_DEBUG_FILE(sCamIntData[iCamIndex].vRot.Y) // SAVE_STRING_TO_DEBUG_FILE(", ") // SAVE_FLOAT_TO_DEBUG_FILE(sCamIntData[iCamIndex].vRot.Z) // SAVE_STRING_TO_DEBUG_FILE(">>") // SAVE_NEWLINE_TO_DEBUG_FILE() // SAVE_STRING_TO_DEBUG_FILE("sCamIntData[") // SAVE_INT_TO_DEBUG_FILE(iCamIndex) // SAVE_STRING_TO_DEBUG_FILE("].fFov = ") // SAVE_FLOAT_TO_DEBUG_FILE(sCamIntData[iCamIndex].fFov) // SAVE_NEWLINE_TO_DEBUG_FILE() // SAVE_STRING_TO_DEBUG_FILE("sCamIntData[") // SAVE_INT_TO_DEBUG_FILE(iCamIndex) // SAVE_STRING_TO_DEBUG_FILE("].vTanIn = <<") // SAVE_FLOAT_TO_DEBUG_FILE(sCamIntData[iCamIndex].vTanIn.X) // SAVE_STRING_TO_DEBUG_FILE(", ") // SAVE_FLOAT_TO_DEBUG_FILE(sCamIntData[iCamIndex].vTanIn.Y) // SAVE_STRING_TO_DEBUG_FILE(", ") // SAVE_FLOAT_TO_DEBUG_FILE(sCamIntData[iCamIndex].vTanIn.Z) // SAVE_STRING_TO_DEBUG_FILE(">>") // SAVE_NEWLINE_TO_DEBUG_FILE() // SAVE_STRING_TO_DEBUG_FILE("sCamIntData[") // SAVE_INT_TO_DEBUG_FILE(iCamIndex) // SAVE_STRING_TO_DEBUG_FILE("].vTanOut = <<") // SAVE_FLOAT_TO_DEBUG_FILE(sCamIntData[iCamIndex].vTanOut.X) // SAVE_STRING_TO_DEBUG_FILE(", ") // SAVE_FLOAT_TO_DEBUG_FILE(sCamIntData[iCamIndex].vTanOut.Y) // SAVE_STRING_TO_DEBUG_FILE(", ") // SAVE_FLOAT_TO_DEBUG_FILE(sCamIntData[iCamIndex].vTanOut.Z) // SAVE_STRING_TO_DEBUG_FILE(">>") // SAVE_NEWLINE_TO_DEBUG_FILE() // SAVE_STRING_TO_DEBUG_FILE("sCamIntData[") // SAVE_INT_TO_DEBUG_FILE(iCamIndex) // SAVE_STRING_TO_DEBUG_FILE("].fRec = ") // SAVE_FLOAT_TO_DEBUG_FILE(sCamIntData[iCamIndex].fRec) // SAVE_NEWLINE_TO_DEBUG_FILE() // SAVE_STRING_TO_DEBUG_FILE("sCamIntData[") // SAVE_INT_TO_DEBUG_FILE(iCamIndex) // SAVE_STRING_TO_DEBUG_FILE("].bLink = ") // IF sCamIntData[iCamIndex].bLink = TRUE // SAVE_STRING_TO_DEBUG_FILE("TRUE") // ELSE // SAVE_STRING_TO_DEBUG_FILE("FALSE") // ENDIF // SAVE_NEWLINE_TO_DEBUG_FILE() // SAVE_NEWLINE_TO_DEBUG_FILE() // ENDIF // ENDREPEAT // // CLOSE_DEBUG_FILE() // // bCinCamOutput = FALSE // ENDIF // #ENDIF // ENDIF // ENDIF // ENDIF //ENDPROC FUNC FLOAT GET_HEADING_FROM_VECTOR(VECTOR vVector) RETURN vVector.Z ENDFUNC STRING sAudioEvent INT iAudioPrepareTimer //This is an override in case an audio event is prepared but never used PROC AUDIO_CONTROLLER() #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("<<<<<<<< AUDIO_CONTROLLER >>>>>>>> (sAudioEvent = ", sAudioEvent, ")") ENDIF #ENDIF IF ePlayAudioTrack = NO_AUDIO AND (NOT IS_MUSIC_ONESHOT_PLAYING() OR GET_GAME_TIMER() > iAudioPrepareTimer) SWITCH ePrepAudioTrack CASE CAR1_MISSION_START #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepare - CAR1_MISSION_START") ENDIF #ENDIF IF IS_STRING_NULL_OR_EMPTY(sAudioEvent) OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "CAR1_MISSION_START") IF NOT IS_STRING_NULL_OR_EMPTY(sAudioEvent) #IF IS_DEBUG_BUILD IF #ENDIF CANCEL_MUSIC_EVENT(sAudioEvent) #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Cancelled audio - sAudioEvent = ", sAudioEvent) ENDIF ENDIF #ENDIF ENDIF sAudioEvent = "CAR1_MISSION_START" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF ELSE IF PREPARE_MUSIC_EVENT("CAR1_MISSION_START") ePrepAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepared audio - CAR1_MISSION_START") ENDIF #ENDIF ENDIF ENDIF BREAK CASE CAR1_CHASE_START #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepare - CAR1_CHASE_START") ENDIF #ENDIF IF IS_STRING_NULL_OR_EMPTY(sAudioEvent) OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "CAR1_CHASE_START") IF NOT IS_STRING_NULL_OR_EMPTY(sAudioEvent) #IF IS_DEBUG_BUILD IF #ENDIF CANCEL_MUSIC_EVENT(sAudioEvent) #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Cancelled audio - sAudioEvent = ", sAudioEvent) ENDIF ENDIF #ENDIF ENDIF sAudioEvent = "CAR1_CHASE_START" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF ELSE IF PREPARE_MUSIC_EVENT("CAR1_CHASE_START") ePrepAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepared audio - CAR1_CHASE_START") ENDIF #ENDIF ENDIF ENDIF BREAK ENDSWITCH ENDIF SWITCH ePlayAudioTrack CASE CAR1_MISSION_START #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - CAR1_MISSION_START") ENDIF #ENDIF IF IS_STRING_NULL_OR_EMPTY(sAudioEvent) OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "CAR1_MISSION_START") IF NOT IS_STRING_NULL_OR_EMPTY(sAudioEvent) #IF IS_DEBUG_BUILD IF #ENDIF CANCEL_MUSIC_EVENT(sAudioEvent) #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Cancelled audio - sAudioEvent = ", sAudioEvent) ENDIF ENDIF #ENDIF ENDIF sAudioEvent = "CAR1_MISSION_START" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF ELSE IF PREPARE_MUSIC_EVENT("CAR1_MISSION_START") IF TRIGGER_MUSIC_EVENT("CAR1_MISSION_START") iAudioPrepareTimer = GET_GAME_TIMER() + 5000 //Assumes 5 seconds is long enough for the one shot to play ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - CAR1_MISSION_START") ENDIF #ENDIF ENDIF ENDIF ENDIF BREAK CASE CAR1_MISSION_RESTART #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - CAR1_MISSION_RESTART") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("CAR1_MISSION_RESTART") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - CAR1_MISSION_RESTART") ENDIF #ENDIF ENDIF BREAK CASE CAR1_COP_BIKES #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - CAR1_COP_BIKES") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("CAR1_COP_BIKES") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - CAR1_COP_BIKES") ENDIF #ENDIF ENDIF BREAK CASE CAR1_COPS_RESTART #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - CAR1_COPS_RESTART") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("CAR1_COPS_RESTART") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - CAR1_COPS_RESTART") ENDIF #ENDIF ENDIF BREAK CASE CAR1_APPROACH #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - CAR1_APPROACH") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("CAR1_APPROACH") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - CAR1_APPROACH") ENDIF #ENDIF ENDIF BREAK CASE CAR1_CHASE_START #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - CAR1_CHASE_START") ENDIF #ENDIF IF IS_STRING_NULL_OR_EMPTY(sAudioEvent) OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "CAR1_CHASE_START") IF NOT IS_STRING_NULL_OR_EMPTY(sAudioEvent) #IF IS_DEBUG_BUILD IF #ENDIF CANCEL_MUSIC_EVENT(sAudioEvent) #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Cancelled audio - sAudioEvent = ", sAudioEvent) ENDIF ENDIF #ENDIF ENDIF sAudioEvent = "CAR1_CHASE_START" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF ELSE IF PREPARE_MUSIC_EVENT("CAR1_CHASE_START") IF TRIGGER_MUSIC_EVENT("CAR1_CHASE_START") iAudioPrepareTimer = GET_GAME_TIMER() + 5000 //Assumes 5 seconds is long enough for the one shot to play ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - CAR1_CHASE_START") ENDIF #ENDIF ENDIF ENDIF ENDIF BREAK CASE CAR1_PULL_OVER #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - CAR1_PULL_OVER") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("CAR1_PULL_OVER") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - CAR1_PULL_OVER") ENDIF #ENDIF ENDIF BREAK CASE CAR1_CHASE_RESTART #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - CAR1_CHASE_RESTART") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("CAR1_CHASE_RESTART") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - CAR1_CHASE_RESTART") ENDIF #ENDIF ENDIF BREAK CASE CAR1_BRIDGE #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - CAR1_BRIDGE") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("CAR1_BRIDGE") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - CAR1_BRIDGE") ENDIF #ENDIF ENDIF BREAK CASE CAR1_MISSION_FAIL #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - CAR1_MISSION_FAIL") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("CAR1_MISSION_FAIL") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - CAR1_MISSION_FAIL") ENDIF #ENDIF ENDIF BREAK ENDSWITCH ENDPROC PROC LOAD_AUDIO(AUDIO_TRACK eSetAudioTrack) ePrepAudioTrack = eSetAudioTrack AUDIO_CONTROLLER() ENDPROC PROC PLAY_AUDIO(AUDIO_TRACK eSetAudioTrack) ePlayAudioTrack = eSetAudioTrack AUDIO_CONTROLLER() ENDPROC //════════════════════════════╡ CONTROL PROCEDURES ╞═════════════════════════════ //Cleanup PROC MISSION_CLEANUP(BOOL bRestart = FALSE, BOOL bDelayCleanup = FALSE) IF bVideoRecording REPLAY_STOP_EVENT() bVideoRecording = FALSE ENDIF RESET_PUSH_IN(pushInData) SET_CINEMATIC_BUTTON_ACTIVE(TRUE) CLEAR_HELP() ENABLE_PROCOBJ_CREATION() IF HAS_LABEL_BEEN_TRIGGERED("SET_CAR_HIGH_SPEED_BUMP_SEVERITY_MULTIPLIER") SET_CAR_HIGH_SPEED_BUMP_SEVERITY_MULTIPLIER(1.0) SET_LABEL_AS_TRIGGERED("SET_CAR_HIGH_SPEED_BUMP_SEVERITY_MULTIPLIER", FALSE) ENDIF IF IS_PLAYER_PLAYING(PLAYER_ID()) IF IS_SCREEN_FADED_OUT() IF bRestart CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID()) SET_PED_POSITION(PLAYER_PED_ID(), GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_HEADING(PLAYER_PED_ID()), FALSE) ELSE CLEAR_PED_TASKS(PLAYER_PED_ID()) ENDIF ENDIF SET_PED_CAN_SWITCH_WEAPON(PLAYER_PED_ID(), TRUE) CLEAR_PED_PROP(PLAYER_PED_ID(), ANCHOR_EARS) CLEAR_PED_PROP(PLAYER_PED_ID(), ANCHOR_HEAD) REMOVE_PED_HELMET(PLAYER_PED_ID(), TRUE) SET_PED_HELMET_PROP_INDEX(PLAYER_PED_ID(), -1) ENDIF IF DOES_ENTITY_EXIST(PLAYER_PED(CHAR_MICHAEL)) IF NOT IS_ENTITY_DEAD(PLAYER_PED(CHAR_MICHAEL)) SET_PED_CONFIG_FLAG(PLAYER_PED(CHAR_MICHAEL), PCF_PhoneDisableTalkingAnimations, FALSE) ENDIF ENDIF IF DOES_ENTITY_EXIST(PLAYER_PED(CHAR_TREVOR)) IF NOT IS_ENTITY_DEAD(PLAYER_PED(CHAR_TREVOR)) SET_PED_CONFIG_FLAG(PLAYER_PED(CHAR_TREVOR), PCF_PhoneDisableTalkingAnimations, FALSE) ENDIF ENDIF IF DOES_ENTITY_EXIST(PLAYER_PED(CHAR_FRANKLIN)) IF NOT IS_ENTITY_DEAD(PLAYER_PED(CHAR_FRANKLIN)) SET_PED_CONFIG_FLAG(PLAYER_PED(CHAR_FRANKLIN), PCF_PhoneDisableTalkingAnimations, FALSE) ENDIF ENDIF //Outfits/Weapons RESET_PLAYER_HAS_CHANGE_CLOTHES_ON_MISSION(CHAR_MICHAEL, bHasChanged) //reset that the player has changed outfit on mission to how it was at the start of the mission RESET_PLAYER_HAS_CHANGE_CLOTHES_ON_MISSION(CHAR_TREVOR, bHasChanged) IF bPassed = FALSE RESTORE_PLAYER_PED_VARIATIONS(PLAYER_PED_ID()) ENDIF SET_PLAYER_PED_DATA_IN_CUTSCENES(TRUE, TRUE) SAFE_REMOVE_BLIP(blipStart) SAFE_REMOVE_BLIP(blipPlayer) SAFE_REMOVE_BLIP(blipRival1) SAFE_REMOVE_BLIP(blipRival2) SAFE_REMOVE_BLIP(blipPolice) SAFE_REMOVE_BLIP(blipGarage) //Car Recordings IF IS_SCREEN_FADED_OUT() IF DOES_ENTITY_EXIST(vehPolice1) AND NOT IS_ENTITY_DEAD(vehPolice1) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPolice1) STOP_PLAYBACK_RECORDED_VEHICLE(vehPolice1) ENDIF ENDIF IF DOES_ENTITY_EXIST(vehPlayer) AND NOT IS_ENTITY_DEAD(vehPlayer) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPlayer) STOP_PLAYBACK_RECORDED_VEHICLE(vehPlayer) ENDIF ENDIF IF DOES_ENTITY_EXIST(vehRival1) AND NOT IS_ENTITY_DEAD(vehRival1) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) STOP_PLAYBACK_RECORDED_VEHICLE(vehRival1) ENDIF ENDIF IF DOES_ENTITY_EXIST(vehRival2) AND NOT IS_ENTITY_DEAD(vehRival2) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival2) STOP_PLAYBACK_RECORDED_VEHICLE(vehRival2) ENDIF ENDIF ENDIF IF NOT bDelayCleanup //Force Cleanup (Death/Arrest/Multiplayer) #IF IS_DEBUG_BUILD IF bAutoSkipping #ENDIF //Z-skips cleanup //Delete all peds, vehicles and blips SAFE_DELETE_PED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) SAFE_DELETE_PED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) SAFE_DELETE_PED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN]) SAFE_DELETE_PED(pedRival1) SAFE_DELETE_PED(pedRival2) SAFE_DELETE_PED(pedDevin) SAFE_DELETE_PED(pedMolly) SAFE_DELETE_PED(pedWorker1) SAFE_DELETE_PED(pedWorker2) IF DOES_ENTITY_EXIST(vehPlayer) IF IS_ENTITY_A_MISSION_ENTITY(vehPlayer) SAFE_DELETE_VEHICLE(vehPlayer) ENDIF ENDIF SAFE_DELETE_VEHICLE(vehRival1) SAFE_DELETE_VEHICLE(vehPolice1) SAFE_DELETE_VEHICLE(vehDevin) SAFE_DELETE_VEHICLE(vehCutscene) #IF IS_DEBUG_BUILD ENDIF #ENDIF ELSE IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) SET_PED_AS_NO_LONGER_NEEDED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) ENDIF IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) SET_PED_AS_NO_LONGER_NEEDED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) ENDIF IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN]) SET_PED_AS_NO_LONGER_NEEDED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN]) ENDIF IF DOES_ENTITY_EXIST(pedRival1) SET_PED_AS_NO_LONGER_NEEDED(pedRival1) ENDIF IF DOES_ENTITY_EXIST(pedRival2) SET_PED_AS_NO_LONGER_NEEDED(pedRival2) ENDIF IF DOES_ENTITY_EXIST(pedDevin) SET_PED_AS_NO_LONGER_NEEDED(pedDevin) ENDIF IF DOES_ENTITY_EXIST(pedMolly) SET_PED_AS_NO_LONGER_NEEDED(pedMolly) ENDIF IF DOES_ENTITY_EXIST(pedWorker1) SET_PED_AS_NO_LONGER_NEEDED(pedWorker1) ENDIF IF DOES_ENTITY_EXIST(pedWorker2) SET_PED_AS_NO_LONGER_NEEDED(pedWorker2) ENDIF IF DOES_ENTITY_EXIST(vehPlayer) IF IS_ENTITY_A_MISSION_ENTITY(vehPlayer) SET_VEHICLE_AS_NO_LONGER_NEEDED(vehPlayer) ENDIF ENDIF IF DOES_ENTITY_EXIST(vehRival1) SET_VEHICLE_AS_NO_LONGER_NEEDED(vehRival1) ENDIF IF DOES_ENTITY_EXIST(vehPolice1) SET_VEHICLE_AS_NO_LONGER_NEEDED(vehPolice1) ENDIF IF DOES_ENTITY_EXIST(vehDevin) SET_VEHICLE_AS_NO_LONGER_NEEDED(vehDevin) ENDIF IF DOES_ENTITY_EXIST(vehCutscene) SET_VEHICLE_AS_NO_LONGER_NEEDED(vehCutscene) ENDIF ENDIF IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN]) IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN]) TASK_LEAVE_ANY_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN]) ENDIF ENDIF IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) TASK_LEAVE_ANY_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) ENDIF ENDIF IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) TASK_LEAVE_ANY_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) ENDIF ENDIF IF DOES_ENTITY_EXIST(vehPlayer) AND NOT IS_ENTITY_DEAD(vehPlayer) IF IS_ENTITY_A_MISSION_ENTITY(vehPlayer) AND DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehPlayer) SET_VEHICLE_INDICATOR_LIGHTS(vehPlayer, FALSE, FALSE) SET_ENTITY_COLLISION(vehPlayer, TRUE) SET_VEHICLE_AS_NO_LONGER_NEEDED(vehPlayer) ENDIF ENDIF IF DOES_ENTITY_EXIST(vehRival1) AND NOT IS_ENTITY_DEAD(vehRival1) IF IS_ENTITY_A_MISSION_ENTITY(vehRival1) AND DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehRival1) SET_VEHICLE_INDICATOR_LIGHTS(vehRival1, FALSE, FALSE) SET_ENTITY_COLLISION(vehRival1, TRUE) SET_VEHICLE_AS_NO_LONGER_NEEDED(vehRival1) ENDIF ENDIF IF DOES_ENTITY_EXIST(vehRival2) AND NOT IS_ENTITY_DEAD(vehRival2) IF IS_ENTITY_A_MISSION_ENTITY(vehRival2) AND DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehRival2) SET_VEHICLE_INDICATOR_LIGHTS(vehRival2, FALSE, FALSE) SET_ENTITY_COLLISION(vehRival2, TRUE) SET_VEHICLE_AS_NO_LONGER_NEEDED(vehRival2) ENDIF ENDIF IF DOES_ENTITY_EXIST(oiCellphone) SET_OBJECT_AS_NO_LONGER_NEEDED(oiCellphone) ENDIF IF DOES_ENTITY_EXIST(oiDonut1) SET_OBJECT_AS_NO_LONGER_NEEDED(oiDonut1) ENDIF IF DOES_ENTITY_EXIST(oiDonut2) SET_OBJECT_AS_NO_LONGER_NEEDED(oiDonut2) ENDIF IF DOES_ENTITY_EXIST(objID) SET_OBJECT_AS_NO_LONGER_NEEDED(objID) ENDIF IF DOES_ENTITY_EXIST(objRamp) SET_OBJECT_AS_NO_LONGER_NEEDED(objRamp) ENDIF //Vehicle Assets REMOVE_VEHICLE_ASSET(CHEETAH) REMOVE_VEHICLE_ASSET(F620) REMOVE_VEHICLE_ASSET(POLICEB) //Model Hides IF HAS_LABEL_BEEN_TRIGGERED("ChopShopDoors") REMOVE_MODEL_HIDE(<<498.7252, -1317.7551, 28.2534>>, 1.0, PROP_SC1_06_GATE_L, FALSE) REMOVE_MODEL_HIDE(<<494.6904, -1312.0663, 28.2534>>, 1.0, PROP_SC1_06_GATE_R, FALSE) SET_LABEL_AS_TRIGGERED("ChopShopDoors", FALSE) ENDIF //Phone HIDE_ACTIVE_PHONE(FALSE) //Radio SET_FRONTEND_RADIO_ACTIVE(TRUE) //Cams KILL_CHASE_HINT_CAM(localChaseHintCamStruct) RENDER_SCRIPT_CAMS(FALSE, FALSE) DESTROY_ALL_CAMS() STOP_GAMEPLAY_HINT(TRUE) SET_GAME_PAUSES_FOR_STREAMING(TRUE) END_SRL() //New Load Scene IF IS_NEW_LOAD_SCENE_ACTIVE() NEW_LOAD_SCENE_STOP() ENDIF //Stream Volume IF STREAMVOL_IS_VALID(svolCarStealOutro) STREAMVOL_DELETE(svolCarStealOutro) ENDIF //Reset Variables CLEAR_TRIGGERED_LABELS() CLEAR_LOADED_MODELS() CLEAR_LOADED_RECORDINGS() CLEAR_LOADED_ANIM_DICTS() SETTIMERA(0) iCutsceneStage = 0 iDialogueStage = 0 INT i REPEAT COUNT_OF(iDialogueLineCount) i iDialogueLineCount[i] = -1 ENDREPEAT REPEAT COUNT_OF(iDialogueTimer) i iDialogueTimer[i] = 0 ENDREPEAT bInitStage = FALSE bReplaySkip = FALSE bCutsceneSkipped = FALSE CLEAR_MISSION_LOCATE_STUFF(sLocatesData, TRUE) fModifyTopSpeed = 0.0 //Uber CLEANUP_UBER_PLAYBACK(TRUE) //Wanted SET_MAX_WANTED_LEVEL(6) SET_WANTED_LEVEL_MULTIPLIER(1.0) //Emergency Calls RELEASE_SUPPRESSED_EMERGENCY_CALLS() //Ambulances etc. ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE, TRUE) ENABLE_DISPATCH_SERVICE(DT_POLICE_HELICOPTER, TRUE) ENABLE_DISPATCH_SERVICE(DT_FIRE_DEPARTMENT, TRUE) ENABLE_DISPATCH_SERVICE(DT_SWAT_AUTOMOBILE, TRUE) ENABLE_DISPATCH_SERVICE(DT_AMBULANCE_DEPARTMENT, TRUE) SET_ROADS_BACK_TO_ORIGINAL(<<-1928.3759, 4597.9775, 56.0588>> - <<1000.0, 1000.0, 1000.0>>, <<-1928.3759, 4597.9775, 56.0588>> + <<1000.0, 1000.0, 1000.0>>) SET_ROADS_BACK_TO_ORIGINAL(<<2581.105713, 361.805481, 116.468567>> - <<25.0, 25.0, 10.0>>, <<2581.105713, 361.805481, 116.468567>> + <<25.0, 25.0, 10.0>>) //Ped SET_PED_MODEL_IS_SUPPRESSED(S_M_Y_HWAYCOP_01, FALSE) //Vehicle SET_VEHICLE_MODEL_IS_SUPPRESSED(POLICEB, FALSE) SET_VEHICLE_MODEL_IS_SUPPRESSED(F620, FALSE) SET_VEHICLE_MODEL_IS_SUPPRESSED(ENTITYXF, FALSE) SET_VEHICLE_MODEL_IS_SUPPRESSED(CHEETAH, FALSE) //Relationship Groups REMOVE_RELATIONSHIP_GROUP(relGroupBuddy) REMOVE_RELATIONSHIP_GROUP(relGroupEnemy) //SWITCH SET_SELECTOR_PED_BLOCKED(sSelectorPeds, SELECTOR_PED_MICHAEL, FALSE) SET_SELECTOR_PED_BLOCKED(sSelectorPeds, SELECTOR_PED_FRANKLIN, FALSE) SET_SELECTOR_PED_BLOCKED(sSelectorPeds, SELECTOR_PED_TREVOR, FALSE) //Audio Scenes IF IS_AUDIO_SCENE_ACTIVE("CAR_1_DEVIN_DRIVES_AWAY") STOP_AUDIO_SCENE("CAR_1_DEVIN_DRIVES_AWAY") ENDIF IF IS_AUDIO_SCENE_ACTIVE("CAR_1_GET_TO_RACE") STOP_AUDIO_SCENE("CAR_1_GET_TO_RACE") ENDIF IF IS_AUDIO_SCENE_ACTIVE("CAR_1_RACE_MAIN") STOP_AUDIO_SCENE("CAR_1_RACE_MAIN") ENDIF IF IS_AUDIO_SCENE_ACTIVE("CAR_1_RACE_SKIDDING_CARS") STOP_AUDIO_SCENE("CAR_1_RACE_SKIDDING_CARS") ENDIF IF IS_AUDIO_SCENE_ACTIVE("CAR_1_RACE_CARS_FOCUS_CAM") STOP_AUDIO_SCENE("CAR_1_RACE_CARS_FOCUS_CAM") ENDIF IF IS_AUDIO_SCENE_ACTIVE("CAR_1_FRANKLIN_CALLS_MICHAEL") STOP_AUDIO_SCENE("CAR_1_FRANKLIN_CALLS_MICHAEL") ENDIF IF IS_AUDIO_SCENE_ACTIVE("CAR_1_BIKE_CHASE_MAIN") STOP_AUDIO_SCENE("CAR_1_BIKE_CHASE_MAIN") ENDIF IF IS_AUDIO_SCENE_ACTIVE("CAR_1_BIKE_ENTER_TUNNEL") STOP_AUDIO_SCENE("CAR_1_BIKE_ENTER_TUNNEL") ENDIF IF IS_AUDIO_SCENE_ACTIVE("CAR_1_BIKE_PASS_THE_LOST") STOP_AUDIO_SCENE("CAR_1_BIKE_PASS_THE_LOST") ENDIF IF IS_AUDIO_SCENE_ACTIVE("CAR_1_GET_TO_GARAGE") STOP_AUDIO_SCENE("CAR_1_GET_TO_GARAGE") ENDIF IF IS_AUDIO_SCENE_ACTIVE("CAR_1_GARAGE_ARRIVAL") STOP_AUDIO_SCENE("CAR_1_GARAGE_ARRIVAL") ENDIF //Mix Groups IF DOES_ENTITY_EXIST(vehPlayer) REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(vehPlayer) ENDIF IF DOES_ENTITY_EXIST(vehRival1) REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(vehRival1) ENDIF IF DOES_ENTITY_EXIST(vehRival2) REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(vehRival2) ENDIF IF DOES_ENTITY_EXIST(vehPolice1) REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(vehPolice1) ENDIF IF DOES_ENTITY_EXIST(SetPieceCarID[3]) REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(SetPieceCarID[3]) ENDIF IF DOES_ENTITY_EXIST(SetPieceCarID[4]) REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(SetPieceCarID[4]) ENDIF IF DOES_ENTITY_EXIST(SetPieceCarID[5]) REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(SetPieceCarID[5]) ENDIF //Audio PLAY_AUDIO(CAR1_MISSION_FAIL) STOP_STREAM() RELEASE_SCRIPT_AUDIO_BANK() UNREGISTER_SCRIPT_WITH_AUDIO() #IF IS_DEBUG_BUILD IF bAutoSkipping #ENDIF //Z-skips cleanup //Text CLEAR_TEXT() #IF IS_DEBUG_BUILD ENDIF #ENDIF //Interface DISPLAY_RADAR(TRUE) DISPLAY_HUD(TRUE) //Cutscene State SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) CLEANUP_UBER_PLAYBACK() eCarStealSwitchCamState = SWITCH_CAM_IDLE bPassed = FALSE //Reset the bool IF bRestart = FALSE SET_INTERIOR_CAPPED_ON_EXIT(INTERIOR_V_CHOPSHOP, TRUE) ELSE SET_INTERIOR_CAPPED(INTERIOR_V_CHOPSHOP, TRUE) ENDIF IF bRestart = FALSE // url:bugstar:2106915 IF IS_DOOR_REGISTERED_WITH_SYSTEM(iSlidingGarageDoor) REMOVE_DOOR_FROM_SYSTEM(iSlidingGarageDoor) ENDIF TERMINATE_THIS_THREAD() ENDIF ENDPROC //Mission Passed PROC missionPassed() IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME) ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("MollyContact") enumPhonebookPresence ePhonebookPresence SWITCH GET_CURRENT_PLAYER_PED_ENUM() CASE CHAR_MICHAEL ePhonebookPresence = MICHAEL_BOOK BREAK CASE CHAR_FRANKLIN ePhonebookPresence = FRANKLIN_BOOK BREAK CASE CHAR_TREVOR ePhonebookPresence = TREVOR_BOOK BREAK ENDSWITCH //Add Molly to the phonebook. ADD_CONTACT_TO_PHONEBOOK(CHAR_MOLLY, ePhonebookPresence, TRUE) ENDIF CLEAR_TEXT() Mission_Flow_Mission_Passed() bPassed = TRUE MISSION_CLEANUP() ENDPROC //Mission Failed PROC missionFailed() CLEAR_TEXT() IF DOES_ENTITY_EXIST(pedRival1) AND NOT IS_PED_INJURED(pedRival1) IF GET_SCRIPT_TASK_STATUS(pedRival1, SCRIPT_TASK_REACT_AND_FLEE_PED) != PERFORMING_TASK AND GET_SCRIPT_TASK_STATUS(pedRival1, SCRIPT_TASK_VEHICLE_MISSION) != PERFORMING_TASK CLEAR_PED_TASKS(pedRival1) IF DOES_ENTITY_EXIST(vehRival1) AND NOT IS_ENTITY_DEAD(vehRival1) AND IS_PED_IN_VEHICLE(pedRival1, vehRival1) IF DOES_ENTITY_EXIST(vehPlayer) AND NOT IS_ENTITY_DEAD(vehPlayer) TASK_VEHICLE_MISSION(pedRival1, vehRival1, vehPlayer, MISSION_FLEE, 50.0, DRIVINGMODE_PLOUGHTHROUGH, 1.0, 1.0) ENDIF ELSE TASK_REACT_AND_FLEE_PED(pedRival1, PLAYER_PED_ID()) ENDIF SET_PED_KEEP_TASK(pedRival1, TRUE) ENDIF ENDIF IF DOES_ENTITY_EXIST(pedRival2) AND NOT IS_PED_INJURED(pedRival2) IF GET_SCRIPT_TASK_STATUS(pedRival2, SCRIPT_TASK_REACT_AND_FLEE_PED) != PERFORMING_TASK AND GET_SCRIPT_TASK_STATUS(pedRival2, SCRIPT_TASK_VEHICLE_MISSION) != PERFORMING_TASK CLEAR_PED_TASKS(pedRival2) IF DOES_ENTITY_EXIST(vehRival2) AND NOT IS_ENTITY_DEAD(vehRival2) AND IS_PED_IN_VEHICLE(pedRival2, vehRival2) IF DOES_ENTITY_EXIST(vehPlayer) AND NOT IS_ENTITY_DEAD(vehPlayer) TASK_VEHICLE_MISSION(pedRival2, vehRival2, vehPlayer, MISSION_FLEE, 50.0, DRIVINGMODE_PLOUGHTHROUGH, 1.0, 1.0) ENDIF ELSE TASK_REACT_AND_FLEE_PED(pedRival2, PLAYER_PED_ID()) ENDIF SET_PED_KEEP_TASK(pedRival2, TRUE) ENDIF ENDIF //Audio PLAY_AUDIO(CAR1_MISSION_FAIL) IF HAS_LABEL_BEEN_TRIGGERED("MollyContact") //Remove Molly from the phonebook REMOVE_CONTACT_FROM_ALL_PHONEBOOKS(CHAR_MOLLY) ENDIF // hang up phone instantly on fail - for 1643745 IF eMissionObjective = cutSwitch KILL_ANY_CONVERSATION() HANG_UP_AND_PUT_AWAY_PHONE(TRUE) ENDIF SWITCH eMissionFail CASE failDefault MISSION_FLOW_SET_FAIL_REASON("S3_FAIL") BREAK CASE failPlayerDied MISSION_FLOW_SET_FAIL_REASON("S3_FAIL") BREAK CASE failMichaelDied MISSION_FLOW_SET_FAIL_REASON("CMN_MDIED") BREAK CASE failFranklinDied MISSION_FLOW_SET_FAIL_REASON("CMN_FDIED") BREAK CASE failTrevorDied MISSION_FLOW_SET_FAIL_REASON("CMN_TDIED") BREAK CASE failTrevorShot MISSION_FLOW_SET_FAIL_REASON("S3_FSHOTTREVOR") BREAK CASE failDevinDied MISSION_FLOW_SET_FAIL_REASON("S3_FDEVINDIED") BREAK CASE failDevinShot MISSION_FLOW_SET_FAIL_REASON("S3_FSHOTDEVIN") BREAK CASE failDevinCarDestroyed MISSION_FLOW_SET_FAIL_REASON("S3_FDEVINCAR") BREAK CASE failDevinCarDamaged MISSION_FLOW_SET_FAIL_REASON("S3_FSHOTDEVCAR") BREAK CASE failRacerDied MISSION_FLOW_SET_FAIL_REASON("S3_FRACERDIED") BREAK CASE failCarDestroyed MISSION_FLOW_SET_FAIL_REASON("CMN_GENDEST") BREAK CASE failBikeDestroyed MISSION_FLOW_SET_FAIL_REASON("S3_FBIKEDEST") BREAK CASE failBikeDestroyedTrevor MISSION_FLOW_SET_FAIL_REASON("S3_FBIKEDESTT") BREAK CASE failBikeDamagedTrevor MISSION_FLOW_SET_FAIL_REASON("S3_FBIKEDAMT") BREAK CASE failLeftBehind MISSION_FLOW_SET_FAIL_REASON("S3_FLOSTRACE") BREAK CASE failAbandonedBike MISSION_FLOW_SET_FAIL_REASON("S3_FBIKEABAN") BREAK CASE failAbandonedCar MISSION_FLOW_SET_FAIL_REASON("S3_FCARABAN") BREAK CASE failRacerShot MISSION_FLOW_SET_FAIL_REASON("S3_FSHOTRACER") BREAK CASE failRacerSpooked MISSION_FLOW_SET_FAIL_REASON("S3_FSPKDRACER") BREAK CASE failRacerLeft MISSION_FLOW_SET_FAIL_REASON("S3_FRACERLEFT") BREAK CASE failDamagedCar MISSION_FLOW_SET_FAIL_REASON("S3_FDMGCAR") BREAK CASE failStuckCar MISSION_FLOW_SET_FAIL_REASON("S3_FSTUCKCAR") BREAK CASE failRaceDisrupted MISSION_FLOW_SET_FAIL_REASON("S3_FDISRACE") BREAK ENDSWITCH Mission_Flow_Mission_Failed() WHILE NOT GET_MISSION_FLOW_SAFE_TO_CLEANUP() //Maintain anything that could look weird during fade out (e.g. enemies walking off). WAIT(0) ENDWHILE // 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_CLEANUP() // must only take 1 frame and terminate the thread ENDPROC PROC DEATH_CHECKS() IF IS_ENTITY_DEAD(PLAYER_PED_ID()) eMissionFail = failDefault missionFailed() ENDIF IF SAFE_DEATH_CHECK_PED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) eMissionFail = failMichaelDied missionFailed() ENDIF IF SAFE_DEATH_CHECK_PED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) eMissionFail = failTrevorDied missionFailed() ENDIF IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) IF eMissionObjective = stageChase IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_PED_ID(), TRUE) eMissionFail = failTrevorShot missionFailed() ENDIF IF DOES_ENTITY_EXIST(vehPolice1) IF NOT IS_ENTITY_DEAD(vehPolice1) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPolice1) IF NOT IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], vehPolice1) eMissionFail = failTrevorShot missionFailed() ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF SAFE_DEATH_CHECK_PED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN]) eMissionFail = failFranklinDied missionFailed() ENDIF IF DOES_ENTITY_EXIST(pedDevin) AND NOT IS_PED_INJURED(pedDevin) IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(pedDevin, PLAYER_PED_ID()) eMissionFail = failDevinShot missionFailed() ENDIF ENDIF IF SAFE_DEATH_CHECK_PED(pedDevin) eMissionFail = failDevinDied missionFailed() ENDIF IF DOES_ENTITY_EXIST(vehDevin) AND NOT IS_ENTITY_DEAD(vehDevin) IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(vehDevin, PLAYER_PED_ID()) eMissionFail = failDevinCarDamaged missionFailed() ENDIF ENDIF SAFE_DEATH_CHECK_PED(pedMolly) SAFE_DEATH_CHECK_PED(pedWorker1) SAFE_DEATH_CHECK_PED(pedWorker2) IF SAFE_DEATH_CHECK_VEHICLE(vehDevin) eMissionFail = failDevinCarDestroyed missionFailed() ENDIF IF eMissionObjective <= cutBridge IF SAFE_DEATH_CHECK_PED(pedRival1) OR SAFE_DEATH_CHECK_PED(pedRival2) #IF IS_DEBUG_BUILD VECTOR vDebugVector vDebugVector = GET_ENTITY_COORDS(pedRival1, FALSE) PRINTLN("Racer 1 Injured[", IS_ENTITY_DEAD(pedRival1), "] at coords <<", vDebugVector.X, ", ", vDebugVector.Y, ", ", vDebugVector.Z, ">>") vDebugVector = GET_ENTITY_COORDS(pedRival2, FALSE) PRINTLN("Racer 2 Injured[", IS_ENTITY_DEAD(pedRival2), "] at coords <<", vDebugVector.X, ", ", vDebugVector.Y, ", ", vDebugVector.Z, ">>") #ENDIF eMissionFail = failRacerDied missionFailed() ENDIF IF DOES_ENTITY_EXIST(pedRival1) AND HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(pedRival1, PLAYER_PED_ID(), TRUE) eMissionFail = failRacerShot missionFailed() ENDIF IF DOES_ENTITY_EXIST(pedRival1) AND (IS_BULLET_IN_AREA(GET_ENTITY_COORDS(pedRival1), 10.0) OR IS_EXPLOSION_IN_SPHERE(EXP_TAG_DONTCARE, GET_ENTITY_COORDS(pedRival1), 20.0) OR IS_PED_BEING_JACKED(pedRival1) OR DOES_ENTITY_EXIST(vehRival1) AND (IS_PED_TRYING_TO_ENTER_A_LOCKED_VEHICLE(PLAYER_PED_ID()) AND GET_VEHICLE_PED_IS_USING(PLAYER_PED_ID()) = vehRival1) OR HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(pedRival1, PLAYER_PED_ID(), TRUE) OR (DOES_ENTITY_EXIST(vehRival1) AND HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(vehRival1, PLAYER_PED_ID(), FALSE)) OR (IS_PED_SHOOTING(PLAYER_PED_ID()) AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(pedRival1)) < 25.0)) eMissionFail = failRacerSpooked missionFailed() ENDIF IF DOES_ENTITY_EXIST(pedRival2) AND HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(pedRival2, PLAYER_PED_ID(), TRUE) eMissionFail = failRacerShot missionFailed() ENDIF IF DOES_ENTITY_EXIST(pedRival2) AND (IS_BULLET_IN_AREA(GET_ENTITY_COORDS(pedRival2), 10.0) OR IS_EXPLOSION_IN_SPHERE(EXP_TAG_DONTCARE, GET_ENTITY_COORDS(pedRival2), 20.0) OR IS_PED_BEING_JACKED(pedRival2) OR DOES_ENTITY_EXIST(vehRival2) AND (IS_PED_TRYING_TO_ENTER_A_LOCKED_VEHICLE(PLAYER_PED_ID()) AND GET_VEHICLE_PED_IS_USING(PLAYER_PED_ID()) = vehRival2) OR HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(pedRival2, PLAYER_PED_ID(), TRUE) OR (DOES_ENTITY_EXIST(vehRival2) AND HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(vehRival2, PLAYER_PED_ID(), FALSE)) OR (IS_PED_SHOOTING(PLAYER_PED_ID()) AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(pedRival2)) < 25.0)) eMissionFail = failRacerSpooked missionFailed() ENDIF ENDIF IF SAFE_DEATH_CHECK_VEHICLE(vehPlayer) IF IS_VEHICLE_PERMANENTLY_STUCK(vehPlayer) eMissionFail = failStuckCar ELSE eMissionFail = failCarDestroyed ENDIF missionFailed() ENDIF IF SAFE_DEATH_CHECK_VEHICLE(vehRival1) IF IS_VEHICLE_PERMANENTLY_STUCK(vehRival1) eMissionFail = failStuckCar ELSE eMissionFail = failCarDestroyed ENDIF missionFailed() ENDIF IF SAFE_DEATH_CHECK_VEHICLE(vehRival2) IF IS_VEHICLE_PERMANENTLY_STUCK(vehRival2) eMissionFail = failStuckCar ELSE eMissionFail = failCarDestroyed ENDIF missionFailed() ENDIF IF DOES_ENTITY_EXIST(vehPlayer) AND ((HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(vehPlayer, PLAYER_PED_ID(), TRUE) AND GET_ENTITY_HEALTH(vehPlayer) < 700) OR (IS_VEHICLE_TYRE_BURST(vehPlayer, SC_WHEEL_CAR_FRONT_LEFT) OR IS_VEHICLE_TYRE_BURST(vehPlayer, SC_WHEEL_CAR_FRONT_RIGHT) OR IS_VEHICLE_TYRE_BURST(vehPlayer, SC_WHEEL_CAR_REAR_LEFT) OR IS_VEHICLE_TYRE_BURST(vehPlayer, SC_WHEEL_CAR_REAR_RIGHT))) eMissionFail = failDamagedCar missionFailed() ENDIF IF DOES_ENTITY_EXIST(vehRival1) AND ((HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(vehRival1, PLAYER_PED_ID(), TRUE) AND GET_ENTITY_HEALTH(vehRival1) < 700) OR (IS_VEHICLE_TYRE_BURST(vehRival1, SC_WHEEL_CAR_FRONT_LEFT) OR IS_VEHICLE_TYRE_BURST(vehRival1, SC_WHEEL_CAR_FRONT_RIGHT) OR IS_VEHICLE_TYRE_BURST(vehRival1, SC_WHEEL_CAR_REAR_LEFT) OR IS_VEHICLE_TYRE_BURST(vehRival1, SC_WHEEL_CAR_REAR_RIGHT))) eMissionFail = failDamagedCar missionFailed() ENDIF IF DOES_ENTITY_EXIST(vehRival2) AND ((HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(vehRival2, PLAYER_PED_ID(), TRUE) AND GET_ENTITY_HEALTH(vehRival2) < 700) OR (IS_VEHICLE_TYRE_BURST(vehRival2, SC_WHEEL_CAR_FRONT_LEFT) OR IS_VEHICLE_TYRE_BURST(vehRival2, SC_WHEEL_CAR_FRONT_RIGHT) OR IS_VEHICLE_TYRE_BURST(vehRival2, SC_WHEEL_CAR_REAR_LEFT) OR IS_VEHICLE_TYRE_BURST(vehRival2, SC_WHEEL_CAR_REAR_RIGHT))) eMissionFail = failDamagedCar missionFailed() ENDIF // SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE) // // IF DOES_ENTITY_EXIST(vehRival1) // IF NOT IS_ENTITY_DEAD(vehRival1) // DRAW_DEBUG_LINE_WITH_TWO_COLOURS(GET_ENTITY_COORDS(vehRival1), GET_ENTITY_COORDS(vehRival1) + <<0.0, 0.0, 2.0>>, 0, 0, 255, 255, 0, 0, 0, 0) // TEXT_LABEL txtLabel // txtLabel = "vehRival1" // DRAW_DEBUG_TEXT(txtLabel, GET_ENTITY_COORDS(vehRival1) + <<0.0, 0.0, 2.5>>) // TEXT_LABEL txtLabel2 // txtLabel2 = GET_ENTITY_HEALTH(vehRival1) // txtLabel2 += "/" // txtLabel2 += ROUND(GET_VEHICLE_ENGINE_HEALTH(vehRival1)) // txtLabel2 += "/" // txtLabel2 += ROUND(GET_VEHICLE_PETROL_TANK_HEALTH(vehRival1)) // DRAW_DEBUG_TEXT(txtLabel2, GET_ENTITY_COORDS(vehRival1) + <<0.0, 0.0, 2.25>>) // ENDIF // ENDIF // // IF DOES_ENTITY_EXIST(vehRival2) // IF NOT IS_ENTITY_DEAD(vehRival2) // DRAW_DEBUG_LINE_WITH_TWO_COLOURS(GET_ENTITY_COORDS(vehRival2), GET_ENTITY_COORDS(vehRival2) + <<0.0, 0.0, 2.0>>, 0, 0, 255, 255, 0, 0, 0, 0) // TEXT_LABEL txtLabel // txtLabel = "vehRival2" // DRAW_DEBUG_TEXT(txtLabel, GET_ENTITY_COORDS(vehRival2) + <<0.0, 0.0, 2.5>>) // TEXT_LABEL txtLabel2 // txtLabel2 = GET_ENTITY_HEALTH(vehRival2) // txtLabel2 += "/" // txtLabel2 += ROUND(GET_VEHICLE_ENGINE_HEALTH(vehRival2)) // txtLabel2 += "/" // txtLabel2 += ROUND(GET_VEHICLE_PETROL_TANK_HEALTH(vehRival2)) // DRAW_DEBUG_TEXT(txtLabel2, GET_ENTITY_COORDS(vehRival2) + <<0.0, 0.0, 2.25>>) // ENDIF // ENDIF IF SAFE_DEATH_CHECK_VEHICLE(vehPolice1) IF eMissionObjective < stageDriveHome eMissionFail = failBikeDestroyedTrevor missionFailed() ENDIF ENDIF IF DOES_ENTITY_EXIST(vehPolice1) AND NOT IS_ENTITY_DEAD(vehPolice1) IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(vehPolice1, PLAYER_PED_ID(), FALSE) eMissionFail = failBikeDamagedTrevor missionFailed() ENDIF ENDIF IF SAFE_DEATH_CHECK_VEHICLE(vehPolice2) IF eMissionObjective < stageDriveHome eMissionFail = failBikeDestroyed missionFailed() ENDIF ENDIF //Left Behind IF eMissionObjective = stageArrive IF IS_SCREEN_FADED_IN() IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehPlayer)) >= 150 eMissionFail = failAbandonedCar missionFailed() ENDIF ENDIF ENDIF IF eMissionObjective = stageRace IF DOES_ENTITY_EXIST(vehRival1) AND DOES_ENTITY_EXIST(vehRival2) IF IS_SCREEN_FADED_IN() IF (((IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) AND GET_SCRIPT_TASK_STATUS(pedRival1, SCRIPT_TASK_VEHICLE_MISSION) != PERFORMING_TASK) AND GET_TIME_POSITION_IN_RECORDING(vehRival1) < 47936.000) AND ((IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival2) AND GET_SCRIPT_TASK_STATUS(pedRival2, SCRIPT_TASK_VEHICLE_MISSION) != PERFORMING_TASK) AND GET_TIME_POSITION_IN_RECORDING(vehRival2) < 70000.000) AND (GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehRival1)) >= 300 OR GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehRival2)) >= 300)) eMissionFail = failLeftBehind missionFailed() ENDIF IF (GET_SCRIPT_TASK_STATUS(pedRival1, SCRIPT_TASK_VEHICLE_MISSION) != PERFORMING_TASK AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehRival1)) >= 600) OR (GET_SCRIPT_TASK_STATUS(pedRival2, SCRIPT_TASK_VEHICLE_MISSION) != PERFORMING_TASK AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehRival2)) >= 600) eMissionFail = failLeftBehind missionFailed() ENDIF IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehPlayer)) >= 75 eMissionFail = failAbandonedCar missionFailed() ENDIF UPDATE_CHASE_BLIP(blipRival1, vehRival1, 250.0) UPDATE_CHASE_BLIP(blipRival2, vehRival2, 250.0) ENDIF ENDIF ENDIF IF eMissionObjective = stageChase IF DOES_ENTITY_EXIST(vehPlayer) AND DOES_ENTITY_EXIST(vehRival1) AND DOES_ENTITY_EXIST(vehRival2) AND DOES_ENTITY_EXIST(vehPolice1) AND DOES_ENTITY_EXIST(vehPolice2) IF IS_SCREEN_FADED_IN() IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPlayer) AND IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) AND IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival2) AND IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPolice1)) OR HAS_LABEL_BEEN_TRIGGERED("S3_STOP") IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehRival1)) >= 600 OR GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehRival2)) >= 600 OR GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehPolice1)) >= 300 OR GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehPolice2)) >= 300 eMissionFail = failLeftBehind missionFailed() ENDIF IF DOES_ENTITY_EXIST(vehPolice2) IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehPolice2)) >= 75 eMissionFail = failAbandonedBike missionFailed() ENDIF ENDIF ENDIF UPDATE_CHASE_BLIP(blipPlayer, vehPlayer, 500.0) UPDATE_CHASE_BLIP(blipRival1, vehRival1, 500.0) UPDATE_CHASE_BLIP(blipRival2, vehRival2, 500.0) UPDATE_CHASE_BLIP(blipPolice, vehPolice1, 250.0) UPDATE_CHASE_BLIP(blipPolice2, vehPolice2, 250.0) ENDIF ENDIF ENDIF ENDPROC PROC WAIT_WITH_DEATH_CHECKS(INT iWait = 0) INT iGameTime = GET_GAME_TIMER() + iWait WHILE GET_GAME_TIMER() <= iGameTime WAIT(0) //Video Recorder REPLAY_CHECK_FOR_EVENT_THIS_FRAME("M_IFoughtTheLaw") DEATH_CHECKS() ENDWHILE ENDPROC PROC LOAD_SCENE_ADV(VECTOR vCoords, FLOAT fRadius = 20.0) NEW_LOAD_SCENE_START_SPHERE(vCoords, fRadius) INT iTimeOut = GET_GAME_TIMER() + 20000 WHILE IS_NEW_LOAD_SCENE_ACTIVE() AND NOT IS_NEW_LOAD_SCENE_LOADED() AND GET_GAME_TIMER() < iTimeOut #IF IS_DEBUG_BUILD PRINTLN("NEW_LOAD_SCENE_START_SPHERE(", vCoords.X, ", ", vCoords.Y, ", ", vCoords.Z, ", ", fRadius, ")...") #ENDIF PRINTLN("GET_GAME_TIMER() = ", GET_GAME_TIMER(), " | iTimeOut = ", iTimeOut) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE #IF IS_DEBUG_BUILD IF GET_GAME_TIMER() > iTimeOut SCRIPT_ASSERT("NEW_LOAD_SCENE_START_SPHERE timed out, see log for details.") ENDIF #ENDIF NEW_LOAD_SCENE_STOP() ENDPROC PROC CREATE_CONVERSATION_ADV(STRING sLabel, enumConversationPriority eConvPriority = CONV_PRIORITY_MEDIUM, BOOL bOnce = TRUE, enumSubtitlesState ShouldDisplaySubtitles = DISPLAY_SUBTITLES, enumBriefScreenState ShouldAddToBriefScreen = DO_ADD_TO_BRIEF_SCREEN) IF NOT HAS_LABEL_BEEN_TRIGGERED(sLabel) WHILE NOT CREATE_CONVERSATION(sPedsForConversation, sConversationBlock, sLabel, eConvPriority, ShouldDisplaySubtitles, ShouldAddToBriefScreen) IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE() ENDIF PRINTSTRING("TRYING TO PLAY ") PRINTSTRING(sLabel) PRINTSTRING(" CONVERSATION") PRINTNL() WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SET_LABEL_AS_TRIGGERED(sLabel, bOnce) ENDIF ENDPROC PROC CREATE_CONVERSATION_FROM_SPECIFIC_LINE_ADV(STRING sLabel, STRING sLabelSub, enumConversationPriority eConvPriority = CONV_PRIORITY_MEDIUM, BOOL bOnce = TRUE) IF NOT HAS_LABEL_BEEN_TRIGGERED(sLabelSub) WHILE NOT CREATE_CONVERSATION_FROM_SPECIFIC_LINE(sPedsForConversation, sConversationBlock, sLabel, sLabelSub, eConvPriority) IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE() ENDIF PRINTSTRING("TRYING TO PLAY ") PRINTSTRING(sLabel) PRINTSTRING(" CONVERSATION") PRINTNL() WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SET_LABEL_AS_TRIGGERED(sLabel, bOnce) ENDIF ENDPROC PROC PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(STRING sLabel, STRING sLabelSub, enumConversationPriority eConvPriority = CONV_PRIORITY_MEDIUM, BOOL bOnce = TRUE) IF NOT HAS_LABEL_BEEN_TRIGGERED(sLabelSub) WHILE NOT PLAY_SINGLE_LINE_FROM_CONVERSATION(sPedsForConversation, sConversationBlock, sLabel, sLabelSub, eConvPriority) IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE() WAIT_WITH_DEATH_CHECKS(0) ENDIF PRINTSTRING("TRYING TO PLAY ") PRINTSTRING(sLabel) PRINTSTRING(", ") PRINTSTRING(sLabelSub) PRINTSTRING(" CONVERSATION") PRINTNL() ENDWHILE SET_LABEL_AS_TRIGGERED(sLabelSub, bOnce) ENDIF ENDPROC //Mid Mission Replay ENUM MissionReplay replayStart, // replayDriveTo, replayGarage, replayChase, replayDriveHome, replayPass ENDENUM PROC MISSION_REPLAY(MissionReplay eMissionReplay = replayStart) //- Replay Specific Position VECTOR vStartReplay FLOAT fStartReplay SWITCH eMissionReplay CASE replayStart vStartReplay = vPlayerStart fStartReplay = fPlayerStart BREAK CASE replayGarage vStartReplay = <<2570.5767, 364.8711, 107.4569>> fStartReplay = 357.8433 BREAK CASE replayChase vStartReplay = <<2686.8792, 5131.9077, 43.8515>> fStartReplay = 151.6033 BREAK CASE replayDriveHome vStartReplay = <<-1923.0222, 4605.4956, 56.0558>> fStartReplay = 135.0792 BREAK CASE replayPass vStartReplay = <<492.7253, -1311.5626, 28.2627>> fStartReplay = 293.8439 BREAK ENDSWITCH START_REPLAY_SETUP(vStartReplay, fStartReplay, FALSE) END_REPLAY_SETUP(NULL, VS_DRIVER, FALSE) SWITCH eMissionReplay CASE replayStart CLEAR_AREA(vPlayerStart, 100.0, TRUE) SET_PED_POSITION(PLAYER_PED_ID(), vPlayerStart, fPlayerStart) //Load Scene //LOAD_SCENE_ADV(GET_ENTITY_COORDS(PLAYER_PED_ID())) eMissionObjective = stageArrive BREAK // CASE replayDriveTo // SET_PED_POSITION(PLAYER_PED_ID(), <<1801.1298, 1915.6359, 77.7007>>, 348.5779) // SET_VEHICLE_FORWARD_SPEED(vehPlayer, 20.0) // SET_VEHICLE_ENGINE_ON(vehPlayer, TRUE, TRUE) // // eMissionObjective = stageArrive // BREAK CASE replayGarage //Outfits/Weapons SET_PLAYER_PED_DATA_IN_CUTSCENES(FALSE, TRUE) EMPTY_VEHICLE_OF_PEDS(vehPlayer) SAFE_DELETE_VEHICLE(vehPlayer) IF GET_REPLAY_CHECKPOINT_VEHICLE_MODEL() = F620 CREATE_VEHICLE_FOR_REPLAY(vehPlayer, <<2570.5767, 364.8711, 107.4569>>, 357.8433, TRUE, TRUE, FALSE, FALSE, TRUE, F620, 0) SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehPlayer, TRUE) SET_VEHICLE_HAS_STRONG_AXLES(vehPlayer, TRUE) ELSE REQUEST_MODEL(F620) WHILE NOT HAS_MODEL_LOADED(F620) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SPAWN_VEHICLE(vehPlayer, F620, <<2570.5767, 364.8711, 107.4569>>, 357.8433, 0) SET_VEHICLE_HAS_STRONG_AXLES(vehPlayer, TRUE) SET_VEHICLE_COLOURS(vehPlayer, 43, 43) SET_VEHICLE_EXTRA_COLOURS(vehPlayer, 48, 48) SET_MODEL_AS_NO_LONGER_NEEDED(F620) ENDIF //vehRival1 - ENTITYXF REQUEST_MODEL(ENTITYXF) WHILE NOT HAS_MODEL_LOADED(ENTITYXF) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE vehRival1 = CREATE_CAR_STEAL_STRAND_CAR(ENTITYXF, vRival1Start, fRival1Start) //SPAWN_VEHICLE(vehRival1, ENTITYXF, vRival1Start, fRival1Start, CARSTEAL_COLOURS_ENTITYXF) SET_VEHICLE_AS_RESTRICTED(vehRival1, 0) SET_VEHICLE_HAS_STRONG_AXLES(vehRival1, TRUE) SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehRival1, TRUE) SET_VEHICLE_DOORS_LOCKED(vehRival1, VEHICLELOCK_LOCKED) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehRival1, SC_DOOR_FRONT_LEFT, FALSE) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehRival1, SC_DOOR_FRONT_RIGHT, FALSE) SET_MODEL_AS_NO_LONGER_NEEDED(ENTITYXF) //pedRival1 - IG_CAR3GUY1 REQUEST_MODEL(IG_CAR3GUY1) WHILE NOT HAS_MODEL_LOADED(IG_CAR3GUY1) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SPAWN_PED(pedRival1, IG_CAR3GUY1, GET_ENTITY_COORDS(vehRival1)) SET_PED_INTO_VEHICLE(pedRival1, vehRival1, VS_DRIVER) SET_PED_RELATIONSHIP_GROUP_HASH(pedRival1, relGroupEnemy) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedRival1, TRUE) SET_MODEL_AS_NO_LONGER_NEEDED(IG_CAR3GUY1) //vehRival2 - CHEETAH REQUEST_MODEL(CHEETAH) WHILE NOT HAS_MODEL_LOADED(CHEETAH) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE vehRival2 = CREATE_CAR_STEAL_STRAND_CAR(CHEETAH, vRival2Start, fRival2Start) //SPAWN_VEHICLE(vehRival2, CHEETAH, vRival2Start, fRival2Start, CARSTEAL_COLOURS_CHEETAH) SET_VEHICLE_AS_RESTRICTED(vehRival2, 1) SET_VEHICLE_HAS_STRONG_AXLES(vehRival2, TRUE) SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehRival2, TRUE) SET_VEHICLE_DOORS_LOCKED(vehRival2, VEHICLELOCK_LOCKED) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehRival2, SC_DOOR_FRONT_LEFT, FALSE) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehRival2, SC_DOOR_FRONT_RIGHT, FALSE) SET_MODEL_AS_NO_LONGER_NEEDED(CHEETAH) //pedRival2 - IG_CAR3GUY2 REQUEST_MODEL(IG_CAR3GUY2) WHILE NOT HAS_MODEL_LOADED(IG_CAR3GUY2) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SPAWN_PED(pedRival2, IG_CAR3GUY2, GET_ENTITY_COORDS(vehRival2)) SET_PED_COMPONENT_VARIATION(pedRival2, PED_COMP_HEAD, 1, 0) SET_PED_COMPONENT_VARIATION(pedRival2, PED_COMP_TORSO, 0, 0) SET_PED_COMPONENT_VARIATION(pedRival2, PED_COMP_LEG, 0, 0) SET_PED_PROP_INDEX(pedRival2, ANCHOR_EYES, 0) SET_PED_INTO_VEHICLE(pedRival2, vehRival2, VS_DRIVER) SET_PED_RELATIONSHIP_GROUP_HASH(pedRival2, relGroupEnemy) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedRival2, TRUE) SET_MODEL_AS_NO_LONGER_NEEDED(IG_CAR3GUY2) ADD_PED_FOR_DIALOGUE(sPedsForConversation, 4, pedRival1, "CST3RACER1") ADD_PED_FOR_DIALOGUE(sPedsForConversation, 5, pedRival2, "CST3RACER2") IF g_bShitskipAccepted = TRUE eMissionObjective = cutRace ELSE eMissionObjective = stageRace ENDIF BREAK CASE replayChase //Outfits/Weapons SET_PLAYER_PED_DATA_IN_CUTSCENES(FALSE, TRUE) CLEAR_PED_PROP(PLAYER_PED_ID(), ANCHOR_EARS) CLEAR_PED_PROP(PLAYER_PED_ID(), ANCHOR_HEAD) REMOVE_PED_HELMET(PLAYER_PED_ID(), TRUE) SET_PED_HELMET_PROP_INDEX(PLAYER_PED_ID(), -1) EMPTY_VEHICLE_OF_PEDS(vehPlayer) SAFE_DELETE_VEHICLE(vehPlayer) IF GET_REPLAY_CHECKPOINT_VEHICLE_MODEL() = F620 CREATE_VEHICLE_FOR_REPLAY(vehPlayer, <<2716.9924, 4787.3481, 43.5334>>, 11.8873, TRUE, TRUE, FALSE, FALSE, TRUE, F620, 0) SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehPlayer, TRUE) SET_VEHICLE_HAS_STRONG_AXLES(vehPlayer, TRUE) ELSE REQUEST_MODEL(F620) WHILE NOT HAS_MODEL_LOADED(F620) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SPAWN_VEHICLE(vehPlayer, F620, <<2716.9924, 4787.3481, 43.5334>>, 11.8873, 0) SET_VEHICLE_HAS_STRONG_AXLES(vehPlayer, TRUE) SET_VEHICLE_COLOURS(vehPlayer, 43, 43) SET_VEHICLE_EXTRA_COLOURS(vehPlayer, 48, 48) SET_MODEL_AS_NO_LONGER_NEEDED(F620) ENDIF //vehRival1 - ENTITYXF REQUEST_MODEL(ENTITYXF) WHILE NOT HAS_MODEL_LOADED(ENTITYXF) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE vehRival1 = CREATE_CAR_STEAL_STRAND_CAR(ENTITYXF, vRival1Start, fRival1Start) //SPAWN_VEHICLE(vehRival1, ENTITYXF, vRival1Start, fRival1Start, CARSTEAL_COLOURS_ENTITYXF) SET_VEHICLE_AS_RESTRICTED(vehRival1, 0) SET_VEHICLE_HAS_STRONG_AXLES(vehRival1, TRUE) SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehRival1, TRUE) SET_VEHICLE_DOORS_LOCKED(vehRival1, VEHICLELOCK_LOCKED) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehRival1, SC_DOOR_FRONT_LEFT, FALSE) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehRival1, SC_DOOR_FRONT_RIGHT, FALSE) SET_MODEL_AS_NO_LONGER_NEEDED(ENTITYXF) //pedRival1 - IG_CAR3GUY1 REQUEST_MODEL(IG_CAR3GUY1) WHILE NOT HAS_MODEL_LOADED(IG_CAR3GUY1) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SPAWN_PED(pedRival1, IG_CAR3GUY1, GET_ENTITY_COORDS(vehRival1)) SET_PED_INTO_VEHICLE(pedRival1, vehRival1, VS_DRIVER) SET_PED_RELATIONSHIP_GROUP_HASH(pedRival1, relGroupEnemy) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedRival1, TRUE) SET_MODEL_AS_NO_LONGER_NEEDED(IG_CAR3GUY1) //vehRival2 - CHEETAH REQUEST_MODEL(CHEETAH) WHILE NOT HAS_MODEL_LOADED(CHEETAH) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE vehRival2 = CREATE_CAR_STEAL_STRAND_CAR(CHEETAH, vRival2Start, fRival2Start) //SPAWN_VEHICLE(vehRival2, CHEETAH, vRival2Start, fRival2Start, CARSTEAL_COLOURS_CHEETAH) SET_VEHICLE_AS_RESTRICTED(vehRival2, 1) SET_VEHICLE_HAS_STRONG_AXLES(vehRival2, TRUE) SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehRival2, TRUE) SET_VEHICLE_DOORS_LOCKED(vehRival2, VEHICLELOCK_LOCKED) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehRival2, SC_DOOR_FRONT_LEFT, FALSE) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehRival2, SC_DOOR_FRONT_RIGHT, FALSE) SET_MODEL_AS_NO_LONGER_NEEDED(CHEETAH) //pedRival2 - IG_CAR3GUY2 REQUEST_MODEL(IG_CAR3GUY2) WHILE NOT HAS_MODEL_LOADED(IG_CAR3GUY2) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SPAWN_PED(pedRival2, IG_CAR3GUY2, GET_ENTITY_COORDS(vehRival2)) SET_PED_COMPONENT_VARIATION(pedRival2, PED_COMP_HEAD, 1, 0) SET_PED_COMPONENT_VARIATION(pedRival2, PED_COMP_TORSO, 0, 0) SET_PED_COMPONENT_VARIATION(pedRival2, PED_COMP_LEG, 0, 0) SET_PED_PROP_INDEX(pedRival2, ANCHOR_EYES, 0) SET_PED_INTO_VEHICLE(pedRival2, vehRival2, VS_DRIVER) SET_PED_RELATIONSHIP_GROUP_HASH(pedRival2, relGroupEnemy) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedRival2, TRUE) SET_MODEL_AS_NO_LONGER_NEEDED(IG_CAR3GUY2) ADD_PED_FOR_DIALOGUE(sPedsForConversation, 4, pedRival1, "CST3RACER1") ADD_PED_FOR_DIALOGUE(sPedsForConversation, 5, pedRival2, "CST3RACER2") //vehPolice1 - POLICEB REQUEST_MODEL(POLICEB) WHILE NOT HAS_MODEL_LOADED(POLICEB) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SAFE_DELETE_VEHICLE(vehPolice1) SPAWN_VEHICLE(vehPolice1, POLICEB, vPoliceStart1, fPoliceStart1) SET_VEHICLE_AS_RESTRICTED(vehPolice1, 2) SET_VEHICLE_HAS_STRONG_AXLES(vehPolice1, TRUE) //sSelectorPeds.pedID[SELECTOR_PED_TREVOR] - GET_PLAYER_PED_MODEL(CHAR_TREVOR) REQUEST_MODEL(GET_PLAYER_PED_MODEL(CHAR_TREVOR)) WHILE NOT HAS_MODEL_LOADED(GET_PLAYER_PED_MODEL(CHAR_TREVOR)) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SPAWN_PLAYER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], CHAR_TREVOR, vTrevorStartPos, fTrevorStartHeading) //SET_PED_PROP_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], ANCHOR_HEAD, 5) // SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PED_COMP_HAIR, 3, 0) // SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PED_COMP_TORSO, 3, 0) // SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PED_COMP_LEG, 3, 0) IF NOT IS_PED_WEARING_HELMET(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) SET_PED_HELMET_PROP_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], 5) SET_PED_HELMET_TEXTURE_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], 0) ENDIF WHILE NOT SET_PED_COMP_ITEM_CURRENT_SP(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], COMP_TYPE_OUTFIT, OUTFIT_P2_HIGHWAY_PATROL, FALSE) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SET_PLAYER_HAS_CHANGE_CLOTHES_ON_MISSION(CHAR_TREVOR) //Set that the player has changed clothes on mission SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], relGroupBuddy) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE) SET_PED_CONFIG_FLAG(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PCF_WillFlyThroughWindscreen, FALSE) IF NOT IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], vehPolice1) SET_PED_INTO_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], vehPolice1) ENDIF SET_MODEL_AS_NO_LONGER_NEEDED(GET_PLAYER_PED_MODEL(CHAR_TREVOR)) //vehPolice2 - POLICEB SAFE_DELETE_VEHICLE(vehPolice2) SPAWN_VEHICLE(vehPolice2, POLICEB, vPoliceStart2, fPoliceStart2) SET_VEHICLE_AS_RESTRICTED(vehPolice2, 3) SET_VEHICLE_HAS_STRONG_AXLES(vehPolice2, TRUE) SET_MODEL_AS_NO_LONGER_NEEDED(POLICEB) //sSelectorPeds.pedID[SELECTOR_PED_TREVOR] - GET_PLAYER_PED_MODEL(CHAR_TREVOR) REQUEST_MODEL(GET_PLAYER_PED_MODEL(CHAR_MICHAEL)) WHILE NOT HAS_MODEL_LOADED(GET_PLAYER_PED_MODEL(CHAR_MICHAEL)) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SPAWN_PLAYER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], CHAR_MICHAEL, vMichaelStartPos, fMichaelStartHeading) //SET_PED_PROP_INDEX(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], ANCHOR_HEAD, 4) // SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PED_COMP_TORSO, 6, 0) // SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PED_COMP_LEG, 6, 0) WHILE NOT SET_PED_COMP_ITEM_CURRENT_SP(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], COMP_TYPE_OUTFIT, OUTFIT_P0_HIGHWAY_PATROL, FALSE) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SET_PLAYER_HAS_CHANGE_CLOTHES_ON_MISSION(CHAR_MICHAEL) //Set that the player has changed clothes on mission SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], relGroupBuddy) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE) SET_PED_CONFIG_FLAG(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PCF_WillFlyThroughWindscreen, FALSE) IF NOT IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], vehPolice2) SET_PED_INTO_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], vehPolice2) ENDIF SET_MODEL_AS_NO_LONGER_NEEDED(GET_PLAYER_PED_MODEL(CHAR_MICHAEL)) ADD_PED_FOR_DIALOGUE(sPedsForConversation, 1, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], "MICHAEL") ADD_PED_FOR_DIALOGUE(sPedsForConversation, 2, sSelectorPeds.pedID[SELECTOR_PED_TREVOR], "TREVOR") IF g_bShitskipAccepted = TRUE eMissionObjective = cutSwitch ELSE MAKE_SELECTOR_PED_SELECTION(sSelectorPeds, SELECTOR_PED_MICHAEL) WHILE NOT TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE eMissionObjective = stageChase ENDIF BREAK CASE replayDriveHome //Outfits/Weapons SET_PLAYER_PED_DATA_IN_CUTSCENES(FALSE, TRUE) EMPTY_VEHICLE_OF_PEDS(vehPlayer) SAFE_DELETE_VEHICLE(vehPlayer) IF GET_REPLAY_CHECKPOINT_VEHICLE_MODEL() = F620 CREATE_VEHICLE_FOR_REPLAY(vehPlayer, <<-1912.547, 4616.3615, 56.0427>>, 134.6697, TRUE, TRUE, FALSE, FALSE, TRUE, F620, 0) SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehPlayer, TRUE) SET_VEHICLE_HAS_STRONG_AXLES(vehPlayer, TRUE) ELSE REQUEST_MODEL(F620) WHILE NOT HAS_MODEL_LOADED(F620) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SPAWN_VEHICLE(vehPlayer, F620, <<-1912.547, 4616.3615, 56.0427>>, 134.6697, 0) SET_VEHICLE_HAS_STRONG_AXLES(vehPlayer, TRUE) SET_VEHICLE_COLOURS(vehPlayer, 43, 43) SET_VEHICLE_EXTRA_COLOURS(vehPlayer, 48, 48) SET_MODEL_AS_NO_LONGER_NEEDED(F620) ENDIF //Request Models REQUEST_MODEL(POLICEB) REQUEST_MODEL(GET_PLAYER_PED_MODEL(CHAR_TREVOR)) REQUEST_MODEL(GET_PLAYER_PED_MODEL(CHAR_MICHAEL)) REQUEST_MODEL(ENTITYXF) REQUEST_MODEL(IG_CAR3GUY1) REQUEST_MODEL(CHEETAH) REQUEST_MODEL(IG_CAR3GUY2) //vehPolice1 - POLICEB WHILE NOT HAS_MODEL_LOADED(POLICEB) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SPAWN_VEHICLE(vehPolice1, POLICEB, vPoliceStart1, fPoliceStart1) SET_VEHICLE_AS_RESTRICTED(vehPolice1, 2) SET_VEHICLE_HAS_STRONG_AXLES(vehPolice1, TRUE) //sSelectorPeds.pedID[SELECTOR_PED_TREVOR] - GET_PLAYER_PED_MODEL(CHAR_TREVOR) WHILE NOT HAS_MODEL_LOADED(GET_PLAYER_PED_MODEL(CHAR_TREVOR)) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SPAWN_PLAYER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], CHAR_TREVOR, vTrevorStartPos, fTrevorStartHeading) //SET_PED_PROP_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], ANCHOR_HEAD, 5) // SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PED_COMP_HAIR, 3, 0) // SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PED_COMP_TORSO, 3, 0) // SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PED_COMP_LEG, 3, 0) IF NOT IS_PED_WEARING_HELMET(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) SET_PED_HELMET_PROP_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], 5) SET_PED_HELMET_TEXTURE_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], 0) ENDIF WHILE NOT SET_PED_COMP_ITEM_CURRENT_SP(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], COMP_TYPE_OUTFIT, OUTFIT_P2_HIGHWAY_PATROL, FALSE) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SET_PLAYER_HAS_CHANGE_CLOTHES_ON_MISSION(CHAR_TREVOR) //Set that the player has changed clothes on mission SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], relGroupBuddy) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE) SET_PED_CONFIG_FLAG(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PCF_WillFlyThroughWindscreen, FALSE) SET_MODEL_AS_NO_LONGER_NEEDED(GET_PLAYER_PED_MODEL(CHAR_TREVOR)) //vehPolice2 - POLICEB SPAWN_VEHICLE(vehPolice2, POLICEB, vPoliceStart2, fPoliceStart2) SET_VEHICLE_AS_RESTRICTED(vehPolice2, 3) SET_VEHICLE_HAS_STRONG_AXLES(vehPolice2, TRUE) SET_MODEL_AS_NO_LONGER_NEEDED(POLICEB) //sSelectorPeds.pedID[SELECTOR_PED_MICHAEL] - GET_PLAYER_PED_MODEL(CHAR_MICHAEL) WHILE NOT HAS_MODEL_LOADED(GET_PLAYER_PED_MODEL(CHAR_MICHAEL)) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SPAWN_PLAYER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], CHAR_MICHAEL, <<-1921.7319, 4604.9102, 56.0562>> + <<0.36, -0.37, -0.0>>, 135.0260) CLEAR_AREA(<<-1921.7319, 4604.9102, 56.0562>>, 200.0, TRUE) //SET_PED_PROP_INDEX(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], ANCHOR_HEAD, 4) // SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PED_COMP_TORSO, 6, 0) // SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PED_COMP_LEG, 6, 0) WHILE NOT SET_PED_COMP_ITEM_CURRENT_SP(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], COMP_TYPE_OUTFIT, OUTFIT_P0_HIGHWAY_PATROL, FALSE) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SET_PLAYER_HAS_CHANGE_CLOTHES_ON_MISSION(CHAR_MICHAEL) //Set that the player has changed clothes on mission SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], relGroupBuddy) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE) SET_PED_CONFIG_FLAG(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PCF_WillFlyThroughWindscreen, FALSE) SET_MODEL_AS_NO_LONGER_NEEDED(GET_PLAYER_PED_MODEL(CHAR_MICHAEL)) ADD_PED_FOR_DIALOGUE(sPedsForConversation, 1, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], "MICHAEL") ADD_PED_FOR_DIALOGUE(sPedsForConversation, 2, sSelectorPeds.pedID[SELECTOR_PED_TREVOR], "TREVOR") //vehRival1 - ENTITYXF WHILE NOT HAS_MODEL_LOADED(ENTITYXF) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE vehRival1 = CREATE_CAR_STEAL_STRAND_CAR(ENTITYXF, <<-1923.0222, 4605.4929, 56.0440>>, 135.0786) //SPAWN_VEHICLE(vehRival1, ENTITYXF, vRival1Start, fRival1Start, CARSTEAL_COLOURS_ENTITYXF) SET_VEHICLE_AS_RESTRICTED(vehRival1, 0) SET_VEHICLE_HAS_STRONG_AXLES(vehRival1, TRUE) SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehRival1, TRUE) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehRival1, SC_DOOR_FRONT_LEFT, FALSE) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehRival1, SC_DOOR_FRONT_RIGHT, FALSE) SET_MODEL_AS_NO_LONGER_NEEDED(ENTITYXF) //pedRival1 - IG_CAR3GUY1 WHILE NOT HAS_MODEL_LOADED(IG_CAR3GUY1) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SPAWN_PED(pedRival1, IG_CAR3GUY1, <<-1915.625732, 4600.510254, 56.0301>>, 141.4507) SET_PED_RELATIONSHIP_GROUP_HASH(pedRival1, relGroupEnemy) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedRival1, TRUE) TASK_SMART_FLEE_PED(pedRival1, PLAYER_PED_ID(), 500.0, -1) FORCE_PED_MOTION_STATE(pedRival1, MS_ON_FOOT_RUN) SET_PED_KEEP_TASK(pedRival1, TRUE) SET_MODEL_AS_NO_LONGER_NEEDED(IG_CAR3GUY1) //vehRival2 - CHEETAH WHILE NOT HAS_MODEL_LOADED(CHEETAH) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE vehRival2 = CREATE_CAR_STEAL_STRAND_CAR(CHEETAH, <<-1919.3284, 4609.285, 56.0532>>, 135.0284) //SPAWN_VEHICLE(vehRival2, CHEETAH, vRival2Start, fRival2Start, CARSTEAL_COLOURS_CHEETAH) SET_VEHICLE_AS_RESTRICTED(vehRival2, 1) SET_VEHICLE_HAS_STRONG_AXLES(vehRival2, TRUE) SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehRival2, TRUE) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehRival2, SC_DOOR_FRONT_LEFT, FALSE) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehRival2, SC_DOOR_FRONT_RIGHT, FALSE) SET_MODEL_AS_NO_LONGER_NEEDED(CHEETAH) //pedRival2 - IG_CAR3GUY2 WHILE NOT HAS_MODEL_LOADED(IG_CAR3GUY2) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SPAWN_PED(pedRival2, IG_CAR3GUY2, <<-1921.257690, 4590.634766, 56.0301>>, 141.4507) SET_PED_COMPONENT_VARIATION(pedRival2, PED_COMP_HEAD, 1, 0) SET_PED_COMPONENT_VARIATION(pedRival2, PED_COMP_TORSO, 0, 0) SET_PED_COMPONENT_VARIATION(pedRival2, PED_COMP_LEG, 0, 0) SET_PED_PROP_INDEX(pedRival2, ANCHOR_EYES, 0) SET_PED_RELATIONSHIP_GROUP_HASH(pedRival2, relGroupEnemy) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedRival2, TRUE) TASK_SMART_FLEE_PED(pedRival2, PLAYER_PED_ID(), 500.0, -1) FORCE_PED_MOTION_STATE(pedRival2, MS_ON_FOOT_RUN) SET_PED_KEEP_TASK(pedRival2, TRUE) SET_MODEL_AS_NO_LONGER_NEEDED(IG_CAR3GUY2) ADD_PED_FOR_DIALOGUE(sPedsForConversation, 4, pedRival1, "CST3RACER1") ADD_PED_FOR_DIALOGUE(sPedsForConversation, 5, pedRival2, "CST3RACER2") MAKE_SELECTOR_PED_SELECTION(sSelectorPeds, SELECTOR_PED_MICHAEL) WHILE NOT TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE IF g_bShitskipAccepted = TRUE eMissionObjective = cutBridge ELSE eMissionObjective = stageDriveHome ENDIF BREAK CASE replayPass //Outfits/Weapons SET_PLAYER_PED_DATA_IN_CUTSCENES(FALSE, TRUE) EMPTY_VEHICLE_OF_PEDS(vehPlayer) SAFE_DELETE_VEHICLE(vehPlayer) IF GET_REPLAY_CHECKPOINT_VEHICLE_MODEL() = F620 CREATE_VEHICLE_FOR_REPLAY(vehPlayer, <<485.3990, -1332.9005, 28.3095>>, 292.4873, TRUE, TRUE, FALSE, FALSE, TRUE, F620, 0) SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehPlayer, TRUE) SET_VEHICLE_HAS_STRONG_AXLES(vehPlayer, TRUE) ELSE REQUEST_MODEL(F620) WHILE NOT HAS_MODEL_LOADED(F620) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SPAWN_VEHICLE(vehPlayer, F620, <<485.3990, -1332.9005, 28.3095>>, 292.4873, 0) SET_VEHICLE_HAS_STRONG_AXLES(vehPlayer, TRUE) SET_VEHICLE_COLOURS(vehPlayer, 43, 43) SET_VEHICLE_EXTRA_COLOURS(vehPlayer, 48, 48) SET_MODEL_AS_NO_LONGER_NEEDED(F620) ENDIF //sSelectorPeds.pedID[SELECTOR_PED_TREVOR] - GET_PLAYER_PED_MODEL(CHAR_TREVOR) REQUEST_MODEL(GET_PLAYER_PED_MODEL(CHAR_TREVOR)) WHILE NOT HAS_MODEL_LOADED(GET_PLAYER_PED_MODEL(CHAR_TREVOR)) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SPAWN_PLAYER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], CHAR_TREVOR, <<485.5920, -1330.7214, 28.2454>>, 296.1122) //SET_PED_PROP_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], ANCHOR_HEAD, 5) // SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PED_COMP_HAIR, 3, 0) // SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PED_COMP_TORSO, 3, 0) // SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PED_COMP_LEG, 3, 0) IF NOT IS_PED_WEARING_HELMET(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) SET_PED_HELMET_PROP_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], 5) SET_PED_HELMET_TEXTURE_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], 0) ENDIF WHILE NOT SET_PED_COMP_ITEM_CURRENT_SP(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], COMP_TYPE_OUTFIT, OUTFIT_P2_HIGHWAY_PATROL, FALSE) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SET_PLAYER_HAS_CHANGE_CLOTHES_ON_MISSION(CHAR_TREVOR) //Set that the player has changed clothes on mission SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], relGroupBuddy) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE) SET_PED_CONFIG_FLAG(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PCF_WillFlyThroughWindscreen, FALSE) SET_MODEL_AS_NO_LONGER_NEEDED(GET_PLAYER_PED_MODEL(CHAR_TREVOR)) //sSelectorPeds.pedID[SELECTOR_PED_MICHAEL] - GET_PLAYER_PED_MODEL(CHAR_MICHAEL) REQUEST_MODEL(GET_PLAYER_PED_MODEL(CHAR_MICHAEL)) WHILE NOT HAS_MODEL_LOADED(GET_PLAYER_PED_MODEL(CHAR_MICHAEL)) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SPAWN_PLAYER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], CHAR_MICHAEL, <<485.9252, -1330.5171, 28.2488>>, 293.9519) //SET_PED_PROP_INDEX(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], ANCHOR_HEAD, 4) // SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PED_COMP_TORSO, 6, 0) // SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PED_COMP_LEG, 6, 0) WHILE NOT SET_PED_COMP_ITEM_CURRENT_SP(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], COMP_TYPE_OUTFIT, OUTFIT_P0_HIGHWAY_PATROL, FALSE) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SET_PLAYER_HAS_CHANGE_CLOTHES_ON_MISSION(CHAR_MICHAEL) //Set that the player has changed clothes on mission SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], relGroupBuddy) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE) SET_PED_CONFIG_FLAG(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PCF_WillFlyThroughWindscreen, FALSE) SET_MODEL_AS_NO_LONGER_NEEDED(GET_PLAYER_PED_MODEL(CHAR_MICHAEL)) ADD_PED_FOR_DIALOGUE(sPedsForConversation, 1, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], "MICHAEL") ADD_PED_FOR_DIALOGUE(sPedsForConversation, 2, sSelectorPeds.pedID[SELECTOR_PED_TREVOR], "TREVOR") //vehRival1 - ENTITYXF REQUEST_MODEL(ENTITYXF) WHILE NOT HAS_MODEL_LOADED(ENTITYXF) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE vehRival1 = CREATE_CAR_STEAL_STRAND_CAR(ENTITYXF, <<485.9952, -1335.4487, 28.2862>>, 286.6455) SET_VEHICLE_AS_RESTRICTED(vehRival1, 0) SET_VEHICLE_HAS_STRONG_AXLES(vehRival1, TRUE) SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehRival1, TRUE) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehRival1, SC_DOOR_FRONT_LEFT, FALSE) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehRival1, SC_DOOR_FRONT_RIGHT, FALSE) SET_MODEL_AS_NO_LONGER_NEEDED(ENTITYXF) //vehRival2 - CHEETAH REQUEST_MODEL(CHEETAH) WHILE NOT HAS_MODEL_LOADED(CHEETAH) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE vehRival2 = CREATE_CAR_STEAL_STRAND_CAR(CHEETAH, <<487.1696, -1337.8451, 28.2688>>, 293.0351) SET_VEHICLE_AS_RESTRICTED(vehRival2, 1) SET_VEHICLE_HAS_STRONG_AXLES(vehRival2, TRUE) SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehRival2, TRUE) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehRival2, SC_DOOR_FRONT_LEFT, FALSE) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehRival2, SC_DOOR_FRONT_RIGHT, FALSE) SET_MODEL_AS_NO_LONGER_NEEDED(CHEETAH) MAKE_SELECTOR_PED_SELECTION(sSelectorPeds, SELECTOR_PED_MICHAEL) WHILE NOT TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(), WEAPONTYPE_UNARMED, TRUE) SET_PED_POSITION(PLAYER_PED_ID(), <<492.7253, -1311.5626, 28.2627>>, 293.8439, FALSE) //LOAD_SCENE_ADV(<<492.7253, -1311.5626, 28.2627>>) eMissionObjective = cutHome BREAK ENDSWITCH bSkipped = TRUE bReplaySkip = TRUE // IF IS_SCREEN_FADED_OUT() // DO_SCREEN_FADE_IN(1000) // ENDIF ENDPROC PROC LOAD_UNLOAD_ASSETS() //Stages Reference //stageArrive //cutRace //stageRace //cutSwitch //stageChase //cutBridge //stageDriveHome //passMission //failMission //Mission Peds: //GET_PLAYER_PED_MODEL(CHAR_MICHAEL) IF eMissionObjective = cutSwitch HAS_MODEL_LOADED_CHECK(GET_PLAYER_PED_MODEL(CHAR_MICHAEL)) ENDIF //GET_PLAYER_PED_MODEL(CHAR_FRANKLIN) IF eMissionObjective = initMission HAS_MODEL_LOADED_CHECK(GET_PLAYER_PED_MODEL(CHAR_FRANKLIN)) ENDIF //GET_PLAYER_PED_MODEL(CHAR_TREVOR) IF eMissionObjective = cutSwitch HAS_MODEL_LOADED_CHECK(GET_PLAYER_PED_MODEL(CHAR_TREVOR)) ENDIF //IG_CAR3GUY2 IF eMissionObjective = cutRace HAS_MODEL_LOADED_CHECK(IG_CAR3GUY2) ENDIF //IG_CAR3GUY1 IF eMissionObjective = cutRace HAS_MODEL_LOADED_CHECK(IG_CAR3GUY1) ENDIF //Mission Cars: //F620 IF eMissionObjective = initMission HAS_MODEL_LOADED_CHECK(F620) ENDIF //CHEETAH IF eMissionObjective = cutRace HAS_MODEL_LOADED_CHECK(CHEETAH) ENDIF //ENTITYXF IF eMissionObjective = cutRace HAS_MODEL_LOADED_CHECK(ENTITYXF) ENDIF //ASTEROPE IF eMissionObjective = stageRace HAS_MODEL_LOADED_CHECK(ASTEROPE) ENDIF //TRAILERS2 IF eMissionObjective = stageRace HAS_MODEL_LOADED_CHECK(TRAILERS) HAS_MODEL_LOADED_CHECK(TRAILERS2) ENDIF //POLICEB IF eMissionObjective = cutSwitch HAS_MODEL_LOADED_CHECK(POLICEB) ENDIF //PROP_PLAYER_PHONE_01 IF eMissionObjective >= stageRace AND eMissionObjective <= cutSwitch HAS_MODEL_LOADED_CHECK(PROP_PLAYER_PHONE_01) ENDIF //PROP_DONUT_02 IF eMissionObjective >= stageRace AND eMissionObjective <= cutSwitch HAS_MODEL_LOADED_CHECK(PROP_DONUT_02) ENDIF //PROP_DONUT_02B IF eMissionObjective >= stageRace AND eMissionObjective <= cutSwitch HAS_MODEL_LOADED_CHECK(PROP_DONUT_02B) ENDIF //Vehicle Recordings IF eMissionObjective = stageArrive //Arrives normal direction HAS_RECORDING_LOADED_CHECK(001, sCarrecGasStation) //Arrives wrong direction HAS_RECORDING_LOADED_CHECK(002, sCarrecGasStation) ELSE UNLOAD_RECORDING(001, sCarrecGasStation) UNLOAD_RECORDING(002, sCarrecGasStation) ENDIF IF eMissionObjective >= cutRace AND eMissionObjective <= stageRace //Rival 1 HAS_RECORDING_LOADED_CHECK(500, sCarrecSetup) //sCarrecRace) //Rival 2 HAS_RECORDING_LOADED_CHECK(501, sCarrecSetup) //sCarrecRace) //Trailer Hauler HAS_RECORDING_LOADED_CHECK(401, sCarrecSetup) //345, sCarrecRace) //Trailer Packer HAS_RECORDING_LOADED_CHECK(403, sCarrecSetup) //346, sCarrecRace) ELIF eMissionObjective != stageArrive UNLOAD_RECORDING(500, sCarrecSetup) //sCarrecRace) UNLOAD_RECORDING(501, sCarrecSetup) //sCarrecRace) UNLOAD_RECORDING(401, sCarrecSetup) //345, sCarrecRace) UNLOAD_RECORDING(403, sCarrecSetup) //346, sCarrecRace) ENDIF IF eMissionObjective >= cutSwitch AND eMissionObjective <= stageChase //Police Bike 1 HAS_RECORDING_LOADED_CHECK(500, sCarrecCop) //sCarrecChase) //Player HAS_RECORDING_LOADED_CHECK(400, sCarrecCop) //300, sCarrecChase) //Rival 1 HAS_RECORDING_LOADED_CHECK(401, sCarrecCop) //301, sCarrecChase) //Rival 2 HAS_RECORDING_LOADED_CHECK(402, sCarrecCop) //302, sCarrecChase) ELSE UNLOAD_RECORDING(500, sCarrecCop) //sCarrecChase) UNLOAD_RECORDING(400, sCarrecCop) //300, sCarrecChase) UNLOAD_RECORDING(401, sCarrecCop) //301, sCarrecChase) UNLOAD_RECORDING(402, sCarrecCop) //302, sCarrecChase) ENDIF // IF eMissionObjective >= cutBridge AND eMissionObjective <= stageDriveHome // //Rival 2 // HAS_RECORDING_LOADED_CHECK(001, sCarrecHome) // // //Rival 1 // HAS_RECORDING_LOADED_CHECK(002, sCarrecHome) // // //Player // HAS_RECORDING_LOADED_CHECK(003, sCarrecHome) // ELSE // UNLOAD_RECORDING(001, sCarrecHome) // UNLOAD_RECORDING(002, sCarrecHome) // UNLOAD_RECORDING(003, sCarrecHome) // ENDIF IF eMissionObjective >= stageDriveHome AND eMissionObjective <= cutHome //ENTITYXF - Michael HAS_RECORDING_LOADED_CHECK(001, sCarrecGarage) //CHEETAH - Trevor HAS_RECORDING_LOADED_CHECK(002, sCarrecGarage) //F620 - Franklin HAS_RECORDING_LOADED_CHECK(003, sCarrecGarage) ELSE UNLOAD_RECORDING(001, sCarrecGarage) UNLOAD_RECORDING(002, sCarrecGarage) UNLOAD_RECORDING(003, sCarrecGarage) ENDIF //Waypoint Recordings //Animation Dictionaries IF eMissionObjective >= stageArrive AND eMissionObjective <= stageChase HAS_ANIM_DICT_LOADED_CHECK(sAnimDictCar3) ELSE UNLOAD_ANIM_DICT(sAnimDictCar3) ENDIF IF eMissionObjective >= stageArrive AND eMissionObjective <= stageChase HAS_ANIM_DICT_LOADED_CHECK(sAnimDictCar3PullOver) ELSE UNLOAD_ANIM_DICT(sAnimDictCar3PullOver) ENDIF IF eMissionObjective >= stageRace AND eMissionObjective <= cutSwitch HAS_ANIM_DICT_LOADED_CHECK(strAnimDictCar3LeadInOut) ELSE UNLOAD_ANIM_DICT(strAnimDictCar3LeadInOut) ENDIF IF eMissionObjective >= stageRace AND eMissionObjective <= cutSwitch HAS_ANIM_DICT_LOADED_CHECK(strAnimDictBikeIdle) ELSE UNLOAD_ANIM_DICT(strAnimDictBikeIdle) ENDIF // IF eMissionObjective >= stageRace AND eMissionObjective <= cutSwitch // HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPhoneUse) // ELSE // UNLOAD_ANIM_DICT(sAnimDictPhoneUse) // ENDIF ENDPROC PROC PRELOAD_ALL_CHASE_RECORDINGS(FLOAT fPlaybackTime, STRING sCarrec) INT i = 0 INT iSetpieceSize = COUNT_OF(SetPieceCarID) INT iTrafficSize = COUNT_OF(TrafficCarID) REPEAT iSetpieceSize i IF SetPieceCarRecording[i] > 0 IF SetPieceCarStartime[i] > fPlaybackTime //IF SetPieceCarStartime[i] - f_playback_time < 50000.0 REQUEST_VEHICLE_RECORDING(SetPieceCarRecording[i], sCarrec) //ENDIF // ELIF fPlaybackTime > SetPieceCarStartime[i] + 10000 // IF NOT IS_VEHICLE_DRIVEABLE(SetPieceCarID[i]) // REMOVE_VEHICLE_RECORDING(SetPieceCarRecording[i], sCarrec) // ENDIF ENDIF ENDIF ENDREPEAT REPEAT iTrafficSize i IF TrafficCarRecording[i] > 0 IF TrafficCarStartime[i] > fPlaybackTime //IF TrafficCarStartime[i] - f_playback_time < 50000.0 REQUEST_VEHICLE_RECORDING(TrafficCarRecording[i], sCarrec) //ENDIF // ELIF fPlaybackTime > TrafficCarStartime[i] + 10000 // IF NOT IS_VEHICLE_DRIVEABLE(TrafficCarID[i]) // REMOVE_VEHICLE_RECORDING(TrafficCarRecording[i], sCarrec) // ENDIF ENDIF ENDIF ENDREPEAT ENDPROC FLOAT fCurrentSpeed = 1.0 FLOAT fDesiredSpeed = 1.0 PROC RUBBER_BANDING(FLOAT fRecordingTime, STRING sCarrec) IF ARE_STRINGS_EQUAL(sCarrec, sCarrecSetup) //sCarrecRace) IF fRecordingTime < 2000.0 fCurrentSpeed = 1.0 ELIF fRecordingTime < 5000.0 CALCULATE_DESIRED_PLAYBACK_SPEED_FROM_TRIGGER_CAR(fDesiredSpeed, vehPlayer, vehRival2, 2.5, 5.0, 25.0, 100.0, 30.0, 1.0, 0.7, 0.5, 2.0, TRUE) //CALCULATE_PLAYBACK_SPEED_FROM_CHAR(vehRival2, PLAYER_PED_ID(), fPlaybackSpeed, 8.0, 5.0, 20.0, 0.6, 1.0, 0.8, FALSE) ELIF fRecordingTime < 15000.0 CALCULATE_DESIRED_PLAYBACK_SPEED_FROM_TRIGGER_CAR(fDesiredSpeed, vehPlayer, vehRival2, 5.0, 10.0, 50.0, 100.0, 30.0, 1.0, 0.7, 0.5, 2.0, TRUE) //CALCULATE_PLAYBACK_SPEED_FROM_CHAR(vehRival2, PLAYER_PED_ID(), fPlaybackSpeed, 10.0 + 0.1, 7.0 + 0.1, 25.0 + 0.1, 0.6 + 0.1, 2.0 + 0.1, 0.8 + 0.1, FALSE) // ELIF fRecordingTime < 20000.0 // CALCULATE_PLAYBACK_SPEED_FROM_CHAR(vehRival2, PLAYER_PED_ID(), fPlaybackSpeed, 15.0 + 2.5, 10.0 + 2.5, 25.0 + 2.5, 0.8 + 0.1, 2.0 + 0.1, 1.0 + 0.1, FALSE) // ELIF fRecordingTime < 25000.0 //42000.0 // CALCULATE_PLAYBACK_SPEED_FROM_CHAR(vehRival2, PLAYER_PED_ID(), fPlaybackSpeed, 10.0 + 4.5, 7.0 + 4.5, 25.0 + 4.5, 0.6 + 0.2, 2.0 + 0.2, 0.8 + 0.2, FALSE) // ELIF fRecordingTime < 52000.0 //47000.0 // CALCULATE_PLAYBACK_SPEED_FROM_CHAR(vehRival2, PLAYER_PED_ID(), fPlaybackSpeed, GET_INTERP_POINT_FLOAT(10.0, 20.0, 25000.0, 45000.0, fRecordingTime), GET_INTERP_POINT_FLOAT(7.0, 15.0, 25000.0, 45000.0, fRecordingTime), GET_INTERP_POINT_FLOAT(25.0, 35.0, 25000.0, 45000.0, fRecordingTime), GET_INTERP_POINT_FLOAT(0.6, 1.2, 25000.0, 45000.0, fRecordingTime), 2.0, GET_INTERP_POINT_FLOAT(0.8, 1.5, 25000.0, 45000.0, fRecordingTime), FALSE) // ELIF fRecordingTime < 60000.0 // CALCULATE_PLAYBACK_SPEED_FROM_CHAR(vehRival2, PLAYER_PED_ID(), fPlaybackSpeed, 10.0 + 4.5, 7.0 + 4.5, 25.0 + 4.5, 0.6 + 0.2, 2.0 + 0.2, 0.8 + 0.2, FALSE) ELIF fRecordingTime < 86000.0 CALCULATE_DESIRED_PLAYBACK_SPEED_FROM_TRIGGER_CAR(fDesiredSpeed, vehPlayer, vehRival2, 5.0, 10.0, 50.0, 100.0, 30.0, 1.0, 0.7, 0.5, 2.0, TRUE) //CALCULATE_PLAYBACK_SPEED_FROM_CHAR(vehRival2, PLAYER_PED_ID(), fPlaybackSpeed, 10.0 + 4.5, 7.0 + 4.5, 25.0 + 4.5, 0.6 + 0.2, 2.0 + 0.2, 0.8 + 0.2, FALSE) ELIF fRecordingTime < 102000.0 //98000.0 IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival2) STOP_PLAYBACK_RECORDED_VEHICLE(vehRival2) ENDIF IF GET_SCRIPT_TASK_STATUS(pedRival2, SCRIPT_TASK_VEHICLE_MISSION) != PERFORMING_TASK TASK_VEHICLE_MISSION_COORS_TARGET(pedRival2, vehRival2, <<2336.7979, 5885.9106, 46.6832>>, MISSION_GOTO_RACING, 60.0, DRIVINGMODE_AVOIDCARS, 1.0, 1.0, TRUE) ENDIF CALCULATE_DESIRED_PLAYBACK_SPEED_FROM_TRIGGER_CAR(fDesiredSpeed, vehPlayer, vehRival1, 5.0, 10.0, 50.0, 100.0, 30.0, 1.0, 0.7, 0.5, 2.0, TRUE) //CALCULATE_PLAYBACK_SPEED_FROM_CHAR(vehRival1, PLAYER_PED_ID(), fPlaybackSpeed, 10.0, 7.0, 25.0, 0.5, 2.0, 0.8, FALSE) ELIF fRecordingTime < GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(500, sCarrec) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) STOP_PLAYBACK_RECORDED_VEHICLE(vehRival1) ENDIF IF GET_SCRIPT_TASK_STATUS(pedRival1, SCRIPT_TASK_VEHICLE_MISSION) != PERFORMING_TASK TASK_VEHICLE_MISSION_COORS_TARGET(pedRival1, vehRival1, <<2336.7979, 5885.9106, 46.6832>>, MISSION_GOTO_RACING, 60.0, DRIVINGMODE_AVOIDCARS, 1.0, 1.0, TRUE) ENDIF //CALCULATE_PLAYBACK_SPEED_FROM_CHAR(vehRival2, PLAYER_PED_ID(), fPlaybackSpeed, 10.0, 7.0, 25.0, 0.6, 2.0, 0.8, FALSE) ENDIF UPDATE_CURRENT_PLAYBACK_SPEED_WITH_SMOOTHING(fCurrentSpeed, fDesiredSpeed) fPlaybackSpeed = fCurrentSpeed ELIF ARE_STRINGS_EQUAL(sCarrec, sCarrecCop) //sCarrecChase) IF fRecordingTime < 5000.0 fCurrentSpeed = 1.0 ELIF fRecordingTime < 128000.0 CALCULATE_DESIRED_PLAYBACK_SPEED_FROM_TRIGGER_CAR(fDesiredSpeed, vehPolice2, vehPolice1, 5.0, 10.0, 50.0, 100.0, 30.0, 1.0, 0.7, 0.5, 2.0, TRUE) //CALCULATE_PLAYBACK_SPEED_FROM_CHAR(vehPolice1, PLAYER_PED_ID(), fPlaybackSpeed, 10.0, 5.0, 15.0, 0.6, 2.0, 0.8, FALSE) ELIF fRecordingTime < 135000.0 CALCULATE_DESIRED_PLAYBACK_SPEED_FROM_TRIGGER_CAR(fDesiredSpeed, vehPolice2, vehPolice1, 10.0, 15.0, 50.0, 100.0, 30.0, 1.0, 0.7, 0.5, 2.0, TRUE) //CALCULATE_PLAYBACK_SPEED_FROM_CHAR(vehPolice1, PLAYER_PED_ID(), fPlaybackSpeed, 20.0, 15.0, 30.0, 0.8, 2.0, 1.0, FALSE) ELIF fRecordingTime < 140000.0 CALCULATE_DESIRED_PLAYBACK_SPEED_FROM_TRIGGER_CAR(fDesiredSpeed, vehPolice2, vehPolice1, 5.0, 10.0, 50.0, 100.0, 30.0, 1.0, 0.7, 0.5, 2.0, TRUE) //CALCULATE_PLAYBACK_SPEED_FROM_CHAR(vehPolice1, PLAYER_PED_ID(), fPlaybackSpeed, 10.0, 5.0, 15.0, 0.6, 2.0, 0.8, FALSE) ELIF fRecordingTime < 153107.800 CALCULATE_DESIRED_PLAYBACK_SPEED_FROM_TRIGGER_CAR(fDesiredSpeed, vehPolice2, vehPolice1, 5.0, 10.0, 50.0, 100.0, 30.0, 1.0, 0.7, 0.5, 2.0, TRUE) //CALCULATE_PLAYBACK_SPEED_FROM_CHAR(vehPolice1, PLAYER_PED_ID(), fPlaybackSpeed, 2.5, 0.0, 5.0, 0.4, 1.5, 0.6, FALSE) ELIF fRecordingTime > GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(500, sCarrec) - 100 PAUSE_PLAYBACK_RECORDED_VEHICLE(vehPolice1) ELIF fRecordingTime < GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(500, sCarrec) IF fCurrentSpeed < 1.0 fCurrentSpeed = fCurrentSpeed +@ 0.1 ELIF fCurrentSpeed > 1.0 fCurrentSpeed = fCurrentSpeed -@ 0.1 ENDIF PRINTLN("fCurrentSpeed = ", fCurrentSpeed) ENDIF UPDATE_CURRENT_PLAYBACK_SPEED_WITH_SMOOTHING(fCurrentSpeed, fDesiredSpeed) fPlaybackSpeed = fCurrentSpeed ENDIF ENDPROC FUNC FLOAT GET_GROUND_Z(VECTOR vCoords) FLOAT fGroundZ GET_GROUND_Z_FOR_3D_COORD(vCoords, fGroundZ) RETURN fGroundZ ENDFUNC INT iTimeSinceLastHorn INT iClosestVehicleCheckTimer PROC DO_CHASE_HORNS(VEHICLE_INDEX vehClosest) //General horns for all vehicles: get the nearest vehicle and play horn IF GET_GAME_TIMER() - iTimeSinceLastHorn > 2000 IF vehClosest != vehRival1 AND vehClosest != vehRival2 IF IS_VEHICLE_DRIVEABLE(vehClosest) PED_INDEX pedClosest = GET_PED_IN_VEHICLE_SEAT(vehClosest) IF NOT IS_PED_INJURED(pedClosest) INT iRand iRand = GET_RANDOM_INT_IN_RANGE(0, 3) IF iRand = 0 START_VEHICLE_HORN(vehClosest, 2000) ELIF iRand = 1 PLAY_PED_AMBIENT_SPEECH(pedClosest, "GENERIC_CURSE_HIGH", SPEECH_PARAMS_FORCE_NORMAL) ELIF iRand = 2 START_VEHICLE_HORN(vehClosest, 2000) PLAY_PED_AMBIENT_SPEECH(pedClosest, "GENERIC_CURSE_HIGH", SPEECH_PARAMS_FORCE_NORMAL) ENDIF iTimeSinceLastHorn = GET_GAME_TIMER() ENDIF ENDIF ENDIF ENDIF ENDPROC FUNC INT GET_TRAFFIC_VEHICLE_SEARCH_FLAGS() RETURN (VEHICLE_SEARCH_FLAG_ALLOW_VEHICLE_OCCUPANTS_TO_BE_PERFORMING_A_SCRIPTED_TASK | VEHICLE_SEARCH_FLAG_RETURN_MISSION_VEHICLES | VEHICLE_SEARCH_FLAG_RETURN_RANDOM_VEHICLES | VEHICLE_SEARCH_FLAG_RETURN_VEHICLES_CONTAINING_A_DEAD_OR_DYING_PED) ENDFUNC //═════════════════════════════╡ SETUP PROCEDURES ╞══════════════════════════════ //═══════════════════════════════════╡ UBER ╞════════════════════════════════════ PROC UberSetupVariables() TrafficCarPos[0] = <<2531.8367, 567.2463, 111.2710>> TrafficCarQuatX[0] = 0.0104 TrafficCarQuatY[0] = 0.0256 TrafficCarQuatZ[0] = 0.9981 TrafficCarQuatW[0] = -0.0547 TrafficCarRecording[0] = 1 TrafficCarStartime[0] = 3432.0000 TrafficCarModel[0] = Mule TrafficCarPos[1] = <<2528.3938, 602.4405, 108.8434>> TrafficCarQuatX[1] = 0.0095 TrafficCarQuatY[1] = 0.0302 TrafficCarQuatZ[1] = 0.9960 TrafficCarQuatW[1] = -0.0832 TrafficCarRecording[1] = 2 TrafficCarStartime[1] = 4884.0000 TrafficCarModel[1] = minivan TrafficCarPos[2] = <<2523.9231, 590.3826, 109.1960>> TrafficCarQuatX[2] = -0.0180 TrafficCarQuatY[2] = 0.0280 TrafficCarQuatZ[2] = 0.9992 TrafficCarQuatW[2] = -0.0234 TrafficCarRecording[2] = 3 TrafficCarStartime[2] = 5214.0000 TrafficCarModel[2] = minivan TrafficCarPos[3] = <<2518.8372, 628.9053, 107.6059>> TrafficCarQuatX[3] = -0.0193 TrafficCarQuatY[3] = 0.0300 TrafficCarQuatZ[3] = 0.9973 TrafficCarQuatW[3] = -0.0645 TrafficCarRecording[3] = 4 TrafficCarStartime[3] = 5676.0000 TrafficCarModel[3] = Mule TrafficCarPos[4] = <<2517.6628, 641.6564, 106.3506>> TrafficCarQuatX[4] = -0.0138 TrafficCarQuatY[4] = 0.0317 TrafficCarQuatZ[4] = 0.9955 TrafficCarQuatW[4] = -0.0884 TrafficCarRecording[4] = 5 TrafficCarStartime[4] = 7194.0000 TrafficCarModel[4] = minivan TrafficCarPos[5] = <<2511.8474, 706.9466, 102.3872>> TrafficCarQuatX[5] = 0.0098 TrafficCarQuatY[5] = 0.0355 TrafficCarQuatZ[5] = 0.9951 TrafficCarQuatW[5] = -0.0922 TrafficCarRecording[5] = 6 TrafficCarStartime[5] = 8118.0000 TrafficCarModel[5] = Mule TrafficCarPos[6] = <<2500.5420, 736.9729, 99.4502>> TrafficCarQuatX[6] = -0.0158 TrafficCarQuatY[6] = 0.0340 TrafficCarQuatZ[6] = 0.9966 TrafficCarQuatW[6] = -0.0739 TrafficCarRecording[6] = 7 TrafficCarStartime[6] = 8910.0000 TrafficCarModel[6] = emperor TrafficCarPos[7] = <<2504.5508, 746.0255, 99.1176>> TrafficCarQuatX[7] = 0.0095 TrafficCarQuatY[7] = 0.0367 TrafficCarQuatZ[7] = 0.9902 TrafficCarQuatW[7] = -0.1342 TrafficCarRecording[7] = 8 TrafficCarStartime[7] = 9240.0000 TrafficCarModel[7] = minivan TrafficCarPos[8] = <<2490.1902, 789.2353, 96.4467>> TrafficCarQuatX[8] = -0.0208 TrafficCarQuatY[8] = 0.0316 TrafficCarQuatZ[8] = 0.9940 TrafficCarQuatW[8] = -0.1028 TrafficCarRecording[8] = 9 TrafficCarStartime[8] = 10164.0000 TrafficCarModel[8] = Mule TrafficCarPos[9] = <<2488.1423, 798.9224, 95.2954>> TrafficCarQuatX[9] = -0.0210 TrafficCarQuatY[9] = 0.0298 TrafficCarQuatZ[9] = 0.9967 TrafficCarQuatW[9] = -0.0728 TrafficCarRecording[9] = 10 TrafficCarStartime[9] = 10362.0000 TrafficCarModel[9] = minivan TrafficCarPos[10] = <<2487.1033, 803.4872, 95.1668>> TrafficCarQuatX[10] = -0.0199 TrafficCarQuatY[10] = 0.0299 TrafficCarQuatZ[10] = 0.9966 TrafficCarQuatW[10] = -0.0736 TrafficCarRecording[10] = 11 TrafficCarStartime[10] = 10890.0000 TrafficCarModel[10] = minivan TrafficCarPos[11] = <<2474.4858, 851.2122, 92.7213>> TrafficCarQuatX[11] = -0.0209 TrafficCarQuatY[11] = 0.0219 TrafficCarQuatZ[11] = 0.9875 TrafficCarQuatW[11] = -0.1549 TrafficCarRecording[11] = 12 TrafficCarStartime[11] = 11616.0000 TrafficCarModel[11] = Mule TrafficCarPos[12] = <<2471.3564, 860.8902, 91.7206>> TrafficCarQuatX[12] = -0.0232 TrafficCarQuatY[12] = 0.0194 TrafficCarQuatZ[12] = 0.9796 TrafficCarQuatW[12] = -0.1984 TrafficCarRecording[12] = 13 TrafficCarStartime[12] = 11946.0000 TrafficCarModel[12] = minivan TrafficCarPos[13] = <<2462.5959, 902.4520, 89.8936>> TrafficCarQuatX[13] = 0.0072 TrafficCarQuatY[13] = 0.0228 TrafficCarQuatZ[13] = 0.9802 TrafficCarQuatW[13] = -0.1965 TrafficCarRecording[13] = 14 TrafficCarStartime[13] = 12738.0000 TrafficCarModel[13] = minivan TrafficCarPos[14] = <<2456.2698, 917.0245, 89.0053>> TrafficCarQuatX[14] = 0.0082 TrafficCarQuatY[14] = 0.0213 TrafficCarQuatZ[14] = 0.9690 TrafficCarQuatW[14] = -0.2462 TrafficCarRecording[14] = 15 TrafficCarStartime[14] = 13068.0000 TrafficCarModel[14] = emperor TrafficCarPos[15] = <<2479.7439, 924.9675, 86.5518>> TrafficCarQuatX[15] = 0.0025 TrafficCarQuatY[15] = -0.0175 TrafficCarQuatZ[15] = 0.2824 TrafficCarQuatW[15] = 0.9591 TrafficCarRecording[15] = 16 TrafficCarStartime[15] = 13068.0000 TrafficCarModel[15] = minivan TrafficCarPos[16] = <<2442.2642, 946.6888, 88.5245>> TrafficCarQuatX[16] = 0.0092 TrafficCarQuatY[16] = 0.0222 TrafficCarQuatZ[16] = 0.9713 TrafficCarQuatW[16] = -0.2368 TrafficCarRecording[16] = 17 TrafficCarStartime[16] = 13662.0000 TrafficCarModel[16] = Mule TrafficCarPos[17] = <<2450.3679, 964.5439, 85.8815>> TrafficCarQuatX[17] = 0.0010 TrafficCarQuatY[17] = -0.0181 TrafficCarQuatZ[17] = 0.3259 TrafficCarQuatW[17] = 0.9452 TrafficCarRecording[17] = 18 TrafficCarStartime[17] = 13992.0000 TrafficCarModel[17] = minivan TrafficCarPos[18] = <<2430.6428, 968.1787, 87.0446>> TrafficCarQuatX[18] = 0.0072 TrafficCarQuatY[18] = 0.0228 TrafficCarQuatZ[18] = 0.9626 TrafficCarQuatW[18] = -0.2698 TrafficCarRecording[18] = 19 TrafficCarStartime[18] = 14190.0000 TrafficCarModel[18] = minivan TrafficCarPos[19] = <<2428.4163, 971.8596, 86.6286>> TrafficCarQuatX[19] = 0.0082 TrafficCarQuatY[19] = 0.0227 TrafficCarQuatZ[19] = 0.9740 TrafficCarQuatW[19] = -0.2251 TrafficCarRecording[19] = 20 TrafficCarStartime[19] = 14454.0000 TrafficCarModel[19] = emperor TrafficCarPos[20] = <<2425.7302, 1005.2106, 85.5479>> TrafficCarQuatX[20] = -0.0130 TrafficCarQuatY[20] = -0.0026 TrafficCarQuatZ[20] = 0.3390 TrafficCarQuatW[20] = 0.9407 TrafficCarRecording[20] = 21 TrafficCarStartime[20] = 14916.0000 TrafficCarModel[20] = minivan TrafficCarPos[21] = <<2404.2795, 1007.8649, 85.5689>> TrafficCarQuatX[21] = -0.0026 TrafficCarQuatY[21] = 0.0243 TrafficCarQuatZ[21] = 0.9489 TrafficCarQuatW[21] = -0.3145 TrafficCarRecording[21] = 22 TrafficCarStartime[21] = 15114.0000 TrafficCarModel[21] = Mule TrafficCarPos[22] = <<2381.6492, 1026.7485, 83.5159>> TrafficCarQuatX[22] = -0.0257 TrafficCarQuatY[22] = 0.0190 TrafficCarQuatZ[22] = 0.9447 TrafficCarQuatW[22] = -0.3263 TrafficCarRecording[22] = 23 TrafficCarStartime[22] = 15708.0000 TrafficCarModel[22] = minivan // TrafficCarPos[23] = <<2398.5208, 1039.1782, 83.7117>> // TrafficCarQuatX[23] = -0.0240 // TrafficCarQuatY[23] = -0.0019 // TrafficCarQuatZ[23] = 0.3131 // TrafficCarQuatW[23] = 0.9494 // TrafficCarRecording[23] = 24 // TrafficCarStartime[23] = 15774.0000 // TrafficCarModel[23] = minivan // TrafficCarPos[24] = <<2398.7788, 1029.6384, 83.7781>> // TrafficCarQuatX[24] = -0.0193 // TrafficCarQuatY[24] = -0.0154 // TrafficCarQuatZ[24] = 0.3084 // TrafficCarQuatW[24] = 0.9509 // TrafficCarRecording[24] = 25 // TrafficCarStartime[24] = 16170.0000 // TrafficCarModel[24] = emperor TrafficCarPos[25] = <<2357.7251, 1055.2380, 81.2879>> TrafficCarQuatX[25] = -0.0317 TrafficCarQuatY[25] = 0.0111 TrafficCarQuatZ[25] = 0.9215 TrafficCarQuatW[25] = -0.3869 TrafficCarRecording[25] = 26 TrafficCarStartime[25] = 16434.0000 TrafficCarModel[25] = emperor // TrafficCarPos[26] = <<2354.1641, 1066.6754, 80.8054>> // TrafficCarQuatX[26] = 0.0087 // TrafficCarQuatY[26] = 0.0264 // TrafficCarQuatZ[26] = 0.9356 // TrafficCarQuatW[26] = -0.3520 // TrafficCarRecording[26] = 27 // TrafficCarStartime[26] = 16632.0000 // TrafficCarModel[26] = minivan TrafficCarPos[27] = <<2353.7114, 1066.8109, 80.6639>> TrafficCarQuatX[27] = 0.0105 TrafficCarQuatY[27] = 0.0261 TrafficCarQuatZ[27] = 0.9482 TrafficCarQuatW[27] = -0.3164 TrafficCarRecording[27] = 28 TrafficCarStartime[27] = 16962.0000 TrafficCarModel[27] = asterope // TrafficCarPos[28] = <<2344.4421, 1099.4828, 79.5341>> // TrafficCarQuatX[28] = -0.0205 // TrafficCarQuatY[28] = 0.0066 // TrafficCarQuatZ[28] = 0.3597 // TrafficCarQuatW[28] = 0.9328 // TrafficCarRecording[28] = 29 // TrafficCarStartime[28] = 17424.0000 // TrafficCarModel[28] = asterope TrafficCarPos[29] = <<2322.8469, 1102.3051, 79.3780>> TrafficCarQuatX[29] = 0.0049 TrafficCarQuatY[29] = 0.0175 TrafficCarQuatZ[29] = 0.9272 TrafficCarQuatW[29] = -0.3742 TrafficCarRecording[29] = 30 TrafficCarStartime[29] = 17688.0000 TrafficCarModel[29] = minivan // TrafficCarPos[30] = <<2313.7671, 1124.9960, 79.2767>> // TrafficCarQuatX[30] = -0.0047 // TrafficCarQuatY[30] = -0.0230 // TrafficCarQuatZ[30] = 0.3577 // TrafficCarQuatW[30] = 0.9335 // TrafficCarRecording[30] = 31 // TrafficCarStartime[30] = 18150.0000 // TrafficCarModel[30] = Mule TrafficCarPos[31] = <<2382.2473, 1099.5322, 69.9259>> TrafficCarQuatX[31] = -0.0722 TrafficCarQuatY[31] = -0.0345 TrafficCarQuatZ[31] = 0.3048 TrafficCarQuatW[31] = 0.9490 TrafficCarRecording[31] = 32 TrafficCarStartime[31] = 18282.0000 TrafficCarModel[31] = minivan // TrafficCarPos[32] = <<2300.4705, 1147.4011, 77.9743>> // TrafficCarQuatX[32] = -0.0155 // TrafficCarQuatY[32] = 0.0106 // TrafficCarQuatZ[32] = 0.3904 // TrafficCarQuatW[32] = 0.9204 // TrafficCarRecording[32] = 33 // TrafficCarStartime[32] = 18678.0000 // TrafficCarModel[32] = emperor // TrafficCarPos[33] = <<2304.0510, 1144.5635, 78.0309>> // TrafficCarQuatX[33] = -0.0148 // TrafficCarQuatY[33] = 0.0117 // TrafficCarQuatZ[33] = 0.3121 // TrafficCarQuatW[33] = 0.9499 // TrafficCarRecording[33] = 34 // TrafficCarStartime[33] = 19140.0000 // TrafficCarModel[33] = minivan // TrafficCarPos[34] = <<2285.7996, 1164.7573, 77.5157>> // TrafficCarQuatX[34] = -0.0141 // TrafficCarQuatY[34] = 0.0118 // TrafficCarQuatZ[34] = 0.3843 // TrafficCarQuatW[34] = 0.9230 // TrafficCarRecording[34] = 35 // TrafficCarStartime[34] = 19470.0000 // TrafficCarModel[34] = minivan TrafficCarPos[35] = <<2296.1975, 1131.9489, 78.3355>> TrafficCarQuatX[35] = 0.0125 TrafficCarQuatY[35] = 0.0162 TrafficCarQuatZ[35] = 0.9365 TrafficCarQuatW[35] = -0.3500 TrafficCarRecording[35] = 36 TrafficCarStartime[35] = 19602.0000 TrafficCarModel[35] = minivan TrafficCarPos[36] = <<2260.1240, 1173.1749, 77.3797>> TrafficCarQuatX[36] = 0.0113 TrafficCarQuatY[36] = 0.0126 TrafficCarQuatZ[36] = 0.9313 TrafficCarQuatW[36] = -0.3639 TrafficCarRecording[36] = 37 TrafficCarStartime[36] = 19602.0000 TrafficCarModel[36] = minivan TrafficCarPos[37] = <<2254.7627, 1178.7247, 76.9189>> TrafficCarQuatX[37] = 0.0120 TrafficCarQuatY[37] = 0.0128 TrafficCarQuatZ[37] = 0.9249 TrafficCarQuatW[37] = -0.3797 TrafficCarRecording[37] = 38 TrafficCarStartime[37] = 20196.0000 TrafficCarModel[37] = asterope // TrafficCarPos[38] = <<2244.7361, 1213.0354, 76.5186>> // TrafficCarQuatX[38] = -0.0114 // TrafficCarQuatY[38] = 0.0100 // TrafficCarQuatZ[38] = 0.3397 // TrafficCarQuatW[38] = 0.9404 // TrafficCarRecording[38] = 39 // TrafficCarStartime[38] = 20592.0000 // TrafficCarModel[38] = minivan // TrafficCarPos[39] = <<2236.6230, 1222.0437, 76.6346>> // TrafficCarQuatX[39] = -0.0120 // TrafficCarQuatY[39] = 0.0108 // TrafficCarQuatZ[39] = 0.3771 // TrafficCarQuatW[39] = 0.9260 // TrafficCarRecording[39] = 40 // TrafficCarStartime[39] = 20856.0000 // TrafficCarModel[39] = minivan TrafficCarPos[40] = <<2254.0083, 1178.5549, 77.0527>> TrafficCarQuatX[40] = 0.0076 TrafficCarQuatY[40] = 0.0111 TrafficCarQuatZ[40] = 0.9422 TrafficCarQuatW[40] = -0.3348 TrafficCarRecording[40] = 41 TrafficCarStartime[40] = 21186.0000 TrafficCarModel[40] = emperor TrafficCarPos[41] = <<2191.6226, 1245.7930, 75.9200>> TrafficCarQuatX[41] = -0.0131 TrafficCarQuatY[41] = 0.0023 TrafficCarQuatZ[41] = 0.9440 TrafficCarQuatW[41] = -0.3296 TrafficCarRecording[41] = 42 TrafficCarStartime[41] = 21648.0000 TrafficCarModel[41] = asterope TrafficCarPos[42] = <<2186.2471, 1285.2190, 75.6404>> TrafficCarQuatX[42] = -0.0070 TrafficCarQuatY[42] = 0.0073 TrafficCarQuatZ[42] = 0.3289 TrafficCarQuatW[42] = 0.9443 TrafficCarRecording[42] = 43 TrafficCarStartime[42] = 22176.0000 TrafficCarModel[42] = minivan TrafficCarPos[43] = <<2177.3938, 1287.1149, 75.2953>> TrafficCarQuatX[43] = 0.0020 TrafficCarQuatY[43] = -0.0179 TrafficCarQuatZ[43] = 0.3596 TrafficCarQuatW[43] = 0.9329 TrafficCarRecording[43] = 44 TrafficCarStartime[43] = 22440.0000 TrafficCarModel[43] = emperor // TrafficCarPos[44] = <<2176.6436, 1297.3920, 75.6882>> // TrafficCarQuatX[44] = -0.0085 // TrafficCarQuatY[44] = 0.0143 // TrafficCarQuatZ[44] = 0.3292 // TrafficCarQuatW[44] = 0.9441 // TrafficCarRecording[44] = 45 // TrafficCarStartime[44] = 22638.0000 // TrafficCarModel[44] = minivan TrafficCarPos[45] = <<2168.6582, 1284.1532, 76.0682>> TrafficCarQuatX[45] = 0.0078 TrafficCarQuatY[45] = 0.0062 TrafficCarQuatZ[45] = 0.9487 TrafficCarQuatW[45] = -0.3161 TrafficCarRecording[45] = 46 TrafficCarStartime[45] = 22836.0000 TrafficCarModel[45] = Mule TrafficCarPos[46] = <<2159.5466, 1320.8896, 75.0434>> TrafficCarQuatX[46] = -0.0036 TrafficCarQuatY[46] = 0.0046 TrafficCarQuatZ[46] = 0.2774 TrafficCarQuatW[46] = 0.9607 TrafficCarRecording[46] = 47 TrafficCarStartime[46] = 23034.0000 TrafficCarModel[46] = asterope TrafficCarPos[47] = <<2155.5037, 1317.0106, 75.3680>> TrafficCarQuatX[47] = 0.0021 TrafficCarQuatY[47] = -0.0150 TrafficCarQuatZ[47] = 0.2680 TrafficCarQuatW[47] = 0.9633 TrafficCarRecording[47] = 48 TrafficCarStartime[47] = 23232.0000 TrafficCarModel[47] = minivan TrafficCarPos[48] = <<2125.9438, 1334.5380, 75.2456>> TrafficCarQuatX[48] = -0.0170 TrafficCarQuatY[48] = -0.0040 TrafficCarQuatZ[48] = 0.9526 TrafficCarQuatW[48] = -0.3038 TrafficCarRecording[48] = 49 TrafficCarStartime[48] = 23694.0000 TrafficCarModel[48] = minivan TrafficCarPos[49] = <<2118.6013, 1355.4376, 74.9437>> TrafficCarQuatX[49] = 0.0123 TrafficCarQuatY[49] = 0.0044 TrafficCarQuatZ[49] = 0.9453 TrafficCarQuatW[49] = -0.3260 TrafficCarRecording[49] = 50 TrafficCarStartime[49] = 24024.0000 TrafficCarModel[49] = minivan TrafficCarPos[50] = <<2111.5498, 1365.3160, 74.9957>> TrafficCarQuatX[50] = 0.0127 TrafficCarQuatY[50] = 0.0030 TrafficCarQuatZ[50] = 0.9686 TrafficCarQuatW[50] = -0.2483 TrafficCarRecording[50] = 51 TrafficCarStartime[50] = 24288.0000 TrafficCarModel[50] = emperor // TrafficCarPos[51] = <<2112.5137, 1380.6727, 75.7430>> // TrafficCarQuatX[51] = 0.0026 // TrafficCarQuatY[51] = -0.0084 // TrafficCarQuatZ[51] = 0.2792 // TrafficCarQuatW[51] = 0.9602 // TrafficCarRecording[51] = 52 // TrafficCarStartime[51] = 25080.0000 // TrafficCarModel[51] = Mule TrafficCarPos[52] = <<2114.0325, 1361.7507, 74.9520>> TrafficCarQuatX[52] = 0.0198 TrafficCarQuatY[52] = 0.0097 TrafficCarQuatZ[52] = 0.9551 TrafficCarQuatW[52] = -0.2954 TrafficCarRecording[52] = 53 TrafficCarStartime[52] = 25476.0000 TrafficCarModel[52] = minivan TrafficCarPos[53] = <<2094.2156, 1411.4084, 75.2758>> TrafficCarQuatX[53] = 0.0052 TrafficCarQuatY[53] = -0.0165 TrafficCarQuatZ[53] = 0.2652 TrafficCarQuatW[53] = 0.9640 TrafficCarRecording[53] = 54 TrafficCarStartime[53] = 25608.0000 TrafficCarModel[53] = minivan TrafficCarPos[54] = <<2078.2864, 1449.0529, 74.9826>> TrafficCarQuatX[54] = -0.0015 TrafficCarQuatY[54] = 0.0112 TrafficCarQuatZ[54] = 0.2564 TrafficCarQuatW[54] = 0.9665 TrafficCarRecording[54] = 55 TrafficCarStartime[54] = 26466.0000 TrafficCarModel[54] = asterope TrafficCarPos[55] = <<2070.5757, 1419.4891, 75.2672>> TrafficCarQuatX[55] = -0.0106 TrafficCarQuatY[55] = -0.0032 TrafficCarQuatZ[55] = 0.9545 TrafficCarQuatW[55] = -0.2979 TrafficCarRecording[55] = 56 TrafficCarStartime[55] = 26664.0000 TrafficCarModel[55] = asterope TrafficCarPos[56] = <<2074.4333, 1445.0652, 75.0597>> TrafficCarQuatX[56] = 0.0051 TrafficCarQuatY[56] = -0.0166 TrafficCarQuatZ[56] = 0.2513 TrafficCarQuatW[56] = 0.9677 TrafficCarRecording[56] = 57 TrafficCarStartime[56] = 26730.0000 TrafficCarModel[56] = emperor TrafficCarPos[57] = <<2034.1135, 1491.6438, 75.4180>> TrafficCarQuatX[57] = -0.0116 TrafficCarQuatY[57] = -0.0029 TrafficCarQuatZ[57] = 0.9807 TrafficCarQuatW[57] = -0.1953 TrafficCarRecording[57] = 58 TrafficCarStartime[57] = 27192.0000 TrafficCarModel[57] = minivan TrafficCarPos[58] = <<2031.2903, 1498.9364, 75.1537>> TrafficCarQuatX[58] = -0.0155 TrafficCarQuatY[58] = -0.0053 TrafficCarQuatZ[58] = 0.9681 TrafficCarQuatW[58] = -0.2499 TrafficCarRecording[58] = 59 TrafficCarStartime[58] = 27456.0000 TrafficCarModel[58] = minivan // TrafficCarPos[59] = <<2039.0902, 1517.1097, 75.9982>> // TrafficCarQuatX[59] = -0.0025 // TrafficCarQuatY[59] = -0.0023 // TrafficCarQuatZ[59] = 0.2142 // TrafficCarQuatW[59] = 0.9768 // TrafficCarRecording[59] = 60 // TrafficCarStartime[59] = 27522.0000 // TrafficCarModel[59] = Mule TrafficCarPos[60] = <<2039.6882, 1528.8265, 75.4200>> TrafficCarQuatX[60] = -0.0045 TrafficCarQuatY[60] = -0.0085 TrafficCarQuatZ[60] = 0.2030 TrafficCarQuatW[60] = 0.9791 TrafficCarRecording[60] = 61 TrafficCarStartime[60] = 27984.0000 TrafficCarModel[60] = minivan TrafficCarPos[61] = <<2017.7032, 1529.8983, 75.0193>> TrafficCarQuatX[61] = 0.0036 TrafficCarQuatY[61] = 0.0035 TrafficCarQuatZ[61] = 0.9739 TrafficCarQuatW[61] = -0.2269 TrafficCarRecording[61] = 62 TrafficCarStartime[61] = 28050.0000 TrafficCarModel[61] = emperor TrafficCarPos[62] = <<2039.0934, 1530.8571, 75.1213>> TrafficCarQuatX[62] = -0.0058 TrafficCarQuatY[62] = -0.0118 TrafficCarQuatZ[62] = 0.1708 TrafficCarQuatW[62] = 0.9852 TrafficCarRecording[62] = 63 TrafficCarStartime[62] = 28512.0000 TrafficCarModel[62] = minivan TrafficCarPos[63] = <<2003.0155, 1606.6510, 73.6440>> TrafficCarQuatX[63] = -0.0180 TrafficCarQuatY[63] = -0.0027 TrafficCarQuatZ[63] = 0.1751 TrafficCarQuatW[63] = 0.9844 TrafficCarRecording[63] = 64 TrafficCarStartime[63] = 29502.0000 TrafficCarModel[63] = minivan TrafficCarPos[64] = <<2007.3918, 1610.4432, 73.2368>> TrafficCarQuatX[64] = -0.0188 TrafficCarQuatY[64] = -0.0044 TrafficCarQuatZ[64] = 0.1347 TrafficCarQuatW[64] = 0.9907 TrafficCarRecording[64] = 65 TrafficCarStartime[64] = 29832.0000 TrafficCarModel[64] = asterope TrafficCarPos[65] = <<1961.8286, 1653.6876, 72.4539>> TrafficCarQuatX[65] = -0.0041 TrafficCarQuatY[65] = 0.0207 TrafficCarQuatZ[65] = 0.9811 TrafficCarQuatW[65] = -0.1924 TrafficCarRecording[65] = 66 TrafficCarStartime[65] = 30756.0000 TrafficCarModel[65] = minivan TrafficCarPos[66] = <<1979.6003, 1672.9697, 70.8238>> TrafficCarQuatX[66] = -0.0266 TrafficCarQuatY[66] = -0.0043 TrafficCarQuatZ[66] = 0.1589 TrafficCarQuatW[66] = 0.9869 TrafficCarRecording[66] = 67 TrafficCarStartime[66] = 30954.0000 TrafficCarModel[66] = Mule // TrafficCarPos[67] = <<1987.3289, 1666.5441, 70.5441>> // TrafficCarQuatX[67] = -0.0266 // TrafficCarQuatY[67] = -0.0033 // TrafficCarQuatZ[67] = 0.1300 // TrafficCarQuatW[67] = 0.9912 // TrafficCarRecording[67] = 68 // TrafficCarStartime[67] = 31152.0000 // TrafficCarModel[67] = emperor TrafficCarPos[68] = <<1946.9937, 1689.0887, 70.3624>> TrafficCarQuatX[68] = -0.0058 TrafficCarQuatY[68] = 0.0249 TrafficCarQuatZ[68] = 0.9723 TrafficCarQuatW[68] = -0.2323 TrafficCarRecording[68] = 69 TrafficCarStartime[68] = 31548.0000 TrafficCarModel[68] = minivan TrafficCarPos[69] = <<1934.6880, 1715.0862, 68.7313>> TrafficCarQuatX[69] = -0.0040 TrafficCarQuatY[69] = 0.0275 TrafficCarQuatZ[69] = 0.9850 TrafficCarQuatW[69] = -0.1705 TrafficCarRecording[69] = 70 TrafficCarStartime[69] = 32142.0000 TrafficCarModel[69] = asterope TrafficCarPos[70] = <<1957.8663, 1743.5569, 66.1376>> TrafficCarQuatX[70] = -0.0282 TrafficCarQuatY[70] = -0.0039 TrafficCarQuatZ[70] = 0.1453 TrafficCarQuatW[70] = 0.9890 TrafficCarRecording[70] = 71 TrafficCarStartime[70] = 32472.0000 TrafficCarModel[70] = minivan TrafficCarPos[71] = <<1925.9292, 1749.3240, 67.6292>> TrafficCarQuatX[71] = -0.0055 TrafficCarQuatY[71] = 0.0275 TrafficCarQuatZ[71] = 0.9804 TrafficCarQuatW[71] = -0.1948 TrafficCarRecording[71] = 72 TrafficCarStartime[71] = 32736.0000 TrafficCarModel[71] = Mule TrafficCarPos[72] = <<1952.0720, 1761.2147, 64.8320>> TrafficCarQuatX[72] = -0.0270 TrafficCarQuatY[72] = -0.0033 TrafficCarQuatZ[72] = 0.1259 TrafficCarQuatW[72] = 0.9917 TrafficCarRecording[72] = 73 TrafficCarStartime[72] = 32802.0000 TrafficCarModel[72] = minivan TrafficCarPos[73] = <<1918.1613, 1753.9640, 66.4773>> TrafficCarQuatX[73] = -0.0044 TrafficCarQuatY[73] = 0.0278 TrafficCarQuatZ[73] = 0.9868 TrafficCarQuatW[73] = -0.1597 TrafficCarRecording[73] = 74 TrafficCarStartime[73] = 32934.0000 TrafficCarModel[73] = emperor // TrafficCarPos[74] = <<1947.2626, 1797.7180, 63.1835>> // TrafficCarQuatX[74] = -0.0251 // TrafficCarQuatY[74] = -0.0033 // TrafficCarQuatZ[74] = 0.1393 // TrafficCarQuatW[74] = 0.9899 // TrafficCarRecording[74] = 75 // TrafficCarStartime[74] = 33462.0000 // TrafficCarModel[74] = minivan TrafficCarPos[75] = <<1939.9493, 1804.6766, 62.5258>> TrafficCarQuatX[75] = -0.0236 TrafficCarQuatY[75] = -0.0021 TrafficCarQuatZ[75] = 0.0882 TrafficCarQuatW[75] = 0.9958 TrafficCarRecording[75] = 76 TrafficCarStartime[75] = 33726.0000 TrafficCarModel[75] = emperor // TrafficCarPos[76] = <<1938.7435, 1830.9276, 62.0945>> // TrafficCarQuatX[76] = -0.0206 // TrafficCarQuatY[76] = -0.0026 // TrafficCarQuatZ[76] = 0.1272 // TrafficCarQuatW[76] = 0.9917 // TrafficCarRecording[76] = 77 // TrafficCarStartime[76] = 34122.0000 // TrafficCarModel[76] = Mule TrafficCarPos[77] = <<1910.1921, 1924.5275, 57.8338>> TrafficCarQuatX[77] = -0.0158 TrafficCarQuatY[77] = -0.0019 TrafficCarQuatZ[77] = 0.1139 TrafficCarQuatW[77] = 0.9934 TrafficCarRecording[77] = 78 TrafficCarStartime[77] = 35970.0000 TrafficCarModel[77] = asterope // TrafficCarPos[78] = <<1909.1331, 1958.2784, 57.1949>> // TrafficCarQuatX[78] = -0.0143 // TrafficCarQuatY[78] = -0.0021 // TrafficCarQuatZ[78] = 0.0890 // TrafficCarQuatW[78] = 0.9959 // TrafficCarRecording[78] = 79 // TrafficCarStartime[78] = 36564.0000 // TrafficCarModel[78] = minivan TrafficCarPos[79] = <<1906.6332, 1942.2339, 57.3684>> TrafficCarQuatX[79] = -0.0149 TrafficCarQuatY[79] = -0.0021 TrafficCarQuatZ[79] = 0.1458 TrafficCarQuatW[79] = 0.9892 TrafficCarRecording[79] = 80 TrafficCarStartime[79] = 36696.0000 TrafficCarModel[79] = minivan TrafficCarPos[80] = <<1838.2122, 1987.8311, 56.5357>> TrafficCarQuatX[80] = -0.0010 TrafficCarQuatY[80] = 0.0096 TrafficCarQuatZ[80] = 0.9949 TrafficCarQuatW[80] = -0.1009 TrafficCarRecording[80] = 81 TrafficCarStartime[80] = 37620.0000 TrafficCarModel[80] = emperor // TrafficCarPos[81] = <<1891.1013, 2015.4900, 55.7017>> // TrafficCarQuatX[81] = -0.0106 // TrafficCarQuatY[81] = -0.0011 // TrafficCarQuatZ[81] = 0.1004 // TrafficCarQuatW[81] = 0.9949 // TrafficCarRecording[81] = 82 // TrafficCarStartime[81] = 37686.0000 // TrafficCarModel[81] = minivan TrafficCarPos[82] = <<1893.2684, 2037.7450, 55.7725>> TrafficCarQuatX[82] = -0.0090 TrafficCarQuatY[82] = -0.0005 TrafficCarQuatZ[82] = 0.0559 TrafficCarQuatW[82] = 0.9984 TrafficCarRecording[82] = 83 TrafficCarStartime[82] = 38082.0000 TrafficCarModel[82] = Mule // TrafficCarPos[83] = <<1888.2937, 2066.3066, 54.5632>> // TrafficCarQuatX[83] = -0.0075 // TrafficCarQuatY[83] = -0.0008 // TrafficCarQuatZ[83] = 0.1141 // TrafficCarQuatW[83] = 0.9934 // TrafficCarRecording[83] = 84 // TrafficCarStartime[83] = 38610.0000 // TrafficCarModel[83] = emperor // TrafficCarPos[84] = <<1884.1357, 2061.0784, 54.8804>> // TrafficCarQuatX[84] = -0.0076 // TrafficCarQuatY[84] = -0.0022 // TrafficCarQuatZ[84] = 0.1108 // TrafficCarQuatW[84] = 0.9938 // TrafficCarRecording[84] = 85 // TrafficCarStartime[84] = 38940.0000 // TrafficCarModel[84] = minivan TrafficCarPos[85] = <<1875.6396, 2133.1733, 53.9558>> TrafficCarQuatX[85] = -0.0011 TrafficCarQuatY[85] = -0.0002 TrafficCarQuatZ[85] = 0.0396 TrafficCarQuatW[85] = 0.9992 TrafficCarRecording[85] = 86 TrafficCarStartime[85] = 39864.0000 TrafficCarModel[85] = asterope // TrafficCarPos[86] = <<1880.5902, 2142.5889, 54.0465>> // TrafficCarQuatX[86] = -0.0000 // TrafficCarQuatY[86] = 0.0003 // TrafficCarQuatZ[86] = 0.0704 // TrafficCarQuatW[86] = 0.9975 // TrafficCarRecording[86] = 87 // TrafficCarStartime[86] = 40062.0000 // TrafficCarModel[86] = minivan TrafficCarPos[87] = <<1836.6387, 2125.5872, 70.6828>> TrafficCarQuatX[87] = -0.0345 TrafficCarQuatY[87] = -0.0056 TrafficCarQuatZ[87] = -0.0538 TrafficCarQuatW[87] = 0.9979 TrafficCarRecording[87] = 88 TrafficCarStartime[87] = 40260.0000 TrafficCarModel[87] = Mule TrafficCarPos[88] = <<1837.8618, 2177.1838, 66.2470>> TrafficCarQuatX[88] = -0.0378 TrafficCarQuatY[88] = 0.0030 TrafficCarQuatZ[88] = -0.0833 TrafficCarQuatW[88] = 0.9958 TrafficCarRecording[88] = 89 TrafficCarStartime[88] = 40920.0000 TrafficCarModel[88] = asterope TrafficCarPos[89] = <<1843.8552, 2182.2559, 65.5808>> TrafficCarQuatX[89] = -0.0391 TrafficCarQuatY[89] = 0.0042 TrafficCarQuatZ[89] = -0.1129 TrafficCarQuatW[89] = 0.9928 TrafficCarRecording[89] = 90 TrafficCarStartime[89] = 41118.0000 TrafficCarModel[89] = emperor TrafficCarPos[90] = <<1846.6605, 2198.6279, 64.5254>> TrafficCarQuatX[90] = -0.0382 TrafficCarQuatY[90] = 0.0036 TrafficCarQuatZ[90] = -0.1322 TrafficCarQuatW[90] = 0.9905 TrafficCarRecording[90] = 91 TrafficCarStartime[90] = 41316.0000 TrafficCarModel[90] = minivan TrafficCarPos[91] = <<1877.0269, 2216.1968, 54.8171>> TrafficCarQuatX[91] = -0.0001 TrafficCarQuatY[91] = 0.0000 TrafficCarQuatZ[91] = -0.0436 TrafficCarQuatW[91] = 0.9991 TrafficCarRecording[91] = 92 TrafficCarStartime[91] = 41382.0000 TrafficCarModel[91] = Mule // TrafficCarPos[92] = <<1883.6604, 2229.7732, 54.3213>> // TrafficCarQuatX[92] = -0.0007 // TrafficCarQuatY[92] = -0.0014 // TrafficCarQuatZ[92] = -0.0133 // TrafficCarQuatW[92] = 0.9999 // TrafficCarRecording[92] = 93 // TrafficCarStartime[92] = 41646.0000 // TrafficCarModel[92] = minivan TrafficCarPos[93] = <<1878.1968, 2232.2417, 54.0437>> TrafficCarQuatX[93] = -0.0000 TrafficCarQuatY[93] = -0.0000 TrafficCarQuatZ[93] = -0.0100 TrafficCarQuatW[93] = 0.9999 TrafficCarRecording[93] = 94 TrafficCarStartime[93] = 42108.0000 TrafficCarModel[93] = minivan TrafficCarPos[94] = <<1866.3765, 2284.5105, 58.3637>> TrafficCarQuatX[94] = -0.0299 TrafficCarQuatY[94] = 0.0084 TrafficCarQuatZ[94] = -0.0900 TrafficCarQuatW[94] = 0.9955 TrafficCarRecording[94] = 95 TrafficCarStartime[94] = 42702.0000 TrafficCarModel[94] = minivan TrafficCarPos[95] = <<1859.9976, 2279.6716, 58.5171>> TrafficCarQuatX[95] = -0.0314 TrafficCarQuatY[95] = -0.0016 TrafficCarQuatZ[95] = -0.0917 TrafficCarQuatW[95] = 0.9953 TrafficCarRecording[95] = 96 TrafficCarStartime[95] = 43098.0000 TrafficCarModel[95] = emperor TrafficCarPos[96] = <<1889.9025, 2301.9653, 54.3177>> TrafficCarQuatX[96] = -0.0000 TrafficCarQuatY[96] = -0.0000 TrafficCarQuatZ[96] = -0.0948 TrafficCarQuatW[96] = 0.9955 TrafficCarRecording[96] = 97 TrafficCarStartime[96] = 43494.0000 TrafficCarModel[96] = minivan // TrafficCarPos[97] = <<1909.4022, 2372.5049, 54.8150>> // TrafficCarQuatX[97] = -0.0005 // TrafficCarQuatY[97] = 0.0000 // TrafficCarQuatZ[97] = -0.1526 // TrafficCarQuatW[97] = 0.9883 // TrafficCarRecording[97] = 98 // TrafficCarStartime[97] = 44418.0000 // TrafficCarModel[97] = Mule TrafficCarPos[98] = <<1914.8075, 2371.7500, 54.0472>> TrafficCarQuatX[98] = -0.0000 TrafficCarQuatY[98] = -0.0002 TrafficCarQuatZ[98] = -0.1181 TrafficCarQuatW[98] = 0.9930 TrafficCarRecording[98] = 99 TrafficCarStartime[98] = 44550.0000 TrafficCarModel[98] = minivan TrafficCarPos[99] = <<1919.3309, 2385.4546, 54.0774>> TrafficCarQuatX[99] = -0.0003 TrafficCarQuatY[99] = 0.0002 TrafficCarQuatZ[99] = -0.1213 TrafficCarQuatW[99] = 0.9926 TrafficCarRecording[99] = 100 TrafficCarStartime[99] = 45012.0000 TrafficCarModel[99] = emperor TrafficCarPos[100] = <<1881.0796, 2420.8135, 53.9370>> TrafficCarQuatX[100] = -0.0009 TrafficCarQuatY[100] = -0.0044 TrafficCarQuatZ[100] = 0.9667 TrafficCarQuatW[100] = 0.2560 TrafficCarRecording[100] = 101 TrafficCarStartime[100] = 45606.0000 TrafficCarModel[100] = asterope TrafficCarPos[101] = <<1942.5637, 2449.5076, 53.9608>> TrafficCarQuatX[101] = 0.0000 TrafficCarQuatY[101] = -0.0000 TrafficCarQuatZ[101] = -0.2572 TrafficCarQuatW[101] = 0.9664 TrafficCarRecording[101] = 102 TrafficCarStartime[101] = 45936.0000 TrafficCarModel[101] = asterope TrafficCarPos[102] = <<1919.2661, 2471.7690, 55.0404>> TrafficCarQuatX[102] = -0.0002 TrafficCarQuatY[102] = -0.0007 TrafficCarQuatZ[102] = 0.9583 TrafficCarQuatW[102] = 0.2858 TrafficCarRecording[102] = 103 TrafficCarStartime[102] = 46332.0000 TrafficCarModel[102] = Mule TrafficCarPos[103] = <<1959.3350, 2493.4661, 54.0472>> TrafficCarQuatX[103] = -0.0000 TrafficCarQuatY[103] = -0.0002 TrafficCarQuatZ[103] = -0.2531 TrafficCarQuatW[103] = 0.9674 TrafficCarRecording[103] = 104 TrafficCarStartime[103] = 46860.0000 TrafficCarModel[103] = minivan TrafficCarPos[104] = <<1922.3114, 2504.7466, 54.3150>> TrafficCarQuatX[104] = 0.0003 TrafficCarQuatY[104] = -0.0003 TrafficCarQuatZ[104] = 0.9483 TrafficCarQuatW[104] = 0.3174 TrafficCarRecording[104] = 105 TrafficCarStartime[104] = 46926.0000 TrafficCarModel[104] = minivan TrafficCarPos[105] = <<1923.5302, 2514.6523, 54.2393>> TrafficCarQuatX[105] = -0.0009 TrafficCarQuatY[105] = -0.0014 TrafficCarQuatZ[105] = 0.9517 TrafficCarQuatW[105] = 0.3071 TrafficCarRecording[105] = 106 TrafficCarStartime[105] = 47124.0000 TrafficCarModel[105] = asterope TrafficCarPos[106] = <<1973.2681, 2514.6934, 54.3217>> TrafficCarQuatX[106] = 0.0003 TrafficCarQuatY[106] = -0.0001 TrafficCarQuatZ[106] = -0.3002 TrafficCarQuatW[106] = 0.9539 TrafficCarRecording[106] = 107 TrafficCarStartime[106] = 47322.0000 TrafficCarModel[106] = minivan TrafficCarPos[107] = <<1980.1942, 2510.0784, 54.7849>> TrafficCarQuatX[107] = -0.0006 TrafficCarQuatY[107] = -0.0000 TrafficCarQuatZ[107] = -0.3186 TrafficCarQuatW[107] = 0.9479 TrafficCarRecording[107] = 108 TrafficCarStartime[107] = 47586.0000 TrafficCarModel[107] = Mule TrafficCarPos[108] = <<1927.3007, 2511.6277, 54.0738>> TrafficCarQuatX[108] = -0.0006 TrafficCarQuatY[108] = -0.0019 TrafficCarQuatZ[108] = 0.9542 TrafficCarQuatW[108] = 0.2992 TrafficCarRecording[108] = 109 TrafficCarStartime[108] = 47718.0000 TrafficCarModel[108] = emperor TrafficCarPos[109] = <<1978.6078, 2570.1250, 54.0438>> TrafficCarQuatX[109] = 0.0003 TrafficCarQuatY[109] = 0.0009 TrafficCarQuatZ[109] = 0.9199 TrafficCarQuatW[109] = 0.3921 TrafficCarRecording[109] = 110 TrafficCarStartime[109] = 48444.0000 TrafficCarModel[109] = emperor TrafficCarPos[110] = <<1978.6371, 2577.6123, 54.2875>> TrafficCarQuatX[110] = 0.0017 TrafficCarQuatY[110] = 0.0005 TrafficCarQuatZ[110] = 0.9266 TrafficCarQuatW[110] = 0.3761 TrafficCarRecording[110] = 111 TrafficCarStartime[110] = 48510.0000 TrafficCarModel[110] = minivan TrafficCarPos[111] = <<2025.8209, 2557.6570, 54.3789>> TrafficCarQuatX[111] = -0.0047 TrafficCarQuatY[111] = -0.0141 TrafficCarQuatZ[111] = -0.3716 TrafficCarQuatW[111] = 0.9283 TrafficCarRecording[111] = 112 TrafficCarStartime[111] = 48708.0000 TrafficCarModel[111] = minivan TrafficCarPos[112] = <<2044.8674, 2576.5210, 53.6568>> TrafficCarQuatX[112] = -0.0123 TrafficCarQuatY[112] = 0.0049 TrafficCarQuatZ[112] = -0.4343 TrafficCarQuatW[112] = 0.9007 TrafficCarRecording[112] = 113 TrafficCarStartime[112] = 49104.0000 TrafficCarModel[112] = asterope TrafficCarPos[113] = <<2035.2405, 2575.0334, 53.9560>> TrafficCarQuatX[113] = -0.0042 TrafficCarQuatY[113] = 0.0054 TrafficCarQuatZ[113] = -0.3938 TrafficCarQuatW[113] = 0.9192 TrafficCarRecording[113] = 114 TrafficCarStartime[113] = 49302.0000 TrafficCarModel[113] = minivan TrafficCarPos[114] = <<2034.0126, 2613.8088, 53.9144>> TrafficCarQuatX[114] = -0.0026 TrafficCarQuatY[114] = 0.0158 TrafficCarQuatZ[114] = 0.9120 TrafficCarQuatW[114] = 0.4100 TrafficCarRecording[114] = 115 TrafficCarStartime[114] = 49632.0000 TrafficCarModel[114] = Mule TrafficCarPos[115] = <<2082.6130, 2618.1206, 52.2736>> TrafficCarQuatX[115] = -0.0150 TrafficCarQuatY[115] = 0.0061 TrafficCarQuatZ[115] = -0.4216 TrafficCarQuatW[115] = 0.9066 TrafficCarRecording[115] = 116 TrafficCarStartime[115] = 50226.0000 TrafficCarModel[115] = minivan TrafficCarPos[116] = <<2074.0278, 2642.6331, 51.7169>> TrafficCarQuatX[116] = 0.0077 TrafficCarQuatY[116] = 0.0159 TrafficCarQuatZ[116] = 0.9037 TrafficCarQuatW[116] = 0.4278 TrafficCarRecording[116] = 117 TrafficCarStartime[116] = 50556.0000 TrafficCarModel[116] = emperor TrafficCarPos[117] = <<2100.8926, 2629.0205, 51.3350>> TrafficCarQuatX[117] = -0.0147 TrafficCarQuatY[117] = 0.0073 TrafficCarQuatZ[117] = -0.2968 TrafficCarQuatW[117] = 0.9548 TrafficCarRecording[117] = 118 TrafficCarStartime[117] = 51150.0000 TrafficCarModel[117] = minivan TrafficCarPos[118] = <<2102.9087, 2675.5833, 50.9682>> TrafficCarQuatX[118] = 0.0123 TrafficCarQuatY[118] = 0.0138 TrafficCarQuatZ[118] = 0.9176 TrafficCarQuatW[118] = 0.3970 TrafficCarRecording[118] = 119 TrafficCarStartime[118] = 51348.0000 TrafficCarModel[118] = Mule TrafficCarPos[119] = <<2096.3523, 2662.0562, 50.7263>> TrafficCarQuatX[119] = 0.0060 TrafficCarQuatY[119] = 0.0159 TrafficCarQuatZ[119] = 0.9315 TrafficCarQuatW[119] = 0.3634 TrafficCarRecording[119] = 120 TrafficCarStartime[119] = 51546.0000 TrafficCarModel[119] = asterope TrafficCarPos[120] = <<2139.4839, 2709.6846, 48.5264>> TrafficCarQuatX[120] = 0.0083 TrafficCarQuatY[120] = 0.0169 TrafficCarQuatZ[120] = 0.9252 TrafficCarQuatW[120] = 0.3790 TrafficCarRecording[120] = 121 TrafficCarStartime[120] = 52338.0000 TrafficCarModel[120] = asterope TrafficCarPos[121] = <<2158.1047, 2682.1785, 48.5176>> TrafficCarQuatX[121] = -0.0233 TrafficCarQuatY[121] = -0.0056 TrafficCarQuatZ[121] = -0.4217 TrafficCarQuatW[121] = 0.9064 TrafficCarRecording[121] = 122 TrafficCarStartime[121] = 52338.0000 TrafficCarModel[121] = emperor TrafficCarPos[122] = <<2150.6326, 2676.2463, 49.1083>> TrafficCarQuatX[122] = -0.0175 TrafficCarQuatY[122] = 0.0035 TrafficCarQuatZ[122] = -0.3898 TrafficCarQuatW[122] = 0.9207 TrafficCarRecording[122] = 123 TrafficCarStartime[122] = 52536.0000 TrafficCarModel[122] = minivan TrafficCarPos[123] = <<2157.3115, 2720.8997, 47.7763>> TrafficCarQuatX[123] = 0.0129 TrafficCarQuatY[123] = 0.0152 TrafficCarQuatZ[123] = 0.9163 TrafficCarQuatW[123] = 0.4000 TrafficCarRecording[123] = 124 TrafficCarStartime[123] = 52668.0000 TrafficCarModel[123] = minivan TrafficCarPos[124] = <<2161.8943, 2732.9780, 47.1336>> TrafficCarQuatX[124] = 0.0040 TrafficCarQuatY[124] = 0.0190 TrafficCarQuatZ[124] = 0.9056 TrafficCarQuatW[124] = 0.4237 TrafficCarRecording[124] = 125 TrafficCarStartime[124] = 52998.0000 TrafficCarModel[124] = asterope TrafficCarPos[125] = <<2165.2139, 2735.3638, 46.9517>> TrafficCarQuatX[125] = 0.0054 TrafficCarQuatY[125] = 0.0190 TrafficCarQuatZ[125] = 0.9231 TrafficCarQuatW[125] = 0.3839 TrafficCarRecording[125] = 126 TrafficCarStartime[125] = 53328.0000 TrafficCarModel[125] = emperor TrafficCarPos[126] = <<2168.5723, 2731.1460, 47.1710>> TrafficCarQuatX[126] = 0.0160 TrafficCarQuatY[126] = 0.0146 TrafficCarQuatZ[126] = 0.9366 TrafficCarQuatW[126] = 0.3497 TrafficCarRecording[126] = 127 TrafficCarStartime[126] = 53460.0000 TrafficCarModel[126] = minivan // TrafficCarPos[127] = <<2204.8955, 2736.4832, 45.7908>> // TrafficCarQuatX[127] = -0.0174 // TrafficCarQuatY[127] = 0.0086 // TrafficCarQuatZ[127] = -0.4340 // TrafficCarQuatW[127] = 0.9007 // TrafficCarRecording[127] = 128 // TrafficCarStartime[127] = 53724.0000 // TrafficCarModel[127] = asterope TrafficCarPos[128] = <<2204.3203, 2729.6499, 46.0701>> TrafficCarQuatX[128] = -0.0151 TrafficCarQuatY[128] = 0.0134 TrafficCarQuatZ[128] = -0.4697 TrafficCarQuatW[128] = 0.8826 TrafficCarRecording[128] = 129 TrafficCarStartime[128] = 53856.0000 TrafficCarModel[128] = asterope TrafficCarPos[129] = <<2223.9238, 2745.0034, 44.8964>> TrafficCarQuatX[129] = -0.0148 TrafficCarQuatY[129] = 0.0123 TrafficCarQuatZ[129] = -0.4397 TrafficCarQuatW[129] = 0.8980 TrafficCarRecording[129] = 130 TrafficCarStartime[129] = 54252.0000 TrafficCarModel[129] = minivan TrafficCarPos[130] = <<2235.4163, 2785.0027, 43.9190>> TrafficCarQuatX[130] = 0.0114 TrafficCarQuatY[130] = 0.0146 TrafficCarQuatZ[130] = 0.9048 TrafficCarQuatW[130] = 0.4254 TrafficCarRecording[130] = 131 TrafficCarStartime[130] = 54516.0000 TrafficCarModel[130] = minivan // TrafficCarPos[131] = <<2255.6169, 2777.0356, 43.2626>> // TrafficCarQuatX[131] = -0.0177 // TrafficCarQuatY[131] = 0.0032 // TrafficCarQuatZ[131] = -0.4113 // TrafficCarQuatW[131] = 0.9113 // TrafficCarRecording[131] = 132 // TrafficCarStartime[131] = 54780.0000 // TrafficCarModel[131] = minivan TrafficCarPos[132] = <<2245.4656, 2799.8049, 43.1371>> TrafficCarQuatX[132] = 0.0068 TrafficCarQuatY[132] = 0.0152 TrafficCarQuatZ[132] = 0.9105 TrafficCarQuatW[132] = 0.4132 TrafficCarRecording[132] = 133 TrafficCarStartime[132] = 54912.0000 TrafficCarModel[132] = asterope TrafficCarPos[133] = <<2266.8672, 2784.8850, 42.9903>> TrafficCarQuatX[133] = -0.0177 TrafficCarQuatY[133] = 0.0036 TrafficCarQuatZ[133] = -0.4714 TrafficCarQuatW[133] = 0.8817 TrafficCarRecording[133] = 134 TrafficCarStartime[133] = 55374.0000 TrafficCarModel[133] = asterope TrafficCarPos[134] = <<2283.8840, 2797.6458, 42.0955>> TrafficCarQuatX[134] = -0.0178 TrafficCarQuatY[134] = -0.0002 TrafficCarQuatZ[134] = -0.4409 TrafficCarQuatW[134] = 0.8974 TrafficCarRecording[134] = 135 TrafficCarStartime[134] = 55506.0000 TrafficCarModel[134] = emperor TrafficCarPos[135] = <<2266.4207, 2815.7029, 42.4122>> TrafficCarQuatX[135] = 0.0006 TrafficCarQuatY[135] = 0.0160 TrafficCarQuatZ[135] = 0.8986 TrafficCarQuatW[135] = 0.4385 TrafficCarRecording[135] = 136 TrafficCarStartime[135] = 55638.0000 TrafficCarModel[135] = minivan TrafficCarPos[136] = <<2278.1692, 2793.7195, 42.5558>> TrafficCarQuatX[136] = -0.0181 TrafficCarQuatY[136] = -0.0022 TrafficCarQuatZ[136] = -0.4076 TrafficCarQuatW[136] = 0.9130 TrafficCarRecording[136] = 137 TrafficCarStartime[136] = 55770.0000 TrafficCarModel[136] = minivan TrafficCarPos[137] = <<2288.3352, 2826.1553, 41.7135>> TrafficCarQuatX[137] = 0.0093 TrafficCarQuatY[137] = 0.0108 TrafficCarQuatZ[137] = 0.8790 TrafficCarQuatW[137] = 0.4765 TrafficCarRecording[137] = 138 TrafficCarStartime[137] = 55968.0000 TrafficCarModel[137] = minivan TrafficCarPos[138] = <<2307.5479, 2840.0693, 40.9374>> TrafficCarQuatX[138] = 0.0082 TrafficCarQuatY[138] = 0.0077 TrafficCarQuatZ[138] = 0.9129 TrafficCarQuatW[138] = 0.4081 TrafficCarRecording[138] = 139 TrafficCarStartime[138] = 56364.0000 TrafficCarModel[138] = asterope TrafficCarPos[139] = <<2347.1609, 2876.9775, 40.2483>> TrafficCarQuatX[139] = -0.0009 TrafficCarQuatY[139] = 0.0054 TrafficCarQuatZ[139] = 0.9061 TrafficCarQuatW[139] = 0.4231 TrafficCarRecording[139] = 140 TrafficCarStartime[139] = 57420.0000 TrafficCarModel[139] = minivan TrafficCarPos[140] = <<2353.2888, 2843.3313, 40.1427>> TrafficCarQuatX[140] = -0.0013 TrafficCarQuatY[140] = 0.0130 TrafficCarQuatZ[140] = -0.4505 TrafficCarQuatW[140] = 0.8927 TrafficCarRecording[140] = 141 TrafficCarStartime[140] = 57420.0000 TrafficCarModel[140] = emperor TrafficCarPos[141] = <<2345.4990, 2845.3132, 40.1960>> TrafficCarQuatX[141] = -0.0105 TrafficCarQuatY[141] = -0.0046 TrafficCarQuatZ[141] = -0.4457 TrafficCarQuatW[141] = 0.8951 TrafficCarRecording[141] = 142 TrafficCarStartime[141] = 58080.0000 TrafficCarModel[141] = minivan TrafficCarPos[142] = <<2393.7900, 2875.5859, 39.6648>> TrafficCarQuatX[142] = 0.0016 TrafficCarQuatY[142] = 0.0069 TrafficCarQuatZ[142] = -0.4279 TrafficCarQuatW[142] = 0.9038 TrafficCarRecording[142] = 143 TrafficCarStartime[142] = 58146.0000 TrafficCarModel[142] = minivan TrafficCarPos[143] = <<2376.0623, 2899.5327, 39.7828>> TrafficCarQuatX[143] = -0.0036 TrafficCarQuatY[143] = 0.0024 TrafficCarQuatZ[143] = 0.9093 TrafficCarQuatW[143] = 0.4160 TrafficCarRecording[143] = 144 TrafficCarStartime[143] = 58212.0000 TrafficCarModel[143] = emperor TrafficCarPos[144] = <<2431.8914, 2860.4575, 48.4824>> TrafficCarQuatX[144] = 0.0078 TrafficCarQuatY[144] = 0.0040 TrafficCarQuatZ[144] = -0.4613 TrafficCarQuatW[144] = 0.8872 TrafficCarRecording[144] = 145 TrafficCarStartime[144] = 58476.0000 TrafficCarModel[144] = emperor TrafficCarPos[145] = <<2437.6814, 2853.6606, 48.6681>> TrafficCarQuatX[145] = -0.0023 TrafficCarQuatY[145] = 0.0016 TrafficCarQuatZ[145] = 0.7530 TrafficCarQuatW[145] = -0.6581 TrafficCarRecording[145] = 146 TrafficCarStartime[145] = 58542.0000 TrafficCarModel[145] = minivan // TrafficCarPos[146] = <<2424.0815, 2899.4736, 40.0331>> // TrafficCarQuatX[146] = 0.0047 // TrafficCarQuatY[146] = 0.0064 // TrafficCarQuatZ[146] = -0.4331 // TrafficCarQuatW[146] = 0.9013 // TrafficCarRecording[146] = 147 // TrafficCarStartime[146] = 58806.0000 // TrafficCarModel[146] = minivan // // TrafficCarPos[147] = <<2429.8965, 2911.9617, 39.8643>> // TrafficCarQuatX[147] = -0.0006 // TrafficCarQuatY[147] = -0.0049 // TrafficCarQuatZ[147] = -0.4606 // TrafficCarQuatW[147] = 0.8876 // TrafficCarRecording[147] = 148 // TrafficCarStartime[147] = 59070.0000 // TrafficCarModel[147] = emperor TrafficCarPos[148] = <<2423.1223, 2899.4880, 39.7634>> TrafficCarQuatX[148] = 0.0048 TrafficCarQuatY[148] = 0.0070 TrafficCarQuatZ[148] = -0.3871 TrafficCarQuatW[148] = 0.9220 TrafficCarRecording[148] = 149 TrafficCarStartime[148] = 59334.0000 TrafficCarModel[148] = minivan TrafficCarPos[149] = <<2443.4436, 2922.7126, 40.1022>> TrafficCarQuatX[149] = -0.0115 TrafficCarQuatY[149] = -0.0064 TrafficCarQuatZ[149] = -0.3552 TrafficCarQuatW[149] = 0.9347 TrafficCarRecording[149] = 150 TrafficCarStartime[149] = 59598.0000 TrafficCarModel[149] = asterope TrafficCarPos[150] = <<2461.1191, 2971.0920, 40.4965>> TrafficCarQuatX[150] = -0.0027 TrafficCarQuatY[150] = -0.0056 TrafficCarQuatZ[150] = 0.9087 TrafficCarQuatW[150] = 0.4173 TrafficCarRecording[150] = 151 TrafficCarStartime[150] = 60192.0000 TrafficCarModel[150] = asterope // TrafficCarPos[151] = <<2500.0269, 2965.3242, 40.9798>> // TrafficCarQuatX[151] = 0.0070 // TrafficCarQuatY[151] = -0.0001 // TrafficCarQuatZ[151] = -0.4009 // TrafficCarQuatW[151] = 0.9161 // TrafficCarRecording[151] = 152 // TrafficCarStartime[151] = 60654.0000 // TrafficCarModel[151] = minivan TrafficCarPos[152] = <<2478.9807, 2986.5122, 40.8035>> TrafficCarQuatX[152] = -0.0028 TrafficCarQuatY[152] = -0.0060 TrafficCarQuatZ[152] = 0.9128 TrafficCarQuatW[152] = 0.4083 TrafficCarRecording[152] = 153 TrafficCarStartime[152] = 60786.0000 TrafficCarModel[152] = asterope TrafficCarPos[153] = <<2526.0459, 2987.5046, 41.3395>> TrafficCarQuatX[153] = 0.0115 TrafficCarQuatY[153] = -0.0008 TrafficCarQuatZ[153] = -0.4057 TrafficCarQuatW[153] = 0.9139 TrafficCarRecording[153] = 154 TrafficCarStartime[153] = 61380.0000 TrafficCarModel[153] = asterope TrafficCarPos[154] = <<2541.4512, 3001.8245, 41.8341>> TrafficCarQuatX[154] = 0.0160 TrafficCarQuatY[154] = -0.0028 TrafficCarQuatZ[154] = -0.4384 TrafficCarQuatW[154] = 0.8986 TrafficCarRecording[154] = 155 TrafficCarStartime[154] = 61710.0000 TrafficCarModel[154] = minivan // TrafficCarPos[155] = <<2546.9021, 3015.0061, 42.5364>> // TrafficCarQuatX[155] = 0.0149 // TrafficCarQuatY[155] = -0.0086 // TrafficCarQuatZ[155] = -0.3904 // TrafficCarQuatW[155] = 0.9205 // TrafficCarRecording[155] = 156 // TrafficCarStartime[155] = 61908.0000 // TrafficCarModel[155] = minivan TrafficCarPos[156] = <<2488.6902, 2995.3376, 40.9617>> TrafficCarQuatX[156] = -0.0026 TrafficCarQuatY[156] = -0.0060 TrafficCarQuatZ[156] = 0.9098 TrafficCarQuatW[156] = 0.4149 TrafficCarRecording[156] = 157 TrafficCarStartime[156] = 61974.0000 TrafficCarModel[156] = asterope // TrafficCarPos[157] = <<2545.3433, 3012.3589, 42.1836>> // TrafficCarQuatX[157] = 0.0123 // TrafficCarQuatY[157] = -0.0105 // TrafficCarQuatZ[157] = -0.4339 // TrafficCarQuatW[157] = 0.9008 // TrafficCarRecording[157] = 158 // TrafficCarStartime[157] = 62304.0000 // TrafficCarModel[157] = emperor TrafficCarPos[158] = <<2592.3665, 3056.7212, 45.2098>> TrafficCarQuatX[158] = 0.0221 TrafficCarQuatY[158] = -0.0095 TrafficCarQuatZ[158] = -0.3915 TrafficCarQuatW[158] = 0.9199 TrafficCarRecording[158] = 159 TrafficCarStartime[158] = 63096.0000 TrafficCarModel[158] = minivan TrafficCarPos[159] = <<2622.8523, 3091.0662, 47.3566>> TrafficCarQuatX[159] = 0.0239 TrafficCarQuatY[159] = -0.0086 TrafficCarQuatZ[159] = -0.3428 TrafficCarQuatW[159] = 0.9391 TrafficCarRecording[159] = 160 TrafficCarStartime[159] = 64020.0000 TrafficCarModel[159] = asterope TrafficCarPos[160] = <<2610.3125, 3112.6821, 47.6941>> TrafficCarQuatX[160] = -0.0083 TrafficCarQuatY[160] = -0.0242 TrafficCarQuatZ[160] = 0.9453 TrafficCarQuatW[160] = 0.3251 TrafficCarRecording[160] = 161 TrafficCarStartime[160] = 64152.0000 TrafficCarModel[160] = emperor TrafficCarPos[161] = <<2646.1172, 3116.8943, 49.0079>> TrafficCarQuatX[161] = 0.0228 TrafficCarQuatY[161] = -0.0081 TrafficCarQuatZ[161] = -0.3662 TrafficCarQuatW[161] = 0.9302 TrafficCarRecording[161] = 162 TrafficCarStartime[161] = 64680.0000 TrafficCarModel[161] = minivan TrafficCarPos[162] = <<2637.1482, 3137.2964, 49.7730>> TrafficCarQuatX[162] = -0.0085 TrafficCarQuatY[162] = -0.0225 TrafficCarQuatZ[162] = 0.9470 TrafficCarQuatW[162] = 0.3205 TrafficCarRecording[162] = 163 TrafficCarStartime[162] = 64878.0000 TrafficCarModel[162] = minivan // TrafficCarPos[163] = <<2661.3721, 3128.3782, 50.1556>> // TrafficCarQuatX[163] = 0.0220 // TrafficCarQuatY[163] = -0.0072 // TrafficCarQuatZ[163] = -0.3245 // TrafficCarQuatW[163] = 0.9456 // TrafficCarRecording[163] = 164 // TrafficCarStartime[163] = 65076.0000 // TrafficCarModel[163] = minivan // TrafficCarPos[164] = <<2645.6206, 3108.5300, 48.6881>> // TrafficCarQuatX[164] = 0.0241 // TrafficCarQuatY[164] = -0.0044 // TrafficCarQuatZ[164] = -0.3356 // TrafficCarQuatW[164] = 0.9417 // TrafficCarRecording[164] = 165 // TrafficCarStartime[164] = 65274.0000 // TrafficCarModel[164] = emperor TrafficCarPos[165] = <<2665.6265, 3175.4021, 51.7303>> TrafficCarQuatX[165] = -0.0060 TrafficCarQuatY[165] = -0.0194 TrafficCarQuatZ[165] = 0.9567 TrafficCarQuatW[165] = 0.2902 TrafficCarRecording[165] = 166 TrafficCarStartime[165] = 65934.0000 TrafficCarModel[165] = asterope TrafficCarPos[166] = <<2668.3545, 3180.0718, 51.9595>> TrafficCarQuatX[166] = -0.0054 TrafficCarQuatY[166] = -0.0191 TrafficCarQuatZ[166] = 0.9583 TrafficCarQuatW[166] = 0.2850 TrafficCarRecording[166] = 167 TrafficCarStartime[166] = 66396.0000 TrafficCarModel[166] = asterope TrafficCarPos[167] = <<2704.1785, 3199.5823, 53.4408>> TrafficCarQuatX[167] = 0.0155 TrafficCarQuatY[167] = -0.0043 TrafficCarQuatZ[167] = -0.2745 TrafficCarQuatW[167] = 0.9615 TrafficCarRecording[167] = 168 TrafficCarStartime[167] = 66792.0000 TrafficCarModel[167] = minivan TrafficCarPos[168] = <<2696.9309, 3187.3430, 52.7233>> TrafficCarQuatX[168] = 0.0165 TrafficCarQuatY[168] = -0.0042 TrafficCarQuatZ[168] = -0.2499 TrafficCarQuatW[168] = 0.9681 TrafficCarRecording[168] = 169 TrafficCarStartime[168] = 66990.0000 TrafficCarModel[168] = emperor TrafficCarPos[169] = <<2745.0408, 3260.3135, 55.0390>> TrafficCarQuatX[169] = 0.0089 TrafficCarQuatY[169] = 0.0007 TrafficCarQuatZ[169] = -0.2473 TrafficCarQuatW[169] = 0.9689 TrafficCarRecording[169] = 170 TrafficCarStartime[169] = 68112.0000 TrafficCarModel[169] = asterope TrafficCarPos[170] = <<2766.0090, 3302.2466, 55.5060>> TrafficCarQuatX[170] = 0.0044 TrafficCarQuatY[170] = -0.0010 TrafficCarQuatZ[170] = -0.1799 TrafficCarQuatW[170] = 0.9837 TrafficCarRecording[170] = 171 TrafficCarStartime[170] = 69234.0000 TrafficCarModel[170] = minivan TrafficCarPos[171] = <<2773.7832, 3320.9487, 55.8819>> TrafficCarQuatX[171] = 0.0016 TrafficCarQuatY[171] = -0.0002 TrafficCarQuatZ[171] = -0.2109 TrafficCarQuatW[171] = 0.9775 TrafficCarRecording[171] = 172 TrafficCarStartime[171] = 69498.0000 TrafficCarModel[171] = minivan // TrafficCarPos[172] = <<2766.6729, 3316.8103, 55.6176>> // TrafficCarQuatX[172] = 0.0019 // TrafficCarQuatY[172] = -0.0005 // TrafficCarQuatZ[172] = -0.2454 // TrafficCarQuatW[172] = 0.9694 // TrafficCarRecording[172] = 173 // TrafficCarStartime[172] = 69762.0000 // TrafficCarModel[172] = emperor // TrafficCarPos[173] = <<2782.7380, 3339.6160, 55.7284>> // TrafficCarQuatX[173] = 0.0000 // TrafficCarQuatY[173] = 0.0002 // TrafficCarQuatZ[173] = -0.1704 // TrafficCarQuatW[173] = 0.9854 // TrafficCarRecording[173] = 174 // TrafficCarStartime[173] = 70224.0000 // TrafficCarModel[173] = asterope TrafficCarPos[174] = <<2806.5112, 3409.5461, 55.3729>> TrafficCarQuatX[174] = -0.0039 TrafficCarQuatY[174] = 0.0009 TrafficCarQuatZ[174] = -0.2034 TrafficCarQuatW[174] = 0.9791 TrafficCarRecording[174] = 175 TrafficCarStartime[174] = 71412.0000 TrafficCarModel[174] = asterope // TrafficCarPos[175] = <<2812.9497, 3408.1135, 55.5505>> // TrafficCarQuatX[175] = -0.0038 // TrafficCarQuatY[175] = 0.0009 // TrafficCarQuatZ[175] = -0.2035 // TrafficCarQuatW[175] = 0.9791 // TrafficCarRecording[175] = 176 // TrafficCarStartime[175] = 71412.0000 // TrafficCarModel[175] = minivan TrafficCarPos[176] = <<2812.2185, 3421.8411, 55.2114>> TrafficCarQuatX[176] = -0.0040 TrafficCarQuatY[176] = 0.0008 TrafficCarQuatZ[176] = -0.1992 TrafficCarQuatW[176] = 0.9799 TrafficCarRecording[176] = 177 TrafficCarStartime[176] = 71676.0000 TrafficCarModel[176] = emperor TrafficCarPos[177] = <<2789.7988, 3433.5957, 55.2778>> TrafficCarQuatX[177] = 0.0014 TrafficCarQuatY[177] = 0.0052 TrafficCarQuatZ[177] = 0.9741 TrafficCarQuatW[177] = 0.2262 TrafficCarRecording[177] = 178 TrafficCarStartime[177] = 71742.0000 TrafficCarModel[177] = asterope TrafficCarPos[178] = <<2821.1392, 3430.9651, 55.0884>> TrafficCarQuatX[178] = -0.0039 TrafficCarQuatY[178] = 0.0004 TrafficCarQuatZ[178] = -0.1594 TrafficCarQuatW[178] = 0.9872 TrafficCarRecording[178] = 179 TrafficCarStartime[178] = 71940.0000 TrafficCarModel[178] = minivan TrafficCarPos[179] = <<2814.3210, 3478.4307, 54.8139>> TrafficCarQuatX[179] = 0.0019 TrafficCarQuatY[179] = 0.0068 TrafficCarQuatZ[179] = 0.9771 TrafficCarQuatW[179] = 0.2126 TrafficCarRecording[179] = 180 TrafficCarStartime[179] = 72798.0000 TrafficCarModel[179] = minivan TrafficCarPos[180] = <<2803.9612, 3466.0779, 54.7513>> TrafficCarQuatX[180] = 0.0016 TrafficCarQuatY[180] = 0.0066 TrafficCarQuatZ[180] = 0.9723 TrafficCarQuatW[180] = 0.2335 TrafficCarRecording[180] = 181 TrafficCarStartime[180] = 73128.0000 TrafficCarModel[180] = minivan TrafficCarPos[181] = <<2847.7361, 3505.2705, 54.2615>> TrafficCarQuatX[181] = -0.0076 TrafficCarQuatY[181] = 0.0013 TrafficCarQuatZ[181] = -0.1921 TrafficCarQuatW[181] = 0.9814 TrafficCarRecording[181] = 182 TrafficCarStartime[181] = 73854.0000 TrafficCarModel[181] = minivan // TrafficCarPos[182] = <<2857.5210, 3516.4604, 53.7994>> // TrafficCarQuatX[182] = -0.0078 // TrafficCarQuatY[182] = 0.0016 // TrafficCarQuatZ[182] = -0.1957 // TrafficCarQuatW[182] = 0.9806 // TrafficCarRecording[182] = 183 // TrafficCarStartime[182] = 74250.0000 // TrafficCarModel[182] = emperor TrafficCarPos[183] = <<2877.0220, 3588.1187, 52.8030>> TrafficCarQuatX[183] = -0.0076 TrafficCarQuatY[183] = 0.0011 TrafficCarQuatZ[183] = -0.1616 TrafficCarQuatW[183] = 0.9868 TrafficCarRecording[183] = 184 TrafficCarStartime[183] = 75240.0000 TrafficCarModel[183] = minivan TrafficCarPos[184] = <<2879.7188, 3577.6648, 52.7755>> TrafficCarQuatX[184] = -0.0077 TrafficCarQuatY[184] = 0.0015 TrafficCarQuatZ[184] = -0.1889 TrafficCarQuatW[184] = 0.9820 TrafficCarRecording[184] = 185 TrafficCarStartime[184] = 75570.0000 TrafficCarModel[184] = asterope TrafficCarPos[185] = <<2865.0088, 3612.8206, 52.2994>> TrafficCarQuatX[185] = 0.0008 TrafficCarQuatY[185] = 0.0041 TrafficCarQuatZ[185] = 0.9899 TrafficCarQuatW[185] = 0.1414 TrafficCarRecording[185] = 186 TrafficCarStartime[185] = 75636.0000 TrafficCarModel[185] = asterope TrafficCarPos[186] = <<2858.7224, 3611.3376, 52.5330>> TrafficCarQuatX[186] = -0.0042 TrafficCarQuatY[186] = 0.0082 TrafficCarQuatZ[186] = 0.9904 TrafficCarQuatW[186] = 0.1376 TrafficCarRecording[186] = 187 TrafficCarStartime[186] = 75768.0000 TrafficCarModel[186] = minivan // TrafficCarPos[187] = <<2888.3115, 3603.8743, 52.2723>> // TrafficCarQuatX[187] = -0.0066 // TrafficCarQuatY[187] = 0.0015 // TrafficCarQuatZ[187] = -0.1903 // TrafficCarQuatW[187] = 0.9817 // TrafficCarRecording[187] = 188 // TrafficCarStartime[187] = 76098.0000 // TrafficCarModel[187] = minivan TrafficCarPos[188] = <<2871.3333, 3659.2446, 52.2244>> TrafficCarQuatX[188] = 0.0001 TrafficCarQuatY[188] = -0.0000 TrafficCarQuatZ[188] = 0.9890 TrafficCarQuatW[188] = 0.1480 TrafficCarRecording[188] = 189 TrafficCarStartime[188] = 76626.0000 TrafficCarModel[188] = asterope TrafficCarPos[189] = <<2875.5686, 3652.1323, 52.2426>> TrafficCarQuatX[189] = 0.0002 TrafficCarQuatY[189] = -0.0000 TrafficCarQuatZ[189] = 0.9862 TrafficCarQuatW[189] = 0.1656 TrafficCarRecording[189] = 190 TrafficCarStartime[189] = 76890.0000 TrafficCarModel[189] = asterope TrafficCarPos[190] = <<2905.4819, 3668.8877, 52.2389>> TrafficCarQuatX[190] = 0.0000 TrafficCarQuatY[190] = 0.0000 TrafficCarQuatZ[190] = -0.1334 TrafficCarQuatW[190] = 0.9911 TrafficCarRecording[190] = 191 TrafficCarStartime[190] = 76956.0000 TrafficCarModel[190] = asterope // TrafficCarPos[191] = <<2902.5149, 3679.3806, 52.2028>> // TrafficCarQuatX[191] = 0.0009 // TrafficCarQuatY[191] = -0.0001 // TrafficCarQuatZ[191] = -0.0748 // TrafficCarQuatW[191] = 0.9972 // TrafficCarRecording[191] = 192 // TrafficCarStartime[191] = 77880.0000 // TrafficCarModel[191] = Vader // TrafficCarPos[192] = <<2914.3647, 3719.2368, 52.1600>> // TrafficCarQuatX[192] = -0.0005 // TrafficCarQuatY[192] = 0.0000 // TrafficCarQuatZ[192] = -0.1458 // TrafficCarQuatW[192] = 0.9893 // TrafficCarRecording[192] = 193 // TrafficCarStartime[192] = 77946.0000 // TrafficCarModel[192] = emperor // TrafficCarPos[193] = <<2903.5320, 3753.4880, 52.1987>> // TrafficCarQuatX[193] = -0.0000 // TrafficCarQuatY[193] = 0.0009 // TrafficCarQuatZ[193] = 0.9940 // TrafficCarQuatW[193] = 0.1092 // TrafficCarRecording[193] = 194 // TrafficCarStartime[193] = 78606.0000 // TrafficCarModel[193] = Vader // TrafficCarPos[194] = <<2909.9712, 3703.8149, 52.4099>> // TrafficCarQuatX[194] = -0.0002 // TrafficCarQuatY[194] = -0.0003 // TrafficCarQuatZ[194] = -0.1378 // TrafficCarQuatW[194] = 0.9905 // TrafficCarRecording[194] = 195 // TrafficCarStartime[194] = 78804.0000 // TrafficCarModel[194] = minivan TrafficCarPos[195] = <<2903.8784, 3758.2183, 52.4160>> TrafficCarQuatX[195] = 0.0001 TrafficCarQuatY[195] = 0.0004 TrafficCarQuatZ[195] = 0.9907 TrafficCarQuatW[195] = 0.1359 TrafficCarRecording[195] = 196 TrafficCarStartime[195] = 78936.0000 TrafficCarModel[195] = minivan TrafficCarPos[196] = <<2921.5320, 3747.8635, 52.4151>> TrafficCarQuatX[196] = -0.0004 TrafficCarQuatY[196] = 0.0014 TrafficCarQuatZ[196] = -0.1704 TrafficCarQuatW[196] = 0.9854 TrafficCarRecording[196] = 197 TrafficCarStartime[196] = 79068.0000 TrafficCarModel[196] = minivan // TrafficCarPos[197] = <<2933.3706, 3798.5608, 52.3470>> // TrafficCarQuatX[197] = -0.0011 // TrafficCarQuatY[197] = 0.0002 // TrafficCarQuatZ[197] = -0.0827 // TrafficCarQuatW[197] = 0.9966 // TrafficCarRecording[197] = 198 // TrafficCarStartime[197] = 79596.0000 // TrafficCarModel[197] = asterope TrafficCarPos[198] = <<2910.4014, 3810.9268, 52.1188>> TrafficCarQuatX[198] = 0.0001 TrafficCarQuatY[198] = 0.0013 TrafficCarQuatZ[198] = 0.9992 TrafficCarQuatW[198] = 0.0405 TrafficCarRecording[198] = 199 TrafficCarStartime[198] = 79794.0000 TrafficCarModel[198] = minivan TrafficCarPos[199] = <<2916.3674, 3820.1096, 52.1236>> TrafficCarQuatX[199] = -0.0001 TrafficCarQuatY[199] = 0.0021 TrafficCarQuatZ[199] = 0.9999 TrafficCarQuatW[199] = 0.0160 TrafficCarRecording[199] = 200 TrafficCarStartime[199] = 80124.0000 TrafficCarModel[199] = emperor TrafficCarPos[200] = <<2942.5574, 3832.1980, 52.3031>> TrafficCarQuatX[200] = -0.0019 TrafficCarQuatY[200] = 0.0001 TrafficCarQuatZ[200] = -0.0657 TrafficCarQuatW[200] = 0.9978 TrafficCarRecording[200] = 201 TrafficCarStartime[200] = 81444.0000 TrafficCarModel[200] = minivan TrafficCarPos[201] = <<2939.4863, 3896.6113, 51.8115>> TrafficCarQuatX[201] = -0.0032 TrafficCarQuatY[201] = -0.0000 TrafficCarQuatZ[201] = 0.0027 TrafficCarQuatW[201] = 1.0000 TrafficCarRecording[201] = 202 TrafficCarStartime[201] = 81510.0000 TrafficCarModel[201] = asterope // TrafficCarPos[202] = <<2945.4500, 3887.4250, 51.8027>> // TrafficCarQuatX[202] = -0.0032 // TrafficCarQuatY[202] = -0.0000 // TrafficCarQuatZ[202] = -0.0393 // TrafficCarQuatW[202] = 0.9992 // TrafficCarRecording[202] = 203 // TrafficCarStartime[202] = 81708.0000 // TrafficCarModel[202] = emperor // TrafficCarPos[203] = <<2940.0327, 3891.1279, 52.0222>> // TrafficCarQuatX[203] = -0.0033 // TrafficCarQuatY[203] = 0.0000 // TrafficCarQuatZ[203] = 0.0003 // TrafficCarQuatW[203] = 1.0000 // TrafficCarRecording[203] = 204 // TrafficCarStartime[203] = 81906.0000 // TrafficCarModel[203] = minivan // TrafficCarPos[204] = <<2939.9668, 3889.7473, 51.0329>> // TrafficCarQuatX[204] = -0.0316 // TrafficCarQuatY[204] = 0.0318 // TrafficCarQuatZ[204] = 0.0000 // TrafficCarQuatW[204] = 0.9990 // TrafficCarRecording[204] = 205 // TrafficCarStartime[204] = 81972.0000 // TrafficCarModel[204] = minivan // TrafficCarPos[205] = <<2938.9258, 3971.4851, 51.2215>> // TrafficCarQuatX[205] = -0.0039 // TrafficCarQuatY[205] = -0.0004 // TrafficCarQuatZ[205] = 0.0573 // TrafficCarQuatW[205] = 0.9983 // TrafficCarRecording[205] = 206 // TrafficCarStartime[205] = 83028.0000 // TrafficCarModel[205] = Vader TrafficCarPos[206] = <<2941.1116, 3958.0115, 51.5513>> TrafficCarQuatX[206] = -0.0038 TrafficCarQuatY[206] = -0.0016 TrafficCarQuatZ[206] = 0.0433 TrafficCarQuatW[206] = 0.9991 TrafficCarRecording[206] = 207 TrafficCarStartime[206] = 83292.0000 TrafficCarModel[206] = minivan // TrafficCarPos[207] = <<2930.9578, 4019.9880, 50.7709>> // TrafficCarQuatX[207] = -0.0042 // TrafficCarQuatY[207] = -0.0005 // TrafficCarQuatZ[207] = 0.1100 // TrafficCarQuatW[207] = 0.9939 // TrafficCarRecording[207] = 208 // TrafficCarStartime[207] = 84018.0000 // TrafficCarModel[207] = minivan // TrafficCarPos[208] = <<2932.2856, 4013.7095, 50.9161>> // TrafficCarQuatX[208] = -0.0043 // TrafficCarQuatY[208] = -0.0002 // TrafficCarQuatZ[208] = 0.0534 // TrafficCarQuatW[208] = 0.9986 // TrafficCarRecording[208] = 209 // TrafficCarStartime[208] = 84348.0000 // TrafficCarModel[208] = asterope // TrafficCarPos[209] = <<2926.6328, 4039.8433, 50.8801>> // TrafficCarQuatX[209] = -0.0039 // TrafficCarQuatY[209] = -0.0004 // TrafficCarQuatZ[209] = 0.1037 // TrafficCarQuatW[209] = 0.9946 // TrafficCarRecording[209] = 210 // TrafficCarStartime[209] = 84348.0000 // TrafficCarModel[209] = minivan TrafficCarPos[210] = <<2926.0823, 4017.5310, 51.0611>> TrafficCarQuatX[210] = -0.0042 TrafficCarQuatY[210] = -0.0018 TrafficCarQuatZ[210] = 0.0771 TrafficCarQuatW[210] = 0.9970 TrafficCarRecording[210] = 211 TrafficCarStartime[210] = 84480.0000 TrafficCarModel[210] = minivan TrafficCarPos[211] = <<2925.8696, 4016.1045, 50.8968>> TrafficCarQuatX[211] = -0.0042 TrafficCarQuatY[211] = -0.0003 TrafficCarQuatZ[211] = 0.1139 TrafficCarQuatW[211] = 0.9935 TrafficCarRecording[211] = 212 TrafficCarStartime[211] = 85140.0000 TrafficCarModel[211] = asterope TrafficCarPos[212] = <<2902.5908, 4129.4810, 50.1421>> TrafficCarQuatX[212] = -0.0017 TrafficCarQuatY[212] = -0.0004 TrafficCarQuatZ[212] = 0.1585 TrafficCarQuatW[212] = 0.9874 TrafficCarRecording[212] = 213 TrafficCarStartime[212] = 86262.0000 TrafficCarModel[212] = asterope TrafficCarPos[213] = <<2872.5837, 4122.1616, 49.9296>> TrafficCarQuatX[213] = -0.0004 TrafficCarQuatY[213] = 0.0031 TrafficCarQuatZ[213] = 0.9907 TrafficCarQuatW[213] = -0.1358 TrafficCarRecording[213] = 214 TrafficCarStartime[213] = 86262.0000 TrafficCarModel[213] = emperor TrafficCarPos[214] = <<2882.5388, 4110.0171, 50.2840>> TrafficCarQuatX[214] = 0.0007 TrafficCarQuatY[214] = 0.0034 TrafficCarQuatZ[214] = 0.9832 TrafficCarQuatW[214] = -0.1824 TrafficCarRecording[214] = 215 TrafficCarStartime[214] = 86526.0000 TrafficCarModel[214] = minivan // TrafficCarPos[215] = <<2887.2168, 4169.7148, 49.7477>> // TrafficCarQuatX[215] = -0.0005 // TrafficCarQuatY[215] = 0.0001 // TrafficCarQuatZ[215] = 0.1842 // TrafficCarQuatW[215] = 0.9829 // TrafficCarRecording[215] = 216 // TrafficCarStartime[215] = 87054.0000 // TrafficCarModel[215] = Vader TrafficCarPos[216] = <<2838.9204, 4220.8018, 49.8474>> TrafficCarQuatX[216] = -0.0005 TrafficCarQuatY[216] = -0.0008 TrafficCarQuatZ[216] = 0.9795 TrafficCarQuatW[216] = -0.2013 TrafficCarRecording[216] = 217 TrafficCarStartime[216] = 88374.0000 TrafficCarModel[216] = minivan TrafficCarPos[217] = <<2838.7207, 4233.9038, 49.6966>> TrafficCarQuatX[217] = 0.0003 TrafficCarQuatY[217] = -0.0010 TrafficCarQuatZ[217] = 0.9882 TrafficCarQuatW[217] = -0.1534 TrafficCarRecording[217] = 218 TrafficCarStartime[217] = 88638.0000 TrafficCarModel[217] = asterope TrafficCarPos[218] = <<2861.1074, 4254.6597, 49.6824>> TrafficCarQuatX[218] = 0.0013 TrafficCarQuatY[218] = 0.0001 TrafficCarQuatZ[218] = 0.1495 TrafficCarQuatW[218] = 0.9888 TrafficCarRecording[218] = 219 TrafficCarStartime[218] = 88836.0000 TrafficCarModel[218] = asterope TrafficCarPos[219] = <<2854.5920, 4258.1792, 49.6395>> TrafficCarQuatX[219] = 0.0015 TrafficCarQuatY[219] = 0.0001 TrafficCarQuatZ[219] = 0.1592 TrafficCarQuatW[219] = 0.9872 TrafficCarRecording[219] = 220 TrafficCarStartime[219] = 88968.0000 TrafficCarModel[219] = emperor TrafficCarPos[220] = <<2823.9988, 4256.2808, 49.9823>> TrafficCarQuatX[220] = 0.0063 TrafficCarQuatY[220] = -0.0003 TrafficCarQuatZ[220] = 0.9811 TrafficCarQuatW[220] = -0.1932 TrafficCarRecording[220] = 221 TrafficCarStartime[220] = 89166.0000 TrafficCarModel[220] = minivan TrafficCarPos[221] = <<2831.4854, 4251.9546, 49.7750>> TrafficCarQuatX[221] = -0.0035 TrafficCarQuatY[221] = -0.0023 TrafficCarQuatZ[221] = 0.9817 TrafficCarQuatW[221] = -0.1904 TrafficCarRecording[221] = 222 TrafficCarStartime[221] = 89430.0000 TrafficCarModel[221] = asterope TrafficCarPos[222] = <<2849.7661, 4287.1689, 49.6947>> TrafficCarQuatX[222] = 0.0007 TrafficCarQuatY[222] = -0.0002 TrafficCarQuatZ[222] = 0.1893 TrafficCarQuatW[222] = 0.9819 TrafficCarRecording[222] = 223 TrafficCarStartime[222] = 89496.0000 TrafficCarModel[222] = minivan TrafficCarPos[223] = <<2853.8042, 4277.0708, 49.9440>> TrafficCarQuatX[223] = 0.0019 TrafficCarQuatY[223] = -0.0014 TrafficCarQuatZ[223] = 0.1232 TrafficCarQuatW[223] = 0.9924 TrafficCarRecording[223] = 224 TrafficCarStartime[223] = 89628.0000 TrafficCarModel[223] = minivan // TrafficCarPos[224] = <<2807.2744, 4319.2813, 49.6917>> // TrafficCarQuatX[224] = -0.0046 // TrafficCarQuatY[224] = 0.0027 // TrafficCarQuatZ[224] = 0.9770 // TrafficCarQuatW[224] = -0.2131 // TrafficCarRecording[224] = 225 // TrafficCarStartime[224] = 90420.0000 // TrafficCarModel[224] = Vader TrafficCarPos[225] = <<2826.7432, 4358.8252, 49.4738>> TrafficCarQuatX[225] = -0.0056 TrafficCarQuatY[225] = -0.0011 TrafficCarQuatZ[225] = 0.1658 TrafficCarQuatW[225] = 0.9861 TrafficCarRecording[225] = 226 TrafficCarStartime[225] = 91014.0000 TrafficCarModel[225] = asterope TrafficCarPos[226] = <<2790.5518, 4346.2715, 49.4405>> TrafficCarQuatX[226] = -0.0012 TrafficCarQuatY[226] = 0.0065 TrafficCarQuatZ[226] = 0.9817 TrafficCarQuatW[226] = -0.1902 TrafficCarRecording[226] = 227 TrafficCarStartime[226] = 91014.0000 TrafficCarModel[226] = asterope TrafficCarPos[227] = <<2798.8682, 4337.9961, 49.7406>> TrafficCarQuatX[227] = -0.0030 TrafficCarQuatY[227] = 0.0040 TrafficCarQuatZ[227] = 0.9768 TrafficCarQuatW[227] = -0.2140 TrafficCarRecording[227] = 228 TrafficCarStartime[227] = 91344.0000 TrafficCarModel[227] = minivan TrafficCarPos[228] = <<2790.3762, 4346.4023, 49.3544>> TrafficCarQuatX[228] = -0.0015 TrafficCarQuatY[228] = 0.0069 TrafficCarQuatZ[228] = 0.9810 TrafficCarQuatW[228] = -0.1940 TrafficCarRecording[228] = 229 TrafficCarStartime[228] = 91608.0000 TrafficCarModel[228] = emperor TrafficCarPos[229] = <<2805.9817, 4392.1289, 48.9902>> TrafficCarQuatX[229] = -0.0079 TrafficCarQuatY[229] = -0.0017 TrafficCarQuatZ[229] = 0.1483 TrafficCarQuatW[229] = 0.9889 TrafficCarRecording[229] = 230 TrafficCarStartime[229] = 91806.0000 TrafficCarModel[229] = minivan TrafficCarPos[230] = <<2827.9146, 4412.4312, 48.4923>> TrafficCarQuatX[230] = -0.0010 TrafficCarQuatY[230] = 0.0052 TrafficCarQuatZ[230] = -0.3744 TrafficCarQuatW[230] = 0.9273 TrafficCarRecording[230] = 231 TrafficCarStartime[230] = 92334.0000 TrafficCarModel[230] = emperor TrafficCarPos[231] = <<2796.7185, 4464.0962, 47.6579>> TrafficCarQuatX[231] = -0.0100 TrafficCarQuatY[231] = -0.0019 TrafficCarQuatZ[231] = 0.1384 TrafficCarQuatW[231] = 0.9903 TrafficCarRecording[231] = 232 TrafficCarStartime[231] = 93192.0000 TrafficCarModel[231] = minivan TrafficCarPos[232] = <<2763.4312, 4396.7793, 48.5387>> TrafficCarQuatX[232] = -0.0067 TrafficCarQuatY[232] = -0.0059 TrafficCarQuatZ[232] = -0.5931 TrafficCarQuatW[232] = 0.8051 TrafficCarRecording[232] = 233 TrafficCarStartime[232] = 93390.0000 TrafficCarModel[232] = asterope TrafficCarPos[233] = <<2796.6157, 4463.2529, 47.4005>> TrafficCarQuatX[233] = -0.0099 TrafficCarQuatY[233] = -0.0015 TrafficCarQuatZ[233] = 0.1715 TrafficCarQuatW[233] = 0.9851 TrafficCarRecording[233] = 234 TrafficCarStartime[233] = 93588.0000 TrafficCarModel[233] = minivan // TrafficCarPos[234] = <<2758.1426, 4480.5522, 47.0032>> // TrafficCarQuatX[234] = -0.0043 // TrafficCarQuatY[234] = 0.0104 // TrafficCarQuatZ[234] = 0.9845 // TrafficCarQuatW[234] = -0.1750 // TrafficCarRecording[234] = 235 // TrafficCarStartime[234] = 93720.0000 // TrafficCarModel[234] = Vader TrafficCarPos[235] = <<2750.0212, 4510.1553, 46.5679>> TrafficCarQuatX[235] = -0.0052 TrafficCarQuatY[235] = 0.0092 TrafficCarQuatZ[235] = 0.9893 TrafficCarQuatW[235] = -0.1454 TrafficCarRecording[235] = 236 TrafficCarStartime[235] = 94314.0000 TrafficCarModel[235] = minivan TrafficCarPos[236] = <<2769.1023, 4543.7563, 45.7959>> TrafficCarQuatX[236] = -0.0094 TrafficCarQuatY[236] = -0.0010 TrafficCarQuatZ[236] = 0.1361 TrafficCarQuatW[236] = 0.9907 TrafficCarRecording[236] = 237 TrafficCarStartime[236] = 94842.0000 TrafficCarModel[236] = asterope // TrafficCarPos[237] = <<2775.7061, 4538.3184, 45.8946>> // TrafficCarQuatX[237] = -0.0093 // TrafficCarQuatY[237] = -0.0014 // TrafficCarQuatZ[237] = 0.1701 // TrafficCarQuatW[237] = 0.9854 // TrafficCarRecording[237] = 238 // TrafficCarStartime[237] = 95172.0000 // TrafficCarModel[237] = minivan // TrafficCarPos[238] = <<2769.8945, 4560.9517, 45.6520>> // TrafficCarQuatX[238] = -0.0092 // TrafficCarQuatY[238] = 0.0017 // TrafficCarQuatZ[238] = 0.1337 // TrafficCarQuatW[238] = 0.9910 // TrafficCarRecording[238] = 239 // TrafficCarStartime[238] = 95172.0000 // TrafficCarModel[238] = minivan TrafficCarPos[239] = <<2733.6995, 4556.1299, 45.3717>> TrafficCarQuatX[239] = -0.0009 TrafficCarQuatY[239] = 0.0091 TrafficCarQuatZ[239] = 0.9966 TrafficCarQuatW[239] = -0.0817 TrafficCarRecording[239] = 240 TrafficCarStartime[239] = 95304.0000 TrafficCarModel[239] = minivan // TrafficCarPos[240] = <<2762.9197, 4565.1895, 45.3244>> // TrafficCarQuatX[240] = -0.0085 // TrafficCarQuatY[240] = -0.0011 // TrafficCarQuatZ[240] = 0.1278 // TrafficCarQuatW[240] = 0.9918 // TrafficCarRecording[240] = 241 // TrafficCarStartime[240] = 95634.0000 // TrafficCarModel[240] = emperor TrafficCarPos[241] = <<2735.2793, 4578.1475, 44.9966>> TrafficCarQuatX[241] = -0.0005 TrafficCarQuatY[241] = 0.0079 TrafficCarQuatZ[241] = 0.9990 TrafficCarQuatW[241] = -0.0442 TrafficCarRecording[241] = 242 TrafficCarStartime[241] = 95700.0000 TrafficCarModel[241] = minivan // TrafficCarPos[242] = <<2763.8918, 4582.4990, 45.0513>> // TrafficCarQuatX[242] = -0.0093 // TrafficCarQuatY[242] = 0.0028 // TrafficCarQuatZ[242] = 0.1685 // TrafficCarQuatW[242] = 0.9857 // TrafficCarRecording[242] = 243 // TrafficCarStartime[242] = 95898.0000 // TrafficCarModel[242] = minivan TrafficCarPos[243] = <<2733.3506, 4558.6138, 45.5368>> TrafficCarQuatX[243] = 0.0003 TrafficCarQuatY[243] = 0.0089 TrafficCarQuatZ[243] = 0.9931 TrafficCarQuatW[243] = -0.1167 TrafficCarRecording[243] = 244 TrafficCarStartime[243] = 96030.0000 TrafficCarModel[243] = minivan TrafficCarPos[244] = <<2753.3953, 4625.8643, 44.4231>> TrafficCarQuatX[244] = -0.0065 TrafficCarQuatY[244] = -0.0008 TrafficCarQuatZ[244] = 0.1180 TrafficCarQuatW[244] = 0.9930 TrafficCarRecording[244] = 245 TrafficCarStartime[244] = 96558.0000 TrafficCarModel[244] = minivan TrafficCarPos[245] = <<2756.6841, 4587.3096, 44.9834>> TrafficCarQuatX[245] = -0.0078 TrafficCarQuatY[245] = -0.0012 TrafficCarQuatZ[245] = 0.1280 TrafficCarQuatW[245] = 0.9917 TrafficCarRecording[245] = 246 TrafficCarStartime[245] = 97086.0000 TrafficCarModel[245] = asterope TrafficCarPos[246] = <<2745.1133, 4663.1567, 44.1967>> TrafficCarQuatX[246] = -0.0036 TrafficCarQuatY[246] = -0.0003 TrafficCarQuatZ[246] = 0.1046 TrafficCarQuatW[246] = 0.9945 TrafficCarRecording[246] = 247 TrafficCarStartime[246] = 97614.0000 TrafficCarModel[246] = asterope // TrafficCarPos[247] = <<2740.1965, 4680.7329, 43.9248>> // TrafficCarQuatX[247] = -0.0020 // TrafficCarQuatY[247] = 0.0003 // TrafficCarQuatZ[247] = 0.2092 // TrafficCarQuatW[247] = 0.9779 // TrafficCarRecording[247] = 248 // TrafficCarStartime[247] = 98010.0000 // TrafficCarModel[247] = Vader // TrafficCarPos[248] = <<2729.3479, 4701.9292, 43.8695>> // TrafficCarQuatX[248] = 0.0001 // TrafficCarQuatY[248] = 0.0002 // TrafficCarQuatZ[248] = 0.1131 // TrafficCarQuatW[248] = 0.9936 // TrafficCarRecording[248] = 249 // TrafficCarStartime[248] = 98340.0000 // TrafficCarModel[248] = minivan // TrafficCarPos[249] = <<2719.0593, 4750.0059, 43.9539>> // TrafficCarQuatX[249] = 0.0015 // TrafficCarQuatY[249] = 0.0002 // TrafficCarQuatZ[249] = 0.1147 // TrafficCarQuatW[249] = 0.9934 // TrafficCarRecording[249] = 250 // TrafficCarStartime[249] = 98934.0000 // TrafficCarModel[249] = emperor TrafficCarPos[250] = <<2699.8525, 4746.0195, 43.9265>> TrafficCarQuatX[250] = 0.0002 TrafficCarQuatY[250] = -0.0005 TrafficCarQuatZ[250] = 0.9962 TrafficCarQuatW[250] = -0.0871 TrafficCarRecording[250] = 251 TrafficCarStartime[250] = 98934.0000 TrafficCarModel[250] = minivan // TrafficCarPos[251] = <<2723.2102, 4762.0459, 44.0218>> // TrafficCarQuatX[251] = 0.0014 // TrafficCarQuatY[251] = 0.0001 // TrafficCarQuatZ[251] = 0.1044 // TrafficCarQuatW[251] = 0.9945 // TrafficCarRecording[251] = 252 // TrafficCarStartime[251] = 99396.0000 // TrafficCarModel[251] = minivan // TrafficCarPos[252] = <<2713.8896, 4776.2275, 44.0996>> // TrafficCarQuatX[252] = 0.0030 // TrafficCarQuatY[252] = 0.0004 // TrafficCarQuatZ[252] = 0.1103 // TrafficCarQuatW[252] = 0.9939 // TrafficCarRecording[252] = 253 // TrafficCarStartime[252] = 99660.0000 // TrafficCarModel[252] = asterope // TrafficCarPos[253] = <<2714.2168, 4796.4341, 44.0916>> // TrafficCarQuatX[253] = 0.0007 // TrafficCarQuatY[253] = 0.0001 // TrafficCarQuatZ[253] = 0.1276 // TrafficCarQuatW[253] = 0.9918 // TrafficCarRecording[253] = 254 // TrafficCarStartime[253] = 99858.0000 // TrafficCarModel[253] = minivan TrafficCarPos[254] = <<2698.0276, 4733.7168, 44.1639>> TrafficCarQuatX[254] = -0.0027 TrafficCarQuatY[254] = -0.0010 TrafficCarQuatZ[254] = 0.9943 TrafficCarQuatW[254] = -0.1066 TrafficCarRecording[254] = 255 TrafficCarStartime[254] = 100188.0000 TrafficCarModel[254] = minivan // TrafficCarPos[255] = <<2709.7654, 4819.0278, 44.1546>> // TrafficCarQuatX[255] = 0.0007 // TrafficCarQuatY[255] = 0.0001 // TrafficCarQuatZ[255] = 0.1469 // TrafficCarQuatW[255] = 0.9891 // TrafficCarRecording[255] = 256 // TrafficCarStartime[255] = 100584.0000 // TrafficCarModel[255] = asterope TrafficCarPos[256] = <<2682.8777, 4826.2163, 44.3648>> TrafficCarQuatX[256] = 0.0005 TrafficCarQuatY[256] = -0.0007 TrafficCarQuatZ[256] = 0.9942 TrafficCarQuatW[256] = -0.1075 TrafficCarRecording[256] = 257 TrafficCarStartime[256] = 100782.0000 TrafficCarModel[256] = minivan TrafficCarPos[257] = <<2671.1245, 4851.1870, 44.1884>> TrafficCarQuatX[257] = -0.0018 TrafficCarQuatY[257] = -0.0008 TrafficCarQuatZ[257] = 0.9956 TrafficCarQuatW[257] = -0.0933 TrafficCarRecording[257] = 258 TrafficCarStartime[257] = 101178.0000 TrafficCarModel[257] = minivan TrafficCarPos[258] = <<2670.6460, 4856.5493, 44.3695>> TrafficCarQuatX[258] = -0.0002 TrafficCarQuatY[258] = -0.0006 TrafficCarQuatZ[258] = 0.9887 TrafficCarQuatW[258] = -0.1497 TrafficCarRecording[258] = 259 TrafficCarStartime[258] = 101574.0000 TrafficCarModel[258] = asterope // TrafficCarPos[259] = <<2691.9001, 4876.1128, 44.2642>> // TrafficCarQuatX[259] = 0.0005 // TrafficCarQuatY[259] = -0.0001 // TrafficCarQuatZ[259] = 0.0691 // TrafficCarQuatW[259] = 0.9976 // TrafficCarRecording[259] = 260 // TrafficCarStartime[259] = 101772.0000 // TrafficCarModel[259] = asterope // TrafficCarPos[260] = <<2692.8052, 4892.2969, 44.4566>> // TrafficCarQuatX[260] = 0.0007 // TrafficCarQuatY[260] = 0.0004 // TrafficCarQuatZ[260] = 0.1139 // TrafficCarQuatW[260] = 0.9935 // TrafficCarRecording[260] = 261 // TrafficCarStartime[260] = 101838.0000 // TrafficCarModel[260] = minivan TrafficCarPos[261] = <<2667.8579, 4869.2661, 44.2200>> TrafficCarQuatX[261] = 0.0001 TrafficCarQuatY[261] = -0.0005 TrafficCarQuatZ[261] = 0.9908 TrafficCarQuatW[261] = -0.1351 TrafficCarRecording[261] = 262 TrafficCarStartime[261] = 101970.0000 TrafficCarModel[261] = minivan // TrafficCarPos[262] = <<2682.1086, 4919.7715, 44.2625>> // TrafficCarQuatX[262] = 0.0000 // TrafficCarQuatY[262] = -0.0000 // TrafficCarQuatZ[262] = 0.0996 // TrafficCarQuatW[262] = 0.9950 // TrafficCarRecording[262] = 263 // TrafficCarStartime[262] = 102762.0000 // TrafficCarModel[262] = minivan // TrafficCarPos[263] = <<2682.4604, 4915.1680, 44.1997>> // TrafficCarQuatX[263] = 0.0000 // TrafficCarQuatY[263] = 0.0000 // TrafficCarQuatZ[263] = 0.1082 // TrafficCarQuatW[263] = 0.9941 // TrafficCarRecording[263] = 264 // TrafficCarStartime[263] = 103290.0000 // TrafficCarModel[263] = minivan TrafficCarPos[264] = <<2654.7310, 4947.6592, 44.4515>> TrafficCarQuatX[264] = -0.0000 TrafficCarQuatY[264] = -0.0006 TrafficCarQuatZ[264] = 0.9925 TrafficCarQuatW[264] = -0.1222 TrafficCarRecording[264] = 265 TrafficCarStartime[264] = 103422.0000 TrafficCarModel[264] = asterope // TrafficCarPos[265] = <<2672.1680, 4985.8140, 44.3148>> // TrafficCarQuatX[265] = 0.0008 // TrafficCarQuatY[265] = -0.0000 // TrafficCarQuatZ[265] = 0.1008 // TrafficCarQuatW[265] = 0.9949 // TrafficCarRecording[265] = 266 // TrafficCarStartime[265] = 103554.0000 // TrafficCarModel[265] = Vader // TrafficCarPos[266] = <<2676.0173, 4972.1226, 44.3164>> // TrafficCarQuatX[266] = 0.0005 // TrafficCarQuatY[266] = 0.0000 // TrafficCarQuatZ[266] = 0.0798 // TrafficCarQuatW[266] = 0.9968 // TrafficCarRecording[266] = 267 // TrafficCarStartime[266] = 103818.0000 // TrafficCarModel[266] = minivan TrafficCarPos[267] = <<2650.3118, 4943.5879, 44.5048>> TrafficCarQuatX[267] = 0.0013 TrafficCarQuatY[267] = -0.0007 TrafficCarQuatZ[267] = 0.9957 TrafficCarQuatW[267] = -0.0931 TrafficCarRecording[267] = 268 TrafficCarStartime[267] = 103950.0000 TrafficCarModel[267] = minivan // TrafficCarPos[268] = <<2669.3022, 5003.4873, 44.3213>> // TrafficCarQuatX[268] = 0.0004 // TrafficCarQuatY[268] = -0.0000 // TrafficCarQuatZ[268] = 0.1029 // TrafficCarQuatW[268] = 0.9947 // TrafficCarRecording[268] = 269 // TrafficCarStartime[268] = 104148.0000 // TrafficCarModel[268] = emperor // TrafficCarPos[269] = <<2621.1787, 5045.5127, 44.5638>> // TrafficCarQuatX[269] = -0.0001 // TrafficCarQuatY[269] = -0.0005 // TrafficCarQuatZ[269] = 0.9922 // TrafficCarQuatW[269] = -0.1249 // TrafficCarRecording[269] = 270 // TrafficCarStartime[269] = 104874.0000 // TrafficCarModel[269] = minivan // TrafficCarPos[270] = <<2652.0811, 5061.4380, 44.3571>> // TrafficCarQuatX[270] = 0.0000 // TrafficCarQuatY[270] = -0.0000 // TrafficCarQuatZ[270] = 0.0947 // TrafficCarQuatW[270] = 0.9955 // TrafficCarRecording[270] = 271 // TrafficCarStartime[270] = 105072.0000 // TrafficCarModel[270] = minivan // TrafficCarPos[271] = <<2623.9983, 5058.8535, 44.3565>> // TrafficCarQuatX[271] = 0.0001 // TrafficCarQuatY[271] = -0.0000 // TrafficCarQuatZ[271] = 0.9892 // TrafficCarQuatW[271] = -0.1466 // TrafficCarRecording[271] = 272 // TrafficCarStartime[271] = 105666.0000 // TrafficCarModel[271] = minivan // TrafficCarPos[272] = <<2656.6990, 5107.9023, 44.2505>> // TrafficCarQuatX[272] = -0.0027 // TrafficCarQuatY[272] = -0.0018 // TrafficCarQuatZ[272] = -0.1337 // TrafficCarQuatW[272] = 0.9910 // TrafficCarRecording[272] = 273 // TrafficCarStartime[272] = 105930.0000 // TrafficCarModel[272] = minivan // TrafficCarPos[273] = <<2626.8604, 5182.9043, 44.5148>> // TrafficCarQuatX[273] = -0.0007 // TrafficCarQuatY[273] = 0.0001 // TrafficCarQuatZ[273] = 0.1292 // TrafficCarQuatW[273] = 0.9916 // TrafficCarRecording[273] = 274 // TrafficCarStartime[273] = 107448.0000 // TrafficCarModel[273] = minivan TrafficCarPos[274] = <<2618.7942, 5190.9868, 44.4486>> TrafficCarQuatX[274] = -0.0007 TrafficCarQuatY[274] = -0.0001 TrafficCarQuatZ[274] = 0.1434 TrafficCarQuatW[274] = 0.9897 TrafficCarRecording[274] = 275 TrafficCarStartime[274] = 107646.0000 TrafficCarModel[274] = asterope TrafficCarPos[275] = <<2620.9553, 5181.9199, 44.3305>> TrafficCarQuatX[275] = -0.0006 TrafficCarQuatY[275] = 0.0002 TrafficCarQuatZ[275] = 0.1561 TrafficCarQuatW[275] = 0.9877 TrafficCarRecording[275] = 276 TrafficCarStartime[275] = 107844.0000 TrafficCarModel[275] = asterope TrafficCarPos[276] = <<2587.1160, 5198.9702, 44.2932>> TrafficCarQuatX[276] = -0.0000 TrafficCarQuatY[276] = 0.0002 TrafficCarQuatZ[276] = 0.9877 TrafficCarQuatW[276] = -0.1562 TrafficCarRecording[276] = 277 TrafficCarStartime[276] = 107976.0000 TrafficCarModel[276] = minivan // TrafficCarPos[277] = <<2619.5605, 5205.5767, 44.2791>> // TrafficCarQuatX[277] = -0.0006 // TrafficCarQuatY[277] = -0.0002 // TrafficCarQuatZ[277] = 0.1082 // TrafficCarQuatW[277] = 0.9941 // TrafficCarRecording[277] = 278 // TrafficCarStartime[277] = 108240.0000 // TrafficCarModel[277] = minivan // TrafficCarPos[278] = <<2621.1724, 5200.2778, 44.2766>> // TrafficCarQuatX[278] = 0.0006 // TrafficCarQuatY[278] = 0.0001 // TrafficCarQuatZ[278] = 0.2128 // TrafficCarQuatW[278] = 0.9771 // TrafficCarRecording[278] = 279 // TrafficCarStartime[278] = 108372.0000 // TrafficCarModel[278] = Vader TrafficCarPos[279] = <<2600.9653, 5267.5176, 44.1361>> TrafficCarQuatX[279] = -0.0006 TrafficCarQuatY[279] = -0.0000 TrafficCarQuatZ[279] = 0.1429 TrafficCarQuatW[279] = 0.9897 TrafficCarRecording[279] = 280 TrafficCarStartime[279] = 109164.0000 TrafficCarModel[279] = minivan // TrafficCarPos[280] = <<2595.7542, 5267.8159, 44.2360>> // TrafficCarQuatX[280] = -0.0006 // TrafficCarQuatY[280] = 0.0001 // TrafficCarQuatZ[280] = 0.1417 // TrafficCarQuatW[280] = 0.9899 // TrafficCarRecording[280] = 281 // TrafficCarStartime[280] = 109164.0000 // TrafficCarModel[280] = asterope // TrafficCarPos[281] = <<2604.3191, 5256.8315, 44.4257>> // TrafficCarQuatX[281] = -0.0006 // TrafficCarQuatY[281] = -0.0015 // TrafficCarQuatZ[281] = 0.1864 // TrafficCarQuatW[281] = 0.9825 // TrafficCarRecording[281] = 282 // TrafficCarStartime[281] = 109362.0000 // TrafficCarModel[281] = minivan // TrafficCarPos[282] = <<2578.0525, 5324.3140, 44.1364>> // TrafficCarQuatX[282] = -0.0006 // TrafficCarQuatY[282] = -0.0001 // TrafficCarQuatZ[282] = 0.1569 // TrafficCarQuatW[282] = 0.9876 // TrafficCarRecording[282] = 283 // TrafficCarStartime[282] = 110352.0000 // TrafficCarModel[282] = minivan TrafficCarPos[283] = <<2553.7939, 5321.5039, 44.5224>> TrafficCarQuatX[283] = -0.0002 TrafficCarQuatY[283] = 0.0005 TrafficCarQuatZ[283] = 0.9943 TrafficCarQuatW[283] = -0.1065 TrafficCarRecording[283] = 284 TrafficCarStartime[283] = 110484.0000 TrafficCarModel[283] = minivan // TrafficCarPos[284] = <<2583.3596, 5308.2412, 44.1476>> // TrafficCarQuatX[284] = 0.0006 // TrafficCarQuatY[284] = 0.0001 // TrafficCarQuatZ[284] = 0.2116 // TrafficCarQuatW[284] = 0.9774 // TrafficCarRecording[284] = 285 // TrafficCarStartime[284] = 110616.0000 // TrafficCarModel[284] = Vader // TrafficCarPos[285] = <<2572.3564, 5342.5728, 44.3177>> // TrafficCarQuatX[285] = -0.0002 // TrafficCarQuatY[285] = -0.0001 // TrafficCarQuatZ[285] = 0.1478 // TrafficCarQuatW[285] = 0.9890 // TrafficCarRecording[285] = 286 // TrafficCarStartime[285] = 110946.0000 // TrafficCarModel[285] = minivan // TrafficCarPos[286] = <<2558.2329, 5395.3130, 44.0749>> // TrafficCarQuatX[286] = -0.0002 // TrafficCarQuatY[286] = 0.0000 // TrafficCarQuatZ[286] = 0.1390 // TrafficCarQuatW[286] = 0.9903 // TrafficCarRecording[286] = 287 // TrafficCarStartime[286] = 111738.0000 // TrafficCarModel[286] = minivan TrafficCarPos[287] = <<2528.2549, 5399.9287, 44.2416>> TrafficCarQuatX[287] = 0.0002 TrafficCarQuatY[287] = 0.0002 TrafficCarQuatZ[287] = 0.9906 TrafficCarQuatW[287] = -0.1368 TrafficCarRecording[287] = 288 TrafficCarStartime[287] = 112002.0000 TrafficCarModel[287] = asterope // TrafficCarPos[288] = <<2553.2566, 5408.7754, 44.0636>> // TrafficCarQuatX[288] = 0.0008 // TrafficCarQuatY[288] = 0.0000 // TrafficCarQuatZ[288] = 0.2430 // TrafficCarQuatW[288] = 0.9700 // TrafficCarRecording[288] = 289 // TrafficCarStartime[288] = 112200.0000 // TrafficCarModel[288] = Vader // TrafficCarPos[289] = <<2548.7327, 5422.6401, 44.2893>> // TrafficCarQuatX[289] = 0.0005 // TrafficCarQuatY[289] = 0.0001 // TrafficCarQuatZ[289] = 0.1532 // TrafficCarQuatW[289] = 0.9882 // TrafficCarRecording[289] = 290 // TrafficCarStartime[289] = 112398.0000 // TrafficCarModel[289] = minivan TrafficCarPos[290] = <<2534.5610, 5394.7261, 44.0934>> TrafficCarQuatX[290] = -0.0002 TrafficCarQuatY[290] = 0.0006 TrafficCarQuatZ[290] = 0.9907 TrafficCarQuatW[290] = -0.1359 TrafficCarRecording[290] = 291 TrafficCarStartime[290] = 113124.0000 TrafficCarModel[290] = minivan TrafficCarPos[291] = <<2531.4963, 5407.4761, 44.0435>> TrafficCarQuatX[291] = 0.0000 TrafficCarQuatY[291] = -0.0001 TrafficCarQuatZ[291] = 0.9919 TrafficCarQuatW[291] = -0.1270 TrafficCarRecording[291] = 292 TrafficCarStartime[291] = 113256.0000 TrafficCarModel[291] = emperor // TrafficCarPos[292] = <<2511.7451, 5470.1875, 44.3447>> // TrafficCarQuatX[292] = -0.0012 // TrafficCarQuatY[292] = -0.0015 // TrafficCarQuatZ[292] = 0.9853 // TrafficCarQuatW[292] = -0.1709 // TrafficCarRecording[292] = 293 // TrafficCarStartime[292] = 113520.0000 // TrafficCarModel[292] = minivan // TrafficCarPos[293] = <<2550.2617, 5437.9927, 44.1226>> // TrafficCarQuatX[293] = 0.0007 // TrafficCarQuatY[293] = 0.0002 // TrafficCarQuatZ[293] = 0.1533 // TrafficCarQuatW[293] = 0.9882 // TrafficCarRecording[293] = 294 // TrafficCarStartime[293] = 113850.0000 // TrafficCarModel[293] = asterope // TrafficCarPos[294] = <<2507.9319, 5479.8594, 44.1506>> // TrafficCarQuatX[294] = 0.0001 // TrafficCarQuatY[294] = -0.0013 // TrafficCarQuatZ[294] = 0.9873 // TrafficCarQuatW[294] = -0.1591 // TrafficCarRecording[294] = 295 // TrafficCarStartime[294] = 114048.0000 // TrafficCarModel[294] = minivan // TrafficCarPos[295] = <<2514.7593, 5461.7959, 44.1486>> // TrafficCarQuatX[295] = 0.0001 // TrafficCarQuatY[295] = -0.0004 // TrafficCarQuatZ[295] = 0.9855 // TrafficCarQuatW[295] = -0.1697 // TrafficCarRecording[295] = 296 // TrafficCarStartime[295] = 114378.0000 // TrafficCarModel[295] = asterope // TrafficCarPos[296] = <<2516.3423, 5521.9912, 44.2608>> // TrafficCarQuatX[296] = 0.0013 // TrafficCarQuatY[296] = 0.0001 // TrafficCarQuatZ[296] = 0.1739 // TrafficCarQuatW[296] = 0.9848 // TrafficCarRecording[296] = 297 // TrafficCarStartime[296] = 114840.0000 // TrafficCarModel[296] = minivan // TrafficCarPos[297] = <<2480.4070, 5556.0698, 44.2801>> // TrafficCarQuatX[297] = 0.0002 // TrafficCarQuatY[297] = -0.0012 // TrafficCarQuatZ[297] = 0.9812 // TrafficCarQuatW[297] = -0.1929 // TrafficCarRecording[297] = 298 // TrafficCarStartime[297] = 115236.0000 // TrafficCarModel[297] = minivan // TrafficCarPos[298] = <<2497.7844, 5571.8809, 44.5875>> // TrafficCarQuatX[298] = 0.0008 // TrafficCarQuatY[298] = 0.0002 // TrafficCarQuatZ[298] = 0.1861 // TrafficCarQuatW[298] = 0.9825 // TrafficCarRecording[298] = 299 // TrafficCarStartime[298] = 115434.0000 // TrafficCarModel[298] = minivan // TrafficCarPos[299] = <<2471.8467, 5562.0718, 44.3712>> // TrafficCarQuatX[299] = 0.0001 // TrafficCarQuatY[299] = -0.0013 // TrafficCarQuatZ[299] = 0.9733 // TrafficCarQuatW[299] = -0.2293 // TrafficCarRecording[299] = 300 // TrafficCarStartime[299] = 115698.0000 // TrafficCarModel[299] = minivan // TrafficCarPos[300] = <<2503.5378, 5570.7871, 44.3415>> // TrafficCarQuatX[300] = 0.0010 // TrafficCarQuatY[300] = 0.0005 // TrafficCarQuatZ[300] = 0.2245 // TrafficCarQuatW[300] = 0.9745 // TrafficCarRecording[300] = 301 // TrafficCarStartime[300] = 115830.0000 // TrafficCarModel[300] = emperor // TrafficCarPos[301] = <<2496.2344, 5590.6104, 44.4156>> // TrafficCarQuatX[301] = 0.0012 // TrafficCarQuatY[301] = 0.0001 // TrafficCarQuatZ[301] = 0.1792 // TrafficCarQuatW[301] = 0.9838 // TrafficCarRecording[301] = 302 // TrafficCarStartime[301] = 115896.0000 // TrafficCarModel[301] = minivan // TrafficCarPos[302] = <<2491.3748, 5601.3467, 44.4328>> // TrafficCarQuatX[302] = 0.0020 // TrafficCarQuatY[302] = 0.0004 // TrafficCarQuatZ[302] = 0.2585 // TrafficCarQuatW[302] = 0.9660 // TrafficCarRecording[302] = 303 // TrafficCarStartime[302] = 116556.0000 // TrafficCarModel[302] = Vader // TrafficCarPos[303] = <<2474.6465, 5641.5903, 44.5806>> // TrafficCarQuatX[303] = 0.0014 // TrafficCarQuatY[303] = 0.0004 // TrafficCarQuatZ[303] = 0.1967 // TrafficCarQuatW[303] = 0.9805 // TrafficCarRecording[303] = 304 // TrafficCarStartime[303] = 116952.0000 // TrafficCarModel[303] = asterope // TrafficCarPos[304] = <<2443.4148, 5630.0596, 44.5461>> // TrafficCarQuatX[304] = 0.0002 // TrafficCarQuatY[304] = -0.0014 // TrafficCarQuatZ[304] = 0.9723 // TrafficCarQuatW[304] = -0.2339 // TrafficCarRecording[304] = 305 // TrafficCarStartime[304] = 117018.0000 // TrafficCarModel[304] = minivan // TrafficCarPos[305] = <<2471.0015, 5636.2915, 44.5357>> // TrafficCarQuatX[305] = 0.0013 // TrafficCarQuatY[305] = 0.0001 // TrafficCarQuatZ[305] = 0.2363 // TrafficCarQuatW[305] = 0.9717 // TrafficCarRecording[305] = 306 // TrafficCarStartime[305] = 117282.0000 // TrafficCarModel[305] = minivan // TrafficCarPos[306] = <<2459.7236, 5675.4243, 44.8480>> // TrafficCarQuatX[306] = 0.0017 // TrafficCarQuatY[306] = 0.0004 // TrafficCarQuatZ[306] = 0.2092 // TrafficCarQuatW[306] = 0.9779 // TrafficCarRecording[306] = 307 // TrafficCarStartime[306] = 117678.0000 // TrafficCarModel[306] = minivan // TrafficCarPos[307] = <<2464.1621, 5665.6514, 44.7753>> // TrafficCarQuatX[307] = 0.0012 // TrafficCarQuatY[307] = 0.0004 // TrafficCarQuatZ[307] = 0.1711 // TrafficCarQuatW[307] = 0.9853 // TrafficCarRecording[307] = 308 // TrafficCarStartime[307] = 118140.0000 // TrafficCarModel[307] = asterope // TrafficCarPos[308] = <<2442.6357, 5700.7183, 44.7607>> // TrafficCarQuatX[308] = 0.0024 // TrafficCarQuatY[308] = 0.0006 // TrafficCarQuatZ[308] = 0.2199 // TrafficCarQuatW[308] = 0.9755 // TrafficCarRecording[308] = 309 // TrafficCarStartime[308] = 118272.0000 // TrafficCarModel[308] = minivan // TrafficCarPos[309] = <<2428.5857, 5738.9170, 45.0313>> // TrafficCarQuatX[309] = 0.0034 // TrafficCarQuatY[309] = 0.0008 // TrafficCarQuatZ[309] = 0.2295 // TrafficCarQuatW[309] = 0.9733 // TrafficCarRecording[309] = 310 // TrafficCarStartime[309] = 119130.0000 // TrafficCarModel[309] = asterope // TrafficCarPos[310] = <<2413.8796, 5758.8765, 45.1997>> // TrafficCarQuatX[310] = 0.0027 // TrafficCarQuatY[310] = 0.0007 // TrafficCarQuatZ[310] = 0.2451 // TrafficCarQuatW[310] = 0.9695 // TrafficCarRecording[310] = 311 // TrafficCarStartime[310] = 119658.0000 // TrafficCarModel[310] = minivan // TrafficCarPos[311] = <<2426.1887, 5733.7778, 45.3610>> // TrafficCarQuatX[311] = 0.0034 // TrafficCarQuatY[311] = 0.0008 // TrafficCarQuatZ[311] = 0.2244 // TrafficCarQuatW[311] = 0.9745 // TrafficCarRecording[311] = 312 // TrafficCarStartime[311] = 120186.0000 // TrafficCarModel[311] = minivan // TrafficCarPos[312] = <<2379.2861, 5829.6538, 46.0483>> // TrafficCarQuatX[312] = 0.0063 // TrafficCarQuatY[312] = 0.0020 // TrafficCarQuatZ[312] = 0.2709 // TrafficCarQuatW[312] = 0.9626 // TrafficCarRecording[312] = 313 // TrafficCarStartime[312] = 121176.0000 // TrafficCarModel[312] = minivan // TrafficCarPos[313] = <<2390.9995, 5809.2119, 45.7082>> // TrafficCarQuatX[313] = 0.0062 // TrafficCarQuatY[313] = 0.0020 // TrafficCarQuatZ[313] = 0.3054 // TrafficCarQuatW[313] = 0.9522 // TrafficCarRecording[313] = 314 // TrafficCarStartime[313] = 121308.0000 // TrafficCarModel[313] = emperor // TrafficCarPos[314] = <<2335.8091, 5881.2896, 47.1471>> // TrafficCarQuatX[314] = 0.0096 // TrafficCarQuatY[314] = 0.0033 // TrafficCarQuatZ[314] = 0.3279 // TrafficCarQuatW[314] = 0.9446 // TrafficCarRecording[314] = 315 // TrafficCarStartime[314] = 122562.0000 // TrafficCarModel[314] = Vader // TrafficCarPos[315] = <<2308.3513, 5926.8325, 48.0219>> // TrafficCarQuatX[315] = 0.0078 // TrafficCarQuatY[315] = 0.0010 // TrafficCarQuatZ[315] = 0.3165 // TrafficCarQuatW[315] = 0.9486 // TrafficCarRecording[315] = 316 // TrafficCarStartime[315] = 123618.0000 // TrafficCarModel[315] = minivan // TrafficCarPos[316] = <<2315.8203, 5916.2373, 48.1020>> // TrafficCarQuatX[316] = 0.0100 // TrafficCarQuatY[316] = -0.0114 // TrafficCarQuatZ[316] = 0.3397 // TrafficCarQuatW[316] = 0.9404 // TrafficCarRecording[316] = 317 // TrafficCarStartime[316] = 123882.0000 // TrafficCarModel[316] = asterope // TrafficCarPos[317] = <<2263.7161, 5985.3062, 50.0417>> // TrafficCarQuatX[317] = 0.0118 // TrafficCarQuatY[317] = 0.0032 // TrafficCarQuatZ[317] = 0.2993 // TrafficCarQuatW[317] = 0.9541 // TrafficCarRecording[317] = 318 // TrafficCarStartime[317] = 125202.0000 // TrafficCarModel[317] = minivan // **** UBER RECORDED SET PIECE CARS **** // SetPieceCarPos[0] = <<2583.5540, 360.2650, 107.7638>> // SetPieceCarQuatX[0] = -0.0032 // SetPieceCarQuatY[0] = 0.0001 // SetPieceCarQuatZ[0] = -0.0147 // SetPieceCarQuatW[0] = 0.9999 // SetPieceCarRecording[0] = 501 // SetPieceCarStartime[0] = 0.0000 // SetPieceCarRecordingSpeed[0] = 1.0000 // SetPieceCarModel[0] = cheetah SetPieceCarPos[1] = <<2297.0762, 1144.4797, 78.6363>> SetPieceCarQuatX[1] = 0.0023 SetPieceCarQuatY[1] = -0.0176 SetPieceCarQuatZ[1] = 0.3532 SetPieceCarQuatW[1] = 0.9354 SetPieceCarRecording[1] = 400 SetPieceCarStartime[1] = 16000.0000 SetPieceCarRecordingSpeed[1] = 1.0000 SetPieceCarModel[1] = Hauler //Recording 401 is for trailer SetPieceCarPos[2] = <<2284.0776, 1167.9307, 78.0065>> SetPieceCarQuatX[2] = -0.0169 SetPieceCarQuatY[2] = 0.0226 SetPieceCarQuatZ[2] = 0.3469 SetPieceCarQuatW[2] = 0.9375 SetPieceCarRecording[2] = 402 SetPieceCarStartime[2] = 17000.0000 SetPieceCarRecordingSpeed[2] = 1.0000 SetPieceCarModel[2] = Packer //Recording 403 is for trailer SetPieceCarPos[3] = <<1886.9763, 2084.2434, 55.6819>> SetPieceCarQuatX[3] = -0.0082 SetPieceCarQuatY[3] = 0.0048 SetPieceCarQuatZ[3] = 0.0651 SetPieceCarQuatW[3] = 0.9978 SetPieceCarRecording[3] = 404 SetPieceCarStartime[3] = 36000.0000 SetPieceCarRecordingSpeed[3] = 1.0000 SetPieceCarModel[3] = coach SetPieceCarPos[4] = <<1881.8495, 2073.8083, 54.9369>> SetPieceCarQuatX[4] = -0.0051 SetPieceCarQuatY[4] = -0.0067 SetPieceCarQuatZ[4] = 0.0702 SetPieceCarQuatW[4] = 0.9975 SetPieceCarRecording[4] = 405 SetPieceCarStartime[4] = 36000.0000 SetPieceCarRecordingSpeed[4] = 1.0000 SetPieceCarModel[4] = BUS SetPieceCarPos[5] = <<2893.2883, 3642.3274, 52.8881>> SetPieceCarQuatX[5] = 0.0015 SetPieceCarQuatY[5] = -0.0036 SetPieceCarQuatZ[5] = -0.1382 SetPieceCarQuatW[5] = 0.9904 SetPieceCarRecording[5] = 406 SetPieceCarStartime[5] = 72000.0000 SetPieceCarRecordingSpeed[5] = 1.0000 SetPieceCarModel[5] = Mule ENDPROC PROC UberCopVariables() TrafficCarPos[0] = <<2651.6782, 5083.7163, 44.2504>> TrafficCarQuatX[0] = 0.0013 TrafficCarQuatY[0] = 0.0025 TrafficCarQuatZ[0] = 0.0925 TrafficCarQuatW[0] = 0.9957 TrafficCarRecording[0] = 1 TrafficCarStartime[0] = 2009284.0000 TrafficCarModel[0] = asterope TrafficCarPos[1] = <<2578.6765, 5206.6890, 44.1481>> TrafficCarQuatX[1] = 0.0007 TrafficCarQuatY[1] = -0.0009 TrafficCarQuatZ[1] = 0.9908 TrafficCarQuatW[1] = -0.1355 TrafficCarRecording[1] = 2 TrafficCarStartime[1] = 4224.0000 TrafficCarModel[1] = emperor TrafficCarPos[2] = <<2564.1345, 5263.9688, 44.0797>> TrafficCarQuatX[2] = 0.0000 TrafficCarQuatY[2] = 0.0007 TrafficCarQuatZ[2] = 0.9896 TrafficCarQuatW[2] = -0.1436 TrafficCarRecording[2] = 3 TrafficCarStartime[2] = 4422.0000 TrafficCarModel[2] = emperor TrafficCarPos[3] = <<2571.2625, 5256.6226, 44.1779>> TrafficCarQuatX[3] = 0.0001 TrafficCarQuatY[3] = 0.0007 TrafficCarQuatZ[3] = 0.9922 TrafficCarQuatW[3] = -0.1243 TrafficCarRecording[3] = 4 TrafficCarStartime[3] = 4620.0000 TrafficCarModel[3] = journey // TrafficCarPos[4] = <<2590.1956, 5305.0815, 44.2940>> // TrafficCarQuatX[4] = -0.0008 // TrafficCarQuatY[4] = 0.0001 // TrafficCarQuatZ[4] = 0.1422 // TrafficCarQuatW[4] = 0.9898 // TrafficCarRecording[4] = 5 // TrafficCarStartime[4] = 4950.0000 // TrafficCarModel[4] = SURFER TrafficCarPos[5] = <<2567.1211, 5272.3496, 44.3493>> TrafficCarQuatX[5] = -0.0003 TrafficCarQuatY[5] = 0.0005 TrafficCarQuatZ[5] = 0.9923 TrafficCarQuatW[5] = -0.1239 TrafficCarRecording[5] = 6 TrafficCarStartime[5] = 5280.0000 TrafficCarModel[5] = asterope TrafficCarPos[6] = <<2581.3538, 5314.8896, 44.0127>> TrafficCarQuatX[6] = -0.0004 TrafficCarQuatY[6] = -0.0005 TrafficCarQuatZ[6] = 0.1847 TrafficCarQuatW[6] = 0.9828 TrafficCarRecording[6] = 7 TrafficCarStartime[6] = 5610.0000 TrafficCarModel[6] = emperor TrafficCarPos[7] = <<2548.6987, 5322.8833, 44.3774>> TrafficCarQuatX[7] = -0.0001 TrafficCarQuatY[7] = 0.0006 TrafficCarQuatZ[7] = 0.9920 TrafficCarQuatW[7] = -0.1263 TrafficCarRecording[7] = 8 TrafficCarStartime[7] = 6006.0000 TrafficCarModel[7] = journey TrafficCarPos[8] = <<2553.1313, 5327.9746, 44.2761>> TrafficCarQuatX[8] = 0.0001 TrafficCarQuatY[8] = 0.0007 TrafficCarQuatZ[8] = 0.9910 TrafficCarQuatW[8] = -0.1340 TrafficCarRecording[8] = 9 TrafficCarStartime[8] = 6072.0000 TrafficCarModel[8] = asterope // TrafficCarPos[9] = <<2581.7786, 5313.4814, 44.1521>> // TrafficCarQuatX[9] = -0.0006 // TrafficCarQuatY[9] = 0.0002 // TrafficCarQuatZ[9] = 0.1848 // TrafficCarQuatW[9] = 0.9828 // TrafficCarRecording[9] = 10 // TrafficCarStartime[9] = 6138.0000 // TrafficCarModel[9] = minivan TrafficCarPos[10] = <<2593.3813, 5293.0142, 44.3104>> TrafficCarQuatX[10] = -0.0007 TrafficCarQuatY[10] = 0.0001 TrafficCarQuatZ[10] = 0.1465 TrafficCarQuatW[10] = 0.9892 TrafficCarRecording[10] = 11 TrafficCarStartime[10] = 6468.0000 TrafficCarModel[10] = asterope TrafficCarPos[11] = <<2548.9211, 5343.3643, 44.1531>> TrafficCarQuatX[11] = 0.0001 TrafficCarQuatY[11] = 0.0007 TrafficCarQuatZ[11] = 0.9962 TrafficCarQuatW[11] = -0.0873 TrafficCarRecording[11] = 12 TrafficCarStartime[11] = 6930.0000 TrafficCarModel[11] = asterope TrafficCarPos[12] = <<2539.3406, 5358.3770, 43.9659>> TrafficCarQuatX[12] = 0.0002 TrafficCarQuatY[12] = 0.0002 TrafficCarQuatZ[12] = 0.9915 TrafficCarQuatW[12] = -0.1300 TrafficCarRecording[12] = 13 TrafficCarStartime[12] = 7326.0000 TrafficCarModel[12] = emperor // TrafficCarPos[13] = <<2562.9797, 5398.0762, 43.9368>> // TrafficCarQuatX[13] = -0.0001 // TrafficCarQuatY[13] = 0.0000 // TrafficCarQuatZ[13] = 0.1453 // TrafficCarQuatW[13] = 0.9894 // TrafficCarRecording[13] = 14 // TrafficCarStartime[13] = 8316.0000 // TrafficCarModel[13] = emperor TrafficCarPos[14] = <<2547.9246, 5346.3848, 44.3941>> TrafficCarQuatX[14] = -0.0001 TrafficCarQuatY[14] = 0.0004 TrafficCarQuatZ[14] = 0.9940 TrafficCarQuatW[14] = -0.1090 TrafficCarRecording[14] = 15 TrafficCarStartime[14] = 8646.0000 TrafficCarModel[14] = minivan TrafficCarPos[15] = <<2554.2639, 5406.5571, 44.3017>> TrafficCarQuatX[15] = -0.0015 TrafficCarQuatY[15] = -0.0006 TrafficCarQuatZ[15] = 0.1376 TrafficCarQuatW[15] = 0.9905 TrafficCarRecording[15] = 16 TrafficCarStartime[15] = 9174.0000 TrafficCarModel[15] = journey TrafficCarPos[16] = <<2556.2463, 5399.6890, 44.2142>> TrafficCarQuatX[16] = -0.0001 TrafficCarQuatY[16] = 0.0001 TrafficCarQuatZ[16] = 0.1420 TrafficCarQuatW[16] = 0.9899 TrafficCarRecording[16] = 17 TrafficCarStartime[16] = 10164.0000 TrafficCarModel[16] = asterope // TrafficCarPos[17] = <<2542.4026, 5445.0840, 44.1067>> // TrafficCarQuatX[17] = 0.0002 // TrafficCarQuatY[17] = 0.0001 // TrafficCarQuatZ[17] = 0.1531 // TrafficCarQuatW[17] = 0.9882 // TrafficCarRecording[17] = 18 // TrafficCarStartime[17] = 10230.0000 // TrafficCarModel[17] = minivan TrafficCarPos[18] = <<2546.3093, 5449.5732, 44.2454>> TrafficCarQuatX[18] = -0.0001 TrafficCarQuatY[18] = 0.0001 TrafficCarQuatZ[18] = 0.1520 TrafficCarQuatW[18] = 0.9884 TrafficCarRecording[18] = 19 TrafficCarStartime[18] = 10890.0000 TrafficCarModel[18] = asterope TrafficCarPos[19] = <<2512.8413, 5449.7285, 44.3785>> TrafficCarQuatX[19] = -0.0000 TrafficCarQuatY[19] = -0.0002 TrafficCarQuatZ[19] = 0.9875 TrafficCarQuatW[19] = -0.1577 TrafficCarRecording[19] = 20 TrafficCarStartime[19] = 10956.0000 TrafficCarModel[19] = minivan TrafficCarPos[20] = <<2536.3279, 5478.3750, 43.9978>> TrafficCarQuatX[20] = 0.0006 TrafficCarQuatY[20] = 0.0001 TrafficCarQuatZ[20] = 0.1958 TrafficCarQuatW[20] = 0.9806 TrafficCarRecording[20] = 21 TrafficCarStartime[20] = 11484.0000 TrafficCarModel[20] = emperor TrafficCarPos[21] = <<2493.3911, 5506.5771, 44.1779>> TrafficCarQuatX[21] = 0.0001 TrafficCarQuatY[21] = -0.0016 TrafficCarQuatZ[21] = 0.9845 TrafficCarQuatW[21] = -0.1754 TrafficCarRecording[21] = 22 TrafficCarStartime[21] = 12144.0000 TrafficCarModel[21] = journey TrafficCarPos[22] = <<2509.6421, 5537.3931, 44.1639>> TrafficCarQuatX[22] = 0.0009 TrafficCarQuatY[22] = 0.0002 TrafficCarQuatZ[22] = 0.1787 TrafficCarQuatW[22] = 0.9839 TrafficCarRecording[22] = 23 TrafficCarStartime[22] = 12606.0000 TrafficCarModel[22] = emperor TrafficCarPos[23] = <<2503.3555, 5556.0645, 44.3684>> TrafficCarQuatX[23] = 0.0009 TrafficCarQuatY[23] = 0.0003 TrafficCarQuatZ[23] = 0.1796 TrafficCarQuatW[23] = 0.9837 TrafficCarRecording[23] = 24 TrafficCarStartime[23] = 13398.0000 TrafficCarModel[23] = asterope // TrafficCarPos[24] = <<2509.5007, 5555.1055, 44.4747>> // TrafficCarQuatX[24] = 0.0008 // TrafficCarQuatY[24] = 0.0004 // TrafficCarQuatZ[24] = 0.1768 // TrafficCarQuatW[24] = 0.9843 // TrafficCarRecording[24] = 25 // TrafficCarStartime[24] = 13794.0000 // TrafficCarModel[24] = asterope // TrafficCarPos[25] = <<2496.7876, 5572.8652, 44.5145>> // TrafficCarQuatX[25] = 0.0009 // TrafficCarQuatY[25] = 0.0003 // TrafficCarQuatZ[25] = 0.1841 // TrafficCarQuatW[25] = 0.9829 // TrafficCarRecording[25] = 26 // TrafficCarStartime[25] = 13926.0000 // TrafficCarModel[25] = SURFER // TrafficCarPos[26] = <<2485.2317, 5602.1167, 44.5838>> // TrafficCarQuatX[26] = 0.0009 // TrafficCarQuatY[26] = 0.0002 // TrafficCarQuatZ[26] = 0.1912 // TrafficCarQuatW[26] = 0.9816 // TrafficCarRecording[26] = 27 // TrafficCarStartime[26] = 14520.0000 // TrafficCarModel[26] = asterope // TrafficCarPos[27] = <<2455.7356, 5612.8857, 44.4778>> // TrafficCarQuatX[27] = 0.0002 // TrafficCarQuatY[27] = -0.0012 // TrafficCarQuatZ[27] = 0.9812 // TrafficCarQuatW[27] = -0.1932 // TrafficCarRecording[27] = 28 // TrafficCarStartime[27] = 15114.0000 // TrafficCarModel[27] = minivan TrafficCarPos[28] = <<2494.8794, 5594.3193, 44.4232>> TrafficCarQuatX[28] = 0.0012 TrafficCarQuatY[28] = 0.0000 TrafficCarQuatZ[28] = 0.1843 TrafficCarQuatW[28] = 0.9829 TrafficCarRecording[28] = 29 TrafficCarStartime[28] = 15708.0000 TrafficCarModel[28] = minivan TrafficCarPos[29] = <<2445.1016, 5638.9839, 44.4275>> TrafficCarQuatX[29] = 0.0004 TrafficCarQuatY[29] = -0.0014 TrafficCarQuatZ[29] = 0.9702 TrafficCarQuatW[29] = -0.2423 TrafficCarRecording[29] = 30 TrafficCarStartime[29] = 15840.0000 TrafficCarModel[29] = emperor TrafficCarPos[30] = <<2461.4565, 5658.5557, 44.8311>> TrafficCarQuatX[30] = 0.0013 TrafficCarQuatY[30] = 0.0003 TrafficCarQuatZ[30] = 0.2075 TrafficCarQuatW[30] = 0.9782 TrafficCarRecording[30] = 31 TrafficCarStartime[30] = 16302.0000 TrafficCarModel[30] = journey TrafficCarPos[31] = <<2427.9761, 5673.8774, 44.6726>> TrafficCarQuatX[31] = 0.0004 TrafficCarQuatY[31] = -0.0017 TrafficCarQuatZ[31] = 0.9732 TrafficCarQuatW[31] = -0.2300 TrafficCarRecording[31] = 32 TrafficCarStartime[31] = 17094.0000 TrafficCarModel[31] = journey // TrafficCarPos[32] = <<2425.5408, 5665.1904, 44.6124>> // TrafficCarQuatX[32] = 0.0006 // TrafficCarQuatY[32] = -0.0015 // TrafficCarQuatZ[32] = 0.9816 // TrafficCarQuatW[32] = -0.1911 // TrafficCarRecording[32] = 33 // TrafficCarStartime[32] = 17622.0000 // TrafficCarModel[32] = asterope TrafficCarPos[33] = <<2400.9226, 5713.9766, 45.1135>> TrafficCarQuatX[33] = 0.0007 TrafficCarQuatY[33] = -0.0030 TrafficCarQuatZ[33] = 0.9697 TrafficCarQuatW[33] = -0.2445 TrafficCarRecording[33] = 34 TrafficCarStartime[33] = 18084.0000 TrafficCarModel[33] = SURFER TrafficCarPos[34] = <<2393.4893, 5737.1675, 45.0127>> TrafficCarQuatX[34] = 0.0010 TrafficCarQuatY[34] = -0.0043 TrafficCarQuatZ[34] = 0.9713 TrafficCarQuatW[34] = -0.2379 TrafficCarRecording[34] = 35 TrafficCarStartime[34] = 18810.0000 TrafficCarModel[34] = emperor TrafficCarPos[35] = <<2424.1030, 5737.5229, 45.1532>> TrafficCarQuatX[35] = 0.0035 TrafficCarQuatY[35] = 0.0008 TrafficCarQuatZ[35] = 0.2295 TrafficCarQuatW[35] = 0.9733 TrafficCarRecording[35] = 36 TrafficCarStartime[35] = 18876.0000 TrafficCarModel[35] = asterope TrafficCarPos[36] = <<2390.8848, 5743.3213, 45.2131>> TrafficCarQuatX[36] = 0.0011 TrafficCarQuatY[36] = -0.0043 TrafficCarQuatZ[36] = 0.9535 TrafficCarQuatW[36] = -0.3014 TrafficCarRecording[36] = 37 TrafficCarStartime[36] = 19338.0000 TrafficCarModel[36] = minivan TrafficCarPos[37] = <<2412.9656, 5770.1772, 45.1403>> TrafficCarQuatX[37] = 0.0039 TrafficCarQuatY[37] = 0.0009 TrafficCarQuatZ[37] = 0.2406 TrafficCarQuatW[37] = 0.9706 TrafficCarRecording[37] = 38 TrafficCarStartime[37] = 19404.0000 TrafficCarModel[37] = emperor TrafficCarPos[38] = <<2386.7268, 5749.7593, 45.3162>> TrafficCarQuatX[38] = 0.0011 TrafficCarQuatY[38] = -0.0046 TrafficCarQuatZ[38] = 0.9670 TrafficCarQuatW[38] = -0.2546 TrafficCarRecording[38] = 39 TrafficCarStartime[38] = 19734.0000 TrafficCarModel[38] = asterope TrafficCarPos[39] = <<2379.0435, 5762.4819, 45.2977>> TrafficCarQuatX[39] = 0.0015 TrafficCarQuatY[39] = -0.0046 TrafficCarQuatZ[39] = 0.9501 TrafficCarQuatW[39] = -0.3120 TrafficCarRecording[39] = 40 TrafficCarStartime[39] = 20328.0000 TrafficCarModel[39] = emperor TrafficCarPos[40] = <<2341.2683, 5808.5879, 46.1418>> TrafficCarQuatX[40] = -0.0018 TrafficCarQuatY[40] = -0.0084 TrafficCarQuatZ[40] = 0.9447 TrafficCarQuatW[40] = -0.3278 TrafficCarRecording[40] = 41 TrafficCarStartime[40] = 21120.0000 TrafficCarModel[40] = journey TrafficCarPos[41] = <<2334.0640, 5818.2275, 46.4928>> TrafficCarQuatX[41] = -0.0019 TrafficCarQuatY[41] = -0.0082 TrafficCarQuatZ[41] = 0.9489 TrafficCarQuatW[41] = -0.3156 TrafficCarRecording[41] = 42 TrafficCarStartime[41] = 21450.0000 TrafficCarModel[41] = asterope TrafficCarPos[42] = <<2341.3201, 5808.5200, 46.3244>> TrafficCarQuatX[42] = -0.0015 TrafficCarQuatY[42] = -0.0085 TrafficCarQuatZ[42] = 0.9358 TrafficCarQuatW[42] = -0.3523 TrafficCarRecording[42] = 43 TrafficCarStartime[42] = 21648.0000 TrafficCarModel[42] = SURFER // TrafficCarPos[43] = <<2317.0034, 5848.4966, 46.8214>> // TrafficCarQuatX[43] = 0.0030 // TrafficCarQuatY[43] = -0.0086 // TrafficCarQuatZ[43] = 0.9356 // TrafficCarQuatW[43] = -0.3530 // TrafficCarRecording[43] = 44 // TrafficCarStartime[43] = 22308.0000 // TrafficCarModel[43] = emperor TrafficCarPos[44] = <<2356.7549, 5852.9966, 46.8044>> TrafficCarQuatX[44] = 0.0077 TrafficCarQuatY[44] = 0.0023 TrafficCarQuatZ[44] = 0.2911 TrafficCarQuatW[44] = 0.9567 TrafficCarRecording[44] = 45 TrafficCarStartime[44] = 22440.0000 TrafficCarModel[44] = minivan TrafficCarPos[45] = <<2306.9895, 5851.7124, 47.3458>> TrafficCarQuatX[45] = 0.0013 TrafficCarQuatY[45] = -0.0100 TrafficCarQuatZ[45] = 0.9375 TrafficCarQuatW[45] = -0.3479 TrafficCarRecording[45] = 46 TrafficCarStartime[45] = 22638.0000 TrafficCarModel[45] = journey // TrafficCarPos[46] = <<2308.6541, 5858.1802, 47.0598>> // TrafficCarQuatX[46] = 0.0039 // TrafficCarQuatY[46] = -0.0095 // TrafficCarQuatZ[46] = 0.9207 // TrafficCarQuatW[46] = -0.3901 // TrafficCarRecording[46] = 47 // TrafficCarStartime[46] = 22836.0000 // TrafficCarModel[46] = emperor // TrafficCarPos[47] = <<2313.1885, 5853.4268, 47.2034>> // TrafficCarQuatX[47] = 0.0034 // TrafficCarQuatY[47] = -0.0093 // TrafficCarQuatZ[47] = 0.9349 // TrafficCarQuatW[47] = -0.3547 // TrafficCarRecording[47] = 48 // TrafficCarStartime[47] = 23892.0000 // TrafficCarModel[47] = SURFER TrafficCarPos[48] = <<2305.7908, 5853.1348, 47.0949>> TrafficCarQuatX[48] = 0.0004 TrafficCarQuatY[48] = -0.0102 TrafficCarQuatZ[48] = 0.9353 TrafficCarQuatW[48] = -0.3536 TrafficCarRecording[48] = 49 TrafficCarStartime[48] = 24024.0000 TrafficCarModel[48] = journey TrafficCarPos[49] = <<2264.7849, 5905.3477, 48.6000>> TrafficCarQuatX[49] = 0.0056 TrafficCarQuatY[49] = -0.0124 TrafficCarQuatZ[49] = 0.9091 TrafficCarQuatW[49] = -0.4164 TrafficCarRecording[49] = 50 TrafficCarStartime[49] = 24222.0000 TrafficCarModel[49] = asterope TrafficCarPos[50] = <<2276.7534, 5892.9897, 48.1198>> TrafficCarQuatX[50] = 0.0046 TrafficCarQuatY[50] = -0.0105 TrafficCarQuatZ[50] = 0.9142 TrafficCarQuatW[50] = -0.4052 TrafficCarRecording[50] = 51 TrafficCarStartime[50] = 24354.0000 TrafficCarModel[50] = emperor TrafficCarPos[51] = <<2294.0850, 5934.6953, 48.3150>> TrafficCarQuatX[51] = 0.0128 TrafficCarQuatY[51] = 0.0035 TrafficCarQuatZ[51] = 0.3199 TrafficCarQuatW[51] = 0.9473 TrafficCarRecording[51] = 52 TrafficCarStartime[51] = 24618.0000 TrafficCarModel[51] = minivan // TrafficCarPos[52] = <<2276.6106, 5885.2847, 48.2309>> // TrafficCarQuatX[52] = 0.0000 // TrafficCarQuatY[52] = -0.0121 // TrafficCarQuatZ[52] = 0.9275 // TrafficCarQuatW[52] = -0.3737 // TrafficCarRecording[52] = 53 // TrafficCarStartime[52] = 25410.0000 // TrafficCarModel[52] = asterope // TrafficCarPos[53] = <<2237.6968, 5931.9976, 49.8146>> // TrafficCarQuatX[53] = 0.0009 // TrafficCarQuatY[53] = -0.0120 // TrafficCarQuatZ[53] = 0.9183 // TrafficCarQuatW[53] = -0.3956 // TrafficCarRecording[53] = 54 // TrafficCarStartime[53] = 25806.0000 // TrafficCarModel[53] = asterope // TrafficCarPos[54] = <<2227.3838, 5941.6563, 50.2338>> // TrafficCarQuatX[54] = 0.0008 // TrafficCarQuatY[54] = -0.0123 // TrafficCarQuatZ[54] = 0.9111 // TrafficCarQuatW[54] = -0.4119 // TrafficCarRecording[54] = 55 // TrafficCarStartime[54] = 26202.0000 // TrafficCarModel[54] = journey TrafficCarPos[55] = <<2245.7124, 5916.9033, 49.1332>> TrafficCarQuatX[55] = 0.0036 TrafficCarQuatY[55] = -0.0122 TrafficCarQuatZ[55] = 0.9221 TrafficCarQuatW[55] = -0.3867 TrafficCarRecording[55] = 56 TrafficCarStartime[55] = 26334.0000 TrafficCarModel[55] = emperor TrafficCarPos[56] = <<2194.0139, 5963.9224, 50.5311>> TrafficCarQuatX[56] = 0.0019 TrafficCarQuatY[56] = -0.0040 TrafficCarQuatZ[56] = 0.9006 TrafficCarQuatW[56] = -0.4346 TrafficCarRecording[56] = 57 TrafficCarStartime[56] = 26532.0000 TrafficCarModel[56] = journey // TrafficCarPos[57] = <<2189.9368, 5967.4883, 50.7580>> // TrafficCarQuatX[57] = 0.0020 // TrafficCarQuatY[57] = -0.0042 // TrafficCarQuatZ[57] = 0.8992 // TrafficCarQuatW[57] = -0.4376 // TrafficCarRecording[57] = 58 // TrafficCarStartime[57] = 26664.0000 // TrafficCarModel[57] = SURFER TrafficCarPos[58] = <<2225.7893, 5935.9399, 49.7968>> TrafficCarQuatX[58] = 0.0087 TrafficCarQuatY[58] = -0.0080 TrafficCarQuatZ[58] = 0.9007 TrafficCarQuatW[58] = -0.4343 TrafficCarRecording[58] = 59 TrafficCarStartime[58] = 26928.0000 TrafficCarModel[58] = emperor // TrafficCarPos[59] = <<2173.9656, 5987.0151, 51.0622>> // TrafficCarQuatX[59] = 0.0010 // TrafficCarQuatY[59] = -0.0011 // TrafficCarQuatZ[59] = 0.9169 // TrafficCarQuatW[59] = -0.3992 // TrafficCarRecording[59] = 60 // TrafficCarStartime[59] = 27324.0000 // TrafficCarModel[59] = minivan // TrafficCarPos[60] = <<2196.2571, 5969.2012, 50.4885>> // TrafficCarQuatX[60] = 0.0010 // TrafficCarQuatY[60] = -0.0046 // TrafficCarQuatZ[60] = 0.8977 // TrafficCarQuatW[60] = -0.4406 // TrafficCarRecording[60] = 61 // TrafficCarStartime[60] = 27918.0000 // TrafficCarModel[60] = emperor TrafficCarPos[61] = <<2151.9482, 6004.3169, 50.8595>> TrafficCarQuatX[61] = -0.0007 TrafficCarQuatY[61] = 0.0013 TrafficCarQuatZ[61] = 0.8772 TrafficCarQuatW[61] = -0.4801 TrafficCarRecording[61] = 62 TrafficCarStartime[61] = 27918.0000 TrafficCarModel[61] = asterope TrafficCarPos[62] = <<2143.4595, 6010.6953, 50.9416>> TrafficCarQuatX[62] = -0.0006 TrafficCarQuatY[62] = 0.0012 TrafficCarQuatZ[62] = 0.8935 TrafficCarQuatW[62] = -0.4490 TrafficCarRecording[62] = 63 TrafficCarStartime[62] = 28248.0000 TrafficCarModel[62] = asterope // TrafficCarPos[63] = <<2170.3572, 5983.4600, 50.6688>> // TrafficCarQuatX[63] = 0.0008 // TrafficCarQuatY[63] = -0.0015 // TrafficCarQuatZ[63] = 0.8815 // TrafficCarQuatW[63] = -0.4721 // TrafficCarRecording[63] = 64 // TrafficCarStartime[63] = 28644.0000 // TrafficCarModel[63] = emperor // TrafficCarPos[64] = <<2129.6682, 6013.3916, 50.6789>> // TrafficCarQuatX[64] = -0.0003 // TrafficCarQuatY[64] = 0.0048 // TrafficCarQuatZ[64] = 0.9053 // TrafficCarQuatW[64] = -0.4248 // TrafficCarRecording[64] = 65 // TrafficCarStartime[64] = 29172.0000 // TrafficCarModel[64] = asterope // TrafficCarPos[65] = <<2122.8330, 6026.0000, 50.7882>> // TrafficCarQuatX[65] = -0.0033 // TrafficCarQuatY[65] = 0.0040 // TrafficCarQuatZ[65] = 0.8944 // TrafficCarQuatW[65] = -0.4472 // TrafficCarRecording[65] = 66 // TrafficCarStartime[65] = 29634.0000 // TrafficCarModel[65] = asterope TrafficCarPos[66] = <<2128.2231, 6021.9575, 50.5741>> TrafficCarQuatX[66] = -0.0034 TrafficCarQuatY[66] = 0.0038 TrafficCarQuatZ[66] = 0.8762 TrafficCarQuatW[66] = -0.4820 TrafficCarRecording[66] = 67 TrafficCarStartime[66] = 30096.0000 TrafficCarModel[66] = emperor // TrafficCarPos[67] = <<2079.1140, 6059.2349, 49.0249>> // TrafficCarQuatX[67] = -0.0062 // TrafficCarQuatY[67] = 0.0124 // TrafficCarQuatZ[67] = 0.9006 // TrafficCarQuatW[67] = -0.4343 // TrafficCarRecording[67] = 68 // TrafficCarStartime[67] = 30228.0000 // TrafficCarModel[67] = journey TrafficCarPos[68] = <<2106.0881, 6030.7827, 50.0777>> TrafficCarQuatX[68] = -0.0059 TrafficCarQuatY[68] = 0.0126 TrafficCarQuatZ[68] = 0.9114 TrafficCarQuatW[68] = -0.4112 TrafficCarRecording[68] = 69 TrafficCarStartime[68] = 30690.0000 TrafficCarModel[68] = emperor // TrafficCarPos[69] = <<2080.8591, 6057.7676, 49.0091>> // TrafficCarQuatX[69] = -0.0061 // TrafficCarQuatY[69] = 0.0132 // TrafficCarQuatZ[69] = 0.9050 // TrafficCarQuatW[69] = -0.4251 // TrafficCarRecording[69] = 70 // TrafficCarStartime[69] = 30888.0000 // TrafficCarModel[69] = emperor // TrafficCarPos[70] = <<2077.8420, 6060.2080, 49.3048>> // TrafficCarQuatX[70] = -0.0055 // TrafficCarQuatY[70] = 0.0132 // TrafficCarQuatZ[70] = 0.9220 // TrafficCarQuatW[70] = -0.3870 // TrafficCarRecording[70] = 71 // TrafficCarStartime[70] = 31152.0000 // TrafficCarModel[70] = minivan TrafficCarPos[71] = <<2077.3833, 6053.5493, 49.1698>> TrafficCarQuatX[71] = -0.0056 TrafficCarQuatY[71] = 0.0132 TrafficCarQuatZ[71] = 0.9220 TrafficCarQuatW[71] = -0.3870 TrafficCarRecording[71] = 72 TrafficCarStartime[71] = 31482.0000 TrafficCarModel[71] = asterope // TrafficCarPos[72] = <<2071.9292, 6065.4019, 48.6676>> // TrafficCarQuatX[72] = -0.0064 // TrafficCarQuatY[72] = 0.0128 // TrafficCarQuatZ[72] = 0.8953 // TrafficCarQuatW[72] = -0.4451 // TrafficCarRecording[72] = 73 // TrafficCarStartime[72] = 31812.0000 // TrafficCarModel[72] = emperor TrafficCarPos[73] = <<2025.2740, 6101.4082, 47.5248>> TrafficCarQuatX[73] = -0.0080 TrafficCarQuatY[73] = 0.0081 TrafficCarQuatZ[73] = 0.9381 TrafficCarQuatW[73] = -0.3461 TrafficCarRecording[73] = 74 TrafficCarStartime[73] = 31878.0000 TrafficCarModel[73] = SURFER TrafficCarPos[74] = <<2056.4045, 6071.6440, 48.3698>> TrafficCarQuatX[74] = -0.0049 TrafficCarQuatY[74] = 0.0120 TrafficCarQuatZ[74] = 0.9275 TrafficCarQuatW[74] = -0.3735 TrafficCarRecording[74] = 75 TrafficCarStartime[74] = 32208.0000 TrafficCarModel[74] = minivan TrafficCarPos[75] = <<2016.8806, 6117.5591, 47.1699>> TrafficCarQuatX[75] = -0.0044 TrafficCarQuatY[75] = 0.0108 TrafficCarQuatZ[75] = 0.9266 TrafficCarQuatW[75] = -0.3760 TrafficCarRecording[75] = 76 TrafficCarStartime[75] = 32274.0000 TrafficCarModel[75] = asterope TrafficCarPos[76] = <<2064.5444, 6124.3882, 49.5683>> TrafficCarQuatX[76] = -0.0121 TrafficCarQuatY[76] = -0.0050 TrafficCarQuatZ[76] = 0.4074 TrafficCarQuatW[76] = 0.9131 TrafficCarRecording[76] = 77 TrafficCarStartime[76] = 32274.0000 - 1000.0 TrafficCarModel[76] = journey // TrafficCarPos[77] = <<2049.0120, 6085.9404, 48.1355>> // TrafficCarQuatX[77] = -0.0046 // TrafficCarQuatY[77] = 0.0104 // TrafficCarQuatZ[77] = 0.9194 // TrafficCarQuatW[77] = -0.3932 // TrafficCarRecording[77] = 78 // TrafficCarStartime[77] = 32670.0000 // TrafficCarModel[77] = asterope TrafficCarPos[78] = <<2011.3207, 6123.3882, 46.7588>> TrafficCarQuatX[78] = -0.0037 TrafficCarQuatY[78] = 0.0097 TrafficCarQuatZ[78] = 0.9278 TrafficCarQuatW[78] = -0.3729 TrafficCarRecording[78] = 79 TrafficCarStartime[78] = 32868.0000 TrafficCarModel[78] = asterope TrafficCarPos[79] = <<2022.5339, 6104.1489, 47.5842>> TrafficCarQuatX[79] = -0.0083 TrafficCarQuatY[79] = 0.0076 TrafficCarQuatZ[79] = 0.9083 TrafficCarQuatW[79] = -0.4181 TrafficCarRecording[79] = 80 TrafficCarStartime[79] = 33264.0000 TrafficCarModel[79] = minivan TrafficCarPos[80] = <<1988.7322, 6150.8906, 45.9257>> TrafficCarQuatX[80] = -0.0041 TrafficCarQuatY[80] = 0.0108 TrafficCarQuatZ[80] = 0.9411 TrafficCarQuatW[80] = -0.3378 TrafficCarRecording[80] = 81 TrafficCarStartime[80] = 33396.0000 TrafficCarModel[80] = emperor TrafficCarPos[81] = <<1985.0082, 6155.7656, 45.9220>> TrafficCarQuatX[81] = -0.0028 TrafficCarQuatY[81] = 0.0112 TrafficCarQuatZ[81] = 0.9647 TrafficCarQuatW[81] = -0.2630 TrafficCarRecording[81] = 82 TrafficCarStartime[81] = 33792.0000 TrafficCarModel[81] = minivan TrafficCarPos[82] = <<1955.8132, 6202.2827, 44.6369>> TrafficCarQuatX[82] = -0.0026 TrafficCarQuatY[82] = 0.0127 TrafficCarQuatZ[82] = 0.9876 TrafficCarQuatW[82] = -0.1563 TrafficCarRecording[82] = 83 TrafficCarStartime[82] = 34650.0000 TrafficCarModel[82] = asterope TrafficCarPos[83] = <<1951.5308, 6214.4453, 44.0232>> TrafficCarQuatX[83] = -0.0024 TrafficCarQuatY[83] = 0.0129 TrafficCarQuatZ[83] = 0.9803 TrafficCarQuatW[83] = -0.1973 TrafficCarRecording[83] = 84 TrafficCarStartime[83] = 36498.0000 TrafficCarModel[83] = emperor TrafficCarPos[84] = <<1941.9100, 6251.7842, 43.0887>> TrafficCarQuatX[84] = -0.0024 TrafficCarQuatY[84] = 0.0126 TrafficCarQuatZ[84] = 0.9769 TrafficCarQuatW[84] = -0.2135 TrafficCarRecording[84] = 85 TrafficCarStartime[84] = 37224.0000 TrafficCarModel[84] = journey // TrafficCarPos[85] = <<1899.3508, 6304.0464, 41.7675>> // TrafficCarQuatX[85] = -0.0045 // TrafficCarQuatY[85] = 0.0089 // TrafficCarQuatZ[85] = 0.9075 // TrafficCarQuatW[85] = -0.4200 // TrafficCarRecording[85] = 86 // TrafficCarStartime[85] = 37488.0000 // TrafficCarModel[85] = asterope TrafficCarPos[86] = <<1895.5120, 6313.5635, 41.4656>> TrafficCarQuatX[86] = -0.0063 TrafficCarQuatY[86] = 0.0114 TrafficCarQuatZ[86] = 0.8745 TrafficCarQuatW[86] = -0.4849 TrafficCarRecording[86] = 87 TrafficCarStartime[86] = 37686.0000 TrafficCarModel[86] = asterope TrafficCarPos[87] = <<1862.3741, 6328.8042, 40.3474>> TrafficCarQuatX[87] = -0.0113 TrafficCarQuatY[87] = 0.0158 TrafficCarQuatZ[87] = 0.8149 TrafficCarQuatW[87] = -0.5793 TrafficCarRecording[87] = 88 TrafficCarStartime[87] = 38346.0000 TrafficCarModel[87] = SURFER TrafficCarPos[88] = <<1891.9431, 6349.6519, 41.5862>> TrafficCarQuatX[88] = -0.0107 TrafficCarQuatY[88] = -0.0078 TrafficCarQuatZ[88] = 0.5670 TrafficCarQuatW[88] = 0.8236 TrafficCarRecording[88] = 89 TrafficCarStartime[88] = 38412.0000 TrafficCarModel[88] = minivan TrafficCarPos[89] = <<1846.8118, 6363.4038, 40.1519>> TrafficCarQuatX[89] = -0.0114 TrafficCarQuatY[89] = -0.0087 TrafficCarQuatZ[89] = 0.6037 TrafficCarQuatW[89] = 0.7971 TrafficCarRecording[89] = 90 TrafficCarStartime[89] = 39204.0000 TrafficCarModel[89] = emperor TrafficCarPos[90] = <<1784.3910, 6370.2109, 37.9927>> TrafficCarQuatX[90] = -0.0174 TrafficCarQuatY[90] = -0.0171 TrafficCarQuatZ[90] = 0.6835 TrafficCarQuatW[90] = 0.7295 TrafficCarRecording[90] = 91 TrafficCarStartime[90] = 41778.0000 TrafficCarModel[90] = asterope ParkedCarPos[0] = <<1732.1554, 6403.5503, 34.4566>> ParkedCarQuatX[0] = -0.0159 ParkedCarQuatY[0] = -0.0254 ParkedCarQuatZ[0] = -0.2550 ParkedCarQuatW[0] = 0.9665 ParkedCarModel[0] = minivan TrafficCarPos[91] = <<1773.8611, 6343.8247, 36.3343>> TrafficCarQuatX[91] = -0.0130 TrafficCarQuatY[91] = 0.0190 TrafficCarQuatZ[91] = 0.7427 TrafficCarQuatW[91] = -0.6692 TrafficCarRecording[91] = 92 TrafficCarStartime[91] = 41910.0000 TrafficCarModel[91] = journey TrafficCarPos[92] = <<1725.8148, 6352.4946, 33.9923>> TrafficCarQuatX[92] = -0.0156 TrafficCarQuatY[92] = 0.0212 TrafficCarQuatZ[92] = 0.7943 TrafficCarQuatW[92] = -0.6070 TrafficCarRecording[92] = 93 TrafficCarStartime[92] = 42108.0000 TrafficCarModel[92] = asterope TrafficCarPos[93] = <<1693.9230, 6380.9585, 31.6176>> TrafficCarQuatX[93] = -0.0288 TrafficCarQuatY[93] = -0.0220 TrafficCarQuatZ[93] = 0.6188 TrafficCarQuatW[93] = 0.7847 TrafficCarRecording[93] = 94 TrafficCarStartime[93] = 42702.0000 TrafficCarModel[93] = asterope TrafficCarPos[94] = <<1675.1924, 6368.1792, 31.2057>> TrafficCarQuatX[94] = -0.0170 TrafficCarQuatY[94] = 0.0230 TrafficCarQuatZ[94] = 0.8127 TrafficCarQuatW[94] = -0.5819 TrafficCarRecording[94] = 95 TrafficCarStartime[94] = 42900.0000 TrafficCarModel[94] = asterope TrafficCarPos[95] = <<1648.9746, 6371.3037, 29.7276>> TrafficCarQuatX[95] = -0.0172 TrafficCarQuatY[95] = 0.0237 TrafficCarQuatZ[95] = 0.8060 TrafficCarQuatW[95] = -0.5912 TrafficCarRecording[95] = 96 TrafficCarStartime[95] = 43428.0000 TrafficCarModel[95] = SURFER TrafficCarPos[96] = <<1621.5427, 6382.0889, 27.9963>> TrafficCarQuatX[96] = -0.0179 TrafficCarQuatY[96] = 0.0260 TrafficCarQuatZ[96] = 0.8220 TrafficCarQuatW[96] = -0.5686 TrafficCarRecording[96] = 97 TrafficCarStartime[96] = 44088.0000 TrafficCarModel[96] = journey TrafficCarPos[97] = <<1613.9684, 6404.0195, 26.7857>> TrafficCarQuatX[97] = -0.0289 TrafficCarQuatY[97] = -0.0185 TrafficCarQuatZ[97] = 0.5576 TrafficCarQuatW[97] = 0.8294 TrafficCarRecording[97] = 98 TrafficCarStartime[97] = 44418.0000 TrafficCarModel[97] = emperor TrafficCarPos[98] = <<1594.1198, 6392.8965, 25.6806>> TrafficCarQuatX[98] = -0.0173 TrafficCarQuatY[98] = 0.0277 TrafficCarQuatZ[98] = 0.8492 TrafficCarQuatW[98] = -0.5271 TrafficCarRecording[98] = 99 TrafficCarStartime[98] = 44814.0000 TrafficCarModel[98] = emperor TrafficCarPos[99] = <<1593.0610, 6413.1421, 25.3120>> TrafficCarQuatX[99] = -0.0286 TrafficCarQuatY[99] = -0.0196 TrafficCarQuatZ[99] = 0.5784 TrafficCarQuatW[99] = 0.8150 TrafficCarRecording[99] = 100 TrafficCarStartime[99] = 44946.0000 TrafficCarModel[99] = minivan // TrafficCarPos[100] = <<1584.9420, 6403.1611, 25.1363>> // TrafficCarQuatX[100] = -0.0179 // TrafficCarQuatY[100] = 0.0270 // TrafficCarQuatZ[100] = 0.8338 // TrafficCarQuatW[100] = -0.5511 // TrafficCarRecording[100] = 101 // TrafficCarStartime[100] = 45078.0000 // TrafficCarModel[100] = asterope // ParkedCarPos[1] = <<1597.6619, 6417.5078, 24.9339>> // ParkedCarQuatX[1] = -0.0000 // ParkedCarQuatY[1] = 0.0000 // ParkedCarQuatZ[1] = 0.5357 // ParkedCarQuatW[1] = 0.8444 // ParkedCarModel[1] = Packer TrafficCarPos[101] = <<1588.1694, 6421.3286, 24.7918>> TrafficCarQuatX[101] = -0.0301 TrafficCarQuatY[101] = -0.0185 TrafficCarQuatZ[101] = 0.5236 TrafficCarQuatW[101] = 0.8512 TrafficCarRecording[101] = 102 TrafficCarStartime[101] = 45342.0000 TrafficCarModel[101] = asterope TrafficCarPos[102] = <<1587.3392, 6396.2217, 25.2695>> TrafficCarQuatX[102] = -0.0181 TrafficCarQuatY[102] = 0.0275 TrafficCarQuatZ[102] = 0.8375 TrafficCarQuatW[102] = -0.5455 TrafficCarRecording[102] = 103 TrafficCarStartime[102] = 45474.0000 TrafficCarModel[102] = journey TrafficCarPos[103] = <<1542.3279, 6415.5874, 23.3908>> TrafficCarQuatX[103] = -0.0083 TrafficCarQuatY[103] = 0.0124 TrafficCarQuatZ[103] = 0.8169 TrafficCarQuatW[103] = -0.5765 TrafficCarRecording[103] = 104 TrafficCarStartime[103] = 46068.0000 TrafficCarModel[103] = emperor ParkedCarPos[2] = <<1576.5372, 6451.1187, 24.5210>> ParkedCarQuatX[2] = 0.0361 ParkedCarQuatY[2] = -0.0126 ParkedCarQuatZ[2] = -0.2494 ParkedCarQuatW[2] = 0.9676 ParkedCarModel[2] = minivan ParkedCarPos[3] = <<1532.3318, 6408.2344, 23.1721>> ParkedCarQuatX[3] = 0.0000 ParkedCarQuatY[3] = 0.0000 ParkedCarQuatZ[3] = 0.8056 ParkedCarQuatW[3] = -0.5924 ParkedCarModel[3] = emperor // TrafficCarPos[104] = <<1546.6086, 6418.7231, 23.5173>> // TrafficCarQuatX[104] = -0.0077 // TrafficCarQuatY[104] = 0.0122 // TrafficCarQuatZ[104] = 0.8514 // TrafficCarQuatW[104] = -0.5243 // TrafficCarRecording[104] = 105 // TrafficCarStartime[104] = 46596.0000 // TrafficCarModel[104] = asterope // TrafficCarPos[105] = <<1524.1237, 6441.6055, 23.2660>> // TrafficCarQuatX[105] = -0.0145 // TrafficCarQuatY[105] = -0.0099 // TrafficCarQuatZ[105] = 0.5570 // TrafficCarQuatW[105] = 0.8303 // TrafficCarRecording[105] = 106 // TrafficCarStartime[105] = 46728.0000 // TrafficCarModel[105] = Packer TrafficCarPos[106] = <<1531.3542, 6419.3477, 23.3128>> TrafficCarQuatX[106] = -0.0092 TrafficCarQuatY[106] = 0.0122 TrafficCarQuatZ[106] = 0.8038 TrafficCarQuatW[106] = -0.5947 TrafficCarRecording[106] = 107 TrafficCarStartime[106] = 46992.0000 TrafficCarModel[106] = SURFER TrafficCarPos[107] = <<1487.2659, 6441.6406, 21.9444>> TrafficCarQuatX[107] = -0.0092 TrafficCarQuatY[107] = 0.0102 TrafficCarQuatZ[107] = 0.7991 TrafficCarQuatW[107] = -0.6010 TrafficCarRecording[107] = 108 TrafficCarStartime[107] = 47520.0000 TrafficCarModel[107] = journey // TrafficCarPos[108] = <<1440.0983, 6458.7432, 20.7191>> // TrafficCarQuatX[108] = -0.0077 // TrafficCarQuatY[108] = 0.0073 // TrafficCarQuatZ[108] = 0.8126 // TrafficCarQuatW[108] = -0.5827 // TrafficCarRecording[108] = 109 // TrafficCarStartime[108] = 48576.0000 // TrafficCarModel[108] = minivan TrafficCarPos[109] = <<1406.0055, 6480.3774, 19.6421>> TrafficCarQuatX[109] = -0.0031 TrafficCarQuatY[109] = -0.0048 TrafficCarQuatZ[109] = 0.6208 TrafficCarQuatW[109] = 0.7840 TrafficCarRecording[109] = 110 TrafficCarStartime[109] = 49368.0000 TrafficCarModel[109] = emperor TrafficCarPos[110] = <<1394.3269, 6471.6846, 19.6279>> TrafficCarQuatX[110] = -0.0010 TrafficCarQuatY[110] = 0.0034 TrafficCarQuatZ[110] = 0.7756 TrafficCarQuatW[110] = -0.6312 TrafficCarRecording[110] = 111 TrafficCarStartime[110] = 49566.0000 TrafficCarModel[110] = journey TrafficCarPos[111] = <<1373.0330, 6476.1318, 19.4375>> TrafficCarQuatX[111] = 0.0019 TrafficCarQuatY[111] = 0.0044 TrafficCarQuatZ[111] = 0.7449 TrafficCarQuatW[111] = -0.6672 TrafficCarRecording[111] = 112 TrafficCarStartime[111] = 50028.0000 TrafficCarModel[111] = emperor TrafficCarPos[112] = <<1372.0283, 6482.6143, 19.6764>> TrafficCarQuatX[112] = -0.0018 TrafficCarQuatY[112] = -0.0012 TrafficCarQuatZ[112] = 0.6428 TrafficCarQuatW[112] = 0.7660 TrafficCarRecording[112] = 113 TrafficCarStartime[112] = 50094.0000 TrafficCarModel[112] = asterope TrafficCarPos[113] = <<1385.5012, 6480.0137, 19.7448>> TrafficCarQuatX[113] = -0.0020 TrafficCarQuatY[113] = -0.0017 TrafficCarQuatZ[113] = 0.6064 TrafficCarQuatW[113] = 0.7951 TrafficCarRecording[113] = 114 TrafficCarStartime[113] = 50292.0000 TrafficCarModel[113] = SURFER TrafficCarPos[114] = <<1383.4406, 6473.8906, 19.8693>> TrafficCarQuatX[114] = 0.0022 TrafficCarQuatY[114] = 0.0043 TrafficCarQuatZ[114] = 0.7876 TrafficCarQuatW[114] = -0.6162 TrafficCarRecording[114] = 115 TrafficCarStartime[114] = 50358.0000 TrafficCarModel[114] = journey TrafficCarPos[115] = <<1322.9041, 6483.0718, 19.6677>> TrafficCarQuatX[115] = 0.0041 TrafficCarQuatY[115] = 0.0020 TrafficCarQuatZ[115] = 0.7191 TrafficCarQuatW[115] = -0.6949 TrafficCarRecording[115] = 116 TrafficCarStartime[115] = 51084.0000 TrafficCarModel[115] = asterope TrafficCarPos[116] = <<1203.2847, 6495.1777, 20.7136>> TrafficCarQuatX[116] = 0.0013 TrafficCarQuatY[116] = 0.0012 TrafficCarQuatZ[116] = 0.7118 TrafficCarQuatW[116] = 0.7024 TrafficCarRecording[116] = 117 TrafficCarStartime[116] = 54120.0000 TrafficCarModel[116] = minivan ParkedCarPos[4] = <<1167.2759, 6510.2671, 20.4517>> ParkedCarQuatX[4] = -0.0056 ParkedCarQuatY[4] = 0.0116 ParkedCarQuatZ[4] = 0.6716 ParkedCarQuatW[4] = 0.7408 ParkedCarModel[4] = minivan TrafficCarPos[117] = <<1155.1647, 6482.5327, 20.7270>> TrafficCarQuatX[117] = -0.0035 TrafficCarQuatY[117] = -0.0023 TrafficCarQuatZ[117] = -0.7037 TrafficCarQuatW[117] = 0.7105 TrafficCarRecording[117] = 118 TrafficCarStartime[117] = 55110.0000 TrafficCarModel[117] = SURFER ParkedCarPos[5] = <<1140.6067, 6511.6465, 20.5916>> ParkedCarQuatX[5] = -0.0319 ParkedCarQuatY[5] = 0.0231 ParkedCarQuatZ[5] = 0.6637 ParkedCarQuatW[5] = 0.7469 ParkedCarModel[5] = minivan TrafficCarPos[118] = <<1124.6927, 6494.4053, 20.5125>> TrafficCarQuatX[118] = 0.0029 TrafficCarQuatY[118] = -0.0031 TrafficCarQuatZ[118] = 0.7094 TrafficCarQuatW[118] = 0.7048 TrafficCarRecording[118] = 119 TrafficCarStartime[118] = 55704.0000 TrafficCarModel[118] = emperor TrafficCarPos[119] = <<1119.5255, 6488.2949, 20.7457>> TrafficCarQuatX[119] = 0.0031 TrafficCarQuatY[119] = -0.0033 TrafficCarQuatZ[119] = 0.7145 TrafficCarQuatW[119] = 0.6997 TrafficCarRecording[119] = 120 TrafficCarStartime[119] = 56034.0000 TrafficCarModel[119] = asterope TrafficCarPos[120] = <<1106.9222, 6481.5542, 20.5177>> TrafficCarQuatX[120] = 0.0030 TrafficCarQuatY[120] = 0.0031 TrafficCarQuatZ[120] = 0.7152 TrafficCarQuatW[120] = -0.6989 TrafficCarRecording[120] = 121 TrafficCarStartime[120] = 56166.0000 TrafficCarModel[120] = asterope ParkedCarPos[6] = <<1112.5037, 6510.3462, 20.6561>> ParkedCarQuatX[6] = -0.0000 ParkedCarQuatY[6] = 0.0000 ParkedCarQuatZ[6] = 0.6373 ParkedCarQuatW[6] = 0.7707 ParkedCarModel[6] = asterope TrafficCarPos[121] = <<1089.8398, 6482.0918, 20.4654>> TrafficCarQuatX[121] = -0.0021 TrafficCarQuatY[121] = -0.0042 TrafficCarQuatZ[121] = -0.6711 TrafficCarQuatW[121] = 0.7414 TrafficCarRecording[121] = 122 TrafficCarStartime[121] = 56562.0000 TrafficCarModel[121] = emperor TrafficCarPos[122] = <<1064.2640, 6481.4595, 20.5162>> TrafficCarQuatX[122] = 0.0020 TrafficCarQuatY[122] = 0.0035 TrafficCarQuatZ[122] = 0.7168 TrafficCarQuatW[122] = -0.6973 TrafficCarRecording[122] = 123 TrafficCarStartime[122] = 57156.0000 TrafficCarModel[122] = journey TrafficCarPos[123] = <<1060.3815, 6493.4580, 20.7409>> TrafficCarQuatX[123] = 0.0021 TrafficCarQuatY[123] = -0.0037 TrafficCarQuatZ[123] = 0.6976 TrafficCarQuatW[123] = 0.7165 TrafficCarRecording[123] = 124 TrafficCarStartime[123] = 57156.0000 TrafficCarModel[123] = asterope TrafficCarPos[124] = <<1048.4277, 6481.5498, 20.7796>> TrafficCarQuatX[124] = 0.0036 TrafficCarQuatY[124] = 0.0026 TrafficCarQuatZ[124] = 0.7133 TrafficCarQuatW[124] = -0.7008 TrafficCarRecording[124] = 125 TrafficCarStartime[124] = 57486.0000 TrafficCarModel[124] = journey ParkedCarPos[7] = <<1038.6754, 6504.0908, 20.5573>> ParkedCarQuatX[7] = 0.0135 ParkedCarQuatY[7] = -0.0175 ParkedCarQuatZ[7] = 0.7902 ParkedCarQuatW[7] = 0.6125 ParkedCarModel[7] = minivan TrafficCarPos[125] = <<1029.0808, 6488.5986, 20.3729>> TrafficCarQuatX[125] = 0.0001 TrafficCarQuatY[125] = -0.0004 TrafficCarQuatZ[125] = 0.6854 TrafficCarQuatW[125] = 0.7282 TrafficCarRecording[125] = 126 TrafficCarStartime[125] = 57882.0000 TrafficCarModel[125] = emperor TrafficCarPos[126] = <<1013.0278, 6481.3428, 20.3730>> TrafficCarQuatX[126] = 0.0031 TrafficCarQuatY[126] = 0.0031 TrafficCarQuatZ[126] = 0.7262 TrafficCarQuatW[126] = -0.6875 TrafficCarRecording[126] = 127 TrafficCarStartime[126] = 58278.0000 TrafficCarModel[126] = emperor TrafficCarPos[127] = <<1002.9684, 6481.7998, 20.7867>> TrafficCarQuatX[127] = -0.0033 TrafficCarQuatY[127] = -0.0029 TrafficCarQuatZ[127] = -0.6788 TrafficCarQuatW[127] = 0.7343 TrafficCarRecording[127] = 128 TrafficCarStartime[127] = 58476.0000 TrafficCarModel[127] = minivan TrafficCarPos[128] = <<987.0549, 6481.9800, 20.6444>> TrafficCarQuatX[128] = -0.0032 TrafficCarQuatY[128] = -0.0033 TrafficCarQuatZ[128] = -0.7041 TrafficCarQuatW[128] = 0.7101 TrafficCarRecording[128] = 129 TrafficCarStartime[128] = 58872.0000 TrafficCarModel[128] = SURFER TrafficCarPos[129] = <<978.0116, 6482.1367, 20.6604>> TrafficCarQuatX[129] = 0.0037 TrafficCarQuatY[129] = 0.0022 TrafficCarQuatZ[129] = 0.7221 TrafficCarQuatW[129] = -0.6918 TrafficCarRecording[129] = 130 TrafficCarStartime[129] = 59598.0000 TrafficCarModel[129] = asterope TrafficCarPos[130] = <<934.9140, 6495.5503, 20.5344>> TrafficCarQuatX[130] = 0.0025 TrafficCarQuatY[130] = -0.0002 TrafficCarQuatZ[130] = 0.6975 TrafficCarQuatW[130] = 0.7165 TrafficCarRecording[130] = 131 TrafficCarStartime[130] = 60060.0000 TrafficCarModel[130] = emperor TrafficCarPos[131] = <<932.5633, 6483.0703, 20.9136>> TrafficCarQuatX[131] = 0.0052 TrafficCarQuatY[131] = 0.0011 TrafficCarQuatZ[131] = 0.7226 TrafficCarQuatW[131] = -0.6913 TrafficCarRecording[131] = 132 TrafficCarStartime[131] = 60390.0000 TrafficCarModel[131] = journey TrafficCarPos[132] = <<909.9576, 6483.8462, 20.7867>> TrafficCarQuatX[132] = 0.0069 TrafficCarQuatY[132] = -0.0002 TrafficCarQuatZ[132] = 0.7339 TrafficCarQuatW[132] = -0.6792 TrafficCarRecording[132] = 133 TrafficCarStartime[132] = 60984.0000 TrafficCarModel[132] = journey TrafficCarPos[133] = <<888.3078, 6491.0879, 21.3140>> TrafficCarQuatX[133] = 0.0049 TrafficCarQuatY[133] = 0.0028 TrafficCarQuatZ[133] = 0.6906 TrafficCarQuatW[133] = 0.7232 TrafficCarRecording[133] = 134 TrafficCarStartime[133] = 61116.0000 TrafficCarModel[133] = minivan TrafficCarPos[134] = <<889.8680, 6484.9717, 21.2800>> TrafficCarQuatX[134] = 0.0071 TrafficCarQuatY[134] = -0.0009 TrafficCarQuatZ[134] = 0.7250 TrafficCarQuatW[134] = -0.6887 TrafficCarRecording[134] = 135 TrafficCarStartime[134] = 61446.0000 TrafficCarModel[134] = journey TrafficCarPos[135] = <<842.5891, 6488.0615, 22.1128>> TrafficCarQuatX[135] = 0.0123 TrafficCarQuatY[135] = -0.0070 TrafficCarQuatZ[135] = 0.7344 TrafficCarQuatW[135] = -0.6786 TrafficCarRecording[135] = 136 TrafficCarStartime[135] = 62172.0000 TrafficCarModel[135] = journey TrafficCarPos[136] = <<841.4916, 6494.0601, 21.7476>> TrafficCarQuatX[136] = 0.0096 TrafficCarQuatY[136] = 0.0076 TrafficCarQuatZ[136] = 0.6762 TrafficCarQuatW[136] = 0.7366 TrafficCarRecording[136] = 137 TrafficCarStartime[136] = 62172.0000 TrafficCarModel[136] = emperor TrafficCarPos[137] = <<822.6181, 6489.5981, 22.7336>> TrafficCarQuatX[137] = 0.0142 TrafficCarQuatY[137] = -0.0097 TrafficCarQuatZ[137] = 0.7634 TrafficCarQuatW[137] = -0.6457 TrafficCarRecording[137] = 138 TrafficCarStartime[137] = 62634.0000 TrafficCarModel[137] = minivan TrafficCarPos[138] = <<798.2071, 6491.5229, 23.6704>> TrafficCarQuatX[138] = 0.0171 TrafficCarQuatY[138] = -0.0136 TrafficCarQuatZ[138] = 0.7653 TrafficCarQuatW[138] = -0.6434 TrafficCarRecording[138] = 139 TrafficCarStartime[138] = 63228.0000 TrafficCarModel[138] = minivan TrafficCarPos[139] = <<795.2281, 6497.8896, 23.5202>> TrafficCarQuatX[139] = 0.0163 TrafficCarQuatY[139] = 0.0138 TrafficCarQuatZ[139] = 0.6766 TrafficCarQuatW[139] = 0.7361 TrafficCarRecording[139] = 140 TrafficCarStartime[139] = 63228.0000 TrafficCarModel[139] = minivan TrafficCarPos[140] = <<797.3790, 6503.7246, 23.3211>> TrafficCarQuatX[140] = 0.0169 TrafficCarQuatY[140] = 0.0141 TrafficCarQuatZ[140] = 0.6396 TrafficCarQuatW[140] = 0.7684 TrafficCarRecording[140] = 141 TrafficCarStartime[140] = 63558.0000 TrafficCarModel[140] = emperor TrafficCarPos[141] = <<747.9111, 6498.4053, 26.0047>> TrafficCarQuatX[141] = 0.0165 TrafficCarQuatY[141] = -0.0131 TrafficCarQuatZ[141] = 0.7684 TrafficCarQuatW[141] = -0.6397 TrafficCarRecording[141] = 142 TrafficCarStartime[141] = 64350.0000 TrafficCarModel[141] = journey TrafficCarPos[142] = <<713.0914, 6505.1797, 26.9262>> TrafficCarQuatX[142] = 0.0099 TrafficCarQuatY[142] = -0.0055 TrafficCarQuatZ[142] = 0.7799 TrafficCarQuatW[142] = -0.6259 TrafficCarRecording[142] = 143 TrafficCarStartime[142] = 65142.0000 TrafficCarModel[142] = journey // TrafficCarPos[143] = <<711.7022, 6512.8169, 26.9004>> // TrafficCarQuatX[143] = 0.0126 // TrafficCarQuatY[143] = 0.0045 // TrafficCarQuatZ[143] = 0.6277 // TrafficCarQuatW[143] = 0.7784 // TrafficCarRecording[143] = 144 // TrafficCarStartime[143] = 65208.0000 // TrafficCarModel[143] = emperor TrafficCarPos[144] = <<725.2426, 6509.2402, 26.9223>> TrafficCarQuatX[144] = 0.0136 TrafficCarQuatY[144] = 0.0054 TrafficCarQuatZ[144] = 0.6585 TrafficCarQuatW[144] = 0.7525 TrafficCarRecording[144] = 145 TrafficCarStartime[144] = 65472.0000 TrafficCarModel[144] = minivan // TrafficCarPos[145] = <<716.8861, 6511.1299, 27.0243>> // TrafficCarQuatX[145] = 0.0130 // TrafficCarQuatY[145] = 0.0043 // TrafficCarQuatZ[145] = 0.5981 // TrafficCarQuatW[145] = 0.8013 // TrafficCarRecording[145] = 146 // TrafficCarStartime[145] = 65604.0000 // TrafficCarModel[145] = SURFER // TrafficCarPos[146] = <<702.9258, 6519.6206, 27.8427>> // TrafficCarQuatX[146] = 0.0037 // TrafficCarQuatY[146] = -0.0028 // TrafficCarQuatZ[146] = 0.6318 // TrafficCarQuatW[146] = 0.7751 // TrafficCarRecording[146] = 147 // TrafficCarStartime[146] = 65934.0000 // TrafficCarModel[146] = Packer TrafficCarPos[147] = <<669.4201, 6515.0186, 27.8855>> TrafficCarQuatX[147] = 0.0052 TrafficCarQuatY[147] = 0.0006 TrafficCarQuatZ[147] = 0.7765 TrafficCarQuatW[147] = -0.6301 TrafficCarRecording[147] = 148 TrafficCarStartime[147] = 66396.0000 TrafficCarModel[147] = journey TrafficCarPos[148] = <<648.7714, 6519.7339, 28.0324>> TrafficCarQuatX[148] = 0.0045 TrafficCarQuatY[148] = 0.0014 TrafficCarQuatZ[148] = 0.7660 TrafficCarQuatW[148] = -0.6428 TrafficCarRecording[148] = 149 TrafficCarStartime[148] = 67188.0000 TrafficCarModel[148] = minivan TrafficCarPos[149] = <<617.5839, 6538.9854, 27.6398>> TrafficCarQuatX[149] = 0.0007 TrafficCarQuatY[149] = -0.0028 TrafficCarQuatZ[149] = 0.6262 TrafficCarQuatW[149] = 0.7797 TrafficCarRecording[149] = 150 TrafficCarStartime[149] = 67584.0000 TrafficCarModel[149] = emperor TrafficCarPos[150] = <<595.9203, 6531.1943, 27.9013>> TrafficCarQuatX[150] = 0.0016 TrafficCarQuatY[150] = 0.0049 TrafficCarQuatZ[150] = 0.7801 TrafficCarQuatW[150] = -0.6256 TrafficCarRecording[150] = 151 TrafficCarStartime[150] = 68112.0000 TrafficCarModel[150] = journey TrafficCarPos[151] = <<573.7428, 6536.1211, 27.4576>> TrafficCarQuatX[151] = 0.0012 TrafficCarQuatY[151] = 0.0059 TrafficCarQuatZ[151] = 0.7853 TrafficCarQuatW[151] = -0.6191 TrafficCarRecording[151] = 152 TrafficCarStartime[151] = 68442.0000 TrafficCarModel[151] = journey TrafficCarPos[152] = <<569.4676, 6549.8774, 27.7749>> TrafficCarQuatX[152] = -0.0003 TrafficCarQuatY[152] = -0.0058 TrafficCarQuatZ[152] = 0.6257 TrafficCarQuatW[152] = 0.7800 TrafficCarRecording[152] = 153 TrafficCarStartime[152] = 68706.0000 TrafficCarModel[152] = minivan TrafficCarPos[153] = <<553.1826, 6540.7139, 27.5681>> TrafficCarQuatX[153] = 0.0006 TrafficCarQuatY[153] = 0.0064 TrafficCarQuatZ[153] = 0.7703 TrafficCarQuatW[153] = -0.6376 TrafficCarRecording[153] = 154 TrafficCarStartime[153] = 69366.0000 TrafficCarModel[153] = journey // TrafficCarPos[154] = <<552.5774, 6547.6406, 27.4334>> // TrafficCarQuatX[154] = -0.0025 // TrafficCarQuatY[154] = -0.0043 // TrafficCarQuatZ[154] = 0.6047 // TrafficCarQuatW[154] = 0.7964 // TrafficCarRecording[154] = 155 // TrafficCarStartime[154] = 69564.0000 // TrafficCarModel[154] = SURFER // TrafficCarPos[155] = <<501.2111, 6551.8574, 27.2862>> // TrafficCarQuatX[155] = 0.0010 // TrafficCarQuatY[155] = 0.0058 // TrafficCarQuatZ[155] = 0.7784 // TrafficCarQuatW[155] = -0.6278 // TrafficCarRecording[155] = 156 // TrafficCarStartime[155] = 70158.0000 // TrafficCarModel[155] = Packer TrafficCarPos[156] = <<490.8492, 6565.3628, 26.8575>> TrafficCarQuatX[156] = -0.0004 TrafficCarQuatY[156] = -0.0041 TrafficCarQuatZ[156] = 0.6584 TrafficCarQuatW[156] = 0.7526 TrafficCarRecording[156] = 157 TrafficCarStartime[156] = 70488.0000 TrafficCarModel[156] = minivan TrafficCarPos[157] = <<504.1685, 6557.9175, 26.9448>> TrafficCarQuatX[157] = -0.0045 TrafficCarQuatY[157] = -0.0036 TrafficCarQuatZ[157] = 0.6266 TrafficCarQuatW[157] = 0.7793 TrafficCarRecording[157] = 158 TrafficCarStartime[157] = 70686.0000 TrafficCarModel[157] = journey TrafficCarPos[158] = <<468.7714, 6557.2080, 26.8139>> TrafficCarQuatX[158] = 0.0029 TrafficCarQuatY[158] = 0.0027 TrafficCarQuatZ[158] = 0.7754 TrafficCarQuatW[158] = -0.6314 TrafficCarRecording[158] = 159 TrafficCarStartime[158] = 71016.0000 TrafficCarModel[158] = minivan TrafficCarPos[159] = <<443.9303, 6561.5098, 26.5272>> TrafficCarQuatX[159] = 0.0017 TrafficCarQuatY[159] = -0.0019 TrafficCarQuatZ[159] = 0.7477 TrafficCarQuatW[159] = -0.6641 TrafficCarRecording[159] = 160 TrafficCarStartime[159] = 71544.0000 TrafficCarModel[159] = journey TrafficCarPos[160] = <<410.8601, 6564.7383, 27.1720>> TrafficCarQuatX[160] = 0.0061 TrafficCarQuatY[160] = -0.0049 TrafficCarQuatZ[160] = 0.7329 TrafficCarQuatW[160] = -0.6803 TrafficCarRecording[160] = 161 TrafficCarStartime[160] = 72336.0000 TrafficCarModel[160] = journey TrafficCarPos[161] = <<405.5365, 6576.0762, 27.3538>> TrafficCarQuatX[161] = 0.0096 TrafficCarQuatY[161] = 0.0013 TrafficCarQuatZ[161] = 0.6791 TrafficCarQuatW[161] = 0.7339 TrafficCarRecording[161] = 162 TrafficCarStartime[161] = 72468.0000 TrafficCarModel[161] = minivan // TrafficCarPos[162] = <<397.8140, 6565.3525, 27.6450>> // TrafficCarQuatX[162] = 0.0085 // TrafficCarQuatY[162] = -0.0095 // TrafficCarQuatZ[162] = 0.7374 // TrafficCarQuatW[162] = -0.6753 // TrafficCarRecording[162] = 163 // TrafficCarStartime[162] = 72600.0000 // TrafficCarModel[162] = Packer TrafficCarPos[163] = <<395.5341, 6577.0586, 27.2913>> TrafficCarQuatX[163] = 0.0078 TrafficCarQuatY[163] = 0.0014 TrafficCarQuatZ[163] = 0.6561 TrafficCarQuatW[163] = 0.7546 TrafficCarRecording[163] = 164 TrafficCarStartime[163] = 72798.0000 TrafficCarModel[163] = SURFER TrafficCarPos[164] = <<348.5958, 6567.6582, 28.2457>> TrafficCarQuatX[164] = -0.0079 TrafficCarQuatY[164] = 0.0079 TrafficCarQuatZ[164] = -0.6893 TrafficCarQuatW[164] = 0.7244 TrafficCarRecording[164] = 165 TrafficCarStartime[164] = 73788.0000 TrafficCarModel[164] = minivan TrafficCarPos[165] = <<341.6452, 6578.4043, 28.4158>> TrafficCarQuatX[165] = 0.0112 TrafficCarQuatY[165] = 0.0051 TrafficCarQuatZ[165] = 0.7104 TrafficCarQuatW[165] = 0.7037 TrafficCarRecording[165] = 166 TrafficCarStartime[165] = 73986.0000 TrafficCarModel[165] = journey // TrafficCarPos[166] = <<341.9621, 6566.7886, 28.6901>> // TrafficCarQuatX[166] = 0.0102 // TrafficCarQuatY[166] = -0.0102 // TrafficCarQuatZ[166] = 0.7127 // TrafficCarQuatW[166] = -0.7013 // TrafficCarRecording[166] = 167 // TrafficCarStartime[166] = 74514.0000 // TrafficCarModel[166] = Packer // TrafficCarPos[167] = <<311.6325, 6578.1865, 29.2086>> // TrafficCarQuatX[167] = 0.0125 // TrafficCarQuatY[167] = 0.0062 // TrafficCarQuatZ[167] = 0.6970 // TrafficCarQuatW[167] = 0.7169 // TrafficCarRecording[167] = 168 // TrafficCarStartime[167] = 74646.0000 // TrafficCarModel[167] = minivan ParkedCarPos[8] = <<301.0602, 6596.7490, 29.7845>> ParkedCarQuatX[8] = -0.0241 ParkedCarQuatY[8] = 0.0122 ParkedCarQuatZ[8] = -0.1432 ParkedCarQuatW[8] = 0.9893 ParkedCarModel[8] = SURFER // TrafficCarPos[168] = <<311.7135, 6577.5947, 29.0619>> // TrafficCarQuatX[168] = 0.0120 // TrafficCarQuatY[168] = 0.0065 // TrafficCarQuatZ[168] = 0.7500 // TrafficCarQuatW[168] = 0.6614 // TrafficCarRecording[168] = 169 // TrafficCarStartime[168] = 75108.0000 // TrafficCarModel[168] = SURFER TrafficCarPos[169] = <<289.2193, 6565.6675, 29.8009>> TrafficCarQuatX[169] = -0.0105 TrafficCarQuatY[169] = 0.0097 TrafficCarQuatZ[169] = -0.6653 TrafficCarQuatW[169] = 0.7465 TrafficCarRecording[169] = 170 TrafficCarStartime[169] = 75570.0000 TrafficCarModel[169] = minivan TrafficCarPos[170] = <<280.0489, 6564.2744, 30.5158>> TrafficCarQuatX[170] = -0.0102 TrafficCarQuatY[170] = 0.0098 TrafficCarQuatZ[170] = -0.6946 TrafficCarQuatW[170] = 0.7193 TrafficCarRecording[170] = 171 TrafficCarStartime[170] = 75768.0000 TrafficCarModel[170] = Mule TrafficCarPos[171] = <<223.4678, 6553.7607, 31.5455>> TrafficCarQuatX[171] = -0.0027 TrafficCarQuatY[171] = 0.0055 TrafficCarQuatZ[171] = -0.6048 TrafficCarQuatW[171] = 0.7963 TrafficCarRecording[171] = 172 TrafficCarStartime[171] = 76626.0000 TrafficCarModel[171] = journey // TrafficCarPos[172] = <<220.9848, 6566.5981, 31.6423>> // TrafficCarQuatX[172] = 0.0081 // TrafficCarQuatY[172] = 0.0032 // TrafficCarQuatZ[172] = 0.7852 // TrafficCarQuatW[172] = 0.6192 // TrafficCarRecording[172] = 173 // TrafficCarStartime[172] = 76692.0000 // TrafficCarModel[172] = minivan TrafficCarPos[173] = <<204.3794, 6547.8735, 31.7291>> TrafficCarQuatX[173] = -0.0001 TrafficCarQuatY[173] = 0.0024 TrafficCarQuatZ[173] = -0.5380 TrafficCarQuatW[173] = 0.8430 TrafficCarRecording[173] = 174 TrafficCarStartime[173] = 77220.0000 TrafficCarModel[173] = minivan TrafficCarPos[174] = <<191.1950, 6542.2598, 31.7253>> TrafficCarQuatX[174] = 0.0012 TrafficCarQuatY[174] = -0.0008 TrafficCarQuatZ[174] = -0.5002 TrafficCarQuatW[174] = 0.8659 TrafficCarRecording[174] = 175 TrafficCarStartime[174] = 77880.0000 TrafficCarModel[174] = minivan // TrafficCarPos[175] = <<163.6469, 6542.5317, 31.6838>> // TrafficCarQuatX[175] = 0.0014 // TrafficCarQuatY[175] = -0.0066 // TrafficCarQuatZ[175] = 0.8820 // TrafficCarQuatW[175] = 0.4713 // TrafficCarRecording[175] = 176 // TrafficCarStartime[175] = 78078.0000 // TrafficCarModel[175] = minivan ParkedCarPos[9] = <<150.8109, 6597.5127, 30.8449>> ParkedCarQuatX[9] = -0.0000 ParkedCarQuatY[9] = 0.0000 ParkedCarQuatZ[9] = -0.0089 ParkedCarQuatW[9] = 1.0000 ParkedCarModel[9] = Mule ParkedCarPos[10] = <<146.6424, 6579.6548, 30.8164>> ParkedCarQuatX[10] = -0.0000 ParkedCarQuatY[10] = 0.0000 ParkedCarQuatZ[10] = -0.6845 ParkedCarQuatW[10] = 0.7290 ParkedCarModel[10] = Mule TrafficCarPos[176] = <<136.9821, 6540.7783, 31.3868>> TrafficCarQuatX[176] = -0.0180 TrafficCarQuatY[176] = -0.0020 TrafficCarQuatZ[176] = 0.9253 TrafficCarQuatW[176] = -0.3787 TrafficCarRecording[176] = 177 TrafficCarStartime[176] = 78672.0000 TrafficCarModel[176] = minivan TrafficCarPos[177] = <<88.7146, 6597.5522, 31.3270>> TrafficCarQuatX[177] = -0.0033 TrafficCarQuatY[177] = 0.0080 TrafficCarQuatZ[177] = 0.3907 TrafficCarQuatW[177] = 0.9205 TrafficCarRecording[177] = 178 TrafficCarStartime[177] = 79794.0000 TrafficCarModel[177] = minivan TrafficCarPos[178] = <<62.4602, 6447.9053, 31.1752>> TrafficCarQuatX[178] = 0.0041 TrafficCarQuatY[178] = -0.0017 TrafficCarQuatZ[178] = 0.9220 TrafficCarQuatW[178] = 0.3872 TrafficCarRecording[178] = 179 TrafficCarStartime[178] = 81906.0000 TrafficCarModel[178] = minivan ParkedCarPos[11] = <<40.8196, 6439.5845, 30.3269>> ParkedCarQuatX[11] = 0.0000 ParkedCarQuatY[11] = 0.0000 ParkedCarQuatZ[11] = 0.9229 ParkedCarQuatW[11] = 0.3850 ParkedCarModel[11] = Mule TrafficCarPos[179] = <<95.0551, 6464.8789, 31.4468>> TrafficCarQuatX[179] = 0.0059 TrafficCarQuatY[179] = -0.0024 TrafficCarQuatZ[179] = -0.3842 TrafficCarQuatW[179] = 0.9232 TrafficCarRecording[179] = 180 TrafficCarStartime[179] = 82104.0000 TrafficCarModel[179] = Mule TrafficCarPos[180] = <<35.1529, 6421.5063, 31.1415>> TrafficCarQuatX[180] = 0.0036 TrafficCarQuatY[180] = -0.0021 TrafficCarQuatZ[180] = 0.9210 TrafficCarQuatW[180] = 0.3895 TrafficCarRecording[180] = 181 TrafficCarStartime[180] = 82302.0000 TrafficCarModel[180] = journey TrafficCarPos[181] = <<54.4397, 6424.6313, 30.9632>> TrafficCarQuatX[181] = -0.0006 TrafficCarQuatY[181] = -0.0000 TrafficCarQuatZ[181] = -0.3767 TrafficCarQuatW[181] = 0.9263 TrafficCarRecording[181] = 182 TrafficCarStartime[181] = 82434.0000 TrafficCarModel[181] = SURFER TrafficCarPos[182] = <<44.9629, 6415.1523, 31.1338>> TrafficCarQuatX[182] = -0.0006 TrafficCarQuatY[182] = -0.0000 TrafficCarQuatZ[182] = -0.4186 TrafficCarQuatW[182] = 0.9082 TrafficCarRecording[182] = 183 TrafficCarStartime[182] = 82566.0000 TrafficCarModel[182] = minivan // TrafficCarPos[183] = <<45.2923, 6431.6035, 31.6324>> // TrafficCarQuatX[183] = 0.0042 // TrafficCarQuatY[183] = -0.0013 // TrafficCarQuatZ[183] = 0.9173 // TrafficCarQuatW[183] = 0.3981 // TrafficCarRecording[183] = 184 // TrafficCarStartime[183] = 82632.0000 // TrafficCarModel[183] = Mule TrafficCarPos[184] = <<24.5200, 6394.3013, 31.1302>> TrafficCarQuatX[184] = -0.0004 TrafficCarQuatY[184] = 0.0000 TrafficCarQuatZ[184] = -0.4210 TrafficCarQuatW[184] = 0.9071 TrafficCarRecording[184] = 185 TrafficCarStartime[184] = 82962.0000 TrafficCarModel[184] = minivan // TrafficCarPos[185] = <<10.2365, 6396.2900, 31.4119>> // TrafficCarQuatX[185] = -0.0013 // TrafficCarQuatY[185] = -0.0031 // TrafficCarQuatZ[185] = 0.9279 // TrafficCarQuatW[185] = 0.3729 // TrafficCarRecording[185] = 186 // TrafficCarStartime[185] = 83094.0000 // TrafficCarModel[185] = Mule TrafficCarPos[186] = <<47.3566, 6417.5459, 31.4162>> TrafficCarQuatX[186] = -0.0047 TrafficCarQuatY[186] = 0.0019 TrafficCarQuatZ[186] = -0.3832 TrafficCarQuatW[186] = 0.9237 TrafficCarRecording[186] = 187 TrafficCarStartime[186] = 83424.0000 TrafficCarModel[186] = Mule TrafficCarPos[187] = <<9.9551, 6396.0161, 31.1338>> TrafficCarQuatX[187] = 0.0002 TrafficCarQuatY[187] = -0.0006 TrafficCarQuatZ[187] = 0.9382 TrafficCarQuatW[187] = 0.3461 TrafficCarRecording[187] = 188 TrafficCarStartime[187] = 83622.0000 TrafficCarModel[187] = minivan TrafficCarPos[188] = <<13.5893, 6399.6494, 31.5825>> TrafficCarQuatX[188] = 0.0002 TrafficCarQuatY[188] = 0.0004 TrafficCarQuatZ[188] = 0.9260 TrafficCarQuatW[188] = 0.3776 TrafficCarRecording[188] = 189 TrafficCarStartime[188] = 83886.0000 TrafficCarModel[188] = Mule // TrafficCarPos[189] = <<-21.2510, 6364.5601, 31.0957>> // TrafficCarQuatX[189] = -0.0001 // TrafficCarQuatY[189] = -0.0007 // TrafficCarQuatZ[189] = 0.9272 // TrafficCarQuatW[189] = 0.3745 // TrafficCarRecording[189] = 190 // TrafficCarStartime[189] = 84150.0000 // TrafficCarModel[189] = journey TrafficCarPos[190] = <<-2.7613, 6366.9287, 31.1338>> TrafficCarQuatX[190] = -0.0006 TrafficCarQuatY[190] = -0.0000 TrafficCarQuatZ[190] = -0.4186 TrafficCarQuatW[190] = 0.9082 TrafficCarRecording[190] = 191 TrafficCarStartime[190] = 84216.0000 TrafficCarModel[190] = minivan // TrafficCarPos[191] = <<-33.7674, 6352.7920, 31.1266>> // TrafficCarQuatX[191] = -0.0004 // TrafficCarQuatY[191] = -0.0007 // TrafficCarQuatZ[191] = 0.9040 // TrafficCarQuatW[191] = 0.4275 // TrafficCarRecording[191] = 192 // TrafficCarStartime[191] = 84942.0000 // TrafficCarModel[191] = minivan TrafficCarPos[192] = <<-4.7622, 6364.7031, 31.5749>> TrafficCarQuatX[192] = -0.0012 TrafficCarQuatY[192] = 0.0005 TrafficCarQuatZ[192] = -0.3836 TrafficCarQuatW[192] = 0.9235 TrafficCarRecording[192] = 193 TrafficCarStartime[192] = 85206.0000 TrafficCarModel[192] = Mule // TrafficCarPos[193] = <<-51.5284, 6333.8555, 31.1273>> // TrafficCarQuatX[193] = -0.0002 // TrafficCarQuatY[193] = -0.0007 // TrafficCarQuatZ[193] = 0.9352 // TrafficCarQuatW[193] = 0.3542 // TrafficCarRecording[193] = 194 // TrafficCarStartime[193] = 85602.0000 // TrafficCarModel[193] = minivan TrafficCarPos[194] = <<-46.7229, 6323.0806, 30.9614>> TrafficCarQuatX[194] = -0.0005 TrafficCarQuatY[194] = 0.0002 TrafficCarQuatZ[194] = -0.3384 TrafficCarQuatW[194] = 0.9410 TrafficCarRecording[194] = 195 TrafficCarStartime[194] = 86064.0000 TrafficCarModel[194] = SURFER // TrafficCarPos[195] = <<-61.5199, 6323.9727, 31.5788>> // TrafficCarQuatX[195] = -0.0016 // TrafficCarQuatY[195] = -0.0034 // TrafficCarQuatZ[195] = 0.9254 // TrafficCarQuatW[195] = 0.3791 // TrafficCarRecording[195] = 196 // TrafficCarStartime[195] = 86790.0000 // TrafficCarModel[195] = Mule TrafficCarPos[196] = <<-57.0975, 6312.9463, 31.1302>> TrafficCarQuatX[196] = -0.0010 TrafficCarQuatY[196] = 0.0002 TrafficCarQuatZ[196] = -0.3729 TrafficCarQuatW[196] = 0.9279 TrafficCarRecording[196] = 197 TrafficCarStartime[196] = 86922.0000 TrafficCarModel[196] = minivan TrafficCarPos[197] = <<-118.5549, 6259.6343, 30.9714>> TrafficCarQuatX[197] = 0.0034 TrafficCarQuatY[197] = -0.0035 TrafficCarQuatZ[197] = -0.3943 TrafficCarQuatW[197] = 0.9190 TrafficCarRecording[197] = 198 TrafficCarStartime[197] = 87450.0000 TrafficCarModel[197] = minivan ParkedCarPos[12] = <<-139.0886, 6276.7036, 31.0148>> ParkedCarQuatX[12] = -0.0000 ParkedCarQuatY[12] = 0.0000 ParkedCarQuatZ[12] = 0.4019 ParkedCarQuatW[12] = 0.9157 ParkedCarModel[12] = minivan ParkedCarPos[13] = <<-104.6942, 6263.7051, 30.2543>> ParkedCarQuatX[13] = -0.0000 ParkedCarQuatY[13] = 0.0000 ParkedCarQuatZ[13] = -0.3802 ParkedCarQuatW[13] = 0.9249 ParkedCarModel[13] = Mule TrafficCarPos[198] = <<-129.7646, 6239.8472, 30.9729>> TrafficCarQuatX[198] = -0.0003 TrafficCarQuatY[198] = 0.0004 TrafficCarQuatZ[198] = -0.3557 TrafficCarQuatW[198] = 0.9346 TrafficCarRecording[198] = 199 TrafficCarStartime[198] = 87978.0000 TrafficCarModel[198] = minivan ParkedCarPos[14] = <<-131.4290, 6282.8022, 31.0148>> ParkedCarQuatX[14] = 0.0000 ParkedCarQuatY[14] = 0.0000 ParkedCarQuatZ[14] = 0.9305 ParkedCarQuatW[14] = -0.3662 ParkedCarModel[14] = minivan TrafficCarPos[199] = <<-143.0423, 6242.1479, 30.9584>> TrafficCarQuatX[199] = 0.0007 TrafficCarQuatY[199] = 0.0017 TrafficCarQuatZ[199] = 0.9282 TrafficCarQuatW[199] = 0.3721 TrafficCarRecording[199] = 200 TrafficCarStartime[199] = 88110.0000 TrafficCarModel[199] = journey ParkedCarPos[15] = <<-142.2711, 6252.6636, 31.2133>> ParkedCarQuatX[15] = 0.0000 ParkedCarQuatY[15] = 0.0000 ParkedCarQuatZ[15] = 0.7589 ParkedCarQuatW[15] = -0.6512 ParkedCarModel[15] = minivan TrafficCarPos[200] = <<-149.4187, 6219.9175, 31.4495>> TrafficCarQuatX[200] = -0.0013 TrafficCarQuatY[200] = 0.0007 TrafficCarQuatZ[200] = -0.3658 TrafficCarQuatW[200] = 0.9307 TrafficCarRecording[200] = 201 TrafficCarStartime[200] = 88638.0000 TrafficCarModel[200] = Mule TrafficCarPos[201] = <<-159.8186, 6226.0146, 31.0039>> TrafficCarQuatX[201] = 0.0001 TrafficCarQuatY[201] = -0.0003 TrafficCarQuatZ[201] = 0.9112 TrafficCarQuatW[201] = 0.4121 TrafficCarRecording[201] = 202 TrafficCarStartime[201] = 88704.0000 TrafficCarModel[201] = minivan TrafficCarPos[202] = <<-156.5760, 6212.6206, 31.2925>> TrafficCarQuatX[202] = -0.0032 TrafficCarQuatY[202] = 0.0011 TrafficCarQuatZ[202] = -0.3874 TrafficCarQuatW[202] = 0.9219 TrafficCarRecording[202] = 203 TrafficCarStartime[202] = 89232.0000 TrafficCarModel[202] = Mule TrafficCarPos[203] = <<-177.8305, 6207.8335, 30.8371>> TrafficCarQuatX[203] = -0.0005 TrafficCarQuatY[203] = -0.0003 TrafficCarQuatZ[203] = 0.9093 TrafficCarQuatW[203] = 0.4161 TrafficCarRecording[203] = 204 TrafficCarStartime[203] = 89298.0000 TrafficCarModel[203] = SURFER ParkedCarPos[16] = <<-197.4503, 6228.7759, 30.9489>> ParkedCarQuatX[16] = -0.0000 ParkedCarQuatY[16] = 0.0000 ParkedCarQuatZ[16] = 0.4072 ParkedCarQuatW[16] = 0.9133 ParkedCarModel[16] = minivan TrafficCarPos[204] = <<-200.7223, 6184.8062, 31.0163>> TrafficCarQuatX[204] = 0.0039 TrafficCarQuatY[204] = -0.0021 TrafficCarQuatZ[204] = 0.9257 TrafficCarQuatW[204] = 0.3782 TrafficCarRecording[204] = 205 TrafficCarStartime[204] = 90024.0000 TrafficCarModel[204] = journey ParkedCarPos[17] = <<-238.7583, 6196.2285, 31.1881>> ParkedCarQuatX[17] = -0.0000 ParkedCarQuatY[17] = 0.0000 ParkedCarQuatZ[17] = -0.3988 ParkedCarQuatW[17] = 0.9170 ParkedCarModel[17] = minivan // TrafficCarPos[205] = <<-192.7801, 6176.6592, 31.0585>> // TrafficCarQuatX[205] = -0.0019 // TrafficCarQuatY[205] = -0.0038 // TrafficCarQuatZ[205] = -0.3478 // TrafficCarQuatW[205] = 0.9375 // TrafficCarRecording[205] = 206 // TrafficCarStartime[205] = 90750.0000 // TrafficCarModel[205] = minivan TrafficCarPos[206] = <<-200.2096, 6169.2295, 31.5074>> TrafficCarQuatX[206] = -0.0012 TrafficCarQuatY[206] = -0.0042 TrafficCarQuatZ[206] = -0.3741 TrafficCarQuatW[206] = 0.9274 TrafficCarRecording[206] = 207 TrafficCarStartime[206] = 91080.0000 TrafficCarModel[206] = Mule TrafficCarPos[207] = <<-219.4954, 6166.0654, 31.0585>> TrafficCarQuatX[207] = 0.0039 TrafficCarQuatY[207] = -0.0023 TrafficCarQuatZ[207] = 0.9082 TrafficCarQuatW[207] = 0.4186 TrafficCarRecording[207] = 208 TrafficCarStartime[207] = 91278.0000 TrafficCarModel[207] = minivan TrafficCarPos[208] = <<-242.7871, 6133.8745, 31.0087>> TrafficCarQuatX[208] = -0.0016 TrafficCarQuatY[208] = -0.0034 TrafficCarQuatZ[208] = -0.3642 TrafficCarQuatW[208] = 0.9313 TrafficCarRecording[208] = 209 TrafficCarStartime[208] = 91542.0000 TrafficCarModel[208] = minivan ParkedCarPos[18] = <<-227.0850, 6120.9082, 31.4034>> ParkedCarQuatX[18] = 0.0000 ParkedCarQuatY[18] = 0.0000 ParkedCarQuatZ[18] = 0.9135 ParkedCarQuatW[18] = 0.4068 ParkedCarModel[18] = minivan TrafficCarPos[209] = <<-273.2502, 6094.9175, 31.3158>> TrafficCarQuatX[209] = -0.0014 TrafficCarQuatY[209] = -0.0017 TrafficCarQuatZ[209] = -0.3911 TrafficCarQuatW[209] = 0.9203 TrafficCarRecording[209] = 210 TrafficCarStartime[209] = 92664.0000 TrafficCarModel[209] = Mule // TrafficCarPos[210] = <<-281.2550, 6102.5186, 31.0241>> // TrafficCarQuatX[210] = 0.0035 // TrafficCarQuatY[210] = -0.0031 // TrafficCarQuatZ[210] = 0.9364 // TrafficCarQuatW[210] = 0.3509 // TrafficCarRecording[210] = 211 // TrafficCarStartime[210] = 92664.0000 // TrafficCarModel[210] = minivan ParkedCarPos[19] = <<-268.2806, 6066.7236, 31.4731>> ParkedCarQuatX[19] = -0.0000 ParkedCarQuatY[19] = 0.0000 ParkedCarQuatZ[19] = -0.5672 ParkedCarQuatW[19] = 0.8236 ParkedCarModel[19] = minivan TrafficCarPos[211] = <<-320.4204, 6065.1772, 31.4226>> TrafficCarQuatX[211] = 0.0022 TrafficCarQuatY[211] = -0.0010 TrafficCarQuatZ[211] = 0.9238 TrafficCarQuatW[211] = 0.3829 TrafficCarRecording[211] = 212 TrafficCarStartime[211] = 93918.0000 TrafficCarModel[211] = Mule ParkedCarPos[20] = <<-343.3658, 6076.2744, 31.2703>> ParkedCarQuatX[20] = 0.0000 ParkedCarQuatY[20] = 0.0000 ParkedCarQuatZ[20] = 0.9055 ParkedCarQuatW[20] = -0.4243 ParkedCarModel[20] = minivan TrafficCarPos[212] = <<-342.7433, 6026.7881, 30.9903>> TrafficCarQuatX[212] = -0.0027 TrafficCarQuatY[212] = -0.0012 TrafficCarQuatZ[212] = -0.3927 TrafficCarQuatW[212] = 0.9197 TrafficCarRecording[212] = 213 TrafficCarStartime[212] = 94908.0000 TrafficCarModel[212] = minivan TrafficCarPos[213] = <<-345.5276, 6024.0957, 30.8184>> TrafficCarQuatX[213] = -0.0024 TrafficCarQuatY[213] = 0.0009 TrafficCarQuatZ[213] = -0.3320 TrafficCarQuatW[213] = 0.9433 TrafficCarRecording[213] = 214 TrafficCarStartime[213] = 95238.0000 TrafficCarModel[213] = SURFER TrafficCarPos[214] = <<-366.1345, 6019.9106, 31.0597>> TrafficCarQuatX[214] = 0.0047 TrafficCarQuatY[214] = 0.0006 TrafficCarQuatZ[214] = 0.9468 TrafficCarQuatW[214] = 0.3219 TrafficCarRecording[214] = 215 TrafficCarStartime[214] = 95436.0000 TrafficCarModel[214] = journey TrafficCarPos[215] = <<-386.3470, 5988.0854, 31.3453>> TrafficCarQuatX[215] = -0.0057 TrafficCarQuatY[215] = -0.0060 TrafficCarQuatZ[215] = -0.3475 TrafficCarQuatW[215] = 0.9376 TrafficCarRecording[215] = 216 TrafficCarStartime[215] = 96228.0000 TrafficCarModel[215] = minivan TrafficCarPos[216] = <<-397.9482, 6021.1909, 31.1729>> TrafficCarQuatX[216] = -0.0166 TrafficCarQuatY[216] = -0.0055 TrafficCarQuatZ[216] = 0.9252 TrafficCarQuatW[216] = -0.3791 TrafficCarRecording[216] = 217 TrafficCarStartime[216] = 96426.0000 TrafficCarModel[216] = minivan TrafficCarPos[217] = <<-396.4938, 5985.0698, 31.6773>> TrafficCarQuatX[217] = 0.0010 TrafficCarQuatY[217] = 0.0024 TrafficCarQuatZ[217] = 0.9301 TrafficCarQuatW[217] = 0.3674 TrafficCarRecording[217] = 218 TrafficCarStartime[217] = 96492.0000 TrafficCarModel[217] = Mule TrafficCarPos[218] = <<-385.9991, 5979.5903, 31.8351>> TrafficCarQuatX[218] = -0.0034 TrafficCarQuatY[218] = 0.0014 TrafficCarQuatZ[218] = -0.3756 TrafficCarQuatW[218] = 0.9268 TrafficCarRecording[218] = 219 TrafficCarStartime[218] = 96558.0000 TrafficCarModel[218] = Mule TrafficCarPos[219] = <<-425.9279, 5933.4028, 32.0897>> TrafficCarQuatX[219] = -0.0076 TrafficCarQuatY[219] = 0.0026 TrafficCarQuatZ[219] = -0.2957 TrafficCarQuatW[219] = 0.9553 TrafficCarRecording[219] = 220 TrafficCarStartime[219] = 97812.0000 TrafficCarModel[219] = minivan // TrafficCarPos[220] = <<-440.7476, 5932.4507, 32.1078>> // TrafficCarQuatX[220] = -0.0058 // TrafficCarQuatY[220] = 0.0100 // TrafficCarQuatZ[220] = 0.9463 // TrafficCarQuatW[220] = 0.3230 // TrafficCarRecording[220] = 221 // TrafficCarStartime[220] = 98076.0000 // TrafficCarModel[220] = journey TrafficCarPos[221] = <<-450.5932, 5901.5835, 32.5169>> TrafficCarQuatX[221] = -0.0070 TrafficCarQuatY[221] = 0.0019 TrafficCarQuatZ[221] = -0.2731 TrafficCarQuatW[221] = 0.9620 TrafficCarRecording[221] = 222 TrafficCarStartime[221] = 98736.0000 TrafficCarModel[221] = SURFER // TrafficCarPos[222] = <<-468.5921, 5896.4658, 32.9075>> // TrafficCarQuatX[222] = 0.0021 // TrafficCarQuatY[222] = 0.0068 // TrafficCarQuatZ[222] = 0.9483 // TrafficCarQuatW[222] = 0.3173 // TrafficCarRecording[222] = 223 // TrafficCarStartime[222] = 99066.0000 // TrafficCarModel[222] = minivan // TrafficCarPos[223] = <<-463.1865, 5903.2178, 33.0637>> // TrafficCarQuatX[223] = 0.0014 // TrafficCarQuatY[223] = 0.0042 // TrafficCarQuatZ[223] = 0.9487 // TrafficCarQuatW[223] = 0.3161 // TrafficCarRecording[223] = 224 // TrafficCarStartime[223] = 99264.0000 // TrafficCarModel[223] = Mule TrafficCarPos[224] = <<-451.5227, 5899.9282, 33.1721>> TrafficCarQuatX[224] = -0.0071 TrafficCarQuatY[224] = 0.0025 TrafficCarQuatZ[224] = -0.3279 TrafficCarQuatW[224] = 0.9447 TrafficCarRecording[224] = 225 TrafficCarStartime[224] = 99264.0000 TrafficCarModel[224] = Mule // TrafficCarPos[225] = <<-494.0117, 5858.7041, 33.5587>> // TrafficCarQuatX[225] = 0.0022 // TrafficCarQuatY[225] = 0.0078 // TrafficCarQuatZ[225] = 0.9588 // TrafficCarQuatW[225] = 0.2840 // TrafficCarRecording[225] = 226 // TrafficCarStartime[225] = 100122.0000 // TrafficCarModel[225] = journey // TrafficCarPos[226] = <<-492.1231, 5861.6958, 32.9334>> // TrafficCarQuatX[226] = -0.0199 // TrafficCarQuatY[226] = -0.0957 // TrafficCarQuatZ[226] = 0.9547 // TrafficCarQuatW[226] = 0.2812 // TrafficCarRecording[226] = 227 // TrafficCarStartime[226] = 100320.0000 // TrafficCarModel[226] = minivan TrafficCarPos[227] = <<-494.7882, 5834.9268, 33.9774>> TrafficCarQuatX[227] = -0.0086 TrafficCarQuatY[227] = 0.0026 TrafficCarQuatZ[227] = -0.2869 TrafficCarQuatW[227] = 0.9579 TrafficCarRecording[227] = 228 TrafficCarStartime[227] = 100584.0000 TrafficCarModel[227] = minivan TrafficCarPos[228] = <<-512.1516, 5804.1235, 34.6696>> TrafficCarQuatX[228] = -0.0113 TrafficCarQuatY[228] = -0.0016 TrafficCarQuatZ[228] = -0.2395 TrafficCarQuatW[228] = 0.9708 TrafficCarRecording[228] = 229 TrafficCarStartime[228] = 101310.0000 TrafficCarModel[228] = journey // TrafficCarPos[229] = <<-533.5082, 5786.8188, 35.2332>> // TrafficCarQuatX[229] = 0.0049 // TrafficCarQuatY[229] = 0.0109 // TrafficCarQuatZ[229] = 0.9775 // TrafficCarQuatW[229] = 0.2106 // TrafficCarRecording[229] = 230 // TrafficCarStartime[229] = 101970.0000 // TrafficCarModel[229] = minivan TrafficCarPos[230] = <<-522.2422, 5783.0591, 35.6767>> TrafficCarQuatX[230] = -0.0124 TrafficCarQuatY[230] = -0.0021 TrafficCarQuatZ[230] = -0.1982 TrafficCarQuatW[230] = 0.9801 TrafficCarRecording[230] = 231 TrafficCarStartime[230] = 102366.0000 TrafficCarModel[230] = Mule TrafficCarPos[231] = <<-544.5030, 5760.5815, 35.6938>> TrafficCarQuatX[231] = 0.0025 TrafficCarQuatY[231] = 0.0112 TrafficCarQuatZ[231] = 0.9733 TrafficCarQuatW[231] = 0.2292 TrafficCarRecording[231] = 232 TrafficCarStartime[231] = 102630.0000 TrafficCarModel[231] = SURFER TrafficCarPos[232] = <<-540.8187, 5768.0986, 35.9515>> TrafficCarQuatX[232] = 0.0016 TrafficCarQuatY[232] = 0.0081 TrafficCarQuatZ[232] = 0.9812 TrafficCarQuatW[232] = 0.1929 TrafficCarRecording[232] = 233 TrafficCarStartime[232] = 102828.0000 TrafficCarModel[232] = Mule TrafficCarPos[233] = <<-540.1239, 5740.1914, 36.2707>> TrafficCarQuatX[233] = -0.0113 TrafficCarQuatY[233] = 0.0020 TrafficCarQuatZ[233] = -0.1930 TrafficCarQuatW[233] = 0.9811 TrafficCarRecording[233] = 234 TrafficCarStartime[233] = 104346.0000 TrafficCarModel[233] = minivan TrafficCarPos[234] = <<-567.8047, 5677.1108, 37.7006>> TrafficCarQuatX[234] = -0.0100 TrafficCarQuatY[234] = -0.0015 TrafficCarQuatZ[234] = -0.2147 TrafficCarQuatW[234] = 0.9766 TrafficCarRecording[234] = 235 TrafficCarStartime[234] = 104676.0000 TrafficCarModel[234] = journey TrafficCarPos[235] = <<-578.9499, 5679.6934, 38.2365>> TrafficCarQuatX[235] = 0.0060 TrafficCarQuatY[235] = 0.0086 TrafficCarQuatZ[235] = 0.9778 TrafficCarQuatW[235] = 0.2094 TrafficCarRecording[235] = 236 TrafficCarStartime[235] = 104676.0000 TrafficCarModel[235] = Mule TrafficCarPos[236] = <<-582.9236, 5643.6528, 38.4277>> TrafficCarQuatX[236] = -0.0074 TrafficCarQuatY[236] = -0.0028 TrafficCarQuatZ[236] = -0.2457 TrafficCarQuatW[236] = 0.9693 TrafficCarRecording[236] = 237 TrafficCarStartime[236] = 105534.0000 TrafficCarModel[236] = minivan TrafficCarPos[237] = <<-603.3911, 5611.9170, 38.8401>> TrafficCarQuatX[237] = -0.0034 TrafficCarQuatY[237] = -0.0034 TrafficCarQuatZ[237] = -0.3058 TrafficCarQuatW[237] = 0.9521 TrafficCarRecording[237] = 238 TrafficCarStartime[237] = 106458.0000 TrafficCarModel[237] = minivan TrafficCarPos[238] = <<-617.3054, 5612.0728, 39.1315>> TrafficCarQuatX[238] = 0.0027 TrafficCarQuatY[238] = 0.0034 TrafficCarQuatZ[238] = 0.9518 TrafficCarQuatW[238] = 0.3068 TrafficCarRecording[238] = 239 TrafficCarStartime[238] = 106524.0000 TrafficCarModel[238] = Mule TrafficCarPos[239] = <<-631.8846, 5579.8950, 38.7442>> TrafficCarQuatX[239] = 0.0031 TrafficCarQuatY[239] = -0.0014 TrafficCarQuatZ[239] = -0.4165 TrafficCarQuatW[239] = 0.9091 TrafficCarRecording[239] = 240 TrafficCarStartime[239] = 107382.0000 TrafficCarModel[239] = journey TrafficCarPos[240] = <<-652.1945, 5563.6494, 38.9956>> TrafficCarQuatX[240] = 0.0059 TrafficCarQuatY[240] = -0.0028 TrafficCarQuatZ[240] = -0.4297 TrafficCarQuatW[240] = 0.9029 TrafficCarRecording[240] = 241 TrafficCarStartime[240] = 107910.0000 TrafficCarModel[240] = Mule // TrafficCarPos[241] = <<-675.7839, 5560.0620, 38.2339>> // TrafficCarQuatX[241] = -0.0041 // TrafficCarQuatY[241] = -0.0078 // TrafficCarQuatZ[241] = 0.8853 // TrafficCarQuatW[241] = 0.4650 // TrafficCarRecording[241] = 242 // TrafficCarStartime[241] = 108306.0000 // TrafficCarModel[241] = minivan TrafficCarPos[242] = <<-681.4705, 5543.0757, 37.9190>> TrafficCarQuatX[242] = 0.0095 TrafficCarQuatY[242] = -0.0100 TrafficCarQuatZ[242] = -0.4741 TrafficCarQuatW[242] = 0.8803 TrafficCarRecording[242] = 243 TrafficCarStartime[242] = 108702.0000 TrafficCarModel[242] = journey TrafficCarPos[243] = <<-698.1723, 5532.0845, 37.6632>> TrafficCarQuatX[243] = 0.0090 TrafficCarQuatY[243] = -0.0100 TrafficCarQuatZ[243] = -0.4885 TrafficCarQuatW[243] = 0.8724 TrafficCarRecording[243] = 244 TrafficCarStartime[243] = 109164.0000 TrafficCarModel[243] = Mule TrafficCarPos[244] = <<-723.4635, 5515.5347, 36.1629>> TrafficCarQuatX[244] = 0.0138 TrafficCarQuatY[244] = -0.0127 TrafficCarQuatZ[244] = -0.4765 TrafficCarQuatW[244] = 0.8790 TrafficCarRecording[244] = 245 TrafficCarStartime[244] = 111276.0000 TrafficCarModel[244] = SURFER TrafficCarPos[245] = <<-771.7394, 5485.4854, 34.3527>> TrafficCarQuatX[245] = 0.0092 TrafficCarQuatY[245] = -0.0046 TrafficCarQuatZ[245] = -0.4793 TrafficCarQuatW[245] = 0.8776 TrafficCarRecording[245] = 246 TrafficCarStartime[245] = 111408.0000 TrafficCarModel[245] = journey TrafficCarPos[246] = <<-780.1580, 5479.9624, 34.1691>> TrafficCarQuatX[246] = 0.0085 TrafficCarQuatY[246] = -0.0063 TrafficCarQuatZ[246] = -0.4854 TrafficCarQuatW[246] = 0.8742 TrafficCarRecording[246] = 247 TrafficCarStartime[246] = 111606.0000 TrafficCarModel[246] = minivan TrafficCarPos[247] = <<-751.5074, 5512.3467, 35.3637>> TrafficCarQuatX[247] = -0.0086 TrafficCarQuatY[247] = -0.0153 TrafficCarQuatZ[247] = 0.8750 TrafficCarQuatW[247] = 0.4838 TrafficCarRecording[247] = 248 TrafficCarStartime[247] = 111870.0000 TrafficCarModel[247] = minivan TrafficCarPos[248] = <<-782.3395, 5478.5220, 34.5592>> TrafficCarQuatX[248] = 0.0088 TrafficCarQuatY[248] = -0.0068 TrafficCarQuatZ[248] = -0.4877 TrafficCarQuatW[248] = 0.8729 TrafficCarRecording[248] = 249 TrafficCarStartime[248] = 111936.0000 TrafficCarModel[248] = Mule TrafficCarPos[249] = <<-797.4579, 5469.0874, 33.8033>> TrafficCarQuatX[249] = 0.0048 TrafficCarQuatY[249] = -0.0049 TrafficCarQuatZ[249] = -0.4470 TrafficCarQuatW[249] = 0.8945 TrafficCarRecording[249] = 250 TrafficCarStartime[249] = 112134.0000 TrafficCarModel[249] = minivan TrafficCarPos[250] = <<-802.7859, 5465.8076, 33.6970>> TrafficCarQuatX[250] = 0.0022 TrafficCarQuatY[250] = -0.0034 TrafficCarQuatZ[250] = -0.4630 TrafficCarQuatW[250] = 0.8864 TrafficCarRecording[250] = 251 TrafficCarStartime[250] = 112530.0000 TrafficCarModel[250] = journey // TrafficCarPos[251] = <<-838.0173, 5458.9814, 33.7862>> // TrafficCarQuatX[251] = 0.0082 // TrafficCarQuatY[251] = 0.0014 // TrafficCarQuatZ[251] = 0.8736 // TrafficCarQuatW[251] = 0.4865 // TrafficCarRecording[251] = 252 // TrafficCarStartime[251] = 112860.0000 // TrafficCarModel[251] = minivan // TrafficCarPos[252] = <<-833.3596, 5462.4761, 34.0031>> // TrafficCarQuatX[252] = 0.0028 // TrafficCarQuatY[252] = 0.0006 // TrafficCarQuatZ[252] = 0.8788 // TrafficCarQuatW[252] = 0.4771 // TrafficCarRecording[252] = 253 // TrafficCarStartime[252] = 113190.0000 // TrafficCarModel[252] = Mule TrafficCarPos[253] = <<-859.1169, 5432.9985, 34.5357>> TrafficCarQuatX[253] = -0.0169 TrafficCarQuatY[253] = 0.0056 TrafficCarQuatZ[253] = -0.5386 TrafficCarQuatW[253] = 0.8424 TrafficCarRecording[253] = 254 TrafficCarStartime[253] = 113652.0000 TrafficCarModel[253] = minivan // TrafficCarPos[254] = <<-857.1628, 5447.7319, 33.8215>> // TrafficCarQuatX[254] = 0.0118 // TrafficCarQuatY[254] = 0.0106 // TrafficCarQuatZ[254] = 0.8537 // TrafficCarQuatW[254] = 0.5206 // TrafficCarRecording[254] = 255 // TrafficCarStartime[254] = 113718.0000 // TrafficCarModel[254] = emperor ParkedCarPos[21] = <<-860.6396, 5415.5566, 34.4756>> ParkedCarQuatX[21] = 0.0733 ParkedCarQuatY[21] = 0.0470 ParkedCarQuatZ[21] = 0.7841 ParkedCarQuatW[21] = -0.6145 ParkedCarModel[21] = emperor TrafficCarPos[255] = <<-886.9130, 5421.8223, 35.2647>> TrafficCarQuatX[255] = -0.0193 TrafficCarQuatY[255] = 0.0078 TrafficCarQuatZ[255] = -0.5541 TrafficCarQuatW[255] = 0.8322 TrafficCarRecording[255] = 256 TrafficCarStartime[255] = 114312.0000 TrafficCarModel[255] = emperor TrafficCarPos[256] = <<-902.9290, 5422.2612, 36.2460>> TrafficCarQuatX[256] = -0.0162 TrafficCarQuatY[256] = 0.0127 TrafficCarQuatZ[256] = -0.6064 TrafficCarQuatW[256] = 0.7949 TrafficCarRecording[256] = 257 TrafficCarStartime[256] = 114708.0000 TrafficCarModel[256] = journey TrafficCarPos[257] = <<-915.9521, 5418.4751, 36.7077>> TrafficCarQuatX[257] = -0.0183 TrafficCarQuatY[257] = 0.0146 TrafficCarQuatZ[257] = -0.6257 TrafficCarQuatW[257] = 0.7797 TrafficCarRecording[257] = 258 TrafficCarStartime[257] = 114972.0000 TrafficCarModel[257] = SURFER TrafficCarPos[258] = <<-928.0029, 5414.9702, 37.9183>> TrafficCarQuatX[258] = -0.0186 TrafficCarQuatY[258] = 0.0139 TrafficCarQuatZ[258] = -0.6015 TrafficCarQuatW[258] = 0.7985 TrafficCarRecording[258] = 259 TrafficCarStartime[258] = 115236.0000 TrafficCarModel[258] = Mule TrafficCarPos[259] = <<-933.9056, 5421.6489, 37.2376>> TrafficCarQuatX[259] = 0.0170 TrafficCarQuatY[259] = 0.0160 TrafficCarQuatZ[259] = 0.7839 TrafficCarQuatW[259] = 0.6205 TrafficCarRecording[259] = 260 TrafficCarStartime[259] = 115236.0000 TrafficCarModel[259] = emperor // TrafficCarPos[260] = <<-985.4686, 5400.2017, 40.2372>> // TrafficCarQuatX[260] = 0.0153 // TrafficCarQuatY[260] = 0.0172 // TrafficCarQuatZ[260] = 0.8716 // TrafficCarQuatW[260] = 0.4897 // TrafficCarRecording[260] = 261 // TrafficCarStartime[260] = 116490.0000 // TrafficCarModel[260] = minivan TrafficCarPos[261] = <<-1004.6003, 5376.7871, 41.1807>> TrafficCarQuatX[261] = -0.0222 TrafficCarQuatY[261] = 0.0058 TrafficCarQuatZ[261] = -0.4104 TrafficCarQuatW[261] = 0.9116 TrafficCarRecording[261] = 262 TrafficCarStartime[261] = 117150.0000 TrafficCarModel[261] = emperor // TrafficCarPos[262] = <<-1026.2605, 5369.4600, 42.4221>> // TrafficCarQuatX[262] = 0.0116 // TrafficCarQuatY[262] = 0.0169 // TrafficCarQuatZ[262] = 0.9287 // TrafficCarQuatW[262] = 0.3703 // TrafficCarRecording[262] = 263 // TrafficCarStartime[262] = 117612.0000 // TrafficCarModel[262] = journey TrafficCarPos[263] = <<-1064.3765, 5337.0894, 44.8801>> TrafficCarQuatX[263] = 0.0202 TrafficCarQuatY[263] = 0.0325 TrafficCarQuatZ[263] = 0.8517 TrafficCarQuatW[263] = 0.5226 TrafficCarRecording[263] = 264 TrafficCarStartime[263] = 118800.0000 TrafficCarModel[263] = emperor TrafficCarPos[264] = <<-1033.5538, 5346.6406, 43.3626>> TrafficCarQuatX[264] = -0.0208 TrafficCarQuatY[264] = 0.0066 TrafficCarQuatZ[264] = -0.3975 TrafficCarQuatW[264] = 0.9173 TrafficCarRecording[264] = 265 TrafficCarStartime[264] = 119394.0000 TrafficCarModel[264] = minivan TrafficCarPos[265] = <<-1098.0574, 5324.0342, 47.8281>> TrafficCarQuatX[265] = 0.0294 TrafficCarQuatY[265] = 0.0288 TrafficCarQuatZ[265] = 0.8094 TrafficCarQuatW[265] = 0.5858 TrafficCarRecording[265] = 266 TrafficCarStartime[265] = 119592.0000 TrafficCarModel[265] = emperor // TrafficCarPos[266] = <<-1113.1876, 5305.8076, 50.4049>> // TrafficCarQuatX[266] = -0.0359 // TrafficCarQuatY[266] = 0.0175 // TrafficCarQuatZ[266] = -0.5069 // TrafficCarQuatW[266] = 0.8611 // TrafficCarRecording[266] = 267 // TrafficCarStartime[266] = 120120.0000 // TrafficCarModel[266] = Mule // TrafficCarPos[267] = <<-1133.8778, 5303.2563, 51.0682>> // TrafficCarQuatX[267] = 0.0152 // TrafficCarQuatY[267] = 0.0316 // TrafficCarQuatZ[267] = 0.8913 // TrafficCarQuatW[267] = 0.4520 // TrafficCarRecording[267] = 268 // TrafficCarStartime[267] = 120582.0000 // TrafficCarModel[267] = SURFER TrafficCarPos[268] = <<-1146.1438, 5276.4282, 53.3106>> TrafficCarQuatX[268] = -0.0174 TrafficCarQuatY[268] = 0.0065 TrafficCarQuatZ[268] = -0.3905 TrafficCarQuatW[268] = 0.9204 TrafficCarRecording[268] = 269 TrafficCarStartime[268] = 121176.0000 TrafficCarModel[268] = Mule TrafficCarPos[269] = <<-1167.2081, 5261.1929, 53.1992>> TrafficCarQuatX[269] = 0.0181 TrafficCarQuatY[269] = -0.0049 TrafficCarQuatZ[269] = -0.4946 TrafficCarQuatW[269] = 0.8689 TrafficCarRecording[269] = 270 TrafficCarStartime[269] = 121770.0000 TrafficCarModel[269] = minivan TrafficCarPos[270] = <<-1181.1008, 5255.3423, 52.4125>> TrafficCarQuatX[270] = 0.0222 TrafficCarQuatY[270] = -0.0182 TrafficCarQuatZ[270] = -0.5681 TrafficCarQuatW[270] = 0.8225 TrafficCarRecording[270] = 271 TrafficCarStartime[270] = 122166.0000 TrafficCarModel[270] = journey // TrafficCarPos[271] = <<-1189.4590, 5260.8638, 51.5821>> // TrafficCarQuatX[271] = -0.0215 // TrafficCarQuatY[271] = -0.0235 // TrafficCarQuatZ[271] = 0.7644 // TrafficCarQuatW[271] = 0.6440 // TrafficCarRecording[271] = 272 // TrafficCarStartime[271] = 122232.0000 // TrafficCarModel[271] = emperor // TrafficCarPos[272] = <<-1180.9889, 5262.6802, 53.0019>> // TrafficCarQuatX[272] = -0.0253 // TrafficCarQuatY[272] = -0.0201 // TrafficCarQuatZ[272] = 0.8120 // TrafficCarQuatW[272] = 0.5828 // TrafficCarRecording[272] = 273 // TrafficCarStartime[272] = 122364.0000 // TrafficCarModel[272] = Mule TrafficCarPos[273] = <<-1194.3643, 5265.0225, 51.7508>> TrafficCarQuatX[273] = -0.0139 TrafficCarQuatY[273] = -0.0305 TrafficCarQuatZ[273] = 0.7712 TrafficCarQuatW[273] = 0.6357 TrafficCarRecording[273] = 274 TrafficCarStartime[273] = 122628.0000 TrafficCarModel[273] = minivan TrafficCarPos[274] = <<-1231.9467, 5253.2534, 49.5905>> TrafficCarQuatX[274] = -0.0040 TrafficCarQuatY[274] = 0.0105 TrafficCarQuatZ[274] = 0.7549 TrafficCarQuatW[274] = -0.6557 TrafficCarRecording[274] = 275 TrafficCarStartime[274] = 123222.0000 TrafficCarModel[274] = emperor TrafficCarPos[275] = <<-1240.9534, 5255.0864, 49.8296>> TrafficCarQuatX[275] = 0.0025 TrafficCarQuatY[275] = 0.0004 TrafficCarQuatZ[275] = 0.7601 TrafficCarQuatW[275] = -0.6498 TrafficCarRecording[275] = 276 TrafficCarStartime[275] = 123486.0000 TrafficCarModel[275] = journey TrafficCarPos[276] = <<-1243.1129, 5255.4033, 49.8544>> TrafficCarQuatX[276] = -0.0025 TrafficCarQuatY[276] = 0.0006 TrafficCarQuatZ[276] = 0.7863 TrafficCarQuatW[276] = -0.6178 TrafficCarRecording[276] = 277 TrafficCarStartime[276] = 124014.0000 TrafficCarModel[276] = minivan // TrafficCarPos[277] = <<-1297.2975, 5227.6362, 54.4575>> // TrafficCarQuatX[277] = -0.0542 // TrafficCarQuatY[277] = 0.0066 // TrafficCarQuatZ[277] = -0.1993 // TrafficCarQuatW[277] = 0.9784 // TrafficCarRecording[277] = 278 // TrafficCarStartime[277] = 124938.0000 // TrafficCarModel[277] = journey // TrafficCarPos[278] = <<-1309.1455, 5214.5718, 55.7857>> // TrafficCarQuatX[278] = -0.0035 // TrafficCarQuatY[278] = 0.0500 // TrafficCarQuatZ[278] = 0.9921 // TrafficCarQuatW[278] = 0.1149 // TrafficCarRecording[278] = 279 // TrafficCarStartime[278] = 125334.0000 // TrafficCarModel[278] = emperor // TrafficCarPos[279] = <<-1307.0697, 5223.1758, 55.2818>> // TrafficCarQuatX[279] = 0.0056 // TrafficCarQuatY[279] = 0.0488 // TrafficCarQuatZ[279] = 0.9784 // TrafficCarQuatW[279] = 0.2010 // TrafficCarRecording[279] = 280 // TrafficCarStartime[279] = 125532.0000 // TrafficCarModel[279] = minivan // TrafficCarPos[280] = <<-1378.4095, 5100.0117, 60.9502>> // TrafficCarQuatX[280] = -0.0027 // TrafficCarQuatY[280] = -0.0020 // TrafficCarQuatZ[280] = 0.8906 // TrafficCarQuatW[280] = 0.4548 // TrafficCarRecording[280] = 281 // TrafficCarStartime[280] = 128964.0000 // TrafficCarModel[280] = journey TrafficCarPos[281] = <<-1395.8094, 5080.6880, 61.3721>> TrafficCarQuatX[281] = -0.0031 TrafficCarQuatY[281] = -0.0056 TrafficCarQuatZ[281] = -0.4942 TrafficCarQuatW[281] = 0.8693 TrafficCarRecording[281] = 282 TrafficCarStartime[281] = 129228.0000 TrafficCarModel[281] = Mule TrafficCarPos[282] = <<-1344.0863, 5116.7720, 60.9809>> TrafficCarQuatX[282] = 0.0056 TrafficCarQuatY[282] = -0.0028 TrafficCarQuatZ[282] = -0.4235 TrafficCarQuatW[282] = 0.9059 TrafficCarRecording[282] = 283 TrafficCarStartime[282] = 129426.0000 TrafficCarModel[282] = emperor TrafficCarPos[283] = <<-1410.3035, 5072.4902, 60.5543>> TrafficCarQuatX[283] = -0.0072 TrafficCarQuatY[283] = -0.0075 TrafficCarQuatZ[283] = -0.4753 TrafficCarQuatW[283] = 0.8798 TrafficCarRecording[283] = 284 TrafficCarStartime[283] = 131208.0000 TrafficCarModel[283] = emperor // TrafficCarPos[284] = <<-1456.3480, 5039.3125, 62.0023>> // TrafficCarQuatX[284] = -0.0119 // TrafficCarQuatY[284] = 0.0006 // TrafficCarQuatZ[284] = -0.4251 // TrafficCarQuatW[284] = 0.9050 // TrafficCarRecording[284] = 285 // TrafficCarStartime[284] = 131604.0000 // TrafficCarModel[284] = Mule TrafficCarPos[285] = <<-1465.6652, 5046.7910, 61.7431>> TrafficCarQuatX[285] = 0.0046 TrafficCarQuatY[285] = 0.0100 TrafficCarQuatZ[285] = 0.8994 TrafficCarQuatW[285] = 0.4369 TrafficCarRecording[285] = 286 TrafficCarStartime[285] = 131934.0000 TrafficCarModel[285] = minivan // TrafficCarPos[286] = <<-1505.3987, 4991.6504, 62.1293>> // TrafficCarQuatX[286] = 0.0030 // TrafficCarQuatY[286] = -0.0057 // TrafficCarQuatZ[286] = -0.3628 // TrafficCarQuatW[286] = 0.9319 // TrafficCarRecording[286] = 287 // TrafficCarStartime[286] = 132924.0000 // TrafficCarModel[286] = emperor TrafficCarPos[287] = <<-1526.0546, 4986.1719, 62.3233>> TrafficCarQuatX[287] = 0.0010 TrafficCarQuatY[287] = -0.0075 TrafficCarQuatZ[287] = 0.9346 TrafficCarQuatW[287] = 0.3556 TrafficCarRecording[287] = 288 TrafficCarStartime[287] = 133320.0000 TrafficCarModel[287] = journey // TrafficCarPos[288] = <<-1522.6311, 4973.4961, 62.0929>> // TrafficCarQuatX[288] = 0.0056 // TrafficCarQuatY[288] = -0.0066 // TrafficCarQuatZ[288] = -0.3607 // TrafficCarQuatW[288] = 0.9326 // TrafficCarRecording[288] = 289 // TrafficCarStartime[288] = 133452.0000 // TrafficCarModel[288] = emperor TrafficCarPos[289] = <<-1522.0673, 4982.6128, 61.9106>> TrafficCarQuatX[289] = 0.0017 TrafficCarQuatY[289] = -0.0088 TrafficCarQuatZ[289] = 0.9479 TrafficCarQuatW[289] = 0.3184 TrafficCarRecording[289] = 290 TrafficCarStartime[289] = 133716.0000 TrafficCarModel[289] = emperor // TrafficCarPos[290] = <<-1523.0508, 4973.2485, 62.6510>> // TrafficCarQuatX[290] = 0.0057 // TrafficCarQuatY[290] = -0.0070 // TrafficCarQuatZ[290] = -0.3752 // TrafficCarQuatW[290] = 0.9269 // TrafficCarRecording[290] = 291 // TrafficCarStartime[290] = 133848.0000 // TrafficCarModel[290] = Mule // TrafficCarPos[291] = <<-1552.1281, 4940.7471, 61.3977>> // TrafficCarQuatX[291] = 0.0020 // TrafficCarQuatY[291] = -0.0083 // TrafficCarQuatZ[291] = -0.3482 // TrafficCarQuatW[291] = 0.9374 // TrafficCarRecording[291] = 292 // TrafficCarStartime[291] = 134640.0000 // TrafficCarModel[291] = emperor ParkedCarPos[22] = <<-1545.1647, 4929.5005, 61.3231>> ParkedCarQuatX[22] = -0.0000 ParkedCarQuatY[22] = 0.0255 ParkedCarQuatZ[22] = -0.4983 ParkedCarQuatW[22] = 0.8666 ParkedCarModel[22] = minivan ParkedCarPos[23] = <<-1533.8358, 4941.9458, 61.2712>> ParkedCarQuatX[23] = 0.0113 ParkedCarQuatY[23] = -0.0309 ParkedCarQuatZ[23] = 0.9258 ParkedCarQuatW[23] = -0.3765 ParkedCarModel[23] = emperor // TrafficCarPos[292] = <<-1576.2004, 4923.4380, 60.8458>> // TrafficCarQuatX[292] = 0.0026 // TrafficCarQuatY[292] = -0.0045 // TrafficCarQuatZ[292] = 0.9049 // TrafficCarQuatW[292] = 0.4255 // TrafficCarRecording[292] = 293 // TrafficCarStartime[292] = 135234.0000 // TrafficCarModel[292] = emperor // TrafficCarPos[293] = <<-1584.5472, 4914.5571, 61.1758>> // TrafficCarQuatX[293] = 0.0027 // TrafficCarQuatY[293] = -0.0050 // TrafficCarQuatZ[293] = 0.9102 // TrafficCarQuatW[293] = 0.4142 // TrafficCarRecording[293] = 294 // TrafficCarStartime[293] = 135564.0000 // TrafficCarModel[293] = minivan TrafficCarPos[294] = <<-1586.3225, 4902.9268, 61.0933>> TrafficCarQuatX[294] = -0.0001 TrafficCarQuatY[294] = -0.0062 TrafficCarQuatZ[294] = -0.2908 TrafficCarQuatW[294] = 0.9568 TrafficCarRecording[294] = 295 TrafficCarStartime[294] = 135762.0000 TrafficCarModel[294] = journey // TrafficCarPos[295] = <<-1582.8475, 4924.0020, 61.1598>> // TrafficCarQuatX[295] = 0.0032 // TrafficCarQuatY[295] = -0.0048 // TrafficCarQuatZ[295] = 0.9398 // TrafficCarQuatW[295] = 0.3416 // TrafficCarRecording[295] = 296 // TrafficCarStartime[295] = 135828.0000 // TrafficCarModel[295] = emperor TrafficCarPos[296] = <<-1594.7332, 4892.0879, 60.9430>> TrafficCarQuatX[296] = 0.0014 TrafficCarQuatY[296] = -0.0052 TrafficCarQuatZ[296] = -0.3516 TrafficCarQuatW[296] = 0.9361 TrafficCarRecording[296] = 297 TrafficCarStartime[296] = 136158.0000 TrafficCarModel[296] = emperor // TrafficCarPos[297] = <<-1596.9127, 4907.2891, 60.9464>> // TrafficCarQuatX[297] = 0.0028 // TrafficCarQuatY[297] = -0.0044 // TrafficCarQuatZ[297] = 0.9364 // TrafficCarQuatW[297] = 0.3509 // TrafficCarRecording[297] = 298 // TrafficCarStartime[297] = 136422.0000 // TrafficCarModel[297] = SURFER TrafficCarPos[298] = <<-1623.1863, 4865.9243, 60.3676>> TrafficCarQuatX[298] = 0.0022 TrafficCarQuatY[298] = -0.0013 TrafficCarQuatZ[298] = -0.3832 TrafficCarQuatW[298] = 0.9236 TrafficCarRecording[298] = 299 TrafficCarStartime[298] = 137082.0000 TrafficCarModel[298] = emperor TrafficCarPos[299] = <<-1624.2852, 4863.7334, 60.7330>> TrafficCarQuatX[299] = 0.0023 TrafficCarQuatY[299] = -0.0010 TrafficCarQuatZ[299] = -0.4036 TrafficCarQuatW[299] = 0.9149 TrafficCarRecording[299] = 300 TrafficCarStartime[299] = 137412.0000 TrafficCarModel[299] = journey // TrafficCarPos[300] = <<-1654.8507, 4851.4946, 60.6231>> // TrafficCarQuatX[300] = 0.0006 // TrafficCarQuatY[300] = -0.0030 // TrafficCarQuatZ[300] = 0.9218 // TrafficCarQuatW[300] = 0.3875 // TrafficCarRecording[300] = 301 // TrafficCarStartime[300] = 137808.0000 // TrafficCarModel[300] = minivan TrafficCarPos[301] = <<-1657.7526, 4832.5718, 60.5535>> TrafficCarQuatX[301] = 0.0013 TrafficCarQuatY[301] = -0.0017 TrafficCarQuatZ[301] = -0.4077 TrafficCarQuatW[301] = 0.9131 TrafficCarRecording[301] = 302 TrafficCarStartime[301] = 138336.0000 TrafficCarModel[301] = minivan // TrafficCarPos[302] = <<-1653.9990, 4853.1523, 60.5032>> // TrafficCarQuatX[302] = -0.0003 // TrafficCarQuatY[302] = -0.0027 // TrafficCarQuatZ[302] = 0.9110 // TrafficCarQuatW[302] = 0.4124 // TrafficCarRecording[302] = 303 // TrafficCarStartime[302] = 139260.0000 // TrafficCarModel[302] = emperor // TrafficCarPos[303] = <<-1709.2064, 4806.2900, 59.3238>> // TrafficCarQuatX[303] = -0.0066 // TrafficCarQuatY[303] = -0.0229 // TrafficCarQuatZ[303] = 0.8920 // TrafficCarQuatW[303] = 0.4514 // TrafficCarRecording[303] = 304 // TrafficCarStartime[303] = 139722.0000 // TrafficCarModel[303] = emperor TrafficCarPos[304] = <<-1673.6324, 4818.7017, 60.5406>> TrafficCarQuatX[304] = 0.0021 TrafficCarQuatY[304] = -0.0057 TrafficCarQuatZ[304] = -0.4375 TrafficCarQuatW[304] = 0.8992 TrafficCarRecording[304] = 305 TrafficCarStartime[304] = 139986.0000 TrafficCarModel[304] = minivan TrafficCarPos[305] = <<-1719.6976, 4782.9854, 57.8986>> TrafficCarQuatX[305] = 0.0181 TrafficCarQuatY[305] = -0.0128 TrafficCarQuatZ[305] = -0.4471 TrafficCarQuatW[305] = 0.8942 TrafficCarRecording[305] = 306 TrafficCarStartime[305] = 140184.0000 TrafficCarModel[305] = emperor TrafficCarPos[306] = <<-1729.2485, 4775.8354, 57.8030>> TrafficCarQuatX[306] = 0.0131 TrafficCarQuatY[306] = -0.0119 TrafficCarQuatZ[306] = -0.4648 TrafficCarQuatW[306] = 0.8853 TrafficCarRecording[306] = 307 TrafficCarStartime[306] = 140778.0000 TrafficCarModel[306] = minivan // TrafficCarPos[307] = <<-1761.1912, 4763.4185, 56.9793>> // TrafficCarQuatX[307] = 0.0005 // TrafficCarQuatY[307] = -0.0087 // TrafficCarQuatZ[307] = 0.9178 // TrafficCarQuatW[307] = 0.3969 // TrafficCarRecording[307] = 308 // TrafficCarStartime[307] = 141042.0000 // TrafficCarModel[307] = journey TrafficCarPos[308] = <<-1761.8721, 4747.9673, 56.8266>> TrafficCarQuatX[308] = -0.0002 TrafficCarQuatY[308] = -0.0081 TrafficCarQuatZ[308] = -0.4103 TrafficCarQuatW[308] = 0.9119 TrafficCarRecording[308] = 309 TrafficCarStartime[308] = 141306.0000 TrafficCarModel[308] = emperor TrafficCarPos[309] = <<-1771.1117, 4740.0356, 56.8407>> TrafficCarQuatX[309] = -0.0029 TrafficCarQuatY[309] = -0.0035 TrafficCarQuatZ[309] = -0.4186 TrafficCarQuatW[309] = 0.9081 TrafficCarRecording[309] = 310 TrafficCarStartime[309] = 141570.0000 TrafficCarModel[309] = minivan TrafficCarPos[310] = <<-1771.1819, 4739.9648, 56.7243>> TrafficCarQuatX[310] = -0.0029 TrafficCarQuatY[310] = -0.0037 TrafficCarQuatZ[310] = -0.4187 TrafficCarQuatW[310] = 0.9081 TrafficCarRecording[310] = 311 TrafficCarStartime[310] = 141834.0000 TrafficCarModel[310] = emperor // TrafficCarPos[311] = <<-1789.5768, 4735.5669, 56.4492>> // TrafficCarQuatX[311] = 0.0040 // TrafficCarQuatY[311] = -0.0013 // TrafficCarQuatZ[311] = 0.9312 // TrafficCarQuatW[311] = 0.3644 // TrafficCarRecording[311] = 312 // TrafficCarStartime[311] = 141966.0000 // TrafficCarModel[311] = emperor // TrafficCarPos[312] = <<-1802.6720, 4708.2441, 56.8245>> // TrafficCarQuatX[312] = -0.0020 // TrafficCarQuatY[312] = -0.0039 // TrafficCarQuatZ[312] = -0.3900 // TrafficCarQuatW[312] = 0.9208 // TrafficCarRecording[312] = 313 // TrafficCarStartime[312] = 142626.0000 // TrafficCarModel[312] = journey TrafficCarPos[313] = <<-1815.7078, 4695.4819, 56.7461>> TrafficCarQuatX[313] = -0.0019 TrafficCarQuatY[313] = -0.0041 TrafficCarQuatZ[313] = -0.3735 TrafficCarQuatW[313] = 0.9276 TrafficCarRecording[313] = 314 TrafficCarStartime[313] = 142956.0000 TrafficCarModel[313] = emperor // TrafficCarPos[314] = <<-1823.1193, 4702.2739, 56.8611>> // TrafficCarQuatX[314] = 0.0040 // TrafficCarQuatY[314] = -0.0017 // TrafficCarQuatZ[314] = 0.9306 // TrafficCarQuatW[314] = 0.3661 // TrafficCarRecording[314] = 315 // TrafficCarStartime[314] = 143022.0000 // TrafficCarModel[314] = minivan // TrafficCarPos[315] = <<-1824.1984, 4686.8857, 56.4565>> // TrafficCarQuatX[315] = -0.0016 // TrafficCarQuatY[315] = -0.0040 // TrafficCarQuatZ[315] = -0.3850 // TrafficCarQuatW[315] = 0.9229 // TrafficCarRecording[315] = 316 // TrafficCarStartime[315] = 143220.0000 // TrafficCarModel[315] = emperor // TrafficCarPos[316] = <<-1844.0956, 4665.9521, 56.7460>> // TrafficCarQuatX[316] = -0.0019 // TrafficCarQuatY[316] = -0.0038 // TrafficCarQuatZ[316] = -0.4051 // TrafficCarQuatW[316] = 0.9143 // TrafficCarRecording[316] = 317 // TrafficCarStartime[316] = 143880.0000 // TrafficCarModel[316] = emperor // TrafficCarPos[317] = <<-1856.3444, 4668.7070, 56.8597>> // TrafficCarQuatX[317] = 0.0039 // TrafficCarQuatY[317] = -0.0015 // TrafficCarQuatZ[317] = 0.9290 // TrafficCarQuatW[317] = 0.3701 // TrafficCarRecording[317] = 318 // TrafficCarStartime[317] = 144078.0000 // TrafficCarModel[317] = minivan TrafficCarPos[318] = <<-1862.8253, 4649.1343, 56.8577>> TrafficCarQuatX[318] = -0.0019 TrafficCarQuatY[318] = -0.0041 TrafficCarQuatZ[318] = -0.3536 TrafficCarQuatW[318] = 0.9354 TrafficCarRecording[318] = 319 TrafficCarStartime[318] = 144540.0000 TrafficCarModel[318] = minivan TrafficCarPos[319] = <<-1864.9409, 4646.2070, 56.5935>> TrafficCarQuatX[319] = -0.0015 TrafficCarQuatY[319] = -0.0043 TrafficCarQuatZ[319] = -0.3406 TrafficCarQuatW[319] = 0.9402 TrafficCarRecording[319] = 320 TrafficCarStartime[319] = 144738.0000 TrafficCarModel[319] = minivan // TrafficCarPos[320] = <<-1884.5511, 4641.9819, 56.7505>> // TrafficCarQuatX[320] = 0.0039 // TrafficCarQuatY[320] = -0.0016 // TrafficCarQuatZ[320] = 0.9200 // TrafficCarQuatW[320] = 0.3919 // TrafficCarRecording[320] = 321 // TrafficCarStartime[320] = 145266.0000 // TrafficCarModel[320] = emperor // TrafficCarPos[321] = <<-1892.1720, 4618.9746, 56.8667>> // TrafficCarQuatX[321] = -0.0023 // TrafficCarQuatY[321] = -0.0038 // TrafficCarQuatZ[321] = -0.4186 // TrafficCarQuatW[321] = 0.9082 // TrafficCarRecording[321] = 322 // TrafficCarStartime[321] = 145530.0000 // TrafficCarModel[321] = minivan // TrafficCarPos[322] = <<-1899.8138, 4611.4746, 56.5926>> // TrafficCarQuatX[322] = -0.0025 // TrafficCarQuatY[322] = -0.0037 // TrafficCarQuatZ[322] = -0.3437 // TrafficCarQuatW[322] = 0.9391 // TrafficCarRecording[322] = 323 // TrafficCarStartime[322] = 145794.0000 // TrafficCarModel[322] = minivan TrafficCarPos[323] = <<-1909.1554, 4602.0088, 56.8270>> TrafficCarQuatX[323] = -0.0017 TrafficCarQuatY[323] = -0.0009 TrafficCarQuatZ[323] = -0.3819 TrafficCarQuatW[323] = 0.9242 TrafficCarRecording[323] = 324 TrafficCarStartime[323] = 146190.0000 TrafficCarModel[323] = journey // TrafficCarPos[324] = <<-1927.3397, 4598.3667, 56.7548>> // TrafficCarQuatX[324] = 0.0034 // TrafficCarQuatY[324] = -0.0024 // TrafficCarQuatZ[324] = 0.9210 // TrafficCarQuatW[324] = 0.3896 // TrafficCarRecording[324] = 325 // TrafficCarStartime[324] = 146520.0000 // TrafficCarModel[324] = emperor // TrafficCarPos[325] = <<-1922.5496, 4589.5356, 56.8579>> // TrafficCarQuatX[325] = -0.0018 // TrafficCarQuatY[325] = -0.0040 // TrafficCarQuatZ[325] = -0.3583 // TrafficCarQuatW[325] = 0.9336 // TrafficCarRecording[325] = 326 // TrafficCarStartime[325] = 146916.0000 // TrafficCarModel[325] = minivan // TrafficCarPos[326] = <<-1950.9838, 4561.3110, 56.7415>> // TrafficCarQuatX[326] = -0.0016 // TrafficCarQuatY[326] = -0.0040 // TrafficCarQuatZ[326] = -0.3763 // TrafficCarQuatW[326] = 0.9265 // TrafficCarRecording[326] = 327 // TrafficCarStartime[326] = 147774.0000 // TrafficCarModel[326] = emperor // TrafficCarPos[327] = <<-1971.0903, 4554.0884, 56.7414>> // TrafficCarQuatX[327] = 0.0040 // TrafficCarQuatY[327] = -0.0015 // TrafficCarQuatZ[327] = 0.9250 // TrafficCarQuatW[327] = 0.3800 // TrafficCarRecording[327] = 328 // TrafficCarStartime[327] = 148368.0000 // TrafficCarModel[327] = emperor // TrafficCarPos[328] = <<-1967.7822, 4543.7969, 56.8219>> // TrafficCarQuatX[328] = -0.0020 // TrafficCarQuatY[328] = -0.0036 // TrafficCarQuatZ[328] = -0.3683 // TrafficCarQuatW[328] = 0.9297 // TrafficCarRecording[328] = 329 // TrafficCarStartime[328] = 148500.0000 // TrafficCarModel[328] = journey TrafficCarPos[329] = <<-1984.5195, 4527.2192, 56.8599>> TrafficCarQuatX[329] = -0.0017 TrafficCarQuatY[329] = -0.0037 TrafficCarQuatZ[329] = -0.3489 TrafficCarQuatW[329] = 0.9372 TrafficCarRecording[329] = 330 TrafficCarStartime[329] = 149226.0000 TrafficCarModel[329] = minivan // TrafficCarPos[330] = <<-1987.1052, 4524.0400, 56.5935>> // TrafficCarQuatX[330] = -0.0016 // TrafficCarQuatY[330] = -0.0043 // TrafficCarQuatZ[330] = -0.3461 // TrafficCarQuatW[330] = 0.9382 // TrafficCarRecording[330] = 331 // TrafficCarStartime[330] = 149490.0000 // TrafficCarModel[330] = minivan // TrafficCarPos[331] = <<-2001.7291, 4524.9360, 56.7503>> // TrafficCarQuatX[331] = 0.0040 // TrafficCarQuatY[331] = -0.0016 // TrafficCarQuatZ[331] = 0.9212 // TrafficCarQuatW[331] = 0.3890 // TrafficCarRecording[331] = 332 // TrafficCarStartime[331] = 149688.0000 // TrafficCarModel[331] = emperor // TrafficCarPos[332] = <<-1994.0558, 4517.0898, 56.8285>> // TrafficCarQuatX[332] = -0.0023 // TrafficCarQuatY[332] = -0.0040 // TrafficCarQuatZ[332] = -0.3662 // TrafficCarQuatW[332] = 0.9305 // TrafficCarRecording[332] = 333 // TrafficCarStartime[332] = 149886.0000 // TrafficCarModel[332] = journey TrafficCarPos[333] = <<-2026.8411, 4484.1152, 56.8037>> TrafficCarQuatX[333] = -0.0035 TrafficCarQuatY[333] = -0.0029 TrafficCarQuatZ[333] = -0.4273 TrafficCarQuatW[333] = 0.9041 TrafficCarRecording[333] = 334 TrafficCarStartime[333] = 151800.0000 TrafficCarModel[333] = minivan // TrafficCarPos[334] = <<-2038.8058, 4475.1045, 57.0356>> // TrafficCarQuatX[334] = -0.0109 // TrafficCarQuatY[334] = 0.0029 // TrafficCarQuatZ[334] = -0.3906 // TrafficCarQuatW[334] = 0.9205 // TrafficCarRecording[334] = 335 // TrafficCarStartime[334] = 153318.0000 // TrafficCarModel[334] = minivan // TrafficCarPos[335] = <<-2037.0986, 4476.1309, 56.9395>> // TrafficCarQuatX[335] = -0.0116 // TrafficCarQuatY[335] = 0.0027 // TrafficCarQuatZ[335] = -0.4029 // TrafficCarQuatW[335] = 0.9152 // TrafficCarRecording[335] = 336 // TrafficCarStartime[335] = 155166.0000 // TrafficCarModel[335] = journey // **** UBER RECORDED SET PIECE CARS **** // SetPieceCarPos[0] = <<2641.4314, 5104.0015, 44.1941>> // SetPieceCarQuatX[0] = 0.0034 // SetPieceCarQuatY[0] = -0.0012 // SetPieceCarQuatZ[0] = 0.1110 // SetPieceCarQuatW[0] = 0.9938 // SetPieceCarRecording[0] = 400 // SetPieceCarStartime[0] = 0.0000 // SetPieceCarRecordingSpeed[0] = 1.0000 // SetPieceCarModel[0] = entityxf // // SetPieceCarPos[1] = <<2651.3657, 5090.0205, 44.1038>> // SetPieceCarQuatX[1] = -0.0000 // SetPieceCarQuatY[1] = 0.0000 // SetPieceCarQuatZ[1] = 0.1193 // SetPieceCarQuatW[1] = 0.9929 // SetPieceCarRecording[1] = 401 // SetPieceCarStartime[1] = 0.0000 // SetPieceCarRecordingSpeed[1] = 1.0000 // SetPieceCarModel[1] = cheetah // // SetPieceCarPos[2] = <<2650.3530, 5066.5088, 44.3731>> // SetPieceCarQuatX[2] = 0.0065 // SetPieceCarQuatY[2] = -0.0003 // SetPieceCarQuatZ[2] = 0.1173 // SetPieceCarQuatW[2] = 0.9931 // SetPieceCarRecording[2] = 402 // SetPieceCarStartime[2] = 0.0000 // SetPieceCarRecordingSpeed[2] = 1.0000 // SetPieceCarModel[2] = f620 SetPieceCarPos[3] = <<-526.2304, 5788.8130, 34.7703>> SetPieceCarQuatX[3] = 0.0075 SetPieceCarQuatY[3] = 0.0489 SetPieceCarQuatZ[3] = 0.9749 SetPieceCarQuatW[3] = 0.2171 SetPieceCarRecording[3] = 403 SetPieceCarStartime[3] = 102000.000 SetPieceCarRecordingSpeed[3] = 1.0000 SetPieceCarModel[3] = hexer SetPieceCarPos[4] = <<-523.5488, 5790.6362, 34.7089>> SetPieceCarQuatX[4] = 0.0081 SetPieceCarQuatY[4] = 0.0484 SetPieceCarQuatZ[4] = 0.9763 SetPieceCarQuatW[4] = 0.2109 SetPieceCarRecording[4] = 404 SetPieceCarStartime[4] = 102000.000 SetPieceCarRecordingSpeed[4] = 1.0000 SetPieceCarModel[4] = hexer SetPieceCarPos[5] = <<-527.1961, 5790.4072, 34.7552>> SetPieceCarQuatX[5] = 0.0115 SetPieceCarQuatY[5] = 0.0382 SetPieceCarQuatZ[5] = 0.9777 SetPieceCarQuatW[5] = 0.2060 SetPieceCarRecording[5] = 405 SetPieceCarStartime[5] = 102000.000 SetPieceCarRecordingSpeed[5] = 1.0000 SetPieceCarModel[5] = hexer ENDPROC //═══════════════════════════╡ OBJECTIVE PROCEDURES ╞════════════════════════════ PROC initialiseMission() IF INIT_STAGE() //Set player SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) SET_INTERIOR_CAPPED(INTERIOR_V_CHOPSHOP, FALSE) //INFORM_MISSION_STATS_OF_MISSION_START_CAR_STEAL_THREE() //Request Additional Text REQUEST_ADDITIONAL_TEXT("CRSTL3", MISSION_TEXT_SLOT) WHILE NOT HAS_ADDITIONAL_TEXT_LOADED(MISSION_TEXT_SLOT) WAIT(0) ENDWHILE //Audio REGISTER_SCRIPT_WITH_AUDIO() //Ped SET_PED_MODEL_IS_SUPPRESSED(S_M_Y_HWAYCOP_01, TRUE) //Vehicle SET_VEHICLE_MODEL_IS_SUPPRESSED(POLICEB, TRUE) SET_VEHICLE_MODEL_IS_SUPPRESSED(F620, TRUE) SET_VEHICLE_MODEL_IS_SUPPRESSED(ENTITYXF, TRUE) SET_VEHICLE_MODEL_IS_SUPPRESSED(CHEETAH, TRUE) //Set Player IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_FRANKLIN bHasChanged = GET_PLAYER_HAS_CHANGE_CLOTHES_ON_MISSION(GET_CURRENT_PLAYER_PED_ENUM()) //ensure bChange is set to the state of “player has changed outfit” at the start of the mission WHILE NOT SET_CURRENT_SELECTOR_PED(SELECTOR_PED_FRANKLIN) WAIT(0) ENDWHILE ENDIF SET_PED_CONFIG_FLAG(PLAYER_PED_ID(), PCF_WillFlyThroughWindscreen, FALSE) //Widgets #IF IS_DEBUG_BUILD IF NOT DOES_WIDGET_GROUP_EXIST(widGroup) widGroup = START_WIDGET_GROUP("Car Steal 3") START_WIDGET_GROUP("Debug Print") ADD_WIDGET_BOOL("Audio", bDebugAudio) STOP_WIDGET_GROUP() // START_WIDGET_GROUP("Cinematic Camera Capture") // ADD_WIDGET_INT_SLIDER("Camera Index", iCinCamID, 0, iCinCams - 1, 1) // // ADD_WIDGET_BOOL("Capture Debug Camera as Node", bCinCamSave) // // ADD_WIDGET_BOOL("Link Tangent to Next Node", bCinCamLink) // // ADD_WIDGET_STRING("") // // //ADD_WIDGET_VECTOR_SLIDER("Camera Position", vCinCamPos, -10000.0, 10000.0, 0.1) // ADD_WIDGET_FLOAT_SLIDER("Camera Position X", vCinCamPos.X, -10000.0, 10000.0, 0.1) // ADD_WIDGET_FLOAT_SLIDER("Camera Position Y", vCinCamPos.Y, -10000.0, 10000.0, 0.1) // ADD_WIDGET_FLOAT_SLIDER("Camera Position Z", vCinCamPos.Z, -10000.0, 10000.0, 0.1) // // ADD_WIDGET_STRING("") // // //ADD_WIDGET_VECTOR_SLIDER("Camera Rotation", vCinCamRot, -10000.0, 10000.0, 0.1) // ADD_WIDGET_FLOAT_SLIDER("Camera Rotation X", vCinCamRot.X, -10000.0, 10000.0, 0.1) // ADD_WIDGET_FLOAT_SLIDER("Camera Rotation Y", vCinCamRot.Y, -10000.0, 10000.0, 0.1) // ADD_WIDGET_FLOAT_SLIDER("Camera Rotation Z", vCinCamRot.Z, -10000.0, 10000.0, 0.1) // // ADD_WIDGET_STRING("") // // ADD_WIDGET_FLOAT_SLIDER("Camera FOV", fCinCamFov, 0.0, 130.0, 0.1) // // ADD_WIDGET_STRING("") // // //ADD_WIDGET_VECTOR_SLIDER("Camera Tangent In", vCinCamTanIn, -10000.0, 10000.0, 0.1) // ADD_WIDGET_FLOAT_SLIDER("Camera Tangent In X", vCinCamTanIn.X, -10000.0, 10000.0, 0.1) // ADD_WIDGET_FLOAT_SLIDER("Camera Tangent In Y", vCinCamTanIn.Y, -10000.0, 10000.0, 0.1) // ADD_WIDGET_FLOAT_SLIDER("Camera Tangent In Z", vCinCamTanIn.Z, -10000.0, 10000.0, 0.1) // ADD_WIDGET_FLOAT_SLIDER("Magnitude", fCinCamTanInMag, 0.0, 100000.0, 1.0) // // ADD_WIDGET_STRING("") // // //ADD_WIDGET_VECTOR_SLIDER("Camera Tangent Out", vCinCamTanOut, -10000.0, 10000.0, 0.1) // ADD_WIDGET_FLOAT_SLIDER("Camera Tangent Out X", vCinCamTanOut.X, -10000.0, 10000.0, 0.1) // ADD_WIDGET_FLOAT_SLIDER("Camera Tangent Out Y", vCinCamTanOut.Y, -10000.0, 10000.0, 0.1) // ADD_WIDGET_FLOAT_SLIDER("Camera Tangent Out Z", vCinCamTanOut.Z, -10000.0, 10000.0, 0.1) // ADD_WIDGET_FLOAT_SLIDER("Magnitude", fCinCamTanOutMag, 0.0, 100000.0, 1.0) // // ADD_WIDGET_STRING("") // // ADD_WIDGET_FLOAT_SLIDER("Camera Recording Time", fCinCamRec, 0.0, 100000.0, 1.0) // // ADD_WIDGET_STRING("") // // ADD_WIDGET_BOOL("Display Debug Lines", bCinCamDebug) // // ADD_WIDGET_BOOL("Output Camera Data", bCinCamOutput) // STOP_WIDGET_GROUP() STOP_WIDGET_GROUP() SET_UBER_PARENT_WIDGET_GROUP(widGroup) SET_LOCATES_HEADER_WIDGET_GROUP(widGroup) ENDIF #ENDIF //Relationships ADD_RELATIONSHIP_GROUP("BUDDIES", relGroupBuddy) ADD_RELATIONSHIP_GROUP("ENEMIES", relGroupEnemy) //Buddy SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE, relGroupBuddy, RELGROUPHASH_PLAYER) SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE, RELGROUPHASH_PLAYER, relGroupBuddy) //Spawn Car IF NOT DOES_ENTITY_EXIST(vehPlayer) SPAWN_VEHICLE(vehPlayer, F620, vPlayerStart, fPlayerStart, 0) SET_VEHICLE_HAS_STRONG_AXLES(vehPlayer, TRUE) SET_VEHICLE_COLOURS(vehPlayer, 43, 43) SET_VEHICLE_EXTRA_COLOURS(vehPlayer, 48, 48) ENDIF // IF DOES_ENTITY_EXIST(PLAYER_PED_ID()) // IF NOT IS_PED_INJURED(PLAYER_PED_ID()) // IF DOES_ENTITY_EXIST(vehPlayer) // IF NOT IS_ENTITY_DEAD(vehPlayer) // IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehPlayer) // SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehPlayer) // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF SET_MODEL_AS_NO_LONGER_NEEDED(F620) //Dialogue ADD_PED_FOR_DIALOGUE(sPedsForConversation, 3, PLAYER_PED_ID(), "FRANKLIN") // Fix possible bad weather IF Is_Replay_In_Progress() // On replay - set weather now SET_WEATHER_TYPE_PERSIST("EXTRASUNNY") ELSE // Change to sunny quickly SET_WEATHER_TYPE_OVERTIME_PERSIST("EXTRASUNNY", 60.0) ENDIF IF SKIPPED_STAGE() //Camera Behind Player SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) //Fade In IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(500) ENDIF ENDIF ELSE ADVANCE_STAGE() ENDIF IF CLEANUP_STAGE() //Cleanup (Blips, peds, variables etc.) eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1) #IF IS_DEBUG_BUILD IF bAutoSkipping = FALSE #ENDIF //Your mission is being replayed IF IS_REPLAY_IN_PROGRESS() IF g_bShitskipAccepted = TRUE MISSION_REPLAY(INT_TO_ENUM(MissionReplay, GET_REPLAY_MID_MISSION_STAGE() + 1)) ELSE MISSION_REPLAY(INT_TO_ENUM(MissionReplay, GET_REPLAY_MID_MISSION_STAGE())) ENDIF ENDIF #IF IS_DEBUG_BUILD ENDIF #ENDIF //SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(ENUM_TO_INT(replayStart), "initMission") ENDIF ENDPROC PROC CutsceneIntro() IF INIT_STAGE() #IF IS_DEBUG_BUILD IF bAutoSkipping = FALSE #ENDIF //Player Control SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) //Radar bRadar = FALSE //Cutscene IF bReplaySkip = FALSE AND bPreloaded = FALSE REQUEST_CUTSCENE("CAR_1_INT_CONCAT", CUTSCENE_REQUESTED_FROM_Z_SKIP) ENDIF #IF IS_DEBUG_BUILD ENDIF #ENDIF IF SKIPPED_STAGE() IF NOT DOES_ENTITY_EXIST(vehDevin) REQUEST_MODEL(ADDER) WHILE NOT HAS_MODEL_LOADED(ADDER) WAIT(0) ENDWHILE SPAWN_VEHICLE(vehDevin, ADDER, <<119.2013, -398.4865, 40.1208>>, -171.4098) #IF IS_DEBUG_BUILD SET_VEHICLE_NAME_DEBUG(vehDevin, "vehDevin") #ENDIF SET_VEHICLE_COLOURS(vehDevin, 0, 0) SET_VEHICLE_EXTRA_COLOURS(vehDevin, 0, 0) SET_VEHICLE_DOORS_LOCKED(vehDevin, VEHICLELOCK_CANNOT_ENTER) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehDevin, FALSE) ENDIF IF NOT DOES_ENTITY_EXIST(pedDevin) REQUEST_MODEL(GET_NPC_PED_MODEL(CHAR_DEVIN)) WHILE NOT HAS_MODEL_LOADED(GET_NPC_PED_MODEL(CHAR_DEVIN)) WAIT(0) ENDWHILE WHILE NOT CREATE_NPC_PED_INSIDE_VEHICLE(pedDevin, CHAR_DEVIN, vehDevin) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SET_PED_COMPONENT_VARIATION(pedDevin, PED_COMP_TORSO, 2, 0) SET_PED_COMPONENT_VARIATION(pedDevin, PED_COMP_LEG, 2, 0) SET_PED_COMPONENT_VARIATION(pedDevin, PED_COMP_DECL, 1, 0) WHILE NOT HAVE_ALL_STREAMING_REQUESTS_COMPLETED(pedDevin) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SET_PED_RELATIONSHIP_GROUP_HASH(pedDevin, relGroupBuddy) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedDevin, TRUE) TASK_VEHICLE_DRIVE_WANDER(pedDevin, vehDevin, 30.0, DRIVINGMODE_AVOIDCARS_STOPFORPEDS_OBEYLIGHTS) SET_PED_KEEP_TASK(pedDevin, TRUE) SET_MODEL_AS_NO_LONGER_NEEDED(GET_NPC_PED_MODEL(CHAR_DEVIN)) ENDIF //Camera Behind Player SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) //Fade In // IF IS_SCREEN_FADED_OUT() // DO_SCREEN_FADE_IN(500) // ENDIF ENDIF ELSE SET_PED_DENSITY_MULTIPLIER_THIS_FRAME(0.2) SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME(0.2) IF bReplaySkip = FALSE AND bPreloaded = FALSE //Request Cutscene Variations - CAR_1_INT_CONCAT IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Franklin", PLAYER_PED(CHAR_FRANKLIN)) ELIF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Michael", PLAYER_PED(CHAR_MICHAEL)) ELIF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Trevor", PLAYER_PED(CHAR_TREVOR)) ENDIF SET_CUTSCENE_PED_COMPONENT_VARIATION("DEVIN", PED_COMP_TORSO, 2, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION("DEVIN", PED_COMP_LEG, 2, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION("DEVIN", PED_COMP_DECL, 1, 0) ENDIF ENDIF SWITCH iCutsceneStage CASE 0 IF HAS_THIS_CUTSCENE_LOADED("CAR_1_INT_CONCAT") OR bReplaySkip = TRUE OR bPreloaded = TRUE IF bReplaySkip = FALSE AND bPreloaded = FALSE THEFEED_FLUSH_QUEUE() SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE) IF DOES_ENTITY_EXIST(vehPlayer) AND NOT IS_ENTITY_DEAD(vehPlayer) REGISTER_ENTITY_FOR_CUTSCENE(vehPlayer, "Franklins_car", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) ENDIF IF DOES_ENTITY_EXIST(pedDevin) AND NOT IS_PED_INJURED(pedDevin) REGISTER_ENTITY_FOR_CUTSCENE(pedDevin, "DEVIN", CU_ANIMATE_EXISTING_SCRIPT_ENTITY, GET_NPC_PED_MODEL(CHAR_DEVIN)) ELSE REGISTER_ENTITY_FOR_CUTSCENE(NULL, "DEVIN", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, GET_NPC_PED_MODEL(CHAR_DEVIN)) ENDIF IF DOES_ENTITY_EXIST(vehDevin) AND NOT IS_ENTITY_DEAD(vehDevin) REGISTER_ENTITY_FOR_CUTSCENE(vehDevin, "Devins_car", CU_ANIMATE_EXISTING_SCRIPT_ENTITY, ADDER) ELSE REGISTER_ENTITY_FOR_CUTSCENE(NULL, "Devins_car", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, ADDER) ENDIF IF DOES_ENTITY_EXIST(pedMolly) AND NOT IS_ENTITY_DEAD(pedMolly) REGISTER_ENTITY_FOR_CUTSCENE(pedMolly, "MOLLY", CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY) ENDIF IF DOES_ENTITY_EXIST(vehCutscene) AND NOT IS_ENTITY_DEAD(vehCutscene) REGISTER_ENTITY_FOR_CUTSCENE(vehCutscene, "Car_1_Felon", CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY) ENDIF IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) AND NOT IS_ENTITY_DEAD(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) REGISTER_ENTITY_FOR_CUTSCENE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], "TREVOR", CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY) ENDIF START_CUTSCENE() REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST) WAIT_WITH_DEATH_CHECKS(0) DELETE_ALL_SCRIPT_CREATED_PLAYER_VEHICLES(CHAR_MICHAEL) DELETE_ALL_SCRIPT_CREATED_PLAYER_VEHICLES(CHAR_TREVOR) RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<110.811684, -421.141571, 36.196766>>, <<126.111618, -380.102112, 57.261459>>, 40.0, <<120.5374, -429.8324, 40.0967>>, 289.2337, GET_DEFAULT_ALLOWABLE_VEHICLE_SIZE_VECTOR()) CLEAR_AREA(<<115.56944, -400.46335, 40.26558>>, 20.0, TRUE) DISABLE_PROCOBJ_CREATION() STOP_GAMEPLAY_HINT(TRUE) CLEAR_TEXT() ENDIF //Fade In IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(500) ENDIF ADVANCE_CUTSCENE() ENDIF BREAK CASE 1 IF NOT DOES_ENTITY_EXIST(pedDevin) ENTITY_INDEX entityDevin entityDevin = GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("DEVIN") IF DOES_ENTITY_EXIST(entityDevin) pedDevin = GET_PED_INDEX_FROM_ENTITY_INDEX(entityDevin) SET_PED_RELATIONSHIP_GROUP_HASH(pedDevin, relGroupBuddy) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedDevin, TRUE) ENDIF ENDIF IF NOT DOES_ENTITY_EXIST(vehDevin) IF NOT DOES_ENTITY_EXIST(vehDevin) ENTITY_INDEX entityDevin entityDevin = GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Devins_car") IF DOES_ENTITY_EXIST(entityDevin) vehDevin = GET_VEHICLE_INDEX_FROM_ENTITY_INDEX(entityDevin) #IF IS_DEBUG_BUILD SET_VEHICLE_NAME_DEBUG(vehDevin, "vehDevin") #ENDIF SET_VEHICLE_COLOURS(vehDevin, 0, 0) SET_VEHICLE_EXTRA_COLOURS(vehDevin, 0, 0) ENDIF ENDIF ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Franklin") REPLAY_STOP_EVENT() //TASK_GO_STRAIGHT_TO_COORD(PLAYER_PED_ID(), GET_ENTITY_COORDS(PLAYER_PED_ID()), PEDMOVE_WALK, DEFAULT_TIME_BEFORE_WARP, 172.2073) ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Franklins_car") ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("DEVIN") IF DOES_ENTITY_EXIST(vehDevin) AND NOT IS_ENTITY_DEAD(vehDevin) IF DOES_ENTITY_EXIST(vehDevin) AND NOT IS_PED_INJURED(pedDevin) SET_PED_INTO_VEHICLE(pedDevin, vehDevin, VS_DRIVER) SET_PED_RELATIONSHIP_GROUP_HASH(pedDevin, relGroupBuddy) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedDevin, TRUE) TASK_VEHICLE_DRIVE_WANDER(pedDevin, vehDevin, 30.0, DRIVINGMODE_AVOIDCARS_STOPFORPEDS_OBEYLIGHTS) SET_PED_KEEP_TASK(pedDevin, TRUE) ENDIF ENDIF ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("MOLLY") ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Devins_car") SET_VEHICLE_DOORS_LOCKED(vehDevin, VEHICLELOCK_CANNOT_ENTER) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehDevin, FALSE) ENDIF IF CAN_SET_EXIT_STATE_FOR_CAMERA() SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) ENABLE_PROCOBJ_CREATION() ENDIF IF WAS_CUTSCENE_SKIPPED() SET_CUTSCENE_FADE_VALUES(FALSE, FALSE, TRUE, FALSE) ENDIF IF bReplaySkip = TRUE OR HAS_CUTSCENE_FINISHED() SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) IF NOT DOES_ENTITY_EXIST(vehDevin) REQUEST_MODEL(ADDER) WHILE NOT HAS_MODEL_LOADED(ADDER) WAIT(0) ENDWHILE SPAWN_VEHICLE(vehDevin, ADDER, <<119.2013, -398.4865, 40.1208>>, -171.4098) #IF IS_DEBUG_BUILD SET_VEHICLE_NAME_DEBUG(vehDevin, "vehDevin") #ENDIF SET_VEHICLE_COLOURS(vehDevin, 0, 0) SET_VEHICLE_EXTRA_COLOURS(vehDevin, 0, 0) SET_VEHICLE_DOORS_LOCKED(vehDevin, VEHICLELOCK_CANNOT_ENTER) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehDevin, FALSE) ENDIF IF NOT DOES_ENTITY_EXIST(pedDevin) REQUEST_MODEL(GET_NPC_PED_MODEL(CHAR_DEVIN)) WHILE NOT HAS_MODEL_LOADED(GET_NPC_PED_MODEL(CHAR_DEVIN)) WAIT(0) ENDWHILE WHILE NOT CREATE_NPC_PED_INSIDE_VEHICLE(pedDevin, CHAR_DEVIN, vehDevin) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SET_PED_COMPONENT_VARIATION(pedDevin, PED_COMP_TORSO, 2, 0) SET_PED_COMPONENT_VARIATION(pedDevin, PED_COMP_LEG, 2, 0) SET_PED_COMPONENT_VARIATION(pedDevin, PED_COMP_DECL, 1, 0) WHILE NOT HAVE_ALL_STREAMING_REQUESTS_COMPLETED(pedDevin) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SET_PED_RELATIONSHIP_GROUP_HASH(pedDevin, relGroupBuddy) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedDevin, TRUE) TASK_VEHICLE_DRIVE_WANDER(pedDevin, vehDevin, 30.0, DRIVINGMODE_AVOIDCARS_STOPFORPEDS_OBEYLIGHTS) SET_PED_KEEP_TASK(pedDevin, TRUE) SET_MODEL_AS_NO_LONGER_NEEDED(GET_NPC_PED_MODEL(CHAR_DEVIN)) ENDIF IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(500) ENDIF ADVANCE_STAGE() ENDIF BREAK ENDSWITCH ENDIF IF CLEANUP_STAGE() //Cleanup (Blips, peds, variables etc.) REMOVE_CUTSCENE() WHILE HAS_CUTSCENE_LOADED() WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1) ENDIF ENDPROC PROC Arrive() IF INIT_STAGE() //Set player SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) //Outfits/Weapons SET_PLAYER_PED_DATA_IN_CUTSCENES(FALSE, TRUE) #IF IS_DEBUG_BUILD IF bAutoSkipping = FALSE #ENDIF //Set radar bRadar = TRUE //Blips //SAFE_ADD_BLIP_LOCATION(blipStart, vTown, TRUE) ADD_SCENARIO_BLOCKING_AREA(<<2581.105713, 361.805481, 116.468567>> - <<25.0, 25.0, 10.0>>, <<2581.105713, 361.805481, 116.468567>> + <<25.0, 25.0, 10.0>>) SET_ROADS_IN_AREA(<<2581.105713, 361.805481, 116.468567>> - <<25.0, 25.0, 10.0>>, <<2581.105713, 361.805481, 116.468567>> + <<25.0, 25.0, 10.0>>, FALSE) #IF IS_DEBUG_BUILD ENDIF #ENDIF IF SKIPPED_STAGE() SET_PED_POSITION(PLAYER_PED_ID(), <<117.2437, -405.8348, 40.2589>>, 172.2073, FALSE) IF NOT DOES_ENTITY_EXIST(vehDevin) REQUEST_MODEL(ADDER) WHILE NOT HAS_MODEL_LOADED(ADDER) WAIT(0) ENDWHILE SPAWN_VEHICLE(vehDevin, ADDER, <<119.2013, -398.4865, 40.1208>>, -171.4098) #IF IS_DEBUG_BUILD SET_VEHICLE_NAME_DEBUG(vehDevin, "vehDevin") #ENDIF SET_VEHICLE_COLOURS(vehDevin, 0, 0) SET_VEHICLE_EXTRA_COLOURS(vehDevin, 0, 0) SET_VEHICLE_DOORS_LOCKED(vehDevin, VEHICLELOCK_CANNOT_ENTER) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehDevin, FALSE) ENDIF IF NOT DOES_ENTITY_EXIST(pedDevin) REQUEST_MODEL(GET_NPC_PED_MODEL(CHAR_DEVIN)) WHILE NOT HAS_MODEL_LOADED(GET_NPC_PED_MODEL(CHAR_DEVIN)) WAIT(0) ENDWHILE WHILE NOT CREATE_NPC_PED_INSIDE_VEHICLE(pedDevin, CHAR_DEVIN, vehDevin) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SET_PED_COMPONENT_VARIATION(pedDevin, PED_COMP_TORSO, 2, 0) SET_PED_COMPONENT_VARIATION(pedDevin, PED_COMP_LEG, 2, 0) SET_PED_COMPONENT_VARIATION(pedDevin, PED_COMP_DECL, 1, 0) WHILE NOT HAVE_ALL_STREAMING_REQUESTS_COMPLETED(pedDevin) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SET_PED_RELATIONSHIP_GROUP_HASH(pedDevin, relGroupBuddy) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedDevin, TRUE) TASK_VEHICLE_DRIVE_WANDER(pedDevin, vehDevin, 30.0, DRIVINGMODE_AVOIDCARS_STOPFORPEDS_OBEYLIGHTS) SET_PED_KEEP_TASK(pedDevin, TRUE) SET_MODEL_AS_NO_LONGER_NEEDED(GET_NPC_PED_MODEL(CHAR_DEVIN)) ENDIF FORCE_PED_MOTION_STATE(PLAYER_PED_ID(), MS_ON_FOOT_IDLE) //Camera Behind Player SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) WAIT_WITH_DEATH_CHECKS(10) //Fade In IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(500) ENDIF ENDIF ELSE IF NOT IS_DOOR_REGISTERED_WITH_SYSTEM(g_sAutoDoorData[ENUM_TO_INT(AUTODOOR_HAYES_GARAGE)].doorID) ADD_DOOR_TO_SYSTEM(g_sAutoDoorData[ENUM_TO_INT(AUTODOOR_HAYES_GARAGE)].doorID, g_sAutoDoorData[ENUM_TO_INT(AUTODOOR_HAYES_GARAGE)].model, g_sAutoDoorData[ENUM_TO_INT(AUTODOOR_HAYES_GARAGE)].coords) ENDIF IF IS_DOOR_REGISTERED_WITH_SYSTEM(g_sAutoDoorData[ENUM_TO_INT(AUTODOOR_HAYES_GARAGE)].doorID) IF DOOR_SYSTEM_GET_OPEN_RATIO(g_sAutoDoorData[ENUM_TO_INT(AUTODOOR_HAYES_GARAGE)].doorID) <> 0.0 OR DOOR_SYSTEM_GET_DOOR_STATE(g_sAutoDoorData[ENUM_TO_INT(AUTODOOR_HAYES_GARAGE)].doorID) != DOORSTATE_FORCE_LOCKED_THIS_FRAME DOOR_SYSTEM_SET_OPEN_RATIO(g_sAutoDoorData[ENUM_TO_INT(AUTODOOR_HAYES_GARAGE)].doorID, 0.0, FALSE, FALSE) DOOR_SYSTEM_SET_DOOR_STATE(g_sAutoDoorData[ENUM_TO_INT(AUTODOOR_HAYES_GARAGE)].doorID, DOORSTATE_FORCE_LOCKED_THIS_FRAME, FALSE, TRUE) ENDIF ENDIF SET_DOOR_STATE(DOORNAME_CARSTEAL_GARAGE_S, DOORSTATE_FORCE_LOCKED_THIS_FRAME) SWITCH iCutsceneStage CASE 0 //Audio Scene IF NOT IS_AUDIO_SCENE_ACTIVE("CAR_1_DEVIN_DRIVES_AWAY") START_AUDIO_SCENE("CAR_1_DEVIN_DRIVES_AWAY") ENDIF IF DOES_ENTITY_EXIST(vehDevin) AND NOT IS_ENTITY_DEAD(vehDevin) IF NOT HAS_LABEL_BEEN_TRIGGERED("CAR_1_DEVINS_CAR_GROUP") ADD_ENTITY_TO_AUDIO_MIX_GROUP(vehDevin, "CAR_1_DEVINS_CAR_GROUP") SET_LABEL_AS_TRIGGERED("CAR_1_DEVINS_CAR_GROUP", TRUE) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_Phone") IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<2597.918945, 361.818237, 106.427612>>) < 1500.0 AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<2597.918945, 361.818237, 106.427612>>) > 200.0 ADD_PED_FOR_DIALOGUE(sPedsForConversation, 3, PLAYER_PED(CHAR_FRANKLIN), "FRANKLIN") ADD_PED_FOR_DIALOGUE(sPedsForConversation, 1, NULL, "MICHAEL") PLAYER_CALL_CHAR_CELLPHONE(sPedsForConversation, CHAR_MICHAEL, "CST3AUD", "CST3_Phone", CONV_PRIORITY_HIGH) SET_LABEL_AS_TRIGGERED("CST3_Phone", TRUE) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("LeaveVehicle") #IF IS_DEBUG_BUILD DONT_DO_J_SKIP(sLocatesData) #ENDIF IS_PLAYER_AT_LOCATION_IN_VEHICLE(sLocatesData, vTown, <<0.0, 0.0, LOCATE_SIZE_HEIGHT>>, TRUE, vehPlayer, "S3_GOTO", "CMN_GENGETIN", "CMN_GENGETBCK", TRUE) ENDIF IF NOT IS_AUDIO_SCENE_ACTIVE("CAR_1_GET_TO_RACE") IF IS_PED_SITTING_IN_VEHICLE(PLAYER_PED_ID(), vehPlayer) START_AUDIO_SCENE("CAR_1_GET_TO_RACE") ENDIF ENDIF // IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<2571.36, 360.45, 108.05>>, <<2.5, 3.0, 3.0>>) // AND IS_PED_SITTING_IN_VEHICLE(PLAYER_PED_ID(), vehPlayer) // IF CAN_PLAYER_START_CUTSCENE() // SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) // ENDIF // ENDIF // // IF NOT SAFE_IS_PLAYER_CONTROL_ON() // AND GET_ENTITY_SPEED(vehPlayer) < 1.0 // AND IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<2571.36, 360.45, 108.05>>, <<50.0, 50.0, 5.0>>) // IF NOT HAS_LABEL_BEEN_TRIGGERED("LeaveVehicle") // TASK_LEAVE_VEHICLE(PLAYER_PED_ID(), vehPlayer) // // SET_LABEL_AS_TRIGGERED("LeaveVehicle", TRUE) // ENDIF // // IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID()) // AND GET_VEHICLE_PED_IS_USING(PLAYER_PED_ID()) != vehPlayer // ADVANCE_STAGE() // ENDIF // ENDIF // // IF NOT HAS_LABEL_BEEN_TRIGGERED("SAFE_ENTRY") // AND NOT HAS_LABEL_BEEN_TRIGGERED("NOT_SAFE_ENTRY") // IF (IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<2571.565186, 363.774963, 112.456970>>, <<2570.273682, 331.501129, 107.452881>>, 20.0) // OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<2571.565186, 363.774963, 112.456970>>, <<2588.722900, 332.148132, 107.191933>>, 20.0) // OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<2571.565186, 363.774963, 112.456970>>, <<2558.238525, 333.626129, 107.205437>>, 15.0)) // AND IS_PED_SITTING_IN_VEHICLE(PLAYER_PED_ID(), vehPlayer) // AND NOT IS_PLAYER_WANTED_LEVEL_GREATER(PLAYER_ID(), 0) // IF CAN_PLAYER_START_CUTSCENE() // IF GET_ENTITY_HEADING(PLAYER_PED_ID()) > WRAP(GET_HEADING_BETWEEN_VECTORS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<2581.719727, 336.251709, 113.443291>>) - 90.0, 0.0, 360.0) // AND GET_ENTITY_HEADING(PLAYER_PED_ID()) < WRAP(GET_HEADING_BETWEEN_VECTORS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<2581.719727, 336.251709, 113.443291>>) + 90.0, 0.0, 360.0) // SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) // // TASK_VEHICLE_DRIVE_TO_COORD(PLAYER_PED_ID(), vehPlayer, <<2571.3267, 360.4416, 107.4570>>, 20.0, DRIVINGSTYLE_ACCURATE, F620, DRIVINGMODE_AVOIDCARS_STOPFORPEDS_OBEYLIGHTS, 1.0, 1.0) // // SET_GAMEPLAY_HINT_CAMERA_BLEND_TO_FOLLOW_PED_MEDIUM_VIEW_MODE(TRUE) // SET_GAMEPLAY_ENTITY_HINT(vehRival1, <<0.0, 0.0, 1.0>>, DEFAULT, -1, DEFAULT_INTERP_IN_TIME * 2) // SET_GAMEPLAY_HINT_FOLLOW_DISTANCE_SCALAR(0.70) // SET_GAMEPLAY_HINT_BASE_ORBIT_PITCH_OFFSET(-90.0) // //SET_GAMEPLAY_HINT_CAMERA_RELATIVE_SIDE_OFFSET(0.030) // SET_GAMEPLAY_HINT_CAMERA_RELATIVE_VERTICAL_OFFSET(-0.02) // SET_GAMEPLAY_HINT_FOV(30.0) // // SET_LABEL_AS_TRIGGERED("SAFE_ENTRY", TRUE) // ELSE // SET_LABEL_AS_TRIGGERED("NOT_SAFE_ENTRY", TRUE) // ENDIF // ENDIF // ENDIF // ENDIF // IF NOT HAS_LABEL_BEEN_TRIGGERED("SAFE_ENTRY") // AND HAS_LABEL_BEEN_TRIGGERED("NOT_SAFE_ENTRY") IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<2558.925537, 355.287384, 107.121086>>, <<2598.119873, 353.765930, 121.994392>>, 35.0) AND IS_PED_SITTING_IN_VEHICLE(PLAYER_PED_ID(), vehPlayer) AND NOT IS_PLAYER_WANTED_LEVEL_GREATER(PLAYER_ID(), 0) IF CAN_PLAYER_START_CUTSCENE() IF NOT IS_NEW_LOAD_SCENE_ACTIVE() NEW_LOAD_SCENE_START_SPHERE(<<2580.91138, 354.02069, 107.45697>>, 50.0) ENDIF SET_VEHICLE_ENGINE_ON(vehPlayer, TRUE, TRUE) IF DOES_ENTITY_EXIST(pedRival1) CLEAR_PED_TASKS_IMMEDIATELY(pedRival1) TASK_PLAY_ANIM_ADVANCED(pedRival1, sAnimDictCar3, "racer_argue_action_01", <<2581.546, 358.981, 107.662>> + <<-0.45, 0.0, 0.0>>, <<0.0, 0.0, 90.0>>, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_EXIT_AFTER_INTERRUPTED | AF_USE_MOVER_EXTRACTION, 0.7) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedRival1) ENDIF IF DOES_ENTITY_EXIST(pedRival2) CLEAR_PED_TASKS_IMMEDIATELY(pedRival2) TASK_PLAY_ANIM_ADVANCED(pedRival2, sAnimDictCar3, "racer_argue_action_02", <<2581.546, 358.981, 107.662>>, <<0.0, 0.0, 90.0>>, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_EXIT_AFTER_INTERRUPTED | AF_USE_MOVER_EXTRACTION, 0.7) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedRival2) ENDIF REPLAY_RECORD_BACK_FOR_TIME(10.0, 10.0) START_PLAYBACK_RECORDED_VEHICLE(vehPlayer, 001, sCarrecGasStation) FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehPlayer) SET_PLAYBACK_SPEED(vehPlayer, 0.75) // WAIT_WITH_DEATH_CHECKS(0) // // IF DOES_ENTITY_EXIST(pedRival1) // IF IS_ENTITY_PLAYING_ANIM(pedRival1, sAnimDictCar3, "racer_argue_action_01") // //SET_ENTITY_ANIM_CURRENT_TIME(pedRival1, sAnimDictCar3, "racer_argue_action_01", CLAMP((1.0 / GET_ENTITY_ANIM_TOTAL_TIME(pedRival1, sAnimDictCar3, "racer_argue_action_01")) * (GET_ENTITY_ANIM_TOTAL_TIME(pedRival1, sAnimDictCar3, "racer_argue_action_01") - GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(002, sCarrecGasStation)), 0.0, 1.0)) // SET_ENTITY_ANIM_CURRENT_TIME(pedRival1, sAnimDictCar3, "racer_argue_action_01", 0.7) // ENDIF // ENDIF // // IF DOES_ENTITY_EXIST(pedRival2) // IF IS_ENTITY_PLAYING_ANIM(pedRival2, sAnimDictCar3, "racer_argue_action_02") // //SET_ENTITY_ANIM_CURRENT_TIME(pedRival2, sAnimDictCar3, "racer_argue_action_02", CLAMP((1.0 / GET_ENTITY_ANIM_TOTAL_TIME(pedRival2, sAnimDictCar3, "racer_argue_action_02")) * (GET_ENTITY_ANIM_TOTAL_TIME(pedRival2, sAnimDictCar3, "racer_argue_action_02") - GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(002, sCarrecGasStation)), 0.0, 1.0)) // SET_ENTITY_ANIM_CURRENT_TIME(pedRival2, sAnimDictCar3, "racer_argue_action_02", 0.7) // ENDIF // ENDIF IF NOT DOES_CAM_EXIST(camMain) camMain = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", TRUE) ENDIF SET_CAM_PARAMS(camMain, <<2564.086914, 365.741150, 110.564148>>, <<-5.489840, 0.0, -143.291901>>, 27.323626) SET_CAM_PARAMS(camMain, <<2564.047852, 365.790039, 109.911957>>, <<-10.087912, 0.0, -122.954353>>, 27.323626, 3500, GRAPH_TYPE_DECEL, GRAPH_TYPE_DECEL) SHAKE_CAM(camMain, "HAND_SHAKE", 0.4) RENDER_SCRIPT_CAMS(TRUE, FALSE) CLEAR_PRINTS() CLEAR_HELP(TRUE) CLEAR_AREA(<<2570.5767, 364.8711, 107.4569>>, 1000.0, TRUE) HIDE_HUD_AND_RADAR_THIS_FRAME() bRadar = FALSE SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID()) SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehPlayer) SET_LABEL_AS_TRIGGERED("FranklinExitCar", TRUE) //Audio Scene IF IS_AUDIO_SCENE_ACTIVE("CAR_1_GET_TO_RACE") STOP_AUDIO_SCENE("CAR_1_GET_TO_RACE") ENDIF IF NOT IS_AUDIO_SCENE_ACTIVE("CAR_1_PARK_UP_CUTSCENE") START_AUDIO_SCENE("CAR_1_PARK_UP_CUTSCENE") ENDIF ADVANCE_CUTSCENE() ENDIF ENDIF IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<2559.318604, 370.344788, 107.121025>>, <<2598.887451, 368.674652, 122.002274>>, 35.0) AND IS_PED_SITTING_IN_VEHICLE(PLAYER_PED_ID(), vehPlayer) AND NOT IS_PLAYER_WANTED_LEVEL_GREATER(PLAYER_ID(), 0) IF CAN_PLAYER_START_CUTSCENE() IF NOT IS_NEW_LOAD_SCENE_ACTIVE() NEW_LOAD_SCENE_START_SPHERE(<<2580.91138, 354.02069, 107.45697>>, 50.0) ENDIF SET_VEHICLE_ENGINE_ON(vehPlayer, TRUE, TRUE) START_PLAYBACK_RECORDED_VEHICLE(vehPlayer, 002, sCarrecGasStation) FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehPlayer) SET_PLAYBACK_SPEED(vehPlayer, 0.75) // WAIT_WITH_DEATH_CHECKS(0) IF NOT DOES_CAM_EXIST(camMain) camMain = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", TRUE) ENDIF SET_CAM_PARAMS(camMain, <<2595.212891, 341.750702, 110.446648>>, <<9.125167, 0.100839, 16.448170>>, 39.313477) SET_CAM_PARAMS(camMain, <<2593.473633, 340.792969, 109.082886>>, <<2.509332, 0.100839, 29.033203>>, 39.313477, ROUND(GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(002, sCarrecGasStation))) SHAKE_CAM(camMain, "HAND_SHAKE", 0.4) RENDER_SCRIPT_CAMS(TRUE, FALSE) CLEAR_PRINTS() CLEAR_HELP(TRUE) CLEAR_AREA(<<2570.5767, 364.8711, 107.4569>>, 1000.0, TRUE) HIDE_HUD_AND_RADAR_THIS_FRAME() bRadar = FALSE DISPLAY_RADAR(FALSE) DISPLAY_HUD(FALSE) SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID()) SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehPlayer) //Audio Scene IF IS_AUDIO_SCENE_ACTIVE("CAR_1_GET_TO_RACE") STOP_AUDIO_SCENE("CAR_1_GET_TO_RACE") ENDIF IF NOT IS_AUDIO_SCENE_ACTIVE("CAR_1_PARK_UP_CUTSCENE") START_AUDIO_SCENE("CAR_1_PARK_UP_CUTSCENE") ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_MCS1_LI") //Fix for bug 1813722 IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() ADD_PED_FOR_DIALOGUE(sPedsForConversation, 4, pedRival1, "CST3RACER1") ADD_PED_FOR_DIALOGUE(sPedsForConversation, 5, pedRival2, "CST3RACER2") i_CST3_MCS1_DialogueDelay = 0 i_CST3_MCS1_AnimStartTime = 0 CREATE_CONVERSATION_ADV("CST3_MCS1_LI", DEFAULT, DEFAULT, DO_NOT_DISPLAY_SUBTITLES) //CST3_MCS3_LI ENDIF ENDIF WAIT_WITH_DEATH_CHECKS(ROUND(GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(002, sCarrecGasStation))) STOP_PLAYBACK_RECORDED_VEHICLE(vehPlayer) IF DOES_ENTITY_EXIST(pedRival1) CLEAR_PED_TASKS_IMMEDIATELY(pedRival1) TASK_PLAY_ANIM_ADVANCED(pedRival1, sAnimDictCar3, "racer_argue_action_01", <<2581.546, 358.981, 107.662>> + <<-0.45, 0.0, 0.0>>, <<0.0, 0.0, 90.0>>, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_EXIT_AFTER_INTERRUPTED | AF_USE_MOVER_EXTRACTION) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedRival1) ENDIF IF DOES_ENTITY_EXIST(pedRival2) CLEAR_PED_TASKS_IMMEDIATELY(pedRival2) TASK_PLAY_ANIM_ADVANCED(pedRival2, sAnimDictCar3, "racer_argue_action_02", <<2581.546, 358.981, 107.662>>, <<0.0, 0.0, 90.0>>, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_EXIT_AFTER_INTERRUPTED | AF_USE_MOVER_EXTRACTION) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedRival2) ENDIF START_PLAYBACK_RECORDED_VEHICLE(vehPlayer, 001, sCarrecGasStation) SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehPlayer, 1000) SET_PLAYBACK_SPEED(vehPlayer, 0.75) FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehPlayer) SET_CAM_PARAMS(camMain, <<2564.070313, 365.760864, 110.288490>>, <<-7.603287, -0.187008, -134.635147>>, 27.323626) SET_CAM_PARAMS(camMain, <<2564.047852, 365.790039, 109.911957>>, <<-10.087912, 0.0, -122.954353>>, 27.323626, 2500, GRAPH_TYPE_DECEL, GRAPH_TYPE_DECEL) WAIT_WITH_DEATH_CHECKS(0) IF DOES_ENTITY_EXIST(pedRival1) IF IS_ENTITY_PLAYING_ANIM(pedRival1, sAnimDictCar3, "racer_argue_action_01") //SET_ENTITY_ANIM_CURRENT_TIME(pedRival1, sAnimDictCar3, "racer_argue_action_01", CLAMP((1.0 / GET_ENTITY_ANIM_TOTAL_TIME(pedRival1, sAnimDictCar3, "racer_argue_action_01")) * (GET_ENTITY_ANIM_TOTAL_TIME(pedRival1, sAnimDictCar3, "racer_argue_action_01") - GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(002, sCarrecGasStation)), 0.0, 1.0)) SET_ENTITY_ANIM_CURRENT_TIME(pedRival1, sAnimDictCar3, "racer_argue_action_01", 0.7) ENDIF ENDIF IF DOES_ENTITY_EXIST(pedRival2) IF IS_ENTITY_PLAYING_ANIM(pedRival2, sAnimDictCar3, "racer_argue_action_02") //SET_ENTITY_ANIM_CURRENT_TIME(pedRival2, sAnimDictCar3, "racer_argue_action_02", CLAMP((1.0 / GET_ENTITY_ANIM_TOTAL_TIME(pedRival2, sAnimDictCar3, "racer_argue_action_02")) * (GET_ENTITY_ANIM_TOTAL_TIME(pedRival2, sAnimDictCar3, "racer_argue_action_02") - GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(002, sCarrecGasStation)), 0.0, 1.0)) SET_ENTITY_ANIM_CURRENT_TIME(pedRival2, sAnimDictCar3, "racer_argue_action_02", 0.7) ENDIF ENDIF SET_LABEL_AS_TRIGGERED("FranklinExitCar", TRUE) ADVANCE_CUTSCENE() ENDIF ENDIF // ELSE // IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<2571.3267, 360.4416, 107.4570>>, <<3.0, 3.0, 3.0>>) // IF IS_VEHICLE_STOPPED(vehPlayer) // OR GET_ENTITY_SPEED(vehPlayer) < 1.0 // SET_LABEL_AS_TRIGGERED("FranklinExitCar", TRUE) // // ADVANCE_CUTSCENE() // ENDIF // ENDIF // ENDIF BREAK CASE 1 IF NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPlayer) OR (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPlayer) AND GET_TIME_POSITION_IN_RECORDING(vehPlayer) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING_ID(GET_CURRENT_PLAYBACK_FOR_VEHICLE(vehPlayer)) / 100) * 90) IF HAS_LABEL_BEEN_TRIGGERED("FranklinExitCar") TASK_LEAVE_VEHICLE(PLAYER_PED(CHAR_FRANKLIN), vehPlayer, ECF_DONT_WAIT_FOR_VEHICLE_TO_STOP) WAIT_WITH_DEATH_CHECKS(1000) ENDIF ADVANCE_STAGE() ENDIF BREAK ENDSWITCH IF DOES_ENTITY_EXIST(pedRival1) AND NOT IS_PED_INJURED(pedRival1) AND DOES_ENTITY_EXIST(pedRival2) AND NOT IS_PED_INJURED(pedRival2) PRINTLN("GET_ENTITY_HEADING(PLAYER_PED_ID()) = ", GET_ENTITY_HEADING(PLAYER_PED_ID())) PRINTLN("GET_HEADING_BETWEEN_VECTORS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<2581.719727, 336.251709, 113.443291>>) = ", GET_HEADING_BETWEEN_VECTORS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<2581.719727, 336.251709, 113.443291>>)) IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_MCS1_LI") IF IS_ENTITY_PLAYING_ANIM(pedRival1, sAnimDictCar3, "racer_argue_action_01") OR IS_ENTITY_PLAYING_ANIM(pedRival2, sAnimDictCar3, "racer_argue_action_02") IF GET_GAME_TIMER() - i_CST3_MCS1_AnimStartTime > i_CST3_MCS1_DialogueDelay IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF (IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<2581.719727, 336.251709, 112.443291>>, <<25.0, 35.0, 8.0>>) AND GET_ENTITY_SPEED(vehPlayer) <= 25.0 OR IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<2581.719727, 336.251709, 112.443291>>, <<35.0, 60.0, 8.0>>) AND GET_ENTITY_SPEED(vehPlayer) > 25.0) ADD_PED_FOR_DIALOGUE(sPedsForConversation, 4, pedRival1, "CST3RACER1") ADD_PED_FOR_DIALOGUE(sPedsForConversation, 5, pedRival2, "CST3RACER2") i_CST3_MCS1_DialogueDelay = 0 i_CST3_MCS1_AnimStartTime = 0 CREATE_CONVERSATION_ADV("CST3_MCS1_LI", DEFAULT, DEFAULT, DO_NOT_DISPLAY_SUBTITLES) //CST3_MCS3_LI ENDIF ENDIF ENDIF ENDIF ENDIF IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_IN_VEHICLE) <> CAM_VIEW_MODE_FIRST_PERSON IF (IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<2581.719727, 336.251709, 112.443291>>, <<25.0, 35.0, 8.0>>) AND GET_ENTITY_SPEED(vehPlayer) <= 25.0 OR IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<2581.719727, 336.251709, 112.443291>>, <<35.0, 60.0, 8.0>>) AND GET_ENTITY_SPEED(vehPlayer) > 25.0) AND IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehPlayer) AND GET_ENTITY_HEADING(PLAYER_PED_ID()) > WRAP(GET_HEADING_BETWEEN_VECTORS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<2581.719727, 336.251709, 113.443291>>) - 30.0, 0.0, 360.0) AND GET_ENTITY_HEADING(PLAYER_PED_ID()) < WRAP(GET_HEADING_BETWEEN_VECTORS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<2581.719727, 336.251709, 113.443291>>) + 30.0, 0.0, 360.0) IF NOT IS_GAMEPLAY_HINT_ACTIVE() // SET_GAMEPLAY_HINT_CAMERA_BLEND_TO_FOLLOW_PED_MEDIUM_VIEW_MODE(TRUE) SET_GAMEPLAY_COORD_HINT(GET_ENTITY_COORDS(vehRival1), -1, 1500, DEFAULT, HINTTYPE_NO_FOV) // SET_GAMEPLAY_HINT_FOLLOW_DISTANCE_SCALAR(0.70) // SET_GAMEPLAY_HINT_CAMERA_RELATIVE_SIDE_OFFSET(0.030) // SET_GAMEPLAY_HINT_CAMERA_RELATIVE_VERTICAL_OFFSET(-0.02) // SET_GAMEPLAY_HINT_FOV(30.0) ENDIF ELSE IF IS_GAMEPLAY_HINT_ACTIVE() STOP_GAMEPLAY_HINT(FALSE) ENDIF ENDIF ENDIF ENDIF IF DOES_ENTITY_EXIST(pedDevin) AND NOT IS_PED_INJURED(pedDevin) AND DOES_ENTITY_EXIST(vehDevin) AND NOT IS_ENTITY_DEAD(vehDevin) IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(pedDevin)) > 200.0 SET_PED_AS_NO_LONGER_NEEDED(pedDevin) SET_VEHICLE_AS_NO_LONGER_NEEDED(vehDevin) ENDIF ENDIF IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<2597.918945, 361.818237, 106.427612>>) < DEFAULT_CUTSCENE_LOAD_DIST AND NOT IS_PLAYER_CHANGING_CLOTHES() IF DOES_ENTITY_EXIST(vehRival1) AND DOES_ENTITY_EXIST(pedRival1) AND DOES_ENTITY_EXIST(vehRival2) AND DOES_ENTITY_EXIST(pedRival2) //Cutscene REQUEST_CUTSCENE("Car_steal_3_mcs_1") //Request Cutscene Variations - Car_steal_3_mcs_1 IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Franklin", PLAYER_PED(CHAR_FRANKLIN)) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Racer_that_dies", pedRival1) SET_CUTSCENE_PED_COMPONENT_VARIATION("Racer_that_dies", PED_COMP_SPECIAL, 1, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Racer_that_runsaway", pedRival2) ENDIF ENDIF ELIF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<2597.918945, 361.818237, 106.427612>>) > DEFAULT_CUTSCENE_UNLOAD_DIST OR IS_PLAYER_CHANGING_CLOTHES() IF HAS_CUTSCENE_LOADED() REMOVE_CUTSCENE() ENDIF ENDIF IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<2597.918945, 361.818237, 106.427612>>) < 300.0 IF HAS_ANIM_DICT_LOADED_CHECK(sAnimDictCar3) IF HAS_MODEL_LOADED_CHECK(ENTITYXF) IF NOT DOES_ENTITY_EXIST(vehRival1) //Spawn Rival1 vehRival1 = CREATE_CAR_STEAL_STRAND_CAR(ENTITYXF, vRival1Start, fRival1Start) //SPAWN_VEHICLE(vehRival1, ENTITYXF, vRival1Start, fRival1Start, CARSTEAL_COLOURS_ENTITYXF) SET_VEHICLE_AS_RESTRICTED(vehRival1, 0) SET_VEHICLE_HAS_STRONG_AXLES(vehRival1, TRUE) SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehRival1, TRUE) SET_VEHICLE_DOORS_LOCKED(vehRival1, VEHICLELOCK_LOCKOUT_PLAYER_ONLY) //VEHICLELOCK_LOCKED) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehRival1, SC_DOOR_FRONT_LEFT, FALSE) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehRival1, SC_DOOR_FRONT_RIGHT, FALSE) SET_MODEL_AS_NO_LONGER_NEEDED(ENTITYXF) ENDIF ENDIF IF HAS_MODEL_LOADED_CHECK(IG_CAR3GUY1) IF NOT DOES_ENTITY_EXIST(pedRival1) SPAWN_PED(pedRival1, IG_CAR3GUY1, <<2581.546, 358.981, 107.662>>) //SET_PED_INTO_VEHICLE(pedRival1, vehRival1, VS_DRIVER) SET_PED_RELATIONSHIP_GROUP_HASH(pedRival1, relGroupEnemy) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedRival1, TRUE) SET_MODEL_AS_NO_LONGER_NEEDED(IG_CAR3GUY1) TASK_PLAY_ANIM_ADVANCED(pedRival1, sAnimDictCar3, "racer_argue_01", <<2581.546, 358.981, 107.662>>, <<0.0, 0.0, 90.0>>, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_LOOPING | AF_EXIT_AFTER_INTERRUPTED) ADD_PED_FOR_DIALOGUE(sPedsForConversation, 4, pedRival1, "CST3RACER1") ENDIF ENDIF IF HAS_MODEL_LOADED_CHECK(CHEETAH) IF NOT DOES_ENTITY_EXIST(vehRival2) //Spawn Rival2 vehRival2 = CREATE_CAR_STEAL_STRAND_CAR(CHEETAH, vRival2Start, fRival2Start) //SPAWN_VEHICLE(vehRival2, CHEETAH, vRival2Start, fRival2Start, CARSTEAL_COLOURS_CHEETAH) SET_VEHICLE_AS_RESTRICTED(vehRival2, 1) SET_VEHICLE_HAS_STRONG_AXLES(vehRival2, TRUE) SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehRival2, TRUE) SET_VEHICLE_DOORS_LOCKED(vehRival2, VEHICLELOCK_LOCKOUT_PLAYER_ONLY) //VEHICLELOCK_LOCKED) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehRival2, SC_DOOR_FRONT_LEFT, FALSE) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehRival2, SC_DOOR_FRONT_RIGHT, FALSE) SET_MODEL_AS_NO_LONGER_NEEDED(CHEETAH) ENDIF ENDIF IF HAS_MODEL_LOADED_CHECK(IG_CAR3GUY2) IF NOT DOES_ENTITY_EXIST(pedRival2) SPAWN_PED(pedRival2, IG_CAR3GUY2, <<2581.546, 358.981, 107.662>>) SET_PED_COMPONENT_VARIATION(pedRival2, PED_COMP_HEAD, 1, 0) SET_PED_COMPONENT_VARIATION(pedRival2, PED_COMP_TORSO, 0, 0) SET_PED_COMPONENT_VARIATION(pedRival2, PED_COMP_LEG, 0, 0) SET_PED_PROP_INDEX(pedRival2, ANCHOR_EYES, 0) //SET_PED_INTO_VEHICLE(pedRival2, vehRival2, VS_DRIVER) SET_PED_RELATIONSHIP_GROUP_HASH(pedRival2, relGroupEnemy) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedRival2, TRUE) SET_MODEL_AS_NO_LONGER_NEEDED(IG_CAR3GUY2) TASK_PLAY_ANIM_ADVANCED(pedRival2, sAnimDictCar3, "racer_argue_02", <<2581.546, 358.981, 107.662>>, <<0.0, 0.0, 90.0>>, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_LOOPING | AF_EXIT_AFTER_INTERRUPTED) ADD_PED_FOR_DIALOGUE(sPedsForConversation, 5, pedRival2, "CST3RACER2") ENDIF ENDIF ENDIF HAS_RECORDING_LOADED_CHECK(500, sCarrecSetup) HAS_RECORDING_LOADED_CHECK(501, sCarrecSetup) ENDIF IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<2597.918945, 361.818237, 106.427612>>) < 100.0 IF DOES_ENTITY_EXIST(vehRival1) AND NOT IS_ENTITY_DEAD(vehRival1) AND DOES_ENTITY_EXIST(vehRival2) AND NOT IS_ENTITY_DEAD(vehRival2) AND DOES_ENTITY_EXIST(pedRival1) AND NOT IS_PED_INJURED(pedRival1) AND DOES_ENTITY_EXIST(pedRival2) AND NOT IS_PED_INJURED(pedRival2) IF HAS_COLLISION_LOADED_AROUND_ENTITY(vehRival1) AND HAS_COLLISION_LOADED_AROUND_ENTITY(vehRival2) AND HAS_COLLISION_LOADED_AROUND_ENTITY(pedRival1) AND HAS_COLLISION_LOADED_AROUND_ENTITY(pedRival2) IF IS_PED_TRYING_TO_ENTER_A_LOCKED_VEHICLE(PLAYER_PED_ID()) AND (GET_VEHICLE_PED_IS_USING(PLAYER_PED_ID()) = vehRival1 OR GET_VEHICLE_PED_IS_USING(PLAYER_PED_ID()) = vehRival2) OR (NOT IS_ENTITY_DEAD(vehRival1) AND HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(vehRival1, PLAYER_PED_ID())) OR (NOT IS_ENTITY_DEAD(vehRival2) AND HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(vehRival2, PLAYER_PED_ID())) OR (DOES_ENTITY_EXIST(vehRival1) AND NOT IS_ENTITY_AT_COORD(vehRival1, vRival1Start, <<0.1, 0.1, 2.0>>) OR (IS_PED_ON_VEHICLE(PLAYER_PED_ID()) AND IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehRival1, <<0.0, 2.15, -2.0>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehRival1, <<0.0, -2.07, 5.0>>), 2.0))) OR (DOES_ENTITY_EXIST(vehRival2) AND NOT IS_ENTITY_AT_COORD(vehRival2, vRival2Start, <<0.1, 0.1, 2.0>>) OR (IS_PED_ON_VEHICLE(PLAYER_PED_ID()) AND IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehRival2, <<0.0, 2.63, -2.0>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehRival2, <<0.0, -2.14, 5.0>>), 2.0))) OR (DOES_ENTITY_EXIST(pedRival1) AND NOT IS_ENTITY_PLAYING_ANIM(pedRival1, sAnimDictCar3, "racer_argue_01") AND NOT IS_ENTITY_PLAYING_ANIM(pedRival1, sAnimDictCar3, "racer_argue_action_01") AND IS_PED_RAGDOLL(pedRival1)) OR (DOES_ENTITY_EXIST(pedRival2) AND NOT IS_ENTITY_PLAYING_ANIM(pedRival2, sAnimDictCar3, "racer_argue_02") AND NOT IS_ENTITY_PLAYING_ANIM(pedRival2, sAnimDictCar3, "racer_argue_action_02") AND IS_PED_RAGDOLL(pedRival2)) IF DOES_ENTITY_EXIST(pedRival1) AND NOT IS_PED_INJURED(pedRival1) AND (GET_SCRIPT_TASK_STATUS(pedRival1, SCRIPT_TASK_VEHICLE_DRIVE_WANDER) = PERFORMING_TASK OR (GET_SCRIPT_TASK_STATUS(pedRival1, SCRIPT_TASK_PERFORM_SEQUENCE) = PERFORMING_TASK AND GET_SEQUENCE_PROGRESS(pedRival1) = 2)) OR DOES_ENTITY_EXIST(pedRival2) AND NOT IS_PED_INJURED(pedRival2) AND (GET_SCRIPT_TASK_STATUS(pedRival2, SCRIPT_TASK_VEHICLE_DRIVE_WANDER) = PERFORMING_TASK OR (GET_SCRIPT_TASK_STATUS(pedRival2, SCRIPT_TASK_PERFORM_SEQUENCE) = PERFORMING_TASK AND GET_SEQUENCE_PROGRESS(pedRival2) = 2)) eMissionFail = failRacerLeft ELSE eMissionFail = failRacerSpooked ENDIF IF DOES_ENTITY_EXIST(pedRival1) AND NOT IS_PED_INJURED(pedRival1) IF GET_SCRIPT_TASK_STATUS(pedRival1, SCRIPT_TASK_REACT_AND_FLEE_PED) != PERFORMING_TASK AND GET_SCRIPT_TASK_STATUS(pedRival1, SCRIPT_TASK_VEHICLE_MISSION) != PERFORMING_TASK CLEAR_PED_TASKS(pedRival1) IF DOES_ENTITY_EXIST(vehRival1) AND NOT IS_ENTITY_DEAD(vehRival1) AND IS_PED_IN_VEHICLE(pedRival1, vehRival1) TASK_VEHICLE_MISSION(pedRival1, vehRival1, vehPlayer, MISSION_FLEE, 50.0, DRIVINGMODE_PLOUGHTHROUGH, 1.0, 1.0) ELSE TASK_REACT_AND_FLEE_PED(pedRival1, PLAYER_PED_ID()) ENDIF SET_PED_KEEP_TASK(pedRival1, TRUE) ENDIF ENDIF IF DOES_ENTITY_EXIST(pedRival2) AND NOT IS_PED_INJURED(pedRival2) IF GET_SCRIPT_TASK_STATUS(pedRival2, SCRIPT_TASK_REACT_AND_FLEE_PED) != PERFORMING_TASK AND GET_SCRIPT_TASK_STATUS(pedRival2, SCRIPT_TASK_VEHICLE_MISSION) != PERFORMING_TASK CLEAR_PED_TASKS(pedRival2) IF DOES_ENTITY_EXIST(vehRival2) AND NOT IS_ENTITY_DEAD(vehRival2) AND IS_PED_IN_VEHICLE(pedRival2, vehRival2) TASK_VEHICLE_MISSION(pedRival2, vehRival2, vehPlayer, MISSION_FLEE, 50.0, DRIVINGMODE_PLOUGHTHROUGH, 1.0, 1.0) ELSE TASK_REACT_AND_FLEE_PED(pedRival2, PLAYER_PED_ID()) ENDIF SET_PED_KEEP_TASK(pedRival2, TRUE) ENDIF ENDIF WAIT_WITH_DEATH_CHECKS(500) missionFailed() ENDIF ENDIF ENDIF ENDIF IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<2578.794678, 398.877350, 106.457253>>, <<2576.777100, 331.041382, 117.452728>>, 75.0) //<<2597.918945, 361.818237, 106.427612>>, <<2558.556152, 363.878754, 112.656685>>, 30.0) AND NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID()) // AND IS_PED_SITTING_IN_VEHICLE(PLAYER_PED_ID(), vehPlayer) // IF CAN_PLAYER_START_CUTSCENE() // IF BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(vehPlayer, 20.0) // SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) // ENDIF // ENDIF IF DOES_ENTITY_EXIST(pedRival1) IF IS_ENTITY_PLAYING_ANIM(pedRival1, sAnimDictCar3, "racer_argue_01") OPEN_SEQUENCE_TASK(seqMain) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictCar3, "racer_argue_action_01", <<2581.546, 358.981, 107.662>>, <<0.0, 0.0, 90.0>>, SLOW_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_EXIT_AFTER_INTERRUPTED) TASK_ENTER_VEHICLE(NULL, vehRival1, DEFAULT_TIME_NEVER_WARP, VS_DRIVER, PEDMOVE_WALK) TASK_VEHICLE_DRIVE_WANDER(NULL, vehRival1, 30.0, DRIVINGMODE_AVOIDCARS_STOPFORPEDS_OBEYLIGHTS) CLOSE_SEQUENCE_TASK(seqMain) i_CST3_MCS1_AnimStartTime = GET_GAME_TIMER() i_CST3_MCS1_DialogueDelay = 7500 TASK_PERFORM_SEQUENCE(pedRival1, seqMain) CLEAR_SEQUENCE_TASK(seqMain) ENDIF ENDIF IF DOES_ENTITY_EXIST(pedRival2) IF IS_ENTITY_PLAYING_ANIM(pedRival2, sAnimDictCar3, "racer_argue_02") OPEN_SEQUENCE_TASK(seqMain) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictCar3, "racer_argue_action_02", <<2581.546, 358.981, 107.662>>, <<0.0, 0.0, 90.0>>, SLOW_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_EXIT_AFTER_INTERRUPTED) TASK_ENTER_VEHICLE(NULL, vehRival2, DEFAULT_TIME_NEVER_WARP, VS_DRIVER, PEDMOVE_WALK) TASK_VEHICLE_DRIVE_WANDER(NULL, vehRival2, 30.0, DRIVINGMODE_AVOIDCARS_STOPFORPEDS_OBEYLIGHTS) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(pedRival2, seqMain) CLEAR_SEQUENCE_TASK(seqMain) i_CST3_MCS1_AnimStartTime = GET_GAME_TIMER() i_CST3_MCS1_DialogueDelay = 7500 ENDIF ENDIF ENDIF ENDIF IF CLEANUP_STAGE() //Cleanup (Blips, peds, variables etc.) IF IS_NEW_LOAD_SCENE_ACTIVE() NEW_LOAD_SCENE_STOP() ENDIF //Audio Scene IF IS_AUDIO_SCENE_ACTIVE("CAR_1_GET_TO_RACE") STOP_AUDIO_SCENE("CAR_1_GET_TO_RACE") ENDIF IF IS_AUDIO_SCENE_ACTIVE("CAR_1_PARK_UP_CUTSCENE") STOP_AUDIO_SCENE("CAR_1_PARK_UP_CUTSCENE") ENDIF CLEAR_MISSION_LOCATE_STUFF(sLocatesData, TRUE) SET_PED_CONFIG_FLAG(PLAYER_PED_ID(), PCF_WillFlyThroughWindscreen, FALSE) KILL_PHONE_CONVERSATION() CLEAR_PRINTS() CLEAR_HELP(TRUE) KILL_FACE_TO_FACE_CONVERSATION() SAFE_REMOVE_BLIP(blipStart) SAFE_DELETE_PED(pedDevin) SAFE_DELETE_PED(pedMolly) SAFE_DELETE_VEHICLE(vehDevin) SAFE_DELETE_VEHICLE(vehCutscene) eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1) ENDIF ENDPROC PROC CutsceneRace() IF INIT_STAGE() //Checkpoint SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(ENUM_TO_INT(replayGarage), "stageRace", FALSE, FALSE, PLAYER_PED(CHAR_FRANKLIN)) //Wanted SET_MAX_WANTED_LEVEL(0) SET_WANTED_LEVEL_MULTIPLIER(0.0) //Ambulances etc. ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE, FALSE) ENABLE_DISPATCH_SERVICE(DT_POLICE_HELICOPTER, FALSE) ENABLE_DISPATCH_SERVICE(DT_FIRE_DEPARTMENT, FALSE) ENABLE_DISPATCH_SERVICE(DT_SWAT_AUTOMOBILE, FALSE) ENABLE_DISPATCH_SERVICE(DT_AMBULANCE_DEPARTMENT, FALSE) IF NOT DOES_ENTITY_EXIST(vehRival1) //Spawn Rival1 vehRival1 = CREATE_CAR_STEAL_STRAND_CAR(ENTITYXF, vRival1Start, fRival1Start) //SPAWN_VEHICLE(vehRival1, ENTITYXF, vRival1Start, fRival1Start, CARSTEAL_COLOURS_ENTITYXF) SET_VEHICLE_AS_RESTRICTED(vehRival1, 0) SET_VEHICLE_HAS_STRONG_AXLES(vehRival1, TRUE) SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehRival1, TRUE) SET_VEHICLE_DOORS_LOCKED(vehRival1, VEHICLELOCK_LOCKED) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehRival1, SC_DOOR_FRONT_LEFT, FALSE) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehRival1, SC_DOOR_FRONT_RIGHT, FALSE) SET_MODEL_AS_NO_LONGER_NEEDED(ENTITYXF) ENDIF IF NOT DOES_ENTITY_EXIST(pedRival1) SPAWN_PED(pedRival1, IG_CAR3GUY1, GET_ENTITY_COORDS(vehRival1)) SET_PED_INTO_VEHICLE(pedRival1, vehRival1, VS_DRIVER) SET_PED_RELATIONSHIP_GROUP_HASH(pedRival1, relGroupEnemy) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedRival1, TRUE) SET_MODEL_AS_NO_LONGER_NEEDED(IG_CAR3GUY1) ENDIF IF NOT DOES_ENTITY_EXIST(vehRival2) //Spawn Rival2 vehRival2 = CREATE_CAR_STEAL_STRAND_CAR(CHEETAH, vRival2Start, fRival2Start) //SPAWN_VEHICLE(vehRival2, CHEETAH, vRival2Start, fRival2Start, CARSTEAL_COLOURS_CHEETAH) SET_VEHICLE_AS_RESTRICTED(vehRival2, 1) SET_VEHICLE_HAS_STRONG_AXLES(vehRival2, TRUE) SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehRival2, TRUE) SET_VEHICLE_DOORS_LOCKED(vehRival2, VEHICLELOCK_LOCKED) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehRival2, SC_DOOR_FRONT_LEFT, FALSE) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehRival2, SC_DOOR_FRONT_RIGHT, FALSE) SET_MODEL_AS_NO_LONGER_NEEDED(CHEETAH) ENDIF IF NOT DOES_ENTITY_EXIST(pedRival2) SPAWN_PED(pedRival2, IG_CAR3GUY2, GET_ENTITY_COORDS(vehRival2)) SET_PED_COMPONENT_VARIATION(pedRival2, PED_COMP_HEAD, 1, 0) SET_PED_COMPONENT_VARIATION(pedRival2, PED_COMP_TORSO, 0, 0) SET_PED_COMPONENT_VARIATION(pedRival2, PED_COMP_LEG, 0, 0) SET_PED_PROP_INDEX(pedRival2, ANCHOR_EYES, 0) SET_PED_INTO_VEHICLE(pedRival2, vehRival2, VS_DRIVER) SET_PED_RELATIONSHIP_GROUP_HASH(pedRival2, relGroupEnemy) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedRival2, TRUE) SET_MODEL_AS_NO_LONGER_NEEDED(IG_CAR3GUY2) ENDIF ADD_PED_FOR_DIALOGUE(sPedsForConversation, 4, pedRival1, "CST3RACER1") ADD_PED_FOR_DIALOGUE(sPedsForConversation, 5, pedRival2, "CST3RACER2") #IF IS_DEBUG_BUILD IF bAutoSkipping = FALSE #ENDIF SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) fPlaybackSpeed = 1.0 //Radar bRadar = FALSE //Cutscene REQUEST_CUTSCENE("Car_steal_3_mcs_1", CUTSCENE_REQUESTED_FROM_Z_SKIP) #IF IS_DEBUG_BUILD ENDIF #ENDIF SET_CINEMATIC_BUTTON_ACTIVE(FALSE) //Audio LOAD_AUDIO(CAR1_MISSION_START) IF SKIPPED_STAGE() //Camera Behind Player SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) //Fade In // IF IS_SCREEN_FADED_OUT() // DO_SCREEN_FADE_IN(500) // ENDIF ENDIF ELSE //Request Cutscene Variations - Car_steal_3_mcs_1 IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Franklin", PLAYER_PED(CHAR_FRANKLIN)) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Racer_that_dies", pedRival1) SET_CUTSCENE_PED_COMPONENT_VARIATION("Racer_that_dies", PED_COMP_SPECIAL, 1, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Racer_that_runsaway", pedRival2) ENDIF SWITCH iCutsceneStage CASE 0 IF HAS_CUTSCENE_LOADED_WITH_FAILSAFE() CLEAR_PRINTS() CLEAR_HELP(TRUE) KILL_FACE_TO_FACE_CONVERSATION() // REGISTER_ENTITY_FOR_CUTSCENE(PLAYER_PED_ID(), "PLAYER_TWO", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(vehPlayer, "Franklins_car", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(vehRival1, "Car_Racer_runsaway", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(vehRival2, "Car_Racer_dies", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(pedRival1, "Racer_that_dies", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(pedRival2, "Racer_that_runsaway", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) SET_VEHICLE_DOOR_CONTROL(vehPlayer, SC_DOOR_FRONT_LEFT, DT_DOOR_INTACT, 0.0) SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE) //SET_ROADS_IN_AREA(<<925.3424, 52.7882, 79.7647>> - <<1000.0, 1000.0, 1000.0>>, <<925.3424, 52.7882, 79.7647>> + <<1000.0, 1000.0, 1000.0>>, FALSE) START_CUTSCENE() REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST) WAIT_WITH_DEATH_CHECKS(0) // IF NOT bVideoRecording // REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGH) // // bVideoRecording = TRUE // ENDIF STOP_GAMEPLAY_HINT(TRUE) RENDER_SCRIPT_CAMS(FALSE, FALSE) CLEAR_AREA(<<2570.5767, 364.8711, 107.4569>>, 1000.0, TRUE) IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(500) ENDIF ADVANCE_CUTSCENE() ENDIF BREAK CASE 1 IF IS_CUTSCENE_PLAYING() SET_SRL_POST_CUTSCENE_CAMERA(<<2571.300049, 354.893677, 110.035751>>, NORMALISE_VECTOR(<<2215.980591, 0.427734, -0.092331>>)) //Rotation <<-12.179845, 0.0, -0.274823>> ENDIF //Traffic SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME(0.0) IF CAN_SET_EXIT_STATE_FOR_CAMERA() SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Franklins_car") //IF WAS_CUTSCENE_SKIPPED() // SET_VEHICLE_POSITION(vehPlayer, <<2570.5767, 364.8711, 107.4569>>, 357.8433) //ENDIF REPLAY_STOP_EVENT() IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehPlayer) SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehPlayer) ENDIF SET_VEHICLE_DOORS_SHUT(vehPlayer, TRUE) //SET_VEHICLE_ON_GROUND_PROPERLY(vehPlayer) // //ACTIVATE_PHYSICS(vehPlayer) SET_LABEL_AS_TRIGGERED("WheelCompression[vehPlayer](Car_steal_3_mcs_1)", TRUE) ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("WheelCompression[vehPlayer](Car_steal_3_mcs_1)") SET_VEHICLE_USE_CUTSCENE_WHEEL_COMPRESSION(vehPlayer) ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("RacerRev") IF REQUEST_SCRIPT_AUDIO_BANK("RACE_IGNITIONS") IF GET_CUTSCENE_TIME() > ROUND(12.384283 * 1000.0) PLAY_SOUND_FROM_ENTITY(-1, "CAR_STEAL_1_IGNITIONS", vehRival1, "CAR_STEAL_1_SOUNDSET") SET_LABEL_AS_TRIGGERED("RacerRev", TRUE) ENDIF ENDIF ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Car_Racer_runsaway") START_PLAYBACK_RECORDED_VEHICLE(vehRival1, 500, sCarrecSetup) SET_PLAYBACK_SPEED(vehRival1, 0.0) FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehRival1) SET_VEHICLE_DOORS_SHUT(vehRival1, TRUE) SET_LABEL_AS_TRIGGERED("Car_steal_3_mcs_1:Car_Racer_runsaway", TRUE) ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Car_Racer_dies") START_PLAYBACK_RECORDED_VEHICLE(vehRival2, 501, sCarrecSetup) SET_PLAYBACK_SPEED(vehRival2, 0.0) FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehRival2) SET_VEHICLE_DOORS_SHUT(vehRival2, TRUE) SET_LABEL_AS_TRIGGERED("Car_steal_3_mcs_1:Car_Racer_dies", TRUE) ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Racer_that_runsaway") SET_LABEL_AS_TRIGGERED("Car_steal_3_mcs_1:Racer_that_runsaway", TRUE) ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Racer_that_dies") SET_LABEL_AS_TRIGGERED("Car_steal_3_mcs_1:Racer_that_dies", TRUE) ENDIF IF HAS_LABEL_BEEN_TRIGGERED("Car_steal_3_mcs_1:Car_Racer_runsaway") AND HAS_LABEL_BEEN_TRIGGERED("Car_steal_3_mcs_1:Racer_that_runsaway") IF NOT IS_PED_IN_VEHICLE(pedRival1, vehRival1) SET_PED_INTO_VEHICLE(pedRival1, vehRival1) ENDIF ENDIF IF HAS_LABEL_BEEN_TRIGGERED("Car_steal_3_mcs_1:Car_Racer_dies") AND HAS_LABEL_BEEN_TRIGGERED("Car_steal_3_mcs_1:Racer_that_dies") IF NOT IS_PED_IN_VEHICLE(pedRival2, vehRival2) SET_PED_INTO_VEHICLE(pedRival2, vehRival2) ENDIF ENDIF IF HAS_CUTSCENE_FINISHED() IF bVideoRecording REPLAY_STOP_EVENT() bVideoRecording = FALSE ENDIF //Audio PLAY_AUDIO(CAR1_MISSION_START) ADVANCE_STAGE() ENDIF BREAK ENDSWITCH ENDIF IF CLEANUP_STAGE() //Cleanup (Blips, peds, variables etc.) RENDER_SCRIPT_CAMS(FALSE, FALSE) REMOVE_CUTSCENE() WHILE HAS_CUTSCENE_LOADED() WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) //SET_ROADS_BACK_TO_ORIGINAL(<<925.3424, 52.7882, 79.7647>> - <<1000.0, 1000.0, 1000.0>>, <<925.3424, 52.7882, 79.7647>> + <<1000.0, 1000.0, 1000.0>>) //CLEAR_AREA(<<925.3424, 52.7882, 79.7647>>, 1000.0, TRUE) STOP_GAMEPLAY_HINT(TRUE) CLEAR_TEXT() bRadar = TRUE eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1) ENDIF ENDPROC PROC Race() IF INIT_STAGE() //Checkpoint SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(ENUM_TO_INT(replayGarage), "stageRace", FALSE, FALSE, PLAYER_PED(CHAR_FRANKLIN)) //Wanted SET_MAX_WANTED_LEVEL(0) SET_WANTED_LEVEL_MULTIPLIER(0.0) //Ambulances etc. ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE, FALSE) ENABLE_DISPATCH_SERVICE(DT_POLICE_HELICOPTER, FALSE) ENABLE_DISPATCH_SERVICE(DT_FIRE_DEPARTMENT, FALSE) ENABLE_DISPATCH_SERVICE(DT_SWAT_AUTOMOBILE, FALSE) ENABLE_DISPATCH_SERVICE(DT_AMBULANCE_DEPARTMENT, FALSE) SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) //Uber Playback fPlaybackSpeed = 1.0 INITIALISE_UBER_PLAYBACK(sCarrecSetup, 500) UberSetupVariables() SET_VEHICLE_STRONG(vehPlayer, TRUE) SET_VEHICLE_STRONG(vehRival1, TRUE) SET_VEHICLE_STRONG(vehRival2, TRUE) SET_VEHICLE_DOORS_SHUT(vehPlayer, TRUE) SET_VEHICLE_DOORS_SHUT(vehRival1, TRUE) SET_VEHICLE_DOORS_SHUT(vehRival2, TRUE) SET_ENTITY_COLLISION(vehPlayer, TRUE) SET_ENTITY_COLLISION(vehRival1, TRUE) SET_ENTITY_COLLISION(vehRival2, TRUE) SET_VEHICLE_IS_RACING(vehPlayer, TRUE) SET_VEHICLE_IS_RACING(vehRival1, TRUE) SET_VEHICLE_IS_RACING(vehRival2, TRUE) IF DOES_ENTITY_EXIST(pedRival1) IF NOT IS_PED_IN_VEHICLE(pedRival1, vehRival1) SET_PED_INTO_VEHICLE(pedRival1, vehRival1) ENDIF SET_DRIVER_RACING_MODIFIER(pedRival1, 1.0) ENDIF IF DOES_ENTITY_EXIST(pedRival2) IF NOT IS_PED_IN_VEHICLE(pedRival2, vehRival2) SET_PED_INTO_VEHICLE(pedRival2, vehRival2) ENDIF SET_DRIVER_RACING_MODIFIER(pedRival2, 1.0) ENDIF #IF IS_DEBUG_BUILD IF bAutoSkipping = FALSE #ENDIF ADD_ENTITY_TO_AUDIO_MIX_GROUP(vehRival1, "CAR_1_RACERS") ADD_ENTITY_TO_AUDIO_MIX_GROUP(vehRival2, "CAR_1_RACERS") //Audio Scene IF NOT IS_AUDIO_SCENE_ACTIVE("CAR_1_RACE_MAIN") START_AUDIO_SCENE("CAR_1_RACE_MAIN") ENDIF PRINT_ADV("S3_RACE") IF NOT DOES_CAM_EXIST(camCinematic) camCinematic = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA") ENDIF bRadar = TRUE bAbilityUsed = FALSE #IF IS_DEBUG_BUILD ENDIF #ENDIF //Audio PLAY_AUDIO(CAR1_MISSION_START) IF SKIPPED_STAGE() IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehPlayer) SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehPlayer) ENDIF IF NOT IS_PED_IN_VEHICLE(pedRival1, vehRival1) SET_PED_INTO_VEHICLE(pedRival1, vehRival1) ENDIF IF NOT IS_PED_IN_VEHICLE(pedRival2, vehRival2) SET_PED_INTO_VEHICLE(pedRival2, vehRival2) ENDIF SET_VEHICLE_POSITION(vehPlayer, <<2571.3267, 360.4416, 107.4570>>, 359.7253) SET_VEHICLE_POSITION(vehRival1, vRival1Start, fRival1Start) SET_VEHICLE_POSITION(vehRival2, vRival2Start, fRival2Start) //Load Scene IF NOT bReplaySkip LOAD_SCENE_ADV(<<2570.5767, 364.8711, 107.4569>>, 50.0) ENDIF INT iTimeOut = GET_GAME_TIMER() + 5000 WHILE NOT REQUEST_SCRIPT_AUDIO_BANK("RACE_IGNITIONS") AND GET_GAME_TIMER() < iTimeOut WAIT_WITH_DEATH_CHECKS(0) #IF IS_DEBUG_BUILD PRINTLN("REQUEST_SCRIPT_AUDIO_BANK('RACE_IGNITIONS')") #ENDIF PRINTLN("GET_GAME_TIMER() = ", GET_GAME_TIMER(), " | iTimeOut = ", iTimeOut) ENDWHILE #IF IS_DEBUG_BUILD IF GET_GAME_TIMER() > iTimeOut SCRIPT_ASSERT("REQUEST_SCRIPT_AUDIO_BANK('RACE_IGNITIONS') timed out, see log for details.") ENDIF #ENDIF PLAY_SOUND_FROM_ENTITY(-1, "CAR_STEAL_1_IGNITIONS", vehRival1, "CAR_STEAL_1_SOUNDSET") //Camera Behind Player SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) SET_VEHICLE_ON_GROUND_PROPERLY(vehPlayer) ACTIVATE_PHYSICS(vehPlayer) START_PLAYBACK_RECORDED_VEHICLE(vehRival1, 500, sCarrecSetup) SET_PLAYBACK_SPEED(vehRival1, 0.0) FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehRival1) START_PLAYBACK_RECORDED_VEHICLE(vehRival2, 501, sCarrecSetup) SET_PLAYBACK_SPEED(vehRival2, 0.0) FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehRival2) //Audio IF IS_REPLAY_IN_PROGRESS() PLAY_AUDIO(CAR1_MISSION_RESTART) ENDIF WAIT_WITH_DEATH_CHECKS(500) //Fade In IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(500) ENDIF ENDIF ELSE CONTROL_VEHICLE_CHASE_HINT_CAM_IN_VEHICLE(localChaseHintCamStruct, vehRival1, "S3_HELP2") REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME() //Fix for bug 2197058 //Audio Scene IF IS_GAMEPLAY_HINT_ACTIVE() IF NOT IS_AUDIO_SCENE_ACTIVE("CAR_1_RACE_CARS_FOCUS_CAM") START_AUDIO_SCENE("CAR_1_RACE_CARS_FOCUS_CAM") ENDIF ELSE IF IS_AUDIO_SCENE_ACTIVE("CAR_1_RACE_CARS_FOCUS_CAM") STOP_AUDIO_SCENE("CAR_1_RACE_CARS_FOCUS_CAM") ENDIF ENDIF SWITCH iCutsceneStage CASE 0 SET_VEHICLE_ENGINE_ON(vehPlayer, TRUE, TRUE) SET_VEHICLE_ENGINE_ON(vehRival1, TRUE, FALSE) SET_VEHICLE_ENGINE_ON(vehRival2, TRUE, FALSE) IF NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) START_PLAYBACK_RECORDED_VEHICLE(vehRival1, 500, sCarrecSetup) ELSE SET_PLAYBACK_SPEED(vehRival1, 1.0) ENDIF IF NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival2) START_PLAYBACK_RECORDED_VEHICLE(vehRival2, 501, sCarrecSetup) ELSE SET_PLAYBACK_SPEED(vehRival2, 1.0) ENDIF // SET_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehRival1, 1000.0) // SET_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehRival2, 1000.0) // SET_UBER_PLAYBACK_TO_TIME_NOW(vehRival1, 1000.0) ADVANCE_CUTSCENE() BREAK ENDSWITCH IF TIMERA() >= 500 IF NOT SAFE_IS_PLAYER_CONTROL_ON() SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) ENDIF ENDIF IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehPlayer) IF DOES_BLIP_EXIST(blipPlayer) CLEAR_PRINTS() PRINT_ADV("S3_RACE") REMOVE_BLIP(blipPlayer) ENDIF ELSE IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("S3_HELP1") CLEAR_HELP() ENDIF IF NOT DOES_BLIP_EXIST(blipPlayer) CLEAR_PRINTS() PRINT_ADV("CMN_GENGETIN") SAFE_REMOVE_BLIP(blipRival1) SAFE_REMOVE_BLIP(blipRival2) blipPlayer = ADD_BLIP_FOR_ENTITY(vehPlayer) SET_BLIP_AS_FRIENDLY(blipPlayer, TRUE) ENDIF ENDIF //Horn VEHICLE_INDEX vehClosest IF GET_GAME_TIMER() - iClosestVehicleCheckTimer > 200 vehClosest = GET_CLOSEST_VEHICLE(GET_ENTITY_COORDS(PLAYER_PED_ID()), 10.0, DUMMY_MODEL_FOR_SCRIPT, GET_TRAFFIC_VEHICLE_SEARCH_FLAGS()) iClosestVehicleCheckTimer = GET_GAME_TIMER() ENDIF DO_CHASE_HORNS(vehClosest) //Trailers IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) IF DOES_ENTITY_EXIST(SetPieceCarID[1]) IF NOT DOES_ENTITY_EXIST(vehTrailer[0]) SPAWN_VEHICLE(vehTrailer[0], TRAILERS2, GET_POSITION_OF_VEHICLE_RECORDING_ID_AT_TIME(GET_VEHICLE_RECORDING_ID(401, "ALubersetup"), 0.0), 0.0) SET_ENTITY_ROTATION(vehTrailer[0], GET_ROTATION_OF_VEHICLE_RECORDING_ID_AT_TIME(GET_VEHICLE_RECORDING_ID(401, "ALubersetup"), 0.0)) SET_ENTITY_NO_COLLISION_ENTITY(vehTrailer[0], SetPieceCarID[1], FALSE) ENDIF ENDIF IF DOES_ENTITY_EXIST(vehTrailer[0]) IF NOT IS_ENTITY_DEAD(vehTrailer[0]) IF DOES_ENTITY_EXIST(SetPieceCarID[1]) IF NOT IS_ENTITY_DEAD(SetPieceCarID[1]) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(SetPieceCarID[1]) IF NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehTrailer[0]) START_PLAYBACK_RECORDED_VEHICLE(vehTrailer[0], 401, "ALubersetup") ENDIF ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehTrailer[0]) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(SetPieceCarID[1]) SET_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehTrailer[0], GET_TIME_POSITION_IN_RECORDING(SetPieceCarID[1])) ENDIF ELSE IF NOT IS_VEHICLE_ATTACHED_TO_TRAILER(SetPieceCarID[1]) ATTACH_VEHICLE_TO_TRAILER(SetPieceCarID[1], vehTrailer[0]) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF DOES_ENTITY_EXIST(SetPieceCarID[2]) IF NOT DOES_ENTITY_EXIST(vehTrailer[1]) SPAWN_VEHICLE(vehTrailer[1], TRAILERS, GET_POSITION_OF_VEHICLE_RECORDING_ID_AT_TIME(GET_VEHICLE_RECORDING_ID(403, "ALubersetup"), 0.0), 0.0) SET_ENTITY_ROTATION(vehTrailer[1], GET_ROTATION_OF_VEHICLE_RECORDING_ID_AT_TIME(GET_VEHICLE_RECORDING_ID(403, "ALubersetup"), 0.0)) SET_ENTITY_NO_COLLISION_ENTITY(vehTrailer[1], SetPieceCarID[2], FALSE) ENDIF ENDIF IF DOES_ENTITY_EXIST(vehTrailer[1]) IF NOT IS_ENTITY_DEAD(vehTrailer[1]) IF DOES_ENTITY_EXIST(SetPieceCarID[2]) IF NOT IS_ENTITY_DEAD(SetPieceCarID[2]) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(SetPieceCarID[2]) IF NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehTrailer[1]) START_PLAYBACK_RECORDED_VEHICLE(vehTrailer[1], 403, "ALubersetup") ENDIF ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehTrailer[1]) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(SetPieceCarID[2]) SET_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehTrailer[1], GET_TIME_POSITION_IN_RECORDING(SetPieceCarID[2])) ENDIF ELSE IF NOT IS_VEHICLE_ATTACHED_TO_TRAILER(SetPieceCarID[2]) ATTACH_VEHICLE_TO_TRAILER(SetPieceCarID[2], vehTrailer[1]) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF DOES_ENTITY_EXIST(vehTrailer[0]) AND DOES_ENTITY_EXIST(vehTrailer[1]) IF NOT HAS_LABEL_BEEN_TRIGGERED("BetweenTrucks") IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), GET_ENTITY_COORDS(vehTrailer[0], FALSE) - <<0.0, 0.0, 5.0>>, GET_ENTITY_COORDS(vehTrailer[1], FALSE) + <<0.0, 0.0, 5.0>>, 8.0) INFORM_STAT_SYSTEM_OF_BOOL_STAT_HAPPENED(CS1_DROVE_BETWEEN_TRUCKS) REPLAY_RECORD_BACK_FOR_TIME(3.0, 5.0, REPLAY_IMPORTANCE_HIGHEST) IF DOES_ENTITY_EXIST(SetPieceCarID[2]) PLAY_SOUND_FROM_ENTITY(-1, "TRUCK_HORN", SetPieceCarID[2], "CAR_STEAL_1_SOUNDSET") PRINTLN("PLAY_SOUND_FROM_ENTITY(-1, 'TRUCK_HORN', SetPieceCarID[2], 'CAR_STEAL_1_SOUNDSET')") ENDIF IF NOT bVideoRecording REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGH) bVideoRecording = TRUE ENDIF SET_LABEL_AS_TRIGGERED("BetweenTrucks", TRUE) ENDIF ELIF NOT HAS_LABEL_BEEN_TRIGGERED("BetweenBuses") IF bVideoRecording IF NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), GET_ENTITY_COORDS(vehTrailer[0], FALSE) - <<0.0, 0.0, 5.0>>, GET_ENTITY_COORDS(vehTrailer[1], FALSE) + <<0.0, 0.0, 5.0>>, 8.0) REPLAY_STOP_EVENT() bVideoRecording = FALSE ENDIF ENDIF ENDIF ENDIF IF DOES_ENTITY_EXIST(SetPieceCarID[3]) AND DOES_ENTITY_EXIST(SetPieceCarID[4]) IF NOT HAS_LABEL_BEEN_TRIGGERED("BetweenBuses") IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), GET_ENTITY_COORDS(SetPieceCarID[3], FALSE) - <<0.0, 0.0, 5.0>>, GET_ENTITY_COORDS(SetPieceCarID[4], FALSE) + <<0.0, 0.0, 5.0>>, 8.0) INFORM_STAT_SYSTEM_OF_BOOL_STAT_HAPPENED(CS1_DROVE_BETWEEN_BUSES) PLAY_SOUND_FROM_ENTITY(-1, "BUS_HORN", SetPieceCarID[3], "CAR_STEAL_1_SOUNDSET") PRINTLN("PLAY_SOUND_FROM_ENTITY(-1, 'BUS_HORN', SetPieceCarID[3], 'CAR_STEAL_1_SOUNDSET')") REPLAY_RECORD_BACK_FOR_TIME(3.0, 5.0, REPLAY_IMPORTANCE_HIGHEST) IF NOT bVideoRecording REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGH) bVideoRecording = TRUE ENDIF SET_LABEL_AS_TRIGGERED("BetweenBuses", TRUE) ENDIF ELSE IF bVideoRecording IF NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), GET_ENTITY_COORDS(SetPieceCarID[3], FALSE) - <<0.0, 0.0, 5.0>>, GET_ENTITY_COORDS(SetPieceCarID[4], FALSE) + <<0.0, 0.0, 5.0>>, 8.0) REPLAY_STOP_EVENT() bVideoRecording = FALSE ENDIF ENDIF ENDIF ENDIF IF DOES_ENTITY_EXIST(TrafficCarID[5]) AND NOT IS_ENTITY_DEAD(TrafficCarID[5]) AND DOES_ENTITY_EXIST(TrafficCarID[6]) AND NOT IS_ENTITY_DEAD(TrafficCarID[6]) AND DOES_ENTITY_EXIST(TrafficCarID[7]) AND NOT IS_ENTITY_DEAD(TrafficCarID[7]) IF NOT HAS_LABEL_BEEN_TRIGGERED("CAR_1_RACE_SKIDDING_CARS") IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(TrafficCarID[5]), GET_ENTITY_COORDS(vehPlayer)) < 20.0 OR GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(TrafficCarID[6]), GET_ENTITY_COORDS(vehPlayer)) < 20.0 OR GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(TrafficCarID[7]), GET_ENTITY_COORDS(vehPlayer)) < 20.0 //Audio Scene IF NOT IS_AUDIO_SCENE_ACTIVE("CAR_1_RACE_SKIDDING_CARS") START_AUDIO_SCENE("CAR_1_RACE_SKIDDING_CARS") ENDIF REPLAY_RECORD_BACK_FOR_TIME(3.0, 5.0, REPLAY_IMPORTANCE_HIGHEST) SET_LABEL_AS_TRIGGERED("CAR_1_RACE_SKIDDING_CARS", TRUE) ENDIF ELSE IF NOT HAS_LABEL_BEEN_TRIGGERED("CAR_1_BRAKING_CARS_1") IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(TrafficCarID[5]), GET_ENTITY_COORDS(vehPlayer)) < 20.0 ADD_ENTITY_TO_AUDIO_MIX_GROUP(TrafficCarID[5], "CAR_1_SKIDDING_CARS_GROUP") REPLAY_RECORD_BACK_FOR_TIME(3.0, 5.0, REPLAY_IMPORTANCE_HIGHEST) SET_LABEL_AS_TRIGGERED("CAR_1_BRAKING_CARS_1", TRUE) ENDIF ELSE IF GET_ENTITY_SPEED(TrafficCarID[5]) < 1.0 REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(TrafficCarID[5]) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("CAR_1_BRAKING_CARS_2") IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(TrafficCarID[6]), GET_ENTITY_COORDS(vehPlayer)) < 20.0 ADD_ENTITY_TO_AUDIO_MIX_GROUP(TrafficCarID[6], "CAR_1_SKIDDING_CARS_GROUP") REPLAY_RECORD_BACK_FOR_TIME(3.0, 5.0, REPLAY_IMPORTANCE_HIGHEST) SET_LABEL_AS_TRIGGERED("CAR_1_BRAKING_CARS_2", TRUE) ENDIF ELSE IF GET_ENTITY_SPEED(TrafficCarID[6]) < 1.0 REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(TrafficCarID[6]) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("CAR_1_BRAKING_CARS_3") IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(TrafficCarID[7]), GET_ENTITY_COORDS(vehPlayer)) < 20.0 ADD_ENTITY_TO_AUDIO_MIX_GROUP(TrafficCarID[7], "CAR_1_SKIDDING_CARS_GROUP") REPLAY_RECORD_BACK_FOR_TIME(3.0, 5.0, REPLAY_IMPORTANCE_HIGHEST) SET_LABEL_AS_TRIGGERED("CAR_1_BRAKING_CARS_3", TRUE) ENDIF ELSE IF GET_ENTITY_SPEED(TrafficCarID[7]) < 1.0 REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(TrafficCarID[7]) ENDIF ENDIF IF HAS_LABEL_BEEN_TRIGGERED("CAR_1_BRAKING_CARS_1") AND HAS_LABEL_BEEN_TRIGGERED("CAR_1_BRAKING_CARS_2") AND HAS_LABEL_BEEN_TRIGGERED("CAR_1_BRAKING_CARS_3") IF IS_AUDIO_SCENE_ACTIVE("CAR_1_RACE_SKIDDING_CARS") STOP_AUDIO_SCENE("CAR_1_RACE_SKIDDING_CARS") ENDIF ENDIF ENDIF ENDIF // IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) // IF GET_TIME_POSITION_IN_RECORDING(vehRival1) < 60000.0 // IF DOES_ENTITY_EXIST(SetPieceCarID[8]) // IF NOT DOES_ENTITY_EXIST(vehTrailer[2]) // IF NOT IS_VEHICLE_ATTACHED_TO_TRAILER(SetPieceCarID[8]) // vehTrailer[2] = CREATE_VEHICLE(TR2, <<1901.4882, 1997.4597, 56.5473>>, 0.0) // SET_ENTITY_QUATERNION(vehTrailer[2], -0.0024, 0.0062, 0.0958, 0.9954) // // ATTACH_VEHICLE_TO_TRAILER(SetPieceCarID[8], vehTrailer[2]) // vehVehicles[0] = CREATE_VEHICLE(ASTEROPE, <<1899.9705, 2005.2631, 56.4645>>, 0.0) // ATTACH_ENTITY_TO_ENTITY(vehVehicles[0], vehTrailer[2], 0, <<-0.0100, 4.9100, 3.0000>>, <<3.4000, 0.0000, 0.0000>>, FALSE, FALSE, TRUE) // vehVehicles[1] = CREATE_VEHICLE(ASTEROPE, <<1899.9705, 2005.2631, 56.4645>>, 0.0) // ATTACH_ENTITY_TO_ENTITY(vehVehicles[1], vehTrailer[2], 0, <<-0.0300, 0.2600, 3.0800>>, <<-4.8700, 0.0000, 0.0000>>, FALSE, FALSE, TRUE) // vehVehicles[2] = CREATE_VEHICLE(ASTEROPE, <<1899.9705, 2005.2631, 56.4645>>, 0.0) // ATTACH_ENTITY_TO_ENTITY(vehVehicles[2], vehTrailer[2], 0, <<0.0400, -4.7700, 3.3000>>, <<0.2300, 0.0000, 0.0000>>, FALSE, FALSE, TRUE) // vehVehicles[3] = CREATE_VEHICLE(ASTEROPE, <<1899.9705, 2005.2631, 56.4645>>, 0.0) // ATTACH_ENTITY_TO_ENTITY(vehVehicles[3], vehTrailer[2], 0, <<0.0000, 5.2200, 1.0300>>, <<0.0900, 0.0000, 0.0000>>, FALSE, FALSE, TRUE) // vehVehicles[4] = CREATE_VEHICLE(ASTEROPE, <<1899.9705, 2005.2631, 56.4645>>, 0.0) // ATTACH_ENTITY_TO_ENTITY(vehVehicles[4], vehTrailer[2], 0, <<-0.0400, 0.3100, 1.1300>>, <<-2.6000, 0.0000, 0.0000>>, FALSE, FALSE, TRUE) // vehVehicles[5] = CREATE_VEHICLE(ASTEROPE, <<1899.9705, 2005.2631, 56.4645>>, 0.0) // ATTACH_ENTITY_TO_ENTITY(vehVehicles[5], vehTrailer[2], 0, <<-0.0400, -4.6300, 1.1100>>, <<4.6000, 0.0000, 0.0000>>, FALSE, FALSE, TRUE) // ENDIF // ENDIF // ENDIF // // IF DOES_ENTITY_EXIST(vehTrailer[2]) // IF NOT IS_ENTITY_DEAD(vehTrailer[2]) // IF DOES_ENTITY_EXIST(SetPieceCarID[8]) // IF NOT IS_ENTITY_DEAD(SetPieceCarID[8]) // IF GET_TIME_POSITION_IN_RECORDING(vehRival1) < 48436.000 // IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(SetPieceCarID[8]) // IF NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehTrailer[2]) // START_PLAYBACK_RECORDED_VEHICLE_WITH_FLAGS(vehTrailer[2], 313, sCarrecRace, ENUM_TO_INT(TURN_ON_ENGINE_INSTANTLY) | ENUM_TO_INT(SWITCH_ON_PLAYER_VEHICLE_IMPACT)) // ENDIF // ENDIF // ENDIF // // IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehTrailer[2]) // IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(SetPieceCarID[8]) // SET_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehTrailer[2], GET_TIME_POSITION_IN_RECORDING(SetPieceCarID[8])) //SET_PLAYBACK_SPEED(vehTrailer[2], fPlaybackSpeed) // ENDIF // ELSE // IF NOT IS_VEHICLE_ATTACHED_TO_TRAILER(SetPieceCarID[8]) // ATTACH_VEHICLE_TO_TRAILER(SetPieceCarID[8], vehTrailer[2]) // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF // // IF HAS_LABEL_BEEN_TRIGGERED("NoCollision") // IF DOES_ENTITY_EXIST(SetPieceCarID[9]) // IF NOT IS_ENTITY_DEAD(SetPieceCarID[9]) // IF DOES_ENTITY_EXIST(vehTrailer[2]) // IF NOT IS_ENTITY_DEAD(vehTrailer[2]) // SET_ENTITY_NO_COLLISION_ENTITY(SetPieceCarID[9], vehTrailer[2], FALSE) // ENDIF // ENDIF // // IF DOES_ENTITY_EXIST(vehVehicles[0]) // IF NOT IS_ENTITY_DEAD(vehVehicles[0]) // SET_ENTITY_NO_COLLISION_ENTITY(SetPieceCarID[9], vehVehicles[0], FALSE) // ENDIF // ENDIF // // IF DOES_ENTITY_EXIST(vehVehicles[1]) // IF NOT IS_ENTITY_DEAD(vehVehicles[1]) // SET_ENTITY_NO_COLLISION_ENTITY(SetPieceCarID[9], vehVehicles[1], FALSE) // ENDIF // ENDIF // // IF DOES_ENTITY_EXIST(vehVehicles[2]) // IF NOT IS_ENTITY_DEAD(vehVehicles[2]) // SET_ENTITY_NO_COLLISION_ENTITY(SetPieceCarID[9], vehVehicles[2], FALSE) // ENDIF // ENDIF // // IF DOES_ENTITY_EXIST(vehVehicles[3]) // IF NOT IS_ENTITY_DEAD(vehVehicles[3]) // SET_ENTITY_NO_COLLISION_ENTITY(SetPieceCarID[9], vehVehicles[3], FALSE) // ENDIF // ENDIF // // IF DOES_ENTITY_EXIST(vehVehicles[4]) // IF NOT IS_ENTITY_DEAD(vehVehicles[4]) // SET_ENTITY_NO_COLLISION_ENTITY(SetPieceCarID[9], vehVehicles[4], FALSE) // ENDIF // ENDIF // // IF DOES_ENTITY_EXIST(vehVehicles[5]) // IF NOT IS_ENTITY_DEAD(vehVehicles[5]) // SET_ENTITY_NO_COLLISION_ENTITY(SetPieceCarID[9], vehVehicles[5], FALSE) // ENDIF // ENDIF // // IF DOES_ENTITY_EXIST(SetPieceCarID[9]) // AND DOES_ENTITY_EXIST(vehTrailer[2]) // AND DOES_ENTITY_EXIST(vehVehicles[0]) // AND DOES_ENTITY_EXIST(vehVehicles[1]) // AND DOES_ENTITY_EXIST(vehVehicles[2]) // AND DOES_ENTITY_EXIST(vehVehicles[3]) // AND DOES_ENTITY_EXIST(vehVehicles[4]) // AND DOES_ENTITY_EXIST(vehVehicles[5]) // SET_LABEL_AS_TRIGGERED("NoCollision", TRUE) // ENDIF // ENDIF // ENDIF // ENDIF // // //Packer goes to AI //// IF (DOES_ENTITY_EXIST(vehVehicles[5]) //// AND NOT IS_ENTITY_DEAD(vehVehicles[5])) //// AND (DOES_ENTITY_EXIST(vehTrailer[2]) //// AND NOT IS_ENTITY_DEAD(vehVehicles[2])) //// AND NOT DOES_ROPE_EXIST(ropeChain) //// IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) //// IF GET_TIME_POSITION_IN_RECORDING(vehRival1) > 53660.320 - 2500.000 //// IF DOES_ENTITY_EXIST(SetPieceCarID[8]) //// IF NOT IS_ENTITY_DEAD(SetPieceCarID[8]) //// IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(SetPieceCarID[8]) //// SET_PLAYBACK_TO_USE_AI(SetPieceCarID[8]) //// ENDIF //// ENDIF //// ENDIF //// //// IF DOES_ENTITY_EXIST(vehTrailer[2]) //// IF NOT IS_ENTITY_DEAD(vehTrailer[2]) //// IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehTrailer[2]) //// STOP_PLAYBACK_RECORDED_VEHICLE(vehTrailer[2]) //SET_PLAYBACK_TO_USE_AI(vehTrailer[2]) //// ENDIF //// ENDIF //// ENDIF //// ENDIF //// ENDIF //// ENDIF // // //Rope Car // IF (DOES_ENTITY_EXIST(vehVehicles[5]) // AND NOT IS_ENTITY_DEAD(vehVehicles[5])) // AND (DOES_ENTITY_EXIST(vehTrailer[2]) // AND NOT IS_ENTITY_DEAD(vehVehicles[2])) // AND NOT DOES_ROPE_EXIST(ropeChain) // IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) // IF GET_TIME_POSITION_IN_RECORDING(vehRival1) > 48436.000 // AND GET_TIME_POSITION_IN_RECORDING(vehRival1) < 62000.0 // IF DOES_ENTITY_EXIST(SetPieceCarID[8]) // IF NOT IS_ENTITY_DEAD(SetPieceCarID[8]) // IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(SetPieceCarID[8]) // SET_PLAYBACK_TO_USE_AI(SetPieceCarID[8]) // ENDIF // ENDIF // ENDIF // // IF DOES_ENTITY_EXIST(vehTrailer[2]) // IF NOT IS_ENTITY_DEAD(vehTrailer[2]) // IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehTrailer[2]) // STOP_PLAYBACK_RECORDED_VEHICLE(vehTrailer[2]) //SET_PLAYBACK_TO_USE_AI(vehTrailer[2]) // ENDIF // ENDIF // ENDIF // // IF DOES_ENTITY_EXIST(SetPieceCarID[9]) // IF NOT IS_ENTITY_DEAD(SetPieceCarID[9]) // IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(SetPieceCarID[9]) // SET_PLAYBACK_TO_USE_AI(SetPieceCarID[9]) // ENDIF // ENDIF // ENDIF // // IF DOES_ENTITY_EXIST(vehVehicles[5]) // IF NOT IS_ENTITY_DEAD(vehVehicles[5]) // IF DOES_ENTITY_EXIST(vehTrailer[2]) // IF NOT IS_ENTITY_DEAD(vehTrailer[2]) // SET_ENTITY_NO_COLLISION_ENTITY(vehTrailer[2], vehVehicles[5], FALSE) // ENDIF // ENDIF // ENDIF // ENDIF // // //SET_VEHICLE_DOOR_CONTROL(vehTrailer[2], SC_DOOR_FRONT_RIGHT, DT_DOOR_MISSING, 1.0) // SET_VEHICLE_DOOR_OPEN(vehTrailer[2], SC_DOOR_BOOT) // // VECTOR vTrailerRope = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehTrailer[2], <<0.0, -5.5 - 1.85, 0.475>>) // VECTOR vCarRope = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehVehicles[5], <<0.0, 2.0, 0.0>>) // // ropeChain = ADD_ROPE(vTrailerRope, <<0.0, 0.0, 0.0>>, 10.0, PHYSICS_ROPE_DEFAULT) // // ATTACH_ENTITIES_TO_ROPE(ropeChain, vehVehicles[5], vehTrailer[2], vCarRope, vTrailerRope, 10.0, 0, 0) // // DETACH_ENTITY(vehVehicles[5]) // // SET_ENTITY_PROOFS(vehVehicles[5], FALSE, FALSE, TRUE, FALSE, FALSE) // // //Fudge fix for deadline: the trailer vehicle was updated with proper collision, so the car could get trapped inside. For now warp it out. // //SET_ENTITY_COORDS_NO_OFFSET(vehVehicles[5], GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehTrailer[2], <<-0.0400, -7.6300, 1.1100>>)) // // APPLY_FORCE_TO_ENTITY(vehVehicles[5], APPLY_TYPE_FORCE, <<0.0, -40.0, -5.0>>, <<0.0, 0.0, 0.0>>, 0, TRUE, TRUE, TRUE) // // SET_VEHICLE_TYRE_BURST(vehVehicles[5], SC_WHEEL_CAR_FRONT_LEFT) // SET_VEHICLE_TYRE_BURST(vehVehicles[5], SC_WHEEL_CAR_FRONT_RIGHT) // SET_VEHICLE_TYRE_BURST(vehVehicles[5], SC_WHEEL_CAR_REAR_LEFT) // SET_VEHICLE_TYRE_BURST(vehVehicles[5], SC_WHEEL_CAR_REAR_RIGHT) // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF // // IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) // IF GET_TIME_POSITION_IN_RECORDING(vehRival1) > 47936.000 // AND GET_TIME_POSITION_IN_RECORDING(vehRival1) < 60000.0 // IF DOES_ENTITY_EXIST(vehVehicles[5]) // IF NOT IS_ENTITY_DEAD(vehVehicles[5]) // REQUEST_PTFX_ASSET() // //// SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE) // // INT i // // VECTOR vSparkPoint[iTotalEffects], vSparkPointOffset[iTotalEffects] // // //Offsets // vSparkPointOffset[0] = << 0.5, 1.5, 1.0>> // vSparkPointOffset[1] = << 0.5, 2.0, -0.5>> // vSparkPointOffset[2] = <<-0.5, 1.5, 1.0>> // vSparkPointOffset[3] = <<-0.5, 2.0, -0.5>> // vSparkPointOffset[4] = << 0.5, -1.5, 1.0>> // vSparkPointOffset[5] = << 0.5, -2.0, -0.5>> // vSparkPointOffset[6] = <<-0.5, -1.5, 1.0>> // vSparkPointOffset[7] = <<-0.5, -2.0, -0.5>> // // IF HAS_PTFX_ASSET_LOADED() // REPEAT iTotalEffects i // vSparkPoint[i] = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehVehicles[5], vSparkPointOffset[i]) // // IF vSparkPoint[i].Z - GET_GROUND_Z(vSparkPoint[i]) < 0.3 // IF bSparks[i] = FALSE // ptfxSparks[i] = START_PARTICLE_FX_LOOPED_ON_ENTITY("scr_carsteal3_packer_scrapes", vehVehicles[5], vSparkPointOffset[i], VECTOR_ZERO, 1.2) // //ptfxFric[i] = START_PARTICLE_FX_LOOPED_ON_ENTITY("wheel_fric_hard", vehVehicles[5], vSparkPointOffset[i], VECTOR_ZERO, 1.2) // //ptfxSmoke[i] = START_PARTICLE_FX_LOOPED_ON_ENTITY("wheel_burnout", vehVehicles[5], vSparkPointOffset[i], VECTOR_ZERO, 1.2) // bSparks[i] = TRUE // ENDIF // ELSE // IF bSparks[i] = TRUE // STOP_PARTICLE_FX_LOOPED(ptfxSparks[i]) // //STOP_PARTICLE_FX_LOOPED(ptfxFric[i]) // //STOP_PARTICLE_FX_LOOPED(ptfxSmoke[i]) // bSparks[i] = FALSE // ENDIF // ENDIF // //// IF bSparks[i] = TRUE //// DRAW_DEBUG_SPHERE(vSparkPoint[i], 0.05, 0, 255, 0) //// DRAW_DEBUG_LINE_WITH_TWO_COLOURS(vSparkPoint[i], <>, 0, 255, 0, 255, 255, 0, 0, 255) //// ELSE //// DRAW_DEBUG_SPHERE(vSparkPoint[i], 0.05) //// DRAW_DEBUG_LINE_WITH_TWO_COLOURS(vSparkPoint[i], <>, 0, 0, 255, 255, 255, 0, 0, 255) //// ENDIF //// DRAW_DEBUG_SPHERE(<>, 0.05, 255, 0, 0) // ENDREPEAT // ENDIF // // //Flip Car // IF GET_TIME_POSITION_IN_RECORDING(vehRival1) > 49936.0 // IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<1899.71, 2327.25, 53.59>>) < 40.0 // CREATE_CONVERSATION_ADV("CST3_Crash") // ENDIF // //// IF NOT IS_ENTITY_UPSIDEDOWN(vehVehicles[5]) //// IF GET_TIME_POSITION_IN_RECORDING(vehRival1) % 4000 < 2000 //// APPLY_FORCE_TO_ENTITY(vehVehicles[5], APPLY_TYPE_FORCE, <<-60.0, 0.0, 0.0>>, <<-1.0, 0.0, 0.0>>, 0, TRUE, TRUE, TRUE) //// ELSE //// APPLY_FORCE_TO_ENTITY(vehVehicles[5], APPLY_TYPE_FORCE, <<60.0, 0.0, 0.0>>, <<1.0, 0.0, 0.0>>, 0, TRUE, TRUE, TRUE) //// ENDIF //// //// IF GET_TIME_POSITION_IN_RECORDING(vehRival1) % 2000 < 1000 //// APPLY_FORCE_TO_ENTITY(vehVehicles[5], APPLY_TYPE_FORCE, <<0.0, 0.0, 15.0>>, <<0.0, 0.0, 0.0>>, 0, TRUE, TRUE, TRUE) //// ELSE //// APPLY_FORCE_TO_ENTITY(vehVehicles[5], APPLY_TYPE_FORCE, <<0.0, 0.0, -20.0>>, <<0.0, 0.0, 0.0>>, 0, TRUE, TRUE, TRUE) //// ENDIF // // //APPLY_FORCE_TO_ENTITY(vehVehicles[5], APPLY_TYPE_FORCE, <<0.0, 0.0, -1.0>>, <<0.0, 0.0, 0.0>>, 0, FALSE, TRUE, TRUE) //// ENDIF // ENDIF // ENDIF // ENDIF // ENDIF // // IF GET_TIME_POSITION_IN_RECORDING(vehRival1) > 62000.0 // IF DOES_ENTITY_EXIST(vehVehicles[5]) // AND DOES_ENTITY_EXIST(vehTrailer[2]) // IF NOT IS_ENTITY_DEAD(vehVehicles[5]) // AND NOT IS_ENTITY_DEAD(vehTrailer[2]) // IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehVehicles[5])) > 50.0 // IF DOES_ROPE_EXIST(ropeChain) // DETACH_ROPE_FROM_ENTITY(ropeChain, vehVehicles[5]) // DETACH_ROPE_FROM_ENTITY(ropeChain, vehTrailer[2]) // DELETE_ROPE(ropeChain) // ENDIF // // SET_VEHICLE_AS_NO_LONGER_NEEDED(vehVehicles[5]) // SET_VEHICLE_AS_NO_LONGER_NEEDED(vehTrailer[2]) // ENDIF // ENDIF // ENDIF // ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) //Cutscene Peds IF GET_TIME_POSITION_IN_RECORDING(vehRival1) > 100000.000 //Spawn Police IF NOT DOES_ENTITY_EXIST(vehPolice1) IF HAS_MODEL_LOADED_CHECK(POLICEB) SPAWN_VEHICLE(vehPolice1, POLICEB, vPoliceStart1, fPoliceStart1) SET_VEHICLE_AS_RESTRICTED(vehPolice1, 2) SET_VEHICLE_HAS_STRONG_AXLES(vehPolice1, TRUE) ENDIF ELSE IF NOT DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) IF HAS_MODEL_LOADED_CHECK(GET_PLAYER_PED_MODEL(CHAR_TREVOR)) PRINTLN("SPAWN_PLAYER TREVOR") SPAWN_PLAYER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], CHAR_TREVOR, vTrevorStartPos, fTrevorStartHeading) //SET_PED_PROP_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], ANCHOR_HEAD, 5) // SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PED_COMP_HAIR, 3, 0) // SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PED_COMP_TORSO, 3, 0) // SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PED_COMP_LEG, 3, 0) IF NOT IS_PED_WEARING_HELMET(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) SET_PED_HELMET_PROP_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], 5) SET_PED_HELMET_TEXTURE_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], 0) ENDIF SET_PED_COMP_ITEM_CURRENT_SP(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], COMP_TYPE_OUTFIT, OUTFIT_P2_HIGHWAY_PATROL, FALSE) SET_PLAYER_HAS_CHANGE_CLOTHES_ON_MISSION(CHAR_TREVOR) //Set that the player has changed clothes on mission SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], relGroupBuddy) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE) SET_PED_CONFIG_FLAG(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PCF_WillFlyThroughWindscreen, FALSE) ENDIF ELSE IF NOT IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], vehPolice1) SET_PED_INTO_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], vehPolice1) ENDIF ENDIF ENDIF IF NOT DOES_ENTITY_EXIST(vehPolice2) IF HAS_MODEL_LOADED_CHECK(POLICEB) SPAWN_VEHICLE(vehPolice2, POLICEB, vPoliceStart2, fPoliceStart2) SET_VEHICLE_AS_RESTRICTED(vehPolice2, 3) SET_VEHICLE_HAS_STRONG_AXLES(vehPolice2, TRUE) ENDIF ELSE IF NOT DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) IF HAS_MODEL_LOADED_CHECK(GET_PLAYER_PED_MODEL(CHAR_MICHAEL)) PRINTLN("SPAWN_PLAYER MICHAEL") SPAWN_PLAYER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], CHAR_MICHAEL, vMichaelStartPos, fMichaelStartHeading) //SET_PED_PROP_INDEX(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], ANCHOR_HEAD, 4) // SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PED_COMP_TORSO, 6, 0) // SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PED_COMP_LEG, 6, 0) SET_PED_COMP_ITEM_CURRENT_SP(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], COMP_TYPE_OUTFIT, OUTFIT_P0_HIGHWAY_PATROL, FALSE) SET_PLAYER_HAS_CHANGE_CLOTHES_ON_MISSION(CHAR_MICHAEL) //Set that the player has changed clothes on mission SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], relGroupBuddy) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE) SET_PED_CONFIG_FLAG(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PCF_WillFlyThroughWindscreen, FALSE) ENDIF ELSE IF NOT IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], vehPolice2) SET_PED_INTO_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], vehPolice2) ENDIF ENDIF ENDIF ENDIF ENDIF IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) AND DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])) < DEFAULT_CUTSCENE_LOAD_DIST //Cutscene REQUEST_CUTSCENE("Car_steal_3_mcs_2") REQUEST_ANIM_DICT(strAnimDictCamShake) //Request Cutscene Variations - Car_steal_3_mcs_2 IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Michael", PLAYER_PED(CHAR_MICHAEL)) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Trevor", PLAYER_PED(CHAR_TREVOR)) ENDIF ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("S3_OVER") IF NOT bAbilityUsed IF GET_TIME_POSITION_IN_RECORDING(vehRival1) > 23000.000 IF NOT IS_SPECIAL_ABILITY_ACTIVE(PLAYER_ID()) IF IS_USING_KEYBOARD_AND_MOUSE(PLAYER_CONTROL) PRINT_HELP_ADV("S3_OVER_KM", TRUE, 12000) ELSE PRINT_HELP_ADV("S3_OVER", TRUE, 12000) ENDIF ELSE SET_LABEL_AS_TRIGGERED("S3_OVER", TRUE) ENDIF ENDIF ENDIF ENDIF IF IS_SPECIAL_ABILITY_ACTIVE(PLAYER_ID()) IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("S3_OVER") CLEAR_HELP() ENDIF IF IS_PC_VERSION() IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("S3_OVER_KM") CLEAR_HELP() ENDIF ENDIF ENDIF ENDIF IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival2) AND GET_TIME_POSITION_IN_RECORDING(vehRival2) > 86000.0 - 3000.0) OR IS_PLAYBACK_USING_AI_GOING_ON_FOR_VEHICLE(vehRival2) SET_ENTITY_LOAD_COLLISION_FLAG(vehRival2, TRUE) ENDIF IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) AND GET_TIME_POSITION_IN_RECORDING(vehRival1) > 102000.0 - 3000.0) OR IS_PLAYBACK_USING_AI_GOING_ON_FOR_VEHICLE(vehRival1) SET_ENTITY_LOAD_COLLISION_FLAG(vehRival1, TRUE) ENDIF // IF GET_SCRIPT_TASK_STATUS(pedRival1, SCRIPT_TASK_VEHICLE_MISSION) = PERFORMING_TASK // IF IS_ENTITY_ON_SCREEN(vehRival1) // iChaseTimer[CHASE_TIMER_ENTITYXF] = GET_GAME_TIMER() + 1500 // ELIF GET_GAME_TIMER() > iChaseTimer[CHASE_TIMER_ENTITYXF] // AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehRival1)) > 30.0 - (GET_VEHICLE_ESTIMATED_MAX_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) / 5.0) // IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehRival1), <<2716.9924, 4787.3481, 43.5334>>) > GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<2716.9924, 4787.3481, 43.5334>>) // VECTOR vWarpCoord = GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(500, GET_CLOSEST_TIME_POSITION_IN_RECORDING_TO_POINT(GET_ENTITY_COORDS(PLAYER_PED_ID()), 500, sCarrecRace) - 1000, sCarrecRace) // // IF NOT IS_SPHERE_VISIBLE(vWarpCoord, 5.0) // CLEAR_AREA(vWarpCoord, 5.0, TRUE) // // SET_VEHICLE_POSITION(vehRival1, vWarpCoord, GET_HEADING_FROM_VECTOR(GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(500, GET_CLOSEST_TIME_POSITION_IN_RECORDING_TO_POINT(GET_ENTITY_COORDS(PLAYER_PED_ID()), 500, sCarrecRace) - 1000, sCarrecRace))) // // SET_VEHICLE_FORWARD_SPEED(vehRival1, 20.0) // // SET_VEHICLE_ENGINE_ON(vehRival1, TRUE, TRUE) // // iChaseTimer[CHASE_TIMER_ENTITYXF] = GET_GAME_TIMER() + (3000 - CLAMP_INT(ROUND(GET_VEHICLE_ESTIMATED_MAX_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) * GET_VEHICLE_ESTIMATED_MAX_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()))), 0, 1500)) // ENDIF // ENDIF // ENDIF // ENDIF // // IF GET_SCRIPT_TASK_STATUS(pedRival2, SCRIPT_TASK_VEHICLE_MISSION) = PERFORMING_TASK // IF IS_ENTITY_ON_SCREEN(vehRival2) // iChaseTimer[CHASE_TIMER_CHEETAH] = GET_GAME_TIMER() + 1500 // ELIF GET_GAME_TIMER() > iChaseTimer[CHASE_TIMER_CHEETAH] // AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehRival2)) > 30.0 - (GET_VEHICLE_ESTIMATED_MAX_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) / 5.0) // IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehRival2), <<2716.9924, 4787.3481, 43.5334>>) > GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<2716.9924, 4787.3481, 43.5334>>) // VECTOR vWarpCoord = GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(501, GET_CLOSEST_TIME_POSITION_IN_RECORDING_TO_POINT(GET_ENTITY_COORDS(PLAYER_PED_ID()), 501, sCarrecRace) - 1000, sCarrecRace) // // IF NOT IS_SPHERE_VISIBLE(vWarpCoord, 5.0) // CLEAR_AREA(vWarpCoord, 5.0, TRUE) // // SET_VEHICLE_POSITION(vehRival2, vWarpCoord, GET_HEADING_FROM_VECTOR(GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(501, GET_CLOSEST_TIME_POSITION_IN_RECORDING_TO_POINT(GET_ENTITY_COORDS(PLAYER_PED_ID()), 501, sCarrecRace) - 1000, sCarrecRace))) // // SET_VEHICLE_FORWARD_SPEED(vehRival2, 20.0) // // SET_VEHICLE_ENGINE_ON(vehRival2, TRUE, TRUE) // // iChaseTimer[CHASE_TIMER_CHEETAH] = GET_GAME_TIMER() + (3000 - CLAMP_INT(ROUND(GET_VEHICLE_ESTIMATED_MAX_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) * GET_VEHICLE_ESTIMATED_MAX_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()))), 0, 1500)) // ENDIF // ENDIF // ENDIF // ENDIF IF GET_SCRIPT_TASK_STATUS(pedRival1, SCRIPT_TASK_VEHICLE_MISSION) = PERFORMING_TASK IF IS_ENTITY_ON_SCREEN(vehRival1) iChaseTimer[CHASE_TIMER_ENTITYXF] = GET_GAME_TIMER() + 1500 ELIF GET_GAME_TIMER() > iChaseTimer[CHASE_TIMER_ENTITYXF] AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehRival1)) > 30.0 - (GET_VEHICLE_ESTIMATED_MAX_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) / 5.0) IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehRival1), <<2391.1492, 5804.0825, 45.1577>>) > GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<2391.1492, 5804.0825, 45.1577>>) VECTOR vWarpCoord = GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(500, GET_CLOSEST_TIME_POSITION_IN_RECORDING_TO_POINT(GET_ENTITY_COORDS(PLAYER_PED_ID()), 500, sCarrecSetup) - 1000, sCarrecSetup) IF NOT IS_SPHERE_VISIBLE(vWarpCoord, 5.0) CLEAR_AREA(vWarpCoord, 5.0, TRUE) SET_VEHICLE_POSITION(vehRival1, vWarpCoord, GET_HEADING_FROM_VECTOR(GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(500, GET_CLOSEST_TIME_POSITION_IN_RECORDING_TO_POINT(GET_ENTITY_COORDS(PLAYER_PED_ID()), 500, sCarrecSetup) - 1000, sCarrecSetup))) SET_VEHICLE_FORWARD_SPEED(vehRival1, GET_ENTITY_SPEED(vehPlayer)) SET_VEHICLE_ENGINE_ON(vehRival1, TRUE, TRUE) iChaseTimer[CHASE_TIMER_ENTITYXF] = GET_GAME_TIMER() + (3000 - CLAMP_INT(ROUND(GET_VEHICLE_ESTIMATED_MAX_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) * GET_VEHICLE_ESTIMATED_MAX_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()))), 0, 1500)) ENDIF ENDIF ENDIF ENDIF IF GET_SCRIPT_TASK_STATUS(pedRival2, SCRIPT_TASK_VEHICLE_MISSION) = PERFORMING_TASK IF IS_ENTITY_ON_SCREEN(vehRival2) iChaseTimer[CHASE_TIMER_CHEETAH] = GET_GAME_TIMER() + 1500 ELIF GET_GAME_TIMER() > iChaseTimer[CHASE_TIMER_CHEETAH] AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehRival2)) > 30.0 - (GET_VEHICLE_ESTIMATED_MAX_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) / 5.0) IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehRival2), <<2391.1492, 5804.0825, 45.1577>>) > GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<2391.1492, 5804.0825, 45.1577>>) VECTOR vWarpCoord = GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(501, GET_CLOSEST_TIME_POSITION_IN_RECORDING_TO_POINT(GET_ENTITY_COORDS(PLAYER_PED_ID()), 501, sCarrecSetup) - 1000, sCarrecSetup) IF NOT IS_SPHERE_VISIBLE(vWarpCoord, 5.0) CLEAR_AREA(vWarpCoord, 5.0, TRUE) SET_VEHICLE_POSITION(vehRival2, vWarpCoord, GET_HEADING_FROM_VECTOR(GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(501, GET_CLOSEST_TIME_POSITION_IN_RECORDING_TO_POINT(GET_ENTITY_COORDS(PLAYER_PED_ID()), 501, sCarrecSetup) - 1000, sCarrecSetup))) SET_VEHICLE_FORWARD_SPEED(vehRival2, GET_ENTITY_SPEED(vehPlayer)) SET_VEHICLE_ENGINE_ON(vehRival2, TRUE, TRUE) iChaseTimer[CHASE_TIMER_CHEETAH] = GET_GAME_TIMER() + (3000 - CLAMP_INT(ROUND(GET_VEHICLE_ESTIMATED_MAX_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) * GET_VEHICLE_ESTIMATED_MAX_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()))), 0, 1500)) ENDIF ENDIF ENDIF ENDIF IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehPlayer) IF IS_PAUSE_MENU_ACTIVE() IF DOES_BLIP_EXIST(blipRival1) SET_BLIP_COORDS(blipRival1, GET_ENTITY_COORDS(vehRival1)) ENDIF IF DOES_BLIP_EXIST(blipRival2) SET_BLIP_COORDS(blipRival2, GET_ENTITY_COORDS(vehRival2)) ENDIF ENDIF IF NOT DOES_BLIP_EXIST(blipRival1) blipRival1 = ADD_BLIP_FOR_COORD(GET_ENTITY_COORDS(vehRival1)) SET_BLIP_COLOUR(blipRival1, BLIP_COLOUR_BLUE) SET_BLIP_PRIORITY(blipRival1, BLIPPRIORITY_HIGHEST) SET_BLIP_NAME_FROM_TEXT_FILE(blipRival1, "S3_BLIPVEH") ENDIF //Racer Blips VECTOR vRacerChase VECTOR vBlipChase FLOAT fModifier //Rival 1 vRacerChase = GET_ENTITY_COORDS(vehRival1) vBlipChase = GET_BLIP_COORDS(blipRival1) fModifier = 1.0 + CLAMP((GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehRival1)) / 4), 0.0, 17.5) vBlipChase.X = vBlipChase.X +@ (((vRacerChase.X - vBlipChase.X) / fModifier) * 15) vBlipChase.Y = vBlipChase.Y +@ (((vRacerChase.Y - vBlipChase.Y) / fModifier) * 15) vBlipChase.Z = vBlipChase.Z +@ (((vRacerChase.Z - vBlipChase.Z) / fModifier) * 15) SET_BLIP_COORDS(blipRival1, vBlipChase) IF NOT DOES_BLIP_EXIST(blipRival2) blipRival2 = ADD_BLIP_FOR_COORD(GET_ENTITY_COORDS(vehRival2)) SET_BLIP_COLOUR(blipRival2, BLIP_COLOUR_BLUE) SET_BLIP_PRIORITY(blipRival2, BLIPPRIORITY_HIGHEST) SET_BLIP_NAME_FROM_TEXT_FILE(blipRival2, "S3_BLIPVEH") ENDIF //Rival 2 vRacerChase = GET_ENTITY_COORDS(vehRival2) vBlipChase = GET_BLIP_COORDS(blipRival2) fModifier = 1.0 + CLAMP((GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehRival2)) / 4), 0.0, 17.5) vBlipChase.X = vBlipChase.X +@ (((vRacerChase.X - vBlipChase.X) / fModifier) * 15) vBlipChase.Y = vBlipChase.Y +@ (((vRacerChase.Y - vBlipChase.Y) / fModifier) * 15) vBlipChase.Z = vBlipChase.Z +@ (((vRacerChase.Z - vBlipChase.Z) / fModifier) * 15) SET_BLIP_COORDS(blipRival2, vBlipChase) ELSE SAFE_REMOVE_BLIP(blipRival1) SAFE_REMOVE_BLIP(blipRival2) ENDIF //Road Nodes #IF IS_DEBUG_BUILD BOOL bRoadNodes = #ENDIF REQUEST_PATH_NODES_IN_AREA_THIS_FRAME(1651.787842, 3131.189209, 3216.789307, 6348.194336) #IF IS_DEBUG_BUILD IF NOT bRoadNodes PRINTLN("REQUEST_PATH_NODES_IN_AREA_THIS_FRAME = ", bRoadNodes) ENDIF #ENDIF //Progress Stage IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<2479.381104, 4728.353027, 23.323929>>, <<3015.382324, 4846.076172, 153.630157>>, 450.0) AND IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehPlayer) IF CAN_PLAYER_START_CUTSCENE() ADVANCE_STAGE() ENDIF ENDIF ENDIF IF CLEANUP_STAGE() //Cleanup (Blips, peds, variables etc.) KILL_CHASE_HINT_CAM(localChaseHintCamStruct) //Audio Scene IF IS_AUDIO_SCENE_ACTIVE("CAR_1_RACE_SKIDDING_CARS") STOP_AUDIO_SCENE("CAR_1_RACE_SKIDDING_CARS") ENDIF IF IS_AUDIO_SCENE_ACTIVE("CAR_1_RACE_CARS_FOCUS_CAM") STOP_AUDIO_SCENE("CAR_1_RACE_CARS_FOCUS_CAM") ENDIF SET_ENTITY_LOAD_COLLISION_FLAG(vehRival1, FALSE) SET_ENTITY_LOAD_COLLISION_FLAG(vehRival2, FALSE) SET_MODEL_AS_NO_LONGER_NEEDED(TRAILERS) SET_MODEL_AS_NO_LONGER_NEEDED(TRAILERS2) SAFE_DELETE_VEHICLE(vehTrailer[0]) SAFE_DELETE_VEHICLE(vehTrailer[1]) REPLAY_RECORD_BACK_FOR_TIME(10.0, 0.0, REPLAY_IMPORTANCE_HIGHEST) eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1) ENDIF ENDPROC PROC CutsceneSwitch() IF INIT_STAGE() //Checkpoint //SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(ENUM_TO_INT(replayChase), "stageChase", FALSE, FALSE, PLAYER_PED(CHAR_FRANKLIN)) //SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) //Wanted SET_MAX_WANTED_LEVEL(0) SET_WANTED_LEVEL_MULTIPLIER(0.0) //Ambulances etc. ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE, FALSE) ENABLE_DISPATCH_SERVICE(DT_POLICE_HELICOPTER, FALSE) ENABLE_DISPATCH_SERVICE(DT_FIRE_DEPARTMENT, FALSE) ENABLE_DISPATCH_SERVICE(DT_SWAT_AUTOMOBILE, FALSE) ENABLE_DISPATCH_SERVICE(DT_AMBULANCE_DEPARTMENT, FALSE) //Spawn Police IF NOT DOES_ENTITY_EXIST(vehPolice1) SPAWN_VEHICLE(vehPolice1, POLICEB, vPoliceStart1, fPoliceStart1) SET_VEHICLE_AS_RESTRICTED(vehPolice1, 2) SET_VEHICLE_HAS_STRONG_AXLES(vehPolice1, TRUE) ENDIF IF NOT DOES_ENTITY_EXIST(vehPolice2) SPAWN_VEHICLE(vehPolice2, POLICEB, vPoliceStart2, fPoliceStart2) SET_VEHICLE_AS_RESTRICTED(vehPolice2, 3) SET_VEHICLE_HAS_STRONG_AXLES(vehPolice2, TRUE) ENDIF FREEZE_ENTITY_POSITION(vehPolice1, TRUE) FREEZE_ENTITY_POSITION(vehPolice2, TRUE) SET_MODEL_AS_NO_LONGER_NEEDED(POLICEB) IF NOT DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) SPAWN_PLAYER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], CHAR_TREVOR, vTrevorStartPos, fTrevorStartHeading) //SET_PED_PROP_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], ANCHOR_HEAD, 5) // SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PED_COMP_HAIR, 3, 0) // SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PED_COMP_TORSO, 3, 0) // SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PED_COMP_LEG, 3, 0) IF NOT IS_PED_WEARING_HELMET(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) SET_PED_HELMET_PROP_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], 5) SET_PED_HELMET_TEXTURE_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], 0) ENDIF WHILE NOT SET_PED_COMP_ITEM_CURRENT_SP(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], COMP_TYPE_OUTFIT, OUTFIT_P2_HIGHWAY_PATROL, FALSE) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SET_PLAYER_HAS_CHANGE_CLOTHES_ON_MISSION(CHAR_TREVOR) //Set that the player has changed clothes on mission SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], relGroupBuddy) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE) SET_PED_CONFIG_FLAG(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PCF_WillFlyThroughWindscreen, FALSE) ENDIF IF NOT IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], vehPolice1) SET_PED_INTO_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], vehPolice1) ENDIF SET_MODEL_AS_NO_LONGER_NEEDED(GET_PLAYER_PED_MODEL(CHAR_TREVOR)) IF NOT DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) SPAWN_PLAYER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], CHAR_MICHAEL, vMichaelStartPos, fMichaelStartHeading) //SET_PED_PROP_INDEX(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], ANCHOR_HEAD, 4) // SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PED_COMP_TORSO, 6, 0) // SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PED_COMP_LEG, 6, 0) WHILE NOT SET_PED_COMP_ITEM_CURRENT_SP(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], COMP_TYPE_OUTFIT, OUTFIT_P0_HIGHWAY_PATROL, FALSE) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SET_PLAYER_HAS_CHANGE_CLOTHES_ON_MISSION(CHAR_MICHAEL) //Set that the player has changed clothes on mission SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], relGroupBuddy) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE) SET_PED_CONFIG_FLAG(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PCF_WillFlyThroughWindscreen, FALSE) ENDIF IF NOT IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], vehPolice2) SET_PED_INTO_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], vehPolice2) ENDIF SET_MODEL_AS_NO_LONGER_NEEDED(GET_PLAYER_PED_MODEL(CHAR_MICHAEL)) ADD_PED_FOR_DIALOGUE(sPedsForConversation, 1, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], "MICHAEL") ADD_PED_FOR_DIALOGUE(sPedsForConversation, 2, sSelectorPeds.pedID[SELECTOR_PED_TREVOR], "TREVOR") //Restore Engine/Petrol Health SET_VEHICLE_ENGINE_HEALTH(vehPlayer, 1000.0) SET_VEHICLE_PETROL_TANK_HEALTH(vehPlayer, 1000.0) SET_VEHICLE_ENGINE_HEALTH(vehRival1, 1000.0) SET_VEHICLE_PETROL_TANK_HEALTH(vehRival1, 1000.0) SET_VEHICLE_ENGINE_HEALTH(vehRival2, 1000.0) SET_VEHICLE_PETROL_TANK_HEALTH(vehRival2, 1000.0) #IF IS_DEBUG_BUILD IF bAutoSkipping = FALSE #ENDIF bRadar = FALSE //Cutscene REQUEST_CUTSCENE("Car_steal_3_mcs_2", CUTSCENE_REQUESTED_FROM_Z_SKIP) REQUEST_ANIM_DICT(strAnimDictCamShake) //Audio PLAY_AUDIO(CAR1_COP_BIKES) #IF IS_DEBUG_BUILD ENDIF #ENDIF //NEW_LOAD_SCENE_START((<<2684.2, 5118.4, 45.3>>), (<<-1.3, 0.0, 2.1>>), 20.0) IF SKIPPED_STAGE() //Audio PLAY_AUDIO(CAR1_COPS_RESTART) CLEAR_AREA(<<2716.9924, 4787.3481, 43.5334>>, 1000.0, TRUE) SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehPlayer) SET_PED_POSITION(PLAYER_PED_ID(), <<2716.9924, 4787.3481, 43.5334>>, 11.8873) SET_VEHICLE_ENGINE_ON(vehPlayer, TRUE, TRUE) //Camera Behind Player SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) //Fade In // IF IS_SCREEN_FADED_OUT() // DO_SCREEN_FADE_IN(500) // ENDIF ENDIF ELSE //Request Cutscene Variations - Car_steal_3_mcs_2 IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Michael", PLAYER_PED(CHAR_MICHAEL)) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Trevor", PLAYER_PED(CHAR_TREVOR)) ENDIF IF IS_PAUSE_MENU_ACTIVE() IF DOES_BLIP_EXIST(blipRival1) SET_BLIP_COORDS(blipRival1, GET_ENTITY_COORDS(vehRival1)) ENDIF IF DOES_BLIP_EXIST(blipRival2) SET_BLIP_COORDS(blipRival2, GET_ENTITY_COORDS(vehRival2)) ENDIF ENDIF IF NOT DOES_BLIP_EXIST(blipRival1) blipRival1 = ADD_BLIP_FOR_COORD(GET_ENTITY_COORDS(vehRival1)) SET_BLIP_COLOUR(blipRival1, BLIP_COLOUR_BLUE) SET_BLIP_PRIORITY(blipRival1, BLIPPRIORITY_HIGHEST) SET_BLIP_NAME_FROM_TEXT_FILE(blipRival1, "S3_BLIPVEH") ENDIF //Racer Blips VECTOR vRacerChase VECTOR vBlipChase FLOAT fModifier //Rival 1 vRacerChase = GET_ENTITY_COORDS(vehRival1) vBlipChase = GET_BLIP_COORDS(blipRival1) fModifier = 1.0 + CLAMP((GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehRival1)) / 4), 0.0, 17.5) vBlipChase.X = vBlipChase.X +@ (((vRacerChase.X - vBlipChase.X) / fModifier) * 15) vBlipChase.Y = vBlipChase.Y +@ (((vRacerChase.Y - vBlipChase.Y) / fModifier) * 15) vBlipChase.Z = vBlipChase.Z +@ (((vRacerChase.Z - vBlipChase.Z) / fModifier) * 15) SET_BLIP_COORDS(blipRival1, vBlipChase) IF NOT DOES_BLIP_EXIST(blipRival2) blipRival2 = ADD_BLIP_FOR_COORD(GET_ENTITY_COORDS(vehRival2)) SET_BLIP_COLOUR(blipRival2, BLIP_COLOUR_BLUE) SET_BLIP_PRIORITY(blipRival2, BLIPPRIORITY_HIGHEST) SET_BLIP_NAME_FROM_TEXT_FILE(blipRival2, "S3_BLIPVEH") ENDIF //Rival 2 vRacerChase = GET_ENTITY_COORDS(vehRival2) vBlipChase = GET_BLIP_COORDS(blipRival2) fModifier = 1.0 + CLAMP((GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehRival2)) / 4), 0.0, 17.5) vBlipChase.X = vBlipChase.X +@ (((vRacerChase.X - vBlipChase.X) / fModifier) * 15) vBlipChase.Y = vBlipChase.Y +@ (((vRacerChase.Y - vBlipChase.Y) / fModifier) * 15) vBlipChase.Z = vBlipChase.Z +@ (((vRacerChase.Z - vBlipChase.Z) / fModifier) * 15) SET_BLIP_COORDS(blipRival2, vBlipChase) SWITCH iCutsceneStage CASE 0 DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_EXIT) IF HAS_CUTSCENE_LOADED() AND IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehPlayer) //Fix for 179276: If the cinematic cam was active when the cutscene triggered, deactivate it before starting the mocap. IF DOES_CAM_EXIST(camCinematic) IF IS_CAM_ACTIVE(camCinematic) SET_CAM_ACTIVE(camCinematic, FALSE) RENDER_SCRIPT_CAMS(FALSE, FALSE) ENDIF ENDIF SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE) // added by Rob to try and fix 881875 SET_ENTITY_INVINCIBLE(vehRival1, TRUE) SET_ENTITY_INVINCIBLE(vehRival2, TRUE) SET_ENTITY_INVINCIBLE(vehPlayer, TRUE) SET_VEHICLE_CAN_BE_VISIBLY_DAMAGED(vehPlayer, FALSE) SET_VEHICLE_CAN_BE_VISIBLY_DAMAGED(vehRival1, FALSE) SET_VEHICLE_CAN_BE_VISIBLY_DAMAGED(vehRival2, FALSE) //SPAWN ATTACHED DONUTS SAFE_DELETE_OBJECT(oiDonut1) oiDonut1 = CREATE_OBJECT_NO_OFFSET(PROP_DONUT_02, vDonut1Pos, FALSE, FALSE) IF DOES_ENTITY_EXIST(oiDonut1) IF DOES_ENTITY_EXIST(PLAYER_PED(CHAR_MICHAEL)) IF NOT IS_ENTITY_DEAD(PLAYER_PED(CHAR_MICHAEL)) ATTACH_ENTITY_TO_ENTITY(oiDonut1, PLAYER_PED(CHAR_MICHAEL), GET_PED_BONE_INDEX(PLAYER_PED(CHAR_MICHAEL), BONETAG_PH_R_HAND), vDonut1AttachPos, vDonut1AttachRot) ENDIF ENDIF ENDIF SAFE_DELETE_OBJECT(oiDonut2) oiDonut2 = CREATE_OBJECT_NO_OFFSET(PROP_DONUT_02B, vDonut2Pos, FALSE, FALSE) IF DOES_ENTITY_EXIST(oiDonut2) IF DOES_ENTITY_EXIST(PLAYER_PED(CHAR_TREVOR)) IF NOT IS_ENTITY_DEAD(PLAYER_PED(CHAR_TREVOR)) ATTACH_ENTITY_TO_ENTITY(oiDonut2, PLAYER_PED(CHAR_TREVOR), GET_PED_BONE_INDEX(PLAYER_PED(CHAR_TREVOR), BONETAG_PH_R_HAND), vDonut2AttachPos, vDonut2AttachRot) ENDIF ENDIF ENDIF //CELLPHONE SAFE_DELETE_OBJECT(oiCellPhone) oiCellPhone = CREATE_OBJECT_NO_OFFSET(PROP_PLAYER_PHONE_01, vCellphonePos, FALSE, FALSE) IF DOES_ENTITY_EXIST(oiCellPhone) IF DOES_ENTITY_EXIST(PLAYER_PED(CHAR_MICHAEL)) IF NOT IS_ENTITY_DEAD(PLAYER_PED(CHAR_MICHAEL)) ATTACH_ENTITY_TO_ENTITY(oiCellPhone, PLAYER_PED(CHAR_MICHAEL), GET_PED_BONE_INDEX(PLAYER_PED(CHAR_MICHAEL), BONETAG_PH_L_HAND), vCellphoneAttachPos, vCellphoneAttachRot) ENDIF ENDIF ENDIF SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) IF DOES_ENTITY_EXIST(PLAYER_PED_ID()) IF NOT IS_ENTITY_DEAD(PLAYER_PED_ID()) SET_PED_CONFIG_FLAG(PLAYER_PED_ID(), PCF_PhoneDisableTalkingAnimations, TRUE) ENDIF ENDIF IF NOT IS_ENTITY_DEAD(PLAYER_PED(CHAR_FRANKLIN)) AND NOT IS_ENTITY_DEAD(vehPlayer) CLEAR_PED_TASKS(PLAYER_PED(CHAR_FRANKLIN)) SET_VEHICLE_FORWARD_SPEED(vehPlayer, GET_ENTITY_SPEED(vehPlayer)) SET_VEHICLE_ENGINE_ON(vehPlayer, TRUE, TRUE) TASK_VEHICLE_DRIVE_TO_COORD(PLAYER_PED(CHAR_FRANKLIN), vehPlayer, <<2602.3, 5299.4, 44.4>>, 200.0, DRIVINGSTYLE_ACCURATE, DUMMY_MODEL_FOR_SCRIPT, DRIVINGMODE_AVOIDCARS_STOPFORPEDS_OBEYLIGHTS, 5.0, 2.0) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_EXIT) // IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_IN_VEHICLE) = CAM_VIEW_MODE_FIRST_PERSON // TASK_PLAY_ANIM(PLAYER_PED(CHAR_FRANKLIN), sAnimDictPhoneUse, "change_station", DEFAULT, DEFAULT, DEFAULT, AF_UPPERBODY | AF_SECONDARY) // PRINTLN("First Person Phone Anim Played...") // ENDIF ADD_PED_FOR_DIALOGUE(sPedsForConversation, 1, PLAYER_PED(CHAR_MICHAEL), "MICHAEL") ADD_PED_FOR_DIALOGUE(sPedsForConversation, 3, PLAYER_PED(CHAR_FRANKLIN), "FRANKLIN") PLAYER_CALL_CHAR_CELLPHONE(sPedsForConversation, CHAR_MICHAEL, "CST3AUD", "CST3_2secs", CONV_PRIORITY_HIGH) ENDIF eCarStealSwitchCamState = SWITCH_CAM_START_SPLINE1 IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(500) ENDIF PREFETCH_SRL(strCustomSwitchSRL) SET_SRL_READAHEAD_TIMES(3, 3, 3, 3) SET_SRL_FORCE_PRESTREAM(SRL_PRESTREAM_FORCE_OFF) ADVANCE_CUTSCENE() ENDIF BREAK CASE 1 REQUEST_VEHICLE_RECORDING(600, "ALuberSetup") REQUEST_VEHICLE_ASSET(POLICEB, ENUM_TO_INT(VRF_REQUEST_ALL_ANIMS)) IF NOT IS_ENTITY_IN_ANGLED_AREA(vehPlayer, <<2751.025879, 4623.216309, 33.912022>>, <<2621.143066, 5207.858887, 63.722816>>, 40.0) AND NOT IS_ENTITY_IN_ANGLED_AREA(vehPlayer, <<2624.585449, 5179.363281, 33.771980>>, <<2512.105713, 5542.450684, 63.772625>>, 40.0) AND NOT IS_ENTITY_IN_ANGLED_AREA(vehPlayer, <<2742.847656, 4658.283691, 33.534836>>, <<2804.21216, 4427.76123, 66.249695>>, 40.0) eMissionFail = failLeftBehind missionFailed() ENDIF IF TIMERA() > 5000 AND HAS_VEHICLE_RECORDING_BEEN_LOADED(600, "ALuberSetup") AND HAS_VEHICLE_ASSET_LOADED(POLICEB) AND HAVE_ALL_STREAMING_REQUESTS_COMPLETED(PLAYER_PED(CHAR_MICHAEL)) AND HAVE_ALL_STREAMING_REQUESTS_COMPLETED(PLAYER_PED(CHAR_TREVOR)) //AND IS_SRL_LOADED() SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(ENUM_TO_INT(replayChase), "stageChase", FALSE, FALSE, PLAYER_PED(CHAR_FRANKLIN)) IF NOT IS_AUDIO_SCENE_ACTIVE("CAR_1_FRANKLIN_CALLS_MICHAEL") START_AUDIO_SCENE("CAR_1_FRANKLIN_CALLS_MICHAEL") ENDIF IF NOT bVideoRecording REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST) bVideoRecording = TRUE ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("SET_CAR_HIGH_SPEED_BUMP_SEVERITY_MULTIPLIER") SET_CAR_HIGH_SPEED_BUMP_SEVERITY_MULTIPLIER(0.0) SET_LABEL_AS_TRIGGERED("SET_CAR_HIGH_SPEED_BUMP_SEVERITY_MULTIPLIER", TRUE) ENDIF //Push In IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_IN_VEHICLE) = CAM_VIEW_MODE_FIRST_PERSON // FILL_PUSH_IN_DATA(pushInData, PLAYER_PED(CHAR_MICHAEL), CHAR_MICHAEL, 2.0, 550, 550, 305) //SET_PUSH_IN_DIRECTION_MODIFIER(pushInData, <<0.0, 0.0, -20.0>>) FILL_PUSH_IN_DATA(pushInData, PLAYER_PED(CHAR_MICHAEL), CHAR_MICHAEL, 2.0, GET_CUTSCENE_TOTAL_DURATION() - ROUND(3.274930 * 1000.0), GET_CUTSCENE_TOTAL_DURATION() - ROUND(3.274930 * 1000.0), GET_CUTSCENE_TOTAL_DURATION() - ROUND(3.274930 * 1000.0) - 300, ((GET_CUTSCENE_TOTAL_DURATION() - ROUND(3.274930 * 1000.0)) / 3) * 2, PUSH_IN_SPEED_UP_PROPORTION) ENDIF ADVANCE_CUTSCENE() ENDIF BREAK CASE 2 LOAD_STREAM("CAR_STEAL_1_PASSBY", "CAR_STEAL_1_SOUNDSET") //Push In //3.786076 IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_IN_VEHICLE) = CAM_VIEW_MODE_FIRST_PERSON IF IS_CUTSCENE_PLAYING() IF NOT HAS_LABEL_BEEN_TRIGGERED("PushInMichael") IF GET_CUTSCENE_TIME() > ROUND(3.274930 * 1000.0) //2.432000 * 1000.0) BYPASS_CUTSCENE_CAM_RENDERING_THIS_UPDATE() IF HANDLE_PUSH_IN(pushInData) //, DEFAULT, DEFAULT, FALSE, DEFAULT, FALSE) SET_LABEL_AS_TRIGGERED("PushInMichael", TRUE) ENDIF ENDIF ENDIF ENDIF ENDIF IF IS_CUTSCENE_PLAYING() IF NOT HAS_LABEL_BEEN_TRIGGERED("HereTheyCome") IF GET_CUTSCENE_TIME() > ROUND(21.285322 * 1000.0) //Audio PLAY_AUDIO(CAR1_APPROACH) LOAD_AUDIO(CAR1_CHASE_START) SET_LABEL_AS_TRIGGERED("HereTheyCome", TRUE) ENDIF ENDIF ENDIF // IF CAN_SET_EXIT_STATE_FOR_CAMERA() // SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) // SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) // ENDIF // IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Trevor") // IF NOT IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], vehPolice1) // SET_PED_INTO_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], vehPolice1) // ENDIF // // FORCE_PED_AI_AND_ANIMATION_UPDATE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) // // IF NOT IS_PED_WEARING_HELMET(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) // SET_PED_HELMET_PROP_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], 5) // SET_PED_HELMET_TEXTURE_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], 0) // ENDIF // GIVE_PED_HELMET(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE, PV_FLAG_SCRIPT_HELMET) // ENDIF // // IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Michael") // IF NOT IS_PED_IN_VEHICLE(PLAYER_PED(CHAR_MICHAEL), vehPolice2) // SET_PED_INTO_VEHICLE(PLAYER_PED(CHAR_MICHAEL), vehPolice2) // ENDIF // // IF NOT IS_PED_WEARING_HELMET(PLAYER_PED_ID()) // SET_PED_HELMET_PROP_INDEX(PLAYER_PED_ID(), 4) // SET_PED_HELMET_TEXTURE_INDEX(PLAYER_PED_ID(), 0) // ENDIF // GIVE_PED_HELMET(PLAYER_PED_ID(), TRUE, PV_FLAG_SCRIPT_HELMET) // // FORCE_PED_AI_AND_ANIMATION_UPDATE(PLAYER_PED(CHAR_MICHAEL)) // // SET_PED_COMP_ITEM_CURRENT_SP(PLAYER_PED(CHAR_MICHAEL), COMP_TYPE_OUTFIT, OUTFIT_P0_HIGHWAY_PATROL, FALSE) // SET_PLAYER_HAS_CHANGE_CLOTHES_ON_MISSION(CHAR_MICHAEL) //Set that the player has changed clothes on mission // ENDIF // // IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Trevors_police_bike") //// SET_VEHICLE_POSITION(vehPolice1, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(500, 0.0, sCarrecChase), GET_HEADING_FROM_VECTOR(GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(500, 0.0, sCarrecChase))) //// SET_ENTITY_ROTATION(vehPolice1, GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(500, 0.1, sCarrecChase)) // // SET_VEHICLE_ENGINE_ON(vehPolice1, TRUE, TRUE) // // IF HAS_RECORDING_LOADED_CHECK(500, sCarrecCop) //sCarrecChase) // START_PLAYBACK_RECORDED_VEHICLE(vehPolice1, 500, sCarrecCop) //sCarrecChase) // SET_PLAYBACK_SPEED(vehPolice1, 0.0) // FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehPolice1, FALSE) // ENDIF // ENDIF // // IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Michaels_Police_bike") // SET_VEHICLE_POSITION(vehPolice2, <<2686.8740, 5131.9189, 44.3182>>, 150.224) // SET_ENTITY_ROTATION(vehPolice2, <<0.541, -9.993, 150.224>>) // // SET_VEHICLE_ENGINE_ON(vehPolice2, TRUE, TRUE) // // ACTIVATE_PHYSICS(vehPolice2) // ENDIF // IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_IN_VEHICLE) = CAM_VIEW_MODE_FIRST_PERSON // IF CAN_SET_EXIT_STATE_FOR_CAMERA() // // ENDIF // ENDIF IF HANDLE_SWITCH_CINEMATIC(scsSwitchCam1, scsSwitchCam2) //HAS_CUTSCENE_FINISHED() //--- IF NOT IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], vehPolice1) SET_PED_INTO_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], vehPolice1) ENDIF FORCE_PED_AI_AND_ANIMATION_UPDATE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) IF NOT IS_PED_WEARING_HELMET(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) SET_PED_HELMET_PROP_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], 5) SET_PED_HELMET_TEXTURE_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], 0) ENDIF GIVE_PED_HELMET(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE, PV_FLAG_SCRIPT_HELMET) IF NOT IS_PED_IN_VEHICLE(PLAYER_PED(CHAR_MICHAEL), vehPolice2) SET_PED_INTO_VEHICLE(PLAYER_PED(CHAR_MICHAEL), vehPolice2) ENDIF IF NOT IS_PED_WEARING_HELMET(PLAYER_PED_ID()) SET_PED_HELMET_PROP_INDEX(PLAYER_PED_ID(), 4) SET_PED_HELMET_TEXTURE_INDEX(PLAYER_PED_ID(), 0) ENDIF GIVE_PED_HELMET(PLAYER_PED_ID(), TRUE, PV_FLAG_SCRIPT_HELMET) SET_PED_COMP_ITEM_CURRENT_SP(PLAYER_PED(CHAR_MICHAEL), COMP_TYPE_OUTFIT, OUTFIT_P0_HIGHWAY_PATROL, FALSE) SET_PLAYER_HAS_CHANGE_CLOTHES_ON_MISSION(CHAR_MICHAEL) //Set that the player has changed clothes on mission SET_VEHICLE_ENGINE_ON(vehPolice1, TRUE, TRUE) IF HAS_RECORDING_LOADED_CHECK(500, sCarrecCop) //sCarrecChase) START_PLAYBACK_RECORDED_VEHICLE(vehPolice1, 500, sCarrecCop) //sCarrecChase) SET_PLAYBACK_SPEED(vehPolice1, 0.0) FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehPolice1, FALSE) ENDIF SET_VEHICLE_POSITION(vehPolice2, <<2686.8625, 5131.9277, 43.8426>>, 150.224) SET_ENTITY_ROTATION(vehPolice2, <<0.541, -9.993, 150.224>>) FORCE_PED_AI_AND_ANIMATION_UPDATE(PLAYER_PED(CHAR_MICHAEL), TRUE) SET_VEHICLE_ENGINE_ON(vehPolice2, TRUE, TRUE) ACTIVATE_PHYSICS(vehPolice2) //--- IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_IN_VEHICLE) = CAM_VIEW_MODE_FIRST_PERSON RENDER_SCRIPT_CAMS(FALSE, FALSE) RESET_PUSH_IN(pushInData) PRINTLN("First Person Push In Reset...") ENDIF SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) REMOVE_ANIM_DICT(strAnimDictCamShake) ADVANCE_STAGE() ENDIF DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_ACCELERATE) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_BRAKE) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_HANDBRAKE) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_DUCK) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_MOVE_LR) BREAK ENDSWITCH ENDIF IF CLEANUP_STAGE() //Cleanup (Blips, peds, variables etc.) IF HAS_LABEL_BEEN_TRIGGERED("SET_CAR_HIGH_SPEED_BUMP_SEVERITY_MULTIPLIER") SET_CAR_HIGH_SPEED_BUMP_SEVERITY_MULTIPLIER(1.0) SET_LABEL_AS_TRIGGERED("SET_CAR_HIGH_SPEED_BUMP_SEVERITY_MULTIPLIER", FALSE) ENDIF REMOVE_CUTSCENE() WHILE HAS_CUTSCENE_LOADED() WAIT_WITH_DEATH_CHECKS(0) ENDWHILE IF bVideoRecording REPLAY_STOP_EVENT() bVideoRecording = FALSE ENDIF //Audio Scene IF IS_AUDIO_SCENE_ACTIVE("CAR_1_RACE_MAIN") STOP_AUDIO_SCENE("CAR_1_RACE_MAIN") ENDIF IF IS_AUDIO_SCENE_ACTIVE("CAR_1_FRANKLIN_CALLS_MICHAEL") STOP_AUDIO_SCENE("CAR_1_FRANKLIN_CALLS_MICHAEL") ENDIF IF DOES_ENTITY_EXIST(PLAYER_PED(CHAR_MICHAEL)) IF NOT IS_ENTITY_DEAD(PLAYER_PED(CHAR_MICHAEL)) SET_PED_CONFIG_FLAG(PLAYER_PED(CHAR_MICHAEL), PCF_PhoneDisableTalkingAnimations, FALSE) ENDIF ENDIF IF DOES_ENTITY_EXIST(PLAYER_PED(CHAR_TREVOR)) IF NOT IS_ENTITY_DEAD(PLAYER_PED(CHAR_TREVOR)) SET_PED_CONFIG_FLAG(PLAYER_PED(CHAR_TREVOR), PCF_PhoneDisableTalkingAnimations, FALSE) ENDIF ENDIF IF DOES_ENTITY_EXIST(PLAYER_PED(CHAR_FRANKLIN)) IF NOT IS_ENTITY_DEAD(PLAYER_PED(CHAR_FRANKLIN)) SET_PED_CONFIG_FLAG(PLAYER_PED(CHAR_FRANKLIN), PCF_PhoneDisableTalkingAnimations, FALSE) ENDIF ENDIF SET_MODEL_AS_NO_LONGER_NEEDED(PROP_PLAYER_PHONE_01) SET_MODEL_AS_NO_LONGER_NEEDED(PROP_DONUT_02) SET_MODEL_AS_NO_LONGER_NEEDED(PROP_DONUT_02B) SET_ENTITY_VISIBLE(vehPlayer, TRUE) SET_ENTITY_VISIBLE(vehRival1, TRUE) SET_ENTITY_VISIBLE(vehRival2, TRUE) FREEZE_ENTITY_POSITION(vehPolice1, FALSE) FREEZE_ENTITY_POSITION(vehPolice2, FALSE) SAFE_REMOVE_BLIP(blipRival1) SAFE_REMOVE_BLIP(blipRival2) SAFE_DELETE_OBJECT(oiCellPhone) SET_ROADS_BACK_TO_ORIGINAL(<<-1928.3759, 4597.9775, 56.0588>> - <<1000.0, 1000.0, 1000.0>>, <<-1928.3759, 4597.9775, 56.0588>> + <<1000.0, 1000.0, 1000.0>>) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1) ENDIF ENDPROC PROC Chase() IF INIT_STAGE() //Checkpoint SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(ENUM_TO_INT(replayChase), "stageChase", FALSE, FALSE, PLAYER_PED(CHAR_FRANKLIN)) //Wanted SET_MAX_WANTED_LEVEL(0) SET_WANTED_LEVEL_MULTIPLIER(0.0) //Ambulances etc. ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE, FALSE) ENABLE_DISPATCH_SERVICE(DT_POLICE_HELICOPTER, FALSE) ENABLE_DISPATCH_SERVICE(DT_FIRE_DEPARTMENT, FALSE) ENABLE_DISPATCH_SERVICE(DT_SWAT_AUTOMOBILE, FALSE) ENABLE_DISPATCH_SERVICE(DT_AMBULANCE_DEPARTMENT, FALSE) //Radar bRadar = TRUE IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_MICHAEL MAKE_SELECTOR_PED_SELECTION(sSelectorPeds, SELECTOR_PED_MICHAEL) TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds) //SET_PED_PROP_INDEX(PLAYER_PED_ID(), ANCHOR_HEAD, 4) //SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_TORSO, 6, 0) //SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_LEG, 6, 0) SET_PED_COMP_ITEM_CURRENT_SP(PLAYER_PED_ID(), COMP_TYPE_OUTFIT, OUTFIT_P0_HIGHWAY_PATROL, FALSE) SET_PLAYER_HAS_CHANGE_CLOTHES_ON_MISSION(CHAR_MICHAEL) //Set that the player has changed clothes on mission SET_VEHICLE_POSITION(vehPolice1, vPoliceStart1, fPoliceStart1) SET_VEHICLE_POSITION(vehPolice2, <<2686.8792, 5131.9077, 43.8515>>, 151.6033) SET_ENTITY_ROTATION(vehPolice2, <<-0.3083, -9.4703, 151.2340>>) IF NOT IS_VEHICLE_EMPTY(vehPolice2) IF GET_PED_IN_VEHICLE_SEAT(vehPolice2) != PLAYER_PED_ID() CLEAR_PED_TASKS_IMMEDIATELY(GET_PED_IN_VEHICLE_SEAT(vehPolice2)) ENDIF ENDIF IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) IF NOT IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], vehPolice1) SET_PED_INTO_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], vehPolice1) ENDIF ENDIF IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], vehPolice2) SAFE_DELETE_PED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) ENDIF ENDIF IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehPolice2) SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehPolice2) ENDIF SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) ENDIF SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], relGroupBuddy) SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], relGroupBuddy) IF NOT IS_PED_WEARING_HELMET(PLAYER_PED_ID()) SET_PED_HELMET_PROP_INDEX(PLAYER_PED_ID(), 4) SET_PED_HELMET_TEXTURE_INDEX(PLAYER_PED_ID(), 0) ENDIF GIVE_PED_HELMET(PLAYER_PED_ID(), TRUE, PV_FLAG_SCRIPT_HELMET) IF NOT IS_PED_WEARING_HELMET(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) SET_PED_HELMET_PROP_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], 5) SET_PED_HELMET_TEXTURE_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], 0) ENDIF GIVE_PED_HELMET(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE, PV_FLAG_SCRIPT_HELMET) //STOP_PLAYBACK_RECORDED_VEHICLE(vehPolice1) STOP_PLAYBACK_RECORDED_VEHICLE(vehRival1) STOP_PLAYBACK_RECORDED_VEHICLE(vehRival2) STOP_PLAYBACK_RECORDED_VEHICLE(vehPlayer) CLEANUP_UBER_PLAYBACK(TRUE) fPlaybackSpeed = 1.0 INITIALISE_UBER_PLAYBACK(sCarrecCop, 500) //sCarrecChase, 500) UberCopVariables() bPlayTrafficRecordingEvenIfPlayerIsAheadOfChase = TRUE IF NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPolice1) START_PLAYBACK_RECORDED_VEHICLE(vehPolice1, 500, sCarrecCop) //sCarrecChase) #IF IS_DEBUG_BUILD PRINTLN("START_PLAYBACK_RECORDED_VEHICLE(vehPolice1, 500, sCarrecChase)") #ENDIF ELSE SET_PLAYBACK_SPEED(vehPolice1, 1.0) ENDIF START_PLAYBACK_RECORDED_VEHICLE(vehRival1, 400, sCarrecCop) //sCarrecChase) #IF IS_DEBUG_BUILD PRINTLN("START_PLAYBACK_RECORDED_VEHICLE(vehRival1, 300, sCarrecChase)") #ENDIF START_PLAYBACK_RECORDED_VEHICLE(vehRival2, 401, sCarrecCop) //sCarrecChase) #IF IS_DEBUG_BUILD PRINTLN("START_PLAYBACK_RECORDED_VEHICLE(vehRival2, 301, sCarrecChase)") #ENDIF START_PLAYBACK_RECORDED_VEHICLE(vehPlayer, 402, sCarrecCop) //sCarrecChase) #IF IS_DEBUG_BUILD PRINTLN("START_PLAYBACK_RECORDED_VEHICLE(vehPlayer, 302, sCarrecChase)") #ENDIF // SET_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehPolice1, 1000.0) // SET_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehRival1, 1000.0) // SET_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehRival2, 1000.0) // SET_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehPlayer, 1000.0) // SET_UBER_PLAYBACK_TO_TIME_NOW(vehPolice1, 1000.0) // added by Rob to try and fix 881875 SET_VEHICLE_CAN_BE_VISIBLY_DAMAGED(vehPlayer, TRUE) SET_VEHICLE_CAN_BE_VISIBLY_DAMAGED(vehRival1, TRUE) SET_VEHICLE_CAN_BE_VISIBLY_DAMAGED(vehRival2, TRUE) SET_ENTITY_INVINCIBLE(vehRival1, TRUE) SET_ENTITY_INVINCIBLE(vehRival2, TRUE) SET_ENTITY_INVINCIBLE(vehPlayer, TRUE) SET_ENTITY_COLLISION(vehRival1, FALSE) SET_ENTITY_COLLISION(vehRival2, FALSE) SET_ENTITY_COLLISION(vehPlayer, FALSE) SET_VEHICLE_IS_RACING(vehPlayer, TRUE) SET_VEHICLE_IS_RACING(vehRival1, TRUE) SET_VEHICLE_IS_RACING(vehRival2, TRUE) SET_VEHICLE_IS_RACING(vehPolice1, TRUE) SET_VEHICLE_IS_RACING(vehPolice2, TRUE) fPlaybackSpeed = 1.0 IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN]) IF NOT IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], vehPlayer) SET_PED_INTO_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], vehPlayer) ENDIF ENDIF SET_VEHICLE_ENGINE_ON(vehPolice1, TRUE, TRUE) SET_VEHICLE_ENGINE_ON(vehPolice2, TRUE, TRUE) SET_PED_CAN_BE_TARGETTED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], FALSE) SET_PED_CAN_BE_KNOCKED_OFF_VEHICLE(PLAYER_PED_ID(), KNOCKOFFVEHICLE_HARD) #IF IS_DEBUG_BUILD IF bAutoSkipping = FALSE #ENDIF //Audio Scene IF NOT IS_AUDIO_SCENE_ACTIVE("CAR_1_BIKE_CHASE_MAIN") START_AUDIO_SCENE("CAR_1_BIKE_CHASE_MAIN") ENDIF ADD_ENTITY_TO_AUDIO_MIX_GROUP(vehPolice1, "CAR_1_TREVORS_BIKE") //Radar bRadar = TRUE PRINT_ADV("S3_COP", 6000) //Delay player control so Trevor gets a head start iPlayerControlDelay = GET_GAME_TIMER() + 1000 DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_ACCELERATE) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_BRAKE) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_HANDBRAKE) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_DUCK) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_MOVE_LR) #IF IS_DEBUG_BUILD ENDIF #ENDIF //Audio PLAY_AUDIO(CAR1_CHASE_START) IF SKIPPED_STAGE() //Pause Cars PAUSE_PLAYBACK_RECORDED_VEHICLE(vehPolice1) PAUSE_PLAYBACK_RECORDED_VEHICLE(vehRival1) PAUSE_PLAYBACK_RECORDED_VEHICLE(vehRival2) PAUSE_PLAYBACK_RECORDED_VEHICLE(vehPlayer) //Load Scene IF NOT bReplaySkip LOAD_SCENE_ADV(GET_ENTITY_COORDS(PLAYER_PED_ID())) ENDIF WHILE NOT HAVE_ALL_STREAMING_REQUESTS_COMPLETED(PLAYER_PED(CHAR_MICHAEL)) OR NOT HAVE_ALL_STREAMING_REQUESTS_COMPLETED(PLAYER_PED(CHAR_TREVOR)) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE INT iTimeOut = GET_GAME_TIMER() + 5000 WHILE NOT LOAD_STREAM("CAR_STEAL_1_PASSBY", "CAR_STEAL_1_SOUNDSET") AND GET_GAME_TIMER() < iTimeOut WAIT_WITH_DEATH_CHECKS(0) #IF IS_DEBUG_BUILD PRINTLN("LOAD_STREAM('CAR_STEAL_1_PASSBY', 'CAR_STEAL_1_SOUNDSET')") #ENDIF PRINTLN("GET_GAME_TIMER() = ", GET_GAME_TIMER(), " | iTimeOut = ", iTimeOut) ENDWHILE #IF IS_DEBUG_BUILD IF GET_GAME_TIMER() > iTimeOut SCRIPT_ASSERT("LOAD_STREAM('CAR_STEAL_1_PASSBY', 'CAR_STEAL_1_SOUNDSET') timed out, see log for details.") ENDIF #ENDIF SAFE_DELETE_OBJECT(oiDonut1) oiDonut1 = CREATE_OBJECT_NO_OFFSET(PROP_DONUT_02B, <<2683.87842, 5130.14893, 43.85238>>, FALSE, FALSE) IF DOES_ENTITY_EXIST(oiDonut1) PLACE_OBJECT_ON_GROUND_PROPERLY(oiDonut1) ENDIF SAFE_DELETE_OBJECT(oiDonut2) oiDonut2 = CREATE_OBJECT_NO_OFFSET(PROP_DONUT_02B, <<2683.29028, 5128.59229, 43.85796>>, FALSE, FALSE) IF DOES_ENTITY_EXIST(oiDonut2) PLACE_OBJECT_ON_GROUND_PROPERLY(oiDonut2) ENDIF //Audio PLAY_AUDIO(CAR1_CHASE_RESTART) SET_VEHICLE_POSITION(vehPolice2, <<2686.8792, 5131.9077, 43.8515>>, 151.6033) SET_ENTITY_ROTATION(vehPolice2, <<-0.3083, -9.4703, 151.2340>>) IF NOT IS_PED_WEARING_HELMET(PLAYER_PED_ID()) SET_PED_HELMET_PROP_INDEX(PLAYER_PED_ID(), 5) SET_PED_HELMET_TEXTURE_INDEX(PLAYER_PED_ID(), 0) ENDIF GIVE_PED_HELMET(PLAYER_PED_ID(), TRUE, PV_FLAG_SCRIPT_HELMET) IF NOT IS_PED_WEARING_HELMET(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) SET_PED_HELMET_PROP_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], 5) SET_PED_HELMET_TEXTURE_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], 0) ENDIF GIVE_PED_HELMET(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE, PV_FLAG_SCRIPT_HELMET) WAIT_WITH_DEATH_CHECKS(500) //Unpause Cars UNPAUSE_PLAYBACK_RECORDED_VEHICLE(vehPolice1) UNPAUSE_PLAYBACK_RECORDED_VEHICLE(vehRival1) UNPAUSE_PLAYBACK_RECORDED_VEHICLE(vehRival2) UNPAUSE_PLAYBACK_RECORDED_VEHICLE(vehPlayer) //Spline Cam Skip IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_IN_VEHICLE) != CAM_VIEW_MODE_FIRST_PERSON OR GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_BIKE) != CAM_VIEW_MODE_FIRST_PERSON SETUP_SPLINE_CAM_2_NODE_ARRAY(scsSwitchCam2, vehPolice2) CREATE_SPLINE_CAM(scsSwitchCam2) SET_CAM_ACTIVE(scsSwitchCam2.ciSpline, TRUE) RENDER_SCRIPT_CAMS(TRUE, FALSE) ENDIF //Delay player control so Trevor gets a head start iPlayerControlDelay = GET_GAME_TIMER() + 1000 //Camera Behind Player SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) //Fade In IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(500) ENDIF ENDIF ELSE IF GET_GAME_TIMER() < iPlayerControlDelay DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_ACCELERATE) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_BRAKE) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_HANDBRAKE) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_DUCK) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_MOVE_LR) ENDIF CONTROL_VEHICLE_CHASE_HINT_CAM_IN_VEHICLE(localChaseHintCamStruct, vehRival1, "S3_HELP2") REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME() //Fix for bug 2197058 //Audio Scene IF IS_GAMEPLAY_HINT_ACTIVE() IF NOT IS_AUDIO_SCENE_ACTIVE("CAR_1_RACE_CARS_FOCUS_CAM") START_AUDIO_SCENE("CAR_1_RACE_CARS_FOCUS_CAM") ENDIF ELSE IF IS_AUDIO_SCENE_ACTIVE("CAR_1_RACE_CARS_FOCUS_CAM") STOP_AUDIO_SCENE("CAR_1_RACE_CARS_FOCUS_CAM") ENDIF ENDIF IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<2370.747314, 5771.054688, 45.033119>>, <<2119.455566, 6025.142090, 60.062992>>, 50.0) IF NOT IS_AUDIO_SCENE_ACTIVE("CAR_1_BIKE_ENTER_TUNNEL") START_AUDIO_SCENE("CAR_1_BIKE_ENTER_TUNNEL") ENDIF ELSE IF IS_AUDIO_SCENE_ACTIVE("CAR_1_BIKE_ENTER_TUNNEL") STOP_AUDIO_SCENE("CAR_1_BIKE_ENTER_TUNNEL") ENDIF ENDIF SWITCH iCutsceneStage CASE 0 IF LOAD_STREAM("CAR_STEAL_1_PASSBY", "CAR_STEAL_1_SOUNDSET") PLAY_STREAM_FRONTEND() ENDIF CLEAR_AREA_OF_VEHICLES(GET_ENTITY_COORDS(PLAYER_PED_ID()), 500.0) //Rogue vehicles... ADVANCE_CUTSCENE() BREAK CASE 1 IF TIMERA() >= 1000 SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) ADVANCE_CUTSCENE() ENDIF BREAK CASE 2 IF TIMERA() >= 1000 SET_VEHICLE_SIREN(vehPolice1, TRUE) //SET_SIREN_WITH_NO_DRIVER(vehPolice1, TRUE) ADVANCE_CUTSCENE() ENDIF BREAK CASE 3 IF TIMERA() >= 2000 SET_VEHICLE_SIREN(vehPolice2, TRUE) //SET_SIREN_WITH_NO_DRIVER(vehPolice2, TRUE) ADVANCE_CUTSCENE() ENDIF BREAK ENDSWITCH IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehPolice2) AND IS_PED_IN_VEHICLE(PLAYER_PED(CHAR_TREVOR), vehPolice1) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPolice1) IF GET_TIME_POSITION_IN_RECORDING(vehPolice1) > 8000.000 IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() AND (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) CREATE_CONVERSATION_ADV("CST3_Chase") ENDIF ENDIF ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_Tunnel") IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPolice1) IF GET_TIME_POSITION_IN_RECORDING(vehPolice1) > 37000.000 IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() REPLAY_RECORD_BACK_FOR_TIME(4.0, 8.0, REPLAY_IMPORTANCE_HIGHEST) CREATE_CONVERSATION_ADV("CST3_Tunnel") ENDIF ENDIF ENDIF ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPolice1) IF GET_TIME_POSITION_IN_RECORDING(vehPolice1) > 15000.000 IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_Lag") IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])) > 120.0 CREATE_CONVERSATION_ADV("CST3_Lag") iDialogueTimer[0] = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) ENDIF ELIF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_Catchup") CREATE_CONVERSATION_ADV("CST3_Catchup") iDialogueTimer[0] = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) ENDIF ENDIF ENDIF ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPolice1) IF GET_TIME_POSITION_IN_RECORDING(vehPolice1) > 40000.000 AND GET_TIME_POSITION_IN_RECORDING(vehPolice1) < 110000.000 IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])) < 30.0 IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF GET_GAME_TIMER() > iDialogueTimer[0] IF iDialogueLineCount[0] = -1 iDialogueLineCount[0] = 5 ELIF iDialogueLineCount[1] = -1 iDialogueLineCount[1] = 5 ENDIF IF iDialogueLineCount[iDialogueStage] > 0 IF iDialogueStage = 0 CREATE_CONVERSATION_ADV("CST3_Stay", CONV_PRIORITY_LOW, FALSE) ELIF iDialogueStage = 1 CREATE_CONVERSATION_ADV("CST3_LetsGo", CONV_PRIORITY_LOW, FALSE) ENDIF iDialogueTimer[0] = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(7500, 10000) iDialogueLineCount[iDialogueStage]-- ENDIF IF iDialogueStage < 1 iDialogueStage++ ELSE iDialogueStage = 0 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPolice1) IF GET_TIME_POSITION_IN_RECORDING(vehPolice1) > 78000.000 IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_Bay") IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])) < 30.0 CREATE_CONVERSATION_ADV("CST3_Bay") REPLAY_RECORD_BACK_FOR_TIME(4.0, 8.0, REPLAY_IMPORTANCE_HIGHEST) iDialogueTimer[0] = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) ENDIF ENDIF ENDIF ENDIF ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPolice1) IF GET_TIME_POSITION_IN_RECORDING(vehPolice1) > 93000.000 IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_FRAN") IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])) < 30.0 CREATE_CONVERSATION_ADV("CST3_FRAN") iDialogueTimer[0] = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) ENDIF ENDIF ENDIF ENDIF ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPolice1) IF GET_TIME_POSITION_IN_RECORDING(vehPolice1) > 14000.000 AND GET_TIME_POSITION_IN_RECORDING(vehPolice1) < 30000.000 IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])) < 30.0 IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_Split") IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) CLEAR_PED_SECONDARY_TASK(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) // OPEN_SEQUENCE_TASK(seqMain) // TASK_PLAY_ANIM(NULL, sAnimDictCar3PullOver, "pull_over_left", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_SECONDARY, 0.0, FALSE, AIK_DISABLE_ARM_IK) // TASK_PLAY_ANIM(NULL, sAnimDictCar3, "point_left", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_SECONDARY, 0.0, FALSE, AIK_DISABLE_ARM_IK) // CLOSE_SEQUENCE_TASK(seqMain) // TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], seqMain) // CLEAR_SEQUENCE_TASK(seqMain) TASK_PLAY_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictCar3, "point_left", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_FORCE_START | AF_SECONDARY, 0.0, FALSE, AIK_DISABLE_ARM_IK) PRINTLN("Car Steal 1 - TASK_PLAY_ANIM 'point_left' on Trevor") FORCE_PED_AI_AND_ANIMATION_UPDATE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) CREATE_CONVERSATION_ADV("CST3_Split") REPLAY_RECORD_BACK_FOR_TIME(4.0, 8.0, REPLAY_IMPORTANCE_HIGHEST) SETTIMERB(0) ENDIF ENDIF ENDIF IF IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictCar3, "point_left") IF TIMERB() < 1500 IF GET_ENTITY_ANIM_CURRENT_TIME(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictCar3, "point_left") > 0.55 SET_ENTITY_ANIM_CURRENT_TIME(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictCar3, "point_left", 0.55) ENDIF ENDIF ENDIF ENDIF ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPolice1) IF GET_TIME_POSITION_IN_RECORDING(vehPolice1) > 106000.000 AND GET_TIME_POSITION_IN_RECORDING(vehPolice1) < 109000.000 IF NOT IS_AUDIO_SCENE_ACTIVE("CAR_1_BIKE_PASS_THE_LOST") START_AUDIO_SCENE("CAR_1_BIKE_PASS_THE_LOST") ENDIF ENDIF IF GET_TIME_POSITION_IN_RECORDING(vehPolice1) > 106000.000 AND GET_TIME_POSITION_IN_RECORDING(vehPolice1) < 108000.000 IF DOES_ENTITY_EXIST(SetPieceCarID[3]) AND NOT IS_ENTITY_DEAD(SetPieceCarID[3]) ADD_ENTITY_TO_AUDIO_MIX_GROUP(SetPieceCarID[3], "CAR_1_THE_LOST") ENDIF IF DOES_ENTITY_EXIST(SetPieceCarID[4]) AND NOT IS_ENTITY_DEAD(SetPieceCarID[4]) ADD_ENTITY_TO_AUDIO_MIX_GROUP(SetPieceCarID[4], "CAR_1_THE_LOST") ENDIF IF DOES_ENTITY_EXIST(SetPieceCarID[5]) AND NOT IS_ENTITY_DEAD(SetPieceCarID[5]) ADD_ENTITY_TO_AUDIO_MIX_GROUP(SetPieceCarID[5], "CAR_1_THE_LOST") ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_Epic") IF GET_TIME_POSITION_IN_RECORDING(vehPolice1) > 90000.000 IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() CREATE_CONVERSATION_ADV("CST3_Epic") REPLAY_RECORD_BACK_FOR_TIME(4.0, 8.0, REPLAY_IMPORTANCE_HIGHEST) iDialogueTimer[0] = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) ENDIF ENDIF ENDIF IF GET_TIME_POSITION_IN_RECORDING(vehPolice1) > 105000.000 IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_Bikers") IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() CREATE_CONVERSATION_ADV("CST3_Bikers") REPLAY_RECORD_BACK_FOR_TIME(4.0, 8.0, REPLAY_IMPORTANCE_HIGHEST) iDialogueTimer[0] = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) ENDIF ENDIF IF IS_AUDIO_SCENE_ACTIVE("CAR_1_BIKE_PASS_THE_LOST") IF ((DOES_ENTITY_EXIST(SetPieceCarID[3]) AND NOT IS_ENTITY_DEAD(SetPieceCarID[3]) AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(SetPieceCarID[3], FALSE), GET_ENTITY_COORDS(PLAYER_PED_ID())) > 50.0) OR NOT DOES_ENTITY_EXIST(SetPieceCarID[3])) AND ((DOES_ENTITY_EXIST(SetPieceCarID[4]) AND NOT IS_ENTITY_DEAD(SetPieceCarID[4]) AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(SetPieceCarID[4], FALSE), GET_ENTITY_COORDS(PLAYER_PED_ID())) > 50.0) OR NOT DOES_ENTITY_EXIST(SetPieceCarID[4])) AND ((DOES_ENTITY_EXIST(SetPieceCarID[5]) AND NOT IS_ENTITY_DEAD(SetPieceCarID[5]) AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(SetPieceCarID[5], FALSE), GET_ENTITY_COORDS(PLAYER_PED_ID())) > 50.0) OR NOT DOES_ENTITY_EXIST(SetPieceCarID[5])) STOP_AUDIO_SCENE("CAR_1_BIKE_PASS_THE_LOST") IF DOES_ENTITY_EXIST(SetPieceCarID[3]) REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(SetPieceCarID[3]) ENDIF IF DOES_ENTITY_EXIST(SetPieceCarID[4]) REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(SetPieceCarID[4]) ENDIF IF DOES_ENTITY_EXIST(SetPieceCarID[5]) REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(SetPieceCarID[5]) ENDIF ENDIF ENDIF ENDIF ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPolice1) IF GET_TIME_POSITION_IN_RECORDING(vehPolice1) > 120000.000 IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_Caught") IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])) < 30.0 CREATE_CONVERSATION_ADV("CST3_Caught") ENDIF ELIF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_MGood") IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])) < 30.0 CREATE_CONVERSATION_ADV("CST3_MGood") ENDIF ENDIF ENDIF ENDIF ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPolice1) IF GET_TIME_POSITION_IN_RECORDING(vehPolice1) > 110000.000 AND GET_TIME_POSITION_IN_RECORDING(vehPolice1) < 133000.000 IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])) < 30.0 IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_PullT") AND NOT HAS_LABEL_BEEN_TRIGGERED("CST3_Pull") AND NOT HAS_LABEL_BEEN_TRIGGERED("CST3_PullLas") IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF GET_GAME_TIMER() > iDialogueTimer[0] iDialogueStage = 2 IF iDialogueLineCount[iDialogueStage] = -1 iDialogueLineCount[iDialogueStage] = 7 ELIF iDialogueLineCount[iDialogueStage] > 0 CREATE_CONVERSATION_ADV("CST3_PullT", CONV_PRIORITY_LOW, FALSE) REPLAY_RECORD_BACK_FOR_TIME(4.0, 8.0, REPLAY_IMPORTANCE_HIGHEST) iDialogueTimer[0] = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) iDialogueLineCount[iDialogueStage]-- ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPolice1) IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF GET_TIME_POSITION_IN_RECORDING(vehPolice1) > 120000.000 AND GET_TIME_POSITION_IN_RECORDING(vehPolice1) < 143000.000 IF GET_GAME_TIMER() > iDialogueTimer[1] IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_Pull_1") PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV("CST3_Pull", "CST3_Pull_1") ELIF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_Pull_2") PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV("CST3_Pull", "CST3_Pull_2") ELIF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_Pull_3") PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV("CST3_Pull", "CST3_Pull_3") ELIF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_Pull_4") PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV("CST3_Pull", "CST3_Pull_4") ELIF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_Pull_5") PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV("CST3_Pull", "CST3_Pull_5") ENDIF iDialogueTimer[1] = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(7500, 10000) ENDIF ENDIF ENDIF ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPolice1) IF GET_TIME_POSITION_IN_RECORDING(vehPolice1) > 133000.000 IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])) < 30.0 IF NOT HAS_LABEL_BEEN_TRIGGERED("PullOverTwo") CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) CLEAR_PED_SECONDARY_TASK(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) // OPEN_SEQUENCE_TASK(seqMain) // TASK_PLAY_ANIM(NULL, sAnimDictCar3, "point_right_trev", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_SECONDARY, 0.0, FALSE, AIK_DISABLE_ARM_IK) // TASK_PLAY_ANIM(NULL, sAnimDictCar3PullOver, "pull_over_right", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_SECONDARY, 0.0, FALSE, AIK_DISABLE_ARM_IK) // TASK_PLAY_ANIM(NULL, sAnimDictCar3, "point_right_micheal", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_SECONDARY, 0.0, FALSE, AIK_DISABLE_ARM_IK) // CLOSE_SEQUENCE_TASK(seqMain) // TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], seqMain) // CLEAR_SEQUENCE_TASK(seqMain) TASK_PLAY_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictCar3, "point_right_micheal", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_FORCE_START | AF_SECONDARY, 0.0, FALSE, AIK_DISABLE_ARM_IK) TASK_LOOK_AT_ENTITY(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], vehPlayer, 5000) PRINTLN("Car Steal 1 - TASK_PLAY_ANIM 'point_right_micheal' on Trevor") FORCE_PED_AI_AND_ANIMATION_UPDATE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) SETTIMERB(2000) IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_Pull_1") PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV("CST3_Pull", "CST3_Pull_1") ELIF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_Pull_2") PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV("CST3_Pull", "CST3_Pull_2") ELIF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_Pull_3") PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV("CST3_Pull", "CST3_Pull_3") ELIF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_Pull_4") PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV("CST3_Pull", "CST3_Pull_4") ELIF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_Pull_5") PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV("CST3_Pull", "CST3_Pull_5") ENDIF ENDIF REPLAY_RECORD_BACK_FOR_TIME(4.0, 8.0, REPLAY_IMPORTANCE_HIGHEST) SET_LABEL_AS_TRIGGERED("PullOverTwo", TRUE) ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPlayer) IF GET_TIME_POSITION_IN_RECORDING(vehPlayer) > 135000.000 SET_VEHICLE_INDICATOR_LIGHTS(vehPlayer, FALSE, TRUE) ENDIF ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) IF GET_TIME_POSITION_IN_RECORDING(vehRival1) > 145000.000 SET_VEHICLE_INDICATOR_LIGHTS(vehRival1, FALSE, TRUE) ENDIF ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival2) IF GET_TIME_POSITION_IN_RECORDING(vehRival2) > 146000.000 SET_VEHICLE_INDICATOR_LIGHTS(vehRival2, FALSE, TRUE) ENDIF ENDIF IF GET_TIME_POSITION_IN_RECORDING(vehPolice1) > 143000.000 IF NOT HAS_LABEL_BEEN_TRIGGERED("PullOverTwo") CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) CLEAR_PED_SECONDARY_TASK(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) // OPEN_SEQUENCE_TASK(seqMain) // TASK_PLAY_ANIM(NULL, sAnimDictCar3PullOver, "pull_over_right", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_SECONDARY, 0.0, FALSE, AIK_DISABLE_ARM_IK) // TASK_PLAY_ANIM(NULL, sAnimDictCar3, "point_right_micheal", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_SECONDARY, 0.0, FALSE, AIK_DISABLE_ARM_IK) // CLOSE_SEQUENCE_TASK(seqMain) // TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], seqMain) // CLEAR_SEQUENCE_TASK(seqMain) TASK_PLAY_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictCar3, "point_right_micheal", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_FORCE_START | AF_SECONDARY, 0.0, FALSE, AIK_DISABLE_ARM_IK) TASK_LOOK_AT_ENTITY(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], vehPlayer, 5000) PRINTLN("Car Steal 1 - TASK_PLAY_ANIM 'point_right_micheal' on Trevor") FORCE_PED_AI_AND_ANIMATION_UPDATE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) SETTIMERB(0) SET_LABEL_AS_TRIGGERED("PullOverTwo", TRUE) ENDIF IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() CREATE_CONVERSATION_ADV("CST3_PullLas") ENDIF ENDIF ENDIF IF IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictCar3, "point_right_micheal") IF TIMERB() < 4000 IF GET_ENTITY_ANIM_CURRENT_TIME(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictCar3, "point_right_micheal") > 0.55 SET_ENTITY_ANIM_CURRENT_TIME(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictCar3, "point_right_micheal", 0.55) ENDIF ENDIF ENDIF ENDIF ENDIF IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF HAS_LABEL_BEEN_TRIGGERED("CST3_PullLas") IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_Over") CREATE_CONVERSATION_ADV("CST3_Over") ELIF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_About") CREATE_CONVERSATION_ADV("CST3_About") ENDIF ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("ThroughTunnel") IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<2122.70, 6032.38, 48.97>>, <<2113.73, 6019.76, 55.97>>, 5.0) INFORM_STAT_SYSTEM_OF_BOOL_STAT_HAPPENED(CS1_DROVE_THROUGH_TUNNEL) CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) CLEAR_PED_SECONDARY_TASK(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) TASK_PLAY_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictCar3, "punch_air", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_FORCE_START | AF_SECONDARY, 0.0, FALSE, AIK_DISABLE_ARM_IK) FORCE_PED_AI_AND_ANIMATION_UPDATE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() PLAY_PED_AMBIENT_SPEECH(PLAYER_PED(CHAR_TREVOR), "GENERIC_CURSE_HIGH", SPEECH_PARAMS_FORCE_SHOUTED_CLEAR) ENDIF REPLAY_RECORD_BACK_FOR_TIME(5.0, 2.0) SET_LABEL_AS_TRIGGERED("ThroughTunnel", TRUE) ENDIF ENDIF // IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) // //Trailers // IF NOT DOES_ENTITY_EXIST(vehTrailer[3]) // IF DOES_ENTITY_EXIST(SetPieceCarID[33]) // IF NOT IS_VEHICLE_ATTACHED_TO_TRAILER(SetPieceCarID[33]) // vehTrailer[3] = CREATE_VEHICLE(TRAILERS2, <<313.3170, 6578.9199, 29.2749>>, 0.0) // ATTACH_VEHICLE_TO_TRAILER(SetPieceCarID[33], vehTrailer[3]) // ENDIF // ENDIF // ENDIF // // IF NOT DOES_ENTITY_EXIST(vehTrailer[4]) // IF DOES_ENTITY_EXIST(SetPieceCarID[34]) // IF NOT IS_VEHICLE_ATTACHED_TO_TRAILER(SetPieceCarID[34]) // vehTrailer[4] = CREATE_VEHICLE(TRAILERS2, <<198.9357, 6544.1406, 31.9323>>, 0.0) // ATTACH_VEHICLE_TO_TRAILER(SetPieceCarID[34], vehTrailer[4]) // ENDIF // ENDIF // ENDIF // ENDIF IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehPolice2) IF NOT DOES_BLIP_EXIST(blipPolice) SAFE_ADD_BLIP_VEHICLE(blipPolice, vehPolice1, FALSE) SET_BLIP_SCALE(blipPolice, 0.5) ENDIF IF NOT DOES_BLIP_EXIST(blipPlayer) SAFE_ADD_BLIP_VEHICLE(blipPlayer, vehPlayer, FALSE) SET_BLIP_SCALE(blipPlayer, 0.5) ENDIF SAFE_ADD_BLIP_VEHICLE(blipRival1, vehRival1, FALSE) SAFE_ADD_BLIP_VEHICLE(blipRival2, vehRival2, FALSE) IF DOES_BLIP_EXIST(blipPolice2) CLEAR_PRINTS() PRINT_ADV("S3_COP") SAFE_REMOVE_BLIP(blipPolice2) ENDIF ELSE IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("S3_HELP2") CLEAR_HELP() ENDIF SAFE_REMOVE_BLIP(blipPolice) SAFE_REMOVE_BLIP(blipPlayer) SAFE_REMOVE_BLIP(blipRival1) SAFE_REMOVE_BLIP(blipRival2) IF NOT DOES_BLIP_EXIST(blipPolice2) CLEAR_PRINTS() PRINT_ADV("CMN_GENGETBCKBK") SAFE_ADD_BLIP_VEHICLE(blipPolice2, vehPolice2, FALSE) ENDIF ENDIF IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-1765.3965, 4732.7046, 50.9022>>, <<-1786.8444, 4754.6094, 60.9306>>, 80.0, FALSE, TRUE) AND IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehPolice2) IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() PRINT_ADV("S3_STOP") ENDIF ENDIF IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-1778.072510,4740.481445,56.039520>>, <<-1953.011108,4565.767578,66.024292>>, 20.5) AND IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehPolice2) IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehPolice2), <<-1906.9209, 4621.7510, 56.0440>>) < GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehPolice1), <<-1906.9209, 4621.7510, 56.0440>>) + CLAMP(GET_ENTITY_SPEED(vehPolice1), 0.0, 7.5) //AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehPolice2), <<-1906.9209, 4621.7510, 56.0440>>) > 10.0 IF fModifyTopSpeed > -50.0 fModifyTopSpeed = fModifyTopSpeed -@ 25.0 ENDIF IF GET_ENTITY_SPEED(vehPolice2) > 7.5 AND GET_ENTITY_SPEED(vehPolice2) > GET_ENTITY_SPEED(vehPolice1) PRINTLN("GET_ENTITY_SPEED(vehPolice2) -@ 25.0 = ", GET_ENTITY_SPEED(vehPolice2) -@ 25.0) VECTOR vVelocity vVelocity = GET_ENTITY_VELOCITY(vehPolice2) SET_ENTITY_VELOCITY(vehPolice2, <>) //SET_AIR_DRAG_MULTIPLIER_FOR_PLAYERS_VEHICLE(PLAYER_ID(), 14.9) //TASK_VEHICLE_TEMP_ACTION(PLAYER_PED_ID(), vehPolice2, TEMPACT_BRAKE, 1) ENDIF ELIF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehPolice2), <<-1906.9209, 4621.7510, 56.0440>>) > GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehPolice1), <<-1906.9209, 4621.7510, 56.0440>>) + CLAMP(GET_ENTITY_SPEED(vehPolice1) + 2.5, 0.0, 10.0) //OR GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehPolice2), <<-1906.9209, 4621.7510, 56.0440>>) < 10.0 IF fModifyTopSpeed < 0.0 fModifyTopSpeed = fModifyTopSpeed +@ 25.0 ENDIF ENDIF MODIFY_VEHICLE_TOP_SPEED(vehPolice2, fModifyTopSpeed) PRINTLN("fModifyTopSpeed = ", fModifyTopSpeed) VECTOR vSteerOffset = GET_OFFSET_FROM_ENTITY_GIVEN_WORLD_COORDS(vehPolice1, GET_ENTITY_COORDS(vehPolice2)) PRINTLN("vSteerOffset = <<", vSteerOffset.X, ", ", vSteerOffset.Y, ", ", vSteerOffset.Z, ">>") IF GET_ENTITY_HEADING(vehPolice2) > 121.7529 AND GET_ENTITY_HEADING(vehPolice2) < 223.1123 AND IS_ENTITY_IN_ANGLED_AREA(vehPolice2, <<-1956.187134,4560.509766,56.030418>>, <<-1799.060913,4717.293457,66.006142>>, 16.0) SET_VEHICLE_STEER_BIAS(vehPolice2, CLAMP(vSteerOffset.X / 4.0, -0.05, 0.0)) ELIF GET_ENTITY_HEADING(vehPolice2) > 43.7849 AND GET_ENTITY_HEADING(vehPolice2) < 224.4444 AND IS_ENTITY_IN_ANGLED_AREA(vehPolice2, <<-1805.951538,4724.200195,56.044353>>, <<-1963.063354,4567.359863,66.069725>>, 3.0) SET_VEHICLE_STEER_BIAS(vehPolice2, CLAMP(vSteerOffset.X / 4.0, 0.0, 0.05)) ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("BridgeSlowDown") //TASK_VEHICLE_DRIVE_TO_COORD(PLAYER_PED_ID(), vehPolice2, <<-1906.9209, 4621.7510, 56.0440>>, 10.0, DRIVINGSTYLE_ACCURATE, POLICEB, DRIVINGMODE_AVOIDCARS_STOPFORPEDS_OBEYLIGHTS, 1.0, 1.0) //Audio PLAY_AUDIO(CAR1_BRIDGE) SET_LABEL_AS_TRIGGERED("BridgeSlowDown", TRUE) ENDIF ENDIF IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehPolice2) IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-1912.8, 4602.7, 56.01148>>, <<-1944.62061, 4574.32129, 66.013885>>, 21.5) //<<-1917.27649, 4601.47168, 56.01148>>, <<-1944.62061, 4574.32129, 66.013885>>, 21.5) IF BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(vehPolice2, DEFAULT_VEH_STOPPING_DISTANCE, 1, 0.5) IF GET_ENTITY_SPEED(vehPolice1) < 0.5 AND GET_ENTITY_SPEED(vehPolice1) < 0.5 //IF CAN_PLAYER_START_CUTSCENE() SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) WAIT_WITH_DEATH_CHECKS(100) ADVANCE_STAGE() //ENDIF ENDIF ENDIF ENDIF ENDIF //Bikers IF NOT HAS_LABEL_BEEN_TRIGGERED("BikerSpawn1") SET_LABEL_AS_TRIGGERED("BikerSpawn1", OVERRIDE_VEHICLE_DRIVER_MODEL(SetPieceCarID[3], G_M_Y_LOST_01)) ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("BikerSpawn2") SET_LABEL_AS_TRIGGERED("BikerSpawn2", OVERRIDE_VEHICLE_DRIVER_MODEL(SetPieceCarID[4], G_M_Y_LOST_01)) ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("BikerSpawn3") SET_LABEL_AS_TRIGGERED("BikerSpawn3", OVERRIDE_VEHICLE_DRIVER_MODEL(SetPieceCarID[5], G_M_Y_LOST_01)) ENDIF IF DOES_ENTITY_EXIST(SetPieceCarID[3]) AND NOT IS_ENTITY_DEAD(SetPieceCarID[3]) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(SetPieceCarID[3]) IF DOES_ENTITY_EXIST(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[3])) IF IS_PED_INJURED(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[3])) OR NOT IS_PED_INJURED(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[3])) AND GET_ENTITY_HEALTH(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[3])) < 200 OR IS_PED_SHOOTING_IN_AREA(PLAYER_PED_ID(), GET_ENTITY_COORDS(SetPieceCarID[3]) - <<50.0, 50.0, 50.0>>, GET_ENTITY_COORDS(SetPieceCarID[3]) + <<25.0, 25.0, 25.0>>, FALSE) STOP_PLAYBACK_RECORDED_VEHICLE(SetPieceCarID[3]) IF DOES_ENTITY_EXIST(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[3])) AND NOT IS_PED_INJURED(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[3])) IF NOT IS_PED_IN_COMBAT(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[3])) GIVE_WEAPON_TO_PED(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[3]), WEAPONTYPE_PISTOL, INFINITE_AMMO) SET_PED_KEEP_TASK(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[3]), TRUE) TASK_COMBAT_PED(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[3]), PLAYER_PED_ID()) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF DOES_ENTITY_EXIST(SetPieceCarID[4]) AND NOT IS_ENTITY_DEAD(SetPieceCarID[4]) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(SetPieceCarID[4]) IF DOES_ENTITY_EXIST(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[4])) IF IS_PED_INJURED(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[4])) OR NOT IS_PED_INJURED(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[4])) AND GET_ENTITY_HEALTH(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[4])) < 200 OR IS_PED_SHOOTING_IN_AREA(PLAYER_PED_ID(), GET_ENTITY_COORDS(SetPieceCarID[4]) - <<50.0, 50.0, 50.0>>, GET_ENTITY_COORDS(SetPieceCarID[4]) + <<25.0, 25.0, 25.0>>, FALSE) STOP_PLAYBACK_RECORDED_VEHICLE(SetPieceCarID[4]) IF DOES_ENTITY_EXIST(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[4])) AND NOT IS_PED_INJURED(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[4])) IF NOT IS_PED_IN_COMBAT(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[4])) GIVE_WEAPON_TO_PED(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[4]), WEAPONTYPE_SMG, INFINITE_AMMO) SET_PED_KEEP_TASK(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[4]), TRUE) TASK_COMBAT_PED(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[4]), PLAYER_PED_ID()) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF DOES_ENTITY_EXIST(SetPieceCarID[5]) AND NOT IS_ENTITY_DEAD(SetPieceCarID[5]) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(SetPieceCarID[5]) IF DOES_ENTITY_EXIST(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[5])) IF IS_PED_INJURED(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[5])) OR NOT IS_PED_INJURED(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[5])) AND GET_ENTITY_HEALTH(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[5])) < 200 OR IS_PED_SHOOTING_IN_AREA(PLAYER_PED_ID(), GET_ENTITY_COORDS(SetPieceCarID[5]) - <<50.0, 50.0, 50.0>>, GET_ENTITY_COORDS(SetPieceCarID[5]) + <<25.0, 25.0, 25.0>>, FALSE) STOP_PLAYBACK_RECORDED_VEHICLE(SetPieceCarID[5]) IF DOES_ENTITY_EXIST(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[5])) AND NOT IS_PED_INJURED(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[5])) IF NOT IS_PED_IN_COMBAT(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[5])) GIVE_WEAPON_TO_PED(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[5]), WEAPONTYPE_SAWNOFFSHOTGUN, INFINITE_AMMO) SET_PED_KEEP_TASK(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[5]), TRUE) TASK_COMBAT_PED(GET_PED_IN_VEHICLE_SEAT(SetPieceCarID[5]), PLAYER_PED_ID()) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //Cutscene IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPolice1) IF GET_TIME_POSITION_IN_RECORDING(vehPolice1) > 130000.0 REQUEST_CUTSCENE("Car_steal_3_mcs_3") //Request Cutscene Variations - Car_steal_3_mcs_3 IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Franklin", PLAYER_PED(CHAR_FRANKLIN)) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Michael", PLAYER_PED(CHAR_MICHAEL)) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Trevor", PLAYER_PED(CHAR_TREVOR)) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Racer_that_dies", pedRival1) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Racer_that_runsaway", pedRival2) ENDIF ENDIF ENDIF //Anim Flag SET_PED_RESET_FLAG(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PRF_AllowUpdateIfNoCollisionLoaded, TRUE) //Collision IF NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) OR NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival2) OR NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPlayer) SET_ENTITY_COLLISION(vehRival1, TRUE) SET_ENTITY_COLLISION(vehRival2, TRUE) SET_ENTITY_COLLISION(vehPlayer, TRUE) SET_ENTITY_INVINCIBLE(vehRival1, FALSE) SET_ENTITY_INVINCIBLE(vehRival2, FALSE) SET_ENTITY_INVINCIBLE(vehPlayer, FALSE) ENDIF ENDIF IF CLEANUP_STAGE() //Cleanup (Blips, peds, variables etc.) PLAY_AUDIO(CAR1_BRIDGE) KILL_CHASE_HINT_CAM(localChaseHintCamStruct) //Audio Scene IF IS_AUDIO_SCENE_ACTIVE("CAR_1_BIKE_CHASE_MAIN") STOP_AUDIO_SCENE("CAR_1_BIKE_CHASE_MAIN") ENDIF IF IS_AUDIO_SCENE_ACTIVE("CAR_1_RACE_CARS_FOCUS_CAM") STOP_AUDIO_SCENE("CAR_1_RACE_CARS_FOCUS_CAM") ENDIF IF IS_AUDIO_SCENE_ACTIVE("CAR_1_BIKE_ENTER_TUNNEL") STOP_AUDIO_SCENE("CAR_1_BIKE_ENTER_TUNNEL") ENDIF IF IS_AUDIO_SCENE_ACTIVE("CAR_1_BIKE_PASS_THE_LOST") STOP_AUDIO_SCENE("CAR_1_BIKE_PASS_THE_LOST") ENDIF IF DOES_ENTITY_EXIST(vehPolice1) REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(vehPolice1) ENDIF IF DOES_ENTITY_EXIST(SetPieceCarID[3]) REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(SetPieceCarID[3]) ENDIF IF DOES_ENTITY_EXIST(SetPieceCarID[4]) REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(SetPieceCarID[4]) ENDIF IF DOES_ENTITY_EXIST(SetPieceCarID[5]) REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(SetPieceCarID[5]) ENDIF CLEAR_HELP() SAFE_REMOVE_BLIP(blipRival1) SAFE_REMOVE_BLIP(blipRival2) SAFE_REMOVE_BLIP(blipPolice) SAFE_REMOVE_BLIP(blipPolice2) // IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPolice1) // STOP_PLAYBACK_RECORDED_VEHICLE(vehPolice1) // ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPlayer) STOP_PLAYBACK_RECORDED_VEHICLE(vehPlayer) ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) STOP_PLAYBACK_RECORDED_VEHICLE(vehRival1) ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival2) STOP_PLAYBACK_RECORDED_VEHICLE(vehRival2) ENDIF SET_VEHICLE_INDICATOR_LIGHTS(vehPlayer, FALSE, FALSE) SET_VEHICLE_INDICATOR_LIGHTS(vehRival1, FALSE, FALSE) SET_VEHICLE_INDICATOR_LIGHTS(vehRival2, FALSE, FALSE) CLEANUP_UBER_PLAYBACK(FALSE) SET_ENTITY_COLLISION(vehRival1, TRUE) SET_ENTITY_COLLISION(vehRival2, TRUE) SET_ENTITY_COLLISION(vehPlayer, TRUE) eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1) ENDIF ENDPROC PROC CutsceneBridge() IF INIT_STAGE() SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) //Wanted SET_MAX_WANTED_LEVEL(0) SET_WANTED_LEVEL_MULTIPLIER(0.0) //Ambulances etc. ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE, FALSE) ENABLE_DISPATCH_SERVICE(DT_POLICE_HELICOPTER, FALSE) ENABLE_DISPATCH_SERVICE(DT_FIRE_DEPARTMENT, FALSE) ENABLE_DISPATCH_SERVICE(DT_SWAT_AUTOMOBILE, FALSE) ENABLE_DISPATCH_SERVICE(DT_AMBULANCE_DEPARTMENT, FALSE) SET_VEHICLE_SIREN(vehPolice1, TRUE) //SET_SIREN_WITH_NO_DRIVER(vehPolice1, TRUE) SET_VEHICLE_SIREN(vehPolice2, TRUE) //SET_SIREN_WITH_NO_DRIVER(vehPolice2, TRUE) SET_VEHICLE_DOORS_LOCKED(vehRival1, VEHICLELOCK_UNLOCKED) SET_VEHICLE_DOORS_LOCKED(vehRival2, VEHICLELOCK_UNLOCKED) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], TRUE) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE) IF DOES_ENTITY_EXIST(vehPlayer) REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(vehPlayer) ENDIF IF DOES_ENTITY_EXIST(pedRival1) REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(vehRival1) ENDIF IF DOES_ENTITY_EXIST(pedRival2) REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(vehRival2) ENDIF //Radar bRadar = FALSE #IF IS_DEBUG_BUILD IF bAutoSkipping = FALSE #ENDIF //Cutscene REQUEST_CUTSCENE("Car_steal_3_mcs_3", CUTSCENE_REQUESTED_FROM_Z_SKIP) #IF IS_DEBUG_BUILD ENDIF #ENDIF IF SKIPPED_STAGE() //Audio PLAY_AUDIO(CAR1_BRIDGE) //Warp and load area SET_PED_POSITION(PLAYER_PED_ID(), <<-1921.7319, 4604.9102, 56.0562>> + <<0.36, -0.37, -0.0>>, 135.0260, FALSE) IF NOT bReplaySkip LOAD_SCENE_ADV(<<-1917.8722, 4608.7822, 56.0547>>, 50.0) ENDIF //Camera Behind Player SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) //Fade In // IF IS_SCREEN_FADED_OUT() // DO_SCREEN_FADE_IN(500) // ENDIF ENDIF ELSE //Request Cutscene Variations - Car_steal_3_mcs_3 IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Franklin", PLAYER_PED(CHAR_FRANKLIN)) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Michael", PLAYER_PED(CHAR_MICHAEL)) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Trevor", PLAYER_PED(CHAR_TREVOR)) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Racer_that_dies", pedRival1) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Racer_that_runsaway", pedRival2) ENDIF SWITCH iCutsceneStage CASE 0 IF HAS_CUTSCENE_LOADED_WITH_FAILSAFE() REQUEST_VEHICLE_ASSET(CHEETAH, ENUM_TO_INT(VRF_REQUEST_ENTRY_ANIMS)) REGISTER_ENTITY_FOR_CUTSCENE(PLAYER_PED(CHAR_FRANKLIN), "Franklin", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(PLAYER_PED(CHAR_TREVOR), "Trevor", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(pedRival1, "Racer_that_dies", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(pedRival2, "Racer_that_runsaway", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(vehPlayer, "Franklins_car", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(vehRival1, "Car_Racer_runsaway", CU_ANIMATE_EXISTING_SCRIPT_ENTITY, DEFAULT, CEO_IS_CASCADE_SHADOW_FOCUS_ENTITY_DURING_EXIT) REGISTER_ENTITY_FOR_CUTSCENE(vehRival2, "Car_Racer_dies", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(vehPolice1, "Trevors_police_bike", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(vehPolice2, "Michaels_Police_bike", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE) START_CUTSCENE() REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST) WAIT_WITH_DEATH_CHECKS(0) SET_ROADS_IN_AREA(<<-1928.3759, 4597.9775, 56.0588>> - <<1000.0, 1000.0, 1000.0>>, <<-1928.3759, 4597.9775, 56.0588>> + <<1000.0, 1000.0, 1000.0>>, FALSE) CLEAR_AREA(<<-1928.3759, 4597.9775, 56.0588>>, 2000.0, TRUE) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPolice1) STOP_PLAYBACK_RECORDED_VEHICLE(vehPolice1) ENDIF SET_VEHICLE_ENGINE_ON(vehPlayer, FALSE, TRUE) SET_VEHICLE_ENGINE_ON(vehRival1, FALSE, TRUE) SET_VEHICLE_ENGINE_ON(vehRival2, FALSE, TRUE) SET_VEHICLE_ENGINE_ON(vehPolice1, FALSE, TRUE) SET_VEHICLE_ENGINE_ON(vehPolice2, FALSE, TRUE) REQUEST_VEHICLE_ASSET(F620) IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(500) ENDIF ADVANCE_CUTSCENE() ENDIF BREAK CASE 1 SET_FORCE_HD_VEHICLE(vehRival1, TRUE) SET_FORCE_HD_VEHICLE(vehRival2, TRUE) IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Racer_that_dies") SET_PED_POSITION(pedRival1, <<-1915.625732, 4600.510254, 56.0301>>, 141.4507, FALSE) TASK_SMART_FLEE_PED(pedRival1, PLAYER_PED_ID(), 500.0, -1) FORCE_PED_MOTION_STATE(pedRival1, MS_ON_FOOT_RUN) SET_PED_KEEP_TASK(pedRival1, TRUE) //SET_PED_AS_NO_LONGER_NEEDED(pedRival1) ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Racer_that_runsaway") SET_PED_POSITION(pedRival2, <<-1921.257690, 4590.634766, 56.0301>>, 141.4507, FALSE) TASK_SMART_FLEE_PED(pedRival2, PLAYER_PED_ID(), 500.0, -1) FORCE_PED_MOTION_STATE(pedRival2, MS_ON_FOOT_RUN) SET_PED_KEEP_TASK(pedRival2, TRUE) //SET_PED_AS_NO_LONGER_NEEDED(pedRival2) ENDIF IF GET_PED_PROP_INDEX(PLAYER_PED_ID(), ANCHOR_HEAD) <> -1 OR IS_PED_WEARING_HELMET(PLAYER_PED_ID()) IF GET_CUTSCENE_TIME() > ROUND(46.687057 * 1000.0) CLEAR_PED_PROP(PLAYER_PED_ID(), ANCHOR_HEAD) REMOVE_PED_HELMET(PLAYER_PED_ID(), TRUE) ENDIF ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Michael") //SET_PED_POSITION(PLAYER_PED_ID(), <<-1917.8722, 4608.7822, 56.0547>>, 135.0620, FALSE) CLEAR_PED_PROP(PLAYER_PED_ID(), ANCHOR_HEAD) REMOVE_PED_HELMET(PLAYER_PED_ID(), TRUE) //CLEAR_PED_PROP(PLAYER_PED_ID(), ANCHOR_HEAD) //TASK_ENTER_VEHICLE(PLAYER_PED_ID(), vehRival1, -1, VS_DRIVER, PEDMOVE_WALK, ECF_WARP_ENTRY_POINT) SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehRival1) //Camera Behind Player // SET_GAMEPLAY_CAM_RELATIVE_HEADING(141.1 - GET_ENTITY_HEADING(PLAYER_PED_ID())) // SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Franklin") //SET_PED_POSITION(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], <<-1910.9945, 4615.9185, 56.0528>>, 23.9654, FALSE) //TASK_ENTER_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], vehPlayer, -1, VS_DRIVER, PEDMOVE_WALK) SET_PED_INTO_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], vehPlayer) ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Trevor") //SET_PED_POSITION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<-1921.7319, 4604.9102, 56.0562>> + <<0.36, -0.37, -0.0>>, 135.0260, FALSE) CLEAR_PED_PROP(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], ANCHOR_HEAD) REMOVE_PED_HELMET(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE) //CLEAR_PED_PROP(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], ANCHOR_HEAD) // OPEN_SEQUENCE_TASK(seqMain) // TASK_PAUSE(NULL, 1000) // TASK_ENTER_VEHICLE(NULL, vehRival2, -1, VS_DRIVER, PEDMOVE_WALK) // CLOSE_SEQUENCE_TASK(seqMain) // TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], seqMain) // CLEAR_SEQUENCE_TASK(seqMain) //TASK_ENTER_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], vehRival2, -1, VS_DRIVER, PEDMOVE_WALK) SET_PED_INTO_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], vehRival2) ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Franklins_car") //SET_VEHICLE_FIXED(vehPlayer) SET_ENTITY_INVINCIBLE(vehPlayer, FALSE) //SET_VEHICLE_POSITION(vehPlayer, <<-1912.547, 4616.3615, 56.0427>>, 134.6697) SET_VEHICLE_DOORS_SHUT(vehPlayer) SET_LABEL_AS_TRIGGERED("WheelCompression[vehPlayer](Car_steal_3_mcs_3)", TRUE) //SET_VEHICLE_ON_GROUND_PROPERLY(vehPlayer) ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("WheelCompression[vehPlayer](Car_steal_3_mcs_3)") SET_VEHICLE_USE_CUTSCENE_WHEEL_COMPRESSION(vehPlayer) ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Car_Racer_runsaway") //SET_VEHICLE_FIXED(vehRival1) SET_ENTITY_INVINCIBLE(vehRival1, FALSE) //SET_VEHICLE_POSITION(vehRival1, <<-1923.0222, 4605.4929, 56.0440>>, 135.0284) SET_VEHICLE_DOORS_SHUT(vehRival1) SET_LABEL_AS_TRIGGERED("WheelCompression[vehRival1](Car_steal_3_mcs_3)", TRUE) //SET_VEHICLE_ON_GROUND_PROPERLY(vehRival1) ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("WheelCompression[vehRival1](Car_steal_3_mcs_3)") SET_VEHICLE_USE_CUTSCENE_WHEEL_COMPRESSION(vehRival1) ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Car_Racer_dies") //SET_VEHICLE_FIXED(vehRival2) SET_ENTITY_INVINCIBLE(vehRival2, FALSE) //SET_VEHICLE_POSITION(vehRival2, <<-1919.3284, 4609.285, 56.0532>>, 135.0786) SET_VEHICLE_DOORS_SHUT(vehRival2) SET_LABEL_AS_TRIGGERED("WheelCompression[vehRival2](Car_steal_3_mcs_3)", TRUE) //SET_VEHICLE_ON_GROUND_PROPERLY(vehRival2) ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("WheelCompression[vehRival2](Car_steal_3_mcs_3)") SET_VEHICLE_USE_CUTSCENE_WHEEL_COMPRESSION(vehRival2) ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Trevors_police_bike") SET_VEHICLE_POSITION(vehPolice1, <<-1909.1063, 4619.5996, 56.0440>>, 135.7088) SET_LABEL_AS_TRIGGERED("WheelCompression[vehPolice1](Car_steal_3_mcs_3)", TRUE) //SET_VEHICLE_ON_GROUND_PROPERLY(vehPolice1) ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("WheelCompression[vehPolice1](Car_steal_3_mcs_3)") SET_VEHICLE_USE_CUTSCENE_WHEEL_COMPRESSION(vehPolice1) ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Michaels_Police_bike") SET_VEHICLE_POSITION(vehPolice2, <<-1907.5037, 4618.1211, 56.0526>>, 137.0636) SET_LABEL_AS_TRIGGERED("WheelCompression[vehPolice2](Car_steal_3_mcs_3)", TRUE) //SET_VEHICLE_ON_GROUND_PROPERLY(vehPolice2) ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("WheelCompression[vehPolice2](Car_steal_3_mcs_3)") SET_VEHICLE_USE_CUTSCENE_WHEEL_COMPRESSION(vehPolice2) ENDIF IF HAS_CUTSCENE_FINISHED() SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) WAIT_WITH_DEATH_CHECKS(0) REPLAY_STOP_EVENT() REPLAY_RECORD_BACK_FOR_TIME(0.0, 8.0, REPLAY_IMPORTANCE_HIGHEST) ADVANCE_STAGE() ENDIF BREAK ENDSWITCH ENDIF IF CLEANUP_STAGE() //Cleanup (Blips, peds, variables etc.) REMOVE_CUTSCENE() WHILE HAS_CUTSCENE_LOADED() WAIT_WITH_DEATH_CHECKS(0) ENDWHILE //TEMP FOR REGISTERING ENTITY BUG! // SET_ENTITY_INVINCIBLE(vehPlayer, FALSE) // SET_ENTITY_PROOFS(vehPlayer, FALSE, FALSE, FALSE, FALSE, FALSE) // SET_ENTITY_INVINCIBLE(vehRival1, FALSE) // SET_ENTITY_PROOFS(vehRival1, FALSE, FALSE, FALSE, FALSE, FALSE) // SET_ENTITY_INVINCIBLE(vehRival2, FALSE) // SET_ENTITY_PROOFS(vehRival2, FALSE, FALSE, FALSE, FALSE, FALSE) // SET_ENTITY_INVINCIBLE(vehPolice1, FALSE) // SET_ENTITY_PROOFS(vehPolice1, FALSE, FALSE, FALSE, FALSE, FALSE) // SET_ENTITY_INVINCIBLE(vehPolice2, FALSE) // SET_ENTITY_PROOFS(vehPolice2, FALSE, FALSE, FALSE, FALSE, FALSE) //SAFE_DELETE_PED(pedRival1) //SAFE_DELETE_PED(pedRival2) CLEAR_AREA(<<-1907.4462, 4621.8071, 56.0429>>, 1000.0, TRUE) SAFE_REMOVE_BLIP(blipPlayer) SAFE_REMOVE_BLIP(blipRival1) SAFE_REMOVE_BLIP(blipRival2) eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1) ENDIF ENDPROC FUNC VECTOR ADD_VECTORS(VECTOR vVector1, VECTOR vVector2) RETURN <> ENDFUNC FUNC FLOAT CLOSEST_TIME_POSITION_IN_RECORDING_TO_POINT(VECTOR vPoint, INT iRecordingNumber, STRING sRecordingName = NULL, INT iIterations = 10) FLOAT fSeek FLOAT fRange fSeek = GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(iRecordingNumber, sRecordingName) / 2 fRange = GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(iRecordingNumber, sRecordingName) / 2 INT i FOR i = 0 TO iIterations IF GET_DISTANCE_BETWEEN_COORDS(vPoint, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(iRecordingNumber, CLAMP(fSeek - fRange, 0.0, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(iRecordingNumber, sRecordingName)), sRecordingName)) < GET_DISTANCE_BETWEEN_COORDS(vPoint, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(iRecordingNumber, CLAMP(fSeek + fRange, 0.0, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(iRecordingNumber, sRecordingName)), sRecordingName)) fRange /= 2 fSeek -= fRange ENDIF IF GET_DISTANCE_BETWEEN_COORDS(vPoint, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(iRecordingNumber, CLAMP(fSeek - fRange, 0.0, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(iRecordingNumber, sRecordingName)), sRecordingName)) > GET_DISTANCE_BETWEEN_COORDS(vPoint, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(iRecordingNumber, CLAMP(fSeek + fRange, 0.0, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(iRecordingNumber, sRecordingName)), sRecordingName)) fRange /= 2 fSeek += fRange ENDIF ENDFOR RETURN fSeek ENDFUNC VEHICLE_INDEX vehSwitch VECTOR vSwitchCoords VECTOR vSwitchRot FLOAT fSwitchSpeed BOOL bFranklinFinishFirst, bTrevorFinishFirst, bMichaelFinishFirst BOOL bFranklinFinishSecond, bTrevorFinishSecond, bMichaelFinishSecond PROC DriveHome() IF INIT_STAGE() THEFEED_PAUSE() //Audio PLAY_AUDIO(CAR1_BRIDGE) //Checkpoint SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(ENUM_TO_INT(replayDriveHome), "stageDriveHome", TRUE, FALSE, PLAYER_PED(CHAR_FRANKLIN)) //Wanted SET_MAX_WANTED_LEVEL(0) SET_WANTED_LEVEL_MULTIPLIER(0.0) //Ambulances etc. ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE, FALSE) ENABLE_DISPATCH_SERVICE(DT_POLICE_HELICOPTER, FALSE) ENABLE_DISPATCH_SERVICE(DT_FIRE_DEPARTMENT, FALSE) ENABLE_DISPATCH_SERVICE(DT_SWAT_AUTOMOBILE, FALSE) ENABLE_DISPATCH_SERVICE(DT_AMBULANCE_DEPARTMENT, FALSE) SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) SET_SELECTOR_PED_PRIORITY(sSelectorPeds, SELECTOR_PED_TREVOR, SELECTOR_PED_MICHAEL, SELECTOR_PED_FRANKLIN) SET_PED_CAN_SWITCH_WEAPON(PLAYER_PED_ID(), TRUE) SET_CINEMATIC_BUTTON_ACTIVE(TRUE) SET_VEHICLE_STRONG(vehPlayer, TRUE) SET_VEHICLE_STRONG(vehRival1, TRUE) SET_VEHICLE_STRONG(vehRival2, TRUE) SET_VEHICLE_IS_RACING(vehPlayer, TRUE) SET_VEHICLE_IS_RACING(vehRival1, TRUE) SET_VEHICLE_IS_RACING(vehRival2, TRUE) SET_VEHICLE_USE_ALTERNATE_HANDLING(vehPlayer, TRUE) SET_VEHICLE_USE_ALTERNATE_HANDLING(vehRival1, TRUE) SET_VEHICLE_USE_ALTERNATE_HANDLING(vehRival2, TRUE) SET_VEHICLE_USE_MORE_RESTRICTIVE_SPAWN_CHECKS(vehPlayer, TRUE) SET_VEHICLE_USE_MORE_RESTRICTIVE_SPAWN_CHECKS(vehRival1, TRUE) SET_VEHICLE_USE_MORE_RESTRICTIVE_SPAWN_CHECKS(vehRival2, TRUE) iCarHealth[CHASE_CAR_F620] = GET_ENTITY_HEALTH(vehPlayer) fCarGasTank[CHASE_CAR_F620] = GET_VEHICLE_PETROL_TANK_HEALTH(vehPlayer) fCarEngineHealth[CHASE_CAR_F620] = GET_VEHICLE_ENGINE_HEALTH(vehPlayer) iCarHealth[CHASE_CAR_ENTITYXF] = GET_ENTITY_HEALTH(vehRival1) fCarGasTank[CHASE_CAR_ENTITYXF] = GET_VEHICLE_PETROL_TANK_HEALTH(vehRival1) fCarEngineHealth[CHASE_CAR_ENTITYXF] = GET_VEHICLE_ENGINE_HEALTH(vehRival1) iCarHealth[CHASE_CAR_CHEETAH] = GET_ENTITY_HEALTH(vehRival2) fCarGasTank[CHASE_CAR_CHEETAH] = GET_VEHICLE_PETROL_TANK_HEALTH(vehRival2) fCarEngineHealth[CHASE_CAR_CHEETAH] = GET_VEHICLE_ENGINE_HEALTH(vehRival2) //SET_VEH_RADIO_STATION(vehPlayer, ) SET_VEH_RADIO_STATION(vehRival1, "RADIO_02_POP") SET_VEHICLE_RADIO_ENABLED(vehRival1, TRUE) SET_VEH_RADIO_STATION(vehRival2, "RADIO_09_HIPHOP_OLD") SET_VEHICLE_RADIO_ENABLED(vehRival2, TRUE) //SET_PED_PROP_INDEX(PLAYER_PED(CHAR_MICHAEL), ANCHOR_EARS, 0) //SET_PED_PROP_INDEX(PLAYER_PED(CHAR_FRANKLIN), ANCHOR_EARS, 0) //SET_PED_PROP_INDEX(PLAYER_PED(CHAR_TREVOR), ANCHOR_EARS, 0) SAFE_DELETE_OBJECT(objID) objID = CREATE_OBJECT_NO_OFFSET(P_LD_ID_CARD_01, <<-1918.7059, 4604.1597, 56.035>>, FALSE, FALSE) IF DOES_ENTITY_EXIST(objID) //PLACE_OBJECT_ON_GROUND_PROPERLY(objID) SET_ENTITY_ROTATION(objID, <<-90.0, 0.0, 12.6>>) ENDIF SET_MODEL_AS_NO_LONGER_NEEDED(P_LD_ID_CARD_01) IF GET_PLAYER_PED_ENUM(PLAYER_PED_ID()) = CHAR_FRANKLIN SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehPlayer, TRUE) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehRival1, FALSE) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehRival2, FALSE) ELIF GET_PLAYER_PED_ENUM(PLAYER_PED_ID()) = CHAR_MICHAEL SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehPlayer, FALSE) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehRival1, TRUE) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehRival2, FALSE) ELIF GET_PLAYER_PED_ENUM(PLAYER_PED_ID()) = CHAR_TREVOR SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehPlayer, FALSE) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehRival1, FALSE) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehRival2, TRUE) ENDIF SET_LABEL_AS_TRIGGERED("CMN_GENGETIN", FALSE) //Audio Scene IF NOT IS_AUDIO_SCENE_ACTIVE("CAR_1_GET_TO_GARAGE") START_AUDIO_SCENE("CAR_1_GET_TO_GARAGE") ENDIF bRadar = FALSE PRINT_ADV("S3_DRIVE") HIDE_HUD_AND_RADAR_THIS_FRAME() HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_WANTED_STARS) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_WEAPON_ICON) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_CASH) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_MP_CASH) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_MP_MESSAGE) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_VEHICLE_NAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_AREA_NAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_DISTRICT_NAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_STREET_NAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_HELP_TEXT) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_FLOATING_HELP_TEXT_1) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_FLOATING_HELP_TEXT_2) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_CASH_CHANGE) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_RETICLE) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_SUBTITLE_TEXT) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_RADIO_STATIONS) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_SAVING_GAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_FEED) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_WEAPON_WHEEL) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_WEAPON_WHEEL_STATS) bDelayHUD = TRUE bSetUncapped = TRUE SETTIMERB(0) IF NOT DOES_BLIP_EXIST(blipGarage) SAFE_ADD_BLIP_LOCATION(blipGarage, vGarage, TRUE) ENDIF bWaitForPlayer = TRUE iDialogueTimer[0] = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(15000, 25000) //Make sure you don't taunt them for overtaking immediately! bFranklinFinishFirst = FALSE bTrevorFinishFirst = FALSE bMichaelFinishFirst = FALSE bFranklinFinishSecond = FALSE bTrevorFinishSecond = FALSE bMichaelFinishSecond = FALSE CLEAR_AREA(<<-1907.4462, 4621.8071, 56.0429>>, 200.0, TRUE) SET_ROADS_BACK_TO_ORIGINAL(<<-1928.3759, 4597.9775, 56.0588>> - <<1000.0, 1000.0, 1000.0>>, <<-1928.3759, 4597.9775, 56.0588>> + <<1000.0, 1000.0, 1000.0>>) IF SKIPPED_STAGE() CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID()) CLEAR_PED_PROP(PLAYER_PED_ID(), ANCHOR_HEAD) CLEAR_PED_PROP(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], ANCHOR_HEAD) SET_PED_POSITION(PLAYER_PED_ID(), <<-1921.7319, 4604.9102, 56.0562>> + <<0.36, -0.37, -0.0>>, 135.0260, FALSE) SET_PED_POSITION(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], <<-1910.9945, 4615.9185, 56.0528>>, 23.9654, FALSE) SET_PED_POSITION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<-1917.8722, 4608.7822, 56.0547>>, 135.0620, FALSE) //SET_VEHICLE_FIXED(vehPlayer) //SET_VEHICLE_FIXED(vehRival1) //SET_VEHICLE_FIXED(vehRival2) SET_ENTITY_INVINCIBLE(vehRival1, FALSE) SET_ENTITY_INVINCIBLE(vehRival2, FALSE) SET_ENTITY_INVINCIBLE(vehPlayer, FALSE) SET_VEHICLE_POSITION(vehPolice1, <<-1909.1063, 4619.5996, 56.0440>>, 135.7088) SET_VEHICLE_POSITION(vehPolice2, <<-1907.5037, 4618.1211, 56.0526>>, 137.0636) SET_VEHICLE_POSITION(vehPlayer, <<-1912.547, 4616.3615, 56.0427>>, 134.6697) SET_VEHICLE_POSITION(vehRival1, <<-1923.0222, 4605.4929, 56.0440>>, 135.0786) SET_VEHICLE_POSITION(vehRival2, <<-1919.3284, 4609.285, 56.0532>>, 135.0284) SET_VEHICLE_SIREN(vehPolice1, TRUE) //SET_SIREN_WITH_NO_DRIVER(vehPolice1, TRUE) SET_VEHICLE_SIREN(vehPolice2, TRUE) //SET_SIREN_WITH_NO_DRIVER(vehPolice2, TRUE) //Load Scene IF NOT bReplaySkip LOAD_SCENE_ADV(<<-1917.8722, 4608.7822, 56.0547>>, 50.0) ENDIF SET_VEHICLE_ON_GROUND_PROPERLY(vehPolice1) SET_VEHICLE_ON_GROUND_PROPERLY(vehPolice2) SET_VEHICLE_ON_GROUND_PROPERLY(vehPlayer) SET_VEHICLE_ON_GROUND_PROPERLY(vehRival1) SET_VEHICLE_ON_GROUND_PROPERLY(vehRival2) REQUEST_VEHICLE_ASSET(CHEETAH, ENUM_TO_INT(VRF_REQUEST_ENTRY_ANIMS)) WHILE NOT HAS_VEHICLE_ASSET_LOADED(CHEETAH) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE WHILE NOT HAVE_ALL_STREAMING_REQUESTS_COMPLETED(PLAYER_PED(CHAR_MICHAEL)) OR NOT HAVE_ALL_STREAMING_REQUESTS_COMPLETED(PLAYER_PED(CHAR_TREVOR)) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE CLEAR_AREA(<<-1917.8722, 4608.7822, 56.0547>>, 200.0, TRUE) // IF IS_VEHICLE_SEAT_FREE(vehPlayer) // TASK_ENTER_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], vehPlayer, -1, VS_DRIVER, PEDMOVE_WALK) // ENDIF // TASK_ENTER_VEHICLE(PLAYER_PED_ID(), vehRival1, -1, VS_DRIVER, PEDMOVE_WALK, ECF_WARP_ENTRY_POINT) // IF IS_VEHICLE_SEAT_FREE(vehRival2) // OPEN_SEQUENCE_TASK(seqMain) // TASK_PAUSE(NULL, 1000) // TASK_ENTER_VEHICLE(NULL, vehRival2, -1, VS_DRIVER, PEDMOVE_WALK) // CLOSE_SEQUENCE_TASK(seqMain) // TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], seqMain) // CLEAR_SEQUENCE_TASK(seqMain) // ENDIF SET_PED_INTO_VEHICLE(PLAYER_PED(CHAR_FRANKLIN), vehPlayer) SET_PED_INTO_VEHICLE(PLAYER_PED(CHAR_MICHAEL), vehRival1) SET_PED_INTO_VEHICLE(PLAYER_PED(CHAR_TREVOR), vehRival2) IF DOES_ENTITY_EXIST(pedRival1) AND NOT IS_PED_INJURED(pedRival1) SET_PED_POSITION(pedRival1, <<-1915.625732, 4600.510254, 56.0301>>, 141.4507, FALSE) TASK_SMART_FLEE_PED(pedRival1, PLAYER_PED_ID(), 500.0, -1) FORCE_PED_MOTION_STATE(pedRival1, MS_ON_FOOT_RUN) SET_PED_KEEP_TASK(pedRival1, TRUE) SET_PED_AS_NO_LONGER_NEEDED(pedRival1) ENDIF IF DOES_ENTITY_EXIST(pedRival2) AND NOT IS_PED_INJURED(pedRival2) SET_PED_POSITION(pedRival2, <<-1921.257690, 4590.634766, 56.0301>>, 141.4507, FALSE) TASK_SMART_FLEE_PED(pedRival2, PLAYER_PED_ID(), 500.0, -1) FORCE_PED_MOTION_STATE(pedRival2, MS_ON_FOOT_RUN) SET_PED_KEEP_TASK(pedRival2, TRUE) SET_PED_AS_NO_LONGER_NEEDED(pedRival2) ENDIF //Camera Behind Player SET_GAMEPLAY_CAM_RELATIVE_HEADING(141.1 - GET_ENTITY_HEADING(PLAYER_PED_ID())) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) WAIT_WITH_DEATH_CHECKS(1000) WHILE NOT IS_VEHICLE_HIGH_DETAIL(vehRival1) OR NOT IS_VEHICLE_HIGH_DETAIL(vehRival2) SET_FORCE_HD_VEHICLE(vehRival1, TRUE) SET_FORCE_HD_VEHICLE(vehRival2, TRUE) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE //Fade In IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(500) ENDIF ENDIF ELSE REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME() //Fix for bug 2197058 IF TIMERB() < 800 AND NOT IS_SELECTOR_ONSCREEN(FALSE) AND NOT IS_SELECTOR_ONSCREEN(TRUE) HIDE_HUD_AND_RADAR_THIS_FRAME() HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_WANTED_STARS) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_WEAPON_ICON) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_CASH) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_MP_CASH) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_MP_MESSAGE) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_VEHICLE_NAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_AREA_NAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_DISTRICT_NAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_STREET_NAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_HELP_TEXT) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_FLOATING_HELP_TEXT_1) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_FLOATING_HELP_TEXT_2) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_CASH_CHANGE) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_RETICLE) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_SUBTITLE_TEXT) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_RADIO_STATIONS) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_SAVING_GAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_FEED) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_WEAPON_WHEEL) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_WEAPON_WHEEL_STATS) ELSE IF bDelayHUD THEFEED_RESUME() bRadar = TRUE bDelayHUD = FALSE ENDIF ENDIF IF IS_VECTOR_ZERO(vCurrentPoint[CHASE_TIMER_F620]) vCurrentPoint[CHASE_TIMER_F620] = <<100.0, 0.0, 0.0>> ENDIF IF IS_VECTOR_ZERO(vCurrentPoint[CHASE_TIMER_CHEETAH]) vCurrentPoint[CHASE_TIMER_CHEETAH] = <<0.0, 100.0, 0.0>> ENDIF IF IS_VECTOR_ZERO(vCurrentPoint[CHASE_TIMER_ENTITYXF]) vCurrentPoint[CHASE_TIMER_ENTITYXF] = <<0.0, 0.0, 100.0>> ENDIF //Peds running away IF DOES_ENTITY_EXIST(pedRival1) AND NOT IS_PED_INJURED(pedRival1) IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(pedRival1), GET_ENTITY_COORDS(PLAYER_PED_ID())) > 200.0 SET_PED_AS_NO_LONGER_NEEDED(pedRival1) ENDIF ENDIF IF DOES_ENTITY_EXIST(pedRival2) AND NOT IS_PED_INJURED(pedRival2) IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(pedRival2), GET_ENTITY_COORDS(PLAYER_PED_ID())) > 200.0 SET_PED_AS_NO_LONGER_NEEDED(pedRival2) ENDIF ENDIF //Bikes IF DOES_ENTITY_EXIST(vehPolice1) AND NOT IS_ENTITY_DEAD(vehPolice1) IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehPolice1), GET_ENTITY_COORDS(PLAYER_PED_ID())) > 200.0 SET_VEHICLE_AS_NO_LONGER_NEEDED(vehPolice1) ENDIF ENDIF IF DOES_ENTITY_EXIST(vehPolice2) AND NOT IS_ENTITY_DEAD(vehPolice2) IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehPolice2), GET_ENTITY_COORDS(PLAYER_PED_ID())) > 200.0 SET_VEHICLE_AS_NO_LONGER_NEEDED(vehPolice2) ENDIF ENDIF //Traffic IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<-1919.3295, 4609.2861, 56.0538 - 1.0>>, <<10.0, 10.0, 10.0>>) SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME(0.0) ELSE SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME(1.0) ENDIF //Roads IF IS_ENTITY_IN_AREA(PLAYER_PED_ID(), <<-387.447174, -2211.639893, -200.0>>, <<1478.488525, -552.179993, 1500.0>>) REQUEST_PATH_NODES_IN_AREA_THIS_FRAME(-387.447174, -2211.639893, 1478.488525, -552.179993) ELIF IS_ENTITY_IN_AREA(PLAYER_PED_ID(), <<-3624.216553, -3439.023682, -200.0>>, <<1435.432129, 967.935364, 1500.0>>) REQUEST_PATH_NODES_IN_AREA_THIS_FRAME(-3624.216553, -3439.023682, 1435.432129, 967.935364) ELIF IS_ENTITY_IN_AREA(PLAYER_PED_ID(), <<-3624.216553, -3439.023682, -200.0>>, <<1435.432129, 2366.105469, 1500.0>>) REQUEST_PATH_NODES_IN_AREA_THIS_FRAME(-3624.216553, -3439.023682, 1435.432129, 2366.105469) ELSE REQUEST_PATH_NODES_IN_AREA_THIS_FRAME(-3624.993164, -3439.023682, 1435.432129, 5642.218750) ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("LOAD_ALL_PATH_NODES") IF NOT ARE_NODES_LOADED_FOR_AREA(-387.447174, -2211.639893, 1478.488525, -552.179993) AND NOT ARE_NODES_LOADED_FOR_AREA(-3624.216553, -3439.023682, 1435.432129, 967.935364) AND NOT ARE_NODES_LOADED_FOR_AREA(-3624.216553, -3439.023682, 1435.432129, 2366.105469) AND NOT ARE_NODES_LOADED_FOR_AREA(-3624.993164, -3439.023682, 1435.432129, 5642.218750) PRINTLN("LOADING PATH NODES...") ELSE SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehPlayer, FALSE) SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehRival1, FALSE) SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehRival2, FALSE) SET_LABEL_AS_TRIGGERED("LOAD_ALL_PATH_NODES", TRUE) ENDIF ENDIF INT i VECTOR vClosestRoad FLOAT fClosestRoad INT iClosestRoad IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID()) AND IS_VEHICLE_ON_ALL_WHEELS(GET_VEHICLE_PED_IS_USING(PLAYER_PED_ID())) AND NOT IS_PED_IN_FLYING_VEHICLE(PLAYER_PED_ID()) AND NOT IS_PED_IN_ANY_BOAT(PLAYER_PED_ID()) AND NOT IS_ENTITY_IN_WATER(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) AND GET_ENTITY_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) > 5.0 IF GET_GAME_TIMER() > iRoadNodeTimer GET_NTH_CLOSEST_VEHICLE_NODE_WITH_HEADING(GET_ENTITY_COORDS(PLAYER_PED_ID()), 1, vClosestRoad, fClosestRoad, iClosestRoad, NF_NONE) iRoadNodeTimer = GET_GAME_TIMER() + 500 ENDIF REPEAT COUNT_OF(CHASE_TIMER_INDEX) i IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), vCurrentPoint[i]) > 40.0 - (GET_VEHICLE_ESTIMATED_MAX_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) / 5.0) AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), vClosestRoad) < (5.0 + iClosestRoad) vChasePoint[i] = vCurrentPoint[i] fChasePoint[i] = fCurrentPoint[i] vCurrentPoint[i] = GET_ENTITY_COORDS(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) fCurrentPoint[i] = GET_ENTITY_HEADING(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) ENDIF ENDREPEAT ENDIF IF TIMERA() > 1000 IF NOT IS_ENTITY_IN_ANGLED_AREA(vehPlayer, <<481.813293, -1306.417114, 28.200811>>, <<497.217743, -1328.954590, 34.341835>>, 15.0) IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_FRANKLIN IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN]) IF NOT IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], vehPlayer) IF GET_SCRIPT_TASK_STATUS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], SCRIPT_TASK_ENTER_VEHICLE) <> PERFORMING_TASK TASK_ENTER_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], vehPlayer, -1, VS_DRIVER, PEDMOVE_WALK) ENDIF IF NOT IS_ENTITY_ON_SCREEN(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN]) AND NOT IS_ENTITY_ON_SCREEN(vehPlayer) SET_PED_INTO_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], vehPlayer) ENDIF ELSE IF HAS_LABEL_BEEN_TRIGGERED("LOAD_ALL_PATH_NODES") IF bWaitForPlayer = FALSE IF NOT IS_ENTITY_AT_COORD(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], <<496.1170, -1323.8239, 28.8653>>, <<20.0, 20.0, 5.0>>) IF GET_SCRIPT_TASK_STATUS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], SCRIPT_TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE) != PERFORMING_TASK TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], vehPlayer, <<496.1170, -1323.8239, 28.8653>>, 100.0, DRIVINGMODE_AVOIDCARS, 1.0) //TASK_VEHICLE_MISSION_COORS_TARGET(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], vehPlayer, <<496.1170, -1323.8239, 28.8653>>, MISSION_GOTO_RACING, 60.0, DRIVINGMODE_AVOIDCARS, 1.0, 1.0, TRUE) ENDIF ELSE IF GET_SCRIPT_TASK_STATUS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], SCRIPT_TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE) = PERFORMING_TASK CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN]) TASK_VEHICLE_DRIVE_TO_COORD(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], vehPlayer, <<496.1170, -1323.8239, 28.8653>>, 20.0, DRIVINGSTYLE_ACCURATE, F620, DRIVINGMODE_STOPFORCARS, 2.0, 4.0) ENDIF ENDIF IF (IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehPlayer) OR IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehRival1) OR IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehRival2)) IF IS_ENTITY_ON_SCREEN(vehPlayer) iChaseTimer[CHASE_TIMER_F620] = GET_GAME_TIMER() + 3000 ELIF GET_GAME_TIMER() > iChaseTimer[CHASE_TIMER_F620] AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehPlayer)) > 50.0 - (GET_VEHICLE_ESTIMATED_MAX_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) / 5.0) AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), vChasePoint[CHASE_TIMER_F620]) > 40.0 - (GET_VEHICLE_ESTIMATED_MAX_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) / 5.0) IF NOT IS_VECTOR_ZERO(vChasePoint[CHASE_TIMER_F620]) AND GET_DISTANCE_BETWEEN_COORDS(vChasePoint[CHASE_TIMER_F620], GET_ENTITY_COORDS(vehRival1)) > 10.0 AND GET_DISTANCE_BETWEEN_COORDS(vChasePoint[CHASE_TIMER_F620], GET_ENTITY_COORDS(vehRival2)) > 10.0 AND GET_DISTANCE_BETWEEN_COORDS(vChasePoint[CHASE_TIMER_F620], <<493.6570, -1319.0879, 28.5502>>) > GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<496.1170, -1323.8239, 28.8653>>) AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehPlayer), <<493.6570, -1319.0879, 28.5502>>) > GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<496.1170, -1323.8239, 28.8653>>) CLEAR_AREA(vChasePoint[CHASE_TIMER_F620], 3.0, TRUE) SET_VEHICLE_POSITION(vehPlayer, vChasePoint[CHASE_TIMER_F620], fChasePoint[CHASE_TIMER_F620]) SET_VEHICLE_FORWARD_SPEED(vehPlayer, 10.0) SET_VEHICLE_ENGINE_ON(vehPlayer, TRUE, TRUE) iChaseTimer[CHASE_TIMER_F620] = GET_GAME_TIMER() + (6000 - CLAMP_INT(ROUND(GET_VEHICLE_ESTIMATED_MAX_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) * GET_VEHICLE_ESTIMATED_MAX_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()))), 0, 3000)) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ELSE INT iTolerance iTolerance = 16 INT iLTSx, iLTSy, iRTSx, iRTSy GET_CONTROL_VALUE_OF_ANALOGUE_STICKS(iLTSx, iLTSy, iRTSx, iRTSy) IF GET_SCRIPT_TASK_STATUS(PLAYER_PED_ID(), SCRIPT_TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE) = PERFORMING_TASK AND GET_RENDERING_CAM() != sCamDetails.camID AND (GET_GAME_TIMER() > iGameTimer OR IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_VEH_ACCELERATE) OR IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_VEH_BRAKE) OR (iLTSx < -iTolerance OR iLTSx > iTolerance)) PRINTLN("Stopping vehPlayer Drive Task, ", GET_GAME_TIMER(), "/", iGameTimer) CLEAR_PED_TASKS(PLAYER_PED_ID()) SET_VEHICLE_ENGINE_ON(vehPlayer, TRUE, TRUE) // SET_VEHICLE_FORWARD_SPEED(vehPlayer, 30.0) ENDIF ENDIF ELSE SET_SELECTOR_PED_BLOCKED(sSelectorPeds, SELECTOR_PED_FRANKLIN) IF bTrevorFinishFirst = FALSE AND bMichaelFinishFirst = FALSE bFranklinFinishFirst = TRUE ELIF (bTrevorFinishFirst = TRUE AND bMichaelFinishSecond = FALSE) OR (bMichaelFinishFirst = TRUE AND bTrevorFinishSecond = FALSE) bFranklinFinishSecond = TRUE ENDIF ENDIF IF NOT IS_ENTITY_IN_ANGLED_AREA(vehRival2, <<481.813293, -1306.417114, 28.200811>>, <<497.217743, -1328.954590, 34.341835>>, 15.0) IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_TREVOR IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) IF NOT IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], vehRival2) IF GET_SCRIPT_TASK_STATUS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], SCRIPT_TASK_ENTER_VEHICLE) <> PERFORMING_TASK TASK_ENTER_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], vehRival2, -1, VS_DRIVER, PEDMOVE_WALK) ENDIF IF NOT IS_ENTITY_ON_SCREEN(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) AND NOT IS_ENTITY_ON_SCREEN(vehRival2) SET_PED_INTO_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], vehRival2) ENDIF ELSE IF HAS_LABEL_BEEN_TRIGGERED("LOAD_ALL_PATH_NODES") IF bWaitForPlayer = FALSE IF NOT IS_ENTITY_AT_COORD(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<490.83542, -1311.98657, 28.2584>>, <<20.0, 20.0, 5.0>>) IF GET_SCRIPT_TASK_STATUS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], SCRIPT_TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE) != PERFORMING_TASK TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], vehRival2, <<490.83542, -1311.98657, 28.2584>>, 100.0, DRIVINGMODE_AVOIDCARS, 1.0) // TASK_VEHICLE_MISSION_COORS_TARGET(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], vehRival2, <<490.83542, -1311.98657, 28.2584>>, MISSION_GOTO_RACING, 60.0, DRIVINGMODE_AVOIDCARS, 1.0, 1.0, TRUE) ENDIF ELSE IF GET_SCRIPT_TASK_STATUS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], SCRIPT_TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE) = PERFORMING_TASK CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) TASK_VEHICLE_DRIVE_TO_COORD(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], vehRival2, <<490.83542, -1311.98657, 28.2584>>, 10.0, DRIVINGSTYLE_ACCURATE, CHEETAH, DRIVINGMODE_STOPFORCARS, 2.0, 4.0) ENDIF ENDIF IF (IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehPlayer) OR IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehRival1) OR IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehRival2)) IF IS_ENTITY_ON_SCREEN(vehRival2) iChaseTimer[CHASE_TIMER_CHEETAH] = GET_GAME_TIMER() + 3000 ELIF GET_GAME_TIMER() > iChaseTimer[CHASE_TIMER_CHEETAH] AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehRival2)) > 50.0 - (GET_VEHICLE_ESTIMATED_MAX_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) / 5.0) AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), vChasePoint[CHASE_TIMER_CHEETAH]) > 40.0 - (GET_VEHICLE_ESTIMATED_MAX_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) / 5.0) IF NOT IS_VECTOR_ZERO(vChasePoint[CHASE_TIMER_CHEETAH]) AND GET_DISTANCE_BETWEEN_COORDS(vChasePoint[CHASE_TIMER_CHEETAH], GET_ENTITY_COORDS(vehPlayer)) > 10.0 AND GET_DISTANCE_BETWEEN_COORDS(vChasePoint[CHASE_TIMER_CHEETAH], GET_ENTITY_COORDS(vehRival1)) > 10.0 AND GET_DISTANCE_BETWEEN_COORDS(vChasePoint[CHASE_TIMER_CHEETAH], <<490.83542, -1311.98657, 28.2584>>) > GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<490.83542, -1311.98657, 28.2584>>) AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehRival2), <<490.83542, -1311.98657, 28.2584>>) > GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<490.83542, -1311.98657, 28.2584>>) CLEAR_AREA(vChasePoint[CHASE_TIMER_CHEETAH], 3.0, TRUE) SET_VEHICLE_POSITION(vehRival2, vChasePoint[CHASE_TIMER_CHEETAH], fChasePoint[CHASE_TIMER_CHEETAH]) SET_VEHICLE_FORWARD_SPEED(vehRival2, 10.0) SET_VEHICLE_ENGINE_ON(vehRival2, TRUE, TRUE) iChaseTimer[CHASE_TIMER_CHEETAH] = GET_GAME_TIMER() + (6000 - CLAMP_INT(ROUND(GET_VEHICLE_ESTIMATED_MAX_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) * GET_VEHICLE_ESTIMATED_MAX_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()))), 0, 3000)) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ELSE INT iTolerance iTolerance = 16 INT iLTSx, iLTSy, iRTSx, iRTSy GET_CONTROL_VALUE_OF_ANALOGUE_STICKS(iLTSx, iLTSy, iRTSx, iRTSy) IF GET_SCRIPT_TASK_STATUS(PLAYER_PED_ID(), SCRIPT_TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE) = PERFORMING_TASK AND GET_RENDERING_CAM() != sCamDetails.camID AND (GET_GAME_TIMER() > iGameTimer OR IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_VEH_ACCELERATE) OR IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_VEH_BRAKE) OR (iLTSx < -iTolerance OR iLTSx > iTolerance)) PRINTLN("Stopping Playback vehRival2, ", GET_GAME_TIMER(), "/", iGameTimer) CLEAR_PED_TASKS(PLAYER_PED_ID()) SET_VEHICLE_ENGINE_ON(vehRival2, TRUE, TRUE) // SET_VEHICLE_FORWARD_SPEED(vehRival2, 30.0) ENDIF ENDIF ELSE SET_SELECTOR_PED_BLOCKED(sSelectorPeds, SELECTOR_PED_TREVOR) IF bFranklinFinishFirst = FALSE AND bMichaelFinishFirst = FALSE bTrevorFinishFirst = TRUE ELIF (bFranklinFinishFirst = TRUE AND bMichaelFinishSecond = FALSE) OR (bMichaelFinishFirst = TRUE AND bFranklinFinishSecond = FALSE) bTrevorFinishSecond = TRUE ENDIF ENDIF IF NOT IS_ENTITY_IN_ANGLED_AREA(vehRival1, <<481.813293, -1306.417114, 28.200811>>, <<497.217743, -1328.954590, 34.341835>>, 15.0) IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_MICHAEL IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) IF NOT IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], vehRival1) IF GET_SCRIPT_TASK_STATUS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], SCRIPT_TASK_ENTER_VEHICLE) <> PERFORMING_TASK TASK_ENTER_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], vehRival1, -1, VS_DRIVER, PEDMOVE_WALK) ENDIF IF NOT IS_ENTITY_ON_SCREEN(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) AND NOT IS_ENTITY_ON_SCREEN(vehRival1) SET_PED_INTO_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], vehRival1) ENDIF ELSE IF HAS_LABEL_BEEN_TRIGGERED("LOAD_ALL_PATH_NODES") IF bWaitForPlayer = FALSE IF NOT IS_ENTITY_AT_COORD(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], <<489.1545, -1312.9886, 28.6664>>, <<20.0, 20.0, 5.0>>) IF GET_SCRIPT_TASK_STATUS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], SCRIPT_TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE) != PERFORMING_TASK TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], vehRival1, <<489.1545, -1312.9886, 28.6664>>, 100.0, DRIVINGMODE_AVOIDCARS, 1.0) // TASK_VEHICLE_MISSION_COORS_TARGET(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], vehRival1, <<489.1545, -1312.9886, 28.6664>>, MISSION_GOTO_RACING, 60.0, DRIVINGMODE_AVOIDCARS, 1.0, 1.0, TRUE) ENDIF ELSE IF GET_SCRIPT_TASK_STATUS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], SCRIPT_TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE) = PERFORMING_TASK CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) TASK_VEHICLE_DRIVE_TO_COORD(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], vehRival1, <<489.1545, -1312.9886, 28.6664>>, 20.0, DRIVINGSTYLE_ACCURATE, ENTITYXF, DRIVINGMODE_STOPFORCARS, 2.0, 4.0) ENDIF ENDIF IF (IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehPlayer) OR IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehRival1) OR IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehRival2)) IF IS_ENTITY_ON_SCREEN(vehRival1) iChaseTimer[CHASE_TIMER_ENTITYXF] = GET_GAME_TIMER() + 3000 ELIF GET_GAME_TIMER() > iChaseTimer[CHASE_TIMER_ENTITYXF] AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehRival1)) > 50.0 - (GET_VEHICLE_ESTIMATED_MAX_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) / 5.0) AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), vChasePoint[CHASE_TIMER_ENTITYXF]) > 40.0 - (GET_VEHICLE_ESTIMATED_MAX_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) / 5.0) IF NOT IS_VECTOR_ZERO(vChasePoint[CHASE_TIMER_ENTITYXF]) AND GET_DISTANCE_BETWEEN_COORDS(vChasePoint[CHASE_TIMER_ENTITYXF], GET_ENTITY_COORDS(vehPlayer)) > 10.0 AND GET_DISTANCE_BETWEEN_COORDS(vChasePoint[CHASE_TIMER_ENTITYXF], GET_ENTITY_COORDS(vehRival2)) > 10.0 AND GET_DISTANCE_BETWEEN_COORDS(vChasePoint[CHASE_TIMER_ENTITYXF], <<493.6570, -1319.0879, 28.5502>>) > GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<489.1545, -1312.9886, 28.6664>>) AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehRival1), <<493.6570, -1319.0879, 28.5502>>) > GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<496.1170, -1323.8239, 28.8653>>) CLEAR_AREA(vChasePoint[CHASE_TIMER_ENTITYXF], 3.0, TRUE) SET_VEHICLE_POSITION(vehRival1, vChasePoint[CHASE_TIMER_ENTITYXF], fChasePoint[CHASE_TIMER_ENTITYXF]) SET_VEHICLE_FORWARD_SPEED(vehRival1, 10.0) SET_VEHICLE_ENGINE_ON(vehRival1, TRUE, TRUE) iChaseTimer[CHASE_TIMER_ENTITYXF] = GET_GAME_TIMER() + (6000 - CLAMP_INT(ROUND(GET_VEHICLE_ESTIMATED_MAX_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) * GET_VEHICLE_ESTIMATED_MAX_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()))), 0, 3000)) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ELSE INT iTolerance iTolerance = 16 INT iLTSx, iLTSy, iRTSx, iRTSy GET_CONTROL_VALUE_OF_ANALOGUE_STICKS(iLTSx, iLTSy, iRTSx, iRTSy) IF GET_SCRIPT_TASK_STATUS(PLAYER_PED_ID(), SCRIPT_TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE) = PERFORMING_TASK AND GET_RENDERING_CAM() != sCamDetails.camID AND (GET_GAME_TIMER() > iGameTimer OR IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_VEH_ACCELERATE) OR IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_VEH_BRAKE) OR (iLTSx < -iTolerance OR iLTSx > iTolerance)) PRINTLN("Stopping Playback vehRival1, ", GET_GAME_TIMER(), "/", iGameTimer) CLEAR_PED_TASKS(PLAYER_PED_ID()) SET_VEHICLE_ENGINE_ON(vehRival1, TRUE, TRUE) // SET_VEHICLE_FORWARD_SPEED(vehRival1, 30.0) ENDIF ENDIF ELSE SET_SELECTOR_PED_BLOCKED(sSelectorPeds, SELECTOR_PED_MICHAEL) IF bFranklinFinishFirst = FALSE AND bTrevorFinishFirst = FALSE bMichaelFinishFirst = TRUE ELIF (bFranklinFinishFirst = TRUE AND bTrevorFinishSecond = FALSE) OR (bTrevorFinishFirst = TRUE AND bFranklinFinishSecond = FALSE) bMichaelFinishSecond = TRUE ENDIF ENDIF ENDIF IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF HAS_LABEL_BEEN_TRIGGERED("SwitchOnce") AND NOT IS_PLAYER_SWITCH_IN_PROGRESS() AND NOT IS_PLAYER_PED_SWITCH_IN_PROGRESS() IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<492.65005, -1317.19214, 28.25825>>) > 500.0 IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_GoHomeM") AND NOT HAS_LABEL_BEEN_TRIGGERED("CST3_GoHomeT") AND NOT HAS_LABEL_BEEN_TRIGGERED("CST3_GoHomeF") IF NOT HAS_LABEL_BEEN_TRIGGERED("MollyDialogue") ADD_PED_FOR_DIALOGUE(sPedsForConversation, 5, NULL, "Molly") SET_LABEL_AS_TRIGGERED("MollyDialogue", TRUE) ENDIF IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL IF PLAYER_CALL_CHAR_CELLPHONE(sPedsForConversation, CHAR_MOLLY, sConversationBlock, "CST3_GoHomeM", CONV_PRIORITY_HIGH, TRUE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN, FALSE) SET_LABEL_AS_TRIGGERED("CST3_GoHomeM", TRUE) ENDIF ELIF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR IF PLAYER_CALL_CHAR_CELLPHONE(sPedsForConversation, CHAR_MOLLY, sConversationBlock, "CST3_GoHomeT", CONV_PRIORITY_HIGH, TRUE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN, FALSE) SET_LABEL_AS_TRIGGERED("CST3_GoHomeT", TRUE) ENDIF ELIF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN IF PLAYER_CALL_CHAR_CELLPHONE(sPedsForConversation, CHAR_MOLLY, sConversationBlock, "CST3_GoHomeF", CONV_PRIORITY_HIGH, TRUE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN, FALSE) SET_LABEL_AS_TRIGGERED("CST3_GoHomeF", TRUE) ENDIF ENDIF ELIF NOT HAS_LABEL_BEEN_TRIGGERED("MollyContact") enumPhonebookPresence ePhonebookPresence SWITCH GET_CURRENT_PLAYER_PED_ENUM() CASE CHAR_MICHAEL ePhonebookPresence = MICHAEL_BOOK BREAK CASE CHAR_FRANKLIN ePhonebookPresence = FRANKLIN_BOOK BREAK CASE CHAR_TREVOR ePhonebookPresence = TREVOR_BOOK BREAK ENDSWITCH //Add Molly to the phonebook. ADD_CONTACT_TO_PHONEBOOK(CHAR_MOLLY, ePhonebookPresence, TRUE) SET_LABEL_AS_TRIGGERED("MollyContact", TRUE) ELIF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_MollyM") AND NOT HAS_LABEL_BEEN_TRIGGERED("CST3_MollyF") AND NOT HAS_LABEL_BEEN_TRIGGERED("CST3_MollyT") IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL CREATE_CONVERSATION_ADV("CST3_MollyM") ELIF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN CREATE_CONVERSATION_ADV("CST3_MollyF") ELIF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR CREATE_CONVERSATION_ADV("CST3_MollyT") ENDIF ELIF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_ShitM") AND NOT HAS_LABEL_BEEN_TRIGGERED("CST3_ShitF") AND NOT HAS_LABEL_BEEN_TRIGGERED("CST3_ShitT") IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL CREATE_CONVERSATION_ADV("CST3_ShitT") iDialogueTimer[1] = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(15000, 25000) ELIF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN CREATE_CONVERSATION_ADV("CST3_ShitM") iDialogueTimer[1] = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(15000, 25000) ELIF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR CREATE_CONVERSATION_ADV("CST3_ShitF") iDialogueTimer[1] = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(15000, 25000) ENDIF ELIF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_RAD1") IF GET_GAME_TIMER() > iDialogueTimer[1] CREATE_CONVERSATION_ADV("CST3_RAD1") iDialogueTimer[1] = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(40000, 55000) ENDIF ELIF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_RAD2") IF GET_GAME_TIMER() > iDialogueTimer[1] CREATE_CONVERSATION_ADV("CST3_RAD2") iDialogueTimer[1] = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(40000, 55000) ENDIF ELIF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_RAD3") IF GET_GAME_TIMER() > iDialogueTimer[1] CREATE_CONVERSATION_ADV("CST3_RAD3") iDialogueTimer[1] = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(40000, 55000) ENDIF ELIF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_RAD4") IF GET_GAME_TIMER() > iDialogueTimer[1] CREATE_CONVERSATION_ADV("CST3_RAD4") iDialogueTimer[1] = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(40000, 55000) ENDIF ENDIF ENDIF ENDIF ENDIF //Damages Cars (Crashes) IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_FRANKLIN IF DOES_ENTITY_EXIST(vehPlayer) AND NOT IS_ENTITY_DEAD(vehPlayer) IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(vehPlayer, PLAYER_PED_ID()) CREATE_CONVERSATION_ADV("CST3_CrashF") ENDIF ENDIF ENDIF IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_MICHAEL IF DOES_ENTITY_EXIST(vehRival1) AND NOT IS_ENTITY_DEAD(vehRival1) IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(vehRival1, PLAYER_PED_ID()) CREATE_CONVERSATION_ADV("CST3_CrashM") ENDIF ENDIF ENDIF IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_TREVOR IF DOES_ENTITY_EXIST(vehRival2) AND NOT IS_ENTITY_DEAD(vehRival2) IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(vehRival2, PLAYER_PED_ID()) CREATE_CONVERSATION_ADV("CST3_CrashT") ENDIF ENDIF ENDIF ENDIF IF GET_ENTITY_HEALTH(vehPlayer) < iCarHealth[CHASE_CAR_F620] OR GET_VEHICLE_PETROL_TANK_HEALTH(vehPlayer) < fCarGasTank[CHASE_CAR_F620] OR GET_VEHICLE_ENGINE_HEALTH(vehPlayer) < fCarEngineHealth[CHASE_CAR_F620] IF IS_ENTITY_ON_SCREEN(vehPlayer) AND NOT IS_ENTITY_OCCLUDED(vehPlayer) IF GET_GAME_TIMER() > iInterruptTimer IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_StackF") CREATE_CONVERSATION_ADV("CST3_StackF") ELIF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_StackM") CREATE_CONVERSATION_ADV("CST3_StackM") ENDIF ENDIF ENDIF ENDIF iCarHealth[CHASE_CAR_F620] = GET_ENTITY_HEALTH(vehPlayer) fCarGasTank[CHASE_CAR_F620] = GET_VEHICLE_PETROL_TANK_HEALTH(vehPlayer) fCarEngineHealth[CHASE_CAR_F620] = GET_VEHICLE_ENGINE_HEALTH(vehPlayer) iInterruptTimer = GET_GAME_TIMER() + 7500 ENDIF IF GET_ENTITY_HEALTH(vehRival1) < iCarHealth[CHASE_CAR_ENTITYXF] OR GET_VEHICLE_PETROL_TANK_HEALTH(vehRival1) < fCarGasTank[CHASE_CAR_ENTITYXF] OR GET_VEHICLE_ENGINE_HEALTH(vehRival1) < fCarEngineHealth[CHASE_CAR_ENTITYXF] IF IS_ENTITY_ON_SCREEN(vehRival1) AND NOT IS_ENTITY_OCCLUDED(vehRival1) IF GET_GAME_TIMER() > iInterruptTimer IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_StackM") CREATE_CONVERSATION_ADV("CST3_StackM") ELIF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_StackT") CREATE_CONVERSATION_ADV("CST3_StackT") ENDIF ENDIF ENDIF ENDIF iCarHealth[CHASE_CAR_ENTITYXF] = GET_ENTITY_HEALTH(vehRival1) fCarGasTank[CHASE_CAR_ENTITYXF] = GET_VEHICLE_PETROL_TANK_HEALTH(vehRival1) fCarEngineHealth[CHASE_CAR_ENTITYXF] = GET_VEHICLE_ENGINE_HEALTH(vehRival1) iInterruptTimer = GET_GAME_TIMER() + 7500 ENDIF IF GET_ENTITY_HEALTH(vehRival2) < iCarHealth[CHASE_CAR_CHEETAH] OR GET_VEHICLE_PETROL_TANK_HEALTH(vehRival2) < fCarGasTank[CHASE_CAR_CHEETAH] OR GET_VEHICLE_ENGINE_HEALTH(vehRival2) < fCarEngineHealth[CHASE_CAR_CHEETAH] IF IS_ENTITY_ON_SCREEN(vehRival2) AND NOT IS_ENTITY_OCCLUDED(vehRival2) IF GET_GAME_TIMER() > iInterruptTimer IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_StackT") CREATE_CONVERSATION_ADV("CST3_StackT") ELIF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_StackF") CREATE_CONVERSATION_ADV("CST3_StackF") ENDIF ENDIF ENDIF ENDIF iCarHealth[CHASE_CAR_CHEETAH] = GET_ENTITY_HEALTH(vehRival2) fCarGasTank[CHASE_CAR_CHEETAH] = GET_VEHICLE_PETROL_TANK_HEALTH(vehRival2) fCarEngineHealth[CHASE_CAR_CHEETAH] = GET_VEHICLE_ENGINE_HEALTH(vehRival2) iInterruptTimer = GET_GAME_TIMER() + 7500 ENDIF IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF HAS_LABEL_BEEN_TRIGGERED("SwitchOnce") AND NOT IS_PLAYER_SWITCH_IN_PROGRESS() AND NOT IS_PLAYER_PED_SWITCH_IN_PROGRESS() IF bFranklinFinishFirst OR bFranklinFinishSecond IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_FinishF") IF bFranklinFinishFirst IF IS_PED_IN_VEHICLE(PLAYER_PED(CHAR_FRANKLIN), vehPlayer) AND IS_PED_IN_VEHICLE(PLAYER_PED(CHAR_MICHAEL), vehRival1) AND IS_PED_IN_VEHICLE(PLAYER_PED(CHAR_TREVOR), vehRival2) IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehPlayer), GET_ENTITY_COORDS(vehRival1)) < 100.0 OR GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehPlayer), GET_ENTITY_COORDS(vehRival2)) < 100.0 CREATE_CONVERSATION_ADV("CST3_JUSTF") ELSE CREATE_CONVERSATION_ADV("CST3_FinishF") ENDIF ENDIF ENDIF SET_LABEL_AS_TRIGGERED("CST3_FinishF", TRUE) ENDIF ENDIF IF bTrevorFinishFirst OR bTrevorFinishSecond IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_FinishT") IF bTrevorFinishFirst IF IS_PED_IN_VEHICLE(PLAYER_PED(CHAR_FRANKLIN), vehPlayer) AND IS_PED_IN_VEHICLE(PLAYER_PED(CHAR_MICHAEL), vehRival1) AND IS_PED_IN_VEHICLE(PLAYER_PED(CHAR_TREVOR), vehRival2) IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehRival2), GET_ENTITY_COORDS(vehPlayer)) < 100.0 OR GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehRival2), GET_ENTITY_COORDS(vehRival1)) < 100.0 CREATE_CONVERSATION_ADV("CST3_JUSTT") ELSE CREATE_CONVERSATION_ADV("CST3_FinishT") ENDIF ENDIF ENDIF SET_LABEL_AS_TRIGGERED("CST3_FinishT", TRUE) ENDIF ENDIF IF bMichaelFinishFirst OR bMichaelFinishSecond IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_FinishM") IF bMichaelFinishFirst IF IS_PED_IN_VEHICLE(PLAYER_PED(CHAR_FRANKLIN), vehPlayer) AND IS_PED_IN_VEHICLE(PLAYER_PED(CHAR_MICHAEL), vehRival1) AND IS_PED_IN_VEHICLE(PLAYER_PED(CHAR_TREVOR), vehRival2) IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehRival1), GET_ENTITY_COORDS(vehPlayer)) < 100.0 OR GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehRival1), GET_ENTITY_COORDS(vehRival2)) < 100.0 CREATE_CONVERSATION_ADV("CST3_JUSTM") ELSE CREATE_CONVERSATION_ADV("CST3_FinishM") ENDIF ENDIF ENDIF SET_LABEL_AS_TRIGGERED("CST3_FinishM", TRUE) ENDIF ENDIF ENDIF ENDIF IF ((GET_PLAYER_PED_ENUM(PLAYER_PED_ID()) != CHAR_FRANKLIN AND NOT IS_ENTITY_IN_ANGLED_AREA(vehPlayer, <<509.486908, -1338.530884, 27.325581>>, <<475.685364, -1289.889771, 44.556633>>, 55.0)) OR (GET_PLAYER_PED_ENUM(PLAYER_PED_ID()) != CHAR_MICHAEL AND NOT IS_ENTITY_IN_ANGLED_AREA(vehRival1, <<509.486908, -1338.530884, 27.325581>>, <<475.685364, -1289.889771, 44.556633>>, 55.0)) OR (GET_PLAYER_PED_ENUM(PLAYER_PED_ID()) != CHAR_TREVOR AND NOT IS_ENTITY_IN_ANGLED_AREA(vehRival2, <<509.486908, -1338.530884, 27.325581>>, <<475.685364, -1289.889771, 44.556633>>, 55.0))) IF NOT sCamDetails.bRun IF NOT HAS_LABEL_BEEN_TRIGGERED("SwitchOnce") IF TIMERA() < 20000 IF HAS_LABEL_BEEN_TRIGGERED("CST3_Return") PRINT_HELP_ADV("S3_RACEHOME") ENDIF 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) CLEAR_PED_TASKS(PLAYER_PED_ID()) //Stats INFORM_MISSION_STATS_OF_INCREMENT(CS1_SWITCHES) sCamDetails.pedTo = sSelectorPeds.pedID[sSelectorPeds.eNewSelectorPed] sCamDetails.bRun = TRUE vehSwitch = GET_VEHICLE_PED_IS_USING(sCamDetails.pedTo) vSwitchCoords = VECTOR_ZERO vSwitchRot = VECTOR_ZERO fSwitchSpeed = 0.0 IF DOES_ENTITY_EXIST(vehSwitch) AND NOT IS_ENTITY_DEAD(vehSwitch) vSwitchCoords = GET_ENTITY_COORDS(vehSwitch) vSwitchRot = GET_ENTITY_ROTATION(vehSwitch) fSwitchSpeed = GET_ENTITY_SPEED(vehSwitch) ENDIF SET_LABEL_AS_TRIGGERED("SwitchOnce", TRUE) ENDIF ENDIF ELSE SET_LABEL_AS_TRIGGERED("SwitchOnce", TRUE) ENDIF ENDIF ELSE IF RUN_SWITCH_CAM_FROM_PLAYER_TO_PED(sCamDetails) //RUN_CAM_SPLINE_FROM_PLAYER_TO_PED_RACE(sCamDetails) //Returns FALSE when the camera spline is complete IF sCamDetails.bOKToSwitchPed IF NOT sCamDetails.bPedSwitched IF TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds, TRUE, TRUE) iDialogueTimer[0] = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 10000) iGameTimer = GET_GAME_TIMER() + 5000 PRINTLN("iGameTimer = ", iGameTimer) IF GET_PLAYER_PED_ENUM(PLAYER_PED_ID()) = CHAR_FRANKLIN SET_VEHICLE_ENGINE_ON(vehPlayer, TRUE, TRUE) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehPlayer, TRUE) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehRival1, FALSE) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehRival2, FALSE) ELIF GET_PLAYER_PED_ENUM(PLAYER_PED_ID()) = CHAR_MICHAEL SET_VEHICLE_ENGINE_ON(vehRival1, TRUE, TRUE) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehPlayer, FALSE) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehRival1, TRUE) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehRival2, FALSE) ELIF GET_PLAYER_PED_ENUM(PLAYER_PED_ID()) = CHAR_TREVOR SET_VEHICLE_ENGINE_ON(vehRival2, TRUE, TRUE) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehPlayer, FALSE) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehRival1, FALSE) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehRival2, TRUE) ENDIF sCamDetails.bPedSwitched = TRUE ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT ARE_VECTORS_EQUAL(vSwitchCoords, VECTOR_ZERO) IF IS_PLAYER_SWITCH_IN_PROGRESS() AND GET_PLAYER_SWITCH_TYPE() != SWITCH_TYPE_SHORT SWITCH_STATE switchState = GET_PLAYER_SWITCH_STATE() PRINTLN("switchState = ", switchState) IF DOES_ENTITY_EXIST(vehSwitch) AND NOT IS_ENTITY_DEAD(vehSwitch) IF switchState > SWITCH_STATE_JUMPCUT_ASCENT CLEAR_AREA(vSwitchCoords, 15.0, TRUE) IF vehPlayer != vehSwitch IF IS_ENTITY_AT_COORD(vehPlayer, GET_ENTITY_COORDS(vehSwitch) - <<0.0, 0.0, 1.0>>, <<4.0, 4.0, 4.0>>) SET_ENTITY_COORDS(vehPlayer, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehSwitch, <<0.0, -10.0, 1.0>>)) SET_ENTITY_ROTATION(vehPlayer, GET_ENTITY_ROTATION(vehPlayer)) SET_VEHICLE_ON_GROUND_PROPERLY(vehPlayer) ENDIF ENDIF IF vehRival1 != vehSwitch IF IS_ENTITY_AT_COORD(vehRival1, GET_ENTITY_COORDS(vehSwitch) - <<0.0, 0.0, 1.0>>, <<4.0, 4.0, 4.0>>) SET_ENTITY_COORDS(vehRival1, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehSwitch, <<0.0, -10.0, 1.0>>)) SET_ENTITY_ROTATION(vehRival1, GET_ENTITY_ROTATION(vehRival1)) SET_VEHICLE_ON_GROUND_PROPERLY(vehRival1) ENDIF ENDIF IF vehRival2 != vehSwitch IF IS_ENTITY_AT_COORD(vehRival2, GET_ENTITY_COORDS(vehSwitch) - <<0.0, 0.0, 1.0>>, <<4.0, 4.0, 4.0>>) SET_ENTITY_COORDS(vehRival2, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehSwitch, <<0.0, -10.0, 1.0>>)) SET_ENTITY_ROTATION(vehRival2, GET_ENTITY_ROTATION(vehRival2)) SET_VEHICLE_ON_GROUND_PROPERLY(vehRival2) ENDIF ENDIF SET_ENTITY_COORDS(vehSwitch, vSwitchCoords) SET_ENTITY_ROTATION(vehSwitch, vSwitchRot) SET_VEHICLE_ON_GROUND_PROPERLY(vehSwitch) IF switchState > SWITCH_STATE_JUMPCUT_DESCENT SET_VEHICLE_FORWARD_SPEED(vehSwitch, fSwitchSpeed) vSwitchCoords = VECTOR_ZERO vSwitchRot = VECTOR_ZERO fSwitchSpeed = 0.0 ENDIF ENDIF ENDIF ENDIF ENDIF //Helmet IF NOT HAS_LABEL_BEEN_TRIGGERED("MichaelHelmet") IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED(CHAR_MICHAEL)) CLEAR_PED_PROP(PLAYER_PED(CHAR_MICHAEL), ANCHOR_HEAD) REMOVE_PED_HELMET(PLAYER_PED(CHAR_MICHAEL), TRUE) SET_LABEL_AS_TRIGGERED("MichaelHelmet", TRUE) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("TrevorHelmet") IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED(CHAR_TREVOR)) CLEAR_PED_PROP(PLAYER_PED(CHAR_TREVOR), ANCHOR_HEAD) REMOVE_PED_HELMET(PLAYER_PED(CHAR_TREVOR), TRUE) SET_LABEL_AS_TRIGGERED("TrevorHelmet", TRUE) ENDIF ENDIF IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehRival1) INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(vehRival1) ENDIF IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehRival2) INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(vehRival2) ENDIF //Overtaking IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() AND (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) IF bWaitForPlayer = FALSE IF GET_PLAYER_PED_ENUM(PLAYER_PED_ID()) = CHAR_FRANKLIN IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehPlayer) IF GET_GAME_TIMER() > iDialogueTimer[0] IF IS_ENTITY_IN_ANGLED_AREA(vehPlayer, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehRival1, <<-10.0, 0.0, -5.0>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehRival1, <<10.0, 10.0, 5.0>>), 10.0) OR IS_ENTITY_IN_ANGLED_AREA(vehPlayer, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehRival2, <<-10.0, 0.0, -5.0>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehRival2, <<10.0, 10.0, 5.0>>), 10.0) iDialogueStage = 0 IF iDialogueLineCount[iDialogueStage] = -1 iDialogueLineCount[iDialogueStage] = 3 ELIF iDialogueLineCount[iDialogueStage] > 0 CREATE_CONVERSATION_ADV("CST3_OverF", CONV_PRIORITY_MEDIUM, FALSE) iDialogueTimer[0] = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(15000, 25000) iDialogueLineCount[iDialogueStage]-- ENDIF ENDIF ENDIF ENDIF ENDIF IF GET_PLAYER_PED_ENUM(PLAYER_PED_ID()) = CHAR_MICHAEL IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehRival1) IF GET_GAME_TIMER() > iDialogueTimer[0] IF IS_ENTITY_IN_ANGLED_AREA(vehRival1, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehPlayer, <<-10.0, 0.0, -5.0>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehPlayer, <<10.0, 10.0, 5.0>>), 10.0) OR IS_ENTITY_IN_ANGLED_AREA(vehRival1, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehRival2, <<-10.0, 0.0, -5.0>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehRival2, <<10.0, 10.0, 5.0>>), 10.0) iDialogueStage = 1 IF iDialogueLineCount[iDialogueStage] = -1 iDialogueLineCount[iDialogueStage] = 3 ELIF iDialogueLineCount[iDialogueStage] > 0 CREATE_CONVERSATION_ADV("CST3_OverM", CONV_PRIORITY_MEDIUM, FALSE) iDialogueTimer[0] = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(15000, 25000) iDialogueLineCount[iDialogueStage]-- ENDIF ENDIF ENDIF ENDIF ENDIF IF GET_PLAYER_PED_ENUM(PLAYER_PED_ID()) = CHAR_TREVOR IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehRival2) IF GET_GAME_TIMER() > iDialogueTimer[0] IF IS_ENTITY_IN_ANGLED_AREA(vehRival2, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehPlayer, <<-10.0, 0.0, -5.0>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehPlayer, <<10.0, 10.0, 5.0>>), 10.0) OR IS_ENTITY_IN_ANGLED_AREA(vehRival2, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehRival1, <<-10.0, 0.0, -5.0>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehRival1, <<10.0, 10.0, 5.0>>), 10.0) iDialogueStage = 2 IF iDialogueLineCount[iDialogueStage] = -1 iDialogueLineCount[iDialogueStage] = 3 ELIF iDialogueLineCount[iDialogueStage] > 0 CREATE_CONVERSATION_ADV("CST3_OverT", CONV_PRIORITY_MEDIUM, FALSE) iDialogueTimer[0] = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(15000, 25000) iDialogueLineCount[iDialogueStage]-- ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //Far Ahead IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() AND (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) IF HAS_LABEL_BEEN_TRIGGERED("SwitchOnce") AND NOT IS_PLAYER_SWITCH_IN_PROGRESS() AND NOT IS_PLAYER_PED_SWITCH_IN_PROGRESS() IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_ShitM") OR NOT HAS_LABEL_BEEN_TRIGGERED("CST3_ShitF") OR NOT HAS_LABEL_BEEN_TRIGGERED("CST3_ShitT") IF TIMERA() > 60000 IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_FR_M") IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehRival1), <<492.937805, -1317.739258, 29.251940 - 1.0>>) < GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehPlayer), <<492.937805, -1317.739258, 29.251940 - 1.0>>) - 300.0 AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehRival1), <<492.937805, -1317.739258, 29.251940 - 1.0>>) < GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehRival2), <<492.937805, -1317.739258, 29.251940 - 1.0>>) - 300.0 CREATE_CONVERSATION_ADV("CST3_FR_M") ENDIF ELSE IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_CATCHF") IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehRival1), <<492.937805, -1317.739258, 29.251940 - 1.0>>) > GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehPlayer), <<492.937805, -1317.739258, 29.251940 - 1.0>>) - 300.0 CREATE_CONVERSATION_ADV("CST3_CATCHF") ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_CATCHT") IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehRival1), <<492.937805, -1317.739258, 29.251940 - 1.0>>) > GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehRival2), <<492.937805, -1317.739258, 29.251940 - 1.0>>) - 300.0 CREATE_CONVERSATION_ADV("CST3_CATCHT") ENDIF ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_FR_F") IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehPlayer), <<492.937805, -1317.739258, 29.251940 - 1.0>>) < GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehRival1), <<492.937805, -1317.739258, 29.251940 - 1.0>>) - 300.0 AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehPlayer), <<492.937805, -1317.739258, 29.251940 - 1.0>>) < GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehRival2), <<492.937805, -1317.739258, 29.251940 - 1.0>>) - 300.0 CREATE_CONVERSATION_ADV("CST3_FR_F") ENDIF ELSE IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_CATCHM") IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehPlayer), <<492.937805, -1317.739258, 29.251940 - 1.0>>) > GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehRival1), <<492.937805, -1317.739258, 29.251940 - 1.0>>) - 300.0 CREATE_CONVERSATION_ADV("CST3_CATCHM") ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_CATCHT") IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehPlayer), <<492.937805, -1317.739258, 29.251940 - 1.0>>) > GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehRival2), <<492.937805, -1317.739258, 29.251940 - 1.0>>) - 300.0 CREATE_CONVERSATION_ADV("CST3_CATCHT") ENDIF ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_FR_T") IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehRival2), <<492.937805, -1317.739258, 29.251940 - 1.0>>) < GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehRival1), <<492.937805, -1317.739258, 29.251940 - 1.0>>) - 300.0 AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehRival2), <<492.937805, -1317.739258, 29.251940 - 1.0>>) < GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehPlayer), <<492.937805, -1317.739258, 29.251940 - 1.0>>) - 300.0 CREATE_CONVERSATION_ADV("CST3_FR_T") ENDIF ELSE IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_CATCHM") IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehRival2), <<492.937805, -1317.739258, 29.251940 - 1.0>>) > GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehRival1), <<492.937805, -1317.739258, 29.251940 - 1.0>>) - 300.0 CREATE_CONVERSATION_ADV("CST3_CATCHM") ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_CATCHF") IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehRival2), <<492.937805, -1317.739258, 29.251940 - 1.0>>) > GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehPlayer), <<492.937805, -1317.739258, 29.251940 - 1.0>>) - 300.0 CREATE_CONVERSATION_ADV("CST3_CATCHF") ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //Ramp IF NOT DOES_ENTITY_EXIST(objRamp) IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<-2575.948730, 3186.570313, 71.914772>>, <<200.0, 200.0, 50.0>>) IF HAS_MODEL_LOADED_CHECK(PROP_MP_RAMP_03) objRamp = CREATE_OBJECT_NO_OFFSET(PROP_MP_RAMP_03, <<-2589.899902, 3126.100098, 32.580002>>) SET_ENTITY_ROTATION(objRamp, <<0.0, 0.0, 170.739975>>) SET_MODEL_AS_NO_LONGER_NEEDED(PROP_MP_RAMP_03) ENDIF ENDIF ENDIF //Keep Player in the correct car IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehRival1) OR IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehRival2) OR IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehPlayer) IF bWaitForPlayer VEHICLE_INDEX vehUsing = GET_VEHICLE_PED_IS_USING(PLAYER_PED_ID()) IF (DOES_ENTITY_EXIST(vehUsing) AND NOT IS_ENTITY_DEAD(vehUsing) AND GET_ENTITY_SPEED(vehUsing) > 5.0) OR NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-1908.292236, 4619.039551, 55.051991>>, <<-1924.485962, 4602.391602, 60.057453>>, 10.0) bWaitForPlayer = FALSE ENDIF ENDIF VECTOR vRacerChase VECTOR vBlipChase FLOAT fModifier IF GET_BLIP_FROM_ENTITY(vehPlayer) = blipPlayer SAFE_REMOVE_BLIP(blipPlayer) ENDIF IF GET_BLIP_FROM_ENTITY(vehRival1) = blipRival1 SAFE_REMOVE_BLIP(blipRival1) ENDIF IF GET_BLIP_FROM_ENTITY(vehRival2) = blipRival2 SAFE_REMOVE_BLIP(blipRival2) ENDIF IF IS_PAUSE_MENU_ACTIVE() IF DOES_BLIP_EXIST(blipPlayer) SET_BLIP_COORDS(blipPlayer, GET_ENTITY_COORDS(vehPlayer)) ENDIF IF DOES_BLIP_EXIST(blipRival1) SET_BLIP_COORDS(blipRival1, GET_ENTITY_COORDS(vehRival1)) ENDIF IF DOES_BLIP_EXIST(blipRival2) SET_BLIP_COORDS(blipRival2, GET_ENTITY_COORDS(vehRival2)) ENDIF ENDIF IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehRival1) //Mix Group IF DOES_ENTITY_EXIST(vehPlayer) REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(vehPlayer) ENDIF IF DOES_ENTITY_EXIST(vehRival2) REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(vehRival2) ENDIF SAFE_REMOVE_BLIP(blipRival1) IF NOT DOES_BLIP_EXIST(blipRival2) blipRival2 = ADD_BLIP_FOR_COORD(GET_ENTITY_COORDS(vehRival2)) SET_BLIP_COLOUR(blipRival2, BLIP_COLOUR_BLUE) SET_BLIP_PRIORITY(blipRival2, BLIPPRIORITY_HIGHEST) SET_BLIP_NAME_FROM_TEXT_FILE(blipRival2, "S3_BLIPVEH") ENDIF vRacerChase = GET_ENTITY_COORDS(vehRival2) vBlipChase = GET_BLIP_COORDS(blipRival2) fModifier = 1.0 + CLAMP((GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehRival2)) / 4), 0.0, 17.5) vBlipChase.X = vBlipChase.X +@ (((vRacerChase.X - vBlipChase.X) / fModifier) * 15) vBlipChase.Y = vBlipChase.Y +@ (((vRacerChase.Y - vBlipChase.Y) / fModifier) * 15) vBlipChase.Z = vBlipChase.Z +@ (((vRacerChase.Z - vBlipChase.Z) / fModifier) * 15) SET_BLIP_COORDS(blipRival2, vBlipChase) IF NOT DOES_BLIP_EXIST(blipPlayer) blipPlayer = ADD_BLIP_FOR_COORD(GET_ENTITY_COORDS(vehPlayer)) SET_BLIP_COLOUR(blipPlayer, BLIP_COLOUR_BLUE) SET_BLIP_PRIORITY(blipPlayer, BLIPPRIORITY_HIGHEST) SET_BLIP_NAME_FROM_TEXT_FILE(blipPlayer, "S3_BLIPVEH") ENDIF vRacerChase = GET_ENTITY_COORDS(vehPlayer) vBlipChase = GET_BLIP_COORDS(blipPlayer) fModifier = 1.0 + CLAMP((GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehPlayer)) / 4), 0.0, 17.5) vBlipChase.X = vBlipChase.X +@ (((vRacerChase.X - vBlipChase.X) / fModifier) * 15) vBlipChase.Y = vBlipChase.Y +@ (((vRacerChase.Y - vBlipChase.Y) / fModifier) * 15) vBlipChase.Z = vBlipChase.Z +@ (((vRacerChase.Z - vBlipChase.Z) / fModifier) * 15) SET_BLIP_COORDS(blipPlayer, vBlipChase) ELIF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehRival2) //Mix Group IF DOES_ENTITY_EXIST(vehPlayer) REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(vehPlayer) ENDIF IF DOES_ENTITY_EXIST(vehRival1) REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(vehRival1) ENDIF SAFE_REMOVE_BLIP(blipRival2) IF NOT DOES_BLIP_EXIST(blipRival1) blipRival1 = ADD_BLIP_FOR_COORD(GET_ENTITY_COORDS(vehRival1)) SET_BLIP_COLOUR(blipRival1, BLIP_COLOUR_BLUE) SET_BLIP_PRIORITY(blipRival1, BLIPPRIORITY_HIGHEST) SET_BLIP_NAME_FROM_TEXT_FILE(blipRival1, "S3_BLIPVEH") ENDIF vRacerChase = GET_ENTITY_COORDS(vehRival1) vBlipChase = GET_BLIP_COORDS(blipRival1) fModifier = 1.0 + CLAMP((GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehRival1)) / 4), 0.0, 17.5) vBlipChase.X = vBlipChase.X +@ (((vRacerChase.X - vBlipChase.X) / fModifier) * 15) vBlipChase.Y = vBlipChase.Y +@ (((vRacerChase.Y - vBlipChase.Y) / fModifier) * 15) vBlipChase.Z = vBlipChase.Z +@ (((vRacerChase.Z - vBlipChase.Z) / fModifier) * 15) SET_BLIP_COORDS(blipRival1, vBlipChase) IF NOT DOES_BLIP_EXIST(blipPlayer) blipPlayer = ADD_BLIP_FOR_COORD(GET_ENTITY_COORDS(vehPlayer)) SET_BLIP_COLOUR(blipPlayer, BLIP_COLOUR_BLUE) SET_BLIP_PRIORITY(blipPlayer, BLIPPRIORITY_HIGHEST) SET_BLIP_NAME_FROM_TEXT_FILE(blipPlayer, "S3_BLIPVEH") ENDIF vRacerChase = GET_ENTITY_COORDS(vehPlayer) vBlipChase = GET_BLIP_COORDS(blipPlayer) fModifier = 1.0 + CLAMP((GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehPlayer)) / 4), 0.0, 17.5) vBlipChase.X = vBlipChase.X +@ (((vRacerChase.X - vBlipChase.X) / fModifier) * 15) vBlipChase.Y = vBlipChase.Y +@ (((vRacerChase.Y - vBlipChase.Y) / fModifier) * 15) vBlipChase.Z = vBlipChase.Z +@ (((vRacerChase.Z - vBlipChase.Z) / fModifier) * 15) SET_BLIP_COORDS(blipPlayer, vBlipChase) ELIF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehPlayer) //Mix Group IF DOES_ENTITY_EXIST(vehRival1) REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(vehRival1) ENDIF IF DOES_ENTITY_EXIST(vehRival2) REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(vehRival2) ENDIF SAFE_REMOVE_BLIP(blipPlayer) IF NOT DOES_BLIP_EXIST(blipRival1) blipRival1 = ADD_BLIP_FOR_COORD(GET_ENTITY_COORDS(vehRival1)) SET_BLIP_COLOUR(blipRival1, BLIP_COLOUR_BLUE) SET_BLIP_PRIORITY(blipRival1, BLIPPRIORITY_HIGHEST) SET_BLIP_NAME_FROM_TEXT_FILE(blipRival1, "S3_BLIPVEH") ENDIF vRacerChase = GET_ENTITY_COORDS(vehRival1) vBlipChase = GET_BLIP_COORDS(blipRival1) fModifier = 1.0 + CLAMP((GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehRival1)) / 4), 0.0, 17.5) vBlipChase.X = vBlipChase.X +@ (((vRacerChase.X - vBlipChase.X) / fModifier) * 15) vBlipChase.Y = vBlipChase.Y +@ (((vRacerChase.Y - vBlipChase.Y) / fModifier) * 15) vBlipChase.Z = vBlipChase.Z +@ (((vRacerChase.Z - vBlipChase.Z) / fModifier) * 15) SET_BLIP_COORDS(blipRival1, vBlipChase) IF NOT DOES_BLIP_EXIST(blipRival2) blipRival2 = ADD_BLIP_FOR_COORD(GET_ENTITY_COORDS(vehRival2)) SET_BLIP_COLOUR(blipRival2, BLIP_COLOUR_BLUE) SET_BLIP_PRIORITY(blipRival2, BLIPPRIORITY_HIGHEST) SET_BLIP_NAME_FROM_TEXT_FILE(blipRival2, "S3_BLIPVEH") ENDIF vRacerChase = GET_ENTITY_COORDS(vehRival2) vBlipChase = GET_BLIP_COORDS(blipRival2) fModifier = 1.0 + CLAMP((GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehRival2)) / 4), 0.0, 17.5) vBlipChase.X = vBlipChase.X +@ (((vRacerChase.X - vBlipChase.X) / fModifier) * 15) vBlipChase.Y = vBlipChase.Y +@ (((vRacerChase.Y - vBlipChase.Y) / fModifier) * 15) vBlipChase.Z = vBlipChase.Z +@ (((vRacerChase.Z - vBlipChase.Z) / fModifier) * 15) SET_BLIP_COORDS(blipRival2, vBlipChase) ENDIF IF NOT DOES_BLIP_EXIST(blipGarage) CLEAR_PRINTS() PRINT_ADV("S3_DRIVE") SAFE_ADD_BLIP_LOCATION(blipGarage, vGarage, TRUE) ENDIF IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_Return") CREATE_CONVERSATION_ADV("CST3_Return") ELIF NOT HAS_LABEL_BEEN_TRIGGERED("CST3_RaceM") AND NOT HAS_LABEL_BEEN_TRIGGERED("CST3_RaceF") AND NOT HAS_LABEL_BEEN_TRIGGERED("CST3_RaceT") IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL CREATE_CONVERSATION_ADV("CST3_RaceM") ELIF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN CREATE_CONVERSATION_ADV("CST3_RaceF") ELIF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR CREATE_CONVERSATION_ADV("CST3_RaceT") ENDIF ENDIF ENDIF IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<492.937805, -1317.739258, 29.251940 - 1.0>>) <= 50.0 HAS_MODEL_LOADED_CHECK(FELON) HAS_MODEL_LOADED_CHECK(S_M_Y_DWSERVICE_02) HAS_MODEL_LOADED_CHECK(GET_NPC_PED_MODEL(CHAR_MOLLY)) HAS_MODEL_LOADED_CHECK(GET_NPC_PED_MODEL(CHAR_DEVIN)) ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("svolCarStealOutro") IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<492.937805, -1317.739258, 29.251940 - 1.0>>) <= 250.0 svolCarStealOutro = STREAMVOL_CREATE_FRUSTUM(<<498.099976, -1334.323486, 31.278627>>, NORMALISE_VECTOR(<<-0.022675, 0.266968, -0.017954>>), 300.0, FLAG_MAPDATA) //source <<498.100739,-1334.334229,31.117319>> //dest <<498.078064,-1334.067261,31.099365>> //Pin Interior IF bPinnedChopShop = FALSE intChopShop = GET_INTERIOR_AT_COORDS_WITH_TYPE(<<481.1439, -1314.4697, 28.2017>>, "v_chopshop") PIN_INTERIOR_IN_MEMORY(intChopShop) ENDIF SET_LABEL_AS_TRIGGERED("svolCarStealOutro", TRUE) ENDIF ELSE #IF IS_DEBUG_BUILD IF NOT STREAMVOL_HAS_LOADED(svolCarStealOutro) PRINTLN("Waiting for STREAMVOL_HAS_LOADED(svolCarStealOutro) ...") ENDIF IF NOT IS_INTERIOR_READY(intChopShop) PRINTLN("PINNING INTERIOR...") ENDIF #ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("car_1_ext_concat") IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<492.937805, -1317.739258, 29.251940 - 1.0>>) < DEFAULT_CUTSCENE_LOAD_DIST * 2 REQUEST_CUTSCENE("car_1_ext_concat") SET_LABEL_AS_TRIGGERED("car_1_ext_concat", TRUE) ENDIF ELSE //Request Cutscene Variations - car_1_ext_concat IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Franklin", PLAYER_PED(CHAR_FRANKLIN)) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Michael", PLAYER_PED(CHAR_MICHAEL)) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Trevor", PLAYER_PED(CHAR_TREVOR)) SET_CUTSCENE_PED_PROP_VARIATION("MOLLY", ANCHOR_EYES, 0, 0) ENDIF ENDIF IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<492.937805, -1317.739258, 29.251940 - 1.0>>, <<0.0, 0.0, LOCATE_SIZE_HEIGHT>>, TRUE) ENDIF IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<501.685455, -1324.219482, 27.310808>>, <<488.542847, -1304.170776, 32.355415>>, 20.0) ADVANCE_STAGE() ENDIF SET_LABEL_AS_TRIGGERED("GetInCar", FALSE) ELSE IF bWaitForPlayer SETTIMERA(0) ENDIF IF DOES_BLIP_EXIST(blipGarage) CLEAR_PRINTS() SAFE_REMOVE_BLIP(blipGarage) ENDIF IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) IF NOT HAS_LABEL_BEEN_TRIGGERED("GetInCar") IF NOT HAS_LABEL_BEEN_TRIGGERED("CMN_GENGETIN") SET_LABEL_AS_TRIGGERED("CMN_GENGETIN", TRUE) //PRINT_ADV("CMN_GENGETIN") ELIF NOT HAS_LABEL_BEEN_TRIGGERED("CMN_GENGETBCK") PRINT_ADV("CMN_GENGETBCK") ENDIF SET_LABEL_AS_TRIGGERED("GetInCar", TRUE) ENDIF ENDIF IF GET_PLAYER_PED_ENUM(PLAYER_PED_ID()) = CHAR_MICHAEL SAFE_ADD_BLIP_VEHICLE(blipRival1, vehRival1, FALSE) SAFE_REMOVE_BLIP(blipRival2) SAFE_REMOVE_BLIP(blipPlayer) ELIF GET_PLAYER_PED_ENUM(PLAYER_PED_ID()) = CHAR_TREVOR SAFE_ADD_BLIP_VEHICLE(blipRival2, vehRival2, FALSE) SAFE_REMOVE_BLIP(blipRival1) SAFE_REMOVE_BLIP(blipPlayer) ELIF GET_PLAYER_PED_ENUM(PLAYER_PED_ID()) = CHAR_FRANKLIN SAFE_ADD_BLIP_VEHICLE(blipPlayer, vehPlayer, FALSE) SAFE_REMOVE_BLIP(blipRival1) SAFE_REMOVE_BLIP(blipRival2) ENDIF IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehPlayer)) >= 75 AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehRival1)) >= 75 AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehRival2)) >= 75 eMissionFail = failAbandonedCar missionFailed() ENDIF ENDIF ENDIF IF CLEANUP_STAGE() //Cleanup (Blips, peds, variables etc.) //Audio Scene IF IS_AUDIO_SCENE_ACTIVE("CAR_1_GET_TO_GARAGE") STOP_AUDIO_SCENE("CAR_1_GET_TO_GARAGE") ENDIF IF DOES_ENTITY_EXIST(vehPlayer) REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(vehPlayer) ENDIF IF DOES_ENTITY_EXIST(vehRival1) REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(vehRival1) ENDIF IF DOES_ENTITY_EXIST(vehRival2) REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(vehRival2) ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPlayer) STOP_PLAYBACK_RECORDED_VEHICLE(vehPlayer) ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) STOP_PLAYBACK_RECORDED_VEHICLE(vehRival1) ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival2) STOP_PLAYBACK_RECORDED_VEHICLE(vehRival2) ENDIF // //Franklin // IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_FRANKLIN // IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehPlayer) // EMPTY_VEHICLE_OF_PEDS(vehPlayer) // SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehPlayer) // ENDIF // ELSE // IF NOT IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], vehPlayer) // EMPTY_VEHICLE_OF_PEDS(vehPlayer) // SET_PED_INTO_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], vehPlayer) // TASK_LEAVE_ANY_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN]) // ENDIF // ENDIF // // IF NOT IS_ENTITY_IN_ANGLED_AREA(vehPlayer, <<475.399536, -1320.267090, 27.207529>>, <<492.851624, -1311.241821, 31.264484>>, 10.0) // IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPlayer) // STOP_PLAYBACK_RECORDED_VEHICLE(vehPlayer) // ENDIF // // SET_VEHICLE_POSITION(vehPlayer, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(003, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(003, sCarrecHome), sCarrecHome), GET_HEADING_BETWEEN_VECTORS(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(003, (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(003, sCarrecHome) / 1000 * 999), sCarrecHome), GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(003, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(003, sCarrecHome), sCarrecHome))) // ENDIF // // //Trevor // IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_TREVOR // IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehRival2) // EMPTY_VEHICLE_OF_PEDS(vehRival2) // SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehRival2) // ENDIF // ELSE // IF NOT IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], vehRival2) // EMPTY_VEHICLE_OF_PEDS(vehRival2) // SET_PED_INTO_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], vehRival2) // TASK_LEAVE_ANY_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) // ENDIF // ENDIF // // IF NOT IS_ENTITY_IN_ANGLED_AREA(vehRival2, <<475.399536, -1320.267090, 27.207529>>, <<492.851624, -1311.241821, 31.264484>>, 10.0) // IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival2) // STOP_PLAYBACK_RECORDED_VEHICLE(vehRival2) // ENDIF // // SET_VEHICLE_POSITION(vehRival2, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(001, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(001, sCarrecHome), sCarrecHome), GET_HEADING_BETWEEN_VECTORS(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(001, (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(001, sCarrecHome) / 1000 * 999), sCarrecHome), GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(001, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(001, sCarrecHome), sCarrecHome))) // ENDIF // // //Michael // IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_MICHAEL // IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehRival1) // EMPTY_VEHICLE_OF_PEDS(vehRival1) // SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehRival1) // ENDIF // ELSE // IF NOT IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], vehRival1) // EMPTY_VEHICLE_OF_PEDS(vehRival1) // SET_PED_INTO_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], vehRival1) // TASK_LEAVE_ANY_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) // ENDIF // ENDIF // // IF NOT IS_ENTITY_IN_ANGLED_AREA(vehRival1, <<475.399536, -1320.267090, 27.207529>>, <<492.851624, -1311.241821, 31.264484>>, 10.0) // IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) // STOP_PLAYBACK_RECORDED_VEHICLE(vehRival1) // ENDIF // // SET_VEHICLE_POSITION(vehRival1, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(002, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(002, sCarrecHome), sCarrecHome), GET_HEADING_BETWEEN_VECTORS(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(002, (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(002, sCarrecHome) / 1000 * 999), sCarrecHome), GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(002, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(002, sCarrecHome), sCarrecHome))) // ENDIF SAFE_DELETE_PED(pedRival1) SAFE_DELETE_PED(pedRival2) eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1) ENDIF ENDPROC PROC CutsceneHome() IF INIT_STAGE() //Radar bRadar = FALSE #IF IS_DEBUG_BUILD IF bAutoSkipping = FALSE #ENDIF //Cutscene REQUEST_CUTSCENE("car_1_ext_concat") //Audio Scene IF NOT IS_AUDIO_SCENE_ACTIVE("CAR_1_GARAGE_ARRIVAL") START_AUDIO_SCENE("CAR_1_GARAGE_ARRIVAL") ENDIF #IF IS_DEBUG_BUILD ENDIF #ENDIF IF SKIPPED_STAGE() CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID()) CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN]) CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) CLEAR_PED_PROP(PLAYER_PED_ID(), ANCHOR_HEAD) CLEAR_PED_PROP(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], ANCHOR_HEAD) SET_PED_POSITION(PLAYER_PED_ID(), <<485.9252, -1330.5171, 28.2488>>, 293.9519, FALSE) SET_PED_POSITION(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], <<486.2881, -1331.0845, 28.2850>>, 296.1121, FALSE) SET_PED_POSITION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<485.5920, -1330.7214, 28.2454>>, 296.1122, FALSE) //SET_VEHICLE_FIXED(vehPlayer) //SET_VEHICLE_FIXED(vehRival1) //SET_VEHICLE_FIXED(vehRival2) SET_VEHICLE_POSITION(vehPlayer, <<485.3990, -1332.9005, 28.3095>>, 292.4873) SET_VEHICLE_POSITION(vehRival1, <<485.9952, -1335.4487, 28.2862>>, 286.6455) SET_VEHICLE_POSITION(vehRival2, <<487.1696, -1337.8451, 28.2688>>, 293.0351) FREEZE_ENTITY_POSITION(vehPlayer, TRUE) FREEZE_ENTITY_POSITION(vehRival1, TRUE) FREEZE_ENTITY_POSITION(vehRival2, TRUE) //Pin Interior IF bPinnedChopShop = FALSE intChopShop = GET_INTERIOR_AT_COORDS_WITH_TYPE(<<481.1439, -1314.4697, 28.2017>>, "v_chopshop") PIN_INTERIOR_IN_MEMORY(intChopShop) WHILE NOT IS_INTERIOR_READY(intChopShop) PRINTLN("PINNING INTERIOR...") WAIT_WITH_DEATH_CHECKS(0) ENDWHILE bPinnedChopShop = TRUE ENDIF //Load Scene IF NOT bReplaySkip LOAD_SCENE_ADV(GET_ENTITY_COORDS(PLAYER_PED_ID())) ENDIF FREEZE_ENTITY_POSITION(vehPlayer, FALSE) FREEZE_ENTITY_POSITION(vehRival1, FALSE) FREEZE_ENTITY_POSITION(vehRival2, FALSE) SET_VEHICLE_ON_GROUND_PROPERLY(vehPlayer) SET_VEHICLE_ON_GROUND_PROPERLY(vehRival1) SET_VEHICLE_ON_GROUND_PROPERLY(vehRival2) IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehRival1) SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehRival1) ENDIF IF NOT IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], vehPlayer) SET_PED_INTO_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], vehPlayer) ENDIF IF NOT IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], vehRival2) SET_PED_INTO_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], vehRival2) ENDIF //Camera Behind Player SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) //Fade In // IF IS_SCREEN_FADED_OUT() // DO_SCREEN_FADE_IN(500) // ENDIF ENDIF ELSE //Request Cutscene Variations - car_1_ext_concat IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Franklin", PLAYER_PED(CHAR_FRANKLIN)) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Michael", PLAYER_PED(CHAR_MICHAEL)) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Trevor", PLAYER_PED(CHAR_TREVOR)) SET_CUTSCENE_PED_PROP_VARIATION("MOLLY", ANCHOR_EYES, 0, 0) ENDIF //Traffic SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME(0.0) FLOAT fOpenRatio = 1.0 IF iCutsceneStage < 4 IF (NOT IS_PED_INJURED(pedWorker1) AND HAVE_ALL_STREAMING_REQUESTS_COMPLETED(pedWorker1)) AND (NOT IS_PED_INJURED(pedWorker2) AND HAVE_ALL_STREAMING_REQUESTS_COMPLETED(pedWorker2)) AND (NOT IS_PED_INJURED(pedMolly) AND HAVE_ALL_STREAMING_REQUESTS_COMPLETED(pedMolly)) AND (NOT IS_PED_INJURED(pedDevin) AND HAVE_ALL_STREAMING_REQUESTS_COMPLETED(pedDevin)) fOpenRatio = 0.5 SETTIMERB(0) SET_LABEL_AS_TRIGGERED("WaitingForPeds", FALSE) ELSE fOpenRatio = 0.0 SETTIMERB(0) SET_LABEL_AS_TRIGGERED("WaitingForPeds", TRUE) ENDIF ELIF iCutsceneStage = 4 IF (NOT IS_PED_INJURED(pedWorker1) AND HAVE_ALL_STREAMING_REQUESTS_COMPLETED(pedWorker1)) AND (NOT IS_PED_INJURED(pedWorker2) AND HAVE_ALL_STREAMING_REQUESTS_COMPLETED(pedWorker2)) AND (NOT IS_PED_INJURED(pedMolly) AND HAVE_ALL_STREAMING_REQUESTS_COMPLETED(pedMolly)) AND (NOT IS_PED_INJURED(pedDevin) AND HAVE_ALL_STREAMING_REQUESTS_COMPLETED(pedDevin)) IF NOT HAS_LABEL_BEEN_TRIGGERED("WaitingForPeds") fOpenRatio = 0.5 + GET_INTERP_POINT_FLOAT(0.0, 0.5, 0, 3000.0, TO_FLOAT(TIMERA())) ELSE fOpenRatio = 0.0 + GET_INTERP_POINT_FLOAT(0.0, 1.0, 0, 6000.0, TO_FLOAT(TIMERB())) ENDIF ELSE fOpenRatio = 0.0 SETTIMERB(0) SET_LABEL_AS_TRIGGERED("WaitingForPeds", TRUE) ENDIF ELSE // IF NOT HAS_LABEL_BEEN_TRIGGERED("RemoveCopUniform") // fOpenRatio = 1.0 // ELSE // fOpenRatio = 0.0 // ENDIF fOpenRatio = 1.0 ENDIF IF NOT IS_DOOR_REGISTERED_WITH_SYSTEM(g_sAutoDoorData[ENUM_TO_INT(AUTODOOR_HAYES_GARAGE)].doorID) ADD_DOOR_TO_SYSTEM(g_sAutoDoorData[ENUM_TO_INT(AUTODOOR_HAYES_GARAGE)].doorID, g_sAutoDoorData[ENUM_TO_INT(AUTODOOR_HAYES_GARAGE)].model, g_sAutoDoorData[ENUM_TO_INT(AUTODOOR_HAYES_GARAGE)].coords) ENDIF IF IS_DOOR_REGISTERED_WITH_SYSTEM(g_sAutoDoorData[ENUM_TO_INT(AUTODOOR_HAYES_GARAGE)].doorID) IF DOOR_SYSTEM_GET_OPEN_RATIO(g_sAutoDoorData[ENUM_TO_INT(AUTODOOR_HAYES_GARAGE)].doorID) <> fOpenRatio OR DOOR_SYSTEM_GET_DOOR_STATE(g_sAutoDoorData[ENUM_TO_INT(AUTODOOR_HAYES_GARAGE)].doorID) != DOORSTATE_FORCE_LOCKED_THIS_FRAME DOOR_SYSTEM_SET_OPEN_RATIO(g_sAutoDoorData[ENUM_TO_INT(AUTODOOR_HAYES_GARAGE)].doorID, fOpenRatio, FALSE, FALSE) DOOR_SYSTEM_SET_DOOR_STATE(g_sAutoDoorData[ENUM_TO_INT(AUTODOOR_HAYES_GARAGE)].doorID, DOORSTATE_FORCE_LOCKED_THIS_FRAME, FALSE, TRUE) ENDIF ENDIF IF NOT IS_DOOR_REGISTERED_WITH_SYSTEM(iSlidingGarageDoor) ADD_DOOR_TO_SYSTEM(iSlidingGarageDoor, PROP_SC1_06_GATE_R, <<500.1759, -1320.5450, 28.2499>>) ENDIF IF IS_DOOR_REGISTERED_WITH_SYSTEM(iSlidingGarageDoor) IF DOOR_SYSTEM_GET_OPEN_RATIO(iSlidingGarageDoor) <> -1.0 OR DOOR_SYSTEM_GET_DOOR_STATE(iSlidingGarageDoor) != DOORSTATE_FORCE_OPEN_THIS_FRAME DOOR_SYSTEM_SET_OPEN_RATIO(iSlidingGarageDoor, -1.0, FALSE, FALSE) DOOR_SYSTEM_SET_DOOR_STATE(iSlidingGarageDoor, DOORSTATE_FORCE_OPEN_THIS_FRAME, FALSE, TRUE) ENDIF ENDIF BOOL bPausedMichael, bPausedTrevor, bPausedFranklin SWITCH iCutsceneStage CASE 0 IF NOT HAS_LABEL_BEEN_TRIGGERED("svolCarStealOutro") svolCarStealOutro = STREAMVOL_CREATE_FRUSTUM(<<498.099976, -1334.323486, 31.278627>>, NORMALISE_VECTOR(<<-0.022675, 0.266968, -0.017954>>), 300.0, FLAG_MAPDATA) //source <<498.100739,-1334.334229,31.117319>> //dest <<498.078064,-1334.067261,31.099365>> SET_LABEL_AS_TRIGGERED("svolCarStealOutro", TRUE) ENDIF //Pin Interior IF bPinnedChopShop = FALSE intChopShop = GET_INTERIOR_AT_COORDS_WITH_TYPE(<<481.1439, -1314.4697, 28.2017>>, "v_chopshop") PIN_INTERIOR_IN_MEMORY(intChopShop) ENDIF iDialogueTimer[0] = GET_GAME_TIMER() + 20000 //Saving variables by reusing iDialogueTimer[0] ADVANCE_CUTSCENE() BREAK CASE 1 IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<482.356537, -1307.464233, 27.706671>>, <<497.543457, -1328.467651, 33.341789>>, 10.0) SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) ENDIF #IF IS_DEBUG_BUILD IF NOT STREAMVOL_HAS_LOADED(svolCarStealOutro) PRINTLN("Waiting for STREAMVOL_HAS_LOADED(svolCarStealOutro) ...") ENDIF IF NOT IS_INTERIOR_READY(intChopShop) PRINTLN("PINNING INTERIOR...") ENDIF PRINTLN("GET_GAME_TIMER() = ", GET_GAME_TIMER(), " | iTimeOut = ", iDialogueTimer[0]) #ENDIF // IF STREAMVOL_HAS_LOADED(svolCarStealOutro) // OR GET_GAME_TIMER() > iDialogueTimer[0] #IF IS_DEBUG_BUILD // IF GET_GAME_TIMER() > iDialogueTimer[0] IF NOT STREAMVOL_HAS_LOADED(svolCarStealOutro) PRINTLN("STREAMVOL_HAS_LOADED(svolCarStealOutro) did not load in time.") // SCRIPT_ASSERT("STREAMVOL_HAS_LOADED(svolCarStealOutro) did not load in time.") //timed out, see log for details.") ENDIF // ENDIF #ENDIF //F620 - 003 //003: 0.0 //002: 0.275 //001: 0.2 // //ENTITYXF - 001 //003: -0.150 //002: 0.100 //001: 0.0 // //CHEETAH - 002 //003: -0.225 //002: 0.0 //001: -0.050 bPinnedChopShop = TRUE SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE) HANG_UP_AND_PUT_AWAY_PHONE(TRUE) FLOAT fCurrentDist, fTotalDist, fTotalTime, fTimeCap, fSetTime VECTOR vFranklinPos, vMichaelPos VEHICLE_INDEX vehIndex //Franklin - 003 - Player pulls in vehIndex = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()) PRINTLN("======== Franklin - 003 ========") fCurrentDist = GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehIndex), GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(003, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(003, sCarrecGarage), sCarrecGarage)) fTotalDist = GET_DISTANCE_BETWEEN_COORDS(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(003, 0.0, sCarrecGarage), GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(003, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(003, sCarrecGarage), sCarrecGarage)) fTotalTime = GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(003, sCarrecGarage) PRINTLN("fCurrentDist = ", fCurrentDist) PRINTLN("fTotalDist = ", fTotalDist) PRINTLN("fTotalTime = ", fTotalTime) IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehIndex) fTimeCap = 80.0 ELSE fTimeCap = 100.0 ENDIF PRINTLN("fTimeCap = ", fTimeCap) fSetTime = CLAMP((fTotalTime / fTotalDist) * (fTotalDist - fCurrentDist), 0.0, (fTotalTime / 100.0) * fTimeCap) PRINTLN("fSetTime = ", fSetTime) START_PLAYBACK_RECORDED_VEHICLE(vehIndex, 003, sCarrecGarage) IF GET_ENTITY_MODEL(vehIndex) = CHEETAH SET_GLOBAL_POSITION_OFFSET_FOR_RECORDED_VEHICLE_PLAYBACK(vehIndex, <<0.0, 0.0, -0.225>>) ELIF GET_ENTITY_MODEL(vehIndex) = ENTITYXF SET_GLOBAL_POSITION_OFFSET_FOR_RECORDED_VEHICLE_PLAYBACK(vehIndex, <<0.0, 0.0, -0.150>>) ENDIF IF fSetTime < (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(003, sCarrecGarage) / 100.0) * 40 fSetTime = (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(003, sCarrecGarage) / 100.0) * 40 ENDIF SET_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehIndex, fSetTime) vFranklinPos = GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(003, fSetTime, sCarrecGarage) PRINTLN("================================") //Michael - 001 - Buddy comes next IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_FRANKLIN vehIndex = vehPlayer ELIF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_MICHAEL vehIndex = vehRival1 ENDIF PRINTLN("======== Michael - 001 =========") fCurrentDist = GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehIndex), GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(001, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(001, sCarrecGarage), sCarrecGarage)) fTotalDist = GET_DISTANCE_BETWEEN_COORDS(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(001, 0.0, sCarrecGarage), GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(001, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(001, sCarrecGarage), sCarrecGarage)) fTotalTime = GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(001, sCarrecGarage) PRINTLN("fCurrentDist = ", fCurrentDist) PRINTLN("fTotalDist = ", fTotalDist) PRINTLN("fTotalTime = ", fTotalTime) IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehIndex) fTimeCap = 80.0 ELSE fTimeCap = 100.0 ENDIF PRINTLN("fTimeCap = ", fTimeCap) fSetTime = CLAMP((fTotalTime / fTotalDist) * (fTotalDist - fCurrentDist), 0.0, (fTotalTime / 100.0) * fTimeCap) PRINTLN("fSetTime = ", fSetTime) //Michael must be further than 5.0 metres from Franklin (unless it's the player!) IF fSetTime < (fTotalTime / 100.0) * 95.0 IF GET_DISTANCE_BETWEEN_COORDS(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(001, fSetTime, sCarrecGarage), vFranklinPos) <= 10.0 AND GET_DISTANCE_BETWEEN_COORDS(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(001, fSetTime, sCarrecGarage), GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(001, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(001, sCarrecGarage), sCarrecGarage)) > 5.0 fSetTime = CLAMP(((fTotalTime / fTotalDist) * (fTotalDist - fCurrentDist)) - 1500.0, 0.0, (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(001, sCarrecGarage) / 100.0) * fTimeCap) PRINTLN("fSetTime = ", fSetTime) ENDIF ENDIF START_PLAYBACK_RECORDED_VEHICLE(vehIndex, 001, sCarrecGarage) IF GET_ENTITY_MODEL(vehIndex) = F620 SET_GLOBAL_POSITION_OFFSET_FOR_RECORDED_VEHICLE_PLAYBACK(vehIndex, <<0.0, 0.0, 0.2>>) ELIF GET_ENTITY_MODEL(vehIndex) = CHEETAH SET_GLOBAL_POSITION_OFFSET_FOR_RECORDED_VEHICLE_PLAYBACK(vehIndex, <<0.0, 0.0, -0.050>>) ENDIF IF fSetTime < (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(001, sCarrecGarage) / 100.0) * 40 fSetTime = (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(001, sCarrecGarage) / 100.0) * 40 ENDIF SET_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehIndex, fSetTime) vMichaelPos = GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(001, fSetTime, sCarrecGarage) PRINTLN("================================") //Trevor - 002 - Last buddy IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_TREVOR vehIndex = vehRival2 ELIF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_MICHAEL vehIndex = vehRival1 ENDIF PRINTLN("========= Trevor - 002 =========") fCurrentDist = GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehIndex), GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(002, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(002, sCarrecGarage), sCarrecGarage)) fTotalDist = GET_DISTANCE_BETWEEN_COORDS(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(002, 0.0, sCarrecGarage), GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(002, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(002, sCarrecGarage), sCarrecGarage)) fTotalTime = GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(002, sCarrecGarage) PRINTLN("fCurrentDist = ", fCurrentDist) PRINTLN("fTotalDist = ", fTotalDist) PRINTLN("fTotalTime = ", fTotalTime) IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehIndex) fTimeCap = 80.0 ELSE fTimeCap = 100.0 ENDIF PRINTLN("fTimeCap = ", fTimeCap) fSetTime = CLAMP((fTotalTime / fTotalDist) * (fTotalDist - fCurrentDist), 0.0, (fTotalTime / 100.0) * fTimeCap) PRINTLN("fSetTime = ", fSetTime) //Trevor must be further than 5.0 metres from Franklin (unless it's the player!) IF fSetTime < (fTotalTime / 100.0) * 95.0 IF GET_DISTANCE_BETWEEN_COORDS(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(002, fSetTime, sCarrecGarage), vFranklinPos) <= 10.0 AND GET_DISTANCE_BETWEEN_COORDS(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(002, fSetTime, sCarrecGarage), GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(002, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(002, sCarrecGarage), sCarrecGarage)) > 5.0 fSetTime = CLAMP(((fTotalTime / fTotalDist) * (fTotalDist - fCurrentDist)) - 1500.0, 0.0, (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(002, sCarrecGarage) / 100.0) * fTimeCap) PRINTLN("fSetTime = ", fSetTime) ENDIF ENDIF //Trevor must be further than 5.0 metres from Michael (unless it's the player!) IF fSetTime < (fTotalTime / 100.0) * 95.0 IF GET_DISTANCE_BETWEEN_COORDS(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(002, fSetTime, sCarrecGarage), vMichaelPos) <= 10.0 AND GET_DISTANCE_BETWEEN_COORDS(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(002, fSetTime, sCarrecGarage), GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(002, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(002, sCarrecGarage), sCarrecGarage)) > 5.0 fSetTime = CLAMP(((fTotalTime / fTotalDist) * (fTotalDist - fCurrentDist)) - 1500.0, 0.0, (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(002, sCarrecGarage) / 100.0) * fTimeCap) PRINTLN("fSetTime = ", fSetTime) ENDIF ENDIF START_PLAYBACK_RECORDED_VEHICLE(vehIndex, 002, sCarrecGarage) IF GET_ENTITY_MODEL(vehIndex) = F620 SET_GLOBAL_POSITION_OFFSET_FOR_RECORDED_VEHICLE_PLAYBACK(vehIndex, <<0.0, 0.0, 0.275>>) ELIF GET_ENTITY_MODEL(vehIndex) = ENTITYXF SET_GLOBAL_POSITION_OFFSET_FOR_RECORDED_VEHICLE_PLAYBACK(vehIndex, <<0.0, 0.0, 0.100>>) ENDIF IF fSetTime < (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(002, sCarrecGarage) / 100.0) * 40 fSetTime = (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(002, sCarrecGarage) / 100.0) * 40 ENDIF SET_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehIndex, fSetTime) PRINTLN("================================") SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(PLAYER_PED(CHAR_FRANKLIN), TRUE) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(PLAYER_PED(CHAR_MICHAEL), TRUE) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(PLAYER_PED(CHAR_TREVOR), TRUE) IF NOT IS_PED_IN_VEHICLE(PLAYER_PED(CHAR_FRANKLIN), vehPlayer) SET_PED_INTO_VEHICLE(PLAYER_PED(CHAR_FRANKLIN), vehPlayer) ENDIF IF NOT IS_PED_IN_VEHICLE(PLAYER_PED(CHAR_MICHAEL), vehRival1) SET_PED_INTO_VEHICLE(PLAYER_PED(CHAR_MICHAEL), vehRival1) ENDIF IF NOT IS_PED_IN_VEHICLE(PLAYER_PED(CHAR_TREVOR), vehRival2) SET_PED_INTO_VEHICLE(PLAYER_PED(CHAR_TREVOR), vehRival2) ENDIF WAIT_WITH_DEATH_CHECKS(0) CLEAR_AREA(<<485.3990, -1332.9005, 28.3095>>, 500.0, TRUE) IF NOT DOES_CAM_EXIST(camMain) camMain = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", TRUE) ENDIF INT iCameraTime iCameraTime = 0 vehIndex = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehIndex) IF ROUND(GET_TOTAL_DURATION_OF_VEHICLE_RECORDING_ID(GET_CURRENT_PLAYBACK_FOR_VEHICLE(vehIndex)) - GET_TIME_POSITION_IN_RECORDING(vehIndex)) > iCameraTime iCameraTime = ROUND(GET_TOTAL_DURATION_OF_VEHICLE_RECORDING_ID(GET_CURRENT_PLAYBACK_FOR_VEHICLE(vehIndex)) - GET_TIME_POSITION_IN_RECORDING(vehIndex)) ENDIF ENDIF SET_CAM_PARAMS(camMain, <<490.698425, -1337.069702, 30.857084>>, <<-0.619130, 0.022362, -15.042570>>, 25.977287) SET_CAM_PARAMS(camMain, <<491.126160, -1337.160400, 30.104757>>, <<-0.619130, 0.022362, -16.546909>>, 25.977287, iCameraTime + 500, GRAPH_TYPE_LINEAR, GRAPH_TYPE_LINEAR) SHAKE_CAM(camMain, "HAND_SHAKE", 0.2) RENDER_SCRIPT_CAMS(TRUE, FALSE) OVERRIDE_LODSCALE_THIS_FRAME(1.0) SET_FRONTEND_RADIO_ACTIVE(FALSE) REPLAY_RECORD_BACK_FOR_TIME(8.0, 0.0, REPLAY_IMPORTANCE_HIGHEST) REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST) CLEAR_TEXT() //Fade In IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(500) ENDIF iDialogueTimer[0] = GET_GAME_TIMER() + 20000 //Saving variables by reusing iDialogueTimer[0] ADVANCE_CUTSCENE() // ENDIF BREAK CASE 2 OVERRIDE_LODSCALE_THIS_FRAME(1.0) #IF IS_DEBUG_BUILD IF NOT IS_INTERIOR_READY(intChopShop) PRINTLN("PINNING INTERIOR...") ENDIF PRINTLN("GET_GAME_TIMER() = ", GET_GAME_TIMER(), " | iTimeOut = ", iDialogueTimer[0]) #ENDIF bPausedMichael = TRUE bPausedTrevor = TRUE bPausedFranklin = TRUE IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPlayer) AND GET_TIME_POSITION_IN_RECORDING(vehPlayer) >= (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING_ID(GET_CURRENT_PLAYBACK_FOR_VEHICLE(vehPlayer)) / 100.0) * 99 PAUSE_PLAYBACK_RECORDED_VEHICLE(vehPlayer) ELSE bPausedFranklin = FALSE ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) AND GET_TIME_POSITION_IN_RECORDING(vehRival1) >= (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING_ID(GET_CURRENT_PLAYBACK_FOR_VEHICLE(vehRival1)) / 100.0) * 99 PAUSE_PLAYBACK_RECORDED_VEHICLE(vehRival1) ELSE bPausedMichael = FALSE ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival2) AND GET_TIME_POSITION_IN_RECORDING(vehRival2) >= (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING_ID(GET_CURRENT_PLAYBACK_FOR_VEHICLE(vehRival2)) / 100.0) * 99 PAUSE_PLAYBACK_RECORDED_VEHICLE(vehRival2) ELSE bPausedTrevor = FALSE ENDIF SET_PED_RESET_FLAG(PLAYER_PED(CHAR_MICHAEL), PRF_PreventGoingIntoShuntInVehicleState, TRUE) SET_PED_RESET_FLAG(PLAYER_PED(CHAR_TREVOR), PRF_PreventGoingIntoShuntInVehicleState, TRUE) SET_PED_RESET_FLAG(PLAYER_PED(CHAR_FRANKLIN), PRF_PreventGoingIntoShuntInVehicleState, TRUE) IF (GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN AND (bPausedFranklin OR NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPlayer))) OR (GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL AND (bPausedMichael OR NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1))) OR (GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR AND (bPausedTrevor OR NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival2))) SPAWN_VEHICLE(vehCutscene, FELON, <<481.3185, -1317.7887, 28.2023>>, -63.4145) SPAWN_PED(pedWorker1, S_M_Y_DWSERVICE_02, <<480.6057, -1317.0214, 28.2028>>, 75.2925) SET_PED_COMPONENT_VARIATION(pedWorker1, PED_COMP_HEAD, 1, 0) SPAWN_PED(pedWorker2, S_M_Y_DWSERVICE_02, <<478.7872, -1317.6216, 28.2028>>, -56.3168) SET_PED_COMPONENT_VARIATION(pedWorker2, PED_COMP_HEAD, 2, 0) CREATE_NPC_PED_ON_FOOT(pedMolly, CHAR_MOLLY, <<479.5576, -1315.9417, 28.2028>>, -66.9277) SET_PED_PROP_INDEX(pedMolly, ANCHOR_EYES, 0) SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(pedMolly, TRUE) CREATE_NPC_PED_ON_FOOT(pedDevin, CHAR_DEVIN, <<479.9050, -1314.8568, 28.2028>>, 170.8332) SET_PED_COMPONENT_VARIATION(pedDevin, PED_COMP_TORSO, 2, 0) SET_PED_COMPONENT_VARIATION(pedDevin, PED_COMP_LEG, 2, 0) SET_PED_COMPONENT_VARIATION(pedDevin, PED_COMP_DECL, 1, 0) SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(pedDevin, TRUE) ADVANCE_CUTSCENE() ENDIF BREAK CASE 3 OVERRIDE_LODSCALE_THIS_FRAME(1.0) #IF IS_DEBUG_BUILD IF NOT IS_INTERIOR_READY(intChopShop) PRINTLN("PINNING INTERIOR...") ENDIF PRINTLN("GET_GAME_TIMER() = ", GET_GAME_TIMER(), " | iTimeOut = ", iDialogueTimer[0]) #ENDIF bPausedMichael = TRUE bPausedTrevor = TRUE bPausedFranklin = TRUE IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPlayer) AND GET_TIME_POSITION_IN_RECORDING(vehPlayer) >= (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING_ID(GET_CURRENT_PLAYBACK_FOR_VEHICLE(vehPlayer)) / 100.0) * 99 PAUSE_PLAYBACK_RECORDED_VEHICLE(vehPlayer) ELSE bPausedFranklin = FALSE ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) AND GET_TIME_POSITION_IN_RECORDING(vehRival1) >= (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING_ID(GET_CURRENT_PLAYBACK_FOR_VEHICLE(vehRival1)) / 100.0) * 99 PAUSE_PLAYBACK_RECORDED_VEHICLE(vehRival1) ELSE bPausedMichael = FALSE ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival2) AND GET_TIME_POSITION_IN_RECORDING(vehRival2) >= (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING_ID(GET_CURRENT_PLAYBACK_FOR_VEHICLE(vehRival2)) / 100.0) * 99 PAUSE_PLAYBACK_RECORDED_VEHICLE(vehRival2) ELSE bPausedTrevor = FALSE ENDIF SET_PED_RESET_FLAG(PLAYER_PED(CHAR_MICHAEL), PRF_PreventGoingIntoShuntInVehicleState, TRUE) SET_PED_RESET_FLAG(PLAYER_PED(CHAR_TREVOR), PRF_PreventGoingIntoShuntInVehicleState, TRUE) SET_PED_RESET_FLAG(PLAYER_PED(CHAR_FRANKLIN), PRF_PreventGoingIntoShuntInVehicleState, TRUE) IF bPausedFranklin OR NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPlayer) IF GET_SCRIPT_TASK_STATUS(PLAYER_PED(CHAR_FRANKLIN), SCRIPT_TASK_PERFORM_SEQUENCE) != PERFORMING_TASK OPEN_SEQUENCE_TASK(seqMain) TASK_LEAVE_ANY_VEHICLE(NULL, 400) TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, <<479.9050, -1314.8568, 29.1361>>, PEDMOVE_WALK) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(PLAYER_PED(CHAR_FRANKLIN), seqMain) CLEAR_SEQUENCE_TASK(seqMain) ENDIF ENDIF IF bPausedMichael OR NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) IF GET_SCRIPT_TASK_STATUS(PLAYER_PED(CHAR_MICHAEL), SCRIPT_TASK_PERFORM_SEQUENCE) != PERFORMING_TASK OPEN_SEQUENCE_TASK(seqMain) TASK_LEAVE_ANY_VEHICLE(NULL, 0) TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, <<479.9050, -1314.8568, 29.1361>>, PEDMOVE_WALK) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(PLAYER_PED(CHAR_MICHAEL), seqMain) CLEAR_SEQUENCE_TASK(seqMain) ENDIF ENDIF IF bPausedTrevor OR NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival2) IF GET_SCRIPT_TASK_STATUS(PLAYER_PED(CHAR_TREVOR), SCRIPT_TASK_PERFORM_SEQUENCE) != PERFORMING_TASK OPEN_SEQUENCE_TASK(seqMain) TASK_LEAVE_ANY_VEHICLE(NULL, 150) TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, <<479.9050, -1314.8568, 29.1361>>, PEDMOVE_WALK) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(PLAYER_PED(CHAR_TREVOR), seqMain) CLEAR_SEQUENCE_TASK(seqMain) ENDIF ENDIF IF TIMERA() > 500 SET_CAM_PARAMS(camMain, <<506.658447, -1312.660767, 29.656441>>, <<1.058747, 0.013282, 96.031349>>, 36.686596) SET_CAM_PARAMS(camMain, <<505.959290, -1312.438965, 29.668831>>, <<1.058747, 0.013282, 96.031349>>, 36.686596, 6000, GRAPH_TYPE_LINEAR, GRAPH_TYPE_LINEAR) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPlayer) AND GET_TIME_POSITION_IN_RECORDING(vehPlayer) < (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING_ID(GET_CURRENT_PLAYBACK_FOR_VEHICLE(vehPlayer)) / 100.0) * 80 SET_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehPlayer, (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING_ID(GET_CURRENT_PLAYBACK_FOR_VEHICLE(vehPlayer)) / 100.0) * 80) FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehPlayer) ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) AND GET_TIME_POSITION_IN_RECORDING(vehRival1) < (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING_ID(GET_CURRENT_PLAYBACK_FOR_VEHICLE(vehRival1)) / 100.0) * 80 SET_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehRival1, (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING_ID(GET_CURRENT_PLAYBACK_FOR_VEHICLE(vehRival1)) / 100.0) * 80) FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehRival1) ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival2) AND GET_TIME_POSITION_IN_RECORDING(vehRival2) < (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING_ID(GET_CURRENT_PLAYBACK_FOR_VEHICLE(vehRival2)) / 100.0) * 80 SET_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehRival2, (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING_ID(GET_CURRENT_PLAYBACK_FOR_VEHICLE(vehRival2)) / 100.0) * 80) FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehRival2) ENDIF ADVANCE_CUTSCENE() ENDIF BREAK CASE 4 OVERRIDE_LODSCALE_THIS_FRAME(1.0) #IF IS_DEBUG_BUILD IF NOT IS_INTERIOR_READY(intChopShop) PRINTLN("PINNING INTERIOR...") ENDIF PRINTLN("GET_GAME_TIMER() = ", GET_GAME_TIMER(), " | iTimeOut = ", iDialogueTimer[0]) #ENDIF bPausedMichael = TRUE bPausedTrevor = TRUE bPausedFranklin = TRUE IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPlayer) AND GET_TIME_POSITION_IN_RECORDING(vehPlayer) >= (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING_ID(GET_CURRENT_PLAYBACK_FOR_VEHICLE(vehPlayer)) / 100.0) * 99 PAUSE_PLAYBACK_RECORDED_VEHICLE(vehPlayer) ELSE bPausedFranklin = FALSE ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) AND GET_TIME_POSITION_IN_RECORDING(vehRival1) >= (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING_ID(GET_CURRENT_PLAYBACK_FOR_VEHICLE(vehRival1)) / 100.0) * 99 PAUSE_PLAYBACK_RECORDED_VEHICLE(vehRival1) ELSE bPausedMichael = FALSE ENDIF IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival2) AND GET_TIME_POSITION_IN_RECORDING(vehRival2) >= (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING_ID(GET_CURRENT_PLAYBACK_FOR_VEHICLE(vehRival2)) / 100.0) * 99 PAUSE_PLAYBACK_RECORDED_VEHICLE(vehRival2) ELSE bPausedTrevor = FALSE ENDIF SET_PED_RESET_FLAG(PLAYER_PED(CHAR_MICHAEL), PRF_PreventGoingIntoShuntInVehicleState, TRUE) SET_PED_RESET_FLAG(PLAYER_PED(CHAR_TREVOR), PRF_PreventGoingIntoShuntInVehicleState, TRUE) SET_PED_RESET_FLAG(PLAYER_PED(CHAR_FRANKLIN), PRF_PreventGoingIntoShuntInVehicleState, TRUE) IF bPausedFranklin OR NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPlayer) IF GET_SCRIPT_TASK_STATUS(PLAYER_PED(CHAR_FRANKLIN), SCRIPT_TASK_PERFORM_SEQUENCE) != PERFORMING_TASK OPEN_SEQUENCE_TASK(seqMain) TASK_LEAVE_ANY_VEHICLE(NULL, 400) TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, <<479.9050, -1314.8568, 29.1361>>, PEDMOVE_WALK) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(PLAYER_PED(CHAR_FRANKLIN), seqMain) CLEAR_SEQUENCE_TASK(seqMain) ENDIF ENDIF IF bPausedMichael OR NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) IF GET_SCRIPT_TASK_STATUS(PLAYER_PED(CHAR_MICHAEL), SCRIPT_TASK_PERFORM_SEQUENCE) != PERFORMING_TASK OPEN_SEQUENCE_TASK(seqMain) TASK_LEAVE_ANY_VEHICLE(NULL, 0) TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, <<479.9050, -1314.8568, 29.1361>>, PEDMOVE_WALK) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(PLAYER_PED(CHAR_MICHAEL), seqMain) CLEAR_SEQUENCE_TASK(seqMain) ENDIF ENDIF IF bPausedTrevor OR NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival2) IF GET_SCRIPT_TASK_STATUS(PLAYER_PED(CHAR_TREVOR), SCRIPT_TASK_PERFORM_SEQUENCE) != PERFORMING_TASK OPEN_SEQUENCE_TASK(seqMain) TASK_LEAVE_ANY_VEHICLE(NULL, 150) TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, <<479.9050, -1314.8568, 29.1361>>, PEDMOVE_WALK) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(PLAYER_PED(CHAR_TREVOR), seqMain) CLEAR_SEQUENCE_TASK(seqMain) ENDIF ENDIF IF ((NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPlayer) OR bPausedFranklin) AND (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) OR bPausedMichael) AND (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival2) OR bPausedTrevor) AND (TIMERA() > 3000 AND HAS_THIS_CUTSCENE_LOADED_WITH_FAILSAFE("car_1_ext_concat")) AND (HAVE_ALL_STREAMING_REQUESTS_COMPLETED(pedWorker1) AND HAVE_ALL_STREAMING_REQUESTS_COMPLETED(pedWorker2) AND HAVE_ALL_STREAMING_REQUESTS_COMPLETED(pedMolly) AND HAVE_ALL_STREAMING_REQUESTS_COMPLETED(pedDevin))) // AND IS_INTERIOR_READY(intChopShop) - should be bunched with HAS_THIS_CUTSCENE_LOADED OR GET_GAME_TIMER() > iDialogueTimer[0] #IF IS_DEBUG_BUILD IF GET_GAME_TIMER() > iDialogueTimer[0] IF NOT IS_INTERIOR_READY(intChopShop) SCRIPT_ASSERT("IS_INTERIOR_READY(intChopShop) timed out, see log for details.") ENDIF ENDIF #ENDIF //Stream Volume IF STREAMVOL_IS_VALID(svolCarStealOutro) STREAMVOL_DELETE(svolCarStealOutro) ENDIF SET_SELECTOR_PED_BLOCKED(sSelectorPeds, SELECTOR_PED_MICHAEL, FALSE) SET_SELECTOR_PED_BLOCKED(sSelectorPeds, SELECTOR_PED_FRANKLIN, FALSE) SET_SELECTOR_PED_BLOCKED(sSelectorPeds, SELECTOR_PED_TREVOR, FALSE) PED_INDEX pedLastPlayer pedLastPlayer = PLAYER_PED_ID() IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_MICHAEL MAKE_SELECTOR_PED_SELECTION(sSelectorPeds, SELECTOR_PED_MICHAEL) TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds, TRUE, TRUE, TCF_CLEAR_TASK_INTERRUPT_CHECKS) SET_GAMEPLAY_CAM_FOLLOW_PED_THIS_UPDATE(pedLastPlayer) ENDIF SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE) IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_MICHAEL REGISTER_ENTITY_FOR_CUTSCENE(PLAYER_PED(CHAR_MICHAEL), "Michael", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) ENDIF IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_FRANKLIN REGISTER_ENTITY_FOR_CUTSCENE(PLAYER_PED(CHAR_FRANKLIN), "Franklin", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) ENDIF IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_TREVOR REGISTER_ENTITY_FOR_CUTSCENE(PLAYER_PED(CHAR_TREVOR), "Trevor", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) ENDIF IF NOT IS_ENTITY_DEAD(vehCutscene) REGISTER_ENTITY_FOR_CUTSCENE(vehCutscene, "Car_in_garage", CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY) ENDIF REGISTER_ENTITY_FOR_CUTSCENE(vehPlayer, "Franklins_car", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(vehRival1, "Car_Racer_runsaway", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(vehRival2, "Car_Racer_dies", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(pedMolly, "MOLLY", CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(pedDevin, "DEVIN", CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY) IF NOT IS_ENTITY_DEAD(pedWorker1) REGISTER_ENTITY_FOR_CUTSCENE(pedWorker1, "Car_1_guy", CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY) ENDIF IF NOT IS_ENTITY_DEAD(pedWorker2) REGISTER_ENTITY_FOR_CUTSCENE(pedWorker2, "Car_1_guy_2", CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY) ENDIF START_CUTSCENE() WAIT_WITH_DEATH_CHECKS(0) RENDER_SCRIPT_CAMS(FALSE, FALSE) SET_FRONTEND_RADIO_ACTIVE(TRUE) ADVANCE_CUTSCENE() ENDIF BREAK CASE 5 IF WAS_CUTSCENE_SKIPPED() SET_CUTSCENE_FADE_VALUES(FALSE, FALSE, TRUE, FALSE) bCutsceneSkipped = TRUE ENDIF IF CAN_SET_EXIT_STATE_FOR_CAMERA() SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED("CutsceneFadeOut") IF GET_CUTSCENE_TIME() > ROUND(108.000000 * 1000.0) IF NOT bCutsceneSkipped IF NOT HAS_LABEL_BEEN_TRIGGERED("RemoveCopUniform") RESET_PLAYER_HAS_CHANGE_CLOTHES_ON_MISSION(CHAR_MICHAEL, bHasChanged) //reset that the player has changed outfit on mission to how it was at the start of the mission RESET_PLAYER_HAS_CHANGE_CLOTHES_ON_MISSION(CHAR_TREVOR, bHasChanged) RESTORE_PLAYER_PED_VARIATIONS(PLAYER_PED(CHAR_MICHAEL)) SET_LABEL_AS_TRIGGERED("RemoveCopUniform", TRUE) ENDIF ENDIF //Also hide the cars SET_ENTITY_VISIBLE(vehPlayer, FALSE) SET_ENTITY_VISIBLE(vehRival1, FALSE) SET_ENTITY_VISIBLE(vehRival2, FALSE) SET_VEHICLE_ENGINE_ON(vehPlayer, FALSE, TRUE) SET_VEHICLE_ENGINE_ON(vehRival1, FALSE, TRUE) SET_VEHICLE_ENGINE_ON(vehRival2, FALSE, TRUE) IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_MICHAEL SET_ENTITY_VISIBLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE) ENDIF IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_FRANKLIN SET_ENTITY_VISIBLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], FALSE) ENDIF IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_TREVOR SET_ENTITY_VISIBLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], FALSE) ENDIF REMOVE_MODEL_HIDE(<<498.7252, -1317.7551, 28.2534>>, 1.0, PROP_SC1_06_GATE_L, FALSE) REMOVE_MODEL_HIDE(<<494.6904, -1312.0663, 28.2534>>, 1.0, PROP_SC1_06_GATE_R, FALSE) SET_LABEL_AS_TRIGGERED("CutsceneFadeOut", TRUE) ENDIF ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Michael") SIMULATE_PLAYER_INPUT_GAIT(PLAYER_ID(), PEDMOVE_WALK, 2000) FORCE_PED_MOTION_STATE(PLAYER_PED(CHAR_MICHAEL), MS_ON_FOOT_WALK, TRUE, FAUS_CUTSCENE_EXIT) ENDIF IF bCutsceneSkipped IF NOT HAS_LABEL_BEEN_TRIGGERED("ForceFadeOut") IF IS_SCREEN_FADED_OUT() SET_LABEL_AS_TRIGGERED("ForceFadeOut", TRUE) ENDIF ELSE DO_SCREEN_FADE_OUT(0) ENDIF ENDIF IF HAS_CUTSCENE_FINISHED() REPLAY_STOP_EVENT() IF bCutsceneSkipped LOAD_SCENE_ADV(<<498.7252, -1317.7551, 28.2534>>, 75.0) IF NOT HAS_LABEL_BEEN_TRIGGERED("RemoveCopUniform") RESET_PLAYER_HAS_CHANGE_CLOTHES_ON_MISSION(CHAR_MICHAEL, bHasChanged) //reset that the player has changed outfit on mission to how it was at the start of the mission RESET_PLAYER_HAS_CHANGE_CLOTHES_ON_MISSION(CHAR_TREVOR, bHasChanged) RESTORE_PLAYER_PED_VARIATIONS(PLAYER_PED(CHAR_MICHAEL)) ENDIF INT iTimeOut iTimeOut = GET_GAME_TIMER() + 10000 WHILE NOT HAVE_ALL_STREAMING_REQUESTS_COMPLETED(PLAYER_PED(CHAR_MICHAEL)) AND GET_GAME_TIMER() < iTimeOut WAIT_WITH_DEATH_CHECKS(0) PRINTLN("GET_GAME_TIMER() = ", GET_GAME_TIMER(), " | iTimeOut = ", iTimeOut) ENDWHILE SET_PED_POSITION(PLAYER_PED(CHAR_MICHAEL), <<480.9356, -1315.8055, 28.2023>>, 270.8615, FALSE) SIMULATE_PLAYER_INPUT_GAIT(PLAYER_ID(), PEDMOVE_WALK, 2000) FORCE_PED_MOTION_STATE(PLAYER_PED(CHAR_MICHAEL), MS_ON_FOOT_WALK, TRUE, FAUS_CUTSCENE_EXIT) WAIT_WITH_DEATH_CHECKS(100) DO_SCREEN_FADE_IN(1000) #IF IS_DEBUG_BUILD PRINTLN("DO_SCREEN_FADE_IN") #ENDIF ENDIF bCutsceneSkipped = FALSE SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) SAFE_DELETE_VEHICLE(vehCutscene) SAFE_DELETE_VEHICLE(vehPlayer) SAFE_DELETE_VEHICLE(vehRival1) SAFE_DELETE_VEHICLE(vehRival2) SAFE_DELETE_PED(pedMolly) SAFE_DELETE_PED(pedDevin) SAFE_DELETE_PED(pedWorker1) SAFE_DELETE_PED(pedWorker2) IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_MICHAEL SAFE_DELETE_PED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) ENDIF IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_FRANKLIN SAFE_DELETE_PED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN]) ENDIF IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_TREVOR SAFE_DELETE_PED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) ENDIF ADVANCE_STAGE() ENDIF BREAK ENDSWITCH ENDIF IF CLEANUP_STAGE() //Cleanup (Blips, peds, variables etc.) //Stream Volume IF STREAMVOL_IS_VALID(svolCarStealOutro) STREAMVOL_DELETE(svolCarStealOutro) ENDIF REMOVE_CUTSCENE() WHILE HAS_CUTSCENE_LOADED() WAIT_WITH_DEATH_CHECKS(0) ENDWHILE //Audio Scene IF IS_AUDIO_SCENE_ACTIVE("CAR_1_GARAGE_ARRIVAL") STOP_AUDIO_SCENE("CAR_1_GARAGE_ARRIVAL") ENDIF eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1) ENDIF ENDPROC //══════════════════════════════════╡ DEBUG ╞════════════════════════════════════ #IF IS_DEBUG_BUILD PROC debugRoutine() IF bAutoSkipping = TRUE IF ENUM_TO_INT(eMissionObjective) >= ENUM_TO_INT(eMissionObjectiveAutoJSkip) // IF IS_SCREEN_FADED_OUT() // DO_SCREEN_FADE_IN(500) // // WHILE IS_SCREEN_FADING_IN() // WAIT(0) // ENDWHILE // ENDIF eMissionObjectiveAutoJSkip = initMission bAutoSkipping = FALSE bSkipped = TRUE ENDIF ENDIF IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_S) //Cutscene WHILE NOT HAS_CUTSCENE_FINISHED() STOP_CUTSCENE(TRUE) PRINTLN("STOPPING CUTSCENE...") WAIT_WITH_DEATH_CHECKS(0) ENDWHILE REMOVE_CUTSCENE() WHILE HAS_CUTSCENE_LOADED() PRINTLN("REMOVING CUTSCENE...") WAIT_WITH_DEATH_CHECKS(0) ENDWHILE missionPassed() ELIF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_F) //Cutscene WHILE NOT HAS_CUTSCENE_FINISHED() STOP_CUTSCENE(TRUE) PRINTLN("STOPPING CUTSCENE...") WAIT_WITH_DEATH_CHECKS(0) ENDWHILE REMOVE_CUTSCENE() WHILE HAS_CUTSCENE_LOADED() PRINTLN("REMOVING CUTSCENE...") WAIT_WITH_DEATH_CHECKS(0) ENDWHILE missionFailed() ELIF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J) OR ENUM_TO_INT(eMissionObjective) < ENUM_TO_INT(eMissionObjectiveAutoJSkip) IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J) bSkipped = TRUE ENDIF IF NOT IS_SCREEN_FADED_OUT() AND NOT IS_SCREEN_FADING_OUT() DO_SCREEN_FADE_OUT(500) WHILE NOT IS_SCREEN_FADED_OUT() WAIT_WITH_DEATH_CHECKS(0) ENDWHILE ENDIF SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) CLEAR_TEXT() //Cutscene WHILE NOT HAS_CUTSCENE_FINISHED() STOP_CUTSCENE(TRUE) PRINTLN("STOPPING CUTSCENE...") WAIT_WITH_DEATH_CHECKS(0) ENDWHILE REMOVE_CUTSCENE() WHILE HAS_CUTSCENE_LOADED() PRINTLN("REMOVING CUTSCENE...") WAIT_WITH_DEATH_CHECKS(0) ENDWHILE ADVANCE_STAGE() TEXT_LABEL txtLabel txtLabel = ENUM_TO_INT(eMissionObjective) PRINTSTRING(txtLabel) PRINTNL() ELIF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_P) OR LAUNCH_MISSION_STAGE_MENU(SkipMenuStruct, iStageSkipMenu, ENUM_TO_INT(eMissionObjective)) IF bAutoSkipping = FALSE bAutoSkipping = TRUE IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_P) eMissionObjectiveAutoJSkip = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) - 1) ELSE eMissionObjectiveAutoJSkip = INT_TO_ENUM(MissionObjective, iStageSkipMenu) ENDIF eMissionObjective = initMission DO_SCREEN_FADE_OUT(500) WHILE IS_SCREEN_FADING_OUT() WAIT(0) ENDWHILE //Stop recordings IF DOES_ENTITY_EXIST(vehPlayer) IF NOT IS_ENTITY_DEAD(vehPlayer) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPlayer) STOP_PLAYBACK_RECORDED_VEHICLE(vehPlayer) ENDIF ENDIF ENDIF IF DOES_ENTITY_EXIST(vehRival1) IF NOT IS_ENTITY_DEAD(vehRival1) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) STOP_PLAYBACK_RECORDED_VEHICLE(vehRival1) ENDIF ENDIF ENDIF IF DOES_ENTITY_EXIST(vehRival2) IF NOT IS_ENTITY_DEAD(vehRival2) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival2) STOP_PLAYBACK_RECORDED_VEHICLE(vehRival2) ENDIF ENDIF ENDIF IF DOES_ENTITY_EXIST(vehPolice1) IF NOT IS_ENTITY_DEAD(vehPolice1) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPolice1) STOP_PLAYBACK_RECORDED_VEHICLE(vehPolice1) ENDIF ENDIF ENDIF IF DOES_ENTITY_EXIST(vehPolice2) IF NOT IS_ENTITY_DEAD(vehPolice2) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPolice2) STOP_PLAYBACK_RECORDED_VEHICLE(vehPolice2) ENDIF ENDIF ENDIF CLEANUP_UBER_PLAYBACK() //Cutscene WHILE NOT HAS_CUTSCENE_FINISHED() STOP_CUTSCENE(TRUE) PRINTLN("STOPPING CUTSCENE...") WAIT_WITH_DEATH_CHECKS(0) ENDWHILE REMOVE_CUTSCENE() WHILE HAS_CUTSCENE_LOADED() PRINTLN("REMOVING CUTSCENE...") WAIT_WITH_DEATH_CHECKS(0) ENDWHILE MISSION_CLEANUP(TRUE) CLEAR_AREA(GET_ENTITY_COORDS(PLAYER_PED_ID()), 10000.0, TRUE) ENDIF ENDIF ENDPROC #ENDIF //══════════════════════════════╡ MISSION SCRIPT ╞═══════════════════════════════ SCRIPT IF HAS_FORCE_CLEANUP_OCCURRED() Mission_Flow_Mission_Force_Cleanup() MISSION_CLEANUP(FALSE, TRUE) ENDIF SET_MISSION_FLAG(TRUE) //═══════════════════════════════╡ MISSION LOOP ╞════════════════════════════════ #IF IS_DEBUG_BUILD MissionNames() #ENDIF // REQUEST_MODEL(ENTITYXF) // REQUEST_MODEL(CHEETAH) // REQUEST_MODEL(TRAILERS) // REQUEST_MODEL(TRAILERS2) // // WHILE NOT HAS_MODEL_LOADED(ENTITYXF) // OR NOT HAS_MODEL_LOADED(CHEETAH) // OR NOT HAS_MODEL_LOADED(TRAILERS) // OR NOT HAS_MODEL_LOADED(TRAILERS2) // WAIT(0) // ENDWHILE // // REQUEST_VEHICLE_RECORDING(500, "ALubersetup") //// REQUEST_VEHICLE_RECORDING(501, "ALubersetup") // // WHILE NOT HAS_VEHICLE_RECORDING_BEEN_LOADED(500, "ALubersetup") //// OR NOT HAS_VEHICLE_RECORDING_BEEN_LOADED(501, "ALubersetup") // WAIT(0) // ENDWHILE // // SPAWN_VEHICLE(vehRival1, ENTITYXF, vRival1Start, fRival1Start) // SPAWN_VEHICLE(vehRival2, CHEETAH, vRival2Start, fRival2Start) // // SAFE_ADD_BLIP_VEHICLE(blipRival1, vehRival1) // SAFE_ADD_BLIP_VEHICLE(blipRival2, vehRival2) // // SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehRival2) // // SET_VEHICLE_POPULATION_BUDGET(0) // // CLEAR_AREA(vRival1Start, 1000.0, TRUE) // // LOAD_SCENE(vRival1Start) // // //INIT_UBER_RECORDING("ALubersetup") // // INITIALISE_UBER_PLAYBACK("ALubersetup", 500) // // UberSetupVariables() // // iDontSwitchThisSetpieceRecordingToAI = 1 // iDontSwitchThisSetpieceRecordingToAI2 = 2 // // SET_CINEMATIC_BUTTON_ACTIVE(FALSE) // // WAIT(1000) // // START_PLAYBACK_RECORDED_VEHICLE(vehRival1, 500, "ALubersetup") //// START_PLAYBACK_RECORDED_VEHICLE(vehRival2, 501, "ALubersetup") // // VEHICLE_INDEX vehClosestCars[10] // // SET_PED_POPULATION_BUDGET(0) // SET_VEHICLE_POPULATION_BUDGET(0) // // WHILE(TRUE) // //UPDATE_UBER_RECORDING() // // bTrafficDebugOn = TRUE // bPlayTrafficRecordingEvenIfPlayerIsAheadOfChase = TRUE // fUberPlaybackDensitySwitchOffRange = 300 // PRELOAD_ALL_CHASE_RECORDINGS(GET_TIME_POSITION_IN_RECORDING(vehRival1), "ALubersetup") // // CREATE_ALL_WAITING_UBER_CARS() // // UPDATE_UBER_PLAYBACK(vehRival1, fPlaybackSpeed) // //// IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID()) //// IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) //// IF NOT IS_RECORDING_GOING_ON_FOR_VEHICLE(vehRival2) //// START_RECORDING_VEHICLE(vehRival2, 599, "ALubersetup", TRUE) //// ENDIF //// ELSE //// IF IS_RECORDING_GOING_ON_FOR_VEHICLE(vehRival2) //// STOP_RECORDING_VEHICLE(vehRival2) //// ENDIF //// ENDIF //// ENDIF // // IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) //// IF DOES_ENTITY_EXIST(vehRival2) //// IF NOT IS_ENTITY_DEAD(vehRival2) //// IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival2) //// SET_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehRival2, GET_TIME_POSITION_IN_RECORDING(vehRival1)) //// ENDIF //// ENDIF //// ENDIF // // IF DOES_ENTITY_EXIST(SetPieceCarID[1]) // IF NOT DOES_ENTITY_EXIST(vehTrailer[0]) // SPAWN_VEHICLE(vehTrailer[0], TRAILERS2, GET_POSITION_OF_VEHICLE_RECORDING_ID_AT_TIME(GET_VEHICLE_RECORDING_ID(401, "ALubersetup"), 0.0), 0.0) // SET_ENTITY_ROTATION(vehTrailer[0], GET_ROTATION_OF_VEHICLE_RECORDING_ID_AT_TIME(GET_VEHICLE_RECORDING_ID(401, "ALubersetup"), 0.0)) // SET_ENTITY_NO_COLLISION_ENTITY(vehTrailer[0], SetPieceCarID[1], TRUE) // ENDIF // ENDIF // // IF DOES_ENTITY_EXIST(vehTrailer[0]) // IF NOT IS_ENTITY_DEAD(vehTrailer[0]) // IF DOES_ENTITY_EXIST(SetPieceCarID[1]) // IF NOT IS_ENTITY_DEAD(SetPieceCarID[1]) // IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(SetPieceCarID[1]) // IF NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehTrailer[0]) // START_PLAYBACK_RECORDED_VEHICLE(vehTrailer[0], 401, "ALubersetup") // ENDIF // ENDIF // // IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehTrailer[0]) // IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(SetPieceCarID[1]) // SET_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehTrailer[0], GET_TIME_POSITION_IN_RECORDING(SetPieceCarID[1])) // ENDIF // ELSE // IF NOT IS_VEHICLE_ATTACHED_TO_TRAILER(SetPieceCarID[1]) // ATTACH_VEHICLE_TO_TRAILER(SetPieceCarID[1], vehTrailer[0]) // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF // // IF DOES_ENTITY_EXIST(SetPieceCarID[2]) // IF NOT DOES_ENTITY_EXIST(vehTrailer[1]) // SPAWN_VEHICLE(vehTrailer[1], TRAILERS, GET_POSITION_OF_VEHICLE_RECORDING_ID_AT_TIME(GET_VEHICLE_RECORDING_ID(403, "ALubersetup"), 0.0), 0.0) // SET_ENTITY_ROTATION(vehTrailer[1], GET_ROTATION_OF_VEHICLE_RECORDING_ID_AT_TIME(GET_VEHICLE_RECORDING_ID(403, "ALubersetup"), 0.0)) // SET_ENTITY_NO_COLLISION_ENTITY(vehTrailer[1], SetPieceCarID[2], TRUE) // ENDIF // ENDIF // // IF DOES_ENTITY_EXIST(vehTrailer[1]) // IF NOT IS_ENTITY_DEAD(vehTrailer[1]) // IF DOES_ENTITY_EXIST(SetPieceCarID[2]) // IF NOT IS_ENTITY_DEAD(SetPieceCarID[2]) // IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(SetPieceCarID[2]) // IF NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehTrailer[1]) // START_PLAYBACK_RECORDED_VEHICLE(vehTrailer[1], 403, "ALubersetup") // ENDIF // ENDIF // // IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehTrailer[1]) // IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(SetPieceCarID[2]) // SET_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehTrailer[1], GET_TIME_POSITION_IN_RECORDING(SetPieceCarID[2])) // ENDIF // ELSE // IF NOT IS_VEHICLE_ATTACHED_TO_TRAILER(SetPieceCarID[2]) // ATTACH_VEHICLE_TO_TRAILER(SetPieceCarID[2], vehTrailer[1]) // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF // // IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID()) // VEHICLE_INDEX vehPlayerRecord = GET_VEHICLE_PED_IS_USING(PLAYER_PED_ID()) // // IF IS_VEHICLE_ATTACHED_TO_TRAILER(vehPlayerRecord) // VEHICLE_INDEX vehTrailerRecord // GET_VEHICLE_TRAILER_VEHICLE(vehPlayerRecord, vehTrailerRecord) // // IF IS_RECORDING_GOING_ON_FOR_VEHICLE(vehPlayerRecord) // START_RECORDING_VEHICLE(vehTrailerRecord, 450, "ALubersetup", TRUE) // ELSE // IF IS_RECORDING_GOING_ON_FOR_VEHICLE(vehTrailerRecord) // STOP_RECORDING_VEHICLE(vehTrailerRecord) // ENDIF // ENDIF // ENDIF // // IF IS_BUTTON_PRESSED(PAD1, CIRCLE) // //SET_VEHICLE_FORWARD_SPEED(GET_VEHICLE_PED_IS_USING(PLAYER_PED_ID()), GET_ENTITY_SPEED(GET_VEHICLE_PED_IS_USING(PLAYER_PED_ID())) + 1.0) // MODIFY_VEHICLE_TOP_SPEED(GET_VEHICLE_PED_IS_USING(PLAYER_PED_ID()), 20.0) // ELSE // MODIFY_VEHICLE_TOP_SPEED(GET_VEHICLE_PED_IS_USING(PLAYER_PED_ID()), 0.0) // ENDIF // ENDIF // // IF IS_BUTTON_PRESSED(PAD1, DPADRIGHT) // CLEAR_AREA(GET_ENTITY_COORDS(PLAYER_PED_ID()), 10000.0, TRUE) // ENDIF // // IF IS_BUTTON_PRESSED(PAD1, SQUARE) // GET_PED_NEARBY_VEHICLES(PLAYER_PED_ID(), vehClosestCars) // // INT i // // REPEAT COUNT_OF(vehClosestCars) i // IF DOES_ENTITY_EXIST(vehClosestCars[i]) // IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehClosestCars[i]) // IF IS_ENTITY_IN_ANGLED_AREA(vehClosestCars[i], GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(PLAYER_PED_ID(), <<0.5, -2.0, -1.0>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(PLAYER_PED_ID(), <<0.5, 20.0, 5.0>>), 5.0) // SET_ENTITY_COORDS(vehClosestCars[i], GET_ENTITY_COORDS(vehClosestCars[i]) - <<0.0, 0.0, 10.0>>) // ENDIF // ENDIF // ENDIF // ENDREPEAT // //// CLEAR_AREA(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(PLAYER_PED_ID(), <<0.0, 4.0, 0.0>>), 3.0, TRUE) //// CLEAR_AREA(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(PLAYER_PED_ID(), <<0.0, 6.0, 0.0>>), 3.0, TRUE) //// CLEAR_AREA(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(PLAYER_PED_ID(), <<0.0, 8.0, 0.0>>), 3.0, TRUE) //// CLEAR_AREA(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(PLAYER_PED_ID(), <<0.0, 10.0, 0.0>>), 3.0, TRUE) // ENDIF // // DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_SELECT_NEXT_WEAPON) // DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_SELECT_PREV_WEAPON) // // SET_PED_DENSITY_MULTIPLIER_THIS_FRAME(0.0) // SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME(0.0) // // WAIT(0) // ENDWHILE ////// REQUEST_MODEL(TRAILERS) ////// ////// WHILE NOT HAS_MODEL_LOADED(TRAILERS) ////// WAIT(0) ////// ENDWHILE ////// ////// REQUEST_VEHICLE_RECORDING(403, "ALubersetup") ////// ////// WHILE NOT HAS_VEHICLE_RECORDING_BEEN_LOADED(403, "ALubersetup") ////// WAIT(0) ////// ENDWHILE ////// ////// //SPAWN_VEHICLE(vehRival1, ENTITYXF, vRival1Start, fRival1Start) ////// ////// //SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehRival1) ////// ////// SET_PED_POSITION(PLAYER_PED_ID(), GET_POSITION_OF_VEHICLE_RECORDING_ID_AT_TIME(GET_VEHICLE_RECORDING_ID(403, "ALubersetup"), 0.0) + <<5.0, 5.0, 0.0>>, 0.0, FALSE) ////// ////// LOAD_SCENE(GET_POSITION_OF_VEHICLE_RECORDING_ID_AT_TIME(GET_VEHICLE_RECORDING_ID(403, "ALubersetup"), 0.0)) ////// ////// WAIT(500) ////// ////// SPAWN_VEHICLE(vehRival1, TRAILERS, GET_POSITION_OF_VEHICLE_RECORDING_ID_AT_TIME(GET_VEHICLE_RECORDING_ID(403, "ALubersetup"), 0.0), 0.0) ////// ////// //Uber Playback ////// fPlaybackSpeed = 1.0 ////// ////// //INITIALISE_UBER_PLAYBACK(sCarrecSetup, 500) ////// // ////// //UberSetupVariables() ////// ////// START_PLAYBACK_RECORDED_VEHICLE(vehRival1, 403, "ALubersetup") ////// ////// FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehRival1) ////// ////// START_RECORDING_VEHICLE(vehRival1, 403, "ALubersetup", TRUE) ////// ////// SAFE_ADD_BLIP_VEHICLE(blipRival1, vehRival1, TRUE) ////// ////// DISABLE_CELLPHONE(TRUE) ////// ////// CLEAR_AREA(GET_POSITION_OF_VEHICLE_RECORDING_ID_AT_TIME(GET_VEHICLE_RECORDING_ID(403, "ALubersetup"), 0.0), 100.0, TRUE) ////// ////// WHILE IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) ////// TEXT_LABEL txtLabel ////// txtLabel = "REC" ////// SET_TEXT_SCALE(0.5, 0.5) ////// SET_TEXT_CENTRE(TRUE) ////// SET_TEXT_COLOUR(255, 0, 0, 255) ////// DISPLAY_TEXT(0.5, 0.1, txtLabel) ////// ////// SET_PED_DENSITY_MULTIPLIER_THIS_FRAME(0.0) ////// SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME(0.0) ////// ////// WAIT(0) ////// ENDWHILE ////// ////// STOP_RECORDING_VEHICLE(vehRival1) ////// ////// WHILE(TRUE) //////// bTrafficDebugOn = TRUE //////// bPlayTrafficRecordingEvenIfPlayerIsAheadOfChase = TRUE //////// //////// UPDATE_UBER_PLAYBACK(vehRival1, fPlaybackSpeed) //////// //////// UPDATE_UBER_RECORDING() ////// ////// WAIT(0) ////// ENDWHILE //56806.890 //SET_PED_POPULATION_BUDGET(0) //SET_VEHICLE_POPULATION_BUDGET(0) // //REQUEST_MODEL(ENTITYXF) // //WHILE NOT HAS_MODEL_LOADED(ENTITYXF) // WAIT(0) //ENDWHILE // //REQUEST_VEHICLE_RECORDING(500, "ALubersetup") // //WHILE NOT HAS_VEHICLE_RECORDING_BEEN_LOADED(500, "ALubersetup") // WAIT(0) //ENDWHILE // //SPAWN_VEHICLE(vehRival1, ENTITYXF, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(500, 0.0, "ALubersetup"), GET_HEADING_FROM_VECTOR(GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(500, 0.0, "ALubersetup"))) // //SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehRival1) // //LOAD_SCENE(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(500, 0.0, "ALubersetup")) // //SAFE_ADD_BLIP_VEHICLE(blipRival1, vehRival1, TRUE) // //DISABLE_CELLPHONE(TRUE) // //INITIALISE_UBER_PLAYBACK("ALubersetup", 500) // //UberSetupVariables() // //SET_CINEMATIC_BUTTON_ACTIVE(FALSE) // //WAIT(1000) // //START_PLAYBACK_RECORDED_VEHICLE(vehRival1, 500, "ALubersetup") // //WHILE(TRUE) // UPDATE_UBER_PLAYBACK(vehRival1, 1.0) // // SET_PED_DENSITY_MULTIPLIER_THIS_FRAME(0.0) // SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME(0.0) // // WAIT(0) //ENDWHILE //// REQUEST_MODEL(POLICEB) //// REQUEST_MODEL(ENTITYXF) //// REQUEST_MODEL(CHEETAH) //// REQUEST_MODEL(F620) //// //// WHILE NOT HAS_MODEL_LOADED(POLICEB) //// OR NOT HAS_MODEL_LOADED(ENTITYXF) //// OR NOT HAS_MODEL_LOADED(CHEETAH) //// OR NOT HAS_MODEL_LOADED(F620) //// WAIT(0) //// ENDWHILE //// //// REQUEST_VEHICLE_RECORDING(500, "ALubercop") //// //REQUEST_VEHICLE_RECORDING(402, "ALubercop") //// //// WHILE NOT HAS_VEHICLE_RECORDING_BEEN_LOADED(500, "ALubercop") //// //OR NOT HAS_VEHICLE_RECORDING_BEEN_LOADED(402, "ALubercop") //// WAIT(0) //// ENDWHILE //// //// SPAWN_VEHICLE(vehRival1, POLICEB, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(500, 0.0, "ALubercop"), GET_HEADING_FROM_VECTOR(GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(500, 0.0, "ALubercop"))) //// SPAWN_VEHICLE(vehRival2, POLICEB, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(500, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(500, "ALubercop"), "ALubercop"), GET_HEADING_FROM_VECTOR(GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(500, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(500, "ALubercop"), "ALubercop"))) //// //// SPAWN_VEHICLE(vehPlayer, F620, <<-1929.9939, 4599.4263, 56.0583>>, 136.1435) //GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(402, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(402, "ALubercop"), "ALubercop"), GET_HEADING_FROM_VECTOR(GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(402, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(402, "ALubercop"), "ALubercop"))) //// SET_ENTITY_COLLISION(vehPlayer, FALSE) //// FREEZE_ENTITY_POSITION(vehPlayer, TRUE) //// //// SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehRival1) //// ////// WHILE NOT CAN_CREATE_RANDOM_DRIVER() ////// WAIT(0) ////// ENDWHILE ////// ////// CREATE_RANDOM_PED_AS_DRIVER(vehRival2) //////// CREATE_RANDOM_PED_AS_DRIVER(vehPlayer) //// //// LOAD_SCENE(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(500, 0.0, "ALubercop")) //// //////// //Uber Playback ////////// fPlaybackSpeed = 0.0 //// //// SAFE_ADD_BLIP_VEHICLE(blipRival1, vehRival1, TRUE) //// //// DISABLE_CELLPHONE(TRUE) //// //// //SET_ENTITY_COLLISION(vehRival1, FALSE) //// SET_ENTITY_COLLISION(vehRival2, FALSE) //// FREEZE_ENTITY_POSITION(vehRival2, TRUE) //// //// SET_PED_HELMET(PLAYER_PED_ID(), FALSE) //// //// SET_PED_CAN_BE_KNOCKED_OFF_VEHICLE(PLAYER_PED_ID(), KNOCKOFFVEHICLE_NEVER) //// ////// INIT_UBER_RECORDING("ALubercop") //// //// INITIALISE_UBER_PLAYBACK("ALubercop", 500) //// //// UberCopVariables() //// //// VEHICLE_INDEX vehClosestCars[10] //// //// SET_CINEMATIC_BUTTON_ACTIVE(FALSE) //// //// WAIT(1000) //// //// START_PLAYBACK_RECORDED_VEHICLE(vehRival1, 500, "ALubercop") //// //// INT iDistCheck = 7 //// //// WHILE(TRUE) //// IF DOES_ENTITY_EXIST(SetPieceCarID[2]) //// SAFE_ADD_BLIP_VEHICLE(blipRival2, SetPieceCarID[2], FALSE) //// ENDIF //// ////// UPDATE_UBER_RECORDING() //// //// bTrafficDebugOn = TRUE //// bPlayTrafficRecordingEvenIfPlayerIsAheadOfChase = TRUE //// fUberPlaybackDensitySwitchOffRange = 300 //// PRELOAD_ALL_CHASE_RECORDINGS(GET_TIME_POSITION_IN_RECORDING(vehRival1), "ALubercop") //// //// CREATE_ALL_WAITING_UBER_CARS() //// //// UPDATE_UBER_PLAYBACK(vehRival1, fPlaybackSpeed) //// //// SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE) //// //// IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) //// DRAW_DEBUG_SPHERE(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(500, CLAMP(GET_TIME_POSITION_IN_RECORDING(vehRival1) + 500.0, 0.0, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(500, "ALubercop")), "ALubercop"), 0.5, 255, 0, 0, 255) //// DRAW_DEBUG_SPHERE(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(500, CLAMP(GET_TIME_POSITION_IN_RECORDING(vehRival1) + 1000.0, 0.0, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(500, "ALubercop")), "ALubercop"), 0.45, 255, 0, 0, 225) //// DRAW_DEBUG_SPHERE(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(500, CLAMP(GET_TIME_POSITION_IN_RECORDING(vehRival1) + 1500.0, 0.0, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(500, "ALubercop")), "ALubercop"), 0.4, 0, 0, 255, 200) //// DRAW_DEBUG_SPHERE(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(500, CLAMP(GET_TIME_POSITION_IN_RECORDING(vehRival1) + 2000.0, 0.0, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(500, "ALubercop")), "ALubercop"), 0.35, 255, 0, 255, 175) //// DRAW_DEBUG_SPHERE(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(500, CLAMP(GET_TIME_POSITION_IN_RECORDING(vehRival1) + 2500.0, 0.0, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(500, "ALubercop")), "ALubercop"), 0.3, 255, 0, 0, 150) //// DRAW_DEBUG_SPHERE(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(500, CLAMP(GET_TIME_POSITION_IN_RECORDING(vehRival1) + 3000.0, 0.0, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(500, "ALubercop")), "ALubercop"), 0.25, 255, 0, 0, 125) //// DRAW_DEBUG_SPHERE(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(500, CLAMP(GET_TIME_POSITION_IN_RECORDING(vehRival1) + 3500.0, 0.0, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(500, "ALubercop")), "ALubercop"), 0.2, 255, 0, 0, 100) //// DRAW_DEBUG_SPHERE(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(500, CLAMP(GET_TIME_POSITION_IN_RECORDING(vehRival1) + 4000.0, 0.0, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(500, "ALubercop")), "ALubercop"), 0.15, 255, 0, 0, 75) //// //// DRAW_DEBUG_SPHERE(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(500, CLAMP(GET_TIME_POSITION_IN_RECORDING(vehRival1) + (500.0 + (500.0 * iDistCheck)), 0.0, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(500, "ALubercop")), "ALubercop"), 0.5, 0, 255, 0, 255) //// ENDIF //// //// IF IS_BUTTON_PRESSED(PAD1, SQUARE) //// GET_PED_NEARBY_VEHICLES(PLAYER_PED_ID(), vehClosestCars) //// //// INT i //// //// REPEAT COUNT_OF(vehClosestCars) i //// IF DOES_ENTITY_EXIST(vehClosestCars[i]) //// IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehClosestCars[i]) //// IF IS_ENTITY_IN_ANGLED_AREA(vehClosestCars[i], GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(PLAYER_PED_ID(), <<0.5, -2.0, -1.0>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(PLAYER_PED_ID(), <<0.5, 20.0, 5.0>>), 5.0) //// SET_ENTITY_COORDS(vehClosestCars[i], GET_ENTITY_COORDS(vehClosestCars[i]) - <<0.0, 0.0, 10.0>>) //// ENDIF //// ENDIF //// ENDIF //// ENDREPEAT //// ENDIF //// //// IF IS_BUTTON_PRESSED(PAD1, CIRCLE) //// MODIFY_VEHICLE_TOP_SPEED(GET_VEHICLE_PED_IS_USING(PLAYER_PED_ID()), 50.0) //// ELSE //// MODIFY_VEHICLE_TOP_SPEED(GET_VEHICLE_PED_IS_USING(PLAYER_PED_ID()), 0.0) //// ENDIF //// //// IF IS_BUTTON_JUST_PRESSED(PAD1, DPADLEFT) //// IF iDistCheck > 0 //// iDistCheck-- //// ENDIF //// ELIF IS_BUTTON_JUST_PRESSED(PAD1, DPADRIGHT) //// IF iDistCheck < 7 //// iDistCheck++ //// ENDIF //// ENDIF //// //// DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_HEADLIGHT) //// DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_HORN) //// DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_NEXT_RADIO) //// DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_PREV_RADIO) //// DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_RADIO_WHEEL) //// DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_SELECT_NEXT_WEAPON) //// DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_SELECT_PREV_WEAPON) //// //// WAIT(0) //// ENDWHILE //Reference //TrafficCarPos[0] = <<2531.8367, 567.2463, 111.2710>> //TrafficCarQuatX[0] = 0.0104 //TrafficCarQuatY[0] = 0.0256 //TrafficCarQuatZ[0] = 0.9981 //TrafficCarQuatW[0] = -0.0547 //TrafficCarRecording[0] = 1 //TrafficCarStartime[0] = 3432.0000 //TrafficCarModel[0] = Mule //SET_PED_POPULATION_BUDGET(0) //SET_VEHICLE_POPULATION_BUDGET(0) // //UberCopVariables() // //BOOL bRunTool = FALSE // //INT iCarIndex = 0 // //SET_PED_POSITION(PLAYER_PED_ID(), TrafficCarPos[iCarIndex], 0.0, FALSE) // //LOAD_SCENE(TrafficCarPos[iCarIndex]) // //WAIT(500) // //WHILE(TRUE) // IF IS_BUTTON_JUST_PRESSED(PAD1, SQUARE) // bRunTool = !bRunTool // ENDIF // // IF bRunTool AND TrafficCarRecording[iCarIndex] <> 0 AND iCarIndex < TOTAL_NUMBER_OF_TRAFFIC_CARS - 1 // IF iCarIndex < TOTAL_NUMBER_OF_TRAFFIC_CARS - 1 // SET_PED_POSITION(PLAYER_PED_ID(), TrafficCarPos[iCarIndex], 0.0, FALSE) // // SAFE_DELETE_VEHICLE(vehRival1) // SAFE_DELETE_VEHICLE(vehRival2) // // LOAD_SCENE_ADV(TrafficCarPos[iCarIndex]) // // CLEAR_AREA(TrafficCarPos[iCarIndex], 100.0, TRUE) // // REQUEST_MODEL(TrafficCarModel[iCarIndex]) // // WHILE NOT HAS_MODEL_LOADED(TrafficCarModel[iCarIndex]) // WAIT(0) // ENDWHILE // // REQUEST_VEHICLE_RECORDING(TrafficCarRecording[iCarIndex], "ALubercop") // // WHILE NOT HAS_VEHICLE_RECORDING_BEEN_LOADED(TrafficCarRecording[iCarIndex], "ALubercop") // WAIT(0) // ENDWHILE // // SPAWN_VEHICLE(vehRival1, TrafficCarModel[iCarIndex], TrafficCarPos[iCarIndex], 0.0) // // SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehRival1) // // SPAWN_VEHICLE(vehRival2, TrafficCarModel[iCarIndex], TrafficCarPos[iCarIndex], 0.0) // // SET_ENTITY_NO_COLLISION_ENTITY(vehRival1, vehRival2, FALSE) // // START_PLAYBACK_RECORDED_VEHICLE(vehRival1, TrafficCarRecording[iCarIndex], "ALubercop") // // SET_PLAYBACK_SPEED(vehRival1, 0.0) // // FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehRival1) // // SET_ENTITY_COORDS(vehRival2, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(TrafficCarRecording[iCarIndex], 0.0, "ALubercop")) // SET_ENTITY_ROTATION(vehRival2, GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(TrafficCarRecording[iCarIndex], 0.0, "ALubercop")) // SET_VEHICLE_ON_GROUND_PROPERLY(vehRival2) // // WAIT(0) // // ACTIVATE_PHYSICS(vehRival2) // // WAIT(1000) // // VECTOR vCoord1 = GET_ENTITY_COORDS(vehRival1) // VECTOR vCoord2 = GET_ENTITY_COORDS(vehRival2) // FLOAT fOffset = vCoord1.Z - vCoord2.Z // // SET_GLOBAL_POSITION_OFFSET_FOR_RECORDED_VEHICLE_PLAYBACK(vehRival1, <<0.0, 0.0, -fOffset>>) //SET_POSITION_OFFSET_FOR_RECORDED_VEHICLE_PLAYBACK() // // WAIT(0) // // START_RECORDING_VEHICLE(vehRival1, TrafficCarRecording[iCarIndex], "ALubercopX", TRUE) // // SET_PLAYBACK_SPEED(vehRival1, 1.0) // // WHILE IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) // TEXT_LABEL txtLabel // txtLabel = "REC " // txtLabel += TrafficCarRecording[iCarIndex] // txtLabel += " " // txtLabel += GET_MODEL_NAME_OF_VEHICLE_FOR_DEBUG_ONLY(vehRival1) // SET_TEXT_SCALE(0.5, 0.5) // SET_TEXT_CENTRE(TRUE) // SET_TEXT_COLOUR(255, 0, 0, 255) // DISPLAY_TEXT(0.5, 0.1, txtLabel) // // SET_PED_DENSITY_MULTIPLIER_THIS_FRAME(0.0) // SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME(0.0) // // WAIT(0) // ENDWHILE // // STOP_RECORDING_VEHICLE(vehRival1) // // iCarIndex++ // ENDIF // ELSE // TEXT_LABEL txtLabel // IF iCarIndex < TOTAL_NUMBER_OF_TRAFFIC_CARS - 1 // txtLabel = "REC " // txtLabel += TrafficCarRecording[iCarIndex] // IF DOES_ENTITY_EXIST(vehRival1) // txtLabel += " " // txtLabel += GET_MODEL_NAME_OF_VEHICLE_FOR_DEBUG_ONLY(vehRival1) // ENDIF // ELSE // txtLabel = "END" // ENDIF // SET_TEXT_SCALE(0.5, 0.5) // SET_TEXT_CENTRE(TRUE) // SET_TEXT_COLOUR(0, 255, 0, 255) // DISPLAY_TEXT(0.5, 0.1, txtLabel) // // IF iCarIndex < TOTAL_NUMBER_OF_TRAFFIC_CARS - 1 // IF TrafficCarRecording[iCarIndex] = 0 // iCarIndex++ // ENDIF // ENDIF // ENDIF // // DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_SELECT_NEXT_WEAPON) // DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_SELECT_PREV_WEAPON) // // SET_PED_DENSITY_MULTIPLIER_THIS_FRAME(0.0) // SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME(0.0) // // WAIT(0) //ENDWHILE // CLEANUP_UBER_PLAYBACK(TRUE) // // fPlaybackSpeed = 1.0 // // INITIALISE_UBER_PLAYBACK(sCarrecChase, 500) // // UberCopVariables() // // bPlayTrafficRecordingEvenIfPlayerIsAheadOfChase = TRUE // // BOOL bOnce = FALSE // INT iCountDown = -1 //// BOOL bVisible = TRUE // //// FLOAT fStart, fEnd //// VECTOR vStartPos, vStartRot, vEndPos, vEndRot //// // WHILE(TRUE) // TEXT_LABEL txtLabel // txtLabel = "Time: " // IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival2) // txtLabel += ROUND(GET_TIME_POSITION_IN_RECORDING(vehRival2)) // ELIF GET_GAME_TIMER() < iCountDown // SET_TEXT_COLOUR(255, 255, 0, 255) // txtLabel += iCountDown - GET_GAME_TIMER() // ENDIF // SET_TEXT_SCALE(0.5, 0.5) // SET_TEXT_CENTRE(TRUE) // IF IS_RECORDING_GOING_ON_FOR_VEHICLE(vehRival1) // SET_TEXT_COLOUR(255, 0, 0, 255) // ENDIF // DISPLAY_TEXT(0.5, 0.1, txtLabel) // // SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE) // // IF NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival2) // FREEZE_ENTITY_POSITION(vehRival2, TRUE) // ELSE // DRAW_DEBUG_SPHERE(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(500, CLAMP(GET_TIME_POSITION_IN_RECORDING(vehRival2) - 500.0, 0.0, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(500, sCarrecChase)), sCarrecChase), 0.5, 255, 0, 0, 255) // DRAW_DEBUG_SPHERE(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(500, CLAMP(GET_TIME_POSITION_IN_RECORDING(vehRival2) - 1000.0, 0.0, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(500, sCarrecChase)), sCarrecChase), 0.25, 255, 0, 0, 175) // DRAW_DEBUG_SPHERE(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(500, CLAMP(GET_TIME_POSITION_IN_RECORDING(vehRival2) - 1500.0, 0.0, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(500, sCarrecChase)), sCarrecChase), 0.1, 255, 0, 0, 100) // // DRAW_DEBUG_SPHERE(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(500, CLAMP(GET_TIME_POSITION_IN_RECORDING(vehRival2) + 500.0, 0.0, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(500, sCarrecChase)), sCarrecChase), 0.5, 255, 0, 0, 255) // DRAW_DEBUG_SPHERE(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(500, CLAMP(GET_TIME_POSITION_IN_RECORDING(vehRival2) + 1000.0, 0.0, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(500, sCarrecChase)), sCarrecChase), 0.25, 255, 0, 0, 175) // DRAW_DEBUG_SPHERE(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(500, CLAMP(GET_TIME_POSITION_IN_RECORDING(vehRival2) + 1500.0, 0.0, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(500, sCarrecChase)), sCarrecChase), 0.1, 255, 0, 0, 100) // ENDIF // // CLEAR_AREA(GET_ENTITY_COORDS(vehRival1), 10.0, TRUE) // // DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_SELECT_NEXT_WEAPON) // DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_SELECT_PREV_WEAPON) // DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_EXIT) // DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ENTER) // // SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME(0.0) // SET_PED_DENSITY_MULTIPLIER_THIS_FRAME(0.0) // // IF IS_BUTTON_JUST_PRESSED(PAD1, TRIANGLE) // IF bOnce = TRUE // IF GET_GAME_TIMER() > iCountDown // CLEAR_AREA(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(500, 0.0, sCarrecChase), 500.0, TRUE) // // LOAD_SCENE(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(500, 0.0, sCarrecChase)) // // CLEANUP_UBER_PLAYBACK(TRUE) // // fPlaybackSpeed = 1.0 // // INITIALISE_UBER_PLAYBACK(sCarrecChase, 500) // // UberCopVariables() // // bPlayTrafficRecordingEvenIfPlayerIsAheadOfChase = TRUE // // SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehRival1) // // SET_VEHICLE_POSITION(vehRival1, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(500, 0.0, sCarrecChase), GET_HEADING_FROM_VECTOR(GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(500, 0.0, sCarrecChase))) // // SET_GAMEPLAY_CAM_RELATIVE_HEADING(0.0) // // SET_VEHICLE_ENGINE_ON(vehRival1, TRUE, TRUE) // // SET_PED_HELMET(PLAYER_PED_ID(), FALSE) // // iCountDown = GET_GAME_TIMER() + 2000 // ENDIF // ELSE // STOP_RECORDING_VEHICLE(vehRival1) // // STOP_PLAYBACK_RECORDED_VEHICLE(vehRival2) // // iCountDown = -1 // // bOnce = TRUE // ENDIF // ENDIF // // IF IS_BUTTON_PRESSED(PAD1, SQUARE) // SET_VEHICLE_FORWARD_SPEED(vehRival1, GET_ENTITY_SPEED(vehRival1) + 1.0) // ENDIF // // IF iCountDown != -1 // IF bOnce = TRUE // IF GET_GAME_TIMER() > iCountDown // FREEZE_ENTITY_POSITION(vehRival2, FALSE) // // START_PLAYBACK_RECORDED_VEHICLE(vehRival2, 500, sCarrecChase) // // START_RECORDING_VEHICLE(vehRival1, 999, sCarrecChase, TRUE) // // bOnce = FALSE // ENDIF // ENDIF // ENDIF // // IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival2) // SET_PLAYBACK_SPEED(vehRival2, fPlaybackSpeed) // bPlayTrafficRecordingEvenIfPlayerIsAheadOfChase = TRUE // PRELOAD_ALL_CHASE_RECORDINGS(GET_TIME_POSITION_IN_RECORDING(vehRival2), sCarrecChase) // CREATE_ALL_WAITING_UBER_CARS() // UPDATE_UBER_PLAYBACK(vehRival2, fPlaybackSpeed) // fUberPlaybackDensitySwitchOffRange = 300 // ENDIF // //// SET_PLAYBACK_SPEED(vehRival1, fPlaybackSpeed) //// //// IF IS_BUTTON_JUST_PRESSED(PAD1, DPADLEFT) //// IF fPlaybackSpeed > -1.0 //// fPlaybackSpeed -= 1.0 //// ENDIF //// ELIF IS_BUTTON_JUST_PRESSED(PAD1, DPADRIGHT) //// IF fPlaybackSpeed < 1.0 //// fPlaybackSpeed += 1.0 //// ENDIF //// ELIF IS_BUTTON_JUST_PRESSED(PAD1, DPADUP) //// fStart = GET_TIME_POSITION_IN_RECORDING(vehRival1) //// vStartPos = GET_ENTITY_COORDS(vehRival1) //// vStartRot = GET_ENTITY_ROTATION(vehRival1) //// ELIF IS_BUTTON_JUST_PRESSED(PAD1, DPADDOWN) //// fEnd = GET_TIME_POSITION_IN_RECORDING(vehRival1) //// vEndPos = GET_ENTITY_COORDS(vehRival1) //// vEndRot = GET_ENTITY_ROTATION(vehRival1) //// ENDIF //// //// IF GET_TIME_POSITION_IN_RECORDING(vehRival1) <= fStart //// OR GET_TIME_POSITION_IN_RECORDING(vehRival1) >= fEnd //// SET_ENTITY_COORDS(vehRival2, GET_ENTITY_COORDS(vehRival1)) //// SET_ENTITY_ROTATION(vehRival2, GET_ENTITY_ROTATION(vehRival1)) //// ELSE //// //SET_ENTITY_COORDS(vehRival2, GET_INTERP_POINT_VECTOR(GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(500, fStart, sCarrecRace), GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(500, fEnd, sCarrecRace), fStart, fEnd, GET_TIME_POSITION_IN_RECORDING(vehRival1))) //// //SET_ENTITY_ROTATION(vehRival2, GET_INTERP_POINT_VECTOR(GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(500, fStart, sCarrecRace), GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(500, fEnd, sCarrecRace), fStart, fEnd, GET_TIME_POSITION_IN_RECORDING(vehRival1))) //// SET_ENTITY_COORDS(vehRival2, GET_INTERP_POINT_VECTOR(vStartPos, vEndPos, 0.0, 1.0, (1.0 / (fEnd - fStart)) * (GET_TIME_POSITION_IN_RECORDING(vehRival1) - fStart))) //// SET_ENTITY_ROTATION(vehRival2, GET_INTERP_POINT_VECTOR(vStartRot, vEndRot, 0.0, 1.0, (1.0 / (fEnd - fStart)) * (GET_TIME_POSITION_IN_RECORDING(vehRival1) - fStart))) //// ENDIF // // // IF IS_BUTTON_JUST_PRESSED(PAD1, SQUARE) // // IF bVisible = TRUE // // SET_ENTITY_VISIBLE(vehRival1, FALSE) // // SET_ENTITY_VISIBLE(vehPlayer, FALSE) // // // // bVisible = FALSE // // ELSE // // SET_ENTITY_VISIBLE(vehRival1, TRUE) // // SET_ENTITY_VISIBLE(vehPlayer, TRUE) // // // // bVisible = TRUE // // ENDIF // // ENDIF // //// IF bOnce = FALSE //// IF NOT IS_RECORDING_GOING_ON_FOR_VEHICLE(vehRival1) //// SET_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehRival1, 0.0) //// ////// fPlaybackSpeed = 1.0 //// //// START_RECORDING_VEHICLE(vehRival1, 999, sCarrecChase, TRUE) //// ELSE //// IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) //// SET_ENTITY_COORDS(vehPlayer, GET_ENTITY_COORDS(vehRival1)) //// SET_ENTITY_ROTATION(vehPlayer, GET_ENTITY_ROTATION(vehRival1)) //// SET_VEHICLE_ON_GROUND_PROPERLY(vehPlayer) //// //// VECTOR vCoords1 = GET_ENTITY_COORDS(vehRival1) //// VECTOR vCoords2 = GET_ENTITY_COORDS(vehPlayer) //// //// PRINTLN("vCoords2 - vCoords1 = ", vCoords2.Z - vCoords1.Z) //// //// SET_ENTITY_COORDS(vehRival2, GET_ENTITY_COORDS(vehRival1) - <<0.0, 0.0, vCoords2.Z - vCoords1.Z>>) //// SET_ENTITY_ROTATION(vehRival2, GET_ENTITY_ROTATION(vehRival1)) //// SET_VEHICLE_ENGINE_ON(vehRival2, TRUE, FALSE) //// ACTIVATE_PHYSICS(vehRival2) //// ELSE //// STOP_RECORDING_VEHICLE(vehRival2) //// bOnce = TRUE //// ENDIF //// ////// fPlaybackSpeed = 0.0 //// ENDIF //// ENDIF //// ENDIF // // WAIT(0) // ENDWHILE //Fetch vehPlayer from carsteal3_launcher // IF NOT DOES_ENTITY_EXIST(vehPlayer) // IF DOES_ENTITY_EXIST(PLAYER_PED_ID()) // IF NOT IS_PED_INJURED(PLAYER_PED_ID()) // IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID()) // vehPlayer = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()) // ENDIF // ENDIF // ENDIF // // IF DOES_ENTITY_EXIST(vehPlayer) // IF NOT IS_VEHICLE_MODEL(vehPlayer, F620) // OR NOT IS_VEHICLE_DRIVEABLE(vehPlayer) // vehPlayer = NULL // ELSE // SET_ENTITY_AS_MISSION_ENTITY(vehPlayer) // ENDIF // ENDIF // ENDIF IF IS_REPLAY_START_VEHICLE_UNDER_SIZE_LIMIT(VECTOR_ZERO, TRUE) SET_MISSION_START_VEHICLE_AS_VEHICLE_GEN(<<135.7141, -432.9040, 40.0295>>, 162.7001, FALSE) ENDIF IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_FRANKLIN IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.ped[3]) //Franklin IF NOT IS_PED_INJURED(g_sTriggerSceneAssets.ped[3]) //Transfer the global index to a local index and grab ownership of the entity. sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN] = g_sTriggerSceneAssets.ped[3] SET_ENTITY_AS_MISSION_ENTITY(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], TRUE, TRUE) PED_INDEX pedLastPlayer pedLastPlayer = PLAYER_PED_ID() MAKE_SELECTOR_PED_SELECTION(sSelectorPeds, SELECTOR_PED_FRANKLIN) TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds, TRUE, TRUE, TCF_CLEAR_TASK_INTERRUPT_CHECKS) SET_GAMEPLAY_CAM_FOLLOW_PED_THIS_UPDATE(pedLastPlayer) ENDIF ENDIF ENDIF IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.veh[0]) //Car (FELON) IF NOT IS_ENTITY_DEAD(g_sTriggerSceneAssets.veh[0]) //Transfer the global index to a local index and grab ownership of the entity. vehCutscene = g_sTriggerSceneAssets.veh[0] SET_ENTITY_AS_MISSION_ENTITY(vehCutscene, TRUE, TRUE) ENDIF ENDIF IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.veh[1]) //Player Car (F620) IF NOT IS_ENTITY_DEAD(g_sTriggerSceneAssets.veh[1]) //Transfer the global index to a local index and grab ownership of the entity. vehPlayer = g_sTriggerSceneAssets.veh[1] SET_ENTITY_AS_MISSION_ENTITY(vehPlayer, TRUE, TRUE) ENDIF ENDIF IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.ped[0]) //Devin IF NOT IS_PED_INJURED(g_sTriggerSceneAssets.ped[0]) //Transfer the global index to a local index and grab ownership of the entity. pedDevin = g_sTriggerSceneAssets.ped[0] SET_ENTITY_AS_MISSION_ENTITY(pedDevin, TRUE, TRUE) ENDIF ENDIF IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.ped[1]) //Molly IF NOT IS_PED_INJURED(g_sTriggerSceneAssets.ped[1]) //Transfer the global index to a local index and grab ownership of the entity. pedMolly = g_sTriggerSceneAssets.ped[1] SET_ENTITY_AS_MISSION_ENTITY(pedMolly, TRUE, TRUE) ENDIF ENDIF IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.veh[2]) //Devin's Car (ADDER) IF NOT IS_ENTITY_DEAD(g_sTriggerSceneAssets.veh[2]) //Transfer the global index to a local index and grab ownership of the entity. vehDevin = g_sTriggerSceneAssets.veh[2] SET_ENTITY_AS_MISSION_ENTITY(vehDevin, TRUE, TRUE) ENDIF ENDIF IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.ped[4]) //Trevor IF NOT IS_PED_INJURED(g_sTriggerSceneAssets.ped[4]) //Transfer the global index to a local index and grab ownership of the entity. sSelectorPeds.pedID[SELECTOR_PED_TREVOR] = g_sTriggerSceneAssets.ped[4] SET_ENTITY_AS_MISSION_ENTITY(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE, TRUE) ENDIF ENDIF IF NOT IS_REPLAY_IN_PROGRESS() IF HAS_THIS_CUTSCENE_LOADED("CAR_1_INT_CONCAT") THEFEED_FLUSH_QUEUE() SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE) IF DOES_ENTITY_EXIST(vehPlayer) AND NOT IS_ENTITY_DEAD(vehPlayer) REGISTER_ENTITY_FOR_CUTSCENE(vehPlayer, "Franklins_car", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) ENDIF IF DOES_ENTITY_EXIST(pedDevin) AND NOT IS_ENTITY_DEAD(pedDevin) REGISTER_ENTITY_FOR_CUTSCENE(pedDevin, "DEVIN", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) ENDIF IF DOES_ENTITY_EXIST(pedMolly) AND NOT IS_ENTITY_DEAD(pedMolly) REGISTER_ENTITY_FOR_CUTSCENE(pedMolly, "MOLLY", CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY) ENDIF IF DOES_ENTITY_EXIST(vehDevin) AND NOT IS_ENTITY_DEAD(vehDevin) REGISTER_ENTITY_FOR_CUTSCENE(vehDevin, "Devins_car", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) ENDIF IF DOES_ENTITY_EXIST(vehCutscene) AND NOT IS_ENTITY_DEAD(vehCutscene) REGISTER_ENTITY_FOR_CUTSCENE(vehCutscene, "Car_1_Felon", CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY) ENDIF IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) AND NOT IS_ENTITY_DEAD(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) REGISTER_ENTITY_FOR_CUTSCENE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], "TREVOR", CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY) ENDIF START_CUTSCENE() WAIT(0) DELETE_ALL_SCRIPT_CREATED_PLAYER_VEHICLES(CHAR_MICHAEL) DELETE_ALL_SCRIPT_CREATED_PLAYER_VEHICLES(CHAR_TREVOR) RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<110.811684, -421.141571, 36.196766>>, <<126.111618, -380.102112, 57.261459>>, 40.0, <<120.5374, -429.8324, 40.0967>>, 289.2337, GET_DEFAULT_ALLOWABLE_VEHICLE_SIZE_VECTOR()) CLEAR_AREA(<<115.56944, -400.46335, 40.26558>>, 20.0, TRUE) DISABLE_PROCOBJ_CREATION() STOP_GAMEPLAY_HINT(TRUE) CLEAR_TEXT() bPreloaded = TRUE ENDIF ENDIF //Buddy peds shouldn't exit here SAFE_DELETE_PED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) MISSION_FLOW_RELEASE_TRIGGER_SCENE_ASSETS(SP_MISSION_CARSTEAL_1) #IF IS_DEBUG_BUILD IF bSwitchCamDebugScenarioEnabled SETUP_SPLINE_CAM_1_NODE_ARRAY(scsSwitchCam1, vehPlayer, viSceneBike2) SETUP_SPLINE_CAM_2_NODE_ARRAY(scsSwitchCam2, vehPolice2) widGroup = START_WIDGET_GROUP("MISSION DEBUG") STOP_WIDGET_GROUP() CREATE_SPLINE_CAM_WIDGETS(scsSwitchCam1, "Car", "Bike", widGroup) CREATE_SPLINE_CAM_WIDGETS(scsSwitchCam2, "Bike", "Game", widGroup) CREATE_SWITCH_CAM_SCRIPT_SPECIFIC_WIDGETS(widGroup) WHILE(TRUE) UPDATE_SPLINE_CAM_HELPERS() UPDATE_SPLINE_CAM_WIDGETS(scsSwitchCam1) UPDATE_SPLINE_CAM_WIDGETS(scsSwitchCam2) WAIT(0) ENDWHILE ENDIF #ENDIF WHILE(TRUE) //Video Recorder REPLAY_CHECK_FOR_EVENT_THIS_FRAME("M_IFoughtTheLaw") //Fail Checks DEATH_CHECKS() //Uber IF eMissionObjective <= stageRace IF DOES_ENTITY_EXIST(vehRival1) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) RUBBER_BANDING(GET_TIME_POSITION_IN_RECORDING(vehRival1), sCarrecSetup) SET_PLAYBACK_SPEED(vehRival1, fPlaybackSpeed) bPlayTrafficRecordingEvenIfPlayerIsAheadOfChase = TRUE CREATE_ALL_WAITING_UBER_CARS() UPDATE_UBER_PLAYBACK(vehRival1, fPlaybackSpeed) fUberPlaybackDensitySwitchOffRange = 300 ENDIF ENDIF IF DOES_ENTITY_EXIST(vehRival2) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival2) SET_PLAYBACK_SPEED(vehRival2, fPlaybackSpeed) ENDIF ENDIF IF DOES_ENTITY_EXIST(vehPlayer) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPlayer) SET_PLAYBACK_SPEED(vehPlayer, fPlaybackSpeed * 1.25) ENDIF ENDIF IF DOES_ENTITY_EXIST(vehPolice1) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPolice1) SET_PLAYBACK_SPEED(vehPolice1, fPlaybackSpeed * 1.25) ENDIF ENDIF ELIF eMissionObjective = stageChase AND bInitStage IF DOES_ENTITY_EXIST(vehPolice1) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPolice1) RUBBER_BANDING(GET_TIME_POSITION_IN_RECORDING(vehPolice1), sCarrecCop) SET_PLAYBACK_SPEED(vehPolice1, fPlaybackSpeed) bPlayTrafficRecordingEvenIfPlayerIsAheadOfChase = TRUE CREATE_ALL_WAITING_UBER_CARS() UPDATE_UBER_PLAYBACK(vehPolice1, fPlaybackSpeed) fUberPlaybackDensitySwitchOffRange = 300 ENDIF ENDIF IF DOES_ENTITY_EXIST(vehRival1) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) SET_PLAYBACK_SPEED(vehRival1, fPlaybackSpeed) ENDIF ENDIF IF DOES_ENTITY_EXIST(vehRival1) AND DOES_ENTITY_EXIST(vehRival2) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival2) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehRival1) SET_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehRival2, GET_TIME_POSITION_IN_RECORDING(vehRival1)) ELSE SET_PLAYBACK_SPEED(vehRival2, fPlaybackSpeed) ENDIF ENDIF ENDIF IF DOES_ENTITY_EXIST(vehPlayer) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPlayer) IF DOES_ENTITY_EXIST(vehPolice1) AND IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehPolice1) AND GET_TIME_POSITION_IN_RECORDING(vehPolice1) < 153107.800 SET_PLAYBACK_SPEED(vehPlayer, fPlaybackSpeed) ELSE SET_PLAYBACK_SPEED(vehPlayer, 0.7) ENDIF ENDIF ENDIF ENDIF // Temp fix to force the interior to uncap when you're close to it. IF bSetUncapped IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID(), FALSE),<<479.0568, -1316.8253, 28.2038>>) < 240.0 SET_INTERIOR_CAPPED(INTERIOR_V_CHOPSHOP, FALSE) bSetUncapped = FALSE ENDIF ENDIF //Chop Shop IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<528.999939, -1417.176270, 27.145472>>, <<424.988098, -1212.274902, 139.672485>>, 150.0) OR eMissionObjective = cutHome IF NOT HAS_LABEL_BEEN_TRIGGERED("ChopShopDoors") CREATE_MODEL_HIDE(<<498.7252, -1317.7551, 28.2534>>, 1.0, PROP_SC1_06_GATE_L, TRUE) CREATE_MODEL_HIDE(<<494.6904, -1312.0663, 28.2534>>, 1.0, PROP_SC1_06_GATE_R, TRUE) SET_LABEL_AS_TRIGGERED("ChopShopDoors", TRUE) ENDIF IF intChopShop = NULL intChopShop = GET_INTERIOR_AT_COORDS_WITH_TYPE(<<481.1439, -1314.4697, 28.2017>>, "v_chopshop") ELSE IF bPinnedChopShop = FALSE PIN_INTERIOR_IN_MEMORY(intChopShop) IF NOT IS_INTERIOR_READY(intChopShop) PRINTLN("PINNING INTERIOR...") ELSE bPinnedChopShop = TRUE ENDIF ENDIF ENDIF ELIF NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<528.999939, -1417.176270, 27.145472>>, <<424.988098, -1212.274902, 139.672485>>, 150.0) IF HAS_LABEL_BEEN_TRIGGERED("ChopShopDoors") REMOVE_MODEL_HIDE(<<498.7252, -1317.7551, 28.2534>>, 1.0, PROP_SC1_06_GATE_L, FALSE) REMOVE_MODEL_HIDE(<<494.6904, -1312.0663, 28.2534>>, 1.0, PROP_SC1_06_GATE_R, FALSE) SET_LABEL_AS_TRIGGERED("ChopShopDoors", FALSE) ENDIF IF intChopShop <> NULL IF bPinnedChopShop = TRUE UNPIN_INTERIOR(intChopShop) bPinnedChopShop = FALSE ENDIF ENDIF ENDIF //Cinematic Camera // CINEMATIC_CAMERA() //Debug Routine #IF IS_DEBUG_BUILD debugRoutine() #ENDIF //Hide HUD/Radar IF bRadar = FALSE //OR IS_PHONE_ONSCREEN() //HIDE_HUD_AND_RADAR_THIS_FRAME() IF IS_RADAR_PREFERENCE_SWITCHED_ON() DISPLAY_RADAR(FALSE) ENDIF IF IS_HUD_PREFERENCE_SWITCHED_ON() DISPLAY_HUD(FALSE) ENDIF ELSE IF IS_RADAR_PREFERENCE_SWITCHED_ON() DISPLAY_RADAR(TRUE) ENDIF IF IS_HUD_PREFERENCE_SWITCHED_ON() DISPLAY_HUD(TRUE) ENDIF ENDIF //Special Ability IF NOT bAbilityUsed IF IS_SPECIAL_ABILITY_ACTIVE(PLAYER_ID()) bAbilityUsed = TRUE INFORM_STAT_SYSTEM_OF_BOOL_STAT_HAPPENED(CS1_SPECIAL_USED) ENDIF ENDIF //Cam Switch IF eMissionObjective = stageChase IF DOES_CAM_EXIST(scsSwitchCam2.ciSpline) AND IS_CAM_ACTIVE(scsSwitchCam2.ciSpline) INT iLeftX = 0 INT iLeftY = 0 INT iRightX = 0 INT iRightY = 0 GET_CONTROL_VALUE_OF_ANALOGUE_STICKS(iLeftX, iLeftY, iRightX, iRightY) UPDATE_SPLINE_CAM(scsSwitchCam2) IF GET_CAM_SPLINE_PHASE(scsSwitchCam2.ciSpline) >= 1.0 OR iLeftX <> 0 OR iLeftY <> 0 OR iRightX <> 0 OR iRightY <> 0 OR IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_VEH_ACCELERATE) OR IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_VEH_BRAKE) IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_IN_VEHICLE) <> CAM_VIEW_MODE_FIRST_PERSON STOP_RENDERING_SCRIPT_CAMS_USING_CATCH_UP(FALSE, fEndSceneDistanceToBlend, CAM_SPLINE_SLOW_IN_SMOOTH) ENDIF SET_CAM_ACTIVE(scsSwitchCam2.ciSpline, FALSE) RENDER_SCRIPT_CAMS(FALSE, FALSE) // IF DOES_CAM_EXIST(scsSwitchCam2.ciSpline) // DESTROY_CAM(scsSwitchCam2.ciSpline) // ENDIF ENDIF ENDIF ENDIF //Stats IF GET_VEHICLE_PED_IS_USING(PLAYER_PED_ID()) != NULL INFORM_MISSION_STATS_OF_SPEED_WATCH_ENTITY(GET_VEHICLE_PED_IS_USING(PLAYER_PED_ID())) INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(GET_VEHICLE_PED_IS_USING(PLAYER_PED_ID())) ENDIF //Stop peds attacking player SET_ALL_RANDOM_PEDS_FLEE_THIS_FRAME(PLAYER_ID()) LOAD_UNLOAD_ASSETS() AUDIO_CONTROLLER() //Instance Priority IF eMissionObjective >= stageRace AND eMissionObjective <= stageDriveHome SET_INSTANCE_PRIORITY_HINT(INSTANCE_HINT_DRIVING) ELSE SET_INSTANCE_PRIORITY_HINT(INSTANCE_HINT_NONE) ENDIF //Objective switch SWITCH eMissionObjective CASE initMission IF HAS_MODEL_LOADED_CHECK(GET_PLAYER_PED_MODEL(CHAR_FRANKLIN)) AND HAS_MODEL_LOADED_CHECK(F620) initialiseMission() ENDIF BREAK CASE cutIntro CutsceneIntro() BREAK CASE stageArrive IF HAS_RECORDING_LOADED_CHECK(001, sCarrecGasStation) AND HAS_RECORDING_LOADED_CHECK(002, sCarrecGasStation) Arrive() ENDIF BREAK CASE cutRace IF HAS_MODEL_LOADED_CHECK(IG_CAR3GUY2) AND HAS_MODEL_LOADED_CHECK(IG_CAR3GUY1) AND HAS_MODEL_LOADED_CHECK(CHEETAH) AND HAS_MODEL_LOADED_CHECK(ENTITYXF) AND HAS_RECORDING_LOADED_CHECK(500, sCarrecSetup) AND HAS_RECORDING_LOADED_CHECK(501, sCarrecSetup) CutsceneRace() ENDIF BREAK CASE stageRace IF HAS_RECORDING_LOADED_CHECK(500, sCarrecSetup) AND HAS_RECORDING_LOADED_CHECK(501, sCarrecSetup) AND HAS_RECORDING_LOADED_CHECK(401, sCarrecSetup) AND HAS_RECORDING_LOADED_CHECK(403, sCarrecSetup) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictCar3PullOver) Race() ENDIF BREAK CASE cutSwitch IF HAS_MODEL_LOADED_CHECK(GET_PLAYER_PED_MODEL(CHAR_MICHAEL)) AND HAS_MODEL_LOADED_CHECK(GET_PLAYER_PED_MODEL(CHAR_TREVOR)) AND HAS_MODEL_LOADED_CHECK(POLICEB) AND HAS_MODEL_LOADED_CHECK(PROP_PLAYER_PHONE_01) AND HAS_MODEL_LOADED_CHECK(PROP_DONUT_02) AND HAS_MODEL_LOADED_CHECK(PROP_DONUT_02B) AND HAS_RECORDING_LOADED_CHECK(600, "ALuberSetup") AND HAS_ANIM_DICT_LOADED_CHECK(strAnimDictCar3LeadInOut) AND HAS_ANIM_DICT_LOADED_CHECK(strAnimDictBikeIdle) // AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPhoneUse) CutsceneSwitch() ENDIF BREAK CASE stageChase IF HAS_RECORDING_LOADED_CHECK(500, sCarrecCop) AND HAS_RECORDING_LOADED_CHECK(400, sCarrecCop) AND HAS_RECORDING_LOADED_CHECK(401, sCarrecCop) AND HAS_RECORDING_LOADED_CHECK(402, sCarrecCop) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictCar3) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictCar3PullOver) Chase() ENDIF BREAK CASE cutBridge CutsceneBridge() BREAK CASE stageDriveHome IF HAS_MODEL_LOADED_CHECK(P_LD_ID_CARD_01) DriveHome() ENDIF BREAK CASE cutHome IF HAS_MODEL_LOADED_CHECK(FELON) AND HAS_MODEL_LOADED_CHECK(S_M_Y_DWSERVICE_02) AND HAS_MODEL_LOADED_CHECK(GET_NPC_PED_MODEL(CHAR_MOLLY)) AND HAS_MODEL_LOADED_CHECK(GET_NPC_PED_MODEL(CHAR_DEVIN)) AND HAS_RECORDING_LOADED_CHECK(001, sCarrecGarage) AND HAS_RECORDING_LOADED_CHECK(002, sCarrecGarage) AND HAS_RECORDING_LOADED_CHECK(003, sCarrecGarage) CutsceneHome() ENDIF BREAK CASE passMission missionPassed() BREAK CASE failMission missionFailed() BREAK ENDSWITCH WAIT(0) ENDWHILE //Script should never reach here. Always terminate with cleanup function. ENDSCRIPT