USING "script_oddjob_funcs.sch" USING "Overlay_Effects.sch" CONST_FLOAT EXPLOSION_CAM_BOMB_PITCH 79.1 BOOL bPlayerAttached = FALSE BOOL bPrintHeightWarning = FALSE BOOL bStartSceneAgain = FALSE BOOL bPrintHeighWarningHelp = FALSE FLOAT fCamFov = 65.0 BOOL bCreatedThisFrame = FALSE COLLISION_ARGS collisionArgs FLOAT fHeightAtRelease = -1.0 FLOAT fLerpCount = 1.0 BOOL bPlaneCollidable = TRUE VECTOR vOrigOrientation //Hack wrapper functions to attach / detach the player to the dropped bomb for bounds loading PROC ATTACH_PLAYER_TO_BOMB(ENTITY_INDEX bombProp) //COMMENT this back in when this is working again SPECIAL_FUNCTION_DO_NOT_USE(PLAYER_PED_ID()) SET_ENTITY_VISIBLE(PLAYER_PED_ID(), FALSE) PRINTLN("ATTACH_PLAYER_FROM_BOMB: Attaching player") ATTACH_ENTITY_TO_ENTITY(PLAYER_PED_ID(), bombProp, 0, <<0,0,0>>, <<0,0,0>>) SET_PLAYER_INVINCIBLE(PLAYER_ID(), TRUE) bPlayerAttached = TRUE ENDPROC PROC DETACH_PLAYER_FROM_BOMB(VEHICLE_INDEX myPlane) //Comment back in when we can attach player to bomb. PRINTLN("DETACH_PLAYER_FROM_BOMB: Detaching player") DETACH_ENTITY(PLAYER_PED_ID()) SET_PED_INTO_VEHICLE(PLAYER_PED_ID(),myPlane) bPlayerAttached = FALSE ENDPROC FUNC BOOL EVALUATE_DROP_CONDITIONS(ARGS& myArgs, PLANE_CARGO_ARGS& cargoArgs, structPedsForConversation MyLocalPedStruct, BOOL& bPlayConvo, AIR_VARIATION myVariation = AIR_VARIATION_BOMB, BOOL bInCam = FALSE) VECTOR playerPos playerPos = GET_ENTITY_COORDS(PLAYER_PED_ID()) BOOL bCanDrop = TRUE FLOAT fWaterHeight = 0 IF GET_WATER_HEIGHT_NO_WAVES(GET_ENTITY_COORDS(PLAYER_PED_ID()), fWaterHeight) //PRINTLN("water height:", fWaterHeight, "Playerz: ", playerPos.z ) IF (playerPos.z - fWaterHeight) < 16.5 bCanDrop = FALSE IF NOT bPrintHeighWarningHelp PRINT_HELP("DTRFAIR_HEIGHT") PRINTLN("bPrintHeighWarningHelp = TRUE") bPrintHeighWarningHelp = TRUE ENDIF ENDIF ENDIF IF GET_ENTITY_HEIGHT_ABOVE_GROUND(cargoArgs.myPlane) < 6.0 OR GET_ENTITY_SPEED(PLAYER_PED_ID()) < 10 OR IS_ENTITY_IN_WATER(PLAYER_PED_ID()) IF NOT bPrintHeighWarningHelp PRINT_HELP("DTRFAIR_HEIGHT") PRINTLN("bPrintHeighWarningHelp = TRUE") bPrintHeighWarningHelp = TRUE ENDIF bCanDrop = FALSE ENDIF //TODO this is currenlty breaking the abort drop cam #IF IS_DEBUG_BUILD FLOAT fHeight = GET_ENTITY_HEIGHT_ABOVE_GROUND(cargoArgs.myPlane) PRINTLN("Height from ground: ", fHeight) #ENDIF // IS_DEBUG_BUILD IF GET_ENTITY_HEIGHT_ABOVE_GROUND(cargoArgs.myPlane) > 230 AND NOT bInCam IF myVariation = AIR_VARIATION_BOMB AND myArgs.bDoBomb IF bPlayConvo CREATE_CONVERSATION(MyLocalPedStruct, "ARMSAUD", "ARMS_A_ALTP", CONV_PRIORITY_VERY_HIGH) bPlayConvo = FALSE ENDIF IF NOT bPrintHeightWarning PRINT_HELP("DTRFAIR_ERR1") PRINTLN("BOMB - HEIGHT WARNING") bPrintHeightWarning = TRUE ENDIF ELSE IF bPlayConvo CREATE_CONVERSATION(MyLocalPedStruct, "ARMSAUD", "ARMS_A_ALTP", CONV_PRIORITY_VERY_HIGH) bPlayConvo = FALSE ENDIF IF NOT bPrintHeightWarning PRINT_HELP("DTRFAIR_ERR2") PRINTLN("PACKAGE - HEIGHT WARNING") bPrintHeightWarning = TRUE ENDIF ENDIF bCanDrop = FALSE ENDIF //If we're too high don't drop.. need a print as well IF bCanDrop = FALSE //AND IS_BUTTON_JUST_PRESSED(PAD1, CROSS) ODDJOB_PLAY_SOUND("DRUG_TRAFFIC_AIR_BOMB_DROP_ERROR_MASTER", cargoArgs.soundID) ENDIF RETURN bCanDrop ENDFUNC BOOL bInCam = FALSE PROC TOGGLE_VISIBILITY(PLANE_CARGO_ARGS& cargoArgs, OBJECT_INDEX myEntity, BOOL bUberBombs = FALSE, BOOL bVisible = FALSE) INT idx, idx2 PRINTLN("Calling Toggle Visibility uber, visible", bUberBombs, bVisible) IF DOES_ENTITY_EXIST(cargoArgs.myPlane) PRINTLN("Setting plane invisible: ", bVisible) SET_ENTITY_VISIBLE(cargoArgs.myPlane, bVisible) ENDIF IF DOES_ENTITY_EXIST(PLAYER_PED_ID()) PRINTLN("Setting player invisible: ", bVisible) SET_ENTITY_VISIBLE(PLAYER_PED_ID(), bVisible) ENDIF REPEAT cargoArgs.iNumPackagesTotal idx IF DOES_ENTITY_EXIST(cargoArgs.oCargoDrop[idx]) AND myEntity <> cargoArgs.oCargoDrop[idx] PRINTLN("Setting package invisible: ", "num: ", idx, bVisible) SET_ENTITY_VISIBLE(cargoArgs.oCargoDrop[idx], bVisible) IF bUberBombs REPEAT MAX_NUMBER_CLUSTER idx2 IF DOES_ENTITY_EXIST(cargoArgs.oClusterDrop[idx][idx2]) IF IS_ENTITY_ATTACHED(cargoArgs.oClusterDrop[idx][idx2]) SET_ENTITY_VISIBLE(cargoArgs.oClusterDrop[idx][idx2], bVisible) ENDIF ENDIF ENDREPEAT ENDIF ENDIF ENDREPEAT ENDPROC FUNC BOOL IS_COLLISION_IMMINENT(ENTITY_INDEX myPlane, VECTOR vPlayerPos, FLOAT yDist = 230.0) VECTOR planeCoord = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(myPlane, <<0,yDist,0>>) DEBUG_MESSAGE(" yDist: ") PRINTFLOAT(yDist) PRINTNL() PRINTVECTOR(planeCoord) DEBUG_MESSAGE(" playerPos: ") PRINTVECTOR(vPlayerPos) PRINTNL() //If we are really low to the ground lets bail out as well IF GET_ENTITY_HEIGHT_ABOVE_GROUND(myPlane) < 20.0 RETURN TRUE ENDIF FLOAT zGround BOOL bHasBounds = FALSE planeCoord.z += 240.0 IF GET_GROUND_Z_FOR_3D_COORD(planeCoord, zGround) bHasBounds = TRUE //ELIF GET_WATER_HEIGHT_NO_WAVES(planeCoord, zGround) //bHasBounds = TRUE ENDIF IF bHasBounds DEBUG_MESSAGE("Has Bounds") PRINTFLOAT(zGround) PRINTNL() PRINTFLOAT(vPlayerPos.z) IF (zGround+15.0) > vPlayerPos.z RETURN TRUE ELSE RETURN FALSE ENDIF ENDIF DEBUG_MESSAGE("NO BOUNDS") RETURN FALSE ENDFUNC FUNC BOOL IS_COLLISION_IMMINENT_WRAPPER(ENTITY_INDEX myPlane) VECTOR vPlayerPos = GET_ENTITY_COORDS(PLAYER_PED_ID()) IF IS_COLLISION_IMMINENT(myPlane, vPlayerPos, 180) OR IS_COLLISION_IMMINENT(myPlane, vPlayerPos, 130) OR IS_COLLISION_IMMINENT(myPlane, vPlayerPos, 80) RETURN TRUE ENDIF RETURN FALSE ENDFUNC INT testSoundID = -1 FLOAT fBlurStrength = 0.01 //This is the camera that attaches to the package and follows the bomb down FUNC BOOL DO_EXPLOSION_CAM(PLANE_CARGO_ARGS& cargoArgs, OBJECT_INDEX& myEntity) CLEAR_TIMECYCLE_MODIFIER() OVERLAY_SET_SECURITY_CAM(FALSE,FALSE) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_EXIT) SET_VEHICLE_USED_FOR_PILOT_SCHOOL(cargoArgs.myPlane, TRUE) PRINTLN("DISABLING FLIGHT SKILL - 01") bCreatedThisFrame = TRUE SET_ENTITY_COLLISION(myEntity, FALSE) VECTOR vRotTemp = GET_ENTITY_ROTATION(myEntity) vRotTemp.x = EXPLOSION_CAM_BOMB_PITCH SET_ENTITY_ROTATION(myEntity, vRotTemp) SET_ENTITY_ROTATION(cargoArgs.oBombDummy, vRotTemp) SET_ENTITY_COLLISION(cargoArgs.oBombDummy, FALSE) bInCam = TRUE TOGGLE_VISIBILITY(cargoArgs, myEntity, FALSE) DESTROY_CAM(cargoArgs.CamExplosion) //exit the targeting cam cargoArgs.bBombCam = FALSE IF NOT DOES_CAM_EXIST(cargoArgs.CamExplosion) cargoArgs.CamExplosion = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED, <<0,0,0>>, <<0,0,0>>, 65.00, FALSE) PRINTLN("CREATING EXPLOSION CAM - 01") ENDIF //SET_CAM_MOTION_BLUR_STRENGTH(cargoArgs.CamExplosion, fBlurStrength) ATTACH_CAM_TO_ENTITY(cargoArgs.CamExplosion, cargoArgs.oBombDummy, <<0.2402, 1.3324, -0.1095>>, TRUE) POINT_CAM_AT_ENTITY(cargoArgs.CamExplosion, cargoArgs.oBombDummy, <<0.3169, -1.8554, 0.1502>>) ATTACH_PLAYER_TO_BOMB(myEntity) SHAKE_CAM(cargoArgs.CamExplosion, "ROAD_VIBRATION_SHAKE", 1.0) SET_CAM_FOV(cargoArgs.CamExplosion, 65.0) SET_CAM_ACTIVE(cargoArgs.CamExplosion, TRUE) RENDER_SCRIPT_CAMS(TRUE, FALSE) DISPLAY_RADAR(FALSE) DISPLAY_HUD(FALSE) fCamFov = 65.0 ODDJOB_PLAY_SOUND("DRUG_TRAFFIC_AIR_BOMB_CAM_MASTER", testSoundID, TRUE) VECTOR vProbeStart = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(cargoArgs.myPlane, <<0.0, 20.0, 0.0>>) GET_GROUND_Z_FOR_3D_COORD(vProbeStart, fHeightAtRelease) SET_ENTITY_COLLISION(cargoArgs.myPlane, FALSE) bPlaneCollidable = FALSE //SET_FOCUS_POS_AND_VEL(GET_ENTITY_COORDS(cargoArgs.myPlane), <<-60.8813, 5.0506, 122.7079>>) RETURN TRUE ENDFUNC //Old targeting cam //FUNC BOOL SETUP_BOMB_CAM(PLANE_CARGO_ARGS& cargoArgs) // // DEBUG_PRINT("INSIDE SETUP_BOMB_CAM") // DESTROY_CAM(cargoArgs.CamExplosion) // RENDER_SCRIPT_CAMS(FALSE, FALSE) // // //TODO if the vehicle isn't flying.. don't do bomb cam. // IF EVALUATE_DROP_CONDITIONS(cargoArgs) // IF NOT DOES_CAM_EXIST(cargoArgs.CamExplosion) // cargoArgs.CamExplosion = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED, <<0,0,0>>, <<0,0,0>>, 95, FALSE) // ENDIF // // ATTACH_CAM_TO_ENTITY(cargoArgs.CamExplosion, cargoArgs.myPlane, <<0,-0.65,-0.60>>, TRUE) // SET_CAM_ACTIVE(cargoArgs.CamExplosion, TRUE) // RENDER_SCRIPT_CAMS(TRUE, FALSE) // DISPLAY_RADAR(FALSE) // DISPLAY_HUD(FALSE) // DEBUG_PRINT("RETURNING TRUE ON SETUP_BOMB_CAM") // RETURN TRUE // ELSE // RETURN FALSE // ENDIF // //ENDFUNC //Attach the camera to the bomb bay door view //bCut is used to only call LAST_BOMB_CUT_SINGLE once.. hack.. FUNC BOOL SETUP_CARPET_BOMB_CAM(ARGS& myArgs, PLANE_CARGO_ARGS& cargoArgs) DEBUG_PRINT("INSIDE SETUP_BOMB_CAM") DESTROY_CAM(cargoArgs.CamExplosion) RENDER_SCRIPT_CAMS(FALSE, FALSE) FLOAT fHeading fHeading = fHeading //TODO if the vehicle isn't flying.. don't do bomb cam. structPedsForConversation temp BOOL bPlayCon = FALSE PRINTLN("EVALUATE_DROP_CONDITIONS VIA SETUP_CARPET_BOMB_CAM") IF EVALUATE_DROP_CONDITIONS(myArgs, cargoArgs, temp, bPlayCon) IF NOT DOES_CAM_EXIST(cargoArgs.CamExplosion) fHeading = GET_ENTITY_HEADING(cargoArgs.myPlane) cargoArgs.CamExplosion = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED, <<0,0,0>>, <<0, 0, 0>>, 65, FALSE) SHAKE_CAM(cargoArgs.CamExplosion, "ROAD_VIBRATION_SHAKE", 0.5) PRINTLN("CREATING EXPLOSION CAM - 02") ENDIF cargoArgs.iCutGameTimeStart = GET_GAME_TIMER() ATTACH_CAM_TO_ENTITY(cargoArgs.CamExplosion, cargoArgs.myPlane, <<0, 1.44, -0.9565>>) POINT_CAM_AT_ENTITY(cargoArgs.CamExplosion, cargoArgs.myPlane, <<-0.1281, -1.5596, -1.4592>>) SET_VEHICLE_USED_FOR_PILOT_SCHOOL(cargoArgs.myPlane, TRUE) PRINTLN("DISABLING FLIGHT SKILL - 02") SET_CAM_ACTIVE(cargoArgs.CamExplosion, TRUE) DISPLAY_RADAR(FALSE) DISPLAY_HUD(FALSE) RENDER_SCRIPT_CAMS(TRUE, FALSE) DEBUG_PRINT("RETURNING TRUE ON SETUP_BOMB_CAM") RETURN TRUE ELSE RETURN FALSE ENDIF ENDFUNC FUNC BOOL SETUP_OPEN_BOMB_CAM(ARGS& myArgs, PLANE_CARGO_ARGS& cargoArgs) DEBUG_PRINT("INSIDE SETUP_BOMB_CAM") DESTROY_CAM(cargoArgs.CamExplosion) RENDER_SCRIPT_CAMS(FALSE, FALSE) FLOAT fHeading fHeading = fHeading structPedsForConversation temp BOOL bPlayCon = FALSE //TODO if the vehicle isn't flying.. don't do bomb cam. PRINTLN("EVALUATE_DROP_CONDITIONS VIA SETARGS& myArgsUP_OPEN_BOMB_CAM") IF EVALUATE_DROP_CONDITIONS(myArgs, cargoArgs, temp, bPlayCon) IF NOT DOES_CAM_EXIST(cargoArgs.CamExplosion) fHeading = GET_ENTITY_HEADING(cargoArgs.myPlane) cargoArgs.CamExplosion = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED, <<0,0,0>>, <<0, 0, 0>>, 65, FALSE) PRINTLN("CREATING EXPLOSION CAM - 03") ENDIF ATTACH_CAM_TO_ENTITY(cargoArgs.CamExplosion, cargoArgs.myPlane, <<0.0018, -1.0467, -0.9686>>) POINT_CAM_AT_ENTITY(cargoArgs.CamExplosion, cargoArgs.myPlane, <<0.0586, 1.9170, -1.2309>>) SET_CAM_FOV(cargoArgs.CamExplosion, 50.0000) SET_VEHICLE_USED_FOR_PILOT_SCHOOL(cargoArgs.myPlane, TRUE) PRINTLN("DISABLING FLIGHT SKILL - 03") SET_CAM_ACTIVE(cargoArgs.CamExplosion, TRUE) RENDER_SCRIPT_CAMS(TRUE, FALSE) DISPLAY_RADAR(FALSE) DISPLAY_HUD(FALSE) DEBUG_PRINT("RETURNING TRUE ON SETUP_BOMB_CAM") STOP_AUDIO_SCENE("BAY_DOOR_SCENE") PRINTLN("STOP AUDIO SCENE - BAY_DOOR_SCENE VIA SETUP_OPEN_BOMB_CAM") TRIGGER_MUSIC_EVENT("OJDA1_HATCH_OPEN") PRINTLN("TRIGGERING MUSIC - OJDA1_HATCH_OPEN") RETURN TRUE ELSE RETURN FALSE ENDIF ENDFUNC //After all of the bombs have dropped from the plan we attach the cam to the final bomb and follow it down PROC LAST_BOMB_CUT(PLANE_CARGO_ARGS& cargoArgs, ENTITY_INDEX myEntity) VECTOR rotVec rotVec = GET_CAM_ROT(cargoArgs.CamExplosion) cargoArgs.CamTransition = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED, <<0,0,0>>, rotVec, 65.00, TRUE) INT iInterpTime FLOAT fHeight = GET_ENTITY_HEIGHT_ABOVE_GROUND(cargoArgs.myPlane) IF fHeight < 35 PRINTLN("DIST: ", GET_ENTITY_HEIGHT_ABOVE_GROUND(cargoArgs.myPlane)) iInterpTime = 3000 ATTACH_CAM_TO_ENTITY(cargoArgs.CamTransition, myEntity, <<1.0262, -9.9728, 1.8926>>, TRUE) POINT_CAM_AT_ENTITY(cargoArgs.CamTransition, myEntity, <<0.8841, -7.0213, 2.4110>>) ELIF fHeight < 70 PRINTLN("DIST: ", GET_ENTITY_HEIGHT_ABOVE_GROUND(cargoArgs.myPlane)) iInterpTime = 3500 ATTACH_CAM_TO_ENTITY(cargoArgs.CamTransition, myEntity, <<1.1287, -8.3258, 0.7281>>, TRUE) POINT_CAM_AT_ENTITY(cargoArgs.CamTransition, myEntity, <<0.9513, -5.4114, 1.4169>>) ELSE PRINTLN("DIST: ", GET_ENTITY_HEIGHT_ABOVE_GROUND(cargoArgs.myPlane)) iInterpTime = 5000 ATTACH_CAM_TO_ENTITY(cargoArgs.CamTransition, myEntity, <<1.4631, -3.0219, -3.0115>>, TRUE) POINT_CAM_AT_ENTITY(cargoArgs.CamTransition, myEntity, <<1.1996, -0.3242, -1.7257>>) ENDIF // 2nd Shot TOGGLE_VISIBILITY(cargoArgs, NULL, TRUE, FALSE) PRINTLN("[LAST_BOMB_CUT] Hiding plane, and bomb if they are attached.") IF NOT IS_VECTOR_ZERO(vCamTransitionOffsetPosition) AND NOT IS_VECTOR_ZERO(vCamTransitionOffsetRotation) cargoArgs.CamTransition01 = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED, <<0,0,0>>, rotVec, 65.00, FALSE) ATTACH_CAM_TO_ENTITY(cargoArgs.CamTransition01, myEntity, vCamTransitionOffsetPosition, TRUE) POINT_CAM_AT_ENTITY(cargoArgs.CamTransition01, myEntity, vCamTransitionOffsetRotation) ENDIF PRINTLN("vCamTransitionOffsetPosition = ", vCamTransitionOffsetPosition) PRINTLN("vCamTransitionOffsetRotation = ", vCamTransitionOffsetRotation) PRINTLN("CREATING NEW CAM") SHAKE_CAM(cargoArgs.CamTransition, "HAND_SHAKE", 2.0) SHAKE_CAM(cargoArgs.CamTransition01, "HAND_SHAKE", 2.0) // SET_CAM_MOTION_BLUR_STRENGTH(cargoArgs.CamTransition, 0.25) // SET_CAM_MOTION_BLUR_STRENGTH(cargoArgs.CamTransition01, 0.25) SET_CAM_ACTIVE_WITH_INTERP(cargoArgs.CamTransition01, cargoArgs.CamTransition, iInterpTime) ATTACH_PLAYER_TO_BOMB(myEntity) ODDJOB_PLAY_SOUND("DRUG_TRAFFIC_AIR_BOMB_CAM_MASTER", cargoArgs.soundID, TRUE) RENDER_SCRIPT_CAMS(TRUE, FALSE) DISPLAY_RADAR(FALSE) DISPLAY_HUD(FALSE) ENDPROC PROC CLEANUP_CLUSTER_CAM(PLANE_CARGO_ARGS& cargoArgs, ENTITY_INDEX myEntity, INT delay = 0) DESTROY_CAM(cargoArgs.CamTransition) DESTROY_CAM(cargoArgs.CamTransition01) DESTROY_CAM(cargoArgs.CamExplosion) RENDER_SCRIPT_CAMS(FALSE, FALSE) TOGGLE_VISIBILITY(cargoARgs, NULL, TRUE, TRUE) IF bPlayerAttached DETACH_PLAYER_FROM_BOMB(cargoArgs.myPlane) ENDIF cargoArgs.CamExplosion = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED, <<1,1,1>>, <<0,0,0>>, 60.00, FALSE) PRINTLN("CREATING EXPLOSION CAM - 04") ODDJOB_STOP_SOUND(cargoArgs.soundID) ATTACH_CAM_TO_ENTITY(cargoArgs.CamExplosion, cargoArgs.myPlane, <<0,-0.65,-1.60>>, TRUE) SHAKE_CAM(cargoArgs.CamExplosion, "HAND_SHAKE", 1.5) POINT_CAM_AT_ENTITY(cargoArgs.CamExplosion, myEntity, <<0,0,0>>) SET_VEHICLE_USED_FOR_PILOT_SCHOOL(cargoArgs.myPlane, FALSE) PRINTLN("ENABLING FLIGHT SKILL - 01") SET_CAM_ACTIVE(cargoArgs.CamExplosion, TRUE) RENDER_SCRIPT_CAMS(TRUE, FALSE) cargoArgs.iCutGameTimeStart = 0 cargoArgs.iCutGameTime = GET_GAME_TIMER() + delay ENDPROC PROC CLEANUP_EXPLOSION_CAM(PLANE_CARGO_ARGS& cargoArgs, ENTITY_INDEX myEntity, INT iCargo, INT delay = 0, BOOL bDoLookBack = TRUE) iCargo = iCargo CLEAR_FOCUS() // Clear the values for lerping from large to small FOV for bomb drop in the explosion cam // fLerpCount = 0.0 IF cargoArgs.iNumReleased-1 = iCargo //OR NOT bDoLookBack TOGGLE_VISIBILITY(cargoARgs, NULL, FALSE, TRUE) IF bPlayerAttached DETACH_PLAYER_FROM_BOMB(cargoArgs.myPlane) ENDIF SET_ENTITY_COLLISION(cargoArgs.myPlane, TRUE) bPlaneCollidable = TRUE DESTROY_CAM(cargoArgs.CamExplosion) RENDER_SCRIPT_CAMS(FALSE, FALSE) ODDJOB_STOP_SOUND(cargoArgs.soundID) ODDJOB_STOP_SOUND(testSoundID) cargoArgs.iCutGameTimeStart = 0 bInCam = FALSE DEBUG_PRINT("CALLING CLEANUP_EXPLOSION_CAM") IF bDoLookBack AND NOT UPDATE_COLLISION_TESTS_NOW(collisionArgs, cargoArgs.myPlane) DISPLAY_RADAR(FALSE) DISPLAY_HUD(FALSE) IF NOT IS_ENTITY_DEAD(PLAYER_PED_ID()) SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) ENDIF SET_VEHICLE_USED_FOR_PILOT_SCHOOL(cargoArgs.myPlane, FALSE) PRINTLN("ENABLING FLIGHT SKILL - 02") cargoArgs.CamExplosion = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED, <<1,1,1>>, <<0,0,0>>, 60.00, FALSE) PRINTLN("CREATING EXPLOSION CAM - 05") ATTACH_CAM_TO_ENTITY(cargoArgs.CamExplosion, cargoArgs.myPlane, <<0,-0.65,-1.60>>, TRUE) SHAKE_CAM(cargoArgs.CamExplosion, "HAND_SHAKE", 1.5) POINT_CAM_AT_ENTITY(cargoArgs.CamExplosion, myEntity, <<0,0,0>>) SET_FOCUS_POS_AND_VEL(GET_ENTITY_COORDS(myEntity), <<0,0,0>>) SET_CAM_ACTIVE(cargoArgs.CamExplosion, TRUE) RENDER_SCRIPT_CAMS(TRUE, FALSE) cargoArgs.iCutGameTimeStart = 0 cargoArgs.iCutGameTime = GET_GAME_TIMER() + delay ELSE DISPLAY_RADAR(TRUE) DISPLAY_HUD(TRUE) ENDIF ENDIF ENDPROC PROC CLEANUP_CAM(PLANE_CARGO_ARGS &cargoArgs, BOOL& bClearPrints) IF bClearPrints CLEAR_HELP() bClearPrints = FALSE ENDIF IF NOT IS_ENTITY_DEAD(PLAYER_PED_ID()) SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) ENDIF SET_VEHICLE_USED_FOR_PILOT_SCHOOL(cargoArgs.myPlane, FALSE) PRINTLN("ENABLING FLIGHT SKILL - 03") IF NOT bStartSceneAgain START_AUDIO_SCENE("BAY_DOOR_SCENE") PRINTLN("STARTING AUDIO SCENE - BAY_DOOR_SCENE VIA CLEANUP_CAM") bStartSceneAgain = TRUE ENDIF TOGGLE_VISIBILITY(cargoArgs, NULL, FALSE, TRUE) DISPLAY_RADAR(TRUE) DISPLAY_HUD(TRUE) CLEAR_TIMECYCLE_MODIFIER() OVERLAY_SET_SECURITY_CAM(FALSE,FALSE) DESTROY_CAM(cargoArgs.CamExplosion) RENDER_SCRIPT_CAMS(FALSE, FALSE) ENDPROC PROC CLEANUP_QUICK_CAM(PLANE_CARGO_ARGS &cargoArgs, BOOL& bLocked, INT& iLockedIdx) bLocked = FALSE iLockedIdx = -1 cargoArgs.iCutGameTimeStart = 0 DISPLAY_RADAR(TRUE) DISPLAY_HUD(TRUE) //cargoArgs.iCutGameTime = GET_GAME_TIMER() DESTROY_CAM(cargoArgs.CamExplosion) RENDER_SCRIPT_CAMS(FALSE, FALSE) SET_VEHICLE_USED_FOR_PILOT_SCHOOL(cargoArgs.myPlane, FALSE) PRINTLN("ENABLING FLIGHT SKILL - 04") ENDPROC