////////////////////////////////////////////////////////////////////////////////////////// // // // SCRIPT NAME : selector.sc // // AUTHOR : Kenneth Ross // // DESCRIPTION : Displays the hotswap HUD and handles the switching between // // singleplayer and multiplayer. // // // ////////////////////////////////////////////////////////////////////////////////////////// //Modifies script compiled into IS_SELECTOR_PED_AVAILABLE_IN_FLOW. -BenR CONST_INT USE_SELECTOR_CHANGES 1 USING "rage_builtins.sch" USING "globals.sch" USING "commands_hud.sch" USING "commands_misc.sch" USING "commands_pad.sch" USING "commands_script.sch" USING "commands_player.sch" USING "commands_graphics.sch" USING "commands_streaming.sch" USING "commands_camera.sch" USING "script_MATHS.sch" USING "script_player.sch" USING "cellphone_public.sch" USING "selector_public.sch" USING "stats_private.sch" //USING "Shared_hud_displays.sch" USING "net_hud_activating.sch" USING "MP_SkyCam.sch" USING "Screens_header.sch" USING "Transition_Common.sch" USING "PM_MissionCreator_Public.sch" USING "net_player_headshots.sch" USING "flow_public_GAME.sch" using "Transition_Joining.sch" USING "beast_secret_unlock.sch" ENUM SELECTOR_STAGE_ENUM SELECTOR_INITIALISE = 0, SELECTOR_CONTROLLER, SELECTOR_END ENDENUM SELECTOR_STAGE_ENUM eSelectorStage = SELECTOR_INITIALISE SELECTOR_PED_STRUCT sSelectorPeds CONST_FLOAT F_STAT_X_POSITION 0.056 FLOAT fPLAYER_STATS_X = F_STAT_X_POSITION //0.032//0.0375//0.225 FLOAT fPLAYER_STATS_Y = 0.006//0.003//0.035 FLOAT fPLAYER_STATS_W = 0.140625//0.5 FLOAT fPLAYER_STATS_H = 0.3875//0.149 FLOAT fPLAYER_STATS_SCALE_W = 1.0 FLOAT fPLAYER_STATS_SCALE_H = 1.0 //FLOAT fPLAYER_SWITCH_X = 0.053 FLOAT fPLAYER_SWITCH_Y = 0.087 FLOAT fPLAYER_SWITCH_W = 0.098 FLOAT fPLAYER_SWITCH_H = 0.175 FLOAT fPLAYER_SWITCH_SCALE_W = 1.0 FLOAT fPLAYER_SWITCH_SCALE_H = 1.0 //FLOAT fPLAYER_SWITCH_WIDE_WIDE_POS_X = 0.75 FLOAT fPLAYER_SWITCH_WIDE_SCALE = 1.3333 //FLOAT fPLAYER_SWITCH_WIDE_WIDE_POS_X = 0.75 FLOAT fMISSION_NAME_X = -0.106 FLOAT fMISSION_NAME_Y = 0.635 //INT CodeExitMPCheck // All the Scaleform related data SCALEFORM_INDEX movieID, movieID2 BOOL bUsingPrologueMovie BOOL bRequested INT iState[4] INT iEnum[4] INT iCurrent[4] INT iMissions[4] BOOL bHinted[4] BOOL bDamaged[4] BOOL bFlashDamage[4] INT iSelectedSlot INT iSelectedSlotOnLoad BOOL bSelection BOOL bDisplay SCRIPT_TIMER TransitionFailsafe_Timer INT iHeadshotTextureID = -1 INT iAutoSwitchEnum[4] INT iAutoSwitchSlot INT iAutoSwitchDisplayTimer BOOL bAutoSwitchDisplayTimerSet //Purposefully "hidden" in amongst this script. We want it to be hard //for hackers to spot these scripts in decompiled output. -BenR #IF FEATURE_SP_DLC_BEAST_SECRET #IF NOT FEATURE_SP_DLC_BEAST_SECRET_DEBUG BeastUnlockVars sBeastUnlockVars #ENDIF #ENDIF BLIP_INDEX selectedPedBlip BOOL bMPAutoBootFromStartup = FALSE #IF USE_REPLAY_RECORDING_TRIGGERS BOOL bAddActionReplayOn BOOL bAddActionReplayOff REPLAY_START_PARAM eFeedStartType INT iRecPost[3] INT iRecPostActionReplay = -1 INT iActionReplayTimer TIME_DATATYPE tdActionReplayTimer BOOL bReplayFeedDisabledLastFrame INT iExcludeInputTimer #ENDIF BOOL bSwitchAvailableAudioPlayed BOOL bSetSystemTimer BOOL bDisplayCharacterInfo FLOAT fLastTimeScaleSet BOOL bSlowingDownTime, bReduceTimeScaleForSwitch FLOAT fTargetScale INT iTimeScaleTimer BOOL bSetPedHead BOOL bPedHeadSet INT iLoadPedHeadStage STRING sMPPedHeadshot INT iPedHeadSlot BOOL bSuppressUIForShortSwitch INT iSuppressRadarTimer INT iLastSwitchFrameCount BOOL bUpdateCountdown BOOL bForceUpdateCountdown INT iCountdownTimer TIME_DATATYPE tdCountdownTimer BOOL bMapUpdated INT iIndicatorSFX[2] BOOL bHintIndicatorNotTriggered BOOL bDisabledLastFrame INT iSwitchActiveTimer BOOL bSwitchActiveBlock BOOL bCleanupMovies INT iCleanupMoviesTimer //TIME_DATATYPE tdCleanupMoviesTimer INT iLoadMoviesTimer TIME_DATATYPE tdLoadMoviesTimer BOOL bMatchmakingCardOnscreen INT iLastTimeSwitchWasOnscreen BOOL bShownPSPlusSignIn = FALSE #IF IS_DEBUG_BUILD WIDGET_GROUP_ID widgetID //SkySwoop widget INT iSkySwoopWidget INT iCurrentState_Debug INT iMissionType_Debug BOOL bTimescale_Debug BOOL bForceLoad_Debug BOOL bHideThisFrame_Debug BOOL bAllowHiddenSelection_Debug BOOL bDisplayAutoSwitchHint0, bDisplayAutoSwitchHint1, bDisplayAutoSwitchHint2 BOOL bPauseMenuActiveEX_Debug, bPauseMenuActive_Debug PROC PRINT_DEBUG_STAT_TEXT(FLOAT fX, FLOAT fY, STRING sText) SET_TEXT_SCALE(0.0000, 0.2900) SET_TEXT_COLOUR(255, 255, 255, 255) SET_TEXT_CENTRE(FALSE) SET_TEXT_DROPSHADOW(0, 0, 0, 0, 0) SET_TEXT_EDGE(0, 0, 0, 0, 0) DISPLAY_TEXT_WITH_LITERAL_STRING(fX, fY, "STRING", sText) ENDPROC PROC MAINTAIN_SELECTOR_MULTIPLAYER_QUICKLAUNCH() #IF IS_DEBUG_BUILD IF GET_COMMANDLINE_PARAM_EXISTS("sc_DisableShiftEntryToMP") EXIT ENDIF #ENDIF IF g_bDeleteAllCharsQuick = FALSE AND SCRIPT_IS_CLOUD_AVAILABLE() //Jump Straight into a game as a cop or a mexican // IF IS_DEBUG_KEY_JUST_PRESSED(KEY_C, KEYBOARD_MODIFIER_SHIFT, " Debug Start as a Cop ") // // PRINTSTRING("SELECTOR - Selected a Cop with shift-C") // // g_qlWhichTeam = QUICKLAUNCH_CNC_COP // g_HaveIShiftedIntoTheGame = TRUE // // SET_MP_HUD_ON_SCREEN(TRUE) // IF NOT (IS_TRANSITION_MENU_TRIGGERED()) // TRIGGER_TRANSITION_MENU_ACTIVE(TRUE) // ENDIF // ELIF IS_DEBUG_KEY_JUST_PRESSED(KEY_M, KEYBOARD_MODIFIER_SHIFT, " Debug Start as a Mexican ") // PRINTSTRING("/n SELECTOR - Selected a Mexican with shift-M") // g_qlWhichTeam = QUICKLAUNCH_CNC_VAGOS // g_HaveIShiftedIntoTheGame = TRUE // // SET_MP_HUD_ON_SCREEN(TRUE) // IF NOT (IS_TRANSITION_MENU_TRIGGERED()) // TRIGGER_TRANSITION_MENU_ACTIVE(TRUE) // ENDIF // ELIF IS_DEBUG_KEY_JUST_PRESSED(KEY_L, KEYBOARD_MODIFIER_SHIFT, " Debug Start as a Lost MC ") // PRINTSTRING("/n SELECTOR - Selected a Biker with shift-N") // g_qlWhichTeam = QUICKLAUNCH_CNC_BIKER // g_HaveIShiftedIntoTheGame = TRUE // // SET_MP_HUD_ON_SCREEN(TRUE) // IF NOT (IS_TRANSITION_MENU_TRIGGERED()) // TRIGGER_TRANSITION_MENU_ACTIVE(TRUE) // ENDIF // ELIF IS_DEBUG_KEY_JUST_PRESSED(KEY_R, KEYBOARD_MODIFIER_CTRL, " Debug Start as a Spectator ") // PRINTSTRING("/n SELECTOR - Selected a spectator with ctrl-R") // g_qlWhichTeam = QUICKLAUNCH_CNC_SPECTATOR // g_HaveIShiftedIntoTheGame = TRUE // // SET_MP_HUD_ON_SCREEN(TRUE) // IF NOT (IS_TRANSITION_MENU_TRIGGERED()) // TRIGGER_TRANSITION_MENU_ACTIVE(TRUE) // ENDIF IF IS_DEBUG_KEY_JUST_PRESSED(KEY_O, KEYBOARD_MODIFIER_CTRL, " Debug Start FREEMODE as a Spectator ") PRINTSTRING("/n SELECTOR - Selected a spectator with alt-R") g_qlWhichTeam = QUICKLAUNCH_FREEMODE_SPECTATOR g_HaveIShiftedIntoTheGame = TRUE // SET_MP_HUD_ON_SCREEN(TRUE) IF NOT (IS_TRANSITION_MENU_TRIGGERED()) TRIGGER_TRANSITION_MENU_ACTIVE(TRUE) ENDIF ELIF IS_DEBUG_KEY_JUST_PRESSED(KEY_F, KEYBOARD_MODIFIER_SHIFT, " Debug Start in FREEMODE ") PRINTSTRING("/n SELECTOR - Selected a Freemode with shift-F ") g_qlWhichTeam = QUICKLAUNCH_FREEMODE g_HaveIShiftedIntoTheGame = TRUE // SET_MP_HUD_ON_SCREEN(TRUE) IF NOT (IS_TRANSITION_MENU_TRIGGERED()) TRIGGER_TRANSITION_MENU_ACTIVE(TRUE) ENDIF ELIF IS_DEBUG_KEY_JUST_PRESSED(KEY_Q, KEYBOARD_MODIFIER_SHIFT, " Debug RETURN TO SINGLEPLAYER ") PRINTSTRING("/n SELECTOR - Selected a SinglePlayer with shift-Q ") g_iLeaveMultiplayerState = LEAVE_MP_STATE_YES g_HaveIShiftedIntoTheGame = TRUE g_TransitionCameraState = LEAVEMPHUD_MPTOSP STOP_PLAYER_SWITCH() SET_CURRENT_GAMEMODE(GAMEMODE_EMPTY) // SET_MP_HUD_ON_SCREEN(TRUE) IF NOT (IS_TRANSITION_MENU_TRIGGERED()) TRIGGER_TRANSITION_MENU_ACTIVE(TRUE) ENDIF ENDIF ENDIF ENDPROC PROC MAINTAIN_SELECTOR_MULTIPLAYER_QUICKLAUNCH_TRANSITION() #IF IS_DEBUG_BUILD IF GET_COMMANDLINE_PARAM_EXISTS("sc_DisableShiftEntryToMP") EXIT ENDIF #ENDIF IF g_bDeleteAllCharsQuick = FALSE AND SCRIPT_IS_CLOUD_AVAILABLE() //Jump Straight into a game as a cop or a mexican // IF IS_DEBUG_KEY_JUST_PRESSED(KEY_C, KEYBOARD_MODIFIER_SHIFT, " Debug Start as a Cop ") // IF GET_CURRENT_GAMEMODE() = GAMEMODE_CnC // PRINTSTRING("SELECTOR - Selected Swap Team to a Cop with shift-C") // SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_SWAPTO_COP) // ELSE // PRINTSTRING("SELECTOR - Selected a Cop with shift-C") // SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_COP) // ENDIF // ELIF IS_DEBUG_KEY_JUST_PRESSED(KEY_M, KEYBOARD_MODIFIER_SHIFT, " Debug Start as a Mexican ") // PRINTSTRING("/n SELECTOR - Selected a Mexican with shift-M") // IF GET_CURRENT_GAMEMODE() = GAMEMODE_CnC // PRINTSTRING("SELECTOR - Selected Swap Team to a Vagos with shift-M") // SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_SWAPTO_VAGOS) // ELSE // PRINTSTRING("SELECTOR - Selected a Vagos with shift-M") // SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_VAGOS) // ENDIF // ELIF IS_DEBUG_KEY_JUST_PRESSED(KEY_L, KEYBOARD_MODIFIER_SHIFT, " Debug Start as a Lost MC ") // IF GET_CURRENT_GAMEMODE() = GAMEMODE_CnC // PRINTSTRING("SELECTOR - Selected Swap Team to a Biker with shift-N") // SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_SWAPTO_BIKER) // ELSE // PRINTSTRING("/n SELECTOR - Selected a Biker with shift-N") // SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_BIKER) // ENDIF // IF IS_DEBUG_KEY_JUST_PRESSED(KEY_R, KEYBOARD_MODIFIER_CTRL, " Debug Start as a Spectator") // IF GET_CURRENT_GAMEMODE() = GAMEMODE_CnC // PRINTSTRING("SELECTOR - Selected Swap Team to a Spectator with shift-R") // SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_SWAPTO_SPECTATOR) // ELSE // PRINTSTRING("/n SELECTOR - Selected a Biker with ctrl-R") // SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_SPECTATOR) // ENDIF // IF IS_DEBUG_KEY_JUST_PRESSED(KEY_O, KEYBOARD_MODIFIER_CTRL, " Debug Start as FREEMODE a Spectator") // PRINTSTRING("/n SELECTOR - Selected a Freemode as spectator with alt-R ") // SET_QUICKLAUNCH_STATE(QUICKLAUNCH_FREEMODE_SPECTATOR) // STOP_PLAYER_SWITCH() // IF ((IS_DEBUG_KEY_JUST_PRESSED(KEY_F, KEYBOARD_MODIFIER_SHIFT, " Debug Start in FREEMODE ")) OR ((GET_COMMANDLINE_PARAM_EXISTS("sc_botperformancetest") AND (g_bAlreadySkippedIntoFreemode=FALSE)))) PRINTSTRING("/n SELECTOR - Selected a Freemode with shift-F ") g_bAlreadySkippedIntoFreemode = TRUE STOP_PLAYER_SWITCH() SET_QUICKLAUNCH_STATE(QUICKLAUNCH_FREEMODE) ELIF (GET_COMMANDLINE_PARAM_EXISTS("sc_mpUnlockAllFreemode") AND NOT g_bAlreadySkippedIntoFreemode) PRINTSTRING("/n SELECTOR - launch Freemode with sc_mpUnlockAllFreemode command line ") g_bAlreadySkippedIntoFreemode = TRUE STOP_PLAYER_SWITCH() SET_QUICKLAUNCH_STATE(QUICKLAUNCH_FREEMODE) ELIF IS_DEBUG_KEY_JUST_PRESSED(KEY_Q, KEYBOARD_MODIFIER_SHIFT, " Debug RETURN TO SINGLEPLAYER ") PRINTSTRING("/n SELECTOR - Selected a SinglePlayer with shift-Q ") SET_QUICKLAUNCH_STATE(QUICKLAUNCH_SP) STOP_PLAYER_SWITCH() ELIF IS_DEBUG_KEY_JUST_PRESSED(KEY_Q, KEYBOARD_MODIFIER_CTRL, " Debug RETURN TO SINGLEPLAYER - EVERYONE ") PRINTSTRING("/n SELECTOR - Selected a SinglePlayer Kicker with Ctrl-Q ") SET_QUICKLAUNCH_STATE(QUICKLAUNCH_SP) STOP_PLAYER_SWITCH() GlobalplayerBD[NATIVE_TO_INT(PLAYER_ID())].bKickEveryoneOutSessionTrigger = TRUE g_iKickEveryoneOutSessionPlayerNumber = NATIVE_TO_INT(PLAYER_ID()) // ELIF IS_DEBUG_KEY_JUST_PRESSED(KEY_C, KEYBOARD_MODIFIER_ALT, " Debug Start as a Cop with tutorial ") // IF GET_CURRENT_GAMEMODE() = GAMEMODE_CnC // PRINTSTRING("SELECTOR - Selected Swap Team to a Cop with alt-C") // SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_SWAPTO_COP_WTUTORIAL) // ELSE // PRINTSTRING("SELECTOR - Selected a Cop with alt-C") // SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_COP_WTUTORIAL) // ENDIF // ELIF IS_DEBUG_KEY_JUST_PRESSED(KEY_V, KEYBOARD_MODIFIER_ALT, " Debug Start as a Vagos with tutorial ") // PRINTSTRING("/n SELECTOR - Selected a Vagos with alt-V") // IF GET_CURRENT_GAMEMODE() = GAMEMODE_CnC // PRINTSTRING("SELECTOR - Selected Swap Team to a Vagos with alt-V") // SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_SWAPTO_VAGOS_WTUTORIAL) // ELSE // PRINTSTRING("SELECTOR - Selected a Vagos with alt-V") // SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_VAGOS_WTUTORIAL) // ENDIF // ELIF IS_DEBUG_KEY_JUST_PRESSED(KEY_L, KEYBOARD_MODIFIER_ALT, " Debug Start as a Lost MC with tutorial ") // IF GET_CURRENT_GAMEMODE() = GAMEMODE_CnC // PRINTSTRING("SELECTOR - Selected Swap Team to a Lost MC with alt-N") // SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_SWAPTO_BIKER_WTUTORIAL) // ELSE // PRINTSTRING("/n SELECTOR - Selected a Lost MC with alt-N") // SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_BIKER_WTUTORIAL) // ENDIF ENDIF ENDIF /* IF g_binitiatejoinleavetest = TRUE IF GET_CURRENT_GAMEMODE() = GAMEMODE_SP //AND IS_PLAYER_PLAYING(PLAYER_ID()) PRINTSTRING("/n Switch to Freemode with automated test ") SET_QUICKLAUNCH_STATE(QUICKLAUNCH_FREEMODE) ENDIF IF GET_CURRENT_GAMEMODE() = GAMEMODE_FM //AND IS_PLAYER_PLAYING(PLAYER_ID()) PRINTSTRING("/n Switch to CNC Mexican gang automated test") SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_SWAPTO_VAGOS) ENDIF IF GET_CURRENT_GAMEMODE() = GAMEMODE_CnC //AND IS_PLAYER_PLAYING(PLAYER_ID()) PRINTSTRING("/n Switch to Single Player with automated test") SET_QUICKLAUNCH_STATE(QUICKLAUNCH_SP) ENDIF ENDIF */ ENDPROC PROC INITIALISE_SELECTOR_WIDGETS() widgetID = START_WIDGET_GROUP("Selector Debug") ADD_WIDGET_BOOL("g_sSelectorUI.bMustReleaseSelectorUIButton", g_sSelectorUI.bMustReleaseSelectorUIButton) ADD_WIDGET_BOOL("g_sSelectorUI.bMustReleaseCancelButton", g_sSelectorUI.bMustReleaseCancelButton) ADD_WIDGET_BOOL("g_sSelectorUI.bMustReleaseAcceptButton", g_sSelectorUI.bMustReleaseAcceptButton) ADD_WIDGET_BOOL("g_sSelectorUI.bMustReleaseSquareButton", g_sSelectorUI.bMustReleaseSquareButton) ADD_WIDGET_BOOL("PAUSE MENU ACTIVE EX", bPauseMenuActiveEX_Debug) ADD_WIDGET_BOOL("PAUSE MENU ACTIVE", bPauseMenuActive_Debug) ADD_WIDGET_BOOL("g_bGTAOnlineAvailable", g_bGTAOnlineAvailable) ADD_WIDGET_BOOL("bDisplayAutoSwitchHint0", bDisplayAutoSwitchHint0) ADD_WIDGET_BOOL("bDisplayAutoSwitchHint1", bDisplayAutoSwitchHint1) ADD_WIDGET_BOOL("bDisplayAutoSwitchHint2", bDisplayAutoSwitchHint2) //ADD_WIDGET_FLOAT_SLIDER("PLAYER SWITCH X", fPLAYER_SWITCH_X, -1.0, 1.0, 0.001) ADD_WIDGET_FLOAT_SLIDER("PLAYER SWITCH Y", fPLAYER_SWITCH_Y, -1.0, 1.0, 0.001) ADD_WIDGET_FLOAT_SLIDER("PLAYER SWITCH W", fPLAYER_SWITCH_W, -1.0, 1.0, 0.001) ADD_WIDGET_FLOAT_SLIDER("PLAYER SWITCH H", fPLAYER_SWITCH_H, -1.0, 1.0, 0.001) ADD_WIDGET_FLOAT_SLIDER("fPLAYER SWITCH SCALE W", fPLAYER_SWITCH_SCALE_W, 0.0, 2.0, 0.001) ADD_WIDGET_FLOAT_SLIDER("fPLAYER SWITCH SCALE H", fPLAYER_SWITCH_SCALE_H, 0.0, 2.0, 0.001) //ADD_WIDGET_FLOAT_SLIDER("fPLAYER SWITCH WIDE POS X", fPLAYER_SWITCH_WIDE_WIDE_POS_X, 0.0, 2.0, 0.001) ADD_WIDGET_FLOAT_SLIDER("fPLAYER SWITCH WIDE SCALE", fPLAYER_SWITCH_WIDE_SCALE, 0.0, 2.0, 0.001) ADD_WIDGET_FLOAT_SLIDER("PLAYER STATS X", fPLAYER_STATS_X, -1.0, 1.0, 0.001) ADD_WIDGET_FLOAT_SLIDER("PLAYER STATS Y", fPLAYER_STATS_Y, -1.0, 1.0, 0.001) ADD_WIDGET_FLOAT_SLIDER("PLAYER STATS W", fPLAYER_STATS_W, -1.0, 1.0, 0.001) ADD_WIDGET_FLOAT_SLIDER("PLAYER STATS H", fPLAYER_STATS_H, -1.0, 1.0, 0.001) ADD_WIDGET_FLOAT_SLIDER("PLAYER STATS SCALE W", fPLAYER_STATS_SCALE_W, 0.0, 2.0, 0.001) ADD_WIDGET_FLOAT_SLIDER("PLAYER STATS SCALE H", fPLAYER_STATS_SCALE_H, 0.0, 2.0, 0.001) ADD_WIDGET_FLOAT_SLIDER("fMISSION_NAME_X", fMISSION_NAME_X, -2.0, 2.0, 0.001) ADD_WIDGET_FLOAT_SLIDER("fMISSION_NAME_Y", fMISSION_NAME_Y, -2.0, 2.0, 0.001) ADD_WIDGET_BOOL("Activate Debug Display", g_sSelectorUI.debug_bDisplay) ADD_WIDGET_BOOL("SWITCH cam active", g_bSelectorCamActive) ADD_WIDGET_STRING("Switch UI states") ADD_WIDGET_INT_READ_ONLY("eUIstateCurrent", iCurrentState_Debug) ADD_WIDGET_BOOL("bDisabled", g_sSelectorUI.bDisabled) ADD_WIDGET_BOOL("bDisabledThisFrame", g_sSelectorUI.bDisabledThisFrame) ADD_WIDGET_BOOL("bDisableForEndOfMission", g_sSelectorUI.bDisableForEndOfMission) ADD_WIDGET_BOOL("bHiddenThisFrame", g_sSelectorUI.bHiddenThisFrame) ADD_WIDGET_BOOL("bDisplay", g_sSelectorUI.bDisplay) ADD_WIDGET_BOOL("bRequested", bRequested) ADD_WIDGET_BOOL("bLoaded", g_sSelectorUI.bLoaded) ADD_WIDGET_BOOL("bSetup", g_sSelectorUI.bSetup) ADD_WIDGET_BOOL("bOnScreen", g_sSelectorUI.bOnScreen) ADD_WIDGET_BOOL("bMissionUpdate", g_sSelectorUI.bMissionUpdate) ADD_WIDGET_BOOL("bCharAvailable", g_sSelectorUI.bCharAvailable) ADD_WIDGET_BOOL("bFirstSelectionMade", g_sSelectorUI.bFirstSelectionMade) ADD_WIDGET_BOOL("bForceUpdate", g_sSelectorUI.bForceUpdate) ADD_WIDGET_BOOL("bSelection", bSelection) ADD_WIDGET_BOOL("bForceUpdateCountdown", bForceUpdateCountdown) ADD_WIDGET_BOOL("bForceLoad_Debug", bForceLoad_Debug) ADD_WIDGET_BOOL("bHideThisFrame_Debug", bHideThisFrame_Debug) ADD_WIDGET_BOOL("bAllowHiddenSelection_Debug", bAllowHiddenSelection_Debug) ADD_WIDGET_BOOL("bSuppressUIForShortSwitch", bSuppressUIForShortSwitch) ADD_WIDGET_INT_READ_ONLY("iSelectedSlot", g_sSelectorUI.iSelectedSlot) ADD_WIDGET_INT_READ_ONLY("iSelectedSlotOnLoad", iSelectedSlotOnLoad) ADD_WIDGET_INT_READ_ONLY("Current mission type", iMissionType_Debug) ADD_WIDGET_BOOL("bTimescale_Debug", bTimescale_Debug) ADD_WIDGET_BOOL("bSFX_BlockAudioCalls", g_sSelectorUI.bSFX_BlockAudioCalls) ADD_WIDGET_INT_READ_ONLY("SkySwoopStage", iSkySwoopWidget) //ADD_WIDGET_BOOL("g_bKillFMMCmenu", g_bKillFMMCmenu) // ADD_WIDGET_BOOL("g_FMMC_STRUCT.bKillFMMC", g_FMMC_STRUCT.bKillFMMC) ADD_WIDGET_STRING("Code switch") ADD_WIDGET_BOOL("g_bUseTransitionCamera", g_sSelectorUI.debug_bUseTransitionCamera) ADD_WIDGET_FLOAT_SLIDER("g_fSwitchPedAfterPhase", g_sSelectorUI.debug_fSwitchPedAfterPhase, 0.0, 1.0, 0.1) STOP_WIDGET_GROUP() WidgetID = widgetID //compile fix g_sSelectorUI.debug_fSwitchPedAfterPhase = 0.5 ENDPROC PROC UPDATE_SELECTOR_WIDGETS() iCurrentState_Debug = ENUM_TO_INT(g_sSelectorUI.eUIStateCurrent) iMissionType_Debug = ENUM_TO_INT(g_OnMissionState) bPauseMenuActiveEX_Debug = IS_PAUSE_MENU_ACTIVE_EX() bPauseMenuActive_Debug = IS_PAUSE_MENU_ACTIVE() IF bForceLoad_Debug FORCE_LOAD_SELECTOR_THIS_FRAME() ENDIF IF bHideThisFrame_Debug HIDE_SELECTOR_THIS_FRAME(TRUE, bAllowHiddenSelection_Debug) ENDIF IF bTimescale_Debug IF NOT g_bDrawLiteralSceneString SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE) g_bDrawLiteralSceneString = TRUE ENDIF TEXT_LABEL_63 str str = "fTargetScale: " str += GET_STRING_FROM_FLOAT(fTargetScale) DrawDebugSceneTextWithOffset(str, GET_ENTITY_COORDS(PLAYER_PED_ID()), -5.0, HUD_COLOUR_PURE_WHITE) str = "fLastTimeScaleSet: " str += GET_STRING_FROM_FLOAT(fLastTimeScaleSet) DrawDebugSceneTextWithOffset(str, GET_ENTITY_COORDS(PLAYER_PED_ID()), -4.0, HUD_COLOUR_PURE_WHITE) ENDIF IF bDisplayAutoSwitchHint0 DISPLAY_SELECTOR_PED_AUTOSWITCH_UI(SELECTOR_PED_MICHAEL) bDisplayAutoSwitchHint0 = FALSE ENDIF IF bDisplayAutoSwitchHint1 DISPLAY_SELECTOR_PED_AUTOSWITCH_UI(SELECTOR_PED_FRANKLIN) bDisplayAutoSwitchHint1 = FALSE ENDIF IF bDisplayAutoSwitchHint2 DISPLAY_SELECTOR_PED_AUTOSWITCH_UI(SELECTOR_PED_TREVOR) bDisplayAutoSwitchHint2 = FALSE ENDIF IF g_sSelectorUI.debug_bDisplay INT i TEXT_LABEL_63 sTempLabel REPEAT 4 i IF DOES_ENTITY_EXIST(g_sSelectorUI.debug_pedID[i]) IF NOT DOES_BLIP_EXIST(g_sSelectorUI.debug_blipID[i]) g_sSelectorUI.debug_blipID[i] = ADD_BLIP_FOR_ENTITY(g_sSelectorUI.debug_pedID[i]) IF i = 0 SET_BLIP_SPRITE(g_sSelectorUI.debug_blipID[i], RADAR_TRACE_MICHAEL_FAMILY) ELIF i = 1 SET_BLIP_SPRITE(g_sSelectorUI.debug_blipID[i], RADAR_TRACE_TREVOR_FAMILY) ELIF i = 2 SET_BLIP_SPRITE(g_sSelectorUI.debug_blipID[i], RADAR_TRACE_FRANKLIN_FAMILY) ENDIF SET_BLIP_FLASHES(g_sSelectorUI.debug_blipID[i], FALSE) g_sSelectorUI.debug_bBlipFlashing[i] = FALSE ENDIF IF NOT IS_PED_INJURED(g_sSelectorUI.debug_pedID[i]) IF g_sSelectorUI.debug_bBlipFlashing[i] SET_BLIP_FLASHES(g_sSelectorUI.debug_blipID[i], FALSE) g_sSelectorUI.debug_bBlipFlashing[i] = FALSE ENDIF ELSE IF NOT g_sSelectorUI.debug_bBlipFlashing[i] SET_BLIP_FLASHES(g_sSelectorUI.debug_blipID[i], TRUE) g_sSelectorUI.debug_bBlipFlashing[i] = TRUE ENDIF ENDIF ELSE IF DOES_BLIP_EXIST(g_sSelectorUI.debug_blipID[i]) REMOVE_BLIP(g_sSelectorUI.debug_blipID[i]) ENDIF ENDIF IF i = 0 sTempLabel = "pedID[SELECTOR_PED_MICHAEL] = " ENDIF IF i = 1 sTempLabel = "pedID[SELECTOR_PED_FRANKLIN] = " ENDIF IF i = 2 sTempLabel = "pedID[SELECTOR_PED_TREVOR] = " ENDIF IF i = 3 sTempLabel = "pedID[SELECTOR_PED_MULTIPLAYER] = " ENDIF IF NOT DOES_ENTITY_EXIST(g_sSelectorUI.debug_pedID[i]) OR IS_PED_INJURED(g_sSelectorUI.debug_pedID[i]) sTempLabel += "DEAD" ELSE sTempLabel += "ALIVE" ENDIF IF g_sSelectorUI.debug_bHintState[i] sTempLabel += "-HINTED" ENDIF IF g_sSelectorUI.debug_bBlockState[i] sTempLabel += "-BLOCKED" ENDIF IF g_sSelectorUI.debug_iState[i] = 0 sTempLabel += "-NOTSET" ELIF g_sSelectorUI.debug_iState[i] = 1 // AVAILABLE = 1 sTempLabel += "-AVAILABLE" ELIF g_sSelectorUI.debug_iState[i] = 2 // UNAVAIL = 2 sTempLabel += "-UNAVAIL" ELIF g_sSelectorUI.debug_iState[i] = 3 // NOTMET= 3 sTempLabel += "-NOTMET" ENDIF SET_TEXT_SCALE(0.0, 0.3) SET_TEXT_COLOUR(255, 255, 255, 255) SET_TEXT_CENTRE(FALSE) SET_TEXT_DROPSHADOW(0, 0, 0, 0, 0) SET_TEXT_EDGE(0, 0, 0, 0, 0) DISPLAY_TEXT_WITH_LITERAL_STRING(0.0500, 0.375+(i*0.03), "STRING", sTempLabel) ENDREPEAT ELSE INT i REPEAT 3 i IF DOES_BLIP_EXIST(g_sSelectorUI.debug_blipID[i]) REMOVE_BLIP(g_sSelectorUI.debug_blipID[i]) ENDIF ENDREPEAT ENDIF ENDPROC PROC UPDATE_SKYSWOOP_WIDGETS() SKYSWOOP Swoop = GET_SKYSWOOP_STAGE() SWITCH Swoop CASE SKYSWOOP_NONE iSkySwoopWidget = 0 BREAK CASE SKYSWOOP_GOINGUP iSkySwoopWidget = 1 BREAK CASE SKYSWOOP_INSKYSTATIC iSkySwoopWidget = 2 BREAK CASE SKYSWOOP_INSKYMOVING iSkySwoopWidget = 3 BREAK CASE SKYSWOOP_GOINGDOWN iSkySwoopWidget = 4 BREAK ENDSWITCH ENDPROC #ENDIF PROC GET_STAT_BOX_X_POS( FLOAT &fXPosition) INT fX, fY GET_ACTUAL_SCREEN_RESOLUTION( fX, fY ) FLOAT fPhysAspect = ( TO_FLOAT( fX ) / TO_FLOAT( fY ) ) FLOAT fFakeAspect = GET_ASPECT_RATIO( FALSE ) // Fix for B* 2264324 - Problems with selector position when in aspect over 3:2 IF fPhysAspect > ( 3.0 / 2.0 ) AND fPhysAspect < 3.5 // Below triple head physical aspect ratio. IF fFakeAspect = ( 16.0 / 9.0 ) OR fFakeAspect = ( 17.0 / 9.0 ) OR ( fFakeAspect = ( 21.0 / 9.0 ) AND fPhysAspect >= ( 17.0 / 9.0 ) ) fXPosition = 0.042 ELIF fFakeAspect = ( 5.0 / 3.0 ) fXPosition = 0.045 // Few hard coded values depending on the aspect ratio ELIF fFakeAspect = ( 16.0 / 10.0 ) fXPosition = 0.047 ELIF fPhysAspect % fFakeAspect = 0.0 fXPosition = 0.047 // If the aspect ratio is the same as the physical aspect ELSE // and hasn't been caught by standard ratio above fXPosition = F_STAT_X_POSITION ENDIF ELSE fXPosition = F_STAT_X_POSITION ENDIF ENDPROC /// PURPOSE: Clears all the runtime states to match ambient setup PROC MAINTAIN_SELECTOR_RUNTIME_STATES() g_sSelectorUI.bForceUpdate = FALSE g_sSelectorUI.bFakeStateUpdated = FALSE g_sSelectorUI.bCharAvailable = FALSE g_sSelectorUI.bSelection = FALSE g_sSelectorUI.bMissionUpdate = FALSE g_sSelectorUI.bCheckPlayerControl = TRUE g_sSelectorUI.bCheckActivationButton = TRUE g_sSelectorUI.bAllowWhenDead = FALSE g_sSelectorUI.bHiddenThisFrame = FALSE g_sSelectorUI.bAllowSelectionWhenHidden = FALSE g_sSelectorUI.bForceLoadThisFrame = FALSE g_sSelectorUI.bDisableMapOverrideThisFrame = FALSE g_sSelectorUI.bHideUiForSwitch = FALSE IF bDisabledLastFrame AND NOT g_sSelectorUI.bDisabledThisFrame PRINTLN("DISABLE_SELECTOR_THIS_FRAME() stopped getting called") #IF IS_DEBUG_BUILD g_sSelectorUI.tlDisableScript = "" #ENDIF ENDIF bDisabledLastFrame = g_sSelectorUI.bDisabledThisFrame g_sSelectorUI.bDisabledThisFrame = FALSE #IF USE_REPLAY_RECORDING_TRIGGERS IF bReplayFeedDisabledLastFrame AND NOT g_sSelectorUI.bReplayFeedDisabledThisFrame PRINTLN("DISABLE_REPLAY_RECORDING_UI_THIS_FRAME() stopped getting called") #IF IS_DEBUG_BUILD g_sSelectorUI.tlDisableReplayFeedScript = "" #ENDIF ENDIF bReplayFeedDisabledLastFrame = g_sSelectorUI.bReplayFeedDisabledThisFrame g_sSelectorUI.bReplayFeedDisabledThisFrame = FALSE #ENDIF IF g_sSelectorUI.bDisableForEndOfMission IF (GET_GAME_TIMER() - g_sSelectorUI.iEndOfMissionTimer) > 5000 OR NETWORK_IS_GAME_IN_PROGRESS() g_sSelectorUI.bDisableForEndOfMission = FALSE ENDIF ENDIF bMatchmakingCardOnscreen = g_Show_Lap_Dpad // we cache this value so that it's state change can be handled a frame later. #IF USE_REPLAY_RECORDING_TRIGGERS IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_CHARACTER_WHEEL) AND NOT IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_CHARACTER_WHEEL) g_sSelectorUI.bMustReleaseSelectorUIButton = FALSE ENDIF IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL) AND NOT IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL) g_sSelectorUI.bMustReleaseCancelButton = FALSE ENDIF IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT) AND NOT IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT) AND NOT IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_PARACHUTE_DEPLOY) AND NOT IS_DISABLED_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_PARACHUTE_DEPLOY) g_sSelectorUI.bMustReleaseAcceptButton = FALSE ENDIF IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_X) AND NOT IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_X) g_sSelectorUI.bMustReleaseSquareButton = FALSE ENDIF #ENDIF ENDPROC ////////////////////////////////////////////////////////////////////////////////////////// /// Scaleform related procedures /// /// PURPOSE: Requests the selector UI Scaleform movie PROC LOAD_SELECTOR_UI() IF NOT g_sSelectorUI.bLoaded IF (NOT NETWORK_IS_GAME_IN_PROGRESS() AND (GET_GAME_TIMER() - iLoadMoviesTimer) > 300) OR (NETWORK_IS_GAME_IN_PROGRESS() AND (IS_TIME_MORE_THAN(GET_NETWORK_TIME(), GET_TIME_OFFSET(tdLoadMoviesTimer, 300)) OR ABSI(GET_TIME_DIFFERENCE(GET_NETWORK_TIME(), tdLoadMoviesTimer)) > 1000)) IF NOT NETWORK_IS_GAME_IN_PROGRESS() OR NOT bMatchmakingCardOnscreen IF NOT bRequested IF MISSION_FLOW_GET_RUNNING_MISSION() = SP_MISSION_PROLOGUE movieID = REQUEST_SCALEFORM_MOVIE("PLAYER_SWITCH_PROLOGUE") bUsingPrologueMovie = TRUE ELSE movieID = REQUEST_SCALEFORM_MOVIE("PLAYER_SWITCH") movieID2 = REQUEST_SCALEFORM_MOVIE("PLAYER_SWITCH_STATS_PANEL") bUsingPrologueMovie = FALSE ENDIF PRINTSTRING("\n LOAD_SELECTOR_UI - Requesting scaleform movies.")PRINTNL() bRequested = TRUE //g_sSelectorUI.iSFX_Display = -1 ENDIF bSwitchAvailableAudioPlayed = FALSE g_sSelectorUI.bForceUpdate = TRUE g_sSelectorUI.bLoaded = FALSE IF HAS_SCALEFORM_MOVIE_LOADED(movieID) AND (bUsingPrologueMovie OR HAS_SCALEFORM_MOVIE_LOADED(movieID2)) IF NOT bSetSystemTimer PRINTLN("LOAD_SELECTOR_UI - Setting scaleform movie to use system time") SET_SCALEFORM_MOVIE_TO_USE_SYSTEM_TIME(movieID, TRUE) bSetSystemTimer = TRUE ENDIF g_sSelectorUI.bLoaded = TRUE ENDIF ELSE PRINTSTRING("\n LOAD_SELECTOR_UI - Waiting for matchmaking card to be removed before requesting scaleform movies.")PRINTNL() ENDIF ELSE #IF IS_DEBUG_BUILD IF NETWORK_IS_GAME_IN_PROGRESS() PRINTSTRING("\n LOAD_SELECTOR_UI - Waiting for load timer to pass before requesting scaleform movies. Time diff=")PRINTINT(ABSI(GET_TIME_DIFFERENCE(GET_NETWORK_TIME(), tdLoadMoviesTimer)))PRINTNL() ELSE PRINTSTRING("\n LOAD_SELECTOR_UI - Waiting for load timer to pass before requesting scaleform movies.")PRINTNL() ENDIF #ENDIF ENDIF ENDIF iCleanupMoviesTimer = GET_GAME_TIMER() // IF NETWORK_IS_GAME_IN_PROGRESS() // tdCleanupMoviesTimer = GET_NETWORK_TIME() // ENDIF ENDPROC #IF USE_REPLAY_RECORDING_TRIGGERS STRUCT REPLAY_DISPLAY_DATA INT iGameTime TIME_DATATYPE tdNetworkTime BOOL bRequestFeed ENDSTRUCT REPLAY_DISPLAY_DATA sReplayData PROC UPDATE_REPLAY_RECORDING_FEED_REQUEST(BOOL &bDisplayReplayFeedIcons) IF bDisplayReplayFeedIcons // Set the time we first request the feed so we can add a small delay for displaying. // This allows us to ignore the tapping of dpad_down. IF NOT sReplayData.bRequestFeed sReplayData.iGameTime = GET_GAME_TIMER() IF NETWORK_IS_GAME_IN_PROGRESS() sReplayData.tdNetworkTime = GET_NETWORK_TIME() ENDIF sReplayData.bRequestFeed = TRUE ENDIF IF NOT g_sSelectorUI.bDisplay IF (NOT NETWORK_IS_GAME_IN_PROGRESS() AND (GET_GAME_TIMER() - sReplayData.iGameTime) < SELECTOR_UI_AMBIENT_SP_TIME_msec) OR (NETWORK_IS_GAME_IN_PROGRESS() AND ABSI(GET_TIME_DIFFERENCE(GET_NETWORK_TIME(), sReplayData.tdNetworkTime)) < SELECTOR_UI_AMBIENT_MP_TIME_msec) bDisplayReplayFeedIcons = FALSE #IF IS_DEBUG_BUILD IF NETWORK_IS_GAME_IN_PROGRESS() PRINTLN("UPDATE_REPLAY_RECORDING_FEED_REQUEST - FALSE: Initial delay, will start in ", 300-ABSI(GET_TIME_DIFFERENCE(GET_NETWORK_TIME(), sReplayData.tdNetworkTime))) ELSE PRINTLN("UPDATE_REPLAY_RECORDING_FEED_REQUEST - FALSE: Initial delay, will start in ", 300-(GET_GAME_TIMER() - sReplayData.iGameTime)) ENDIF #ENDIF ENDIF ENDIF ELSE sReplayData.bRequestFeed = FALSE ENDIF ENDPROC FUNC BOOL IS_REPLAY_RECORDING_UI_SAFE_TO_USE() #IF IS_DEBUG_BUILD BOOL bOutputDebug IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_DOWN) OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_DOWN) bOutputDebug = TRUE ENDIF #ENDIF IF (g_sSelectorUI.bReplayFeedDisabledThisFrame) OR (IS_PED_INJURED(PLAYER_PED_ID())) OR (NOT IS_PLAYER_CONTROL_ON(PLAYER_ID())) OR (IS_PLAYER_SWITCH_IN_PROGRESS()) OR (IS_PLAYER_PED_SWITCH_IN_PROGRESS()) OR (IS_SCRIPT_HUD_DISPLAYING(HUDPART_TRANSITIONHUD)) OR (IS_CUTSCENE_PLAYING()) OR (IS_PHONE_ACTIVE_OR_OVERLAPPING_HUD_ITEMS()) OR (NOT IS_PLAYER_READY_FOR_CUTSCENE(PLAYER_ID()) AND GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("golf")) = 0) OR (IS_PLAYER_BEING_ARRESTED(PLAYER_ID())) OR (IS_REPLAY_BEING_PROCESSED()) OR (IS_TRANSITION_ACTIVE()) OR (IS_TRANSITION_SESSIONS_ACCEPTING_INVITE_WAIT_FOR_CLEAN()) OR (IS_RESULT_SCREEN_DISPLAYING()) OR (IS_TRANSITION_ACTIVE()) OR (IS_PLAYER_BROWSING_ITEMS_IN_ANY_SHOP()) OR (IS_CUSTOM_MENU_ON_SCREEN()) OR (NOT IS_SKYSWOOP_AT_GROUND()) OR (IS_PHONE_ONSCREEN()) OR (IS_PAUSE_MENU_ACTIVE()) OR (IS_SYSTEM_UI_BEING_DISPLAYED()) OR (GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("appCamera")) > 0) OR (GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("creator")) > 0) OR (IS_BROWSER_OPEN()) OR (g_bHeistEndscreenDisplaying) OR (IS_PLAYER_CHANGING_CLOTHES()) OR (NOT IS_REPLAY_INITIALIZED()) OR (NOT IS_REPLAY_AVAILABLE()) OR IS_BITMASK_AS_ENUM_SET(g_StripclubGlobals.iStripclubFlags, GSF_GETTING_LAP_DANCE) OR (NETWORK_IS_GAME_IN_PROGRESS() AND IS_PLAYER_DOING_A_YACHT_WARP(PLAYER_ID())) #IF FEATURE_GEN9_STANDALONE OR NOT HAS_STORY_ENTITLEMENT() #ENDIF #IF IS_DEBUG_BUILD IF bOutputDebug IF (g_sSelectorUI.bReplayFeedDisabledThisFrame) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Disabled this frame") ELIF (IS_PED_INJURED(PLAYER_PED_ID())) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Ped injured") ELIF (IS_PLAYER_SWITCH_IN_PROGRESS()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Code switch in progress") ELIF (IS_PLAYER_PED_SWITCH_IN_PROGRESS()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Scripted switch in progress") ELIF (IS_SCRIPT_HUD_DISPLAYING(HUDPART_TRANSITIONHUD)) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: HUD transition active") ELIF (IS_CUTSCENE_PLAYING()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Cutscene playing") ELIF (IS_PHONE_ACTIVE_OR_OVERLAPPING_HUD_ITEMS()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Phone active") ELIF (NOT IS_PLAYER_CONTROL_ON(PLAYER_ID())) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Player control turned off") ELIF (NOT IS_PLAYER_READY_FOR_CUTSCENE(PLAYER_ID())) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Not ready for cutscene") ELIF (IS_REPLAY_BEING_PROCESSED()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Processing replay") ELIF (IS_RESULT_SCREEN_DISPLAYING()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Result screen displaying") ELIF (IS_TRANSITION_ACTIVE()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Transition active") ELIF (IS_PLAYER_BROWSING_ITEMS_IN_ANY_SHOP()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Browsing items in shop") ELIF (IS_CUSTOM_MENU_ON_SCREEN()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Custom menu on screen") ELIF (NOT IS_SKYSWOOP_AT_GROUND()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Sky swoop not at ground") ELIF (IS_PHONE_ONSCREEN()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Phone on screen") ELIF (IS_PAUSE_MENU_ACTIVE()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Pause menu active") ELIF (IS_SYSTEM_UI_BEING_DISPLAYED()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: System UI on sreen") ELIF (IS_BROWSER_OPEN()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Browser visible") ELIF (g_bHeistEndscreenDisplaying) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Heist end screen") ELIF (IS_PLAYER_CHANGING_CLOTHES()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Changing clothes") ELIF (NOT IS_REPLAY_INITIALIZED()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Replay not initialised") ELIF (NOT IS_REPLAY_AVAILABLE()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Replay not available") ELIF IS_BITMASK_AS_ENUM_SET(g_StripclubGlobals.iStripclubFlags, GSF_GETTING_LAP_DANCE) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Player is getting a lapdance") ELIF (NETWORK_IS_GAME_IN_PROGRESS() AND IS_PLAYER_DOING_A_YACHT_WARP(PLAYER_ID())) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Player is moving yacht") #IF FEATURE_GEN9_STANDALONE ELIF (NOT HAS_STORY_ENTITLEMENT()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: No Story Entitlement") #ENDIF ELSE PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: missing") ENDIF ENDIF #ENDIF RETURN FALSE ENDIF RETURN TRUE ENDFUNC PROC CLEANUP_REPLAY_RECORD_FEED() IF g_sSelectorUI.bFeedAddedForRecording PRINTLN("SWITCH UI - [REPLAY-FEED] Cleaning up RECORDING items added for replay feed.") INT iPost REPEAT COUNT_OF(iRecPost) iPost IF iRecPost[iPost] != -1 THEFEED_REMOVE_ITEM(iRecPost[iPost]) iRecPost[iPost] = -1 ENDIF ENDREPEAT // Clear the prvious temp feed message for Action Replay On/Off IF iRecPostActionReplay != -1 THEFEED_REMOVE_ITEM(iRecPostActionReplay) iRecPostActionReplay = -1 ENDIF THEFEED_SET_SNAP_FEED_ITEM_POSITIONS(FALSE) THEFEED_RESUME() g_b_ReapplyStickySaveFailedFeed = FALSE g_sSelectorUI.bFeedAddedForRecording = FALSE ENDIF // Action Replay On IF bAddActionReplayOn PRINTLN("SWITCH UI - [REPLAY-FEED] Cleaning up ACTION REPLAY ON items added for replay feed.") // Clear the prvious temp feed message for Action Replay On/Off IF iRecPostActionReplay != -1 THEFEED_REMOVE_ITEM(iRecPostActionReplay) iRecPostActionReplay = -1 ENDIF BEGIN_TEXT_COMMAND_THEFEED_POST("REC_FEED_6") iRecPostActionReplay = END_TEXT_COMMAND_THEFEED_POST_REPLAY(ACTION_REPLAY, 0, "") bAddActionReplayOn = FALSE iActionReplayTimer = GET_GAME_TIMER() IF NETWORK_IS_GAME_IN_PROGRESS() tdActionReplayTimer = GET_NETWORK_TIME() ENDIF ENDIF // Action Replay Off IF bAddActionReplayOff PRINTLN("SWITCH UI - [REPLAY-FEED] Cleaning up ACTION REPLAY OFF items added for replay feed.") // Clear the prvious temp feed message for Action Replay On/Off IF iRecPostActionReplay != -1 THEFEED_REMOVE_ITEM(iRecPostActionReplay) iRecPostActionReplay = -1 ENDIF BEGIN_TEXT_COMMAND_THEFEED_POST("REC_FEED_7") iRecPostActionReplay = END_TEXT_COMMAND_THEFEED_POST_REPLAY(ACTION_REPLAY, 0, "") bAddActionReplayOff = FALSE iActionReplayTimer = GET_GAME_TIMER() IF NETWORK_IS_GAME_IN_PROGRESS() tdActionReplayTimer = GET_NETWORK_TIME() ENDIF ENDIF ENDPROC #ENDIF /// PURPOSE: Marks the selector UI Scaleform movie as no longer needed and resets states PROC CLEANUP_SELECTOR_UI() IF g_sSelectorUI.bLoaded DEBUG_PRINTCALLSTACK() PRINTSTRING("\n CLEANUP_SELECTOR_UI - Flagging scaleform movies to cleanup.")PRINTNL() bCleanupMovies = TRUE // SFX - UI on screen IF g_sSelectorUI.iSFX_Display != -1 AND g_sSelectorUI.iSFX_Display_ScriptHash = GET_HASH_KEY(GET_THIS_SCRIPT_NAME()) STOP_SOUND(g_sSelectorUI.iSFX_Display) PRINTLN("SWITCH UI - stopping sound: CHARACTER_CHANGE_DPAD_DOWN_MASTER") RELEASE_SOUND_ID(g_sSelectorUI.iSFX_Display) g_sSelectorUI.iSFX_Display = -1 g_sSelectorUI.iSFX_Display_ScriptHash = 0 SET_AUDIO_FLAG("ActivateSwitchWheelAudio", FALSE) ENDIF ENDIF IF bMapUpdated IF DOES_BLIP_EXIST(selectedPedBlip) REMOVE_BLIP(selectedPedBlip) ENDIF SET_HEALTH_HUD_DISPLAY_VALUES(-1, -1) SET_ABILITY_BAR_VALUE(-1, -1) SET_MAX_HEALTH_HUD_DISPLAY(0) SET_MAX_ARMOUR_HUD_DISPLAY(0) UNLOCK_MINIMAP_POSITION() ENDIF bMapUpdated = FALSE bSelection = FALSE bDisplayCharacterInfo = FALSE iSelectedSlotOnLoad = -1 iAutoSwitchSlot = -1 bHintIndicatorNotTriggered = FALSE g_sSelectorUI.bSelection = FALSE g_sSelectorUI.iSelectedSlot = -1 g_sSelectorUI.bSetup = FALSE g_sSelectorUI.bOnScreen = FALSE g_sSelectorUI.bCheckPlayerControl = TRUE g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_HIDDEN ENDPROC PROC LOAD_MP_HEADSHOT() SWITCH iLoadPedHeadStage CASE 0 IF IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_DIRECTOR) #IF IS_DEBUG_BUILD OR g_debugMenuControl.fTempPos[0] != 0.0 #ENDIF bSetPedHead = TRUE EXIT ENDIF IF IS_PLAYER_ONLINE() AND NETWORK_IS_SIGNED_ONLINE() AND NETWORK_IS_CLOUD_AVAILABLE() AND IS_GTA_ONLINE_AVAILABLE() AND NOT g_bGenerateInitialTransparentHeadshot //Don't even attempt to load a texture if we know a generate request //is in progress. This will save us from hammering the cloud. -BenR IF NOT HAS_NETWORK_TIME_STARTED() OR IS_TIME_MORE_THAN(GET_NETWORK_TIME(), g_sExportPlayerHeadshotCountdown) //If time is before this timer we know //we have a headshot request in progress. IF HAS_IMPORTANT_STATS_LOADED() AND IS_STAT_CHARACTER_ACTIVE(GET_ACTIVE_CHARACTER_SLOT()) PEDHEADSHOT_SP_SWITCH_REFRESH_CHECK() ENDIF GAMER_HANDLE playerHandle playerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID()) TEXT_LABEL_63 tlCloudPath iPedHeadSlot = GET_ACTIVE_CHARACTER_SLOT() tlCloudPath = Get_Headshot_dds_File(iPedHeadSlot) IF iPedHeadSlot != -1 iHeadshotTextureID = TEXTURE_DOWNLOAD_REQUEST(playerHandle, tlCloudPath, "selector_ui_headshot", g_bUseCachedTransparentLocalPlayerHeadshot[iPedHeadSlot]) #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_NET_HEADSHOTS, "=== SELECTOR === Cloud path set to ", tlCloudPath) CPRINTLN(DEBUG_NET_HEADSHOTS, "=== SELECTOR === Kenneth's selector used g_bUseCachedTransparentLocalPlayerHeadshot = ", g_bUseCachedTransparentLocalPlayerHeadshot[iPedHeadSlot]) #ENDIF ELSE iHeadshotTextureID = TEXTURE_DOWNLOAD_REQUEST(playerHandle, tlCloudPath, "selector_ui_headshot") #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_NET_HEADSHOTS, "=== SELECTOR === Cloud path set to ", tlCloudPath) #ENDIF ENDIF iLoadPedHeadStage++ ENDIF ENDIF BREAK CASE 1 IF TEXTURE_DOWNLOAD_HAS_FAILED(iHeadshotTextureID) CPRINTLN(DEBUG_NET_HEADSHOTS, "=== SELECTOR === Texture download failed. Flagging to generate a new headshot next time we're in MP.") g_bGenerateInitialTransparentHeadshot = TRUE iLoadPedHeadStage = 99 ELSE sMPPedHeadshot = TEXTURE_DOWNLOAD_GET_NAME(iHeadshotTextureID) IF NOT IS_STRING_NULL_OR_EMPTY(sMPPedHeadshot) IF iPedHeadSlot != -1 g_bUseCachedTransparentLocalPlayerHeadshot[iPedHeadSlot] = TRUE ENDIF #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_NET_HEADSHOTS, "=== SELECTOR === Kenneth's selector set sMPPedHeadshot = ", sMPPedHeadshot) #ENDIF bSetPedHead = TRUE iLoadPedHeadStage++ ENDIF ENDIF BREAK ENDSWITCH ENDPROC PROC CLEANUP_MP_HEADSHOT() IF iHeadshotTextureID != -1 TEXTURE_DOWNLOAD_RELEASE(iHeadshotTextureID) ENDIF iHeadshotTextureID = -1 sMPPedHeadshot = "" bSetPedHead = FALSE bPedHeadSet = FALSE iLoadPedHeadStage = 0 ENDPROC PROC REBUILD_STAT_UI() IF bUsingPrologueMovie EXIT ENDIF enumCharacterList eChar = NO_CHARACTER HUD_COLOURS eHudCol // Top IF g_sSelectorUI.iSelectedSlot = 0 eChar = CHAR_FRANKLIN eHudCol = HUD_COLOUR_FRANKLIN // Right ELIF g_sSelectorUI.iSelectedSlot = 1 eChar = CHAR_TREVOR eHudCol = HUD_COLOUR_TREVOR // Bottom ELIF g_sSelectorUI.iSelectedSlot = 2 eChar = CHAR_MULTIPLAYER eHudCol = HUD_COLOUR_FREEMODE // Left ELIF g_sSelectorUI.iSelectedSlot = 3 eChar = CHAR_MICHAEL eHudCol = HUD_COLOUR_MICHAEL ENDIF BEGIN_SCALEFORM_MOVIE_METHOD(movieID2, "SET_STATS_LABELS") // ADD: Character colour SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(ENUM_TO_INT(eHudCol)) // ADD: Split into 10 SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL((eChar = CHAR_MULTIPLAYER)) INT iStat REPEAT NUMBER_OF_PLAYER_STATS iStat IF iStat != ENUM_TO_INT(PS_SPECIAL_ABILITY) OR g_sSelectorUI.iSelectedSlot != 2 // ADD: Stat value IF (eChar = NO_CHARACTER) OR (eChar = CHAR_MULTIPLAYER AND NOT HAS_IMPORTANT_STATS_LOADED()) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0) ELIF (eChar = CHAR_MULTIPLAYER) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(CALCULATE_PLAYER_STAT_VALUE(eChar, GET_PLAYER_STAT_FOR_DISPLAY_SLOT(iStat), FALSE, GET_ACTIVE_CHARACTER_SLOT())) ELSE SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(CALCULATE_PLAYER_STAT_VALUE(eChar, GET_PLAYER_STAT_FOR_DISPLAY_SLOT(iStat), FALSE)) ENDIF // ADD: Stat name SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(GET_PLAYER_STAT_DISPLAY_NAME(GET_PLAYER_STAT_FOR_DISPLAY_SLOT(iStat))) ELIF iStat = ENUM_TO_INT(PS_SPECIAL_ABILITY) AND g_sSelectorUI.iSelectedSlot = 2 IF HAS_IMPORTANT_STATS_LOADED() INT iCharCurrentXP = g_MP_STAT_CHAR_XP_FM[GET_SLOT_NUMBER(-1)]//GET_STAT_CHARACTER_XP() INT iRank = GET_FM_RANK_FROM_XP_VALUE(iCharCurrentXP, TRUE) INT iPlayersCurrent_Rank_Limit_XP = GET_XP_NEEDED_FOR_RANK(iRank, FALSE) INT iPlayersNext_Rank_Limit_XP = GET_XP_NEEDED_FOR_RANK(iRank+1, FALSE) INT iRankProgression = FLOOR((TO_FLOAT(iCharCurrentXP-iPlayersCurrent_Rank_Limit_XP)/TO_FLOAT(iPlayersNext_Rank_Limit_XP-iPlayersCurrent_Rank_Limit_XP))*100) IF g_sMPTunableArrays.iTopRankValues[MAX_FM_RANK] = iCharCurrentXP AND iRankProgression = 0 iRankProgression = 100 NET_NL()NET_PRINT("[BCSELECTOR] Change iRankProgression to 100 ") ENDIF // ADD: Stat value SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iRankProgression) // ADD: Stat name BEGIN_TEXT_COMMAND_SCALEFORM_STRING("TR_RANKNUM") ADD_TEXT_COMPONENT_INTEGER(iRank) END_TEXT_COMMAND_SCALEFORM_STRING() ELSE SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0) SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("TR_RANK") ENDIF ENDIF ENDREPEAT IF (eChar = CHAR_MULTIPLAYER AND HAS_IMPORTANT_STATS_LOADED()) // ADD: Stat value //SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(FLOOR(GET_MP_FLOAT_PLAYER_STAT(MPPLY_PLAYER_FMENTAL_STATE))) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(FLOOR(GET_MP_FLOAT_CHARACTER_STAT(MP_STAT_PLAYER_MENTAL_STATE))) // ADD: Stat name BEGIN_TEXT_COMMAND_SCALEFORM_STRING("PCARD_MENTAL_STATE") END_TEXT_COMMAND_SCALEFORM_STRING() ENDIF END_SCALEFORM_MOVIE_METHOD() ENDPROC /// PURPOSE: Requests the selector UI Scaleform movie and keeps states up to date PROC MAINTAIN_SELECTOR_UI() BOOL bReduceTimeScale = FALSE BOOL bDrawStat = FALSE BOOL bCleanupMap = TRUE BOOL bUpdateCounter = FALSE BOOL bUpdateHints = FALSE BOOL bSwitchAvailableAudio = FALSE // Determine what state the UI should be in SELECTOR_UI_STATE_ENUM eUIStateIntended = SELECTOR_UI_HIDDEN IF IS_SELECTOR_UI_BUTTON_PRESSED(g_sSelectorUI.bCheckPlayerControl) OR IS_SELECTOR_UI_BUTTON_JUST_RELEASED(g_sSelectorUI.bCheckPlayerControl) g_sSelectorUI.bDisplay = IS_SELECTOR_UI_SAFE_TO_DISPLAY(TRUE) IF g_sSelectorUI.bDisplay IF g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_FULL eUIStateIntended = SELECTOR_UI_FULL ELIF g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_HIDDEN eUIStateIntended = SELECTOR_UI_HIDDEN_TO_FULL ELIF g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_HIDDEN_TO_FULL IF (NETWORK_IS_GAME_IN_PROGRESS() AND (IS_TIME_MORE_THAN(GET_NETWORK_TIME(), GET_TIME_OFFSET(g_sSelectorUI.tdDisplayTimer, SELECTOR_UI_AMBIENT_MP_TIME_msec)) OR ABSI(GET_TIME_DIFFERENCE(GET_NETWORK_TIME(), g_sSelectorUI.tdDisplayTimer)) > SELECTOR_UI_AMBIENT_MP_TIME_msec+1000)) OR (NOT NETWORK_IS_GAME_IN_PROGRESS() AND NOT g_sSelectorUI.bMissionUpdate AND (GET_GAME_TIMER() - g_sSelectorUI.iDisplayTimer) > SELECTOR_UI_AMBIENT_SP_TIME_msec) OR (NOT NETWORK_IS_GAME_IN_PROGRESS() AND g_sSelectorUI.bMissionUpdate AND (GET_GAME_TIMER() - g_sSelectorUI.iDisplayTimer) > SELECTOR_UI_QUICK_SWITCH_TIME_msec) eUIStateIntended = SELECTOR_UI_FULL ELSE eUIStateIntended = SELECTOR_UI_HIDDEN_TO_FULL ENDIF ELIF g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_HINT eUIStateIntended = SELECTOR_UI_HINT_TO_FULL ELIF g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_HINT_TO_FULL IF (NETWORK_IS_GAME_IN_PROGRESS() AND (IS_TIME_MORE_THAN(GET_NETWORK_TIME(), GET_TIME_OFFSET(g_sSelectorUI.tdDisplayTimer, SELECTOR_UI_QUICK_SWITCH_TIME_msec)) OR ABSI(GET_TIME_DIFFERENCE(GET_NETWORK_TIME(), g_sSelectorUI.tdDisplayTimer)) > SELECTOR_UI_QUICK_SWITCH_TIME_msec+1000)) OR (NOT NETWORK_IS_GAME_IN_PROGRESS() AND (GET_GAME_TIMER() - g_sSelectorUI.iDisplayTimer) > SELECTOR_UI_QUICK_SWITCH_TIME_msec) eUIStateIntended = SELECTOR_UI_FULL ELSE eUIStateIntended = SELECTOR_UI_HINT_TO_FULL ENDIF ENDIF ENDIF ELIF g_sSelectorUI.bMissionUpdate AND g_sSelectorUI.bCharAvailable g_sSelectorUI.bDisplay = IS_SELECTOR_UI_SAFE_TO_DISPLAY(FALSE) IF g_sSelectorUI.bDisplay eUIStateIntended = SELECTOR_UI_HINT ENDIF ELIF g_sSelectorUI.bShowAutoSwitch g_sSelectorUI.bDisplay = TRUE eUIStateIntended = SELECTOR_UI_AUTOSWITCH_HINT iAutoSwitchEnum[GET_SELECTOR_UI_SLOT_FOR_SELECTOR_PED(SELECTOR_PED_MICHAEL)] = 0 iAutoSwitchEnum[GET_SELECTOR_UI_SLOT_FOR_SELECTOR_PED(SELECTOR_PED_TREVOR)] = 1 iAutoSwitchEnum[GET_SELECTOR_UI_SLOT_FOR_SELECTOR_PED(SELECTOR_PED_FRANKLIN)] = 2 iAutoSwitchEnum[GET_SELECTOR_UI_SLOT_FOR_SELECTOR_PED(SELECTOR_PED_MULTIPLAYER)] = 3 IF iAutoSwitchSlot != g_sSelectorUI.iAutoSwitchSlot g_sSelectorUI.bForceUpdate = TRUE g_sSelectorUI.iAutoSwitchTimer = GET_GAME_TIMER() bAutoSwitchDisplayTimerSet = FALSE ENDIF IF g_sSelectorUI.bOnScreen IF NOT bAutoSwitchDisplayTimerSet iAutoSwitchDisplayTimer = GET_GAME_TIMER() bAutoSwitchDisplayTimerSet = TRUE ENDIF // Ony display this for half a second IF (GET_GAME_TIMER() - iAutoSwitchDisplayTimer) > 500 g_sSelectorUI.bShowAutoSwitch = FALSE ENDIF ELSE // Bail out if we have not displayed it within 2 seconds. IF (GET_GAME_TIMER() - g_sSelectorUI.iAutoSwitchTimer) > 2000 g_sSelectorUI.bShowAutoSwitch = FALSE ENDIF bAutoSwitchDisplayTimerSet = FALSE ENDIF ELSE g_sSelectorUI.bDisplay = FALSE ENDIF // Make sure we reset the cleanup flag if we now require the movie to be used. IF g_sSelectorUI.bDisplay bCleanupMovies = FALSE ENDIF // Jump to the delay state when we are force loading to prevent cleanup IF (eUIStateIntended = SELECTOR_UI_HIDDEN AND g_sSelectorUI.bForceLoadThisFrame) OR (g_sSelectorUI.bHiddenThisFrame) eUIStateIntended = SELECTOR_UI_HIDDEN_TO_FULL ENDIF IF g_sSelectorUI.eUIStateCurrent != eUIStateIntended // If we are cleaning up due to a switch, make sure we upadte the switch count IF bSelection != g_sSelectorUI.bSelection AND g_sSelectorUI.iSelectedSlot != 2 AND g_sSelectorUI.bMissionUpdate AND NOT g_bInMultiplayer // Flag that we manually selected character from UI // Note: this flag is so we can update the mission switch count, we will rest it // in take_control_of_selector_ped or when a forced switch occurs with set_current_selector_ped g_sSelectorUI.bManualSelection = TRUE ENDIF PRINTLN("SWITCH UI - changing to UI state ", ENUM_TO_INT(eUIStateIntended)) // Set default params for new state. g_sSelectorUI.bFirstSelectionMade = FALSE IF NETWORK_IS_GAME_IN_PROGRESS() g_sSelectorUI.tdDisplayTimer = GET_NETWORK_TIME() ELSE g_sSelectorUI.iDisplayTimer = GET_GAME_TIMER() ENDIF IF eUIStateIntended != SELECTOR_UI_AUTOSWITCH_HINT g_sSelectorUI.bShowAutoSwitch = FALSE ENDIF g_sSelectorUI.bForceUpdate = TRUE ENDIF // Load scaleform if required or if we are already in the process of loading. IF g_sSelectorUI.bDisplay OR (bRequested AND NOT bCleanupMovies) OR g_sSelectorUI.bForceLoadThisFrame IF NOT g_sSelectorUI.bHiddenThisFrame // Prevent street name from displaying IF NOT IS_HUD_COMPONENT_ACTIVE(NEW_HUD_AREA_NAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_AREA_NAME) ENDIF IF NOT IS_HUD_COMPONENT_ACTIVE(NEW_HUD_VEHICLE_NAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_VEHICLE_NAME) ENDIF IF NOT IS_HUD_COMPONENT_ACTIVE(NEW_HUD_DISTRICT_NAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_DISTRICT_NAME) ENDIF IF NOT IS_HUD_COMPONENT_ACTIVE(NEW_HUD_STREET_NAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_STREET_NAME) ENDIF ENDIF LOAD_SELECTOR_UI() LOAD_MP_HEADSHOT() TEXT_LABEL_31 tlMPLabel GET_MP_COUNTDOWN_STRING(tlMPLabel, FALSE) ENDIF // Update the scaleform movie if it has loaded IF g_sSelectorUI.bLoaded INT iSlot // Once only set up to the movie IF NOT g_sSelectorUI.bSetup AND eUIStateIntended != SELECTOR_UI_HIDDEN_TO_FULL AND eUIStateIntended != SELECTOR_UI_HIDDEN PRINTLN("MAINTAIN_SELECTOR_UI() - Setting initial states") REBUILD_STAT_UI() FOR iSlot = 0 TO 3 // BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_SLOT") // SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot) // SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(3) // NOTMET= 3 // SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0) // CHAR_MICHAEL = 0 // SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE) // Current? // END_SCALEFORM_MOVIE_METHOD() // // BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_PLAYER_DAMAGE") // SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot) // SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE) // END_SCALEFORM_MOVIE_METHOD() // Update the local states so we can tell if there is an update iState[iSlot] = g_sSelectorUI.iState[iSlot] iEnum[iSlot] = g_sSelectorUI.iEnum[iSlot] iCurrent[iSlot] = g_sSelectorUI.iCurrent[iSlot] bDamaged[iSlot] = g_sSelectorUI.bDamaged[iSlot] bFlashDamage[iSlot] = g_sSelectorUI.bFlashDamage[iSlot] ENDFOR // BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_MP_LABEL") // SCALEFORM_MOVIE_METHOD_ADD_PARAM_PLAYER_NAME_STRING("") // END_SCALEFORM_MOVIE_METHOD() // // BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_COUNTER_ALL") // SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0) // SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0) // SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0) // SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0) // END_SCALEFORM_MOVIE_METHOD() iMissions[0] = g_sSelectorUI.iMissions[0] iMissions[1] = g_sSelectorUI.iMissions[1] iMissions[2] = g_sSelectorUI.iMissions[2] iMissions[3] = g_sSelectorUI.iMissions[3] // BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_HINTED_ALL") // SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE) // SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE) // SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE) // SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE) // END_SCALEFORM_MOVIE_METHOD() bHinted[0] = g_sSelectorUI.bHinted[0] bHinted[1] = g_sSelectorUI.bHinted[1] bHinted[2] = g_sSelectorUI.bHinted[2] bHinted[3] = g_sSelectorUI.bHinted[3] // BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_VISIBLE") // SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0) // END_SCALEFORM_MOVIE_METHOD() bDisplay = FALSE // Force selection update // BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_PLAYER_SELECTED") // SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(-1) // END_SCALEFORM_MOVIE_METHOD() iSelectedSlot = -1 bDisplayCharacterInfo = FALSE g_sSelectorUI.bSetup = TRUE g_sSelectorUI.bResetSelection = TRUE g_sSelectorUI.bForceUpdate = TRUE ENDIF IF g_sSelectorUI.bSetup OR eUIStateIntended = SELECTOR_UI_HIDDEN /////////////////////////////////////////////////////////////////////////////////////////////////// /// /// HINT UI: available characters, hints, no selection /// IF eUIStateIntended = SELECTOR_UI_HINT OR eUIStateIntended = SELECTOR_UI_HINT_TO_FULL FOR iSlot = 0 TO 3 // Update the slot data if the stored data differs IF iState[iSlot] != g_sSelectorUI.iState[iSlot] OR iEnum[iSlot] != g_sSelectorUI.iEnum[iSlot] OR iCurrent[iSlot] != g_sSelectorUI.iCurrent[iSlot] OR g_sSelectorUI.bForceUpdate BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_SLOT") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot) IF g_sSelectorUI.iState[iSlot] = 1 // AVAILABLE = 1 AND (g_sSelectorUI.iCurrent[iSlot] != 1) // Dont show current player SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1) // AVAILABLE = 1 ELSE SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(3) // NOTMET= 3 ENDIF SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(g_sSelectorUI.iEnum[iSlot]) SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE) END_SCALEFORM_MOVIE_METHOD() // Update the local states so we can tell if there is an update iState[iSlot] = g_sSelectorUI.iState[iSlot] iEnum[iSlot] = g_sSelectorUI.iEnum[iSlot] iCurrent[iSlot] = g_sSelectorUI.iCurrent[iSlot] bUpdateCounter = TRUE ENDIF IF bDamaged[iSlot] != g_sSelectorUI.bDamaged[iSlot] OR bFlashDamage[iSlot] != g_sSelectorUI.bFlashDamage[iSlot] OR g_sSelectorUI.bForceUpdate BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_PLAYER_DAMAGE") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(GET_SELECTOR_UI_SLOT_FOR_SELECTOR_PED(INT_TO_ENUM(SELECTOR_SLOTS_ENUM, iSlot))) SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(g_sSelectorUI.bDamaged[iSlot]) SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(g_sSelectorUI.bFlashDamage[iSlot]) END_SCALEFORM_MOVIE_METHOD() bDamaged[iSlot] = g_sSelectorUI.bDamaged[iSlot] bFlashDamage[iSlot] = g_sSelectorUI.bFlashDamage[iSlot] ENDIF IF bHinted[iSlot] != g_sSelectorUI.bHinted[iSlot] OR g_sSelectorUI.bForceUpdate bUpdateHints = TRUE ENDIF IF iMissions[iSlot] != g_sSelectorUI.iMissions[iSlot] OR g_sSelectorUI.bForceUpdate bUpdateCounter = TRUE ENDIF ENDFOR IF bUpdateHints BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_HINTED_ALL") SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(g_sSelectorUI.bHinted[GET_SELECTOR_PED_FROM_UI_SLOT(0)]) SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(g_sSelectorUI.bHinted[GET_SELECTOR_PED_FROM_UI_SLOT(1)]) SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(g_sSelectorUI.bHinted[GET_SELECTOR_PED_FROM_UI_SLOT(2)]) SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(g_sSelectorUI.bHinted[GET_SELECTOR_PED_FROM_UI_SLOT(3)]) END_SCALEFORM_MOVIE_METHOD() bHinted[0] = g_sSelectorUI.bHinted[0] bHinted[1] = g_sSelectorUI.bHinted[1] bHinted[2] = g_sSelectorUI.bHinted[2] bHinted[3] = g_sSelectorUI.bHinted[3] bUpdateHints = FALSE ENDIF IF bUpdateCounter BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_COUNTER_ALL") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(g_sSelectorUI.iMissions[GET_SELECTOR_PED_FROM_UI_SLOT(0)]) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(g_sSelectorUI.iMissions[GET_SELECTOR_PED_FROM_UI_SLOT(1)]) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(g_sSelectorUI.iMissions[GET_SELECTOR_PED_FROM_UI_SLOT(2)]) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(g_sSelectorUI.iMissions[GET_SELECTOR_PED_FROM_UI_SLOT(3)]) END_SCALEFORM_MOVIE_METHOD() iMissions[0] = g_sSelectorUI.iMissions[0] iMissions[1] = g_sSelectorUI.iMissions[1] iMissions[2] = g_sSelectorUI.iMissions[2] iMissions[3] = g_sSelectorUI.iMissions[3] bUpdateCounter = FALSE ENDIF IF bDisplay != g_sSelectorUI.bDisplay OR g_sSelectorUI.bForceUpdate BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_VISIBLE") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1) END_SCALEFORM_MOVIE_METHOD() BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_PLAYER_SELECTED") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(-1) END_SCALEFORM_MOVIE_METHOD() iSelectedSlot = -1 bDisplayCharacterInfo = FALSE bDisplay = g_sSelectorUI.bDisplay ENDIF /////////////////////////////////////////////////////////////////////////////////////////////////// /// /// FULL UI: available characters, hints, selection /// ELIF eUIStateIntended = SELECTOR_UI_FULL FOR iSlot = 0 TO 3 // Update the slot data if the stored data differs IF iState[iSlot] != g_sSelectorUI.iState[iSlot] OR iEnum[iSlot] != g_sSelectorUI.iEnum[iSlot] OR iCurrent[iSlot] != g_sSelectorUI.iCurrent[iSlot] OR g_sSelectorUI.bForceUpdate PRINTLN("MAINTAIN_SELECTOR_UI() - Updating slot data") BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_SLOT") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(g_sSelectorUI.iState[iSlot]) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(g_sSelectorUI.iEnum[iSlot]) SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL((g_sSelectorUI.iCurrent[iSlot] = 1)) END_SCALEFORM_MOVIE_METHOD() // Update the local states so we can tell if there is an update iState[iSlot] = g_sSelectorUI.iState[iSlot] iEnum[iSlot] = g_sSelectorUI.iEnum[iSlot] iCurrent[iSlot] = g_sSelectorUI.iCurrent[iSlot] ENDIF IF bDamaged[iSlot] != g_sSelectorUI.bDamaged[iSlot] OR bFlashDamage[iSlot] != g_sSelectorUI.bFlashDamage[iSlot] OR g_sSelectorUI.bForceUpdate BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_PLAYER_DAMAGE") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(GET_SELECTOR_UI_SLOT_FOR_SELECTOR_PED(INT_TO_ENUM(SELECTOR_SLOTS_ENUM, iSlot))) SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(g_sSelectorUI.bDamaged[iSlot]) SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(g_sSelectorUI.bFlashDamage[iSlot]) END_SCALEFORM_MOVIE_METHOD() bDamaged[iSlot] = g_sSelectorUI.bDamaged[iSlot] bFlashDamage[iSlot] = g_sSelectorUI.bFlashDamage[iSlot] ENDIF IF bHinted[iSlot] != g_sSelectorUI.bHinted[iSlot] OR g_sSelectorUI.bForceUpdate bUpdateHints = TRUE ENDIF IF iMissions[iSlot] != g_sSelectorUI.iMissions[iSlot] OR g_sSelectorUI.bForceUpdate bUpdateCounter = TRUE ENDIF ENDFOR IF bUpdateHints BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_HINTED_ALL") SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(g_sSelectorUI.bHinted[GET_SELECTOR_PED_FROM_UI_SLOT(0)]) SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(g_sSelectorUI.bHinted[GET_SELECTOR_PED_FROM_UI_SLOT(1)]) SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(g_sSelectorUI.bHinted[GET_SELECTOR_PED_FROM_UI_SLOT(2)]) SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(g_sSelectorUI.bHinted[GET_SELECTOR_PED_FROM_UI_SLOT(3)]) END_SCALEFORM_MOVIE_METHOD() bHinted[0] = g_sSelectorUI.bHinted[0] bHinted[1] = g_sSelectorUI.bHinted[1] bHinted[2] = g_sSelectorUI.bHinted[2] bHinted[3] = g_sSelectorUI.bHinted[3] bUpdateHints = FALSE ENDIF IF bUpdateCounter BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_COUNTER_ALL") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(g_sSelectorUI.iMissions[GET_SELECTOR_PED_FROM_UI_SLOT(0)]) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(g_sSelectorUI.iMissions[GET_SELECTOR_PED_FROM_UI_SLOT(1)]) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(g_sSelectorUI.iMissions[GET_SELECTOR_PED_FROM_UI_SLOT(2)]) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(g_sSelectorUI.iMissions[GET_SELECTOR_PED_FROM_UI_SLOT(3)]) END_SCALEFORM_MOVIE_METHOD() iMissions[0] = g_sSelectorUI.iMissions[0] iMissions[1] = g_sSelectorUI.iMissions[1] iMissions[2] = g_sSelectorUI.iMissions[2] iMissions[3] = g_sSelectorUI.iMissions[3] bUpdateCounter = FALSE ENDIF IF bSetPedHead AND NOT bPedHeadSet IF IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_DIRECTOR) #IF IS_DEBUG_BUILD OR g_debugMenuControl.fTempPos[0] != 0.0 #ENDIF PRINTLN("MAINTAIN_SELECTOR_UI() - Setting player headshot: director") BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_MULTIPLAYER_HEAD") SCALEFORM_MOVIE_METHOD_ADD_PARAM_TEXTURE_NAME_STRING("director") END_SCALEFORM_MOVIE_METHOD() ELIF NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_STORY) AND NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_STORY_FRIENDS) AND NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_STORY_PREP) AND NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_RANDOM_CHAR) AND NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_MINIGAME) AND NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_MINIGAME_FRIENDS) AND NOT IS_REPEAT_PLAY_ACTIVE() PRINTLN("MAINTAIN_SELECTOR_UI() - Setting player headshot: ", sMPPedHeadshot) BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_MULTIPLAYER_HEAD") SCALEFORM_MOVIE_METHOD_ADD_PARAM_TEXTURE_NAME_STRING(sMPPedHeadshot) END_SCALEFORM_MOVIE_METHOD() ENDIF bPedHeadSet = TRUE ENDIF IF bDisplay != g_sSelectorUI.bDisplay OR g_sSelectorUI.bForceUpdate PRINTLN("MAINTAIN_SELECTOR_UI() - Updating visibility state") IF g_sSelectorUI.bDisplay BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_VISIBLE") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1) END_SCALEFORM_MOVIE_METHOD() IF iSelectedSlot = -1 bDisplayCharacterInfo = FALSE ELSE bDisplayCharacterInfo = TRUE ENDIF ELSE BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_VISIBLE") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0) END_SCALEFORM_MOVIE_METHOD() // Force selection update BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_PLAYER_SELECTED") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(-1) END_SCALEFORM_MOVIE_METHOD() iSelectedSlot = -1 bDisplayCharacterInfo = FALSE ENDIF bDisplay = g_sSelectorUI.bDisplay ENDIF IF bUpdateCountdown OR bForceUpdateCountdown OR g_sSelectorUI.bForceUpdate TEXT_LABEL_31 tlMPLabel GET_MP_COUNTDOWN_STRING(tlMPLabel, TRUE) BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_MP_LABEL") SCALEFORM_MOVIE_METHOD_ADD_PARAM_PLAYER_NAME_STRING(tlMPLabel) END_SCALEFORM_MOVIE_METHOD() bUpdateCountdown = FALSE iCountdownTimer = GET_GAME_TIMER() IF NETWORK_IS_GAME_IN_PROGRESS() tdCountdownTimer = GET_NETWORK_TIME() ENDIF ELSE IF (NETWORK_IS_GAME_IN_PROGRESS() AND IS_TIME_MORE_THAN(GET_NETWORK_TIME(), GET_TIME_OFFSET(tdCountdownTimer, 1000))) OR (NOT NETWORK_IS_GAME_IN_PROGRESS() AND (GET_GAME_TIMER() - iCountdownTimer) > 1000) bUpdateCountdown = TRUE ENDIF ENDIF // Update the selected slot SET_INPUT_EXCLUSIVE(PLAYER_CONTROL, INPUT_WEAPON_WHEEL_UD) SET_INPUT_EXCLUSIVE(PLAYER_CONTROL, INPUT_WEAPON_WHEEL_LR) FLOAT fRightStickUD = GET_DISABLED_CONTROL_NORMAL(PLAYER_CONTROL, INPUT_WEAPON_WHEEL_UD) FLOAT fRightStickLR = GET_DISABLED_CONTROL_NORMAL(PLAYER_CONTROL, INPUT_WEAPON_WHEEL_LR) BOOL bCheckSelection = TRUE INT iNewSelection = -1 // PC Shortcut keys // Fake stick direction and slot depending on which shortcut key pressed IF IS_PC_VERSION() IF IS_DISABLED_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_SELECT_CHARACTER_MICHAEL ) fRightStickUD = 0 fRightStickLR = -1 g_sSelectorUI.iSelectedSlot = 3 g_sSelectorUI.bFirstSelectionMade = TRUE PRINTLN("SWITCH UI - INPUT_SELECT_CHARACTER_MICHAEL") ELIF IS_DISABLED_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_SELECT_CHARACTER_FRANKLIN ) fRightStickUD = -1 fRightStickLR = 0 g_sSelectorUI.iSelectedSlot = 0 g_sSelectorUI.bFirstSelectionMade = TRUE PRINTLN("SWITCH UI - INPUT_SELECT_CHARACTER_FRANKLIN") ELIF IS_DISABLED_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_SELECT_CHARACTER_TREVOR ) fRightStickUD = 0 fRightStickLR = 1 g_sSelectorUI.iSelectedSlot = 1 g_sSelectorUI.bFirstSelectionMade = TRUE PRINTLN("SWITCH UI - INPUT_SELECT_CHARACTER_TREVOR") ELIF IS_DISABLED_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_SELECT_CHARACTER_MULTIPLAYER ) fRightStickUD = 1 fRightStickLR = 0 g_sSelectorUI.iSelectedSlot = 2 g_sSelectorUI.bFirstSelectionMade = TRUE PRINTLN("SWITCH UI - INPUT_SELECT_CHARACTER_MULTIPLAYER") ENDIF ENDIF // Clear stick reset when we hit dead zone. // Dont check for selection when in the dead zone. IF GET_DISTANCE_BETWEEN_COORDS(<<0,0,0>>, <>) <= 0.3 bCheckSelection = FALSE g_sSelectorUI.bResetSelection = FALSE ENDIF // Grab the new selection to see if it differs from default IF bCheckSelection FLOAT fRange = 90 VECTOR vDir = NORMALISE_VECTOR(<>) FLOAT fAngle = GET_ANGLE_BETWEEN_2D_VECTORS(0.0, -1.0, vDir.x, vDir.y) IF fRightStickLR < 0 fAngle = 360-fAngle ENDIF // Top IF (fAngle >= (0.0) AND fAngle <= (0.0+(fRange/2.0))) OR (fAngle >= (360-(fRange/2.0)) AND fAngle <= (360)) iNewSelection = 0 // Right ELIF (fAngle >= (90.0-(fRange/2.0)) AND fAngle <= (90.0+(fRange/2.0))) iNewSelection = 1 // Bottom ELIF (fAngle >= (180.0-(fRange/2.0)) AND fAngle <= (180.0+(fRange/2.0))) iNewSelection = 2 // Left ELIF (fAngle >= (270.0-(fRange/2.0)) AND fAngle <= (270.0+(fRange/2.0))) iNewSelection = 3 ELSE //PRINTLN("MAINTAIN_SELECTOR_UI() - Not accounting for selection angle ", fAngle) ENDIF ENDIF IF bCheckSelection AND g_sSelectorUI.bResetSelection AND iSelectedSlotOnLoad = -1 AND g_sSelectorUI.iSelectedSlot != -1 iSelectedSlotOnLoad = iNewSelection ENDIF // New selection has been made IF iSelectedSlotOnLoad != -1 AND iNewSelection != iSelectedSlotOnLoad g_sSelectorUI.bResetSelection = FALSE ENDIF // Update to new selection IF bCheckSelection AND NOT g_sSelectorUI.bResetSelection g_sSelectorUI.iSelectedSlot = iNewSelection g_sSelectorUI.bFirstSelectionMade = TRUE ENDIF IF iSelectedSlot != g_sSelectorUI.iSelectedSlot IF NOT g_sSelectorUI.bSFX_BlockAudioCalls // Don't play initial MP selection IF NOT NETWORK_IS_GAME_IN_PROGRESS() OR iSelectedSlot != -1 PLAY_SOUND(-1, "CHARACTER_CHANGE_CHARACTER_01_MASTER", DEFAULT, DEFAULT, DEFAULT, FALSE) // Michael PRINTLN("SWITCH UI - playing sound: CHARACTER_CHANGE_CHARACTER_01_MASTER") ENDIF ENDIF ENDIF IF iSelectedSlot != g_sSelectorUI.iSelectedSlot OR g_sSelectorUI.bForceUpdate PRINTLN("MAINTAIN_SELECTOR_UI() - Updating selected player, ", g_sSelectorUI.iSelectedSlot) BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_PLAYER_SELECTED") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(g_sSelectorUI.iSelectedSlot) END_SCALEFORM_MOVIE_METHOD() iSelectedSlot = g_sSelectorUI.iSelectedSlot // Stats REBUILD_STAT_UI() bDisplayCharacterInfo = FALSE IF iSelectedSlot != -1 AND (g_sSelectorUI.iState[iSelectedSlot] != 3 OR iSelectedSlot = 2)// NOTMET= 3 AND g_sSelectorUI.iEnum[iSelectedSlot] != 4 //CHAR_CHOP_RIGHT = 4 AND g_sSelectorUI.iEnum[iSelectedSlot] != 5 //CHAR_CHOP_UP = 5 AND g_sSelectorUI.iEnum[iSelectedSlot] != 6 //CHAR_CHOP_LEFT = 6 IF iSelectedSlot = 0 // Top bDisplayCharacterInfo = TRUE ELIF iSelectedSlot = 1 // Right bDisplayCharacterInfo = TRUE ELIF iSelectedSlot = 2 // Bottom IF NETWORK_IS_GAME_IN_PROGRESS() OR NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_DIRECTOR) bDisplayCharacterInfo = TRUE ENDIF ELIF iSelectedSlot = 3 // Left bDisplayCharacterInfo = TRUE ENDIF ENDIF ENDIF IF bSelection != g_sSelectorUI.bSelection // Only process the selection on SP characters when in SP mode. bSelection = g_sSelectorUI.bSelection // SFX - UI on screen IF g_sSelectorUI.iSFX_Display != -1 AND g_sSelectorUI.iSFX_Display_ScriptHash = GET_HASH_KEY(GET_THIS_SCRIPT_NAME()) STOP_SOUND(g_sSelectorUI.iSFX_Display) PRINTLN("SWITCH UI - stopping sound: CHARACTER_CHANGE_DPAD_DOWN_MASTER") RELEASE_SOUND_ID(g_sSelectorUI.iSFX_Display) g_sSelectorUI.iSFX_Display = -1 g_sSelectorUI.iSFX_Display_ScriptHash = 0 ENDIF IF g_sSelectorUI.bFX_Fade PRINTLN("SWITCH UI - stopping postfx (selection = f_selection)") ANIMPOSTFX_STOP("SwitchHUDMichaelIn") ANIMPOSTFX_STOP("SwitchHUDFranklinIn") ANIMPOSTFX_STOP("SwitchHUDTrevorIn") ANIMPOSTFX_STOP("SwitchHUDIn") SWITCH GET_CURRENT_PLAYER_PED_ENUM() CASE CHAR_MICHAEL IF NOT ANIMPOSTFX_IS_RUNNING("SwitchOpenMichaelIn") AND NOT ANIMPOSTFX_IS_RUNNING("SwitchShortMichaelIn") ANIMPOSTFX_PLAY("SwitchHUDMichaelOut", 0, FALSE) ELSE PRINTLN("SWITCH UI - don't trigger SwitchHUDMichaelOut [SwitchOpenMichaelIn:", ANIMPOSTFX_IS_RUNNING("SwitchOpenMichaelIn"), ", SwitchOpenMichaelIn:", ANIMPOSTFX_IS_RUNNING("SwitchShortMichaelIn"), "]") ENDIF BREAK CASE CHAR_FRANKLIN IF NOT ANIMPOSTFX_IS_RUNNING("SwitchOpenFranklinIn") AND NOT ANIMPOSTFX_IS_RUNNING("SwitchShortFranklinIn") ANIMPOSTFX_PLAY("SwitchHUDFranklinOut", 0, FALSE) ELSE PRINTLN("SWITCH UI - don't trigger SwitchHUDFranklinOut [SwitchOpenFranklinIn:", ANIMPOSTFX_IS_RUNNING("SwitchOpenFranklinIn"), ", SwitchOpenFranklinIn:", ANIMPOSTFX_IS_RUNNING("SwitchShortFranklinIn"), "]") ENDIF BREAK CASE CHAR_TREVOR IF NOT ANIMPOSTFX_IS_RUNNING("SwitchOpenTrevorIn") AND NOT ANIMPOSTFX_IS_RUNNING("SwitchShortTrevorIn") ANIMPOSTFX_PLAY("SwitchHUDTrevorOut", 0, FALSE) ELSE PRINTLN("SWITCH UI - don't trigger SwitchHUDTrevorOut [SwitchOpenTrevorIn:", ANIMPOSTFX_IS_RUNNING("SwitchOpenTrevorIn"), ", SwitchOpenTrevorIn:", ANIMPOSTFX_IS_RUNNING("SwitchShortTrevorIn"), "]") ENDIF BREAK DEFAULT ANIMPOSTFX_PLAY("SwitchHUDOut", 0, FALSE) NET_NL()NET_PRINT("SwitchHUDOut 2 ") BREAK ENDSWITCH SET_AUDIO_FLAG("ActivateSwitchWheelAudio", FALSE) g_sSelectorUI.bFX_Fade = FALSE ENDIF PRINTLN("CLEANING UP THE SWITCH UI") ENDIF /////////////////////////////////////////////////////////////////////////////////////////////////// /// /// AUTOSWITCH UI: show who we are autoswitching too /// ELIF eUIStateIntended = SELECTOR_UI_AUTOSWITCH_HINT FOR iSlot = 0 TO 3 // Update the slot data if the stored data differs IF g_sSelectorUI.bForceUpdate BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_SLOT") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot) IF g_sSelectorUI.iAutoSwitchSlot = iSlot // AVAILABLE = 1 SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1) // AVAILABLE = 1 SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iAutoSwitchEnum[iSlot]) SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(TRUE) ELSE SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(3) // NOTMET= 3 SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iAutoSwitchEnum[iSlot]) SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE) ENDIF END_SCALEFORM_MOVIE_METHOD() BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_PLAYER_DAMAGE") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(GET_SELECTOR_UI_SLOT_FOR_SELECTOR_PED(INT_TO_ENUM(SELECTOR_SLOTS_ENUM, iSlot))) SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE) SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE) END_SCALEFORM_MOVIE_METHOD() ENDIF ENDFOR IF g_sSelectorUI.bForceUpdate BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_HINTED_ALL") SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE) SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE) SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE) SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE) END_SCALEFORM_MOVIE_METHOD() BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_COUNTER_ALL") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0) END_SCALEFORM_MOVIE_METHOD() BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_VISIBLE") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1) END_SCALEFORM_MOVIE_METHOD() BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_PLAYER_SELECTED") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(g_sSelectorUI.iAutoSwitchSlot) END_SCALEFORM_MOVIE_METHOD() iAutoSwitchSlot = g_sSelectorUI.iAutoSwitchSlot iSelectedSlot = -1 bDisplayCharacterInfo = FALSE bDisplay = g_sSelectorUI.bDisplay ENDIF /////////////////////////////////////////////////////////////////////////////////////////////////// /// /// HIDDEN UI: cleanup /// ELIF eUIStateIntended = SELECTOR_UI_HIDDEN BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_VISIBLE") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0) END_SCALEFORM_MOVIE_METHOD() // Force selection update BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_PLAYER_SELECTED") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(-1) END_SCALEFORM_MOVIE_METHOD() iSelectedSlot = -1 bDisplayCharacterInfo = FALSE // // Get some UI to display again IF NOT IS_PC_VERSION() AND GET_CURRENT_GAMEMODE() != GAMEMODE_FM AND GET_CURRENT_GAMEMODE() != GAMEMODE_CREATOR AND NOT IS_PLAYER_SWITCH_IN_PROGRESS() AND NOT IS_PLAYER_PED_SWITCH_IN_PROGRESS() AND NOT IS_SELECTOR_CAM_ACTIVE() AND NOT IS_AIMING_THROUGH_SNIPER_SCOPE(PLAYER_PED_ID()) AND g_sSelectorUI.eUIStateCurrent != SELECTOR_UI_AUTOSWITCH_HINT SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_VEHICLE_NAME) SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_AREA_NAME) SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_DISTRICT_NAME) SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_STREET_NAME) ENDIF // Cleanup movie so that it doesnt stay in memory through out the entire game CLEANUP_SELECTOR_UI() CLEANUP_MP_HEADSHOT() /////////////////////////////////////////////////////////////////////////////////////////////////// /// /// HIDDEN TO FULL UI: prep /// ELIF eUIStateIntended = SELECTOR_UI_HIDDEN_TO_FULL //PRINTLN("SWITCH UI - initial delay...") ENDIF ENDIF g_sSelectorUI.eUIStateCurrent = eUIStateIntended ENDIF // Draw the movie if it is still loaded IF g_sSelectorUI.bLoaded AND g_sSelectorUI.bSetup // SFX - UI on screen IF g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_FULL IF g_sSelectorUI.bOnScreen // 1 frame delay IF NOT g_sSelectorUI.bSFX_BlockAudioCalls IF g_sSelectorUI.iSFX_Display = -1 g_sSelectorUI.iSFX_Display = GET_SOUND_ID() g_sSelectorUI.iSFX_Display_ScriptHash = GET_HASH_KEY(GET_THIS_SCRIPT_NAME()) IF NETWORK_IS_GAME_IN_PROGRESS() PLAY_SOUND(g_sSelectorUI.iSFX_Display, "CHARACTER_CHANGE_DPAD_DOWN_MP_MASTER", DEFAULT, DEFAULT, DEFAULT, FALSE) ELSE PLAY_SOUND(g_sSelectorUI.iSFX_Display, "CHARACTER_CHANGE_DPAD_DOWN_MASTER", DEFAULT, DEFAULT, DEFAULT, FALSE) ENDIF PRINTLN("SWITCH UI - playing sound: CHARACTER_CHANGE_DPAD_DOWN_MASTER") ENDIF ENDIF IF NOT g_sSelectorUI.bFX_Fade PRINTLN("SWITCH UI - starting postfx") SWITCH GET_CURRENT_PLAYER_PED_ENUM() CASE CHAR_MICHAEL ANIMPOSTFX_PLAY("SwitchHUDMichaelIn", 0, FALSE) BREAK CASE CHAR_FRANKLIN ANIMPOSTFX_PLAY("SwitchHUDFranklinIn", 0, FALSE) BREAK CASE CHAR_TREVOR ANIMPOSTFX_PLAY("SwitchHUDTrevorIn", 0, FALSE) BREAK DEFAULT ANIMPOSTFX_PLAY("SwitchHUDIn", 0, FALSE) BREAK ENDSWITCH SET_AUDIO_FLAG("ActivateSwitchWheelAudio", TRUE) g_sSelectorUI.bFX_Fade = TRUE ENDIF ENDIF ELIF g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_HINT // Play initial sound bSwitchAvailableAudio = TRUE ENDIF IF g_sSelectorUI.bDisplay IF g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_FULL // Slow down time when UI is on screen bReduceTimeScaleForSwitch = TRUE bReduceTimeScale = TRUE // PLAYER STATS IF bDisplayCharacterInfo AND NOT bUsingPrologueMovie //IF g_sSelectorUI.bOnScreen // 1 frame delay IF NETWORK_IS_GAME_IN_PROGRESS() bDrawStat = TRUE ELIF g_sSelectorUI.iSelectedSlot = 0 // Top IF IS_BIT_SET(g_savedGlobals.sFlow.strandSavedVars[STRAND_PROLOGUE].savedBitflags, SAVED_BITS_STRAND_TERMINATED) OR NOT IS_BIT_SET(g_savedGlobals.sFlow.strandSavedVars[STRAND_PROLOGUE].savedBitflags, SAVED_BITS_STRAND_ACTIVATED) // allow stats to display when we boot into debug bDrawStat = TRUE ENDIF ELIF g_sSelectorUI.iSelectedSlot = 1 // Right IF IS_BIT_SET(g_savedGlobals.sFlow.strandSavedVars[STRAND_PROLOGUE].savedBitflags, SAVED_BITS_STRAND_TERMINATED) OR NOT IS_BIT_SET(g_savedGlobals.sFlow.strandSavedVars[STRAND_PROLOGUE].savedBitflags, SAVED_BITS_STRAND_ACTIVATED) // allow stats to display when we boot into debug bDrawStat = TRUE ENDIF ELIF g_sSelectorUI.iSelectedSlot = 2 // Bottom IF NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_STORY) AND NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_STORY_FRIENDS) AND NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_STORY_PREP) AND NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_RANDOM_CHAR) AND NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_MINIGAME) AND NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_MINIGAME_FRIENDS) AND NOT IS_REPEAT_PLAY_ACTIVE() AND HAS_IMPORTANT_STATS_LOADED() AND IS_STAT_CHARACTER_ACTIVE(GET_ACTIVE_CHARACTER_SLOT()) bDrawStat = TRUE ENDIF ELIF g_sSelectorUI.iSelectedSlot = 3 // Left IF IS_BIT_SET(g_savedGlobals.sFlow.strandSavedVars[STRAND_PROLOGUE].savedBitflags, SAVED_BITS_STRAND_TERMINATED) OR NOT IS_BIT_SET(g_savedGlobals.sFlow.strandSavedVars[STRAND_PROLOGUE].savedBitflags, SAVED_BITS_STRAND_ACTIVATED) // allow stats to display when we boot into debug bDrawStat = TRUE ENDIF ENDIF //bug:2415703 if IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_DIRECTOR) bDrawStat = FALSE ENDIF IF bDrawStat IF GET_IS_WIDESCREEN() SET_WIDESCREEN_FORMAT(WIDESCREEN_FORMAT_RIGHT) ENDIF SET_SCRIPT_GFX_ALIGN(UI_ALIGN_RIGHT, UI_ALIGN_BOTTOM) //SET_SCRIPT_GFX_ALIGN_PARAMS(fPLAYER_STATS_X, fPLAYER_STATS_Y, fPLAYER_STATS_W*fPLAYER_STATS_SCALE_W, fPLAYER_STATS_H*fPLAYER_STATS_SCALE_H) SET_SCRIPT_GFX_ALIGN_PARAMS(0,0,0,0) GET_STAT_BOX_X_POS( fPLAYER_STATS_X ) IF NOT bSuppressUIForShortSwitch //DRAW_SCALEFORM_MOVIE(movieID, (((fPLAYER_SWITCH_W*fPLAYER_SWITCH_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE)*0.5), fPLAYER_SWITCH_Y, (fPLAYER_SWITCH_W*fPLAYER_SWITCH_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE, (fPLAYER_SWITCH_H*fPLAYER_SWITCH_SCALE_H), 255, 255, 255, 255) DRAW_SCALEFORM_MOVIE(movieID2, fPLAYER_STATS_X + (((fPLAYER_STATS_W*fPLAYER_STATS_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE)*0.5), fPLAYER_STATS_Y, (fPLAYER_STATS_W*fPLAYER_STATS_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE, (fPLAYER_STATS_H*fPLAYER_STATS_SCALE_H), 255, 255, 255, 255) ENDIF RESET_SCRIPT_GFX_ALIGN() INT iPed // Top IF g_sSelectorUI.iSelectedSlot = 0 iPed = ENUM_TO_INT(SELECTOR_PED_FRANKLIN) // Right ELIF g_sSelectorUI.iSelectedSlot = 1 iPed = ENUM_TO_INT(SELECTOR_PED_TREVOR) // Bottom ELIF g_sSelectorUI.iSelectedSlot = 2 iPed = ENUM_TO_INT(SELECTOR_PED_MULTIPLAYER) // Left ELIF g_sSelectorUI.iSelectedSlot = 3 iPed = ENUM_TO_INT(SELECTOR_PED_MICHAEL) ENDIF IF NOT ARE_VECTORS_EQUAL(g_sSelectorUI.vCoords[iPed], <<0,0,0>>) AND NOT g_sSelectorUI.bDisableMapOverrideThisFrame IF NOT DOES_BLIP_EXIST(selectedPedBlip) selectedPedBlip = ADD_BLIP_FOR_COORD(g_sSelectorUI.vCoords[iPed]) SET_BLIP_COLOUR(selectedPedBlip, BLIP_COLOUR_BLUE) ENDIF SET_BLIP_COORDS(selectedPedBlip, g_sSelectorUI.vCoords[iPed]) IF g_sSelectorUI.iHealth[iPed] = -1 SET_HEALTH_HUD_DISPLAY_VALUES(-1, -1) SET_ABILITY_BAR_VALUE(-1, -1) SET_MAX_HEALTH_HUD_DISPLAY(0) SET_MAX_ARMOUR_HUD_DISPLAY(0) //PRINTLN("SET_HEALTH_HUD_DISPLAY_VALUES(-1, -1)") ELSE // The ui bases health on players max health so we need to scale accordingly. SET_MAX_HEALTH_HUD_DISPLAY(GET_PED_MAX_HEALTH(PLAYER_PED_ID())) SET_MAX_ARMOUR_HUD_DISPLAY(100) SET_HEALTH_HUD_DISPLAY_VALUES(FLOOR(TO_FLOAT(GET_PED_MAX_HEALTH(PLAYER_PED_ID()))*(TO_FLOAT(g_sSelectorUI.iHealth[iPed]) / 100)), g_sSelectorUI.iArmour[iPed]) SET_ABILITY_BAR_VALUE(TO_FLOAT(g_sSelectorUI.iSpecial[iPed]), TO_FLOAT(g_sSelectorUI.iSpecialMax[iPed])) //PRINTLN("SET_HEALTH_HUD_DISPLAY_VALUES(", FLOOR(TO_FLOAT(GET_PED_MAX_HEALTH(PLAYER_PED_ID()))*(TO_FLOAT(g_sSelectorUI.iHealth[iPed]) / 100)), ", ", g_sSelectorUI.iArmour[iPed], ")") ENDIF LOCK_MINIMAP_POSITION(g_sSelectorUI.vCoords[iPed].x, g_sSelectorUI.vCoords[iPed].y) bMapUpdated = TRUE bCleanupMap = FALSE ENDIF //ENDIF ENDIF ENDIF // INPUT BLOCKS PROCESS_SELECTOR_INPUT_BLOCKS() // SPECIAL ABILITY BLOCK IF NOT NETWORK_IS_GAME_IN_PROGRESS() IF IS_PLAYER_PED_PLAYABLE(GET_CURRENT_PLAYER_PED_ENUM()) IF IS_SPECIAL_ABILITY_ACTIVE(PLAYER_ID()) SPECIAL_ABILITY_DEACTIVATE(PLAYER_ID()) ENDIF ENDIF ENDIF // AMMO COUNT AND CASH IF g_sSelectorUI.bOnScreen // 1 frame delay IF NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_DIRECTOR) IF MISSION_FLOW_GET_RUNNING_MISSION() != SP_MISSION_PROLOGUE SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_CASH) ENDIF SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_WEAPON_ICON) ENDIF ENDIF // CURRENT MISSION IF NOT NETWORK_IS_GAME_IN_PROGRESS() AND NOT IS_STRING_NULL_OR_EMPTY(g_sMissionStatsName) AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED() IF IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_STORY) OR IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_STORY_PREP) OR IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_STORY_FRIENDS) OR IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_RANDOM_CHAR) IF g_sSelectorUI.bOnScreen // 1 frame delay SET_SCRIPT_GFX_ALIGN(UI_ALIGN_RIGHT, UI_ALIGN_BOTTOM) SET_SCRIPT_GFX_ALIGN_PARAMS(fMISSION_NAME_X, 0, 0, 0) SET_TEXT_SCALE(FLOW_MISSION_NAME_SCALE_X, FLOW_MISSION_NAME_SCALE_Y) SET_TEXT_FONT(FONT_CURSIVE) SET_TEXT_JUSTIFICATION(FONT_RIGHT) INT red, green, blue, iAlpha // this is the default color - if we aren't a player character use this SWITCH (GET_CURRENT_PLAYER_PED_ENUM()) CASE CHAR_MICHAEL GET_HUD_COLOUR(HUD_COLOUR_MICHAEL, red, green, blue, iAlpha) BREAK CASE CHAR_FRANKLIN GET_HUD_COLOUR(HUD_COLOUR_FRANKLIN, red, green, blue, iAlpha) BREAK CASE CHAR_TREVOR GET_HUD_COLOUR(HUD_COLOUR_TREVOR, red, green, blue, iAlpha) BREAK DEFAULT red = 240 green = 200 blue = 80 BREAK ENDSWITCH SET_TEXT_COLOUR(red, green, blue, iAlpha) // yellow text SET_TEXT_DROP_SHADOW() BEGIN_TEXT_COMMAND_DISPLAY_TEXT(g_sMissionStatsName) END_TEXT_COMMAND_DISPLAY_TEXT(fMISSION_NAME_X, fMISSION_NAME_Y) RESET_SCRIPT_GFX_ALIGN() /*SET_SCRIPT_GFX_ALIGN(UI_ALIGN_LEFT, UI_ALIGN_TOP) SET_SCRIPT_GFX_ALIGN_PARAMS(0.0, 0.0, 0.0, 0.0) //DRAW_RECT_FROM_CORNER(0.0, 0.0, CUSTOM_MENU_W, CUSTOM_MENU_HEADER_H, 0, 0, 0, 255) SETUP_MENU_HEADING_TEXT() BEGIN_TEXT_COMMAND_DISPLAY_TEXT(g_sMissionStatsName) END_TEXT_COMMAND_DISPLAY_TEXT(CUSTOM_MENU_TITLE_TEXT_INDENT_X, CUSTOM_MENU_TITLE_TEXT_INDENT_Y) RESET_SCRIPT_GFX_ALIGN()*/ ENDIF ENDIF ENDIF // NAMES //IF g_sSelectorUI.bOnScreen // 1 frame delay HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_VEHICLE_NAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_AREA_NAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_DISTRICT_NAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_STREET_NAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_SUBTITLE_TEXT) //ENDIF // SWITCH UI SET_WIDESCREEN_FORMAT(WIDESCREEN_FORMAT_RIGHT) SET_SCRIPT_GFX_ALIGN(UI_ALIGN_RIGHT, UI_ALIGN_BOTTOM) //SET_SCRIPT_GFX_ALIGN_PARAMS((((fPLAYER_SWITCH_W*fPLAYER_SWITCH_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE)*0.5), fPLAYER_SWITCH_Y, (fPLAYER_SWITCH_W*fPLAYER_SWITCH_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE, (fPLAYER_SWITCH_H*fPLAYER_SWITCH_SCALE_H)) SET_SCRIPT_GFX_ALIGN_PARAMS(0,0,0,0) IF NOT bSuppressUIForShortSwitch DRAW_SCALEFORM_MOVIE(movieID, (((fPLAYER_SWITCH_W*fPLAYER_SWITCH_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE)*0.5), fPLAYER_SWITCH_Y, (fPLAYER_SWITCH_W*fPLAYER_SWITCH_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE, (fPLAYER_SWITCH_H*fPLAYER_SWITCH_SCALE_H), 255, 255, 255, 255) ENDIF RESET_SCRIPT_GFX_ALIGN() g_sSelectorUI.bOnScreen = TRUE ELIF g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_HINT OR g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_HINT_TO_FULL OR g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_AUTOSWITCH_HINT // NAMES //IF g_sSelectorUI.bOnScreen // 1 frame delay HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_VEHICLE_NAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_AREA_NAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_DISTRICT_NAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_STREET_NAME) //ENDIF // SWITCH UI SET_WIDESCREEN_FORMAT(WIDESCREEN_FORMAT_RIGHT) SET_SCRIPT_GFX_ALIGN(UI_ALIGN_RIGHT, UI_ALIGN_BOTTOM) //SET_SCRIPT_GFX_ALIGN_PARAMS((((fPLAYER_SWITCH_W*fPLAYER_SWITCH_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE)*0.5), fPLAYER_SWITCH_Y, (fPLAYER_SWITCH_W*fPLAYER_SWITCH_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE, (fPLAYER_SWITCH_H*fPLAYER_SWITCH_SCALE_H)) SET_SCRIPT_GFX_ALIGN_PARAMS(0,0,0,0) IF NOT bSuppressUIForShortSwitch DRAW_SCALEFORM_MOVIE(movieID, (((fPLAYER_SWITCH_W*fPLAYER_SWITCH_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE)*0.5), fPLAYER_SWITCH_Y, (fPLAYER_SWITCH_W*fPLAYER_SWITCH_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE, (fPLAYER_SWITCH_H*fPLAYER_SWITCH_SCALE_H), 255, 255, 255, 255) ENDIF RESET_SCRIPT_GFX_ALIGN() g_sSelectorUI.bOnScreen = TRUE ENDIF ENDIF ENDIF // SFX - UI no longer screen IF g_sSelectorUI.eUIStateCurrent != SELECTOR_UI_FULL IF g_sSelectorUI.iSFX_Display != -1 AND g_sSelectorUI.iSFX_Display_ScriptHash = GET_HASH_KEY(GET_THIS_SCRIPT_NAME()) STOP_SOUND(g_sSelectorUI.iSFX_Display) PRINTLN("SWITCH UI - stopping sound: CHARACTER_CHANGE_DPAD_DOWN_MASTER") RELEASE_SOUND_ID(g_sSelectorUI.iSFX_Display) g_sSelectorUI.iSFX_Display = -1 g_sSelectorUI.iSFX_Display_ScriptHash = 0 ENDIF ENDIF // Let code know if we are displaying the switch UI IF (g_sSelectorUI.bOnScreen AND g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_FULL) HUD_SHOWING_CHARACTER_SWITCH_SELECTION(TRUE) ELSE HUD_SHOWING_CHARACTER_SWITCH_SELECTION(FALSE) ENDIF // Keep the timescale reduced while a switch is processing #1332134 IF NOT bReduceTimeScale IF IS_PLAYER_SWITCH_IN_PROGRESS() bReduceTimeScale = TRUE bReduceTimeScaleForSwitch = FALSE IF GET_PLAYER_SWITCH_TYPE() = SWITCH_TYPE_SHORT //short range switch, no timescale bReduceTimeScale = FALSE ELSE IF GET_PLAYER_SWITCH_STATE() > SWITCH_STATE_JUMPCUT_ASCENT bReduceTimeScale = FALSE ENDIF ENDIF ENDIF ENDIF IF NOT bReduceTimeScale IF g_sSelectorUI.bFX_Fade ANIMPOSTFX_STOP("SwitchHUDMichaelIn") ANIMPOSTFX_STOP("SwitchHUDFranklinIn") ANIMPOSTFX_STOP("SwitchHUDTrevorIn") ANIMPOSTFX_STOP("SwitchHUDIn") SET_AUDIO_FLAG("ActivateSwitchWheelAudio", FALSE) IF g_sSelectorUI.bFX_SkipFadeOut PRINTLN("SWITCH UI - stopping postfx skipped playing fadeout") ELSE IF bReduceTimeScaleForSwitch PRINTLN("SWITCH UI - stopping postfx (not bReduceTimeScale - NOT before switch)") SWITCH GET_CURRENT_PLAYER_PED_ENUM() CASE CHAR_MICHAEL IF NOT ANIMPOSTFX_IS_RUNNING("SwitchOpenMichaelIn") AND NOT ANIMPOSTFX_IS_RUNNING("SwitchShortMichaelIn") ANIMPOSTFX_PLAY("SwitchHUDMichaelOut", 0, FALSE) ELSE PRINTLN("SWITCH UI - don't trigger SwitchHUDMichaelOut [SwitchOpenMichaelIn:", ANIMPOSTFX_IS_RUNNING("SwitchOpenMichaelIn"), ", SwitchOpenMichaelIn:", ANIMPOSTFX_IS_RUNNING("SwitchShortMichaelIn"), "]") ENDIF BREAK CASE CHAR_FRANKLIN IF NOT ANIMPOSTFX_IS_RUNNING("SwitchOpenFranklinIn") AND NOT ANIMPOSTFX_IS_RUNNING("SwitchShortFranklinIn") ANIMPOSTFX_PLAY("SwitchHUDFranklinOut", 0, FALSE) ELSE PRINTLN("SWITCH UI - don't trigger SwitchHUDFranklinOut [SwitchOpenFranklinIn:", ANIMPOSTFX_IS_RUNNING("SwitchOpenFranklinIn"), ", SwitchOpenFranklinIn:", ANIMPOSTFX_IS_RUNNING("SwitchShortFranklinIn"), "]") ENDIF BREAK CASE CHAR_TREVOR IF NOT ANIMPOSTFX_IS_RUNNING("SwitchOpenTrevorIn") AND NOT ANIMPOSTFX_IS_RUNNING("SwitchShortTrevorIn") ANIMPOSTFX_PLAY("SwitchHUDTrevorOut", 0, FALSE) ELSE PRINTLN("SWITCH UI - don't trigger SwitchHUDTrevorOut [SwitchOpenTrevorIn:", ANIMPOSTFX_IS_RUNNING("SwitchOpenTrevorIn"), ", SwitchOpenTrevorIn:", ANIMPOSTFX_IS_RUNNING("SwitchShortTrevorIn"), "]") ENDIF BREAK DEFAULT IF GET_CURRENT_GAMEMODE() = GAMEMODE_FM //removed for todo 1629006 - Brenda Double FX when entering GTAO, but play it if we're in MP and the player selects the MP character ANIMPOSTFX_PLAY("SwitchHUDOut", 0, FALSE) NET_NL()NET_PRINT("SwitchHUDOut 1 ") ENDIF BREAK ENDSWITCH ELSE PRINTLN("SWITCH UI - stopping postfx (not bReduceTimeScale - before switch)") ENDIF ENDIF g_sSelectorUI.bFX_Fade = FALSE ENDIF ENDIF // Process the timescale IF bReduceTimeScale != bSlowingDownTime // Reset the timer IF fTargetScale = fLastTimeScaleSet iTimeScaleTimer = GET_GAME_TIMER() ELSE iTimeScaleTimer = GET_GAME_TIMER()-250+(GET_GAME_TIMER()-iTimeScaleTimer) ENDIF // Set the intended states IF bReduceTimeScale fTargetScale = 0.10 bSlowingDownTime = TRUE ELSE fTargetScale = 1.0 bSlowingDownTime = FALSE ENDIF ENDIF // Update to intended state IF fTargetScale != fLastTimeScaleSet FLOAT fUpdateScale, fCurrentPhase // Duration is 250ms but we are changing time scale so need to multiple by last scale set fCurrentPhase = (((TO_FLOAT(GET_GAME_TIMER()-iTimeScaleTimer))) / (250.0*fLastTimeScaleSet)) IF bSlowingDownTime fUpdateScale = 1.0-(fCurrentPhase*0.9) IF fUpdateScale <= 0.111111 fUpdateScale = 0.1 ENDIF ELSE fUpdateScale = 0.1+(fCurrentPhase*0.9) IF fUpdateScale >= 0.999999 fUpdateScale = 1.0 ENDIF ENDIF BOOL bUpdate = FALSE IF IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_DIRECTOR) bUpdate = TRUE ELIF NETWORK_IS_GAME_IN_PROGRESS() // skip time scale fUpdateScale = 1.0 ELIF IS_TRANSITION_ACTIVE() // skip time scale fUpdateScale = 1.0 ELIF NOT IS_PLAYER_PED_PLAYABLE(GET_CURRENT_PLAYER_PED_ENUM()) // skip time scale ELIF IS_SPECIAL_ABILITY_ACTIVE(PLAYER_ID()) // skip time scale ELSE bUpdate = TRUE ENDIF IF bUpdate OR fUpdateScale > fLastTimeScaleSet SET_TIME_SCALE(fUpdateScale) PRINTLN("SWITCH UI - set timescale to ", fUpdateScale) ENDIF fLastTimeScaleSet = fUpdateScale ENDIF /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////// ROCKSTAR EDITOR RECORDING SET UP ////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// #IF USE_REPLAY_RECORDING_TRIGGERS BOOL bAllowReplayRecording = FALSE BOOL bDisplayReplayFeedIcons = FALSE // Only allow replay recording when running PC version or when we are signed into a SC account on consoles IF (NETWORK_IS_SIGNED_IN() OR IS_PC_VERSION()) IF HAS_ONE_TIME_HELP_DISPLAYED(FHM_ROCKSTAR_EDITOR_INTRO1) and HAS_ONE_TIME_HELP_DISPLAYED(FHM_ROCKSTAR_EDITOR_INTRO2) IF NOT HAS_ONE_TIME_HELP_DISPLAYED(FHM_ROCKSTAR_EDITOR_REC) SWITCH GET_FLOW_HELP_MESSAGE_STATUS("AM_H_EDIT_3") CASE FHS_EXPIRED IF IS_REPLAY_RECORDING() and eFeedStartType = REPLAY_START_PARAM_DIRECTOR ADD_HELP_TO_FLOW_QUEUE("AM_H_EDIT_3", FHP_MEDIUM) ENDIF BREAK CASE FHS_DISPLAYED SET_ONE_TIME_HELP_MESSAGE_DISPLAYED(FHM_ROCKSTAR_EDITOR_REC) BREAK ENDSWITCH ENDIF IF NOT HAS_ONE_TIME_HELP_DISPLAYED(FHM_ROCKSTAR_EDITOR_ACTION_MODE) SWITCH GET_FLOW_HELP_MESSAGE_STATUS("AM_H_EDIT_4") CASE FHS_EXPIRED IF IS_REPLAY_RECORDING() and eFeedStartType = REPLAY_START_PARAM_HIGHLIGHT ADD_HELP_TO_FLOW_QUEUE("AM_H_EDIT_4", FHP_MEDIUM) ENDIF BREAK CASE FHS_DISPLAYED SET_ONE_TIME_HELP_MESSAGE_DISPLAYED(FHM_ROCKSTAR_EDITOR_ACTION_MODE) BREAK ENDSWITCH ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////// /// DISPLAY ICONS ON THE FEED /// IF IS_SELECTOR_UI_BUTTON_PRESSED(FALSE) OR (IS_PC_VERSION() AND IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL)) //Allow PC shortcuts - bug 2228146 bAllowReplayRecording = IS_REPLAY_RECORDING_UI_SAFE_TO_USE() iExcludeInputTimer = GET_GAME_TIMER() + 250 //250 milliseconds delay for exclusive inputs PRINTLN("iExcludeInputTimer = ", GET_GAME_TIMER() + 250) IF bAllowReplayRecording IF g_sSelectorUI.bDisplay // Wait for switch UI to load. IF g_sSelectorUI.bOnScreen AND g_sSelectorUI.bLoaded AND g_sSelectorUI.bSetup AND g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_FULL bDisplayReplayFeedIcons = TRUE ELSE PRINTLN("SWITCH UI - [REPLAY-FEED] Trying to display replay recording icons but the selector hasn't loaded yet...") ENDIF ELIF IS_SELECTOR_UI_BUTTON_PRESSED(FALSE) // Switch is not safe to display so we do not need to wait for it. bDisplayReplayFeedIcons = TRUE ENDIF ENDIF ENDIF IF IS_SELECTOR_UI_BUTTON_PRESSED(FALSE) IF bAllowReplayRecording //Fix for bug 2207278 iDisplayingReplayRecordUI = GET_GAME_TIMER() + 500 ENDIF ENDIF // Need to call this after we have checked the inputs so we can start/reset timer. // If the initial delay has not passed then we set bDisplayReplayFeedIcons to FALSE. UPDATE_REPLAY_RECORDING_FEED_REQUEST(bDisplayReplayFeedIcons) IF bDisplayReplayFeedIcons IF NOT g_sSelectorUI.bFeedAddedForRecording PRINTLN("SWITCH UI - [REPLAY-FEED] Adding feed icons for recording...") INT iPost REPEAT COUNT_OF(iRecPost) iPost iRecPost[iPost] = -1 ENDREPEAT THEFEED_FLUSH_QUEUE() THEFEED_SET_SNAP_FEED_ITEM_POSITIONS(TRUE) IF (GET_CAM_VIEW_MODE_FOR_CONTEXT(GET_CAM_ACTIVE_VIEW_MODE_CONTEXT()) = CAM_VIEW_MODE_FIRST_PERSON) AND NOT GET_IS_USING_HOOD_CAMERA() THEFEED_FREEZE_NEXT_POST() BEGIN_TEXT_COMMAND_THEFEED_POST("REC_FEED_WAR") iRecPost[0] = END_TEXT_COMMAND_THEFEED_POST_TICKER(FALSE) ENDIF IF IS_REPLAY_RECORDING() IF eFeedStartType = REPLAY_START_PARAM_DIRECTOR // Save Recording PRINTLN("SWITCH UI - [REPLAY-FEED] Adding SAVE RECORDING feed item.") THEFEED_FREEZE_NEXT_POST() BEGIN_TEXT_COMMAND_THEFEED_POST("REC_FEED_5") iRecPost[1] = END_TEXT_COMMAND_THEFEED_POST_REPLAY_INPUT(REPLAY_BUTTON,"~INPUT_REPLAY_START_STOP_RECORDING~","")// F1 for PC // GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(PLAYER_CONTROL, INPUT_REPLAY_START_STOP_RECORDING) ,"") // Cancel Recording PRINTLN("SWITCH UI - [REPLAY-FEED] Adding CANCEL RECORDING feed item.") THEFEED_FREEZE_NEXT_POST() BEGIN_TEXT_COMMAND_THEFEED_POST("REC_FEED_4") iRecPost[2] = END_TEXT_COMMAND_THEFEED_POST_REPLAY_INPUT(REPLAY_BUTTON,"~INPUT_SAVE_REPLAY_CLIP~","") // F3 for PC ELIF eFeedStartType = REPLAY_START_PARAM_HIGHLIGHT // Save Action Replay PRINTLN("SWITCH UI - [REPLAY-FEED] Adding SAVE ACTION REPLAY feed item.") THEFEED_FREEZE_NEXT_POST() BEGIN_TEXT_COMMAND_THEFEED_POST("REC_FEED_3") iRecPost[1] = END_TEXT_COMMAND_THEFEED_POST_REPLAY_INPUT(REPLAY_BUTTON, "~INPUT_REPLAY_START_STOP_RECORDING~","") // F1 for PC // Turn Off Action Replay PRINTLN("SWITCH UI - [REPLAY-FEED] Adding TURN OFF ACTION REPLAY feed item.") THEFEED_FREEZE_NEXT_POST() BEGIN_TEXT_COMMAND_THEFEED_POST("REC_FEED_2") iRecPost[2] = END_TEXT_COMMAND_THEFEED_POST_REPLAY_INPUT(REPLAY_BUTTON, "~INPUT_SAVE_REPLAY_CLIP~","") // F3 for PC ENDIF ELSE // Start Recording PRINTLN("SWITCH UI - [REPLAY-FEED] Adding START RECORDING feed item.") THEFEED_FREEZE_NEXT_POST() BEGIN_TEXT_COMMAND_THEFEED_POST("REC_FEED_1") iRecPost[1] = END_TEXT_COMMAND_THEFEED_POST_REPLAY_INPUT(REPLAY_BUTTON, "~INPUT_REPLAY_START_STOP_RECORDING~","") // F1 for PC // Turn On Action Replay PRINTLN("SWITCH UI - [REPLAY-FEED] Adding TURN ON ACTION REPLAY feed item.") THEFEED_FREEZE_NEXT_POST() BEGIN_TEXT_COMMAND_THEFEED_POST("REC_FEED_0") iRecPost[2] = END_TEXT_COMMAND_THEFEED_POST_REPLAY_INPUT(REPLAY_BUTTON, "~INPUT_REPLAY_START_STOP_RECORDING_SECONDARY~","") // F2 for PC ENDIF PRINTLN("SWITCH UI - [REPLAY-FEED] Pausing feed after adding recording items.") THEFEED_PAUSE() g_sSelectorUI.bFeedAddedForRecording = TRUE ENDIF ELSE CLEANUP_REPLAY_RECORD_FEED() ENDIF // Clear temp Action Replay On/Off feed message IF iRecPostActionReplay != -1 IF (NOT NETWORK_IS_GAME_IN_PROGRESS() AND (GET_GAME_TIMER() - iActionReplayTimer) > 4000) OR (NETWORK_IS_GAME_IN_PROGRESS() AND ABSI(GET_TIME_DIFFERENCE(GET_NETWORK_TIME(), tdActionReplayTimer)) > 4000) PRINTLN("SWITCH UI - [REPLAY-FEED] Cleaning up action replay on/off feed messages.") THEFEED_REMOVE_ITEM(iRecPostActionReplay) iRecPostActionReplay = -1 ENDIF ENDIF //////////////////////////////////////////////////////////////////////////////////////////////////////////// /// MANAGE START/STOP RECORDING /// IF bAllowReplayRecording BOOL bAcceptPressed = FALSE BOOL bCancelPressed = FALSE BOOL bStartBufferPressed = FALSE BOOL bCloseSelectorUI = FALSE IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL) // PC: Function keys bAcceptPressed = IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_REPLAY_START_STOP_RECORDING) // F1 bCancelPressed = IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_SAVE_REPLAY_CLIP) // F3 bStartBufferPressed = IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_REPLAY_START_STOP_RECORDING_SECONDARY) // F2 ELSE // Consoles: DPAD_DOWN + ((A/B/X) OR (X/O/SQ)) IF IS_SELECTOR_UI_BUTTON_PRESSED(FALSE) // bAcceptPressed = (IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT) OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)) // bCancelPressed = (IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL) OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)) // bStartBufferPressed = (IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_X) OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_X)) bAcceptPressed = (IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_REPLAY_START_STOP_RECORDING) OR IS_DISABLED_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_REPLAY_START_STOP_RECORDING)) bCancelPressed = (IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_SAVE_REPLAY_CLIP) OR IS_DISABLED_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_SAVE_REPLAY_CLIP)) bStartBufferPressed = (IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_REPLAY_START_STOP_RECORDING_SECONDARY) OR IS_DISABLED_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_REPLAY_START_STOP_RECORDING_SECONDARY)) ENDIF ENDIF IF IS_REPLAY_RECORDING() IF bAcceptPressed // Save Buffer/Recording IF eFeedStartType = REPLAY_START_PARAM_HIGHLIGHT SAVE_REPLAY_RECORDING() ELSE STOP_REPLAY_RECORDING() ENDIF bCloseSelectorUI = TRUE ELIF bCancelPressed // Cancel Buffer/Recording CANCEL_REPLAY_RECORDING() IF eFeedStartType = REPLAY_START_PARAM_HIGHLIGHT bAddActionReplayOff = TRUE ENDIF bCloseSelectorUI = TRUE ENDIF ELSE IF bAcceptPressed // Recording START_REPLAY_RECORDING(REPLAY_START_PARAM_DIRECTOR) IF IS_REPLAY_RECORD_SPACE_AVAILABLE() eFeedStartType = REPLAY_START_PARAM_DIRECTOR ENDIF bCloseSelectorUI = TRUE ELIF bStartBufferPressed // Buffer START_REPLAY_RECORDING(REPLAY_START_PARAM_HIGHLIGHT) IF IS_REPLAY_RECORD_SPACE_AVAILABLE() eFeedStartType = REPLAY_START_PARAM_HIGHLIGHT bAddActionReplayOn = TRUE ENDIF bCloseSelectorUI = TRUE ENDIF ENDIF // Force player to release gamepad controls before processing again. IF bCloseSelectorUI g_sSelectorUI.bMustReleaseSelectorUIButton = TRUE g_sSelectorUI.bMustReleaseCancelButton = bCancelPressed g_sSelectorUI.bMustReleaseAcceptButton = bAcceptPressed g_sSelectorUI.bMustReleaseSquareButton = bStartBufferPressed ENDIF ENDIF // Replay Recording not availables so cleanup. ELSE CLEANUP_REPLAY_RECORD_FEED() ENDIF // Input exclusive until player releases buttons // Only do this if the creators aren't running or this will block creator input IF NOT IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL) IF (GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("creator")) = 0) IF g_sSelectorUI.bMustReleaseCancelButton OR bAllowReplayRecording OR iExcludeInputTimer > GET_GAME_TIMER() SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL) PRINTLN("SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)") IF GET_PAUSE_MENU_STATE() = PM_INACTIVE DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL) ENDIF DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_CIN_CAM) ENDIF IF g_sSelectorUI.bMustReleaseAcceptButton OR bAllowReplayRecording OR iExcludeInputTimer > GET_GAME_TIMER() SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT) PRINTLN("SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)") IF GET_PAUSE_MENU_STATE() = PM_INACTIVE DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT) ENDIF DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_DUCK) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_PARACHUTE_DEPLOY) ENDIF IF g_sSelectorUI.bMustReleaseSquareButton OR bAllowReplayRecording OR iExcludeInputTimer > GET_GAME_TIMER() SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL, INPUT_FRONTEND_X) PRINTLN("SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL, INPUT_FRONTEND_X)") IF GET_PAUSE_MENU_STATE() = PM_INACTIVE DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_X) ENDIF DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_JUMP) ENDIF ENDIF ENDIF #ENDIF /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Check for the flow requesting a ped hint on one of the three player characters. INT index REPEAT 3 index IF IS_BIT_SET(g_iPlayerFlowHintActive, index) IF NOT sSelectorPeds.bDisplayHint[index] PRINTLN("SWITCH UI - Setting flow requested selector hint on ", GET_CHARSHEET_DISPLAY_STRING_FROM_CHARSHEET(INT_TO_ENUM(enumCharacterList, index))) SET_SELECTOR_PED_HINT(sSelectorPeds, INT_TO_ENUM(SELECTOR_SLOTS_ENUM, index), TRUE) ENDIF ELSE IF sSelectorPeds.bDisplayHint[index] PRINTLN("SWITCH UI - Clearing flow requested selector hint on ", GET_CHARSHEET_DISPLAY_STRING_FROM_CHARSHEET(INT_TO_ENUM(enumCharacterList, index))) SET_SELECTOR_PED_HINT(sSelectorPeds, INT_TO_ENUM(SELECTOR_SLOTS_ENUM, index), FALSE) ENDIF ENDIF ENDREPEAT IF bCleanupMap IF bMapUpdated IF DOES_BLIP_EXIST(selectedPedBlip) REMOVE_BLIP(selectedPedBlip) ENDIF SET_HEALTH_HUD_DISPLAY_VALUES(-1, -1) SET_ABILITY_BAR_VALUE(-1, -1) SET_MAX_HEALTH_HUD_DISPLAY(0) SET_MAX_ARMOUR_HUD_DISPLAY(0) UNLOCK_MINIMAP_POSITION() bMapUpdated = FALSE ENDIF ENDIF // Damaged/hint indicator audio. BOOL bDamagedIndicatorAudioRequired = FALSE BOOL bHintIndicatorAudioRequired = FALSE IF (g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_HINT OR g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_HINT_TO_FULL) IF ((g_sSelectorUI.bDamaged[0] AND g_sSelectorUI.bFlashDamage[0]) OR (g_sSelectorUI.bDamaged[1] AND g_sSelectorUI.bFlashDamage[1]) OR (g_sSelectorUI.bDamaged[2] AND g_sSelectorUI.bFlashDamage[2]) OR (g_sSelectorUI.bDamaged[3] AND g_sSelectorUI.bFlashDamage[3])) bDamagedIndicatorAudioRequired = TRUE ELIF (g_sSelectorUI.bHinted[0] OR g_sSelectorUI.bHinted[1] OR g_sSelectorUI.bHinted[2] OR g_sSelectorUI.bHinted[3]) bHintIndicatorAudioRequired = TRUE ENDIF ENDIF IF (NOT g_sSelectorUI.bHinted[0] AND NOT g_sSelectorUI.bHinted[1] AND NOT g_sSelectorUI.bHinted[2] AND NOT g_sSelectorUI.bHinted[3]) bHintIndicatorNotTriggered = FALSE ENDIF IF bDamagedIndicatorAudioRequired IF iIndicatorSFX[0] = -1 iIndicatorSFX[0] = GET_SOUND_ID() START_AUDIO_SCENE("PLAYER_SWITCH_RED_ALERT_SCENE") PLAY_SOUND_FRONTEND(iIndicatorSFX[0], "SwitchRedWarning", "SPECIAL_ABILITY_SOUNDSET", FALSE) PRINTLN("SWITCH UI - playing sound: SwitchRedWarning, SPECIAL_ABILITY_SOUNDSET") ENDIF ELSE IF iIndicatorSFX[0] != -1 STOP_SOUND(iIndicatorSFX[0]) PRINTLN("SWITCH UI - stopping sound: SwitchRedWarning, SPECIAL_ABILITY_SOUNDSET") RELEASE_SOUND_ID(iIndicatorSFX[0]) IF NOT bHintIndicatorAudioRequired STOP_AUDIO_SCENE("PLAYER_SWITCH_RED_ALERT_SCENE") ENDIF iIndicatorSFX[0] = -1 ENDIF ENDIF IF bHintIndicatorAudioRequired IF iIndicatorSFX[1] = -1 AND NOT bHintIndicatorNotTriggered iIndicatorSFX[1] = GET_SOUND_ID() bHintIndicatorNotTriggered = TRUE START_AUDIO_SCENE("PLAYER_SWITCH_WHITE_ALERT_SCENE") PLAY_SOUND_FRONTEND(iIndicatorSFX[1], "SwitchWhiteWarning", "SPECIAL_ABILITY_SOUNDSET", FALSE) PRINTLN("SWITCH UI - playing sound: SwitchWhiteWarning, SPECIAL_ABILITY_SOUNDSET") ENDIF ELSE IF iIndicatorSFX[1] != -1 STOP_SOUND(iIndicatorSFX[1]) PRINTLN("SWITCH UI - stopping sound: SwitchWhiteWarning, SPECIAL_ABILITY_SOUNDSET") RELEASE_SOUND_ID(iIndicatorSFX[1]) IF NOT bDamagedIndicatorAudioRequired STOP_AUDIO_SCENE("PLAYER_SWITCH_WHITE_ALERT_SCENE") ENDIF iIndicatorSFX[1] = -1 ENDIF ENDIF IF bSwitchAvailableAudio AND NOT bDamagedIndicatorAudioRequired AND NOT bHintIndicatorAudioRequired IF NOT bSwitchAvailableAudioPlayed // Fix for bugs 1583038 and 1583031 - dontr trigger the available audio if it has just played. IF GET_GAME_TIMER() - iLastTimeSwitchWasOnscreen > 12500 PLAY_SOUND_FRONTEND(-1, "CHARACTER_SELECT", "HUD_FRONTEND_DEFAULT_SOUNDSET", FALSE) PRINTLN("SWITCH UI - playing sound: HUD_DEFAULT_INFO_MASTER") ENDIF ENDIF bSwitchAvailableAudioPlayed = TRUE ENDIF // Fix for bug 1500026 - Need to suppress vehicle info just after a switch. IF IS_PLAYER_SWITCH_IN_PROGRESS() OR IS_PLAYER_PED_SWITCH_IN_PROGRESS() OR IS_SELECTOR_CAM_ACTIVE() OR g_sSelectorUI.bHideUiForSwitch iSwitchActiveTimer = GET_GAME_TIMER() ENDIF IF (GET_GAME_TIMER() - iSwitchActiveTimer < 1000) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_VEHICLE_NAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_AREA_NAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_DISTRICT_NAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_STREET_NAME) bSwitchActiveBlock = TRUE ELIF bSwitchActiveBlock IF NOT IS_PED_INJURED(PLAYER_PED_ID()) AND IS_PLAYER_CONTROL_ON(PLAYER_ID()) IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID()) //SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_VEHICLE_NAME) ENDIF //SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_AREA_NAME) //SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_DISTRICT_NAME) //SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_STREET_NAME) ENDIF bSwitchActiveBlock = FALSE ENDIF // Fix for bug 1437330 - During short range switches, all HUD elements should disappear and reappear on the same frame. IF IS_PLAYER_SWITCH_IN_PROGRESS() AND GET_PLAYER_SWITCH_TYPE() = SWITCH_TYPE_SHORT bSuppressUIForShortSwitch = TRUE iSuppressRadarTimer = GET_GAME_TIMER() PRINTLN(">>> SUPPRESS MAP") ENDIF IF bSuppressUIForShortSwitch IF IS_PLAYER_SWITCH_IN_PROGRESS() iLastSwitchFrameCount = 0 ELSE iLastSwitchFrameCount++ ENDIF IF (GET_GAME_TIMER() - iSuppressRadarTimer > 5000) OR g_sSelectorUI.bOnScreen OR (NOT IS_PLAYER_SWITCH_IN_PROGRESS() AND NOT g_sSelectorUI.bMissionUpdate AND iLastSwitchFrameCount > 5) bSuppressUIForShortSwitch = FALSE ENDIF // HIDE_HUD_AND_RADAR_THIS_FRAME() HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_HELP_TEXT) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_SUBTITLE_TEXT) ENDIF IF bCleanupMovies IF (NOT NETWORK_IS_GAME_IN_PROGRESS() AND (GET_GAME_TIMER() - iCleanupMoviesTimer) > 2000 AND NOT bSuppressUIForShortSwitch) OR (NETWORK_IS_GAME_IN_PROGRESS())// AND IS_TIME_MORE_THAN(GET_NETWORK_TIME(), GET_TIME_OFFSET(tdCleanupMoviesTimer, 2000))) PRINTSTRING("\n CLEANUP_SELECTOR_UI - Cleaning up scaleform movie.")PRINTNL() IF bRequested SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(movieID) IF NOT bUsingPrologueMovie SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(movieID2) ENDIF ENDIF iLoadMoviesTimer = GET_GAME_TIMER() IF NETWORK_IS_GAME_IN_PROGRESS() tdLoadMoviesTimer = GET_NETWORK_TIME() ENDIF NET_NL()NET_PRINT("SELECTOR: bCleanupMovies = TRUE so put up the save failed again ") g_b_ReapplyStickySaveFailedFeed = FALSE bSetSystemTimer = FALSE bRequested = FALSE movieID = NULL movieID2 = NULL bCleanupMovies = FALSE g_sSelectorUI.bLoaded = FALSE ELSE PRINTSTRING("\n CLEANUP_SELECTOR_UI - Waiting for cleanup timer to pass before unloadig scaleform movies.")PRINTNL() ENDIF ENDIF IF g_sSelectorUI.bOnScreen iLastTimeSwitchWasOnscreen = GET_GAME_TIMER() ENDIF ENDPROC PROC FAILSAFE_PLAYER_RESPAWN() NET_NL()NET_PRINT("SELECTOR: FAILSAFE_PLAYER_RESPAWN - AUTOMATIC RESPAWN") IF IS_NET_PLAYER_OK(PLAYER_ID()) = FALSE TRANSITION_BEGIN_RESPAWN() ENDIF TRIGGER_TRANSITION_MENU_ACTIVE(FALSE) SET_SOMETHING_QUITTING_MP(FALSE) DISPLAYING_SCRIPT_HUD(HUDPART_TRANSITIONHUD, FALSE) DISABLE_CELLPHONE(FALSE) SET_SCRIPT_AS_NO_LONGER_NEEDED("MainTransition") IF NETWORK_IS_GAME_IN_PROGRESS() CANCEL_PLAYER_PED_SWITCH_REQUEST() ENDIF ENDPROC PROC DRAW_FAKE_SWITCH() // // //STATS //SET_SCRIPT_GFX_ALIGN(UI_ALIGN_RIGHT, UI_ALIGN_BOTTOM) //SET_SCRIPT_GFX_ALIGN_PARAMS(fPLAYER_STATS_X, fPLAYER_STATS_Y, fPLAYER_STATS_W*fPLAYER_STATS_SCALE_W, fPLAYER_STATS_H*fPLAYER_STATS_SCALE_H) //IF NOT bSuppressUIForShortSwitch // DRAW_SCALEFORM_MOVIE(movieID2, fPLAYER_STATS_X, fPLAYER_STATS_Y, fPLAYER_STATS_W*fPLAYER_STATS_SCALE_W, fPLAYER_STATS_H*fPLAYER_STATS_SCALE_H, 255, 255, 255, 255) //ENDIF //RESET_SCRIPT_GFX_ALIGN() //SWITCH // SWITCH UI //IF HAS_SCALEFORM_MOVIE_LOADED(movieID) // PRINTSTRING("\n DRAW_FAKE_SWITCH - CALLING scaleform.")PRINTNL() // IF g_b_Private_IsSelectorActuallyDrawing = FALSE // SET_WIDESCREEN_FORMAT(WIDESCREEN_FORMAT_RIGHT) // SET_SCRIPT_GFX_ALIGN(UI_ALIGN_RIGHT, UI_ALIGN_BOTTOM) // //SET_SCRIPT_GFX_ALIGN_PARAMS((((fPLAYER_SWITCH_W*fPLAYER_SWITCH_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE)*0.5), fPLAYER_SWITCH_Y, (fPLAYER_SWITCH_W*fPLAYER_SWITCH_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE, (fPLAYER_SWITCH_H*fPLAYER_SWITCH_SCALE_H)) // SET_SCRIPT_GFX_ALIGN_PARAMS(0,0,0,0) // // // PRINTSTRING("\n DRAW_FAKE_SWITCH - DRAWING scaleform.")PRINTNL() // // DRAW_SCALEFORM_MOVIE(movieID, (((fPLAYER_SWITCH_W*fPLAYER_SWITCH_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE)*0.5), fPLAYER_SWITCH_Y, (fPLAYER_SWITCH_W*fPLAYER_SWITCH_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE, (fPLAYER_SWITCH_H*fPLAYER_SWITCH_SCALE_H), 255, 255, 255, 255) // RESET_SCRIPT_GFX_ALIGN() // ENDIF // // g_b_Private_IsSelectorActuallyDrawing = FALSE // // HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_VEHICLE_NAME) // HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_AREA_NAME) // HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_DISTRICT_NAME) // HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_STREET_NAME) // //ENDIF ENDPROC /// PURPOSE: Checks for the player bringing up the switch UI and making an ambient selection PROC MAINTAIN_AMBIENT_SELECTOR() #IF IS_DEBUG_BUILD IF NOT IS_PLAYER_PED_SWITCH_IN_PROGRESS() AND NOT g_bMagDemoActive MAINTAIN_SELECTOR_MULTIPLAYER_QUICKLAUNCH_TRANSITION() ENDIF #ENDIF BOOL bLaunchFromEventReceived = FALSE BOOL bInMpIntroTaxi = FALSE BOOL bCheckPlayerControl = g_sSelectorUI.bCheckPlayerControl // Check for ambient character selection BOOL bUISelection = FALSE IF NOT g_sSelectorUI.bMissionUpdate AND NOT g_bMagdemoDoTakeOverSwitch IF (NOT IS_PLAYER_SWITCH_IN_PROGRESS() OR g_TransitionData.bCouldNotJoinNetworkGame) IF NETWORK_IS_GAME_IN_PROGRESS() IF IS_LOCAL_PLAYER_IN_TAXI_FOR_INTRO() bInMpIntroTaxi = TRUE ENDIF ENDIF IF bInMpIntroTaxi bCheckPlayerControl = FALSE ENDIF IF ((IS_SELECTOR_UI_BUTTON_PRESSED(bCheckPlayerControl ) OR IS_SELECTOR_UI_BUTTON_JUST_RELEASED(bCheckPlayerControl)) AND UPDATE_SELECTOR_HUD(sSelectorPeds, bCheckPlayerControl)) // Returns TRUE when the player has made a valid selection PRINTLN("BC: - SELECTOR REQUESTING A TRANSITION") SET_BIT(g_b_EnteredMaintransitionSelectorBitset, ENUM_TO_INT(JT_SELECTOR_WHEEL)) IF (HAS_MULTIPLAYER_BEEN_SELECTED(sSelectorPeds)) OR GET_CURRENT_GAMEMODE() = GAMEMODE_FM INT iPlayerNum = NATIVE_TO_INT(PLAYER_ID()) IF iPlayerNum > -1 SET_BIT(GlobalplayerBD_FM[iPlayerNum].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bIsOnWarningScreen) NET_NL()NET_PRINT("BC: GlobalPlayerBroadcastDataFM_BS_bIsOnWarningScreen = TRUE ") ENDIF IF IS_SCREEN_FADED_IN() AND NOT IS_SCREEN_FADING_OUT() SET_AUDIO_FLAG("AllowRadioOverScreenFade", TRUE) SET_NO_LOADING_SCREEN(TRUE) DO_SCREEN_FADE_OUT(0) ENDIF DRAW_FAKE_SWITCH() ENDIF g_Private_SwitchedSP_DuringActivity = TRUE //Always show screen. TODO 1334154 IF NETWORK_IS_ACTIVITY_SESSION() OR (FM_EVENT_IS_PLAYER_LEAVING_EVENT_SEVERE() OR FM_EVENT_IS_PLAYER_LEAVING_EVENT_SUPER_SEVERE()) NET_NL()NET_PRINT("BC: NETWORK_IS_ACTIVITY_SESSION or FM EVENT and quit through the Selector - g_b_QuitActivityThroughSelector = TRUE ") g_b_QuitActivityThroughSelector = TRUE ENDIF SWITCH GET_CURRENT_GAMEMODE() CASE GAMEMODE_FM IF IS_ON_BASEJUMP_GLOBAL_SET() OR IS_ON_DEATHMATCH_GLOBAL_SET() OR IS_ON_RACE_GLOBAL_SET() OR IS_ON_RALLY_RACE_GLOBAL_SET() OR g_bFM_ON_TEAM_MISSION OR IS_PLAYER_ON_MP_AMBIENT_SCRIPT(PLAYER_ID(), MPAM_TYPE_GANGHIDEOUT) PRINTLN("BC: - SELECTOR g_Private_SwitchedSP_DuringActivity = TRUE") g_Private_SwitchedSP_DuringActivity = TRUE ELSE ENDIF BREAK ENDSWITCH bUISelection = TRUE ENDIF ENDIF ELSE NET_NL()NET_PRINT("g_sSelectorUI.bMissionUpdate = ")NET_PRINT_BOOL(g_sSelectorUI.bMissionUpdate) ENDIF #IF IS_DEBUG_BUILD IF GET_QUICKLAUNCH_STATE() != QUICKLAUNCH_EMPTY PRINTLN("BC: - SELECTOR GET_QUICKLAUNCH_STATE() != QUICKLAUNCH_EMPTY REQUESTING A TRANSITION") bUISelection = TRUE ENDIF #ENDIF IF IS_TRANSITION_MENU_TRIGGERED() PRINTLN("BC: - SELECTOR IS_TRANSITION_MENU_TRIGGERED REQUESTING A TRANSITION") bUISelection = TRUE ENDIF IF HAVE_I_BEEN_KICKED() PRINTLN("BC: - SELECTOR HAVE_I_BEEN_KICKED REQUESTING A TRANSITION") bUISelection = TRUE ENDIF #IF FEATURE_FREEMODE_ARCADE IF (IS_FREEMODE_ARCADE() AND IS_RETURN_TO_LANDING_PAGE()) PRINTLN("BC: - SELECTOR IS_FREEMODE_ARCADE IS_RETURN_TO_LANDING_PAGE REQUESTING A TRANSITION") bUISelection = TRUE SET_TRANSITION_LAUNCH_BLOCKING_MUSIC_STOP(TRUE) IF NOT IS_GAMEMODE_AN_ARCADEMODE(GET_CURRENT_GAMEMODE()) SET_CURRENT_GAMEMODE(GAMEMODE_EMPTY) ENDIF ELIF (IS_FREEMODE_ARCADE() AND IS_RETURN_TO_GTA_ONLINE()) PRINTLN("BC: - SELECTOR IS_FREEMODE_ARCADE IS_RETURN_TO_GTA_ONLINE REQUESTING A TRANSITION") bUISelection = TRUE IF NOT IS_GAMEMODE_AN_ARCADEMODE(GET_CURRENT_GAMEMODE()) SET_CURRENT_GAMEMODE(GAMEMODE_EMPTY) ENDIF ENDIF #ENDIF IF IS_TRANSITION_ACTIVE() = FALSE IF IS_PAUSE_MENU_REQUESTING_TRANSITION() PRINTLN("BC: JAMES A - SELECTOR PAUSE MENU IS REQUESTING A TRANSITION") SET_BIT(g_b_EnteredMaintransitionSelectorBitset, ENUM_TO_INT(JT_PAUSE_MENU)) bUISelection = TRUE ENDIF #IF IS_DEBUG_BUILD ELSE IF IS_PAUSE_MENU_REQUESTING_TRANSITION() PRINTLN("BC: JAMES A - SELECTOR Trying to start maintransition IS_PAUSE_MENU_REQUESTING_TRANSITION but IS_TRANSITION_ACTIVE = TRUE ") ENDIF #ENDIF ENDIF IF LOBBY_AUTO_MULTIPLAYER_RANDOM_JOB() PRINTLN("BC: JAMES A - SELECTOR LOBBY_AUTO_MULTIPLAYER_RANDOM_JOB() ") SET_BIT(g_b_EnteredMaintransitionSelectorBitset, ENUM_TO_INT(JT_RANDOM_JOB)) ENDIF IF LOBBY_AUTO_MULTIPLAYER_EVENT() IF IS_FEATURED_PLAYLIST_ACTIVE() PRINTLN("BC: JAMES A - SELECTOR LOBBY_AUTO_MULTIPLAYER_EVENT() JT_FEATURE_PLAYLIST ") SET_BIT(g_b_EnteredMaintransitionSelectorBitset, ENUM_TO_INT(JT_FEATURE_PLAYLIST)) ELSE PRINTLN("BC: JAMES A - SELECTOR LOBBY_AUTO_MULTIPLAYER_EVENT() JT_EVENT_PLAYLIST ") SET_BIT(g_b_EnteredMaintransitionSelectorBitset, ENUM_TO_INT(JT_EVENT_PLAYLIST)) ENDIF ENDIF //IF (LOBBY_ENTER_MULTIPLAYER()) // Command has been removed from game, see bug #507451. IF GET_CONFIRM_INVITE_INTO_GAME_STATE() FORCE_RESPAWN() sSelectorPeds.bInitialised = TRUE PRINTLN("BC: JAMES A - SELECTOR GET_CONFIRM_INVITE_INTO_GAME_STATE = TRUE") sSelectorPeds.eNewSelectorPed = SELECTOR_PED_MULTIPLAYER bUISelection = TRUE bLaunchFromEventReceived = TRUE SET_BIT(g_b_EnteredMaintransitionSelectorBitset, ENUM_TO_INT(JT_INVITED)) ENDIF IF IS_PAUSE_MENU_MIGRATE_SAVES() AND ((HAS_IMPORTANT_STATS_LOADED() AND IS_MIGRATE_CHECK_START_RUNNING() = FALSE) OR HAS_IMPORTANT_STATS_LOADED() = FALSE) AND IS_NOT_MIGRATION_RUNNING() BOOL continueToMigrateCheck = TRUE //IMPORTANT: We cant do any migration bulshyte if stats are loaded!!! IF HAS_IMPORTANT_STATS_LOADED() PRINTLN("[SAVETRANS] HAS_IMPORTANT_STATS_LOADED - calling RELOAD_EVERYTHING_NOW_LIGHT_VERSION") //Clear all stats ligth version, we dont really need to reset local values now. continueToMigrateCheck = RELOAD_EVERYTHING_NOW_LIGHT_VERSION() ENDIF IF continueToMigrateCheck //If we good to go, or we're in FM OR GET_CURRENT_GAMEMODE() = GAMEMODE_FM //If in FM set that we need to clean up the stats when we get to the loader IF GET_CURRENT_GAMEMODE() = GAMEMODE_FM SET_CLEAR_STATS_IN_TRANSFER_AFTER_BEING_IN_FM(TRUE) ENDIF STAT_MIGRATE_CLEAR_FOR_RESTART() PRINTLN("BC: JAMES A - SELECTOR IS_PAUSE_MENU_MIGRATE_SAVES = TRUE ") PRINTLN("[SAVETRANS] Selector: STAT_MIGRATE_CLEAR_FOR_RESTART() called STAT_MIGRATE_CLEAR_FOR_RESTART") FORCE_RESPAWN() IF GET_CURRENT_GAMEMODE() = GAMEMODE_SP OR GET_CURRENT_GAMEMODE() = GAMEMODE_EMPTY SET_EMERGENCY_SKYCAM_UP_RUNNING(TRUE) ENDIF sSelectorPeds.bInitialised = TRUE sSelectorPeds.eNewSelectorPed = SELECTOR_PED_MULTIPLAYER bUISelection = TRUE ENDIF ENDIF IF DID_LAUNCHED_LIVETILE_WHILE_TRANSITIONING() AND NOT IS_TRANSITION_ACTIVE() AND NOT IS_PLAYER_SWITCH_IN_PROGRESS() AND g_sPlayerPedRequest.eState != PR_STATE_PROCESSING NET_NL()NET_PRINT("BC: DID_LAUNCHED_LIVETILE_WHILE_TRANSITIONING() = TRUE ") //g_AppLaunchStructDetails.nFlags = LAUNCH_FROM_LIVE_AREA INT bitset = ENUM_TO_INT(g_AppLaunchStructDetails.nFlags) bitset = bitset|ENUM_TO_INT(LAUNCH_FROM_LIVE_AREA) g_AppLaunchStructDetails.nFlags = INT_TO_ENUM(APP_LAUNCH_FLAGS, bitset) NET_NL()NET_PRINT("BC: bitset = ")NET_PRINT_INT(bitset) //SET_BIT(ENUM_TO_INT(g_AppLaunchStructDetails.nFlags), ENUM_TO_INT(LAUNCH_FROM_LIVE_AREA)) ENDIF IF HAS_EVENT_APP_LAUNCH_LIVE_AREA_RECIEVED() AND NOT IS_PLAYER_SWITCH_IN_PROGRESS() AND g_sPlayerPedRequest.eState != PR_STATE_PROCESSING FORCE_RESPAWN() sSelectorPeds.bInitialised = TRUE PRINTLN("BC: JAMES A - SELECTOR HAS_EVENT_APP_LAUNCH_LIVE_AREA_RECIEVED = TRUE") IF NOT GET_IS_LOADING_SCREEN_ACTIVE() // IF g_bScriptsSetSafeForCutscene = TRUE // AND IS_GAMEPLAY_CAM_RENDERING() = FALSE // SET_EMERGENCY_SKYCAM_UP_RUNNING(TRUE) // ELSE // SET_SP_SELECTOR_SKYCAM_UP(TRUE) // ENDIF ENDIF sSelectorPeds.eNewSelectorPed = SELECTOR_PED_MULTIPLAYER bUISelection = TRUE bLaunchFromEventReceived = TRUE ENDIF IF HAS_EVENT_APP_LAUNCH_DIRECT_TO_CONTENT() AND NOT IS_PLAYER_SWITCH_IN_PROGRESS() AND g_sPlayerPedRequest.eState != PR_STATE_PROCESSING FORCE_RESPAWN() sSelectorPeds.bInitialised = TRUE PRINTLN("BC: JAMES A - SELECTOR HAS_EVENT_APP_LAUNCH_DIRECT_TO_CONTENT = TRUE") IF NOT GET_IS_LOADING_SCREEN_ACTIVE() // IF g_bScriptsSetSafeForCutscene = TRUE // AND IS_GAMEPLAY_CAM_RENDERING() = FALSE // SET_EMERGENCY_SKYCAM_UP_RUNNING(TRUE) // ELSE // SET_SP_SELECTOR_SKYCAM_UP(TRUE) // ENDIF ENDIF sSelectorPeds.eNewSelectorPed = SELECTOR_PED_MULTIPLAYER bUISelection = TRUE bLaunchFromEventReceived = TRUE ENDIF IF HAS_EVENT_APP_LAUNCH_STRAIGHT_INTO_FREEMODE_RECIEVED() AND NOT IS_PLAYER_SWITCH_IN_PROGRESS() AND g_sPlayerPedRequest.eState != PR_STATE_PROCESSING FORCE_RESPAWN() sSelectorPeds.bInitialised = TRUE PRINTLN("BC: JAMES A - SELECTOR HAS_EVENT_APP_LAUNCH_STRAIGHT_INTO_FREEMODE_RECIEVED = TRUE") IF NOT GET_IS_LOADING_SCREEN_ACTIVE() // IF g_bScriptsSetSafeForCutscene = TRUE // AND IS_GAMEPLAY_CAM_RENDERING() = FALSE // SET_EMERGENCY_SKYCAM_UP_RUNNING(TRUE) // ELSE // SET_SP_SELECTOR_SKYCAM_UP(TRUE) // ENDIF ENDIF sSelectorPeds.eNewSelectorPed = SELECTOR_PED_MULTIPLAYER bUISelection = TRUE bLaunchFromEventReceived = TRUE ENDIF IF NOT bMPAutoBootFromStartup //This check has been moved to a cached version at the beginning of startup.sc. //Search project for LOAD_SCREEN_CHOICE_IS_MULTIPLAYER() and g_bRunMultiplayerOnStartup - BenR IF g_bRunMultiplayerOnStartup // OR LOBBY_AUTO_MULTIPLAYER_FREEMODE() // -StraightIntoFreemode // IF LOBBY_AUTO_MULTIPLAYER_MENU() // -netAutoMultiplayerMenu // OR LOBBY_AUTO_MULTIPLAYER_CNC() // -StraightIntoCNC // OR NETWORK_AUTO_MULTIPLAYER_LAUNCH() // -netAutoMultiplayerLaunch - Not used but keeping the text link here. // OR LOBBY_AUTO_MULTIPLAYER_CREATOR() // -StraightIntoCreator - Not used but keeping the text link here. CPRINTLN(DEBUG_INIT, " Selector is simulating a switch into MP through the selector HUD.") #IF USE_FINAL_PRINTS PRINTLN_FINAL("<2140379> Selector is simulating a switch into MP through the selector HUD.") #ENDIF SET_BIT(g_b_EnteredMaintransitionSelectorBitset, ENUM_TO_INT(JT_ONLINE_BUTTON)) g_b_isSelectorAbouttoBootMaintransition = TRUE sSelectorPeds.bInitialised = TRUE sSelectorPeds.eNewSelectorPed = SELECTOR_PED_MULTIPLAYER bUISelection = TRUE bMPAutoBootFromStartup = TRUE ENDIF ENDIF // Process any selections IF bUISelection DRAW_FAKE_SWITCH() BOOL Run_warning_Screen = TRUE IF g_Private_SwitchedSP_DuringActivity = FALSE NET_NL()NET_PRINT("g_Private_SwitchedSP_DuringActivity = FALSE: Run_warning_Screen = FALSE ") Run_warning_Screen = FALSE ENDIF IF IS_PAUSE_MENU_REQUESTING_TRANSITION() NET_NL()NET_PRINT("IS_PAUSE_MENU_REQUESTING_TRANSITION() = FALSE: Run_warning_Screen = FALSE ") Run_warning_Screen = FALSE ENDIF //Global for BG script control for bug //url:bugstar:3770047 - [PUBLIC][EXPLOIT] Off freemode script / "off the radar" exploit using recent GTAO activity, sp transition and friend in different aiming mode IF g_b_SwitchSelectorLiveTileInviteShowScreenProcess = TRUE IF GET_CONFIRM_INVITE_INTO_GAME_STATE() NET_NL()NET_PRINT("GET_CONFIRM_INVITE_INTO_GAME_STATE() = TRUE: Run_warning_Screen = FALSE g_b_SwitchSelectorLiveTileInviteShowScreenProcess = TRUE") Run_warning_Screen = FALSE ENDIF ENDIF IF HAS_EVENT_APP_LAUNCH_LIVE_AREA_RECIEVED() NET_NL()NET_PRINT("BC: HAS_EVENT_APP_LAUNCH_LIVE_AREA_RECIEVED() = TRUE: ") IF GET_IS_LOADING_SCREEN_ACTIVE() Run_warning_Screen = FALSE ELSE Run_warning_Screen = TRUE ENDIF SET_LAUNCHED_LIVETILE_WHILE_TRANSITIONING(FALSE) ENDIF IF HAS_EVENT_APP_LAUNCH_DIRECT_TO_CONTENT() NET_NL()NET_PRINT("BC: HAS_EVENT_APP_LAUNCH_DIRECT_TO_CONTENT() = TRUE: ") IF GET_IS_LOADING_SCREEN_ACTIVE() Run_warning_Screen = FALSE ELSE Run_warning_Screen = TRUE ENDIF SET_LAUNCHED_LIVETILE_WHILE_TRANSITIONING(FALSE) //Clear that the last one was set up CLEAR_HAVE_DONE_INITIAL_PS4_LIVE_STREAM_SETUP() CLEAR_PS4_LIVE_STREAM_LAUNCH_ACTIVE() IF NETWORK_IS_GAME_IN_PROGRESS() SET_TRANSITION_SESSION_LAUNCHED_LIVE_TILE_WHEN_GAME_RUNNING_MP() ENDIF SET_TRANSITION_SESSION_LAUNCHED_LIVE_TILE_WHEN_GAME_RUNNING() ENDIF IF HAS_EVENT_APP_LAUNCH_STRAIGHT_INTO_FREEMODE_RECIEVED() NET_NL()NET_PRINT("BC: HAS_EVENT_APP_LAUNCH_STRAIGHT_INTO_FREEMODE_RECIEVED() = TRUE: ") IF GET_IS_LOADING_SCREEN_ACTIVE() Run_warning_Screen = FALSE ELSE Run_warning_Screen = TRUE ENDIF SET_LAUNCHED_LIVETILE_WHILE_TRANSITIONING(FALSE) ENDIF //Global for BG script control for bug //url:bugstar:3770047 - [PUBLIC][EXPLOIT] Off freemode script / "off the radar" exploit using recent GTAO activity, sp transition and friend in different aiming mode IF g_b_SwitchSelectorLiveTileInviteShowScreenProcess = FALSE IF GET_CONFIRM_INVITE_INTO_GAME_STATE() NET_NL()NET_PRINT("GET_CONFIRM_INVITE_INTO_GAME_STATE() = TRUE: Run_warning_Screen = FALSE g_b_SwitchSelectorLiveTileInviteShowScreenProcess = FALSE") Run_warning_Screen = FALSE ENDIF ENDIF #IF IS_DEBUG_BUILD IF GET_QUICKLAUNCH_STATE() != QUICKLAUNCH_EMPTY RESET_EVERYTHING_TRANSITION_SESSION_FOR_SP_BAIL(DEFAULT, FALSE) Run_warning_Screen = FALSE ENDIF #ENDIF // [DIRECTOR_TODO] #IF FEATURE_SP_DLC_DIRECTOR_MODE IF IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_DIRECTOR) AND NOT bLaunchFromEventReceived //B* 3765314: Don't trigger the Trailer switch if moving into MP SET_AUDIO_FLAG("AllowRadioOverScreenFade", FALSE) IF HAS_SELECTOR_PED_BEEN_SELECTED(sSelectorPeds, SELECTOR_PED_MULTIPLAYER) CPRINTLN(debug_director,"Detected switch to Casting Trailer from the Selector script") CDEBUG1LN(DEBUG_DIRECTOR,"MAINTAIN_AMBIENT_SELECTOR: setting g_bDirectorSwitchToCastingTrailer to TRUE") g_bDirectorSwitchToCastingTrailer = TRUE ELIF HAS_SELECTOR_PED_BEEN_SELECTED(sSelectorPeds, GET_SELECTOR_SLOT_FROM_PLAYER_PED_ENUM(g_savedGlobals.sPlayerData.sInfo.eLastKnownPed)) g_bDirectorSwitchToLastPlayer = TRUE ENDIF // Clear the selection so multiplayer doesn't kick in. sSelectorPeds.eNewSelectorPed = NUMBER_OF_SELECTOR_PEDS ELIF IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_DIRECTOR) CPRINTLN(DEBUG_DIRECTOR,"Attemtped switch to Casting Trailer from a received online event. Skipping switch.") ENDIF #ENDIF IF (HAS_ANY_SELECTOR_PED_BEEN_SELECTED(sSelectorPeds)) IF g_bMagdemoTakingOverSwitch g_bMagdemoDoTakeOverSwitch = TRUE ELSE #IF FEATURE_GEN9_STANDALONE // Check player has an active character before performing switch request to MP, otherwise take them to Career Builder if applicable IF HAS_MULTIPLAYER_BEEN_SELECTED(sSelectorPeds) AND IS_STAT_CHARACTER_ACTIVE(0) = FALSE AND IS_STAT_CHARACTER_ACTIVE(1) = FALSE AND NETWORK_GET_MP_WINDFALL_AVAILABLE() PRINTLN("MAINTAIN_AMBIENT_SELECTOR - Multiplayer requested but no existing characters and Windfall is available. Redirecting to Windfall.") SET_LAUNCH_LANDING_PAGE_TO_WINDFALL() // Check player entitlement for switching to Story mode (i.e. not a Multiplayer selection) ELIF HAS_MULTIPLAYER_BEEN_SELECTED(sSelectorPeds) = FALSE AND GET_PLAYER_HAS_STORY_MODE_ENTITLEMENT() = FALSE PRINTLN("MAINTAIN_AMBIENT_SELECTOR - Singleplayer requested but player has no Story mode entitlement.") // Do nothing here, player cannot switch to SP characters without Story mode entitlement. // They will see the SP upsell prompt when this selection is processed below ELSE #ENDIF // FEATURE_GEN9_STANDALONE MAKE_PLAYER_PED_SWITCH_REQUEST(GET_PLAYER_PED_ENUM_FROM_SELECTOR_SLOT(sSelectorPeds.eNewSelectorPed), (NOT Run_warning_Screen)) //, PR_TYPE_AMBIENT) #IF FEATURE_GEN9_STANDALONE ENDIF #ENDIF // FEATURE_GEN9_STANDALONE ENDIF ENDIF IF HAS_MULTIPLAYER_BEEN_SELECTED(sSelectorPeds) OR IS_TRANSITION_MENU_TRIGGERED() OR IS_PAUSE_MENU_REQUESTING_TRANSITION() OR NETWORK_IS_GAME_IN_PROGRESS() OR GET_CONFIRM_INVITE_INTO_GAME_STATE() OR HAS_EVENT_APP_LAUNCH_LIVE_AREA_RECIEVED() OR HAS_EVENT_APP_LAUNCH_DIRECT_TO_CONTENT() OR HAS_EVENT_APP_LAUNCH_STRAIGHT_INTO_FREEMODE_RECIEVED() OR HAVE_I_BEEN_KICKED() #IF FEATURE_FREEMODE_ARCADE OR IS_RETURN_TO_GTA_ONLINE() #ENDIF #IF IS_DEBUG_BUILD OR GET_QUICKLAUNCH_STATE() != QUICKLAUNCH_EMPTY #ENDIF #IF USE_REPLAY_RECORDING_TRIGGERS CLEANUP_REPLAY_RECORD_FEED() #ENDIF // HIDE_HUD_FOR_TRANSITION_THIS_FRAME() IF Run_warning_Screen BOOL bBringUpSignInUI MULTIPLAYER_ACCESS_CODE nAccessCode IF GET_CURRENT_GAMEMODE() = GAMEMODE_FM SET_PLAYER_INVINCIBLE(PLAYER_ID(), FALSE) ENDIF SET_AUDIO_FLAG("ActivateSwitchWheelAudio", FALSE) RUN_TRANSITION_SFX(TRUE) #IF FEATURE_GEN9_STANDALONE SCRIPT_ROUTER_CONTEXT_DATA srcData // Used for switching to SP character #ENDIF // FEATURE_GEN9_STANDALONE WARNING_SCREEN_RETURN aResult = WARNING_SCREEN_RETURN_NONE WHILE Run_warning_Screen = TRUE DRAW_FAKE_SWITCH() HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_AREA_NAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_VEHICLE_NAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_DISTRICT_NAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_STREET_NAME) // HIDE_HUD_FOR_TRANSITION_THIS_FRAME() SET_ALL_PLAYER_OVERHEADS_VISIBILITY(FALSE) SCRIPT_NETWORK_CAN_ACCESS_MULTIPLAYER(nAccessCode) #IF IS_DEBUG_BUILD PRINTLN("\n***") PRINTLN("Multiplayer has been selected for SWITCH! BUT IS_PLAYER_ONLINE() = ", IS_PLAYER_ONLINE()) PRINTLN("Multiplayer has been selected for SWITCH! BUT NETWORK_IS_SIGNED_ONLINE() = ", NETWORK_IS_SIGNED_ONLINE()) PRINTLN("Multiplayer has been selected for SWITCH! BUT NETWORK_IS_SIGNED_IN() = ", NETWORK_IS_SIGNED_IN()) PRINTLN("Multiplayer has been selected for SWITCH! BUT NETWORK_HAS_VALID_ROS_CREDENTIALS() = ", NETWORK_HAS_VALID_ROS_CREDENTIALS()) PRINTLN("Multiplayer has been selected for SWITCH! BUT NETWORK_CAN_ENTER_MULTIPLAYER() = ", NETWORK_CAN_ENTER_MULTIPLAYER()) PRINTLN("Multiplayer has been selected for SWITCH! BUT SCRIPT_NETWORK_CAN_ACCESS_MULTIPLAYER(nAccessCode) = ", SCRIPT_NETWORK_CAN_ACCESS_MULTIPLAYER(nAccessCode), " nAccessCode = ", nAccessCode) PRINTLN("Multiplayer has been selected for SWITCH! BUT g_savedGlobals.sFlow.missionSavedData[SP_MISSION_PROLOGUE].completed = ", g_savedGlobals.sFlow.missionSavedData[SP_MISSION_PROLOGUE].completed) PRINTLN("Multiplayer has been selected for SWITCH! BUT nAccessCode = ", nAccessCode) PRINTLN("Multiplayer has been selected for SWITCH! BUT IS_SP_PROLOGUE_FINISHED = ", IS_SP_PROLOGUE_FINISHED()) PRINTLN("Multiplayer has been selected for SWITCH! BUT IS_PLAYER_LOGGING_IN_NP = ", IS_PLAYER_LOGGING_IN_NP()) IF IS_PLAYSTATION_PLATFORM() AND NETWORK_IS_NP_AVAILABLE() = FALSE PRINTLN("Multiplayer has been selected for SWITCH! BUT NETWORK_GET_NP_UNAVAILABLE_REASON() = ", GET_UNAVAILABILITY_REASON_STRING(NETWORK_GET_NP_UNAVAILABLE_REASON())) ENDIF PRINTLN("Multiplayer has been selected for SWITCH! BUT NETWORK_IS_CLOUD_AVAILABLE = ", NETWORK_IS_CLOUD_AVAILABLE()) IF NETWORK_IS_SIGNED_IN() PRINTLN("Multiplayer has been selected for SWITCH! BUT NETWORK_HAVE_PLATFORM_SUBSCRIPTION = ", NETWORK_HAVE_PLATFORM_SUBSCRIPTION()) ENDIF IF IS_PLAYSTATION_PLATFORM() PRINTLN("Multiplayer has been selected for SWITCH! BUT NETWORK_IS_NP_AVAILABLE = ", NETWORK_IS_NP_AVAILABLE()) ENDIF PRINTLN("Multiplayer has been selected for SWITCH! BUT g_SignInStructDetails.bIsSignedIn = ", g_SignInStructDetails.bIsSignedIn) PRINTLN("Multiplayer has been selected for SWITCH! BUT g_SignInStructDetails.bIsDuplicateSignIn = ", g_SignInStructDetails.bIsDuplicateSignIn) PRINTLN("Multiplayer has been selected for SWITCH! BUT g_SignInStructDetails.bWasOnline = ", g_SignInStructDetails.bWasOnline) PRINTLN("Multiplayer has been selected for SWITCH! BUT g_SignInStructDetails.bWasSignedIn = ", g_SignInStructDetails.bWasSignedIn) PRINTLN("Multiplayer has been selected for SWITCH! BUT g_SignInStructDetails.bIsOnline = ", g_SignInStructDetails.bIsOnline) PRINTLN("Multiplayer has been selected for SWITCH! BUT NETWORK_IS_REFRESHING_ROS_CREDENTIALS() = ", NETWORK_IS_REFRESHING_ROS_CREDENTIALS()) PRINTLN("Multiplayer has been selected for SWITCH! BUT NETWORK_IS_CABLE_CONNECTED() = ", NETWORK_IS_CABLE_CONNECTED()) PRINTLN("***\n") #ENDIF #IF USE_FINAL_PRINTS PRINTLN_FINAL("\n***") PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT IS_PLAYER_ONLINE() = ", IS_PLAYER_ONLINE()) PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT NETWORK_IS_SIGNED_ONLINE() = ", NETWORK_IS_SIGNED_ONLINE()) PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT NETWORK_IS_SIGNED_IN() = ", NETWORK_IS_SIGNED_IN()) PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT NETWORK_HAS_VALID_ROS_CREDENTIALS() = ", NETWORK_HAS_VALID_ROS_CREDENTIALS()) PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT NETWORK_CAN_ENTER_MULTIPLAYER() = ", NETWORK_CAN_ENTER_MULTIPLAYER()) PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT SCRIPT_NETWORK_CAN_ACCESS_MULTIPLAYER(nAccessCode) = ", SCRIPT_NETWORK_CAN_ACCESS_MULTIPLAYER(nAccessCode), " nAccessCode = ", nAccessCode) PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT g_savedGlobals.sFlow.missionSavedData[SP_MISSION_PROLOGUE].completed = ", g_savedGlobals.sFlow.missionSavedData[SP_MISSION_PROLOGUE].completed) PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT nAccessCode = ", nAccessCode) PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT IS_SP_PROLOGUE_FINISHED = ", IS_SP_PROLOGUE_FINISHED()) PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT IS_PLAYER_LOGGING_IN_NP = ", IS_PLAYER_LOGGING_IN_NP()) IF IS_PLAYSTATION_PLATFORM() AND NETWORK_IS_NP_AVAILABLE() = FALSE PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT NETWORK_GET_NP_UNAVAILABLE_REASON() = ", GET_UNAVAILABILITY_REASON_STRING(NETWORK_GET_NP_UNAVAILABLE_REASON())) ENDIF PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT NETWORK_IS_CLOUD_AVAILABLE = ", NETWORK_IS_CLOUD_AVAILABLE()) IF NETWORK_IS_SIGNED_IN() PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT NETWORK_HAVE_PLATFORM_SUBSCRIPTION = ", NETWORK_HAVE_PLATFORM_SUBSCRIPTION()) ENDIF IF IS_PLAYSTATION_PLATFORM() PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT NETWORK_IS_NP_AVAILABLE = ", NETWORK_IS_NP_AVAILABLE()) ENDIF PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT g_SignInStructDetails.bIsSignedIn = ", g_SignInStructDetails.bIsSignedIn) PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT g_SignInStructDetails.bIsDuplicateSignIn = ", g_SignInStructDetails.bIsDuplicateSignIn) PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT g_SignInStructDetails.bWasOnline = ", g_SignInStructDetails.bWasOnline) PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT g_SignInStructDetails.bWasSignedIn = ", g_SignInStructDetails.bWasSignedIn) PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT g_SignInStructDetails.bIsOnline = ", g_SignInStructDetails.bIsOnline) PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT NETWORK_IS_REFRESHING_ROS_CREDENTIALS() = ", NETWORK_IS_REFRESHING_ROS_CREDENTIALS()) PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT NETWORK_IS_CABLE_CONNECTED() = ", NETWORK_IS_CABLE_CONNECTED()) #ENDIF IF NOT IS_GTA_ONLINE_AVAILABLE() IF NOT SCRIPT_NETWORK_CAN_ACCESS_MULTIPLAYER(nAccessCode) OR SYSTEM_IS_MP_AVAILABLE() = FALSE IF nAccessCode = ACCESS_DENIED_NETWORK_LOCKED aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_GTAO_NOT_AVAIL() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT ACCESS_DENIED_NETWORK_LOCKED ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT ACCESS_DENIED_NETWORK_LOCKED ") #ENDIF ELIF nAccessCode = ACCESS_DENIED_NOT_SIGNED_IN // display alert, show sign in ui IF bBringUpSignInUI = FALSE AND IS_SCARLETT_VERSION() = FALSE SET_TIME_SCALE(1.0) DISPLAY_SYSTEM_SIGNIN_UI(TRUE) RESET_NET_TIMER(g_st_SigningOutSelectorTimer) bBringUpSignInUI = TRUE ENDIF //Sign in PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN ACCESS_DENIED_NOT_SIGNED_IN ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN ACCESS_DENIED_NOT_SIGNED_IN ") #ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN(TRUE) IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ELIF nAccessCode = ACCESS_DENIED_NOT_SIGNED_ONLINE // display alert, show sign in ui IF bBringUpSignInUI = FALSE SET_TIME_SCALE(1.0) DISPLAY_SYSTEM_SIGNIN_UI(TRUE) RESET_NET_TIMER(g_st_SigningOutSelectorTimer) PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN DISPLAY_SYSTEM_SIGNIN_UI(TRUE) - called ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN DISPLAY_SYSTEM_SIGNIN_UI(TRUE) - called ") #ENDIF bBringUpSignInUI = TRUE ENDIF //Sign in PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN ACCESS_DENIED_NOT_SIGNED_ONLINE ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN ACCESS_DENIED_NOT_SIGNED_ONLINE ") #ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN(TRUE) IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ELIF NETWORK_IS_CABLE_CONNECTED() = FALSE PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_CABLE_CONNECTED = FALSE 1 ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_CABLE_CONNECTED = FALSE 1 ") #ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_NO_CABLE() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ELIF NETWORK_IS_REFRESHING_ROS_CREDENTIALS() PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_REFRESHING_ROS_CREDENTIALS = TRUE, show nothing and just wait a bit ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_REFRESHING_ROS_CREDENTIALS = TRUE, show nothing and just wait a bit ") #ENDIF ELIF IS_PLAYSTATION_PLATFORM() AND NETWORK_IS_NP_PENDING() PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_NP_PENDING = TRUE, show nothing and just wait a bit ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_NP_PENDING = TRUE, show nothing and just wait a bit ") #ENDIF ELIF IS_XBOX_PLATFORM() AND nAccessCode = ACCESS_DENIED_NO_ONLINE_PRIVILEGE //Show new system UI //Sign in PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT IS_XBOX_PLATFORM and ACCESS_DENIED_NO_ONLINE_PRIVILEGE ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT IS_XBOX_PLATFORM and ACCESS_DENIED_NO_ONLINE_PRIVILEGE ") #ENDIF IF bShownPSPlusSignIn = FALSE DOES_PLAYER_HAVE_XBOX_PERMISSIONS(TRUE) bShownPSPlusSignIn = TRUE ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_NO_XBOX_PERMISSION() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ELIF IS_PLAYSTATION_PLATFORM() AND NETWORK_IS_NP_AVAILABLE() = FALSE AND NETWORK_GET_NP_UNAVAILABLE_REASON() = REASON_AGE // display alert PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_UNDERAGE_NEXTGEN ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_UNDERAGE_NEXTGEN ") #ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_UNDERAGE_NEXTGEN() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ELIF IS_PLAYSTATION_PLATFORM() AND NETWORK_IS_NP_AVAILABLE() = FALSE AND NETWORK_GET_NP_UNAVAILABLE_REASON() = REASON_GAME_UPDATE // display alert PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_GAME_UPDATE ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_GAME_UPDATE ") #ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_GAME_UPDATE() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ELIF IS_PLAYSTATION_PLATFORM() AND NETWORK_IS_NP_AVAILABLE() = FALSE AND NETWORK_GET_NP_UNAVAILABLE_REASON() = REASON_SYSTEM_UPDATE // display alert PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_SYSTEM_UPDATE ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_SYSTEM_UPDATE ") #ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_SYSTEM_UPDATE() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ELIF IS_PLAYSTATION_PLATFORM() AND NETWORK_IS_NP_AVAILABLE() = FALSE AND NETWORK_GET_NP_UNAVAILABLE_REASON() = REASON_CONNECTION // display alert PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_NP_CONNECTION with reason REASON_CONNECTION ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_NP_CONNECTION with reason REASON_CONNECTION ") #ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_NP_CONNECTION() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF // ELIF IS_PC_VERSION() ELIF nAccessCode = ACCESS_DENIED_NO_SCS_PRIVILEGE // display alert PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run IS_PC_VERSION RUN_WARNINGSCREEN_TRANSITION_SOCIAL_CLUB_BANNED ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run IS_PC_VERSION RUN_WARNINGSCREEN_TRANSITION_SOCIAL_CLUB_BANNED ") #ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_SOCIAL_CLUB_BANNED() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ELIF NETWORK_IS_CLOUD_AVAILABLE() = FALSE IF HAS_NET_TIMER_EXPIRED(g_st_SigningOutSelectorTimer, 3000) PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_IS_CLOUD_AVAILABLE() = FALSE, - DO SCREEN ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_IS_CLOUD_AVAILABLE() = FALSE, - DO SCREEN ") #ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_CLOUD_DOWN() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ELSE PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_IS_CLOUD_AVAILABLE() = FALSE, - NO SCREEN ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_IS_CLOUD_AVAILABLE() = FALSE, - NO SCREEN ") #ENDIF ENDIF ELIF NETWORK_IS_PLATFORM_SUBSCRIPTION_CHECK_PENDING() = TRUE PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_PLATFORM_SUBSCRIPTION_CHECK_PENDING = TRUE, show nothing and just wait a bit ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_PLATFORM_SUBSCRIPTION_CHECK_PENDING = TRUE, show nothing and just wait a bit ") #ENDIF ELIF IS_PLAYSTATION_PLATFORM() AND NETWORK_HAVE_PLATFORM_SUBSCRIPTION() = FALSE // display alert PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_NO_PS_PLUS NETWORK_HAVE_PLATFORM_SUBSCRIPTION() = FALSE ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_NO_PS_PLUS NETWORK_HAVE_PLATFORM_SUBSCRIPTION() = FALSE ") #ENDIF IF bShownPSPlusSignIn = FALSE NETWORK_SHOW_ACCOUNT_UPGRADE_UI() bShownPSPlusSignIn = TRUE ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_NO_PS_PLUS() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ELIF IS_XBOX_PLATFORM() AND NETWORK_HAVE_PLATFORM_SUBSCRIPTION() = FALSE // display alert PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_NO_XBOX_GOLD NETWORK_HAVE_PLATFORM_SUBSCRIPTION() = FALSE ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_NO_XBOX_GOLD NETWORK_HAVE_PLATFORM_SUBSCRIPTION() = FALSE ") #ENDIF IF bShownPSPlusSignIn = FALSE DOES_PLAYER_HAVE_XBOX_GOLD_MEMBERSHIP(TRUE) bShownPSPlusSignIn = TRUE ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_NO_XBOX_GOLD() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ELIF IS_MOD_INSTALLED() // display alert PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_MODS_INSTALLED IS_MOD_INSTALLED() ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_MODS_INSTALLED IS_MOD_INSTALLED() ") #ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_MODS_INSTALLED() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ELIF nAccessCode = ACCESS_DENIED_NO_ONLINE_PRIVILEGE // display alert //PRINTLN("Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_NO_PS_PLUS ") //PRINTLN("***\n") //aResult = RUN_WARNINGSCREEN_TRANSITION_NO_PS_PLUS() PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run nAccessCode = ACCESS_DENIED_NO_ONLINE_PRIVILEGE ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run nAccessCode = ACCESS_DENIED_NO_ONLINE_PRIVILEGE ") #ENDIF IF IS_PLAYSTATION_PLATFORM() aResult = RUN_WARNINGSCREEN_TRANSITION_UNDERAGE_NEXTGEN() ELSE aResult = RUN_WARNINGSCREEN_TRANSITION_UNDERAGE() ENDIF IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ELIF nAccessCode = ACCESS_DENIED_NO_SCS_PRIVILEGE // display alert PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_SOCIAL_CLUB_BANNED ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_SOCIAL_CLUB_BANNED ") #ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_SOCIAL_CLUB_BANNED() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ELIF nAccessCode = ACCESS_DENIED_MULTIPLAYER_DISABLED OR NETWORK_IS_MULTIPLAYER_DISABLED() aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_GTAO_MAINTENANCE() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT ACCESS_DENIED_MULTIPLAYER_DISABLED ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT ACCESS_DENIED_MULTIPLAYER_DISABLED ") #ENDIF ELIF NETWORK_HAS_VALID_ROS_CREDENTIALS() = FALSE PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_HAS_VALID_ROS_CREDENTIALS() = FALSE, - NO SCREEN ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_HAS_VALID_ROS_CREDENTIALS() = FALSE, - NO SCREEN ") #ENDIF RESET_NET_TIMER(g_st_ROSInvalidSelectorTimer) ELIF NETWORK_IS_TUNABLE_CLOUD_REQUEST_PENDING() PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_IS_TUNABLE_CLOUD_REQUEST_PENDING() = TRUE, - NO SCREEN ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_IS_TUNABLE_CLOUD_REQUEST_PENDING() = TRUE, - NO SCREEN ") #ENDIF ELIF nAccessCode = ACCESS_DENIED_NO_TUNABLES PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_NO_TUNABLES in NOT IS_GTA_ONLINE_AVAILABLE ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_NO_TUNABLES in NOT IS_GTA_ONLINE_AVAILABLE ") #ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_GTAO_NO_TUNABLES() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ELIF NETWORK_IS_CLOUD_BACKGROUND_SCRIPT_REQUEST_PENDING() PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_IS_CLOUD_BACKGROUND_SCRIPT_REQUEST_PENDING() = TRUE, - NO SCREEN ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_IS_CLOUD_BACKGROUND_SCRIPT_REQUEST_PENDING() = TRUE, - NO SCREEN ") #ENDIF ELIF nAccessCode = ACCESS_DENIED_NO_BACKGROUND_SCRIPT // IF HAS_NET_TIMER_EXPIRED(g_st_ROSInvalidSelectorTimer, 3000) PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_NO_BACKGROUND_SCRIPT ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_NO_BACKGROUND_SCRIPT ") #ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_GTAO_NO_BACKGROUND() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ELSE PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_NO_BACKGROUND_SCRIPT - NO SCREEN - Wait a bit ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_NO_BACKGROUND_SCRIPT - NO SCREEN - Wait a bit ") #ENDIF IF BUSYSPINNER_IS_ON() = FALSE BEGIN_TEXT_COMMAND_BUSYSPINNER_ON("MP_SPINLOADING") END_TEXT_COMMAND_BUSYSPINNER_ON(ENUM_TO_INT(LOADING_ICON_LOADING)) ENDIF ENDIF ELIF nAccessCode = ACCESS_DENIED_INVALID_PROFILE_SETTINGS PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_INVALID_PROFILE_SETTINGS in NOT IS_GTA_ONLINE_AVAILABLE - NO SCREEN ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_INVALID_PROFILE_SETTINGS in NOT IS_GTA_ONLINE_AVAILABLE - NO SCREEN ") #ENDIF ELSE PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Prologue check 1 Run ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Prologue check 1 Run ") #ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_SP_PROLOGUE_NOT_DONE() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ENDIF ELSE PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Prologue check 2 Run ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Prologue check 2 Run ") #ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_SP_PROLOGUE_NOT_DONE() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ENDIF ELIF IS_MOD_INSTALLED() // display alert PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_MODS_INSTALLED IS_MOD_INSTALLED() 2 ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_MODS_INSTALLED IS_MOD_INSTALLED() 2 ") #ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_MODS_INSTALLED() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ELIF nAccessCode = ACCESS_DENIED_TUNABLE_NOT_FOUND PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_TUNABLE_NOT_FOUND ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_TUNABLE_NOT_FOUND ") #ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_GTAO_NOT_AVAIL() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ELIF nAccessCode = ACCESS_DENIED_NETWORK_LOCKED aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_GTAO_NOT_AVAIL() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT ACCESS_DENIED_NETWORK_LOCKED - NO SCREEN ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT ACCESS_DENIED_NETWORK_LOCKED - NO SCREEN ") #ENDIF ELIF nAccessCode = ACCESS_DENIED_NOT_SIGNED_IN // display alert, show sign in ui IF bBringUpSignInUI = FALSE AND IS_SCARLETT_VERSION() = FALSE SET_TIME_SCALE(1.0) DISPLAY_SYSTEM_SIGNIN_UI(TRUE) RESET_NET_TIMER(g_st_SigningOutSelectorTimer) bBringUpSignInUI = TRUE ENDIF //Sign in PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN ACCESS_DENIED_NOT_SIGNED_IN 2 ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN ACCESS_DENIED_NOT_SIGNED_IN 2 ") #ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN(TRUE) IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ELIF nAccessCode = ACCESS_DENIED_NOT_SIGNED_ONLINE // display alert, show sign in ui IF bBringUpSignInUI = FALSE SET_TIME_SCALE(1.0) DISPLAY_SYSTEM_SIGNIN_UI(TRUE) RESET_NET_TIMER(g_st_SigningOutSelectorTimer) PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN DISPLAY_SYSTEM_SIGNIN_UI(TRUE) - called 2 ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN DISPLAY_SYSTEM_SIGNIN_UI(TRUE) - called 2 ") #ENDIF bBringUpSignInUI = TRUE ENDIF //Sign in PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN ACCESS_DENIED_NOT_SIGNED_ONLINE 2 ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN ACCESS_DENIED_NOT_SIGNED_ONLINE 2 ") #ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN(TRUE) IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ELIF IS_XBOX_PLATFORM() AND nAccessCode = ACCESS_DENIED_NO_ONLINE_PRIVILEGE //Show new system UI //Sign in PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT IS_XBOX_PLATFORM and ACCESS_DENIED_NO_ONLINE_PRIVILEGE 2 ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT IS_XBOX_PLATFORM and ACCESS_DENIED_NO_ONLINE_PRIVILEGE 2 ") #ENDIF IF bShownPSPlusSignIn = FALSE DOES_PLAYER_HAVE_XBOX_PERMISSIONS(TRUE) bShownPSPlusSignIn = TRUE ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_NO_XBOX_PERMISSION() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ELIF NETWORK_IS_CABLE_CONNECTED() = FALSE PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_CABLE_CONNECTED = FALSE ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_CABLE_CONNECTED = FALSE ") #ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_NO_CABLE() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ELIF NETWORK_IS_REFRESHING_ROS_CREDENTIALS() PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_REFRESHING_ROS_CREDENTIALS = TRUE, show nothing and just wait a bit 2 ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_REFRESHING_ROS_CREDENTIALS = TRUE, show nothing and just wait a bit 2 ") #ENDIF ELIF IS_PLAYSTATION_PLATFORM() AND NETWORK_IS_NP_PENDING() PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_NP_PENDING = TRUE, show nothing and just wait a bit 2 ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_NP_PENDING = TRUE, show nothing and just wait a bit 2 ") #ENDIF //For bug 2008393 ELIF IS_PLAYSTATION_PLATFORM() AND NETWORK_IS_NP_AVAILABLE() = FALSE AND NETWORK_GET_NP_UNAVAILABLE_REASON() = REASON_OTHER // display alert PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_NP_CONNECTION with REASON_OTHER ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_NP_CONNECTION with REASON_OTHER ") #ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_NP_CONNECTION() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ELIF IS_PLAYSTATION_PLATFORM() AND NETWORK_IS_NP_AVAILABLE() = FALSE AND NETWORK_GET_NP_UNAVAILABLE_REASON() = REASON_CONNECTION // display alert PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_NP_CONNECTION with reason REASON_CONNECTION ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_NP_CONNECTION with reason REASON_CONNECTION ") #ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_NP_CONNECTION() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ELIF NETWORK_IS_SIGNED_ONLINE() = FALSE IF bBringUpSignInUI = FALSE SET_TIME_SCALE(1.0) DISPLAY_SYSTEM_SIGNIN_UI(TRUE) RESET_NET_TIMER(g_st_SigningOutSelectorTimer) bBringUpSignInUI = TRUE ENDIF //Sign in PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN NETWORK_IS_SIGNED_ONLINE = FALSE ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN NETWORK_IS_SIGNED_ONLINE = FALSE ") #ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN(TRUE, FALSE) IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF // ELIF NETWORK_HAS_VALID_ROS_CREDENTIALS() = FALSE // aResult = RUN_WARNINGSCREEN_SELECTOR_TRANSITION_CLOUD_DOWN() // ELIF NETWORK_IS_MULTIPLAYER_DISABLED() // PRINTLN("Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_MULTIPLAYER_DISABLED() = TRUE ") // PRINTLN("***\n") // // aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_GTAO_HEAVY_LOAD() // IF aResult = WARNING_SCREEN_RETURN_ACCEPT // aResult = WARNING_SCREEN_RETURN_CANCEL // ENDIF ELIF IS_PLAYSTATION_PLATFORM() AND NETWORK_HAVE_PLATFORM_SUBSCRIPTION() = FALSE AND HAS_SYSTEM_SERVICE_TRIGGERED() = FALSE PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_HAVE_PLATFORM_SUBSCRIPTION() = FALSE 2 ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_HAVE_PLATFORM_SUBSCRIPTION() = FALSE 2 ") #ENDIF IF IS_PLAYSTATION_PLATFORM() IF IS_SYSTEM_UI_BEING_DISPLAYED() = FALSE AND bShownPSPlusSignIn = TRUE aResult = RUN_WARNINGSCREEN_TRANSITION_NO_PS_PLUS() ENDIF IF bShownPSPlusSignIn = FALSE NETWORK_SHOW_ACCOUNT_UPGRADE_UI() bShownPSPlusSignIn = TRUE ENDIF ELSE aResult = RUN_WARNINGSCREEN_TRANSITION_UNDERAGE() ENDIF IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ELIF IS_XBOX_PLATFORM() AND NETWORK_HAVE_PLATFORM_SUBSCRIPTION() = FALSE AND HAS_SYSTEM_SERVICE_TRIGGERED() = FALSE // display alert PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_NO_XBOX_GOLD NETWORK_HAVE_PLATFORM_SUBSCRIPTION() = FALSE 2 ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_NO_XBOX_GOLD NETWORK_HAVE_PLATFORM_SUBSCRIPTION() = FALSE 2 ") #ENDIF IF bShownPSPlusSignIn = FALSE DOES_PLAYER_HAVE_XBOX_GOLD_MEMBERSHIP(TRUE) bShownPSPlusSignIn = TRUE ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_NO_XBOX_GOLD() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF // ELIF GET_ACCOUNT_PERMISSION_SETUP() = ACCOUNT_PERMS_BLOCKED PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run GET_ACCOUNT_PERMISSION_SETUP() = ACCOUNT_PERMS_BLOCKED ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run GET_ACCOUNT_PERMISSION_SETUP() = ACCOUNT_PERMS_BLOCKED ") #ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_UNDERAGE() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF // ELIF NETWORK_CAN_ENTER_MULTIPLAYER() = FALSE // AND GET_CURRENT_GAMEMODE() != GAMEMODE_FM ELIF IS_PLAYER_LOGGING_IN_NP() = TRUE PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run IS_PLAYER_LOGGING_IN_NP() = TRUE ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run IS_PLAYER_LOGGING_IN_NP() = TRUE ") #ENDIF // ELIF IS_PC_VERSION() ELIF nAccessCode = ACCESS_DENIED_NO_SCS_PRIVILEGE // display alert PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run IS_PC_VERSION RUN_WARNINGSCREEN_TRANSITION_SOCIAL_CLUB_BANNED 2 ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run IS_PC_VERSION RUN_WARNINGSCREEN_TRANSITION_SOCIAL_CLUB_BANNED 2 ") #ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_SOCIAL_CLUB_BANNED() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ELIF NETWORK_IS_CLOUD_AVAILABLE() = FALSE PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_IS_CLOUD_AVAILABLE() = FALSE ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_IS_CLOUD_AVAILABLE() = FALSE ") #ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_CLOUD_DOWN() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ELIF NETWORK_HAS_VALID_ROS_CREDENTIALS() = FALSE PRINTLN("Multiplayer has been selected for SWITCH! BUT NETWORK_HAS_VALID_ROS_CREDENTIALS() = FALSE, - NO SCREEN ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_HAS_VALID_ROS_CREDENTIALS() = FALSE, - NO SCREEN ") #ENDIF RESET_NET_TIMER(g_st_ROSInvalidSelectorTimer) ELIF NETWORK_IS_TUNABLE_CLOUD_REQUEST_PENDING() PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_IS_TUNABLE_CLOUD_REQUEST_PENDING() = TRUE, - NO SCREEN 2 ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_IS_TUNABLE_CLOUD_REQUEST_PENDING() = TRUE, - NO SCREEN 2 ") #ENDIF ELIF nAccessCode = ACCESS_DENIED_NO_TUNABLES AND GET_CURRENT_GAMEMODE() != GAMEMODE_FM PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_NO_TUNABLES 2 ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_NO_TUNABLES 2 ") #ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_GTAO_NO_TUNABLES() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ELIF NETWORK_IS_CLOUD_BACKGROUND_SCRIPT_REQUEST_PENDING() PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_IS_CLOUD_BACKGROUND_SCRIPT_REQUEST_PENDING() = TRUE, - NO SCREEN 2 ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_IS_CLOUD_BACKGROUND_SCRIPT_REQUEST_PENDING() = TRUE, - NO SCREEN 2 ") #ENDIF IF BUSYSPINNER_IS_ON() = FALSE BEGIN_TEXT_COMMAND_BUSYSPINNER_ON("MP_SPINLOADING") END_TEXT_COMMAND_BUSYSPINNER_ON(ENUM_TO_INT(LOADING_ICON_LOADING)) ENDIF ELIF nAccessCode = ACCESS_DENIED_NO_BACKGROUND_SCRIPT // IF HAS_NET_TIMER_EXPIRED(g_st_ROSInvalidSelectorTimer, 3000) PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_NO_BACKGROUND_SCRIPT ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_NO_BACKGROUND_SCRIPT ") #ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_GTAO_NO_BACKGROUND() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF ELSE PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_NO_BACKGROUND_SCRIPT - NO SCREEN - Wait a bit ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_NO_BACKGROUND_SCRIPT - NO SCREEN - Wait a bit ") #ENDIF ENDIF ELIF nAccessCode = ACCESS_DENIED_MULTIPLAYER_DISABLED OR NETWORK_IS_MULTIPLAYER_DISABLED() aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_GTAO_MAINTENANCE() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT ACCESS_DENIED_MULTIPLAYER_DISABLED - NO SCREEN ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT ACCESS_DENIED_MULTIPLAYER_DISABLED - NO SCREEN ") #ENDIF #IF NOT FEATURE_GEN9_STANDALONE ELIF IS_SP_PROLOGUE_FINISHED() = FALSE PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run IS_SP_PROLOGUE_FINISHED() = FALSE ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run IS_SP_PROLOGUE_FINISHED() = FALSE ") #ENDIF aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_SP_PROLOGUE_NOT_DONE() IF aResult = WARNING_SCREEN_RETURN_ACCEPT aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF #ENDIF // NOT FEATURE_GEN9_STANDALONE ELIF GET_CURRENT_GAMEMODE() = GAMEMODE_FM PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run QUIT MP? ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run QUIT MP? ") #ENDIF // Show the SP upsell prompt if applicable #IF FEATURE_GEN9_STANDALONE IF NOT HAS_MULTIPLAYER_BEEN_SELECTED(sSelectorPeds) AND NOT HAS_STORY_ENTITLEMENT() aResult = RUN_WARNINGSCREEN_ENTER_SP_UPSELL() IF aResult = WARNING_SCREEN_RETURN_ACCEPT SET_LAUNCH_LANDING_PAGE_TO_SP_UPSELL(SPL_CHARACTER_SELECTION_WHEEL) ENDIF ELSE #ENDIF // FEATURE_GEN9_STANDALONE aResult = RUN_WARNINGSCREEN_QUIT_GTAONLINE() IF aResult = WARNING_SCREEN_RETURN_ACCEPT RESET_EVERYTHING_TRANSITION_SESSION_FOR_SP_BAIL(DEFAULT, FALSE) #IF FEATURE_GEN9_STANDALONE // Set script router link for return to story mode srcData.eSource = SRCS_SCRIPT srcData.eMode = SRCM_STORY srcData.eArgType = SRCA_NONE SET_SCRIPT_ROUTER_LINK(srcData) #ENDIF // FEATURE_GEN9_STANDALONE ENDIF #IF FEATURE_GEN9_STANDALONE ENDIF #ENDIF // FEATURE_GEN9_STANDALONE ELSE PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run QUIT SP? ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run QUIT SP? ") #ENDIF aResult = RUN_WARNINGSCREEN_QUIT_SINGLEPLAYER() IF aResult = WARNING_SCREEN_RETURN_ACCEPT RESET_EVERYTHING_TRANSITION_SESSION_FOR_SP_BAIL(DEFAULT, FALSE) ENDIF ENDIF IF IS_PLAYER_IN_CORONA() AND IS_PLAYER_ON_A_PLAYLIST(PLAYER_ID()) AND NOT(HAS_EVENT_APP_LAUNCH_STRAIGHT_INTO_FREEMODE_RECIEVED() OR HAS_EVENT_APP_LAUNCH_DIRECT_TO_CONTENT() OR HAS_EVENT_APP_LAUNCH_LIVE_AREA_RECIEVED()) PRINTLN("[TS] [BCWHEEL] Multiplayer has been selected for SWITCH! BUT Player is in a corona! - QUIT ") PRINTLN("***\n") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[TS] [BCWHEEL] Multiplayer has been selected for SWITCH! BUT Player is in a corona! - QUIT ") #ENDIF aResult = WARNING_SCREEN_RETURN_CANCEL ENDIF IF aResult = WARNING_SCREEN_RETURN_ACCEPT Run_warning_Screen = FALSE bShownPSPlusSignIn = FALSE IF ( HAS_EVENT_APP_LAUNCH_STRAIGHT_INTO_FREEMODE_RECIEVED() OR HAS_EVENT_APP_LAUNCH_DIRECT_TO_CONTENT() OR HAS_EVENT_APP_LAUNCH_LIVE_AREA_RECIEVED()) AND NOT IS_PLAYER_SWITCH_IN_PROGRESS() AND g_sPlayerPedRequest.eState != PR_STATE_PROCESSING IF g_bScriptsSetSafeForCutscene = TRUE AND IS_GAMEPLAY_CAM_RENDERING() = FALSE SET_EMERGENCY_SKYCAM_UP_RUNNING(TRUE) ELSE SET_SP_SELECTOR_SKYCAM_UP(TRUE) ENDIF ENDIF ELIF aResult = WARNING_SCREEN_RETURN_CANCEL Run_warning_Screen = FALSE bShownPSPlusSignIn = FALSE g_iExternalWarningScreenStages = 0 REFRESH_ALL_OVERHEAD_DISPLAY() SET_ALL_PLAYER_OVERHEADS_VISIBILITY(TRUE) EXTERNAL_TRANSITION_CLEANUP(FALSE) CLEAR_TRANSITION_SESSION_LAUNCHED_LIVE_TILE_WHEN_GAME_RUNNING() CLEAR_TRANSITION_SESSION_LAUNCHED_LIVE_TILE_WHEN_GAME_RUNNING_MP() g_b_ReapplyStickySaveFailedFeed = FALSE RESET_EVENT_APP_LAUNCH_FLAG_RECIEVED() bUISelection = FALSE ENDIF IF HAS_QUIT_CURRENT_GAME() bShownPSPlusSignIn = FALSE Run_warning_Screen = FALSE g_iExternalWarningScreenStages = 0 REFRESH_ALL_OVERHEAD_DISPLAY() SET_ALL_PLAYER_OVERHEADS_VISIBILITY(TRUE) ENDIF WAIT (0) IF (NETWORK_IS_SIGNED_ONLINE() = FALSE ) SET_TIME_SCALE(1.0) ENDIF IF (GET_CURRENT_GAMEMODE() != GAMEMODE_FM OR (NETWORK_IS_SIGNED_ONLINE() = FALSE AND (IS_SYSTEM_UI_BEING_DISPLAYED() OR IS_WARNING_MESSAGE_ACTIVE()))) IF IS_SCREEN_FADED_IN() IF IS_WARNING_MESSAGE_ACTIVE() OR IS_SYSTEM_UI_BEING_DISPLAYED() IF SHOULD_FADE_IN_SCREEN_WITH_MESSAGE() IF IS_SCREEN_FADED_IN() AND NOT IS_SCREEN_FADING_OUT() DO_SCREEN_FADE_IN(0) PRINTLN("[BCWHEEL] DO_SCREEN_FADE_IN(0) 1") ENDIF ENDIF PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT SET_GAME_PAUSED(TRUE) ") SET_GAME_PAUSED(TRUE) ENDIF ENDIF ENDIF ENDWHILE // CLEANUP_SELECTOR_UI() SET_GAME_PAUSED(FALSE) bBringUpSignInUI = FALSE bShownPSPlusSignIn = FALSE RUN_TRANSITION_SFX(FALSE) ENDIF IF bUISelection = FALSE IF IS_SCREEN_FADED_OUT() SET_NO_LOADING_SCREEN(FALSE) IF NOT NETWORK_IS_GAME_IN_PROGRESS() DO_SCREEN_FADE_IN(0) PRINTLN("[BCWHEEL] DO_SCREEN_FADE_IN(0) 2") ELSE IF SHOULD_FADE_IN_SCREEN_WITH_MESSAGE() DO_SCREEN_FADE_IN_FOR_TRANSITION(0) PRINTLN("[BCWHEEL] DO_SCREEN_FADE_IN(0) 2") ENDIF ENDIF ENDIF INT iPlayerNum = NATIVE_TO_INT(PLAYER_ID()) IF iPlayerNum > -1 //GlobalplayerBD_FM[iPlayerNum].bIsOnWarningScreen = FALSE CLEAR_BIT(GlobalplayerBD_FM[iPlayerNum].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bIsOnWarningScreen) NET_NL()NET_PRINT("BC: GlobalPlayerBroadcastDataFM_BS_bIsOnWarningScreen) = FALSE ") ENDIF CLEANUP_SELECTOR_UI() CLEANUP_MP_HEADSHOT() SET_AUDIO_FLAG("AllowRadioOverScreenFade", FALSE) bShownPSPlusSignIn = FALSE g_Private_SwitchedSP_DuringActivity = FALSE SET_SKYFREEZE_CLEAR(TRUE) NET_NL()NET_PRINT("BC: bUISelection = FALSE: Run_warning_Screen = FALSE ") EXIT ENDIF IF IS_REPEAT_PLAY_ACTIVE() bShownPSPlusSignIn = FALSE NET_NL()NET_PRINT("BR: Repeat play is active. Session about to restart. Exiting MP transition.") FORCE_CLEANUP(FORCE_CLEANUP_FLAG_SP_TO_MP) SET_AUDIO_FLAG("AllowRadioOverScreenFade", FALSE) EXIT ENDIF NET_NL()NET_PRINT("BC: bUISelection = TRUE: Past Confirm Screen ") SET_AUDIO_FLAG("AllowRadioOverScreenFade", FALSE) // DRAW_FAKE_SWITCH() // PLAY_MP_ENTRY_POSTFX() HIDE_HUD_FOR_TRANSITION_THIS_FRAME() IF NOT IS_PED_INJURED(PLAYER_PED_ID()) SET_PLAYER_INVINCIBLE(PLAYER_ID(), TRUE) ENDIF IF HAS_MULTIPLAYER_BEEN_SELECTED(sSelectorPeds) AND IS_PAUSE_MENU_REQUESTING_TRANSITION() = FALSE g_Private_MP_Picked_from_selector = TRUE ELSE g_Private_MP_Picked_from_selector = FALSE ENDIF NET_NL()NET_PRINT("[SELECTOR_CAM] g_Private_MP_Picked_from_selector = ")NET_PRINT_BOOL(g_Private_MP_Picked_from_selector) NET_NL()NET_PRINT("[SELECTOR_CAM] g_Private_SwitchedSP_DuringActivity = ")NET_PRINT_BOOL(g_Private_SwitchedSP_DuringActivity) NET_NL()NET_PRINT("[SELECTOR_CAM] g_bRunMultiplayerOnStartup = ")NET_PRINT_BOOL(g_bRunMultiplayerOnStartup) NET_NL()NET_PRINT("[SELECTOR_CAM] LOBBY_AUTO_MULTIPLAYER_FREEMODE() = ")NET_PRINT_BOOL(LOBBY_AUTO_MULTIPLAYER_FREEMODE()) NET_NL()NET_PRINT("[SELECTOR_CAM] bMPAutoBootFromStartup = ")NET_PRINT_BOOL(bMPAutoBootFromStartup) IF (g_Private_MP_Picked_from_selector OR g_Private_SwitchedSP_DuringActivity) AND NOT g_bRunMultiplayerOnStartup AND NOT LOBBY_AUTO_MULTIPLAYER_FREEMODE() AND NOT bMPAutoBootFromStartup SET_SP_SELECTOR_SKYCAM_UP(TRUE) ENDIF IF bMPAutoBootFromStartup IF IS_SCREEN_FADED_IN() CPRINTLN(DEBUG_INIT, " Unflagging MPAutoBoot flag after screen has faded back in.") #IF USE_FINAL_PRINTS PRINTLN_FINAL("<2140379> Unflagging MPAutoBoot flag after screen has faded back in.") #ENDIF bMPAutoBootFromStartup = FALSE ENDIF ENDIF IF IS_PAUSE_MENU_REQUESTING_TRANSITION() AND g_eRunningMission = SP_MISSION_NONE AND IS_SP_SELECTOR_SKYCAM_UP() = FALSE AND IS_MP_PAUSE_MENU_SKYCAM_UP() = FALSE AND IS_MP_SWAP_CHARACTERS_SKYCAM_UP() = FALSE //Don't do the quick skycam as the property splits the gamecamera and player position often, causing crashes Bug 1689967 IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("AM_MP_PROPERTY_INT")) = 0 AND GET_CURRENT_GAMEMODE() != GAMEMODE_CREATOR AND IS_SP_PAUSE_MENU_DURING_MISSIONS_SKYCAM_UP() = FALSE #IF FEATURE_FREEMODE_ARCADE #IF FEATURE_COPS_N_CROOKS AND (GET_CURRENT_TRANSITION_FM_MENU_CHOICE() != FM_MENU_CHOICE_GOTO_CNC OR GET_ARCADE_MODE_ENTRY_POINT() != ARCADE_ENTRY_POINT_PHONE) #ENDIF #ENDIF SET_SP_PAUSE_MENU_SKYCAM_UP(TRUE) ENDIF IF GET_CURRENT_GAMEMODE() != GAMEMODE_FM SET_SINGLEPLAYER_END_NOW() ENDIF ENDIF IF IS_PAUSE_MENU_REQUESTING_TRANSITION() AND g_eRunningMission != SP_MISSION_NONE AND IS_SP_SELECTOR_SKYCAM_UP() = FALSE AND IS_SP_PAUSE_MENU_DURING_MISSIONS_SKYCAM_UP() = FALSE NET_NL()NET_PRINT("SELECTOR: ENTERING MP FROM A MISSION - SET_SKYFREEZE_FROZEN") SET_SKYFREEZE_FROZEN() SET_SP_PAUSE_MENU_DURING_MISSIONS_SKYCAM_UP(TRUE) SET_SINGLEPLAYER_END_NOW() ENDIF g_Private_SwitchedSP_DuringActivity = FALSE IF NOT NETWORK_IS_GAME_IN_PROGRESS() // REMOVE ANY WEAPONS THAT MISSION SCRIPTS HAVE GIVEN THE PLAYER #1619373 INT iWeaponSlot WEAPON_SLOT eWeaponSlot WEAPON_TYPE eWeaponInSlot enumCharacterList eCurrentPed = GET_CURRENT_PLAYER_PED_ENUM() IF IS_PLAYER_PED_PLAYABLE(eCurrentPed) FOR iWeaponSlot = 0 TO NUM_PLAYER_PED_WEAPON_SLOTS -1 eWeaponSlot = GET_PLAYER_PED_WEAPON_SLOT_FROM_INT(iWeaponSlot) IF eWeaponSlot != WEAPONSLOT_INVALID AND eWeaponSlot != WEAPONSLOT_UNARMED eWeaponInSlot = GET_PED_WEAPONTYPE_IN_SLOT(PLAYER_PED_ID(), eWeaponSlot) IF eWeaponInSlot != WEAPONTYPE_INVALID AND eWeaponInSlot != WEAPONTYPE_UNARMED IF NOT IS_PLAYER_PED_WEAPON_UNLOCKED(eCurrentPed, eWeaponInSlot) // player has this weapon, remove it SET_PED_AMMO(PLAYER_PED_ID(), eWeaponInSlot, 0) REMOVE_WEAPON_FROM_PED(PLAYER_PED_ID(), eWeaponInSlot) PRINTLN("Removing weapon from SP player that is locked -- ", GET_WEAPON_NAME(eWeaponInSlot)) ENDIF ENDIF ENDIF ENDFOR ENDIF STORE_PLAYER_PED_INFO(PLAYER_PED_ID()) STORE_Clock_For_Multiplayer_Switch() //#796096 // Cleanup random events FORCE_CLEANUP(FORCE_CLEANUP_FLAG_RANDOM_EVENTS) ENDIF IF HAS_ANY_SELECTOR_PED_BEEN_SELECTED(sSelectorPeds) SET_SOMETHING_QUITTING_MP(TRUE) ENDIF // Prepare states DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_PAUSE) // HIDE_HUD_FOR_TRANSITION_THIS_FRAME() DISABLE_CELLPHONE(TRUE) SPECIAL_ABILITY_DEACTIVATE(PLAYER_ID()) // CLEANUP_SELECTOR_UI() // CLEANUP_MP_HEADSHOT() //SCRIPT_ASSERT("KILLING FACE TO FACE CONVERSATION") KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE() KILL_ANY_CONVERSATION() // SET_MP_HUD_ON_SCREEN(TRUE) DISPLAYING_SCRIPT_HUD(HUDPART_TRANSITIONHUD, TRUE) RESET_NET_TIMER(TransitionFailsafe_Timer) IF BUSYSPINNER_IS_ON() BUSYSPINNER_OFF() ENDIF // PRINTLN("About to request and launch MP_PROP_GLOBAL_BLOCK.sc ") // REQUEST_SCRIPT("MP_PROP_GLOBAL_BLOCK") // WHILE NOT HAS_SCRIPT_LOADED("MP_PROP_GLOBAL_BLOCK") // WAIT(0) // REQUEST_SCRIPT("MP_PROP_GLOBAL_BLOCK") // ENDWHILE // START_NEW_SCRIPT("MP_PROP_GLOBAL_BLOCK",DEFAULT_STACK_SIZE) // // PRINTLN("Give tunables_registration one frame to run before requesting and launching main_persistent.") // // WAIT(0) // HIDE_HUD_FOR_TRANSITION_THIS_FRAME() // Launch the multiplayer hud REQUEST_SCRIPT("MainTransition") WHILE NOT HAS_SCRIPT_LOADED("MainTransition") AND bUISelection PRINTSTRING("loading script MainTransition") DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_PAUSE) // HIDE_HUD_FOR_TRANSITION_THIS_FRAME() // DRAW_FAKE_SWITCH() PRINTNL() // IS_QUICK_CAMERA_QUIT_FINISHED() // IF (GET_THE_NETWORK_TIMER() - TransitionFailsafe_Timer) > 20000 IF HAS_NET_TIMER_EXPIRED(TransitionFailsafe_Timer, 20000) FAILSAFE_PLAYER_RESPAWN() bUISelection = FALSE EXIT ENDIF #IF USE_REPLAY_RECORDING_TRIGGERS CLEANUP_REPLAY_RECORD_FEED() #ENDIF WAIT(0) ENDWHILE #IF USE_REPLAY_RECORDING_TRIGGERS CLEANUP_REPLAY_RECORD_FEED() #ENDIF CLEANUP_SELECTOR_UI() CLEANUP_MP_HEADSHOT() IF NOT IS_EMERGENCY_SKYCAM_UP_RUNNING() IF IS_SCREEN_FADED_OUT() SET_NO_LOADING_SCREEN(FALSE) SET_AUDIO_FLAG("AllowRadioOverScreenFade", FALSE) IF NOT NETWORK_IS_GAME_IN_PROGRESS() DO_SCREEN_FADE_IN(0) PRINTLN("[BCWHEEL] DO_SCREEN_FADE_IN(0) 3") ELSE IF SHOULD_FADE_IN_SCREEN_WITH_MESSAGE() DO_SCREEN_FADE_IN_FOR_TRANSITION(0) PRINTLN("[BCWHEEL] DO_SCREEN_FADE_IN(0) 3") ENDIF ENDIF ENDIF ENDIF // IF g_sMPTunables.bDisablePVDuplicateFix = FALSE AND HAS_DEFAULT_INFO_BEEN_SET() // Only process if we have initialised SP data. WHILE NOT IS_CHARACTER_MODEL_CHECK_DONE() PRINTLN("BC: Selector is waiting for g_bCharacterModelCheckDone to be TRUE. ") #IF USE_FINAL_PRINTS PRINTLN_FINAL("<2140379> Selector is waiting for g_bCharacterModelCheckDone to be TRUE.") #ENDIF MAINTAIN_SP_CHARACTER_MODEL_CHECK() WAIT(0) ENDWHILE ELSE PRINTLN("MAINTAIN_SP_CHARACTER_MODEL_CHECK - Skipping char model checks. bDisablePVDuplicateFix = ", g_sMPTunables.bDisablePVDuplicateFix, ", HAS_DEFAULT_INFO_BEEN_SET = ", HAS_DEFAULT_INFO_BEEN_SET()) #IF USE_FINAL_PRINTS PRINTLN_FINAL("<2140379> Skipping char model checks. bDisablePVDuplicateFix = ", g_sMPTunables.bDisablePVDuplicateFix, ", HAS_DEFAULT_INFO_BEEN_SET = ", HAS_DEFAULT_INFO_BEEN_SET()) #ENDIF SET_CHARACTER_MODEL_CHECK_DONE(TRUE) ENDIF PRINTLN("About to start the MainTransition script when a TRANSITION_STACK_SIZE stack is free") WHILE GET_NUMBER_OF_FREE_STACKS_OF_THIS_SIZE(TRANSITION_STACK_SIZE) = 0 WAIT(0) ENDWHILE PRINTLN("MainTransition script ready to start") g_tiTransitionThread = START_NEW_SCRIPT("MainTransition", TRANSITION_STACK_SIZE) SET_SCRIPT_AS_NO_LONGER_NEEDED("MainTransition") // disable prospero activity script routing #IF FEATURE_GEN9_STANDALONE SET_ACTIVITY_SCRIPT_ROUTING_ENABLED(FALSE) #ENDIF g_b_isSelectorAbouttoBootMaintransition = FALSE bMPAutoBootFromStartup = FALSE // Wait for the player to make their decision on the multiplayer hud WHILE IS_THREAD_ACTIVE(g_tiTransitionThread) AND (GET_CURRENT_TRANSITION_STATE() != TRANSITION_STATE_WAIT_FOR_SINGLEPLAYER_TO_START) DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_PAUSE) HIDE_HUD_FOR_TRANSITION_THIS_FRAME() #IF IS_DEBUG_BUILD UPDATE_SKYSWOOP_WIDGETS() #ENDIF WAIT(0) ENDWHILE // Wait for the transition to complete WHILE IS_SKYSWOOP_MOVING() DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_PAUSE) // HIDE_HUD_FOR_TRANSITION_THIS_FRAME() #IF IS_DEBUG_BUILD UPDATE_SKYSWOOP_WIDGETS() #ENDIF WAIT(0) ENDWHILE // Done g_IsSomethingElseExittingMP = FALSE SET_SOMETHING_QUITTING_MP(FALSE) DISPLAYING_SCRIPT_HUD(HUDPART_TRANSITIONHUD, FALSE) // SET_MP_HUD_ON_SCREEN(FALSE) DISABLE_CELLPHONE(FALSE) IF NETWORK_IS_GAME_IN_PROGRESS() PRINTLN("[SWITCH MP/SP] Still in MP so clearing ambient switch request...") CANCEL_PLAYER_PED_SWITCH_REQUEST() ENDIF ENDIF ENDIF ENDPROC ////////////////////////////////////////////////////////////////////////////////////////// /// Main procedures and functions /// // PURPOSE: Creates any assets required for the script PROC DO_INITIALISE() g_sSelectorUI.iSFX_Display = -1 g_sSelectorUI.iSFX_HeadDown = -1 g_sSelectorUI.iSFX_Sky = -1 iIndicatorSFX[0] = -1 iIndicatorSFX[1] = -1 fLastTimeScaleSet = 1.0 fTargetScale = 1.0 bSlowingDownTime = FALSE sSelectorPeds.bAmbient = TRUE MAINTAIN_SELECTOR_RUNTIME_STATES() // Progress to the next stage of the selector eSelectorStage = SELECTOR_CONTROLLER ENDPROC // PURPOSE: Handles player input and updates system accordingly PROC DO_CONTROLLER() // Update UI and selection states MAINTAIN_AMBIENT_SELECTOR() // Update Scaleform movie details MAINTAIN_SELECTOR_UI() // Reset all the flags back to ambient setup MAINTAIN_SELECTOR_RUNTIME_STATES() ENDPROC // PURPOSE: Cleans up any resources the script has created and then terminates the script PROC SCRIPT_CLEANUP() CLEANUP_SELECTOR_UI() CLEANUP_MP_HEADSHOT() //Purposefully "hidden" in amongst this script. We want it to be hard //for hackers to spot these scripts in decompiled output. -BenR #IF FEATURE_SP_DLC_BEAST_SECRET #IF NOT FEATURE_SP_DLC_BEAST_SECRET_DEBUG Cleanup_Beast_Unlock(sBeastUnlockVars) #ENDIF #ENDIF TERMINATE_THIS_THREAD() ENDPROC #IF IS_DEBUG_BUILD PROC Maintain_transition_test() IF g_binitiatejoinleavetest = TRUE PRINTSTRING("/n automated test 1 ") // Transition to Freemode from Single Player //IF IS_CNC_RUNNING() // IF NOT IS_PLAYER_PED_SWITCH_IN_PROGRESS() //IF NOT IS_TRANSITION_MENU_TRIGGERED() //IF NOT IS_PLAYER_PED_SWITCH_IN_PROGRESS() IF NOT IS_SCRIPT_HUD_DISPLAYING(HUDPART_TRANSITIONHUD) AND NOT IS_PLAYER_DEAD(PLAYER_ID()) AND NOT IS_TRANSITION_RUNNING() IF IS_PLAYER_PLAYING(PLAYER_ID()) AND IS_PLAYER_CONTROL_ON(PLAYER_ID()) AND CAN_PLAYER_START_MISSION(PLAYER_ID()) PRINTSTRING("/n automated test 2 ") MP_GAMEMODE gamemode = GET_CURRENT_GAMEMODE() //DO_INITIALISE() SWITCH gamemode CASE GAMEMODE_SP //AND IS_PLAYER_PLAYING(PLAYER_ID()) PRINTSTRING("/n Switch to Freemode with automated test ") /*g_qlWhichTeam = QUICKLAUNCH_FREEMODE g_HaveIShiftedIntoTheGame = TRUE IF NOT (IS_TRANSITION_MENU_TRIGGERED()) TRIGGER_TRANSITION_MENU_ACTIVE(TRUE) ENDIF*/ SET_QUICKLAUNCH_STATE(QUICKLAUNCH_FREEMODE) BREAK CASE GAMEMODE_FM //AND IS_PLAYER_PLAYING(PLAYER_ID()) PRINTSTRING("/n Switch to CNC Mexican gang automated test") /*g_qlWhichTeam = QUICKLAUNCH_CNC_VAGOS g_HaveIShiftedIntoTheGame = TRUE // SET_MP_HUD_ON_SCREEN(TRUE) IF NOT (IS_TRANSITION_MENU_TRIGGERED()) TRIGGER_TRANSITION_MENU_ACTIVE(TRUE) ENDIF*/ SET_QUICKLAUNCH_STATE(QUICKLAUNCH_SP) BREAK // CASE GAMEMODE_CnC // //AND IS_PLAYER_PLAYING(PLAYER_ID()) // PRINTSTRING("/n Switch to Single Player with automated test") // /*g_iLeaveMultiplayerState = LEAVE_MP_STATE_YES // g_HaveIShiftedIntoTheGame = TRUE // g_TransitionCameraState = LEAVEMPHUD_MPTOSP // GET_CURRENT_GAMEMODE() = GAMEMODE_EMPTY // // SET_MP_HUD_ON_SCREEN(TRUE) // IF NOT (IS_TRANSITION_MENU_TRIGGERED()) // TRIGGER_TRANSITION_MENU_ACTIVE(TRUE) // ENDIF*/ // SET_QUICKLAUNCH_STATE(QUICKLAUNCH_SP) // BREAK ENDSWITCH ENDIF ENDIF ENDIF ENDPROC #ENDIF SCRIPT #IF IS_DEBUG_BUILD INITIALISE_SELECTOR_WIDGETS() #ENDIF NETWORK_SET_SCRIPT_IS_SAFE_FOR_NETWORK_GAME() #IF FEATURE_SP_DLC_BEAST_SECRET #IF NOT FEATURE_SP_DLC_BEAST_SECRET_DEBUG Reset_Beast_Unlock_Variables(sBeastUnlockVars) #IF IS_DEBUG_BUILD Create_Beast_Unlock_Widgets(sBeastUnlockVars, widgetID) #ENDIF #ENDIF #ENDIF //0 is valid value, so default to -1 before the Selector listeners process. BC: 31/07/2014 RESET_EVENT_APP_LAUNCH_FLAG_RECIEVED() // The main mission loop WHILE TRUE #IF FEATURE_SP_DLC_BEAST_SECRET #IF NOT FEATURE_SP_DLC_BEAST_SECRET_DEBUG Maintain_Beast_Unlock(sBeastUnlockVars) #ENDIF #ENDIF SWITCH eSelectorStage CASE SELECTOR_INITIALISE DO_INITIALISE() BREAK CASE SELECTOR_CONTROLLER DO_CONTROLLER() BREAK CASE SELECTOR_END SCRIPT_CLEANUP() BREAK ENDSWITCH #IF IS_DEBUG_BUILD UPDATE_SELECTOR_WIDGETS() UPDATE_SKYSWOOP_WIDGETS() #IF FEATURE_SP_DLC_BEAST_SECRET #IF NOT FEATURE_SP_DLC_BEAST_SECRET_DEBUG Update_Beast_Unlock_Widgets(sBeastUnlockVars) #ENDIF #ENDIF #ENDIF #IF IS_DEBUG_BUILD IF NOT IS_PLAYER_PED_SWITCH_IN_PROGRESS() Maintain_transition_test() ENDIF #ENDIF WAIT(0) ENDWHILE ENDSCRIPT