1660 lines
55 KiB
Python
Executable File
1660 lines
55 KiB
Python
Executable File
// Chris McMahon
|
|
|
|
// Includes -----------------------------------------------//
|
|
USING "commands_misc.sch"
|
|
USING "commands_object.sch"
|
|
USING "commands_script.sch"
|
|
USING "commands_streaming.sch"
|
|
USING "commands_pad.sch"
|
|
USING "commands_debug.sch"
|
|
USING "types.sch"
|
|
USING "commands_brains.sch"
|
|
USING "brains.sch"
|
|
USING "shared_debug_text.sch"
|
|
USING "script_player.sch"
|
|
USING "finance_control_public.sch"
|
|
USING "player_ped_public.sch"
|
|
USING "cutscene_public.sch"
|
|
USING "context_control_public.sch"
|
|
USING "freemode_header.sch"
|
|
USING "rgeneral_include.sch"
|
|
USING "net_cash_transactions.sch"
|
|
|
|
// Variables ----------------------------------------------//
|
|
PED_COMP_NAME_ENUM eStoredHelmet = DUMMY_PED_COMP, eStoredMask = DUMMY_PED_COMP
|
|
BOOL bSwappedChemSuit = FALSE
|
|
ENUM ambStageFlag
|
|
ambCanRun,
|
|
ambRunning,
|
|
ambEnd
|
|
ENDENUM
|
|
ambStageFlag ambStage = ambCanRun
|
|
|
|
ENUM scopeStageFlag
|
|
playerOutOfRange,
|
|
waitForPlayer,
|
|
grabPlayer,
|
|
playEnter,
|
|
runScope,
|
|
resetScope
|
|
ENDENUM
|
|
OBJECT_INDEX oBlinds
|
|
scopeStageFlag scopeStage = waitForPlayer
|
|
|
|
WEAPON_TYPE storedWeapon
|
|
//BOOL bTurnedPlayerControlOff
|
|
INT iContextButtonIntention = NEW_CONTEXT_INTENTION, iTelescopeStartTime = -1
|
|
INT iSoundCoinDrop = -1, iSoundCountdown = -1, iSoundTimer = -1, iSoundZoom = -1, iSoundZoomLimit = -1, iSoundTurnVert = -1, iSoundTurnHori = -1, iSoundTurnLimit = -1/*, iSoundEndUse = -1*/
|
|
BOOL bPublicTelescope, bRespottedPlayer, bHitVertLimit = FALSE, bHitHorizLimit = FALSE, bHitZoomLimit = FALSE
|
|
|
|
STRING sTelescopeSoundBank
|
|
SCRIPT_TIMER telescopeMouseTimer
|
|
FLOAT fMouseX
|
|
FLOAT fStoredMouseX
|
|
FLOAT fMouseY
|
|
FLOAT fStoredMouseY
|
|
|
|
OBJECT_INDEX oScope
|
|
CAMERA_INDEX cameraTelescope
|
|
SCALEFORM_INDEX sfMovie
|
|
VECTOR vLookCamPos
|
|
VECTOR vLookCamRot
|
|
FLOAT fMinYChange = -40
|
|
FLOAT fMaxYChange = 40
|
|
FLOAT fMinXChange = -70
|
|
FLOAT fMaxXChange = 70
|
|
FLOAT fMaxFOV = 10
|
|
FLOAT fMinFOV = 65
|
|
//FLOAT vScopeHeading
|
|
|
|
FLOAT fZoomChange = fMinFOV
|
|
FLOAT fZoomSpeed = 1
|
|
FLOAT fSpeedMultiplier = 50
|
|
FLOAT fCamSpeed = fZoomChange/fSpeedMultiplier
|
|
FLOAT fCamChangeY
|
|
FLOAT fCamChangeX
|
|
FLOAT fHomeTelescopeOffset = 0.34
|
|
CONST_INT STICK_DEAD_ZONE 28
|
|
CONST_FLOAT MOUSE_CAMERA_SPEED_ADJUST 0.1//0.0004
|
|
STRING animDictEnter = "MINI@TELESCOPE"
|
|
STRING animDictExit = "MINI@TELESCOPE"
|
|
INT scopeCost = 1
|
|
STRING sScopeContextHelp
|
|
//SEQUENCE_INDEX seq
|
|
BOOL scopeFallen = FALSE
|
|
|
|
CONST_INT TELESCOPE_TIME 60000
|
|
|
|
CONST_INT iBS_STORE_ACTIVE 0
|
|
INT iBoolsBitSet
|
|
|
|
STRING animEnter
|
|
STRING animLoop
|
|
STRING animExit
|
|
|
|
BOOL bSetupPCControls = FALSE
|
|
|
|
|
|
PROC CLEAN_UP_CAMERA()
|
|
IF DOES_ENTITY_EXIST(oBlinds)
|
|
SET_ENTITY_VISIBLE(oBlinds, TRUE)
|
|
ENDIF
|
|
CLEAR_HELP(TRUE)
|
|
RENDER_SCRIPT_CAMS(FALSE, FALSE)
|
|
IF IS_CAM_ACTIVE(cameraTelescope)
|
|
SET_CAM_ACTIVE(cameraTelescope,FALSE)
|
|
ENDIF
|
|
DESTROY_CAM(cameraTelescope)
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
|
|
|
|
IF DOES_ENTITY_EXIST(oScope)
|
|
AND GET_ENTITY_MODEL(oScope) = INT_TO_ENUM(MODEL_NAMES, HASH("XS_PROP_ARENA_TELESCOPE_01"))
|
|
//don't clear timecycles for arena
|
|
ELSE
|
|
//think we still need to hit this regardless of existance of prop at this point
|
|
CLEAR_TIMECYCLE_MODIFIER()
|
|
POP_TIMECYCLE_MODIFIER()
|
|
IF NOT Is_Ped_Drunk(PLAYER_PED_ID())
|
|
CLEAR_TIMECYCLE_MODIFIER()
|
|
ENDIF
|
|
ENDIF
|
|
|
|
PRINTLN("Ob_telescope called - CLEAN_UP_CAMERA()")
|
|
ENDPROC
|
|
|
|
// Clean Up
|
|
PROC missionCleanup(BOOL bAllowDelayForDeadPed)
|
|
IF NOT IS_PLAYER_USING_RC_TANK(PLAYER_ID())
|
|
AND NOT IS_PLAYER_USING_RCBANDITO(PLAYER_ID())
|
|
ENABLE_INTERACTION_MENU()
|
|
ENDIF
|
|
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(sScopeContextHelp)
|
|
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(sScopeContextHelp)
|
|
CLEAR_HELP()
|
|
ENDIF
|
|
ENDIF
|
|
IF iContextButtonIntention != NEW_CONTEXT_INTENTION
|
|
RELEASE_CONTEXT_INTENTION(iContextButtonIntention)
|
|
ENDIF
|
|
|
|
IF bSwappedChemSuit = TRUE
|
|
IF bAllowDelayForDeadPed
|
|
AND IS_PED_INJURED(PLAYER_PED_ID())
|
|
CDEBUG1LN(DEBUG_SAFEHOUSE, GET_THIS_SCRIPT_NAME(), " - delay mission cleanup to allow injured ped to swap hazmat hood")
|
|
EXIT
|
|
ENDIF
|
|
SWAP_CHEM_SUIT_HOOD_FOR_ALTERNATE(PLAYER_PED_ID())
|
|
bSwappedChemSuit = FALSE
|
|
ENDIF
|
|
IF eStoredHelmet != DUMMY_PED_COMP
|
|
AND eStoredHelmet != PROPS_HEAD_NONE
|
|
IF bAllowDelayForDeadPed
|
|
AND IS_PED_INJURED(PLAYER_PED_ID())
|
|
CDEBUG1LN(DEBUG_SAFEHOUSE, GET_THIS_SCRIPT_NAME(), " - delay mission cleanup to allow injured ped to swap stored Helmet")
|
|
EXIT
|
|
ENDIF
|
|
SET_PED_COMP_ITEM_CURRENT_MP(PLAYER_PED_ID(), COMP_TYPE_PROPS, eStoredHelmet, FALSE)
|
|
eStoredHelmet = DUMMY_PED_COMP
|
|
ENDIF
|
|
IF eStoredMask != DUMMY_PED_COMP
|
|
IF bAllowDelayForDeadPed
|
|
AND IS_PED_INJURED(PLAYER_PED_ID())
|
|
CDEBUG1LN(DEBUG_SAFEHOUSE, GET_THIS_SCRIPT_NAME(), " - delay mission cleanup to allow injured ped to swap stored mask")
|
|
EXIT
|
|
ENDIF
|
|
SET_PED_COMP_ITEM_CURRENT_MP(PLAYER_PED_ID(), COMP_TYPE_BERD, eStoredMask, FALSE)
|
|
eStoredMask = DUMMY_PED_COMP
|
|
ENDIF
|
|
|
|
IF DOES_CAM_EXIST(cameraTelescope)
|
|
CLEAN_UP_CAMERA()
|
|
ENDIF
|
|
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(sfMovie)
|
|
|
|
PRINTLN("POD: telescope: scaleform no longer needed")
|
|
|
|
MPGlobalsAmbience.bUsingTelescope = FALSE
|
|
g_bCurrentlyUsingTelescope = FALSE // Prevent Chop running off when using a telescope
|
|
|
|
IF bSetupPCControls
|
|
SHUTDOWN_PC_SCRIPTED_CONTROLS()
|
|
ENDIF
|
|
|
|
TERMINATE_THIS_THREAD()
|
|
ENDPROC
|
|
|
|
PROC SET_UP_CAMERA()
|
|
IF DOES_ENTITY_EXIST(oBlinds)
|
|
SET_ENTITY_VISIBLE(oBlinds, FALSE)
|
|
ENDIF
|
|
cameraTelescope = CREATE_CAM_WITH_PARAMS("DEFAULT_SCRIPTED_CAMERA", vLookCamPos, vLookCamRot, fMinFOV, TRUE)
|
|
//cameraTelescope = CREATE_CAM_WITH_PARAMS("DEFAULT_SCRIPTED_CAMERA", vLookCamPos, fZoomChange, fMinFOV, TRUE)
|
|
|
|
//vCamRot
|
|
//fZoomChange
|
|
SET_CAM_NEAR_CLIP(cameraTelescope, 0.1)
|
|
SET_CAM_CONTROLS_MINI_MAP_HEADING(cameraTelescope, TRUE)
|
|
SET_SCRIPT_GFX_DRAW_ORDER(GFX_ORDER_BEFORE_HUD)
|
|
|
|
IF NOT IS_LOCAL_PLAYER_IN_ARENA_SPECTATOR_BOX()
|
|
PUSH_TIMECYCLE_MODIFIER()
|
|
ENDIF
|
|
|
|
DRAW_SCALEFORM_MOVIE_FULLSCREEN(sfMovie, 0,0,0,255)
|
|
|
|
PRINTLN("POD: telescope: drawing scaleform - 2")
|
|
|
|
IF NOT IS_LOCAL_PLAYER_IN_ARENA_SPECTATOR_BOX()
|
|
SET_TIMECYCLE_MODIFIER("telescope")
|
|
ENDIF
|
|
|
|
RENDER_SCRIPT_CAMS(TRUE, FALSE)
|
|
ENDPROC
|
|
|
|
PROC PLAY_SQUEAK(FLOAT squeakAmount)
|
|
IF bPublicTelescope
|
|
IF NOT HAS_SOUND_FINISHED(iSoundTurnVert)
|
|
//STOP_SOUND(iSoundSqueak)
|
|
// ENDIF
|
|
//PLAY_SOUND_FROM_ENTITY(iSoundSqueak, "TELESCOPE_SQUEAK_MASTER", oScope)
|
|
IF squeakAmount < 0
|
|
squeakAmount += -squeakAmount*2
|
|
ENDIF
|
|
SET_VARIABLE_ON_SOUND(iSoundTurnVert, "velocity", squeakAmount)
|
|
ENDIF
|
|
IF NOT HAS_SOUND_FINISHED(iSoundTurnHori)
|
|
//STOP_SOUND(iSoundSqueak)
|
|
// ENDIF
|
|
//PLAY_SOUND_FROM_ENTITY(iSoundSqueak, "TELESCOPE_SQUEAK_MASTER", oScope)
|
|
IF squeakAmount < 0
|
|
squeakAmount += -squeakAmount*2
|
|
ENDIF
|
|
SET_VARIABLE_ON_SOUND(iSoundTurnHori, "velocity", squeakAmount)
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
FUNC BOOL HAS_MOUSE_JUST_MOVED()
|
|
|
|
// GET_MOUSE_POSITION(fMouseX, fMouseY)
|
|
fMouseX = GET_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_X )
|
|
fMouseY = GET_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_Y )
|
|
|
|
IF fMouseX != fStoredMouseX
|
|
OR fMouseY != fStoredMouseY
|
|
CDEBUG1LN(DEBUG_SAFEHOUSE, "HAS_MOUSE_JUST_MOVED: fStoredMouseX: ", fStoredMouseX, " != fMouseX: ", fMouseX)
|
|
CDEBUG1LN(DEBUG_SAFEHOUSE, "HAS_MOUSE_JUST_MOVED: fStoredMouseY: ", fStoredMouseY, " != fMouseY: ", fMouseY)
|
|
fStoredMouseX = fMouseX
|
|
fStoredMouseY = fMouseY
|
|
|
|
// IF HAS_NET_TIMER_STARTED(telescopeMouseTimer)
|
|
// RESET_NET_TIMER(telescopeMouseTimer)
|
|
// CDEBUG1LN(DEBUG_SAFEHOUSE, "HAS_MOUSE_JUST_MOVED: mouse still moving ")
|
|
// ENDIF
|
|
IF NOT HAS_NET_TIMER_STARTED(telescopeMouseTimer)
|
|
START_NET_TIMER(telescopeMouseTimer,TRUE)
|
|
CDEBUG1LN(DEBUG_SAFEHOUSE, "HAS_MOUSE_JUST_MOVED: START_NET_TIMER telescopeMouseTimer")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF HAS_NET_TIMER_STARTED(telescopeMouseTimer)
|
|
IF HAS_NET_TIMER_EXPIRED(telescopeMouseTimer, 200, TRUE)
|
|
RESET_NET_TIMER(telescopeMouseTimer)
|
|
CDEBUG1LN(DEBUG_SAFEHOUSE, "HAS_MOUSE_JUST_MOVED: HAS_NET_TIMER_EXPIRED = TRUE")
|
|
RETURN FALSE
|
|
ELSE
|
|
CDEBUG1LN(DEBUG_SAFEHOUSE, "HAS_MOUSE_JUST_MOVED: HAS_NET_TIMER_EXPIRED = FALSE")
|
|
RETURN TRUE
|
|
ENDIF
|
|
ELSE
|
|
CDEBUG1LN(DEBUG_SAFEHOUSE, "HAS_MOUSE_JUST_MOVED: HAS_NET_TIMER_STARTED = FALSE")
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
ENDFUNC
|
|
PROC RUN_FIRST_PERSON_CAMERA()
|
|
FLOAT fTemp//, fHyp, fSideX, fSideY
|
|
VECTOR vCamRot
|
|
//INT iSqueakCounter
|
|
INT right_stick_x, right_stick_y, iIgnore, left_stick_y
|
|
BOOL bPlayZoom = TRUE, bPlayTurn = TRUE
|
|
|
|
IF NOT IS_PLAYER_SWITCH_IN_PROGRESS()
|
|
IF IS_CAM_ACTIVE(cameraTelescope)
|
|
|
|
//REMAP_LODSCALE_RANGE_THIS_FRAME(1.7,4.7,1.0,1.8)
|
|
USE_SCRIPT_CAM_FOR_AMBIENT_POPULATION_ORIGIN_THIS_FRAME(TRUE, FALSE)
|
|
SET_AMBIENT_VEHICLE_RANGE_MULTIPLIER_THIS_FRAME(8.0) //this is a multiplier.. 50 is crazy I've changed this down to 2.0 if there are issues talk with James Broad.
|
|
|
|
// PRINTLN("GET_CAM_FOV(cameraTelescope)= ", GET_CAM_FOV(cameraTelescope))
|
|
// PRINTLN("fZoomChange = ", fZoomChange)
|
|
SET_SCRIPT_GFX_DRAW_ORDER(GFX_ORDER_BEFORE_HUD)
|
|
SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU(TRUE)
|
|
DRAW_SCALEFORM_MOVIE_FULLSCREEN(sfMovie, 0,0,0,255)
|
|
|
|
PRINTLN("POD: telescope: drawing scaleform - 1")
|
|
|
|
IF NOT IS_PAUSE_MENU_ACTIVE()
|
|
|
|
GET_CONTROL_VALUE_OF_ANALOGUE_STICKS_UNBOUND( iIgnore, left_stick_y, right_stick_x, right_stick_y)
|
|
|
|
IF NOT IS_LOOK_INVERTED()
|
|
right_stick_y *= -1
|
|
ENDIF
|
|
|
|
IF IS_USING_KEYBOARD_AND_MOUSE(PLAYER_CONTROL)
|
|
right_stick_x = FLOOR(GET_CONTROL_UNBOUND_NORMAL(FRONTEND_CONTROL, INPUT_SCALED_LOOK_LR) * 127.0)
|
|
right_stick_y = FLOOR(GET_CONTROL_UNBOUND_NORMAL(FRONTEND_CONTROL, INPUT_SCALED_LOOK_UD) * 127.0)
|
|
ENDIF
|
|
|
|
// invert the vertical
|
|
IF (right_stick_y > STICK_DEAD_ZONE)
|
|
OR (right_stick_y < (STICK_DEAD_ZONE * -1))
|
|
OR IS_USING_KEYBOARD_AND_MOUSE(PLAYER_CONTROL)
|
|
|
|
fTemp = TO_FLOAT(right_stick_y)
|
|
|
|
IF IS_USING_KEYBOARD_AND_MOUSE(PLAYER_CONTROL)
|
|
fTemp *= -MOUSE_CAMERA_SPEED_ADJUST
|
|
ELSE
|
|
fTemp *= fTemp
|
|
fTemp /= TO_FLOAT(128 - STICK_DEAD_ZONE) * TO_FLOAT(128 - STICK_DEAD_ZONE)
|
|
IF (right_stick_y < 0)
|
|
fTemp *= -1.0
|
|
ENDIF
|
|
ENDIF
|
|
|
|
fTemp *= fCamSpeed
|
|
|
|
fCamChangeY += fTemp
|
|
//fSideY = fTemp
|
|
IF HAS_SOUND_FINISHED(iSoundTurnVert)
|
|
AND NOT bHitVertLimit
|
|
AND NOT IS_USING_KEYBOARD_AND_MOUSE(PLAYER_CONTROL)
|
|
CDEBUG1LN(DEBUG_SAFEHOUSE, " - PLAY_SOUND_FROM_ENTITY iSoundTurn")
|
|
PLAY_SOUND_FROM_ENTITY(iSoundTurnVert, "Turn", oScope, sTelescopeSoundBank)
|
|
ENDIF
|
|
|
|
|
|
IF HAS_SOUND_FINISHED(iSoundTurnVert)
|
|
AND NOT bHitVertLimit
|
|
AND IS_USING_KEYBOARD_AND_MOUSE(PLAYER_CONTROL)
|
|
AND HAS_MOUSE_JUST_MOVED()
|
|
CDEBUG1LN(DEBUG_SAFEHOUSE, " - PLAY_SOUND_FROM_ENTITY iSoundTurn")
|
|
PLAY_SOUND_FROM_ENTITY(iSoundTurnVert, "Turn", oScope, sTelescopeSoundBank)
|
|
ENDIF
|
|
|
|
IF NOT HAS_SOUND_FINISHED(iSoundTurnVert)
|
|
AND IS_USING_KEYBOARD_AND_MOUSE(PLAYER_CONTROL)
|
|
AND NOT HAS_MOUSE_JUST_MOVED()
|
|
STOP_SOUND(iSoundTurnVert)
|
|
ENDIF
|
|
|
|
bPlayTurn = TRUE
|
|
|
|
IF (fCamChangeY < fMinYChange)
|
|
fCamChangeY = fMinYChange
|
|
bPlayTurn = FALSE
|
|
ENDIF
|
|
IF (fCamChangeY > fMaxYChange)
|
|
fCamChangeY = fMaxYChange
|
|
bPlayTurn = FALSE
|
|
ENDIF
|
|
IF fCamChangeY != fMinYChange
|
|
AND fCamChangeY != fMaxYChange
|
|
bHitVertLimit = FALSE
|
|
ENDIF
|
|
ELSE
|
|
IF NOT HAS_SOUND_FINISHED(iSoundTurnVert)
|
|
STOP_SOUND(iSoundTurnVert)
|
|
ENDIF
|
|
IF fCamChangeY != fMinYChange
|
|
AND fCamChangeY != fMaxYChange
|
|
bHitVertLimit = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF bPlayTurn
|
|
PLAY_SQUEAK(fTemp)
|
|
ELSE
|
|
IF NOT HAS_SOUND_FINISHED(iSoundTurnVert)
|
|
IF NOT bHitVertLimit
|
|
STOP_SOUND(iSoundTurnVert)
|
|
PLAY_SOUND_FROM_ENTITY(iSoundTurnLimit, "Turn_Limit", oScope, sTelescopeSoundBank)
|
|
CDEBUG1LN(DEBUG_SAFEHOUSE, GET_THIS_SCRIPT_NAME(), " - PLAY_SOUND_FROM_ENTITY iSoundTurnLimit")
|
|
bHitVertLimit = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF (right_stick_x > STICK_DEAD_ZONE)
|
|
OR (right_stick_x < (STICK_DEAD_ZONE * -1))
|
|
OR IS_USING_KEYBOARD_AND_MOUSE(PLAYER_CONTROL)
|
|
|
|
fTemp = TO_FLOAT(right_stick_x)
|
|
|
|
IF IS_USING_KEYBOARD_AND_MOUSE(PLAYER_CONTROL)
|
|
fTemp *= -MOUSE_CAMERA_SPEED_ADJUST
|
|
ELSE
|
|
fTemp *= fTemp
|
|
fTemp /= TO_FLOAT(128 - STICK_DEAD_ZONE) * TO_FLOAT(128 - STICK_DEAD_ZONE)
|
|
IF (right_stick_x > 0)
|
|
fTemp *= -1.0
|
|
ENDIF
|
|
ENDIF
|
|
|
|
fTemp *= fCamSpeed
|
|
|
|
fCamChangeX += fTemp
|
|
//fSideX = fTemp
|
|
|
|
|
|
IF HAS_SOUND_FINISHED(iSoundTurnHori)
|
|
AND NOT bHitHorizLimit
|
|
AND NOT IS_USING_KEYBOARD_AND_MOUSE(PLAYER_CONTROL)
|
|
// CDEBUG1LN(DEBUG_SAFEHOUSE, GET_THIS_SCRIPT_NAME(), " - PLAY_SOUND_FROM_ENTITY iSoundTurn")
|
|
CDEBUG1LN(DEBUG_SAFEHOUSE, " - PLAY_SOUND_FROM_ENTITY iSoundTurn")
|
|
PLAY_SOUND_FROM_ENTITY(iSoundTurnHori, "Turn", oScope, sTelescopeSoundBank)
|
|
ENDIF
|
|
|
|
|
|
IF HAS_SOUND_FINISHED(iSoundTurnHori)
|
|
AND NOT bHitHorizLimit
|
|
AND IS_USING_KEYBOARD_AND_MOUSE(PLAYER_CONTROL)
|
|
AND HAS_MOUSE_JUST_MOVED()
|
|
// CDEBUG1LN(DEBUG_SAFEHOUSE, GET_THIS_SCRIPT_NAME(), " - PLAY_SOUND_FROM_ENTITY iSoundTurn")
|
|
CDEBUG1LN(DEBUG_SAFEHOUSE, " - PLAY_SOUND_FROM_ENTITY iSoundTurn")
|
|
PLAY_SOUND_FROM_ENTITY(iSoundTurnHori, "Turn", oScope, sTelescopeSoundBank)
|
|
ENDIF
|
|
|
|
IF HAS_SOUND_FINISHED(iSoundTurnHori)
|
|
AND IS_USING_KEYBOARD_AND_MOUSE(PLAYER_CONTROL)
|
|
AND NOT HAS_MOUSE_JUST_MOVED()
|
|
STOP_SOUND(iSoundTurnHori)
|
|
ENDIF
|
|
|
|
bPlayTurn = TRUE
|
|
|
|
|
|
IF (fCamChangeX < fMinXChange)
|
|
fCamChangeX = fMinXChange
|
|
bPlayTurn = FALSE
|
|
ENDIF
|
|
IF (fCamChangeX > fMaxXChange)
|
|
fCamChangeX = fMaxXChange
|
|
bPlayTurn = FALSE
|
|
ENDIF
|
|
IF fCamChangeX != fMinXChange
|
|
AND fCamChangeX != fMaxXChange
|
|
bHitHorizLimit = FALSE
|
|
ENDIF
|
|
ELSE
|
|
IF NOT HAS_SOUND_FINISHED(iSoundTurnHori)
|
|
STOP_SOUND(iSoundTurnHori)
|
|
ENDIF
|
|
IF fCamChangeX != fMinXChange
|
|
AND fCamChangeX != fMaxXChange
|
|
bHitHorizLimit = FALSE
|
|
ENDIF
|
|
bPlayTurn = FALSE
|
|
ENDIF
|
|
|
|
IF bPlayTurn
|
|
PLAY_SQUEAK(fTemp)
|
|
ELSE
|
|
IF NOT HAS_SOUND_FINISHED(iSoundTurnHori)
|
|
IF NOT bHitHorizLimit
|
|
STOP_SOUND(iSoundTurnHori)
|
|
PLAY_SOUND_FROM_ENTITY(iSoundTurnLimit, "Turn_Limit", oScope, sTelescopeSoundBank)
|
|
|
|
CDEBUG1LN(DEBUG_SAFEHOUSE, GET_THIS_SCRIPT_NAME(), " - PLAY_SOUND_FROM_ENTITY iSoundTurnLimit")
|
|
bHitHorizLimit = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
// Zoom in/out
|
|
IF (left_stick_y > STICK_DEAD_ZONE)
|
|
OR (left_stick_y < (STICK_DEAD_ZONE * -1))
|
|
|
|
fTemp = TO_FLOAT(left_stick_y)
|
|
fTemp *= fTemp
|
|
fTemp /= TO_FLOAT(128 - STICK_DEAD_ZONE) * TO_FLOAT(128 - STICK_DEAD_ZONE)
|
|
fTemp *= fZoomSpeed
|
|
|
|
IF (left_stick_y < 0)
|
|
fTemp *= -1.0
|
|
ENDIF
|
|
IF HAS_SOUND_FINISHED(iSoundZoom)
|
|
AND NOT bHitZoomLimit
|
|
PLAY_SOUND_FROM_ENTITY(iSoundZoom, "Zoom", oScope, sTelescopeSoundBank)
|
|
ENDIF
|
|
bPlayZoom = TRUE
|
|
fZoomChange += fTemp
|
|
|
|
|
|
IF (fZoomChange < fMaxFOV)
|
|
fZoomChange = fMaxFOV
|
|
bPlayZoom = FALSE
|
|
PRINTLN("(fZoomChange < fMaxFOV)", GET_CAM_FOV(cameraTelescope))
|
|
ENDIF
|
|
IF (fZoomChange > fMinFOV)
|
|
fZoomChange = fMinFOV
|
|
bPlayZoom = FALSE
|
|
PRINTLN("(fZoomChange > fMinFOV)", GET_CAM_FOV(cameraTelescope))
|
|
ENDIF
|
|
IF fZoomChange != fMaxFOV
|
|
AND fZoomChange != fMinFOV
|
|
bHitZoomLimit = FALSE
|
|
ENDIF
|
|
ELSE
|
|
IF fZoomChange != fMaxFOV
|
|
AND fZoomChange != fMinFOV
|
|
bHitZoomLimit = FALSE
|
|
ENDIF
|
|
bPlayZoom = FALSE
|
|
ENDIF
|
|
|
|
IF NOT bPlayZoom
|
|
IF NOT HAS_SOUND_FINISHED(iSoundZoom)
|
|
IF NOT bHitZoomLimit
|
|
STOP_SOUND(iSoundZoom)
|
|
PLAY_SOUND_FROM_ENTITY(iSoundZoomLimit, "Zoom_Limit", oScope, sTelescopeSoundBank)
|
|
bHitZoomLimit = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_SCRIPT_RB)
|
|
fCamChangeX = 0
|
|
fCamChangeY = 0
|
|
fZoomChange = 0
|
|
ENDIF
|
|
|
|
vCamRot = vLookCamRot
|
|
vCamRot += <<fCamChangeY, 0, fCamChangeX>>
|
|
SET_CAM_ROT(cameraTelescope, vCamRot)
|
|
|
|
fCamSpeed = fZoomChange/(fSpeedMultiplier)
|
|
|
|
IF fZoomChange > 0
|
|
SET_CAM_FOV(cameraTelescope, fZoomChange)
|
|
ELSE
|
|
SET_CAM_FOV(cameraTelescope, fMinFOV)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
FUNC BOOL IS_TELESCOPE_CLEAR_OF_PEDS(VECTOR vPos)
|
|
PED_INDEX mPed[8]
|
|
INT iPeds = GET_PED_NEARBY_PEDS(PLAYER_PED_ID(), mPed)
|
|
|
|
IF iPeds > 0
|
|
INT i
|
|
FOR i = 0 TO 7
|
|
IF NOT IS_PED_INJURED(mPed[i])
|
|
IF IS_ENTITY_AT_COORD(mPed[i], vPos, <<0.5, 0.5, 1.0>>)
|
|
RETURN FALSE
|
|
ENDIF
|
|
ENDIF
|
|
ENDFOR
|
|
ENDIF
|
|
|
|
RETURN TRUE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL IS_AREA_CLEAR_OF_OBSTRUCTION(VECTOR vPos)
|
|
BOOL bReturn = TRUE
|
|
VEHICLE_INDEX vehTemp
|
|
// PED_INDEX pedTemp
|
|
|
|
vehTemp = GET_RANDOM_VEHICLE_IN_SPHERE(vPos, 3, DUMMY_MODEL_FOR_SCRIPT, VEHICLE_SEARCH_FLAG_RETURN_MISSION_VEHICLES|VEHICLE_SEARCH_FLAG_RETURN_RANDOM_VEHICLES)
|
|
IF DOES_ENTITY_EXIST(vehTemp)
|
|
bReturn = FALSE
|
|
ENDIF
|
|
|
|
vehTemp = GET_PLAYERS_LAST_VEHICLE()
|
|
IF DOES_ENTITY_EXIST(vehTemp)
|
|
IF IS_ENTITY_AT_COORD(vehTemp, vPos, <<3,3,3>>)
|
|
bReturn = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// pedTemp = GET_RANDOM_PED_AT_COORD(vPos, <<0.5,0.5,0.5>>, PEDTYPE_PLAYER_NETWORK)
|
|
// IF DOES_ENTITY_EXIST(pedTemp)
|
|
// bReturn = FALSE
|
|
// ENDIF
|
|
|
|
//Don't allow if another ped is at the telescope.
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
//IF IS_ANY_PED_IN_SPHERE(vPos+<<0, 0, 0.2>>, 0.25, PLAYER_PED_ID())
|
|
IF NOT IS_TELESCOPE_CLEAR_OF_PEDS(vPos)
|
|
bReturn = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// PRINTLN("@@@@@@@@@ IS_AREA_CLEAR_OF_OBSTRUCTION - NET = ", bReturn, " @@@@@@@@@")
|
|
RETURN bReturn
|
|
ENDFUNC
|
|
|
|
PROC INITIALISE_SOUNDS()
|
|
iSoundCoinDrop = GET_SOUND_ID()
|
|
iSoundCountdown = GET_SOUND_ID()
|
|
iSoundTimer = GET_SOUND_ID()
|
|
iSoundTurnVert = GET_SOUND_ID()
|
|
iSoundTurnHori = GET_SOUND_ID()
|
|
iSoundTurnLimit = GET_SOUND_ID()
|
|
iSoundZoom = GET_SOUND_ID()
|
|
iSoundZoomLimit = GET_SOUND_ID()
|
|
// iSoundEndUse = GET_SOUND_ID()
|
|
|
|
IF bPublicTelescope
|
|
IF IS_LOCAL_PLAYER_IN_ARENA_SPECTATOR_BOX()
|
|
sTelescopeSoundBank = "TELESCOPE_High_End"
|
|
ELSE
|
|
sTelescopeSoundBank = "TELESCOPE_COIN_OP"
|
|
ENDIF
|
|
ELSE
|
|
sTelescopeSoundBank = "TELESCOPE_DOMESTIC"
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC PLAY_COIN_DROP()
|
|
PRINTSTRING("PLAY_COIN_DROP") PRINTNL()
|
|
IF bPublicTelescope
|
|
PRINTSTRING("PLAY_COIN_DROP bPublicTelescope") PRINTNL()
|
|
|
|
IF NOT IS_LOCAL_PLAYER_IN_ARENA_SPECTATOR_BOX()
|
|
PLAY_SOUND_FROM_ENTITY(iSoundCoinDrop, "Insert_Coin", oScope, sTelescopeSoundBank)
|
|
|
|
PLAY_SOUND_FROM_ENTITY(iSoundTimer, "Timer", oScope, sTelescopeSoundBank)
|
|
ENDIF
|
|
|
|
IF g_bInMultiplayer
|
|
IF IS_LOCAL_PLAYER_IN_ARENA_SPECTATOR_BOX()
|
|
IF USE_SERVER_TRANSACTIONS()
|
|
INT iTransactionID
|
|
|
|
TRIGGER_FIRE_AND_FORGET_SERVICE_TRANSACTION(SERVICE_SPEND_ARENA_SPECTATOR_BOX, 2, iTransactionID)
|
|
|
|
g_cashTransactionData[iTransactionID].cashInfo.iItemHash = 0
|
|
ELSE
|
|
NETWORK_SPEND_ARENA_SPECTATOR_BOX(2, 0, FALSE, FALSE)
|
|
ENDIF
|
|
ELSE
|
|
GIVE_LOCAL_PLAYER_FM_CASH(-1,1,TRUE,0)
|
|
|
|
IF USE_SERVER_TRANSACTIONS()
|
|
INT iTransactionID
|
|
TRIGGER_FIRE_AND_FORGET_SERVICE_TRANSACTION(SERVICE_SPEND_TELESCOPE, 1, iTransactionID)
|
|
ELSE
|
|
NETWORK_SPENT_TELESCOPE(1)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
ELSE
|
|
DEBIT_BANK_ACCOUNT(GET_CURRENT_PLAYER_PED_ENUM(), BAAC_UNLOGGED_SMALL_ACTION, scopeCost)
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC PLAY_COUNTDOWN()
|
|
IF bPublicTelescope
|
|
STOP_SOUND(iSoundTimer)
|
|
PLAY_SOUND_FROM_ENTITY(iSoundCountdown, "10_Seconds", oScope, sTelescopeSoundBank)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC GET_CAM_POS_AND_ROTATION_FOR_SCOPE()
|
|
|
|
VECTOR vMin, vMax, vOffset
|
|
|
|
IF GET_ENTITY_MODEL(oScope) = PROP_TELESCOPE
|
|
OR GET_ENTITY_MODEL(oScope) = PROP_TELESCOPE_01
|
|
OR GET_ENTITY_MODEL(oScope) = INT_TO_ENUM(MODEL_NAMES, HASH("XS_PROP_ARENA_TELESCOPE_01"))
|
|
bPublicTelescope = TRUE
|
|
ENDIF
|
|
|
|
GET_MODEL_DIMENSIONS(GET_ENTITY_MODEL(oScope), vMin, vMax)
|
|
vLookCamRot = GET_ENTITY_ROTATION(oScope)
|
|
|
|
IF bPublicTelescope
|
|
|
|
sScopeContextHelp = "TELEHLP"
|
|
|
|
IF IS_LOCAL_PLAYER_IN_ARENA_SPECTATOR_BOX()
|
|
sScopeContextHelp = "TELEHLP2"
|
|
ENDIF
|
|
|
|
IF GET_ENTITY_MODEL(oScope) = PROP_TELESCOPE_01
|
|
OR GET_ENTITY_MODEL(oScope) = INT_TO_ENUM(MODEL_NAMES, HASH("XS_PROP_ARENA_TELESCOPE_01"))
|
|
vLookCamRot.z -= 180
|
|
vOffset = <<0, -vMax.y-0.5, vMax.z+0.5>>
|
|
ELSE
|
|
vOffset = <<0, vMax.y, vMax.z>>
|
|
ENDIF
|
|
ELSE
|
|
vLookCamRot.z -= 270
|
|
sScopeContextHelp = "TELEHOME"
|
|
vOffset = <<-fHomeTelescopeOffset, 0, (vMax.z+0.2)>>
|
|
ENDIF
|
|
|
|
IF vLookCamRot.z < 0
|
|
vLookCamRot.z += 360
|
|
ENDIF
|
|
|
|
vLookCamPos = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(oScope, vOffset)
|
|
ENDPROC
|
|
|
|
FUNC BOOL IS_PLAYER_TAKING_DAMAGE()
|
|
IF HAS_ENTITY_BEEN_DAMAGED_BY_ANY_OBJECT(PLAYER_PED_ID())
|
|
OR HAS_ENTITY_BEEN_DAMAGED_BY_ANY_PED(PLAYER_PED_ID())
|
|
OR HAS_ENTITY_BEEN_DAMAGED_BY_ANY_VEHICLE(PLAYER_PED_ID())
|
|
CLEAR_ENTITY_LAST_DAMAGE_ENTITY(PLAYER_PED_ID())
|
|
RETURN TRUE
|
|
ENDIF
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL IS_PLAYER_OK(PLAYER_INDEX thePlayer)
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
IF NOT IS_NET_PLAYER_OK(thePlayer)
|
|
OR IS_PED_RAGDOLL(PLAYER_PED_ID())
|
|
OR IS_PLAYER_TAKING_DAMAGE()
|
|
RETURN FALSE
|
|
ENDIF
|
|
RETURN TRUE
|
|
ELSE
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
IF IS_PED_RAGDOLL(PLAYER_PED_ID())
|
|
RETURN FALSE
|
|
ENDIF
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
ENDIF
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL DOES_PLAYER_HAVE_ENOUGH_MONEY()
|
|
IF g_bInMultiplayer
|
|
IF GET_ENTITY_MODEL(oScope) = INT_TO_ENUM(MODEL_NAMES, HASH("XS_PROP_ARENA_TELESCOPE_01"))
|
|
IF NETWORK_CAN_SPEND_MONEY(2, FALSE, FALSE, FALSE)
|
|
RETURN TRUE
|
|
ELSE
|
|
RETURN FALSE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF GET_PLAYER_FM_CASH(PLAYER_ID()) > 0
|
|
RETURN TRUE
|
|
ENDIF
|
|
ELSE
|
|
IF GET_TOTAL_CASH(GET_CURRENT_PLAYER_PED_ENUM()) > 0
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL HAS_PLAYER_CLEAR_LOS_TO_OBSERVATORY_SCOPE()
|
|
IF DOES_ENTITY_EXIST(oScope)
|
|
IF GET_ENTITY_MODEL(oScope) = PROP_TELESCOPE_01
|
|
OR GET_ENTITY_MODEL(oScope) = INT_TO_ENUM(MODEL_NAMES, HASH("XS_PROP_ARENA_TELESCOPE_01"))
|
|
IF HAS_ENTITY_CLEAR_LOS_TO_ENTITY(PLAYER_PED_ID(), oScope)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ELSE
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL CAN_PLAYER_USE_TELESCOPE()
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
//MP checks.
|
|
IF IS_BIT_SET(MPSpecGlobals.iBitSet, GLOBAL_SPEC_BS_USING_MP_TV_SEAT)
|
|
OR IS_BIT_SET(MPSpecGlobals.iBitSet, GLOBAL_SPEC_BS_APPROACHED_MP_TV_SEAT)
|
|
RETURN FALSE
|
|
ENDIF
|
|
IF IS_PLAYER_CRITICAL_TO_ANY_EVENT(PLAYER_ID())
|
|
AND NOT IS_PROPERTY_OFFICE(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iCurrentlyInsideProperty)
|
|
CDEBUG2LN(DEBUG_SAFEHOUSE, "CAN_PLAYER_USE_TELESCOPE: IS_PLAYER_CRITICAL_TO_ANY_EVENT = TRUE, returning FALSE")
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
IF IS_PLAYER_USING_BALLISTIC_EQUIPMENT(PLAYER_ID())
|
|
PRINTLN ("CAN_PLAYER_USE_TELESCOPE: IS_PLAYER_USING_BALLISTIC_EQUIPMENT = TRUE, returning FALSE")
|
|
RETURN FALSE
|
|
|
|
ENDIF
|
|
|
|
IF NOT HAS_PLAYER_FOUND_DOUBLE_ACTION_REVOLVER()
|
|
|
|
IF g_treasurehunt_is_player_close_to_first_clue
|
|
PRINTLN ("CAN_PLAYER_USE_TELESCOPE: HAS_PLAYER_FOUND_DOUBLE_ACTION_REVOLVER g_treasurehunt_is_player_close_to_first_clue , returning FALSE")
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
IF ARE_TELESCOPES_DISABLED()
|
|
PRINTLN ("CAN_PLAYER_USE_TELESCOPE: ARE_TELESCOPES_DISABLED = TRUE , returning FALSE")
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
IF GET_ENTITY_MODEL(oScope) = INT_TO_ENUM(MODEL_NAMES, HASH("XS_PROP_ARENA_TELESCOPE_01"))
|
|
IF NOT IS_HEADING_ACCEPTABLE_CORRECTED(GET_ENTITY_HEADING(PLAYER_PED_ID()), 0.0, 50.0)
|
|
PRINTLN ("CAN_PLAYER_USE_TELESCOPE: IS_HEADING_ACCEPTABLE_CORRECTED , returning FALSE")
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
IF g_bCelebrationScreenIsActive
|
|
PRINTLN ("CAN_PLAYER_USE_TELESCOPE: g_bCelebrationScreenIsActive , returning FALSE")
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
IF g_sMPTunables.bAW_DISABLE_TELESCOPE
|
|
PRINTLN ("CAN_PLAYER_USE_TELESCOPE: bAW_DISABLE_TELESCOPE , returning FALSE")
|
|
RETURN FALSE
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
//SP checks.
|
|
IF IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_ANIMAL)
|
|
OR IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_DIRECTOR)
|
|
RETURN FALSE
|
|
ENDIF
|
|
ENDIF
|
|
RETURN TRUE
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Check the player is alone in the trigger area
|
|
FUNC BOOL IS_PLAYER_ALONE_IN_AREA(VECTOR VecCoords, VECTOR locateSize)
|
|
|
|
PED_INDEX mPed[8]
|
|
INT iPeds = GET_PED_NEARBY_PEDS(PLAYER_PED_ID(), mPed)
|
|
|
|
IF iPeds > 0
|
|
INT i
|
|
FOR i = 0 TO 7
|
|
IF NOT IS_PED_INJURED(mPed[i])
|
|
IF IS_ENTITY_AT_COORD(mPed[i], VecCoords, <<locateSize.x,locateSize.y,locateSize.z>>)
|
|
// IF IS_ENTITY_IN_ANGLED_AREA(mPed[i], vTriggerArea1, vTriggerArea2, AREA_WIDTH)
|
|
RETURN FALSE
|
|
ENDIF
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
ENDIF
|
|
|
|
RETURN TRUE
|
|
|
|
ENDFUNC
|
|
|
|
PROC runTelescope()
|
|
//BOOL y, yy, yyy, yyyy
|
|
|
|
VECTOR buyPos//, triggerPos = GET_ENTITY_COORDS(oScope)
|
|
|
|
IF bPublicTelescope
|
|
IF GET_ENTITY_MODEL(oScope) = PROP_TELESCOPE
|
|
// Mountain
|
|
buyPos = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(oScope, <<0.02, -0.78, 0.0>>)
|
|
animEnter = "UPRIGHT_ENTER_FRONT"
|
|
animLoop = "UPRIGHT_IDLE"
|
|
animExit = "UPRIGHT_EXIT_FRONT"
|
|
// vScopeHeading = 0
|
|
ELIF GET_ENTITY_MODEL(oScope) = INT_TO_ENUM(MODEL_NAMES, HASH("XS_PROP_ARENA_TELESCOPE_01"))
|
|
buyPos = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(oScope, <<-0.03, 0.96, 0.0>>)
|
|
|
|
animEnter = "PUBLIC_ENTER_FRONT"
|
|
animLoop = "PUBLIC_IDLE"
|
|
animExit = "PUBLIC_EXIT_FRONT"
|
|
ELSE
|
|
// Observatory
|
|
IF g_bInMultiplayer
|
|
buyPos = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(oScope, <<-0.03, 0.96, 0.0>>)
|
|
ELSE
|
|
// SCRIPT_ASSERT("POD: NOT in multiplayer")
|
|
buyPos = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(oScope, <<0.2, 0.96, 0.0>>)
|
|
ENDIF
|
|
|
|
animEnter = "PUBLIC_ENTER_FRONT"
|
|
animLoop = "PUBLIC_IDLE"
|
|
animExit = "PUBLIC_EXIT_FRONT"
|
|
// vScopeHeading = -180
|
|
ENDIF
|
|
//#IF NOT USE_CLF_DLC
|
|
//#IF NOT USE_NRM_DLC
|
|
ELSE
|
|
PRINTLN("POD: TELESCOPES: private telescope")
|
|
// Franklin's apartment
|
|
// buyPos = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(oScope, <<1.14, -0.35, 0.0>>)
|
|
IF g_bInMultiplayer
|
|
// SCRIPT_ASSERT("POD: in multiplayer")
|
|
buyPos = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(oScope, <<1.14, 0.02, 0.0>>)
|
|
ELSE
|
|
#IF NOT USE_SP_DLC
|
|
// SCRIPT_ASSERT("POD: NOT in multiplayer")
|
|
buyPos = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(oScope, <<1.0, -0.4, 0.0>>)
|
|
#ENDIF
|
|
ENDIF
|
|
|
|
animEnter = "ENTER_FRONT"
|
|
animLoop = "IDLE"
|
|
animExit = "EXIT_FRONT"
|
|
// vScopeHeading = 90
|
|
// buyPos = GET_ANIM_INITIAL_OFFSET_POSITION(animDictEnter, "ENTER_FRONT", GET_ENTITY_COORDS(oScope), <<0,0,vScopeHeading>>)
|
|
|
|
#IF NOT USE_SP_DLC
|
|
FLOW_BITSET_IDS eFlowBitsetToQuery
|
|
INT iOffsetBitIndex
|
|
IF ENUM_TO_INT(LAUNCH_BIT_SH_INTRO_F_HILLS) <= 31
|
|
eFlowBitsetToQuery = FLOWBITSET_RESTART_FLOW_LAUNCHED_SCRIPTS_1
|
|
iOffsetBitIndex = ENUM_TO_INT(LAUNCH_BIT_SH_INTRO_F_HILLS)
|
|
ELSE
|
|
eFlowBitsetToQuery = FLOWBITSET_RESTART_FLOW_LAUNCHED_SCRIPTS_2
|
|
iOffsetBitIndex = ENUM_TO_INT(LAUNCH_BIT_SH_INTRO_F_HILLS) - 31
|
|
ENDIF
|
|
|
|
IF IS_BIT_SET(g_savedGlobals.sFlow.controls.bitsetIDs[eFlowBitsetToQuery], iOffsetBitIndex)
|
|
PRINTLN("POD: TELESCOPES: iOffsetBitIndex exiting")
|
|
EXIT
|
|
ENDIF
|
|
#endif
|
|
ENDIF
|
|
|
|
VECTOR locateSize = <<1.2,1.2,1.2>>
|
|
IF IS_PROPERTY_OFFICE(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iCurrentlyInsideProperty)
|
|
locateSize = <<0.8,0.8,0.8>>
|
|
ENDIF
|
|
|
|
IF GET_ENTITY_MODEL(oScope) = INT_TO_ENUM(MODEL_NAMES, HASH("XS_PROP_ARENA_TELESCOPE_01"))
|
|
locateSize = <<0.8,0.7, 1.0>>
|
|
ENDIF
|
|
|
|
//PRINTSTRING("Telescop coords:") PRINTVECTOR(GET_ENTITY_COORDS(oScope)) PRINTNL()
|
|
IF bPublicTelescope
|
|
IF iTelescopeStartTime > 0
|
|
IF GET_GAME_TIMER() > (iTelescopeStartTime+(TELESCOPE_TIME-9500))
|
|
IF HAS_SOUND_FINISHED(iSoundCountdown)
|
|
IF GET_GAME_TIMER() < (iTelescopeStartTime+TELESCOPE_TIME)
|
|
PLAY_COUNTDOWN()
|
|
ELSE
|
|
IF scopeStage <> grabPlayer
|
|
IF GET_SCRIPT_TASK_STATUS(PLAYER_PED_ID(), SCRIPT_TASK_PED_SLIDE_TO_COORD) = FINISHED_TASK
|
|
iTelescopeStartTime = -1
|
|
ENDIF
|
|
ENDIF
|
|
STOP_SOUND(iSoundTimer)
|
|
STOP_SOUND(iSoundTurnVert)
|
|
STOP_SOUND(iSoundTurnHori)
|
|
STOP_SOUND(iSoundZoom)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
IF IS_PROPERTY_OFFICE(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iCurrentlyInsideProperty)
|
|
IF NOT DOES_ENTITY_EXIST(oBlinds)
|
|
// CDEBUG1LN(DEBUG_SAFEHOUSE, "grabbing new blinds")
|
|
oBlinds = GET_CLOSEST_OBJECT_OF_TYPE(GET_ENTITY_COORDS(oScope), 20, INT_TO_ENUM(MODEL_NAMES, HASH("EX_prop_office_louvres")), FALSE)
|
|
ENDIF
|
|
ENDIF
|
|
PRINTLN("POD: TELESCOPES: scopeStage", scopeStage)
|
|
|
|
SWITCH scopeStage
|
|
|
|
CASE playerOutOfRange
|
|
|
|
IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), buyPos, <<locateSize.x*2,locateSize.y*2,locateSize.z>>)
|
|
IF GET_INTERIOR_FROM_ENTITY(PLAYER_PED_ID()) = GET_INTERIOR_FROM_ENTITY(oScope)
|
|
// REQUEST_AMBIENT_AUDIO_BANK("TELESCOPES")
|
|
IF bPublicTelescope
|
|
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("TELECSH")
|
|
INT iCost
|
|
|
|
iCost = 0
|
|
|
|
IF GET_ENTITY_MODEL(oScope) = INT_TO_ENUM(MODEL_NAMES, HASH("XS_PROP_ARENA_TELESCOPE_01"))
|
|
iCost = 1
|
|
ENDIF
|
|
|
|
IF GET_TOTAL_CASH(GET_CURRENT_PLAYER_PED_ENUM()) > iCost
|
|
OR GET_GAME_TIMER() < (iTelescopeStartTime+TELESCOPE_TIME)
|
|
scopeStage = waitForPlayer
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
scopeStage = waitForPlayer
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE waitForPlayer
|
|
|
|
IF IS_BIT_SET(iBoolsBitSet, iBS_STORE_ACTIVE)
|
|
IF NOT g_sShopSettings.bProcessStoreAlert
|
|
CLEAR_BIT(iBoolsBitSet, iBS_STORE_ACTIVE)
|
|
PRINTLN("ob_telescope: NET_SET_PLAYER_CONTROL- A")
|
|
//NET_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
|
PRINTLN("@@@@@@@@@@ --> CONTACT REQUESTS - LAUNCH_STORE_CASH_ALERT - CLEARED")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// IF NOT MPGlobalsAmbience.bUsingTelescope
|
|
// OR NOT NETWORK_IS_GAME_IN_PROGRESS()
|
|
IF CAN_PLAYER_START_CUTSCENE()
|
|
AND IS_PLAYER_OK(PLAYER_ID())
|
|
|
|
//y = IS_ENTITY_AT_COORD(PLAYER_PED_ID(), buyPos, <<locateSize.x,locateSize.y,locateSize.z>>)
|
|
//yy = IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
//yyy = IS_AREA_CLEAR_OF_OBSTRUCTION(buyPos)
|
|
//yyyy =GET_INTERIOR_FROM_ENTITY(PLAYER_PED_ID()) = GET_INTERIOR_FROM_ENTITY(oScope)
|
|
|
|
//PRINTSTRING("Paul - bools ") PRINTBOOL(y)PRINTBOOL(yy)PRINTBOOL(yyy)PRINTBOOL(yyyy) PRINTNL()
|
|
IS_ENTITY_AT_COORD(PLAYER_PED_ID(), buyPos, <<0.5, 0.5, 1.0>>)
|
|
|
|
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), buyPos, <<locateSize.x,locateSize.y,locateSize.z>>)
|
|
AND NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
AND IS_AREA_CLEAR_OF_OBSTRUCTION(buyPos)
|
|
AND GET_INTERIOR_FROM_ENTITY(PLAYER_PED_ID()) = GET_INTERIOR_FROM_ENTITY(oScope)
|
|
AND HAS_PLAYER_CLEAR_LOS_TO_OBSERVATORY_SCOPE()
|
|
AND CAN_PLAYER_USE_TELESCOPE()
|
|
AND NOT scopeFallen
|
|
AND IS_PLAYER_ALONE_IN_AREA(buyPos, locateSize)
|
|
|
|
IF DOES_PLAYER_HAVE_ENOUGH_MONEY()
|
|
OR GET_GAME_TIMER() < (iTelescopeStartTime+TELESCOPE_TIME)
|
|
OR NOT bPublicTelescope
|
|
|
|
IF IS_PLAYER_PLAYING(PLAYER_ID())
|
|
AND IS_PLAYER_CONTROL_ON(PLAYER_ID())
|
|
|
|
// IF NOT IS_PLAYER_FREE_AIMING(PLAYER_ID())
|
|
// AND NOT IS_PLAYER_TARGETTING_ANYTHING(PLAYER_ID())
|
|
|
|
IF bPublicTelescope
|
|
IF GET_GAME_TIMER() < (iTelescopeStartTime+TELESCOPE_TIME)
|
|
sScopeContextHelp = "TELEHOME"
|
|
ELSE
|
|
IF ARE_STRINGS_EQUAL(sScopeContextHelp, "TELEHOME")
|
|
// PRINTSTRING("RELEASE CONTEXT 1") PRINTNL()
|
|
RELEASE_CONTEXT_INTENTION(iContextButtonIntention)
|
|
ENDIF
|
|
sScopeContextHelp = "TELEHLP"
|
|
|
|
IF IS_LOCAL_PLAYER_IN_ARENA_SPECTATOR_BOX()
|
|
sScopeContextHelp = "TELEHLP2"
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), buyPos, locateSize)
|
|
AND NOT IS_SCRIPT_HUD_DISPLAYING(HUDPART_TRANSITIONHUD)
|
|
AND NOT IS_PAUSE_MENU_ACTIVE_EX()
|
|
AND ((GET_GAME_TIMER() < (iTelescopeStartTime+TELESCOPE_TIME)) OR (iTelescopeStartTime = -1))
|
|
AND NOT IS_ENTITY_PLAYING_ANIM(PLAYER_PED_ID(), animDictExit, animExit)
|
|
IF iContextButtonIntention = NEW_CONTEXT_INTENTION
|
|
REGISTER_CONTEXT_INTENTION(iContextButtonIntention, CP_MEDIUM_PRIORITY, sScopeContextHelp)
|
|
ENDIF
|
|
|
|
BOOL bDontRequestAudio
|
|
|
|
IF GET_ENTITY_MODEL(oScope) = INT_TO_ENUM(MODEL_NAMES, HASH("XS_PROP_ARENA_TELESCOPE_01"))
|
|
bDontRequestAudio = TRUE
|
|
ENDIF
|
|
|
|
IF HAS_CONTEXT_BUTTON_TRIGGERED(iContextButtonIntention)
|
|
AND (bDontRequestAudio OR REQUEST_AMBIENT_AUDIO_BANK("TELESCOPES"))
|
|
eStoredHelmet = GET_PED_COMP_ITEM_CURRENT_MP(PLAYER_PED_ID(), COMP_TYPE_PROPS, ENUM_TO_INT(ANCHOR_HEAD))
|
|
eStoredMask = GET_PED_COMP_ITEM_CURRENT_MP(PLAYER_PED_ID(), COMP_TYPE_BERD)
|
|
IF GET_FOLLOW_PED_CAM_VIEW_MODE() = CAM_VIEW_MODE_FIRST_PERSON
|
|
PRINTLN("POD: TELESCOPE: IN FIRST PERSON")
|
|
ELSE
|
|
PRINTLN("POD: TELESCOPE: NOT IN FIRST PERSON")
|
|
ENDIF
|
|
CLEAR_HELP()
|
|
GET_CAM_POS_AND_ROTATION_FOR_SCOPE()
|
|
IF NOT g_bInMultiplayer
|
|
IF NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<14.536638,529.315369,173.628204>>, <<12.656813,528.802307,175.878204>>, 2)
|
|
VECTOR tempHeadingVector
|
|
tempHeadingVector = <<0, 0, GET_ENTITY_HEADING(oScope)>>
|
|
|
|
VECTOR vTempPos
|
|
vTempPos = GET_ANIM_INITIAL_OFFSET_POSITION( animDictEnter, animEnter, GET_ENTITY_COORDS(oScope), tempHeadingVector )
|
|
VECTOR vTempRotation
|
|
vTempRotation = GET_ANIM_INITIAL_OFFSET_ROTATION( animDictEnter, animEnter, GET_ENTITY_COORDS(oScope), tempHeadingVector )
|
|
TASK_GO_STRAIGHT_TO_COORD(PLAYER_PED_ID(), vTempPos, PEDMOVE_WALK, DEFAULT_TIME_BEFORE_WARP, vTempRotation.Z, 0.05)
|
|
PRINTLN("POD: TELESCOPE: TASK_GO_STRAIGHT_TO_COORD")
|
|
ELSE
|
|
SET_MULTIHEAD_SAFE(TRUE,TRUE) //B* 2223476
|
|
SET_UP_CAMERA()
|
|
RUN_FIRST_PERSON_CAMERA()
|
|
PRINTLN("POD: TELESCOPE: SET_UP_CAMERA 1")
|
|
ENDIF
|
|
STOP_FIRE_IN_RANGE(buyPos, 10)
|
|
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
|
|
g_bCurrentlyUsingTelescope = TRUE // Prevent Chop running off when using a telescope
|
|
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
|
|
ELSE
|
|
VECTOR tempHeadingVector
|
|
tempHeadingVector = <<0, 0, GET_ENTITY_HEADING(oScope)>>
|
|
|
|
VECTOR vTempPos
|
|
vTempPos = GET_ANIM_INITIAL_OFFSET_POSITION( animDictEnter, animEnter, GET_ENTITY_COORDS(oScope), tempHeadingVector )
|
|
VECTOR vTempRotation
|
|
vTempRotation = GET_ANIM_INITIAL_OFFSET_ROTATION( animDictEnter, animEnter, GET_ENTITY_COORDS(oScope), tempHeadingVector )
|
|
SET_MULTIHEAD_SAFE(TRUE,TRUE)
|
|
TASK_GO_STRAIGHT_TO_COORD(PLAYER_PED_ID(), vTempPos, PEDMOVE_WALK, DEFAULT_TIME_BEFORE_WARP, vTempRotation.Z, 0.05)
|
|
// SET_ENTITY_NO_COLLISION_ENTITY(PLAYER_PED_ID(), oScope, TRUE)
|
|
// TASK_GO_STRAIGHT_TO_COORD(PLAYER_PED_ID(), buyPos, PEDMOVE_WALK, DEFAULT_TIME_BEFORE_WARP, GET_ENTITY_HEADING(oScope) + vScopeHeading, 0.1)
|
|
DISABLE_INTERACTION_MENU()
|
|
NET_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, NSPC_CAN_BE_TARGETTED | NSPC_ALLOW_PLAYER_DAMAGE)
|
|
MPGlobalsAmbience.bUsingTelescope = TRUE
|
|
ENDIF
|
|
|
|
IF GET_FOLLOW_PED_CAM_VIEW_MODE() = CAM_VIEW_MODE_FIRST_PERSON
|
|
SET_PED_DESIRED_HEADING(PLAYER_PED_ID(), GET_HEADING_BETWEEN_VECTORS_2D(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(oScope)))
|
|
PRINTLN("POD: SET_PED_DESIRED_HEADING: ", GET_HEADING_BETWEEN_VECTORS_2D(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(oScope)))
|
|
FORCE_PED_MOTION_STATE(PLAYER_PED_ID(), MS_AIMING)
|
|
SET_PED_RESET_FLAG(PLAYER_PED_ID(), PRF_ForcePedToStrafe, TRUE)
|
|
ENDIF
|
|
|
|
GET_CURRENT_PED_WEAPON(PLAYER_PED_ID(), storedWeapon)
|
|
SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(), WEAPONTYPE_UNARMED, TRUE)
|
|
/*OPEN_SEQUENCE_TASK(seq)
|
|
TASK_PED_SLIDE_TO_COORD_HDG_RATE(NULL, buyPos, vLookCamRot.z, 100.0, 270.0)
|
|
TASK_PLAY_ANIM(NULL, animDictEnter, animEnter, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_HIDE_WEAPON)
|
|
//TASK_PLAY_ANIM(NULL, animDictEnter, "IDLE", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_HIDE_WEAPON)
|
|
CLOSE_SEQUENCE_TASK(seq)
|
|
TASK_PERFORM_SEQUENCE(PLAYER_PED_ID(), seq)
|
|
PRINTSTRING("PAUL - FORCE_PED_AI_AND_ANIMATION_UPDATE waitForPlayer") PRINTNL()
|
|
FORCE_PED_AI_AND_ANIMATION_UPDATE(PLAYER_PED_ID())
|
|
CLEAR_SEQUENCE_TASK(seq)*/
|
|
|
|
RELEASE_CONTEXT_INTENTION(iContextButtonIntention)
|
|
SET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID(), FALSE)
|
|
SETTIMERA(0)
|
|
scopeStage = grabPlayer
|
|
|
|
INIT_PC_SCRIPTED_CONTROLS("Ob_Telescope")
|
|
bSetupPCControls = TRUE
|
|
//WAIT(100000)
|
|
ENDIF
|
|
ELSE
|
|
PRINTSTRING("RELEASE CONTEXT 4") PRINTNL()
|
|
RELEASE_CONTEXT_INTENTION(iContextButtonIntention)
|
|
ENDIF
|
|
// ELSE
|
|
// RELEASE_CONTEXT_INTENTION(iContextButtonIntention)
|
|
// ENDIF
|
|
ELSE
|
|
//PRINTSTRING("RELEASE CONTEXT 5") PRINTNL()
|
|
RELEASE_CONTEXT_INTENTION(iContextButtonIntention)
|
|
ENDIF
|
|
ELSE
|
|
IF NOT NETWORK_IS_GAME_IN_PROGRESS()
|
|
// PRINTSTRING("RELEASE CONTEXT 6") PRINTNL()
|
|
RELEASE_CONTEXT_INTENTION(iContextButtonIntention)
|
|
PRINT_HELP("TELECSH")
|
|
ELSE
|
|
IF iContextButtonIntention = NEW_CONTEXT_INTENTION
|
|
IF IS_LOCAL_PLAYER_IN_ARENA_SPECTATOR_BOX()
|
|
REGISTER_CONTEXT_INTENTION(iContextButtonIntention, CP_MEDIUM_PRIORITY, "TELECSH")
|
|
ELSE
|
|
REGISTER_CONTEXT_INTENTION(iContextButtonIntention, CP_MEDIUM_PRIORITY, "TELEHLP")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF HAS_CONTEXT_BUTTON_TRIGGERED(iContextButtonIntention)
|
|
AND NOT IS_LOCAL_PLAYER_IN_ARENA_SPECTATOR_BOX()
|
|
IF NOT IS_BIT_SET(iBoolsBitSet, iBS_STORE_ACTIVE)
|
|
LAUNCH_STORE_CASH_ALERT()
|
|
SET_BIT(iBoolsBitSet, iBS_STORE_ACTIVE)
|
|
//NET_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, FALSE)
|
|
PRINTLN("@@@@@@@@@@ --> CONTACT REQUESTS - LAUNCH_STORE_CASH_ALERT - CALLED")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
#IF IS_DEBUG_BUILD
|
|
IF NOT IS_PLAYER_ALONE_IN_AREA(buyPos, locateSize)
|
|
CDEBUG1LN(DEBUG_SAFEHOUSE, "waitForPlayer: IS_PLAYER_ALONE_IN_AREA = FALSE")
|
|
ENDIF
|
|
#ENDIF
|
|
//PRINTSTRING("RELEASE CONTEXT 7") PRINTNL()
|
|
RELEASE_CONTEXT_INTENTION(iContextButtonIntention)
|
|
ENDIF
|
|
ELSE
|
|
//PRINTSTRING("RELEASE CONTEXT 8") PRINTNL()
|
|
RELEASE_CONTEXT_INTENTION(iContextButtonIntention)
|
|
ENDIF
|
|
// ELSE
|
|
// //PRINTSTRING("RELEASE CONTEXT 9") PRINTNL()
|
|
// RELEASE_CONTEXT_INTENTION(iContextButtonIntention)
|
|
// ENDIF
|
|
BREAK
|
|
|
|
CASE grabPlayer
|
|
IF IS_PLAYER_OK(PLAYER_ID()) // CDM- Fix for focus not clearing when dead
|
|
IF IS_LOCAL_PLAYER_IN_ARENA_SPECTATOR_BOX()
|
|
sfMovie = REQUEST_SCALEFORM_MOVIE("observatory_scope")
|
|
|
|
PRINTLN("POD: telescope: requesting scaleform")
|
|
|
|
WHILE (NOT HAS_SCALEFORM_MOVIE_LOADED(sfMovie))
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
PRINTLN("POD: telescope: scaleform loaded")
|
|
ENDIF
|
|
|
|
IF NOT g_bInMultiplayer
|
|
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<14.536638,529.315369,173.628204>>, <<12.656813,528.802307,175.878204>>, 2)
|
|
PRINTLN("POD: TELESCOPE: SET_UP_CAMERA 2")
|
|
RUN_FIRST_PERSON_CAMERA()
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF GET_FOLLOW_PED_CAM_VIEW_MODE() = CAM_VIEW_MODE_FIRST_PERSON
|
|
SET_PED_DESIRED_HEADING(PLAYER_PED_ID(), GET_HEADING_BETWEEN_VECTORS_2D(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(oScope)))
|
|
SET_PED_RESET_FLAG(PLAYER_PED_ID(), PRF_ForcePedToStrafe, TRUE)
|
|
ENDIF
|
|
|
|
|
|
IF GET_SCRIPT_TASK_STATUS(PLAYER_PED_ID(), SCRIPT_TASK_GO_STRAIGHT_TO_COORD) = FINISHED_TASK
|
|
AND GET_SCRIPT_TASK_STATUS(PLAYER_PED_ID(), SCRIPT_TASK_GO_STRAIGHT_TO_COORD) != WAITING_TO_START_TASK
|
|
AND GET_SCRIPT_TASK_STATUS(PLAYER_PED_ID(), SCRIPT_TASK_GO_STRAIGHT_TO_COORD) != PERFORMING_TASK
|
|
//OR NOT g_bInMultiplayer
|
|
//AND TIMERA() > 2500
|
|
DISABLE_SELECTOR_THIS_FRAME()
|
|
PRINTLN("POD: TELESCOPE: FINISHED APPRAOCH SUCCESSFULLY")
|
|
|
|
//SET_ENTITY_COORDS_GROUNDED(PLAYER_PED_ID(), buyPos)//, vLookCamRot.z, 100.0, 270.0)
|
|
//SET_ENTITY_HEADING(PLAYER_PED_ID(), vLookCamRot.z)
|
|
// IF NOT g_bInMultiplayer
|
|
// TASK_PLAY_ANIM(PLAYER_PED_ID(), animDictEnter, animLoop, REALLY_SLOW_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_HIDE_WEAPON|AF_LOOPING)
|
|
// scopeStage = playEnter
|
|
// ELSE
|
|
IF NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<14.536638,529.315369,173.628204>>, <<12.656813,528.802307,175.878204>>, 2)
|
|
TASK_PLAY_ANIM_ADVANCED(PLAYER_PED_ID(), animDictEnter, animEnter, GET_ENTITY_COORDS(oScope), GET_ENTITY_ROTATION(oScope),REALLY_SLOW_BLEND_IN, 0.1, -1, AF_HIDE_WEAPON|AF_EXTRACT_INITIAL_OFFSET|AF_USE_MOVER_EXTRACTION)//|AF_TURN_OFF_COLLISION)
|
|
ENDIF
|
|
scopeStage = playEnter
|
|
// ENDIF
|
|
PRINTSTRING("PAUL - FORCE_PED_AI_AND_ANIMATION_UPDATE grabPlayer") PRINTNL()
|
|
//FORCE_PED_AI_AND_ANIMATION_UPDATE(PLAYER_PED_ID())
|
|
|
|
|
|
IF g_bInMultiplayer
|
|
PRINTLN("ob_telescope: removing masks")
|
|
|
|
SET_PED_COMP_ITEM_CURRENT_MP(PLAYER_PED_ID(), COMP_TYPE_BERD, BERD_FMM_0_0, FALSE)
|
|
IF IS_ITEM_A_HELMET(GET_ENTITY_MODEL(PLAYER_PED_ID()), COMP_TYPE_PROPS, GET_PED_COMP_ITEM_CURRENT_MP(PLAYER_PED_ID(), COMP_TYPE_PROPS, ENUM_TO_INT(ANCHOR_HEAD)))
|
|
PRINTLN("ob_telescope: removing helmet")
|
|
CLEAR_PED_PROP(PLAYER_PED_ID(), ANCHOR_HEAD)
|
|
ENDIF
|
|
REMOVE_MP_HEIST_GEAR(PLAYER_PED_ID(), HEIST_GEAR_NIGHTVISION)
|
|
IF IS_PED_WEARING_PILOT_SUIT(PLAYER_PED_ID(), PED_COMP_TEETH)
|
|
PRINTLN("ob_telescope: removing pilot suit")
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_TEETH, 0, 0)
|
|
ENDIF
|
|
IF IS_PED_WEARING_HAZ_HOOD_UP(PLAYER_PED_ID())
|
|
SWAP_CHEM_SUIT_HOOD_FOR_ALTERNATE(PLAYER_PED_ID())
|
|
bSwappedChemSuit = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
ELIF TIMERA() > 2500
|
|
AND NOT IS_LOCAL_PLAYER_IN_ARENA_SPECTATOR_BOX()
|
|
CLEAR_PED_TASKS(PLAYER_PED_ID())
|
|
IF NOT g_bInMultiplayer
|
|
PRINTLN("POD: TELESCOPE: FAILED APPRAOCH ")
|
|
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
|
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
|
|
g_bCurrentlyUsingTelescope = FALSE
|
|
ELSE
|
|
ENABLE_INTERACTION_MENU()
|
|
PRINTLN("ob_telescope: NET_SET_PLAYER_CONTROL- B")
|
|
NET_SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
|
|
IF bSetupPCControls
|
|
SHUTDOWN_PC_SCRIPTED_CONTROLS()
|
|
bSetupPCControls = FALSE
|
|
ENDIF
|
|
SET_MULTIHEAD_SAFE(FALSE)
|
|
MPGlobalsAmbience.bUsingTelescope = FALSE
|
|
ENDIF
|
|
SET_MULTIHEAD_SAFE(FALSE)
|
|
SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(), storedWeapon, TRUE)
|
|
scopeStage = waitForPlayer
|
|
ENDIF
|
|
ELSE
|
|
CLEAR_PED_TASKS(PLAYER_PED_ID())
|
|
IF NOT g_bInMultiplayer
|
|
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
|
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
|
|
g_bCurrentlyUsingTelescope = FALSE
|
|
ELSE
|
|
ENABLE_INTERACTION_MENU()
|
|
PRINTLN("ob_telescope: NET_SET_PLAYER_CONTROL- C")
|
|
NET_SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
|
|
SET_MULTIHEAD_SAFE(FALSE)
|
|
MPGlobalsAmbience.bUsingTelescope = FALSE
|
|
ENDIF
|
|
IF bSetupPCControls
|
|
SHUTDOWN_PC_SCRIPTED_CONTROLS()
|
|
bSetupPCControls = FALSE
|
|
ENDIF
|
|
SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(), storedWeapon, TRUE)
|
|
scopeStage = waitForPlayer
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE playEnter
|
|
IF GET_SCRIPT_TASK_STATUS(PLAYER_PED_ID(), SCRIPT_TASK_PLAY_ANIM) = FINISHED_TASK
|
|
AND GET_SCRIPT_TASK_STATUS(PLAYER_PED_ID(), SCRIPT_TASK_PLAY_ANIM) != WAITING_TO_START_TASK
|
|
AND GET_SCRIPT_TASK_STATUS(PLAYER_PED_ID(), SCRIPT_TASK_PLAY_ANIM) != PERFORMING_TASK
|
|
|
|
//IF g_bInMultiplayer
|
|
IF NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<14.536638,529.315369,173.628204>>, <<12.656813,528.802307,175.878204>>, 2)
|
|
TASK_PLAY_ANIM_ADVANCED(PLAYER_PED_ID(), animDictEnter, animLoop, GET_ENTITY_COORDS(oScope), GET_ENTITY_ROTATION(oScope),REALLY_SLOW_BLEND_IN, 0.1, -1, AF_HIDE_WEAPON|AF_LOOPING|AF_EXTRACT_INITIAL_OFFSET|AF_USE_MOVER_EXTRACTION)//|AF_TURN_OFF_COLLISION)
|
|
ENDIF
|
|
|
|
//ENDIF
|
|
|
|
|
|
IF bPublicTelescope
|
|
IF iTelescopeStartTime = -1
|
|
IF NOT IS_LOCAL_PLAYER_IN_ARENA_SPECTATOR_BOX()
|
|
iTelescopeStartTime = GET_GAME_TIMER()
|
|
ENDIF
|
|
|
|
PLAY_COIN_DROP()
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//IF NOT g_bInMultiplayer
|
|
IF NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<14.536638,529.315369,173.628204>>, <<12.656813,528.802307,175.878204>>, 2)
|
|
PRINTLN("POD: TELESCOPE: SET_UP_CAMERA 2")
|
|
SET_UP_CAMERA()
|
|
ENDIF
|
|
//ENDIF
|
|
|
|
IF IS_LOCAL_PLAYER_IN_ARENA_SPECTATOR_BOX()
|
|
INCREMENT_MP_INT_CHARACTER_AWARD(MP_AWARD_THROUGH_A_LENS)
|
|
SET_LOCAL_PLAYER_ARENA_GARAGE_TROPHY_LENS_DATA()
|
|
ENDIF
|
|
|
|
RUN_FIRST_PERSON_CAMERA()
|
|
IF NOT g_bInMultiplayer
|
|
CLEAR_AREA_OF_PROJECTILES(buyPos, 10)
|
|
ENDIF
|
|
scopeStage = runScope
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE runScope
|
|
IF IS_LOCAL_PLAYER_IN_ARENA_SPECTATOR_BOX()
|
|
AND g_bCelebrationScreenIsActive
|
|
PRINTLN("ob_telescope: scopeStage = resetScope")
|
|
|
|
scopeStage = resetScope
|
|
|
|
EXIT
|
|
ENDIF
|
|
|
|
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_PAUSE_ALTERNATE)
|
|
|
|
//IF NOT IS_PED_RAGDOLL(PLAYER_PED_ID())
|
|
IF IS_PLAYER_OK(PLAYER_ID()) // CDM- Fix for focus not clearing when dead
|
|
AND IS_ENTITY_AT_COORD(PLAYER_PED_ID(), buyPos, << 1.0, 1.0, 1.5 >>)
|
|
DISABLE_SELECTOR_THIS_FRAME()
|
|
RUN_FIRST_PERSON_CAMERA()
|
|
|
|
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("TELEUSE")
|
|
IF IS_APARTMENT_OWNER_IN_PREVIEW_MODE()
|
|
PRINT_HELP_NO_SOUND("TELEUSE")
|
|
ELSE
|
|
PRINT_HELP_FOREVER("TELEUSE")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_CONTEXT)
|
|
OR IS_DISABLED_CONTROL_JUST_RELEASED(FRONTEND_CONTROL, INPUT_FRONTEND_PAUSE_ALTERNATE)
|
|
OR scopeFallen
|
|
scopeStage = resetScope
|
|
ELIF bPublicTelescope
|
|
AND NOT IS_LOCAL_PLAYER_IN_ARENA_SPECTATOR_BOX()
|
|
IF (GET_GAME_TIMER() > (iTelescopeStartTime+TELESCOPE_TIME))
|
|
scopeStage = resetScope
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT bRespottedPlayer
|
|
//Removed, as we see the character move.
|
|
//GET_GROUND_Z_FOR_3D_COORD(buyPos, buyPos.z)
|
|
//SET_ENTITY_COORDS(PLAYER_PED_ID(), buyPos)
|
|
//SET_ENTITY_HEADING(PLAYER_PED_ID(), vLookCamRot.z)
|
|
//TASK_PLAY_ANIM(PLAYER_PED_ID(), animDictEnter, "IDLE", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_HIDE_WEAPON|AF_LOOPING)
|
|
//FORCE_PED_AI_AND_ANIMATION_UPDATE(PLAYER_PED_ID())
|
|
|
|
bRespottedPlayer = TRUE
|
|
ENDIF
|
|
ELSE
|
|
CLEAN_UP_CAMERA()
|
|
CLEAR_PED_TASKS(PLAYER_PED_ID())
|
|
IF NOT g_bInMultiplayer
|
|
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
|
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
|
|
g_bCurrentlyUsingTelescope = FALSE
|
|
ELSE
|
|
ENABLE_INTERACTION_MENU()
|
|
PRINTLN("ob_telescope: NET_SET_PLAYER_CONTROL- D")
|
|
NET_SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
|
|
SET_MULTIHEAD_SAFE(FALSE)
|
|
MPGlobalsAmbience.bUsingTelescope = FALSE
|
|
ENDIF
|
|
IF bSetupPCControls
|
|
SHUTDOWN_PC_SCRIPTED_CONTROLS()
|
|
bSetupPCControls = FALSE
|
|
ENDIF
|
|
SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(), storedWeapon, TRUE)
|
|
scopeStage = waitForPlayer
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE resetScope
|
|
IF bSwappedChemSuit = TRUE
|
|
SWAP_CHEM_SUIT_HOOD_FOR_ALTERNATE(PLAYER_PED_ID())
|
|
bSwappedChemSuit = FALSE
|
|
ENDIF
|
|
IF eStoredHelmet != DUMMY_PED_COMP
|
|
AND eStoredHelmet != PROPS_HEAD_NONE
|
|
SET_PED_COMP_ITEM_CURRENT_MP(PLAYER_PED_ID(), COMP_TYPE_PROPS, eStoredHelmet, FALSE)
|
|
eStoredHelmet = DUMMY_PED_COMP
|
|
ENDIF
|
|
IF eStoredMask != DUMMY_PED_COMP
|
|
SET_PED_COMP_ITEM_CURRENT_MP(PLAYER_PED_ID(), COMP_TYPE_BERD, eStoredMask, FALSE)
|
|
eStoredMask = DUMMY_PED_COMP
|
|
ENDIF
|
|
|
|
PRINTLN("POD: TELESCOPE: REAPPLYING MASK")
|
|
STOP_SOUND(iSoundTurnVert)
|
|
STOP_SOUND(iSoundTurnHori)
|
|
STOP_SOUND(iSoundZoom)
|
|
|
|
IF GET_ENTITY_MODEL(oScope) != INT_TO_ENUM(MODEL_NAMES, HASH("XS_PROP_ARENA_TELESCOPE_01"))
|
|
IF REQUEST_AMBIENT_AUDIO_BANK("TELESCOPES")
|
|
RELEASE_AMBIENT_AUDIO_BANK()
|
|
ENDIF
|
|
ENDIF
|
|
|
|
bRespottedPlayer = FALSE
|
|
CLEAN_UP_CAMERA()
|
|
|
|
IF NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<14.536638,529.315369,173.628204>>, <<12.656813,528.802307,175.878204>>, 2)
|
|
IF GET_FOLLOW_PED_CAM_VIEW_MODE() != CAM_VIEW_MODE_FIRST_PERSON
|
|
PRINTLN("POD: TELESCOPE: TASK_PLAY_ANIM")
|
|
//CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
|
|
TASK_PLAY_ANIM(PLAYER_PED_ID(), animDictExit, animExit, REALLY_SLOW_BLEND_IN, SLOW_BLEND_OUT, -1, AF_DEFAULT|AF_HIDE_WEAPON, 0.0)
|
|
// TASK_PLAY_ANIM_ADVANCED(PLAYER_PED_ID(), animDictExit, animExit, GET_ENTITY_COORDS(oScope), GET_ENTITY_ROTATION(oScope),REALLY_SLOW_BLEND_IN, 0.1, -1, AF_HIDE_WEAPON|AF_USE_KINEMATIC_PHYSICS|AF_EXTRACT_INITIAL_OFFSET|AF_USE_MOVER_EXTRACTION|AF_TURN_OFF_COLLISION)
|
|
ELSE
|
|
PRINTLN("POD: TELESCOPE: STOPPING ANIM PLAYBACK")
|
|
//CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
|
|
// TASK_PLAY_ANIM_ADVANCED(PLAYER_PED_ID(), animDictExit, animExit, GET_ENTITY_COORDS(oScope), GET_ENTITY_ROTATION(oScope),REALLY_SLOW_BLEND_IN, 0.1, -1, AF_HIDE_WEAPON|AF_EXTRACT_INITIAL_OFFSET|AF_USE_MOVER_EXTRACTION|AF_TURN_OFF_COLLISION)
|
|
TASK_PLAY_ANIM(PLAYER_PED_ID(), animDictExit, animExit, REALLY_SLOW_BLEND_IN, SLOW_BLEND_OUT, -1, AF_DEFAULT|AF_HIDE_WEAPON, 0.0)
|
|
// STOP_ANIM_TASK(PLAYER_PED_ID(),animDictEnter,animEnter)
|
|
// STOP_ANIM_PLAYBACK(PLAYER_PED_ID(),AF_PRIORITY_HIGH)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
PRINTSTRING("PAUL - FORCE_PED_AI_AND_ANIMATION_UPDATE resetScope") PRINTNL()
|
|
|
|
//FORCE_PED_AI_AND_ANIMATION_UPDATE(PLAYER_PED_ID())
|
|
IF NOT g_bInMultiplayer
|
|
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
|
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
|
|
g_bCurrentlyUsingTelescope = FALSE
|
|
ELSE
|
|
ENABLE_INTERACTION_MENU()
|
|
PRINTLN("ob_telescope: NET_SET_PLAYER_CONTROL- E")
|
|
NET_SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
|
|
SET_MULTIHEAD_SAFE(FALSE)
|
|
MPGlobalsAmbience.bUsingTelescope = FALSE
|
|
ENDIF
|
|
SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(), storedWeapon, TRUE)
|
|
|
|
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("TELEUSE")
|
|
CLEAR_HELP()
|
|
ENDIF
|
|
|
|
IF bSetupPCControls
|
|
SHUTDOWN_PC_SCRIPTED_CONTROLS()
|
|
bSetupPCControls = FALSE
|
|
ENDIF
|
|
|
|
scopeStage = waitForPlayer
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
PROC SETUP_DEBUG()
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
START_WIDGET_GROUP(GET_THIS_SCRIPT_NAME())
|
|
ADD_WIDGET_FLOAT_SLIDER("fSpeedMultiplier", fSpeedMultiplier, 2, 80, 1)
|
|
STOP_WIDGET_GROUP()
|
|
#ENDIF
|
|
ENDPROC
|
|
|
|
FUNC BOOL GET_IS_OBJECT_FALLEN(OBJECT_INDEX ob)
|
|
VECTOR rot = GET_ENTITY_ROTATION(ob)
|
|
IF rot.x < -5.0
|
|
OR rot.x > 5.0
|
|
OR rot.y < -5.0
|
|
OR rot.y > 5.0
|
|
return TRUE
|
|
ENDIF
|
|
return FALSE
|
|
ENDFUNC
|
|
|
|
// Mission Script -----------------------------------------//
|
|
SCRIPT(OBJECT_INDEX oTelescope)
|
|
|
|
IF HAS_FORCE_CLEANUP_OCCURRED(FORCE_CLEANUP_FLAG_SP_TO_MP)
|
|
//OR IS_BIT_SET(MPSpecGlobals.iBitSet, GLOBAL_SPEC_BS_WATCHING_MP_TV)
|
|
missionCleanup(FALSE)
|
|
ENDIF
|
|
|
|
oScope = oTelescope
|
|
IF DOES_ENTITY_EXIST(oScope)
|
|
//FREEZE_ENTITY_POSITION(oScope, TRUE)
|
|
GET_CAM_POS_AND_ROTATION_FOR_SCOPE()
|
|
ENDIF
|
|
|
|
// GET_MOUSE_POSITION(fStoredMouseX, fStoredMouseY)
|
|
fMouseX = GET_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_X )
|
|
fMouseY = GET_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_Y )
|
|
|
|
SETUP_DEBUG()
|
|
|
|
// Mission Loop -------------------------------------------//
|
|
WHILE TRUE
|
|
|
|
WAIT(0)
|
|
|
|
IF DOES_ENTITY_EXIST(oScope)
|
|
IF GET_IS_OBJECT_FALLEN(oScope)
|
|
PRINTLN("ob_telescope: GET_IS_OBJECT_FALLEN TRUE")
|
|
DRAW_DEBUG_TEXT_2D("SCOPE FALLEN", <<0.02, 0.1, 0>>)
|
|
scopeFallen = TRUE
|
|
ELSE
|
|
DRAW_DEBUG_TEXT_2D("SCOPE UPRIGHT", <<0.02, 0.1, 0>>)
|
|
scopeFallen = FALSE
|
|
ENDIF
|
|
|
|
IF NOT bPublicTelescope
|
|
PRINTLN("ob_telescope: FREEZE_ENTITY_POSITION oScope")
|
|
FREEZE_ENTITY_POSITION(oScope, TRUE)
|
|
ENDIF
|
|
// IF NOT IS_ENTITY_DEAD(PLAYER_PED_ID())
|
|
// FREEZE_ENTITY_POSITION(oScope, TRUE)
|
|
// IF IS_PED_SITTING_IN_ANY_VEHICLE(PLAYER_PED_ID()) AND NOT bPublicTelescope
|
|
// FREEZE_ENTITY_POSITION(oScope, FALSE)
|
|
// ELSE
|
|
// FREEZE_ENTITY_POSITION(oScope, TRUE)
|
|
// ENDIF
|
|
// ENDIF
|
|
IF IS_OBJECT_WITHIN_BRAIN_ACTIVATION_RANGE(oScope)
|
|
//IF NOT IS_BIT_SET(MPSpecGlobals.iBitSet, GLOBAL_SPEC_BS_WATCHING_MP_TV)
|
|
|
|
IF g_bStripperHideHUDCutScene
|
|
CDEBUG1LN(DEBUG_SAFEHOUSE, "ob_telescope: mission cleanup called for g_bStripperHideHUDCutScene")
|
|
IF DOES_ENTITY_EXIST(PLAYER_PED_ID())
|
|
AND NOT IS_ENTITY_DEAD(PLAYER_PED_ID())
|
|
CLEAR_PED_TASKS(PLAYER_PED_ID())
|
|
ENDIF
|
|
missionCleanup(TRUE)
|
|
ENDIF
|
|
|
|
PRINTLN("POD: telescope: ambStage: ", ambStage)
|
|
SWITCH ambStage
|
|
|
|
CASE ambCanRun
|
|
IF IS_LOCAL_PLAYER_IN_ARENA_SPECTATOR_BOX()
|
|
PRINTLN("POD: telescope: requesting anims")
|
|
|
|
REQUEST_ANIM_DICT(animDictEnter)
|
|
REQUEST_ANIM_DICT(animDictExit)
|
|
|
|
WHILE (NOT HAS_ANIM_DICT_LOADED(animDictEnter))
|
|
OR NOT HAS_ANIM_DICT_LOADED(animDictExit)
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
INITIALISE_SOUNDS()
|
|
|
|
PRINTLN("POD: telescope: anims loaded")
|
|
|
|
ambStage = ambRunning
|
|
ELSE
|
|
sfMovie = REQUEST_SCALEFORM_MOVIE("observatory_scope")
|
|
|
|
PRINTLN("POD: telescope: requesting scaleform")
|
|
|
|
REQUEST_ANIM_DICT(animDictEnter)
|
|
REQUEST_ANIM_DICT(animDictExit)
|
|
|
|
WHILE (NOT HAS_SCALEFORM_MOVIE_LOADED(sfMovie))
|
|
OR NOT HAS_ANIM_DICT_LOADED(animDictEnter)
|
|
OR NOT HAS_ANIM_DICT_LOADED(animDictExit)
|
|
HINT_AMBIENT_AUDIO_BANK("TELESCOPES")
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
INITIALISE_SOUNDS()
|
|
|
|
PRINTLN("POD: telescope: scaleform loaded")
|
|
|
|
ambStage = ambRunning
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE ambRunning
|
|
IF IS_PLAYER_PLAYING(PLAYER_ID())
|
|
AND IS_SKYSWOOP_AT_GROUND()
|
|
runTelescope()
|
|
ELSE
|
|
IF DOES_CAM_EXIST(cameraTelescope)
|
|
CLEAN_UP_CAMERA()
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE ambEnd
|
|
BREAK
|
|
ENDSWITCH
|
|
//ELSE
|
|
// missionCleanup(TRUE)
|
|
//ENDIF
|
|
ELSE
|
|
missionCleanup(TRUE)
|
|
ENDIF
|
|
ELSE
|
|
missionCleanup(TRUE)
|
|
ENDIF
|
|
ENDWHILE
|
|
ENDSCRIPT
|