252 lines
7.5 KiB
Python
Executable File
252 lines
7.5 KiB
Python
Executable File
|
|
|
|
//Compile out Title Update changes to header functions.
|
|
//Must be before includes.
|
|
//CONST_INT USE_TU_CHANGES 0 // Removed by Kenneth R.
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// 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 "lineactivation.sch"
|
|
|
|
// Variables ----------------------------------------------//
|
|
|
|
ENUM EMERGENCY_MAIN_ENUM
|
|
WAIT_FOR_CALL = 0,
|
|
LOAD_ASSETS,
|
|
POLICE_ACTION,
|
|
AMBULANCE_ACTION,
|
|
FIRE_ACTION,
|
|
CLEANUP
|
|
ENDENUM
|
|
|
|
EMERGENCY_MAIN_ENUM emergency_main_stages = WAIT_FOR_CALL
|
|
|
|
ENUM callStageFlag
|
|
callphoneup,
|
|
callselectservice
|
|
ENDENUM
|
|
callStageFlag callStage = callphoneup
|
|
|
|
|
|
|
|
VECTOR vNearestRoadNode
|
|
|
|
INT counter_time_started_cellphone
|
|
|
|
INCIDENT_INDEX tempIncident
|
|
|
|
// Functions ----------------------------------------------//
|
|
|
|
PROC take_call()
|
|
FLOAT fTemp
|
|
|
|
SWITCH callStage
|
|
|
|
CASE callphoneup
|
|
|
|
callStage = callselectservice
|
|
counter_time_started_cellphone = GET_GAME_TIMER()
|
|
|
|
BREAK
|
|
|
|
CASE callselectservice
|
|
|
|
WHILE NOT HAS_CELLPHONE_CALL_FINISHED()
|
|
WAIT(0)
|
|
IF CHECK_RESPONSE_TO_CELLPHONE_PROMPT() = RESPONDED_AMBULANCE
|
|
emergency_main_stages = AMBULANCE_ACTION
|
|
ENDIF
|
|
|
|
IF CHECK_RESPONSE_TO_CELLPHONE_PROMPT() = RESPONDED_FIRE
|
|
emergency_main_stages = FIRE_ACTION
|
|
ENDIF
|
|
|
|
IF CHECK_RESPONSE_TO_CELLPHONE_PROMPT() = RESPONDED_POLICE
|
|
emergency_main_stages = POLICE_ACTION
|
|
ENDIF
|
|
IF GET_GAME_TIMER() > counter_time_started_cellphone+30000
|
|
PRINTLN("emergencyCall - Call has timed out.")
|
|
counter_time_started_cellphone = GET_GAME_TIMER()
|
|
HANG_UP_AND_PUT_AWAY_PHONE()
|
|
ENDIF
|
|
ENDWHILE
|
|
|
|
IF emergency_main_stages = WAIT_FOR_CALL //Cleans up script if player hangs up
|
|
emergency_main_stages = CLEANUP
|
|
ENDIF
|
|
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
//GET_CLOSEST_VEHICLE_NODE(GET_ENTITY_COORDS(PLAYER_PED_ID()), vNearestRoadNode)
|
|
|
|
GET_POSITION_FOR_HANDOOVER_SCENE(PLAYER_PED_ID(), vNearestRoadNode, fTemp)
|
|
ENDIF
|
|
|
|
counter_time_started_cellphone = GET_GAME_TIMER()
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
ENDPROC
|
|
|
|
PROC emergencyCall_Cleanup() //Unload assests and reset flags
|
|
emergency_main_stages = WAIT_FOR_CALL
|
|
callStage = callphoneup
|
|
PRINTSTRING ("emergencycall.sc - Cleanup")
|
|
PRINTNL()
|
|
TERMINATE_THIS_THREAD()
|
|
ENDPROC
|
|
|
|
|
|
PROC CHECK_FOR_TIMEOUT()
|
|
IF GET_GAME_TIMER() > (counter_time_started_cellphone + 30000)
|
|
PRINTSTRING ("\nemergencycall.sc - CREATE_INCIDENT has timed out.\n")
|
|
emergency_main_stages = CLEANUP
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
// Mission Script -----------------------------------------//
|
|
|
|
|
|
SCRIPT
|
|
|
|
IF HAS_FORCE_CLEANUP_OCCURRED(DEFAULT_FORCE_CLEANUP_FLAGS | FORCE_CLEANUP_FLAG_RANDOM_EVENTS)
|
|
emergency_main_stages = CLEANUP
|
|
ENDIF
|
|
|
|
// Mission Loop -------------------------------------------//
|
|
WHILE TRUE
|
|
WAIT(0)
|
|
|
|
IF IS_PLAYER_PLAYING(PLAYER_ID())
|
|
|
|
SWITCH emergency_main_stages
|
|
|
|
CASE WAIT_FOR_CALL
|
|
take_call()
|
|
BREAK
|
|
|
|
CASE LOAD_ASSETS
|
|
|
|
BREAK
|
|
|
|
CASE POLICE_ACTION
|
|
CHECK_FOR_TIMEOUT()
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
IF CREATE_INCIDENT_WITH_ENTITY(DT_POLICE_VEHICLE_REQUEST, PLAYER_PED_ID(), 2, 3.0, tempIncident)
|
|
PRINTSTRING ("emergencycall.sc - CASE STAGE - POLICE_ACTION - NETWORK")
|
|
PRINTNL()
|
|
counter_time_started_cellphone = GET_GAME_TIMER()
|
|
emergency_main_stages = CLEANUP
|
|
ENDIF
|
|
ELSE
|
|
IF CREATE_INCIDENT(DT_POLICE_VEHICLE_REQUEST, vNearestRoadNode, 2, 3.0, tempIncident)
|
|
PRINTSTRING ("emergencycall.sc - CASE STAGE - POLICE_ACTION")
|
|
PRINTNL()
|
|
counter_time_started_cellphone = GET_GAME_TIMER()
|
|
emergency_main_stages = CLEANUP
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE AMBULANCE_ACTION
|
|
CHECK_FOR_TIMEOUT()
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
IF GB_IS_PLAYER_ON_ANY_GANG_BOSS_MISSION(PLAYER_ID())
|
|
AND GB_GET_GANGOPS_VARIATION_PLAYER_IS_ON(PLAYER_ID()) = GOV_PARAMEDIC
|
|
AND g_bFM_GangOpsParamedicPlayerCanCallForAmbulance
|
|
IF g_bFM_GangOpsParamedicPlayerHasRequestedAmbulance = FALSE
|
|
PRINTLN("[FM_GANGOPS] - [GOV_PARAMEDIC] - Emergency call - player has requested an ambulance, setting g_bFM_GangOpsParamedicPlayerHasRequestedAmbulance")
|
|
g_bFM_GangOpsParamedicPlayerHasRequestedAmbulance = TRUE
|
|
ENDIF
|
|
emergency_main_stages = CLEANUP
|
|
ELSE
|
|
IF CREATE_INCIDENT_WITH_ENTITY(DT_AMBULANCE_DEPARTMENT, PLAYER_PED_ID(), 2, 3.0, tempIncident)
|
|
PRINTSTRING ("emergencycall.sc - CASE STAGE - AMBULANCE_ACTION - NETWORK")
|
|
PRINTNL()
|
|
counter_time_started_cellphone = GET_GAME_TIMER()
|
|
emergency_main_stages = CLEANUP
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF CREATE_INCIDENT(DT_AMBULANCE_DEPARTMENT, vNearestRoadNode, 2, 3.0, tempIncident)
|
|
PRINTSTRING ("emergencycall.sc - CASE STAGE - AMBULANCE_ACTION")
|
|
PRINTNL()
|
|
counter_time_started_cellphone = GET_GAME_TIMER()
|
|
emergency_main_stages = CLEANUP
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE FIRE_ACTION
|
|
CHECK_FOR_TIMEOUT()
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
IF CREATE_INCIDENT_WITH_ENTITY(DT_FIRE_DEPARTMENT, PLAYER_PED_ID(), 4, 3.0, tempIncident)
|
|
PRINTSTRING ("emergencycall.sc - CASE STAGE - FIRE_ACTION - NETWORK")
|
|
PRINTNL()
|
|
counter_time_started_cellphone = GET_GAME_TIMER()
|
|
emergency_main_stages = CLEANUP
|
|
ENDIF
|
|
ELSE
|
|
IF CREATE_INCIDENT(DT_FIRE_DEPARTMENT, vNearestRoadNode, 4, 3.0, tempIncident)
|
|
IF g_sTriggerSceneAssets.id = GET_HASH_KEY("AGENCY_PREP_1")
|
|
OR (GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(GET_HASH_KEY("agency_prep1")) > 0 AND IS_REPEAT_PLAY_ACTIVE())
|
|
g_sTriggerSceneAssets.id = GET_HASH_KEY("AHP1_TRUCKCALLED")
|
|
ELSE
|
|
//The player has called 911 to request a fire truck before the text message in Agency Prep 1)
|
|
IF GET_MISSION_COMPLETE_STATE(SP_HEIST_AGENCY_2) AND NOT GET_MISSION_COMPLETE_STATE(SP_HEIST_AGENCY_PREP_1)
|
|
g_bCalled911BeforeText = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
PRINTSTRING ("emergencycall.sc - CASE STAGE - FIRE_ACTION")
|
|
PRINTNL()
|
|
counter_time_started_cellphone = GET_GAME_TIMER()
|
|
emergency_main_stages = CLEANUP
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE CLEANUP
|
|
IF GET_GAME_TIMER() > counter_time_started_cellphone + 60000
|
|
OR NOT IS_INCIDENT_VALID(tempIncident)
|
|
emergencyCall_Cleanup()
|
|
ELSE
|
|
IF IS_PLAYER_PLAYING(PLAYER_ID())
|
|
IF NOT IS_PLAYER_CONTROL_ON(PLAYER_ID())
|
|
IF IS_INCIDENT_VALID(tempIncident)
|
|
DELETE_INCIDENT(tempIncident)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
ENDIF
|
|
|
|
ENDWHILE
|
|
ENDSCRIPT
|
|
|
|
|
|
|