293 lines
9.4 KiB
Python
Executable File
293 lines
9.4 KiB
Python
Executable File
|
|
|
|
//Compile out Title Update changes to header functions.
|
|
//Must be before includes.
|
|
|
|
CONST_INT USE_TU_CHANGES 1
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// AUTHOR : //
|
|
// DESCRIPTION : Choose and emergency service //
|
|
// //
|
|
//////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
USING "rage_builtins.sch"
|
|
USING "globals.sch"
|
|
USING "commands_player.sch"
|
|
USING "commands_script.sch"
|
|
USING "commands_streaming.sch"
|
|
USING "ambience_run_checks.sch"
|
|
USING "commands_misc.sch"
|
|
USING "script_player.sch"
|
|
USING "commands_pad.sch"
|
|
USING "commands_path.sch"
|
|
USING "cellphone_public.sch"
|
|
USING "dialogue_public.sch"
|
|
USING "emergency_call.sch"
|
|
USING "flow_public_GAME.sch"
|
|
|
|
// Variables ----------------------------------------------//
|
|
|
|
ENUM EMERGENCY_MAIN_ENUM
|
|
WAIT_FOR_CALL = 0,
|
|
CLEANUP
|
|
ENDENUM
|
|
EMERGENCY_MAIN_ENUM emergency_main_stages = WAIT_FOR_CALL
|
|
|
|
ENUM callStageFlag
|
|
callphoneup,
|
|
callwaitforscript
|
|
ENDENUM
|
|
callStageFlag callStage = callphoneup
|
|
|
|
structPedsForConversation emergencyPedStruct
|
|
TEXT_LABEL_23 suppressingScript
|
|
BOOL bDisableCalls
|
|
enumConversationPriority callPriority
|
|
|
|
// Functions ----------------------------------------------//
|
|
|
|
PROC take_call()
|
|
|
|
|
|
|
|
|
|
SWITCH callStage
|
|
|
|
CASE callphoneup
|
|
|
|
IF IS_CALLING_CONTACT (CHAR_CALL911)
|
|
AND GB_GET_PLAYER_CURRENT_GANG_BOSS_MISSION(PLAYER_ID()) != FMMC_TYPE_BIKER_BUY
|
|
AND GB_GET_PLAYER_CURRENT_GANG_BOSS_MISSION(PLAYER_ID()) != FMMC_TYPE_BIKER_CONTRABAND_SELL
|
|
AND GB_GET_PLAYER_CURRENT_GANG_BOSS_MISSION(PLAYER_ID()) != FMMC_TYPE_BIKER_CONTRABAND_DEFEND
|
|
AND GB_GET_PLAYER_CURRENT_GANG_BOSS_MISSION(PLAYER_ID()) != FMMC_TYPE_GUNRUNNING_BUY
|
|
AND GB_GET_PLAYER_CURRENT_GANG_BOSS_MISSION(PLAYER_ID()) != FMMC_TYPE_GUNRUNNING_SELL
|
|
AND GB_GET_PLAYER_CURRENT_GANG_BOSS_MISSION(PLAYER_ID()) != FMMC_TYPE_GUNRUNNING_DEFEND
|
|
|
|
IF g_bEmergencyCallPriorityIsHigh
|
|
callPriority = CONV_PRIORITY_CELLPHONE
|
|
ELSE
|
|
callPriority = CONV_PRIORITY_NON_CRITICAL_CALL
|
|
ENDIF
|
|
|
|
IF NOT g_bForceEmergencyCallAnswerphone
|
|
|
|
#if USE_TU_CHANGES
|
|
IF IS_CURRENT_MISSION_DLC() //Added by Steve T to make emergency calls DLC compliant. 11.02.14
|
|
|
|
IF PLAYER_CALL_EMERGENCY_SERVICES_USING_V_CONTENT_IN_DLC (emergencyPedStruct, CHAR_CALL911, "LOCAUD", "LOC_CALLQ", callPriority, "CELL_601", "LOC_CALLA", "LOC_CALLF", "LOC_CALLP") //The calls are already exported and in the XLS sheet.
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("ECLauncher - Using_V_Content_in_DLC")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
IF NOT ARE_EMERGENCY_CALLS_SUPPRESSED()
|
|
REQUEST_SCRIPT("emergencycall")
|
|
|
|
WHILE NOT HAS_SCRIPT_LOADED("emergencycall")
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
START_NEW_SCRIPT("emergencycall", MINI_STACK_SIZE)
|
|
ENDIF
|
|
callStage = callwaitforscript
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
#endif
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("ECLauncher - Now using_V_content functionality...")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
|
|
//
|
|
IF PLAYER_CALL_EMERGENCY_SERVICES_USING_V_CONTENT_IN_DLC (emergencyPedStruct, CHAR_CALL911, "LOCAUD", "LOC_CALLQ", callPriority, "CELL_601", "LOC_CALLA", "LOC_CALLF", "LOC_CALLP") //The calls are already exported and in the XLS sheet.
|
|
|
|
IF NOT ARE_EMERGENCY_CALLS_SUPPRESSED()
|
|
REQUEST_SCRIPT("emergencycall")
|
|
|
|
WHILE NOT HAS_SCRIPT_LOADED("emergencycall")
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
START_NEW_SCRIPT("emergencycall", MINI_STACK_SIZE)
|
|
ENDIF
|
|
callStage = callwaitforscript
|
|
|
|
ENDIF
|
|
|
|
|
|
#if USE_TU_CHANGES
|
|
ENDIF
|
|
#endif
|
|
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE callwaitforscript
|
|
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("emergencycall")) = 0
|
|
IF NOT IS_CALLING_CONTACT (CHAR_CALL911)
|
|
emergency_main_stages = CLEANUP
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
ENDPROC
|
|
|
|
PROC checkForSuppression()
|
|
IF ARE_EMERGENCY_CALLS_SUPPRESSED()
|
|
suppressingScript = EMERGENCY_CALLS_SUPPRESSING_SCRIPT()
|
|
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(GET_HASH_KEY(suppressingScript)) = 0
|
|
RELEASE_SUPPRESSED_EMERGENCY_CALLS()
|
|
ELSE
|
|
g_bForceEmergencyCallAnswerphone = TRUE
|
|
ENDIF
|
|
ELSE
|
|
g_bForceEmergencyCallAnswerphone = FALSE
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC emergencyCall_Cleanup() //Unload assests and reset flags
|
|
IF g_bEmergencyCallPriorityIsHigh
|
|
FORCE_EMERGENCY_CALL_PRIORITY_HIGH(FALSE)
|
|
ENDIF
|
|
emergency_main_stages = WAIT_FOR_CALL
|
|
callStage = callphoneup
|
|
PRINTSTRING ("emergencycalllauncher.sc - Cleanup")
|
|
PRINTNL()
|
|
ENDPROC
|
|
|
|
PROC SETUP_DEBUG()
|
|
#if IS_DEBUG_BUILD
|
|
START_WIDGET_GROUP("Emergency Call Launcher")
|
|
ADD_WIDGET_BOOL("Enable or Disable Emergency Call Toggle", bDisableCalls)
|
|
STOP_WIDGET_GROUP()
|
|
#ENDIF
|
|
ENDPROC
|
|
|
|
PROC RUN_DEBUG()
|
|
IF bDisableCalls
|
|
IF ARE_EMERGENCY_CALLS_SUPPRESSED()
|
|
RELEASE_SUPPRESSED_EMERGENCY_CALLS()
|
|
ELSE
|
|
SUPPRESS_EMERGENCY_CALLS()
|
|
ENDIF
|
|
bDisableCalls = FALSE
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
|
|
// Mission Script -----------------------------------------//
|
|
|
|
|
|
SCRIPT
|
|
|
|
//Copied from bootycallhandler.sc by DavidG 01/02/2013
|
|
// KEITH 21/12/12: This script now terminates when the game is moving between SP and MP and back again, so need different cleanup checks.
|
|
// Also had to remove the NETWORK_SET_SCRIPT_IS_SAFE_FOR_NETWORK_GAME() call - it clashes with FORCE_CLEANUP_FLAG_SP_TO_MP leading to an assert.
|
|
BOOL isInMultiplayer = NETWORK_IS_GAME_IN_PROGRESS()
|
|
|
|
// This script needs to cleanup only when the game moves from SP to MP
|
|
IF NOT (isInMultiplayer)
|
|
// KEITH 21/12/12: Terminate this script when moving from SP to MP
|
|
IF HAS_FORCE_CLEANUP_OCCURRED(FORCE_CLEANUP_FLAG_SP_TO_MP | FORCE_CLEANUP_FLAG_MAGDEMO)
|
|
#IF IS_DEBUG_BUILD
|
|
PRINTSTRING("...EmergencyCallHandler.sc has been forced to cleanup (SP to MP)")
|
|
PRINTNL()
|
|
#ENDIF
|
|
|
|
TERMINATE_THIS_THREAD()
|
|
ENDIF
|
|
ELSE
|
|
// Ensure this script persists during network game
|
|
NETWORK_SET_SCRIPT_IS_SAFE_FOR_NETWORK_GAME()
|
|
ENDIF
|
|
|
|
|
|
ADD_PED_FOR_DIALOGUE(emergencyPedStruct, 1, NULL, "EMSDispatch")
|
|
SETUP_DEBUG()
|
|
// Mission Loop -------------------------------------------//
|
|
WHILE TRUE
|
|
WAIT(0)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Copied from bootycallhandler.sc by DavidG 01/02/2013
|
|
// KEITH 21/12/12: Terminate this script when moving from MP to SP
|
|
IF (isInMultiplayer)
|
|
IF NOT (NETWORK_IS_GAME_IN_PROGRESS())
|
|
#IF IS_DEBUG_BUILD
|
|
PRINTSTRING("...EmergencyCallHandler.sc has been forced to cleanup (MP to SP)")
|
|
PRINTNL()
|
|
#ENDIF
|
|
|
|
TERMINATE_THIS_THREAD()
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RUN_DEBUG()
|
|
IF IS_PLAYER_PLAYING(PLAYER_ID())
|
|
|
|
SWITCH emergency_main_stages
|
|
|
|
CASE WAIT_FOR_CALL
|
|
take_call()
|
|
|
|
checkForSuppression()
|
|
BREAK
|
|
|
|
CASE CLEANUP
|
|
emergencyCall_Cleanup()
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
ENDIF
|
|
|
|
|
|
/*
|
|
IF IS_CURRENT_MISSION_DLC()
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.10, 0.14, "STRING", "ECL - Is CurrMiss_DLC")
|
|
|
|
ELSE
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.10, 0.14, "STRING", "ECL - Not CurrMiss_DLC")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
|
|
ENDWHILE
|
|
ENDSCRIPT
|
|
|
|
|
|
|