// controller_Trafficking.sch USING "commands_script.sch" USING "globals.sch" USING "flow_public_core.sch" USING "flow_public_core_override.sch" USING "mission_control_public.sch" USING "replay_public.sch" USING "commands_task.sch" USING "rich_presence_public.sch" CONST_FLOAT TRAF_CONTROLLER_UPDATE_DIST2 62500.0 // 250m2 is when the controller will begin updating. CONST_FLOAT TRAF_UPDATE_DIST2 50625.0 // 225m2 is when the actual segments of the controller think you're in range. ENUM TRAFFICKING_STATE TKS_INIT = 0, TKS_AREA_WAIT, TKS_STREAM, TKS_STREAM_WAIT, TKS_LAUNCH_WAIT, TKS_CUTSCENE, TKS_LAUNCH, TKS_RUN_WAIT, TKS_WAIT_FOR_FAILSCREEN_REPLAY, TKS_LEAVE_WAIT ENDENUM // **** CONTROLLER GLOBALS **** PED_INDEX pedPlayer VEHICLE_INDEX vehToSave THREADID traffickingThread FLOAT fDist2ToLauncher = 9999999.9 VECTOR vLaunchCoords = <<2134.06, 4780.69, 41.664>> INT iMissionCandidateID = NO_CANDIDATE_ID BOOL bTriggerWeaponsReset = FALSE BOOL bSwitchInProgress = FALSE // TEMP!!! - REMOVE LATER BOOL bTempBool[6] BOOL bRequestedLaunchedTrafficking BOOL bOkayToKeepBlipsActive = FALSE // **** CONTROLLER CORE FUNCTIONALITY **** FUNC BOOL IS_TRAFFICKING_ACTIVE() IF (g_savedGlobals.sFlow.isGameflowActive) // IF GET_MISSION_FLOW_BITSET_BIT_STATE(FLOWBITSET_MINIGAME_ACTIVE, ENUM_TO_INT(MINIGAME_TRAFFICKING_AIR)) // PRINTLN("MINIGAME_TRAFFICKING_AIR IS ACTIVE") // ELSE // PRINTLN("MINIGAME_TRAFFICKING_AIR IS NOT ACTIVE") // ENDIF // IF GET_MISSION_FLOW_BITSET_BIT_STATE(FLOWBITSET_MINIGAME_ACTIVE, ENUM_TO_INT(MINIGAME_TRAFFICKING_GROUND)) // PRINTLN("MINIGAME_TRAFFICKING_GROUND IS ACTIVE") // ELSE // PRINTLN("MINIGAME_TRAFFICKING_GROUND IS NOT ACTIVE") // ENDIF RETURN ( GET_MISSION_FLOW_BITSET_BIT_STATE(FLOWBITSET_MINIGAME_ACTIVE, ENUM_TO_INT(MINIGAME_TRAFFICKING_AIR)) AND GET_MISSION_FLOW_BITSET_BIT_STATE(FLOWBITSET_MINIGAME_ACTIVE, ENUM_TO_INT(MINIGAME_TRAFFICKING_GROUND))) ELSE // PRINTLN("DEBUG - TRAFFICKING ACTIVE") // We're in debug, but that shouldn't stop the fun. RETURN TRUE ENDIF // PRINTLN("FAILING HERE - IS_TRAFFICKING_ACTIVE") RETURN FALSE ENDFUNC FUNC BOOL TRAFFICKING_CONTROLLER_SHOULD_UPDATE() // Don't update if the flowfalg is inactive. IF NOT IS_TRAFFICKING_ACTIVE() // PRINTLN("TRAFFICKING IS NOT ACTIVE") RETURN FALSE ENDIF IF NOT bRequestedLaunchedTrafficking IF Get_Player_Timetable_Scene_In_Progress() = PR_SCENE_T6_TRAF_AIR // PRINTLN("WE'RE SWITCHING - GO AHEAD AND RETURN TRUE") RETURN TRUE ENDIF IF NOT CAN_MISSION_TYPE_START_AGAINST_CURRENT_TYPE(MISSION_TYPE_MINIGAME) // PRINTLN("NEW CHECK FAIL") RETURN FALSE ENDIF ENDIF IF (GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("Traffick_Ground")) = 1) OR (GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("Traffick_Air")) = 1) // PRINTLN("WE'RE STILL RUNNING AIR OR GROUND") RETURN TRUE ENDIF // Don't update if the player is dead. pedPlayer = PLAYER_PED_ID() IF IS_ENTITY_DEAD(pedPlayer) // We don't do this anymore. Controller needs to run despite death to handle replays. // RETURN FALSE ENDIF // need to process if we're setting up a replay IF IS_REPLAY_BEING_PROCESSED() PRINTLN("IS_REPLAY_BEING_PROCESSED IS TRUE") RETURN TRUE ENDIF IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_TREVOR // PRINTLN("We're not TREVOR, exiting early.") RETURN FALSE ENDIF IF NOT IS_IT_SAFE_TO_TRIGGER_SCRIPT_TYPE(ST_MINIGAME) IF IS_PED_GETTING_INTO_A_VEHICLE(PLAYER_PED_ID()) bOkayToKeepBlipsActive = TRUE // PRINTLN("bOkayToKeepBlipsActive = TRUE - 01") ENDIF IF NOT IS_PLAYER_READY_FOR_CUTSCENE(PLAYER_ID()) bOkayToKeepBlipsActive = TRUE // PRINTLN("bOkayToKeepBlipsActive = TRUE - 02") ENDIF IF IS_PED_IN_COMBAT(PLAYER_PED_ID()) // PRINTLN("PED IS IN COMBAT") ENDIF IF NOT IS_PLAYER_READY_FOR_CUTSCENE(PLAYER_ID()) // PRINTLN("PLAYER IS NOT READY FOR CUTSCENE") ENDIF IF GET_PLAYER_WANTED_LEVEL(PLAYER_ID()) > 0 // PRINTLN("PED HAS WANTED LEVEL GREATER THAN ZERO 01") ENDIF IF IS_PLAYER_WANTED_LEVEL_GREATER(PLAYER_ID(),0) // PRINTLN("PED HAS WANTED LEVEL GREATER THAN ZERO 02") ENDIF IF IS_ENTITY_IN_AIR(PLAYER_PED_ID()) // PRINTLN("PLAYER IS IN THE AIR") ENDIF IF IS_PED_GETTING_INTO_A_VEHICLE(PLAYER_PED_ID()) // PRINTLN("PLAYER IS GETTING INTO A VEHICLE") ENDIF IF IS_PED_RAGDOLL(PLAYER_PED_ID()) // PRINTLN("PED IS RAGDOLLING") ENDIF IF IS_PLAYER_BEING_ARRESTED(PLAYER_ID()) // PRINTLN("PED IS BEING ARRESTED") ENDIF IF IS_PLAYER_CLIMBING(PLAYER_ID()) // PRINTLN("PED IS CLIMBING") ENDIF IF g_bPlayerIsInTaxi // PRINTLN("PLAYER IS IN TAXI") ENDIF IF g_bIsOnRampage // PRINTLN("PLAYER IS IN RAMPAGE") ENDIF IF IS_TRANSITION_ACTIVE() // PRINTLN("SP<->MP TRANSITION IS ACTIVE") ENDIF IF IS_SCRIPT_HUD_DISPLAYING(HUDPART_TRANSITIONHUD) // PRINTLN("SCRIPT HUD IS DISPLAYING") ENDIF IF IS_RESULT_SCREEN_DISPLAYING() // PRINTLN("RESULT SCREEN IS DISPLAYING - GO AHEAD AND RETURN TRUE") // To Fix Bug # 1475703 RETURN TRUE ENDIF RETURN FALSE ELSE bOkayToKeepBlipsActive = FALSE // PRINTLN("SETTING bOkayToKeepBlipsActive TO FALSE") ENDIF // PRINTLN("WE'RE GOOD TO UPDATE") // Passed all checks. RETURN TRUE ENDFUNC /// PURPOSE: /// Generic function that'll be called during the launch wait part of a controller. /// Basically, checks to see if we need to clean and go to a holding state to wait for the player to be able to relaunch. FUNC BOOL TRAFFICKING_SHOULD_CLEAN_AND_WAIT() // If there's a mission running, and it's not us, and it's not a cleared mission, we should not update. IF IS_CURRENTLY_ON_MISSION_TO_TYPE(MISSION_TYPE_MINIGAME) // There are several missions for which we should not clean up. IF (GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("Trevor2")) = 1) IF NOT bTempBool[0] PRINTLN("MISSION RUNNING - Trevor2, BUT WE'RE STILL OKAY TO RUN!!!") bTempBool[0] = TRUE ENDIF RETURN FALSE ENDIF IF (GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("finale_heist2b")) = 1) IF NOT bTempBool[1] PRINTLN("MISSION RUNNING - finale_heist2b, BUT WE'RE STILL OKAY TO RUN!!!") bTempBool[1] = TRUE ENDIF RETURN FALSE ENDIF IF (GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("Traffick_Air")) = 1) IF NOT bTempBool[2] PRINTLN("MISSION RUNNING - Traffick_Air, BUT WE'RE STILL OKAY TO RUN!!!") bTempBool[2] = TRUE ENDIF RETURN FALSE ENDIF IF (GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("Traffick_Ground")) = 1) IF NOT bTempBool[3] PRINTLN("MISSION RUNNING - Traffick_Ground, BUT WE'RE STILL OKAY TO RUN!!!") bTempBool[3] = TRUE ENDIF RETURN FALSE ENDIF IF g_bLaunchMinigameReplay RETURN FALSE ENDIF IF (iMissionCandidateID != NO_CANDIDATE_ID) // PRINTLN("RETURNING FALSE - NO_CANDIDATE_ID") RETURN FALSE ENDIF IF Get_Player_Timetable_Scene_In_Progress() = PR_SCENE_T6_TRAF_AIR // PRINTLN("WE'RE SWITCHING - BUT WE'RE STILL OKAY TO RUN!!!") RETURN FALSE ENDIF RETURN TRUE ENDIF // We're good to continue, no need to clean and go into a holding pattern. RETURN FALSE ENDFUNC PROC HANDLE_VEHICLE_STORING() MODEL_NAMES mnToTest IF NOT DOES_ENTITY_EXIST(vehToSave) IF NOT IS_ENTITY_DEAD(PLAYER_PED_ID()) IF VDIST2(GET_ENTITY_COORDS(PLAYER_PED_ID()), vLaunchCoords) < 2500 // 50m vehToSave = GET_PLAYERS_LAST_VEHICLE() // PRINTLN("GRABBING THE PLAYER'S LAST VEHICLE") IF DOES_ENTITY_EXIST(vehToSave) mnToTest = GET_ENTITY_MODEL(vehToSave) IF mnToTest = DUNE PRINTLN("IT THINKS THE DUNE IS THE LAST VEHICLE") ENDIF ENDIF ENDIF ENDIF ELSE // PRINTLN("GOT A CAR") ENDIF ENDPROC