// ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // // MISSION NAME : appJIPMP.sc // AUTHOR : RowanC based on Keiths's MP template // DESCRIPTION : Alows players to Join a quick Job from their phone (DM, RACE, MISSION ETC). // // // // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** USING "rage_builtins.sch" USING "globals.sch" USING "commands_script.sch" USING "net_app_public.sch" USING "cellphone_public.sch" USING "transition_common.sch" USING "net_transition_sessions.sch" USING "FM_Quickmatch_Header.sch" USING "drunk_public.sch" USING "net_cash_transactions.sch" USING "net_corona_V2.sch" // =========================================================================================================== // Variables and Constants // =========================================================================================================== // JIP_MP Screen Stages ENUM enumJIPMPStages QUICKMATCH_MODE_LIST, // The List of joinable modes QUICKMATCH_FRIENDS_OR_SELF_OR_ON_CALL, // A comfirm with friends QUICKMATCH_SUBLIST, // Sublist screen QUICKMATCH_OFFER_JOIN // A comfirm join mode screen ENDENUM enumJIPMPStages m_currentStage = QUICKMATCH_MODE_LIST ENUM enumQuickMatchModes QUICKMATCH_MODE_SERIES = 0, QUICKMATCH_MODE_HEISTS, QUICKMATCH_MODE_CONTACT_MISSIONS, QUICKMATCH_MODE_JOBS, QUICKMATCH_MODE_ACTIVITIES, QUICKMATCH_MODE_PLAYLIST, QUICKMATCH_MODE_RANDOM, QUICKMATCH_MODE_MAX ENDENUM enumQuickMatchModes m_currentMode = QUICKMATCH_MODE_SERIES ENUM enumQuickMatchSeries QUICKMATCH_SERIES_FEATURED = 0, QUICKMATCH_SERIES_COMMUNITY, QUICKMATCH_SERIES_CAYO_PERICO, #IF FEATURE_GEN9_EXCLUSIVE QUICKMATCH_SERIES_HSW_RACE, #ENDIF QUICKMATCH_SERIES_STREET_RACE, QUICKMATCH_SERIES_PURSUIT, QUICKMATCH_SERIES_OPEN_WHEEL, QUICKMATCH_SERIES_RACE, QUICKMATCH_SERIES_SURVIVAL, QUICKMATCH_SERIES_ARENA_WAR, QUICKMATCH_SERIES_SPECIAL_RACE, QUICKMATCH_SERIES_SUPER_SPORT, QUICKMATCH_SERIES_TRANSFORM, QUICKMATCH_SERIES_BUNKER, QUICKMATCH_SERIES_STUNT, QUICKMATCH_SERIES_ADVERSARY, QUICKMATCH_SERIES_ACTIVE_PREMIUM_RACE, QUICKMATCH_SERIES_MAX ENDENUM ENUM enumQuickMatchHeists QUICKMATCH_HEISTS_HEIST = 0, QUICKMATCH_HEISTS_DOOMSDAY, QUICKMATCH_HEISTS_DIAMOND_CASINO, #IF FEATURE_HEIST_ISLAND QUICKMATCH_HEISTS_CAYO_PERICO, #ENDIF QUICKMATCH_HEISTS_MAX ENDENUM ENUM enumQuickMatchContactMissions QUICKMATCH_CONTACT_MISSIONS_CONTACT = 0, QUICKMATCH_CONTACT_MISSIONS_SHORT_TRIP, QUICKMATCH_CONTACT_MISSIONS_AUTO_SHOP, QUICKMATCH_CONTACT_MISSIONS_MOBILE_OPERATION, QUICKMATCH_CONTACT_MISSIONS_SPECIAL_VEHICLE, QUICKMATCH_CONTACT_MISSIONS_LAMAR, QUICKMATCH_CONTACT_MISSIONS_MAX ENDENUM ENUM enumQuickMatchJobs QUICKMATCH_JOBS_RACE = 0, QUICKMATCH_JOBS_DEATHMATCH, QUICKMATCH_JOBS_VERSUS, QUICKMATCH_JOBS_LTS, QUICKMATCH_JOBS_CAPTURE, QUICKMATCH_JOBS_SURVIVAL, QUICKMATCH_JOBS_PARACHUTING, QUICKMATCH_JOBS_MAX ENDENUM ENUM enumQuickMatchActivities QUICKMATCH_ACTIVITIES_ARM = 0 , QUICKMATCH_ACTIVITIES_DARTS, QUICKMATCH_ACTIVITIES_GOLF, QUICKMATCH_ACTIVITIES_RANGE , QUICKMATCH_ACTIVITIES_TENNIS, QUICKMATCH_ACTIVITIES_MAX ENDENUM TEXT_LABEL_15 m_QuickMatchTextFM = "CELL_37" TEXT_LABEL_15 m_areYouSureText = "CELL_249" TEXT_LABEL_15 m_QuickMatchIconTextBack = "CELL_206" TEXT_LABEL_15 m_QuickMatchIconTextYes = "CELL_212" TEXT_LABEL_15 m_QuickMatchIconTextNo = "CELL_213" // ----------------------------------------------------------------------------------------------------------- // NOTE: A List screen, which is view state 18 CONST_INT QUICKMATCH_LIST_VIEW_STATE 18 CONST_INT CONFIRM_VIEW_STATE 13 // ----------------------------------------------------------------------------------------------------------- TEXT_LABEL_23 m_currentWarningHelpText = "" // The JIPMP List array position for the mode selected by the player INT m_selectedQuickMatchSlot = 0 INT g_numQuickMatchListEntries = 6 INT iCanDoQuickmatch BOOL bBlockAccept CONST_INT ciFRIENDS_OPTION_WITH 0 CONST_INT ciFRIENDS_OPTION_ON_CALL 1 CONST_INT ciFRIENDS_OPTION_DIRECT 2 BOOL dpad_scroll_pause_cued = FALSE BOOL bDisplayWithFriends BOOl bPlayerIsDrunk //[RANKED_RACES] STRUCT GET_ELO_DATA BOOL bGotElo INT iReadStage INT iLoadStage INT iFailCount BOOL bSuccessful ENDSTRUCT GET_ELO_DATA sGetEloData INT iselectedModeSlot = 0 INT iSelectedContent = 0 INT iselectedFriendsOnCallSlot = -1 INT m_ModeList[QUICKMATCH_MODE_MAX] INT m_SeriesList[QUICKMATCH_SERIES_MAX] INT m_HeistsList[QUICKMATCH_HEISTS_MAX] INT m_ContactMissionsList[QUICKMATCH_CONTACT_MISSIONS_MAX] INT m_JobsList[QUICKMATCH_JOBS_MAX] INT m_ActivitiesList[QUICKMATCH_ACTIVITIES_MAX] INT m_iStageState SCRIPT_TIMER stQuickMatchTimer BOOL bDebounceOfferJobAccept = FALSE SCALEFORM_RETURN_INDEX Choice_ReturnedSFIndex INT slotsUsed = 0 //Slot counter, now also interrogated to decide which soft keys should be displayed. INT slotsUsedContent = 0 //Slot counter, now also interrogated to decide which soft keys should be displayed. // ----------------------------------------------------------------------------------------------------------- // An instance of the Mp App data struct (just include this - it allows some general functionality from net_app_public.sch to work - ie: screen navigation, etc structMPAppData m_sAppData PROC Display_Accept_Invite_Warning_Help_Text_If_Required() // NOTE: Stores the help so that it can be check if still on display and removed when no longer needed (ie: screen change or app termination) BOOL displayHelp = FALSE IF GB_IS_PLAYER_CRITICAL_TO_JOB(PLAYER_ID()) IF GB_IS_LOCAL_PLAYER_MEMBER_OF_A_BIKER_GANG() m_currentWarningHelpText = "PHINVQUITBBB" ELSE m_currentWarningHelpText = "PHINVQUITBB" ENDIF displayHelp = TRUE ELIF IS_PLAYER_CRITICAL_TO_ANY_EVENT(PLAYER_ID()) m_currentWarningHelpText = "PHINVQUITB" displayHelp = TRUE ENDIF IF (FM_EVENT_SHOULD_GIVE_PHONE_INVITE_WARNING()) m_currentWarningHelpText = "PHINVQUIT" displayHelp = TRUE ENDIF IF (displayHelp) PRINTLN("[TS] Display_Accept_Invite_Warning_Help_Text_If_Required(). Display: ", m_currentWarningHelpText) ENDIF PRINT_HELP(m_currentWarningHelpText) ENDPROC // ----------------------------------------------------------------------------------------------------------- PROC Clear_Accept_Invite_Warning_Help_Text_If_On_Display() IF (IS_STRING_NULL_OR_EMPTY(m_currentWarningHelpText)) EXIT ENDIF // Is the message being displayed? IF NOT (IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(m_currentWarningHelpText)) // ...no, so clear the variable m_currentWarningHelpText = "" EXIT ENDIF // Message is being displayed, so clear it and the variable CLEAR_HELP() PRINTLN("[TS] : Clear_Accept_Invite_Warning_Help_Text_If_On_Display(). Clear: ", m_currentWarningHelpText) m_currentWarningHelpText = "" ENDPROC //[RANKED_RACES] FUNC BOOL GET_LOCAL_PLAYER_ELO() IF GET_PLAYER_ELO_FOR_MODE(LEADERBOARD_FREEMODE_ELO_RACES_OVERALL, sGetEloData.iReadStage, sGetEloData.iLoadStage, sGetEloData.bSuccessful, g_TransitionSessionNonResetVars.sTransVars.iMyElo) PRINTLN("[TS] GET_PLAYER_ELO_FOR_MODE - g_TransitionSessionNonResetVars.sTransVars.iMyElo = ", g_TransitionSessionNonResetVars.sTransVars.iMyElo) //If we got it then move on IF sGetEloData.bSuccessful RETURN TRUE ELSE //If we failed 3 times then set it to default and give up!S IF sGetEloData.iFailCount > 2 PRINTLN("[TS] GET_PLAYER_ELO_FOR_MODE - g_TransitionSessionNonResetVars.sTransVars.iMyElo = ", g_TransitionSessionNonResetVars.sTransVars.iMyElo) SET_MY_TRANSITION_SESSION_ELO(1200) RETURN TRUE ENDIF sGetEloData.iFailCount++ sGetEloData.iReadStage = 0 sGetEloData.iLoadStage = 0 ENDIF ENDIF RETURN FALSE ENDFUNC // =========================================================================================================== // Cleanup Routines // =========================================================================================================== // PURPOSE: Cleanly terminates the script PROC Cleanup_and_Terminate() //[RANKED_RACES] //If we've not got that ELO then wait to get it // IF AM_I_TRANSITION_SESSIONS_STARTING_RANKED_QUICK_MATCH() // IF sGetEloData.bGotElo = FALSE // WHILE NOT GET_LOCAL_PLAYER_ELO() // WAIT(0) // ENDWHILE // ENDIF // ENDIF Clear_Accept_Invite_Warning_Help_Text_If_On_Display() TERMINATE_THIS_THREAD() ENDPROC FUNC BOOL SHOULD_SHOW_QUICKMATCH_MODE_MISSION_NEW_VS(INT iPlayList) IF iPlayList != -1 AND g_sMPTunables.iProfesionalCoronaType[iPlayList] = FMMC_TYPE_MISSION_NEW_VS AND g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] != -1 INT iStatBitSetTemp = GET_MP_INT_CHARACTER_STAT(MP_STAT_CHAR_FM_PIM_HIDE_MISC) IF NOT IS_BIT_SET(iStatBitSetTemp, ciPI_HIDE_MENU_ITEM_JOBS_SERIES_FEATURED) AND SHOULD_HIDE_ALL_SERIES_MODE_BLIPS() RETURN TRUE ENDIF ENDIF RETURN FALSE ENDFUNC FUNC STRING GET_MODE_TEXT(enumQuickMatchModes eMode) SWITCH eMode CASE QUICKMATCH_MODE_SERIES RETURN "TUN_CELL_SERIES" CASE QUICKMATCH_MODE_HEISTS RETURN "TUN_CELL_HEISTS" CASE QUICKMATCH_MODE_CONTACT_MISSIONS RETURN "TUN_CELL_CONTACT_M" CASE QUICKMATCH_MODE_JOBS RETURN "TUN_CELL_JOBS" CASE QUICKMATCH_MODE_ACTIVITIES RETURN "TUN_CELL_ACTIVITIES" CASE QUICKMATCH_MODE_PLAYLIST RETURN "JIPMP_PL" CASE QUICKMATCH_MODE_RANDOM RETURN "JIPMP_ANY" ENDSWITCH RETURN "" ENDFUNC FUNC STRING GET_CONTENT_TEXT(enumQuickMatchModes eMode,INT index) SWITCH eMode CASE QUICKMATCH_MODE_SERIES SWITCH INT_TO_ENUM(enumQuickMatchSeries,index) CASE QUICKMATCH_SERIES_FEATURED IF SHOULD_SHOW_QUICKMATCH_MODE_MISSION_NEW_VS(CV2_GET_NEW_VS_ARRAY_POS()) RETURN "JIPMP_STNTAM" ELSE RETURN "JIPMP_MISS_NV" ENDIF BREAK CASE QUICKMATCH_SERIES_COMMUNITY RETURN "COM_SERIES" CASE QUICKMATCH_SERIES_CAYO_PERICO RETURN "CAY_SERIES" #IF FEATURE_GEN9_EXCLUSIVE CASE QUICKMATCH_SERIES_HSW_RACE RETURN "HSW_SERIES" #ENDIF CASE QUICKMATCH_SERIES_STREET_RACE RETURN "SR_SERIES" CASE QUICKMATCH_SERIES_PURSUIT RETURN "PU_SERIES" CASE QUICKMATCH_SERIES_OPEN_WHEEL RETURN "OW_SERIES" CASE QUICKMATCH_SERIES_RACE RETURN "RACE_SERIES" CASE QUICKMATCH_SERIES_SURVIVAL RETURN "SURV_SERIES" CASE QUICKMATCH_SERIES_ARENA_WAR RETURN "ARENA_SERIES" CASE QUICKMATCH_SERIES_SPECIAL_RACE RETURN "JIPMP_SVR" CASE QUICKMATCH_SERIES_SUPER_SPORT RETURN "HOT_SERIES" CASE QUICKMATCH_SERIES_TRANSFORM RETURN "TRAN_SERIES" CASE QUICKMATCH_SERIES_BUNKER RETURN "BNKR_SERIES" CASE QUICKMATCH_SERIES_STUNT IF g_sMPTunables.bDisableStuntSeriesBucket RETURN "JIPMP_STNTRD" ELSE RETURN "JIPMP_STNTR" ENDIF BREAK CASE QUICKMATCH_SERIES_ADVERSARY IF g_sMPTunables.bDisableStuntSeriesBucket RETURN "JIPMP_ADVSD" ELSE RETURN "JIPMP_ADVSR" ENDIF BREAK CASE QUICKMATCH_SERIES_ACTIVE_PREMIUM_RACE RETURN "JIPMP_STNTPR" ENDSWITCH BREAK CASE QUICKMATCH_MODE_HEISTS SWITCH INT_TO_ENUM(enumQuickMatchHeists,index) CASE QUICKMATCH_HEISTS_HEIST RETURN "JIPMP_HEIST" CASE QUICKMATCH_HEISTS_DOOMSDAY RETURN "HUD_AWD_GANGOP" CASE QUICKMATCH_HEISTS_DIAMOND_CASINO RETURN "CH_QM_PHONE" #IF FEATURE_HEIST_ISLAND CASE QUICKMATCH_HEISTS_CAYO_PERICO RETURN "IH_END_NAME" #ENDIF ENDSWITCH BREAK CASE QUICKMATCH_MODE_CONTACT_MISSIONS SWITCH INT_TO_ENUM(enumQuickMatchContactMissions,index) CASE QUICKMATCH_CONTACT_MISSIONS_CONTACT RETURN "JIPMP_MISS" CASE QUICKMATCH_CONTACT_MISSIONS_SHORT_TRIP RETURN "JIPMP_STRIP" CASE QUICKMATCH_CONTACT_MISSIONS_AUTO_SHOP RETURN "TUN_ROB_CONTR" CASE QUICKMATCH_CONTACT_MISSIONS_MOBILE_OPERATION RETURN "JIPMP_WVM" CASE QUICKMATCH_CONTACT_MISSIONS_SPECIAL_VEHICLE RETURN "JIPMP_SVM" CASE QUICKMATCH_CONTACT_MISSIONS_LAMAR RETURN "JIPMP_MISS_FL" ENDSWITCH BREAK CASE QUICKMATCH_MODE_JOBS SWITCH INT_TO_ENUM(enumQuickMatchJobs,index) CASE QUICKMATCH_JOBS_RACE RETURN "JIPMP_RACE" CASE QUICKMATCH_JOBS_DEATHMATCH RETURN "JIPMP_DM" CASE QUICKMATCH_JOBS_VERSUS RETURN "JIPMP_MISS_V" CASE QUICKMATCH_JOBS_LTS RETURN "JIPMP_MISS_L" CASE QUICKMATCH_JOBS_CAPTURE RETURN "JIPMP_MISS_C" CASE QUICKMATCH_JOBS_SURVIVAL RETURN "JIPMP_SURV" CASE QUICKMATCH_JOBS_PARACHUTING RETURN "JIPMP_PARA" ENDSWITCH BREAK CASE QUICKMATCH_MODE_ACTIVITIES SWITCH INT_TO_ENUM(enumQuickMatchActivities,index) CASE QUICKMATCH_ACTIVITIES_ARM RETURN "JIPMP_ARM" //Join Arm Wrestling CASE QUICKMATCH_ACTIVITIES_DARTS RETURN "JIPMP_DARTS" //Join Darts CASE QUICKMATCH_ACTIVITIES_GOLF RETURN "JIPMP_GOLF" //Join Golf CASE QUICKMATCH_ACTIVITIES_RANGE RETURN "JIPMP_RANG" //Join Range CASE QUICKMATCH_ACTIVITIES_TENNIS RETURN "JIPMP_TEN" //Join Tennis ENDSWITCH BREAK ENDSWITCH RETURN "" ENDFUNC FUNC BOOL IS_ANY_MODE_AVAILABLE() IF IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE) OR IS_FM_TYPE_UNLOCKED(FMMC_TYPE_DEATHMATCH) OR IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION) OR IS_FM_TYPE_UNLOCKED(FMMC_TYPE_SURVIVAL) OR IS_FM_TYPE_UNLOCKED(FMMC_TYPE_BASE_JUMP) RETURN TRUE ENDIF RETURN FALSE ENDFUNC //Find out if any of my pals are in the session FUNC BOOL ARE_ANY_FRIENDS_INT_THIS_SESSION() //If it's a solo session or we are off line then no! IF IS_THIS_A_SOLO_SESSION() OR HAS_ENTERED_OFFLINE_SAVE_FM() OR g_sMPTunables.bDisableQuickJobWithFriends OR g_sMPTunables.bOnCallFriendsDisabled OR (m_currentMode = QUICKMATCH_MODE_SERIES AND m_SeriesList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_SERIES_ACTIVE_PREMIUM_RACE)) OR (m_currentMode = QUICKMATCH_MODE_CONTACT_MISSIONS AND m_ContactMissionsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_CONTACT_MISSIONS_SPECIAL_VEHICLE)) OR (m_currentMode = QUICKMATCH_MODE_CONTACT_MISSIONS AND m_ContactMissionsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_CONTACT_MISSIONS_MOBILE_OPERATION)) OR (m_currentMode = QUICKMATCH_MODE_CONTACT_MISSIONS AND m_ContactMissionsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_CONTACT_MISSIONS_AUTO_SHOP)) OR (m_currentMode = QUICKMATCH_MODE_CONTACT_MISSIONS AND m_ContactMissionsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_CONTACT_MISSIONS_SHORT_TRIP)) OR (m_currentMode = QUICKMATCH_MODE_HEISTS AND m_HeistsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_HEISTS_DIAMOND_CASINO)) #IF FEATURE_HEIST_ISLAND OR (m_currentMode = QUICKMATCH_MODE_HEISTS AND m_HeistsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_HEISTS_CAYO_PERICO)) #ENDIF #IF IS_DEBUG_BUILD IF IS_THIS_A_SOLO_SESSION() PRINTLN("appJIPMP - ARE_ANY_FRIENDS_INT_THIS_SESSION - IS_THIS_A_SOLO_SESSION!" ) ELIF g_sMPTunables.bDisableQuickJobWithFriends PRINTLN("appJIPMP - ARE_ANY_FRIENDS_INT_THIS_SESSION - g_sMPTunables.bDisableQuickJobWithFriends = TRUE" ) ELIF g_sMPTunables.bOnCallFriendsDisabled PRINTLN("appJIPMP - ARE_ANY_FRIENDS_INT_THIS_SESSION - g_sMPTunables.bOnCallFriendsDisabled = TRUE" ) ENDIF #ENDIF RETURN FALSE ENDIF INT iLoop GAMER_HANDLE gamerHandle PLAYER_INDEX tempPlayer //Loop all and check if there is at leats one pal that is free! REPEAT NUM_NETWORK_PLAYERS iLoop tempPlayer = INT_TO_PLAYERINDEX(iLoop) IF NETWORK_IS_PLAYER_ACTIVE(tempPlayer) AND tempPlayer != PLAYER_ID() gamerHandle = GET_GAMER_HANDLE_PLAYER(tempPlayer) //Are the a friend IF NETWORK_IS_FRIEND(gamerHandle) //Are they free! IF IS_THIS_PLAYER_FREE_TO_PLAY(tempPlayer) PRINTLN("appJIPMP - ARE_ANY_FRIENDS_INT_THIS_SESSION - ", GET_PLAYER_NAME(tempPlayer), " is a friend" ) RETURN TRUE ENDIF ENDIF ENDIF ENDREPEAT //No friends! PRINTLN("appJIPMP - ARE_ANY_FRIENDS_INT_THIS_SESSION - NO!" ) RETURN FALSE ENDFUNC //Returns TRUE if all the heists have been compleated FUNC BOOL HAVE_COMPLEATED_ALL_HEIST_MISSIONS_ON_CALL() //If this feature is disabled then no IF g_sMPTunables.bOnCallHeistAllUnlockedDisabled RETURN FALSE ENDIF IF HAVE_COMPLEATED_ALL_HEIST_MISSIONS() RETURN TRUE ENDIF //ir check the debug widgets #IF IS_DEBUG_BUILD IF g_sOnCallHesitDebug.bPassedFleeca AND g_sOnCallHesitDebug.bPassedPrison AND g_sOnCallHesitDebug.bPassedHumane AND g_sOnCallHesitDebug.bPassedSeriesA AND g_sOnCallHesitDebug.bPassedPacific RETURN TRUE ENDIF #ENDIF //No RETURN FALSE ENDFUNC FUNC BOOL IS_MODE_AVAILABLE(enumQuickMatchModes eMode) SWITCH eMode CASE QUICKMATCH_MODE_SERIES RETURN TRUE BREAK CASE QUICKMATCH_MODE_HEISTS RETURN TRUE BREAK CASE QUICKMATCH_MODE_CONTACT_MISSIONS RETURN TRUE BREAK CASE QUICKMATCH_MODE_JOBS RETURN TRUE BREAK CASE QUICKMATCH_MODE_ACTIVITIES IF g_sMPTunables.bOnCallMiniGamesDisabled RETURN FALSE ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MG_ARM_WRESTLING) ENDIF BREAK CASE QUICKMATCH_MODE_PLAYLIST IF IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE) AND IS_FM_TYPE_UNLOCKED(FMMC_TYPE_DEATHMATCH) AND IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION) AND IS_FM_TYPE_UNLOCKED(FMMC_TYPE_SURVIVAL) AND IS_FM_TYPE_UNLOCKED(FMMC_TYPE_BASE_JUMP) AND NOT IS_THIS_A_SOLO_SESSION() AND NOT HAS_ENTERED_OFFLINE_SAVE_FM() RETURN TRUE ENDIF BREAK CASE QUICKMATCH_MODE_RANDOM IF IS_ANY_MODE_AVAILABLE() IF IS_THIS_A_SOLO_SESSION() OR HAS_ENTERED_OFFLINE_SAVE_FM() RETURN FALSE //Block this option by passing it back as unavailable. ELSE RETURN TRUE ENDIF ENDIF BREAK ENDSWITCH RETURN FALSE ENDFUNC FUNC BOOL IS_CONTENT_AVAILABLE(enumQuickMatchModes eMode,INT index) INT iPlayList SWITCH eMode CASE QUICKMATCH_MODE_SERIES SWITCH INT_TO_ENUM(enumQuickMatchSeries,index) CASE QUICKMATCH_SERIES_FEATURED IF IS_THIS_A_SOLO_SESSION() OR g_FMMC_ROCKSTAR_CREATED.iTypeCount[FMMC_TYPE_MISSION_VS_NEW_TYPE_COUNT] = 0 OR HAS_ENTERED_OFFLINE_SAVE_FM() PRINTLN(" [NEWVS] - QUICKMATCH_MODE_MISSION_NEW_VS - RETURN FALSE") RETURN FALSE ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION_VS) OR IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION) ENDIF BREAK CASE QUICKMATCH_SERIES_COMMUNITY iPlayList = CV2_GET_SERIES_ARRAY_POS_BY_TYPE(FMMC_TYPE_COMMUNITY_SERIES) PRINTLN("[TS][CV2] iPlayList = ", iPlayList) #IF IS_DEBUG_BUILD IF iPlayList != -1 PRINTLN("[TS][CV2] g_sV2CoronaVars.iCurrentArrayPosProfessional[", iPlayList, "] = ", g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList]) ENDIF #ENDIF IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true OR HAS_ENTERED_OFFLINE_SAVE_FM() OR iPlayList = -1 OR g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] = -1 RETURN FALSE //Block this option by passing it back as unavailable. ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE) OR IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION) ENDIF BREAK CASE QUICKMATCH_SERIES_CAYO_PERICO iPlayList = CV2_GET_SERIES_ARRAY_POS_BY_TYPE(FMMC_TYPE_CAYO_PERICO_SERIES) PRINTLN("[TS][CV2] iPlayList = ", iPlayList) #IF IS_DEBUG_BUILD IF iPlayList != -1 PRINTLN("[TS][CV2] g_sV2CoronaVars.iCurrentArrayPosProfessional[", iPlayList, "] = ", g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList]) ENDIF #ENDIF IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true OR HAS_ENTERED_OFFLINE_SAVE_FM() OR iPlayList = -1 OR g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] = -1 RETURN FALSE //Block this option by passing it back as unavailable. ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE) OR IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION) ENDIF BREAK #IF FEATURE_GEN9_EXCLUSIVE CASE QUICKMATCH_SERIES_HSW_RACE iPlayList = CV2_GET_SERIES_ARRAY_POS_BY_TYPE(FMMC_TYPE_HSW_RACE_SERIES) PRINTLN("[TS][CV2] iPlayList = ", iPlayList) #IF IS_DEBUG_BUILD IF iPlayList != -1 PRINTLN("[TS][CV2] g_sV2CoronaVars.iCurrentArrayPosProfessional[", iPlayList, "] = ", g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList]) ENDIF #ENDIF IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true OR HAS_ENTERED_OFFLINE_SAVE_FM() OR iPlayList = -1 OR g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] = -1 OR NOT GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_HSW_RACE_DONE) RETURN FALSE //Block this option by passing it back as unavailable. ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE) ENDIF BREAK #ENDIF CASE QUICKMATCH_SERIES_STREET_RACE iPlayList = CV2_GET_SERIES_ARRAY_POS_BY_TYPE(FMMC_TYPE_STREET_RACE_SERIES) PRINTLN("[TS][CV2] iPlayList = ", iPlayList) #IF IS_DEBUG_BUILD IF iPlayList != -1 PRINTLN("[TS][CV2] g_sV2CoronaVars.iCurrentArrayPosProfessional[", iPlayList, "] = ", g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList]) ENDIF #ENDIF IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true OR HAS_ENTERED_OFFLINE_SAVE_FM() OR iPlayList = -1 OR g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] = -1 OR NOT HAS_PLAYER_PURCHASED_CAR_CLUB_MEMBERSHIP(PLAYER_ID()) RETURN FALSE //Block this option by passing it back as unavailable. ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE) ENDIF BREAK CASE QUICKMATCH_SERIES_PURSUIT iPlayList = CV2_GET_SERIES_ARRAY_POS_BY_TYPE(FMMC_TYPE_PURSUIT_SERIES) PRINTLN("[TS][CV2] iPlayList = ", iPlayList) #IF IS_DEBUG_BUILD IF iPlayList != -1 PRINTLN("[TS][CV2] g_sV2CoronaVars.iCurrentArrayPosProfessional[", iPlayList, "] = ", g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList]) ENDIF #ENDIF IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true OR HAS_ENTERED_OFFLINE_SAVE_FM() OR iPlayList = -1 OR g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] = -1 OR NOT HAS_PLAYER_PURCHASED_CAR_CLUB_MEMBERSHIP(PLAYER_ID()) OR NOT HAS_LOCAL_PLAYER_UNLOCKED_PURSUIT_SERIES() RETURN FALSE //Block this option by passing it back as unavailable. ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE) ENDIF BREAK CASE QUICKMATCH_SERIES_OPEN_WHEEL iPlayList = CV2_GET_SERIES_ARRAY_POS_BY_TYPE(FMMC_TYPE_OPEN_WHEEL_SERIES) PRINTLN("[TS][CV2] iPlayList = ", iPlayList) #IF IS_DEBUG_BUILD IF iPlayList != -1 PRINTLN("[TS][CV2] g_sV2CoronaVars.iCurrentArrayPosProfessional[", iPlayList, "] = ", g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList]) ENDIF #ENDIF IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true OR HAS_ENTERED_OFFLINE_SAVE_FM() OR iPlayList = -1 OR g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] = -1 RETURN FALSE //Block this option by passing it back as unavailable. ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE) ENDIF BREAK CASE QUICKMATCH_SERIES_RACE iPlayList = CV2_GET_SERIES_ARRAY_POS_BY_TYPE(FMMC_TYPE_RACE_SERIES) PRINTLN("[TS][CV2] iPlayList = ", iPlayList) #IF IS_DEBUG_BUILD IF iPlayList != -1 PRINTLN("[TS][CV2] g_sV2CoronaVars.iCurrentArrayPosProfessional[", iPlayList, "] = ", g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList]) ENDIF #ENDIF IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true OR HAS_ENTERED_OFFLINE_SAVE_FM() OR iPlayList = -1 OR g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] = -1 RETURN FALSE //Block this option by passing it back as unavailable. ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE) ENDIF BREAK CASE QUICKMATCH_SERIES_SURVIVAL iPlayList = CV2_GET_SERIES_ARRAY_POS_BY_TYPE(FMMC_TYPE_SURVIVAL_SERIES) PRINTLN("[TS][CV2] iPlayList = ", iPlayList) #IF IS_DEBUG_BUILD IF iPlayList != -1 PRINTLN("[TS][CV2] g_sV2CoronaVars.iCurrentArrayPosProfessional[", iPlayList, "] = ", g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList]) ENDIF #ENDIF IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true OR HAS_ENTERED_OFFLINE_SAVE_FM() OR iPlayList = -1 OR g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] = -1 RETURN FALSE //Block this option by passing it back as unavailable. ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE) ENDIF BREAK CASE QUICKMATCH_SERIES_ARENA_WAR iPlayList = CV2_GET_SERIES_ARRAY_POS_BY_TYPE(FMMC_TYPE_ARENA_SERIES) PRINTLN("[TS][CV2] iPlayList = ", iPlayList) #IF IS_DEBUG_BUILD IF iPlayList != -1 PRINTLN("[TS][CV2] g_sV2CoronaVars.iCurrentArrayPosProfessional[", iPlayList, "] = ", g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList]) ENDIF #ENDIF IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true OR HAS_ENTERED_OFFLINE_SAVE_FM() OR iPlayList = -1 OR g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] = -1 RETURN FALSE //Block this option by passing it back as unavailable. ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE) ENDIF BREAK CASE QUICKMATCH_SERIES_SPECIAL_RACE iPlayList = CV2_GET_SERIES_ARRAY_POS_BY_TYPE(FMMC_TYPE_SPECIAL_VEHICLE_RACE_SERIES) PRINTLN("[TS][CV2] iPlayList = ", iPlayList) #IF IS_DEBUG_BUILD IF iPlayList != -1 PRINTLN("[TS][CV2] g_sV2CoronaVars.iCurrentArrayPosProfessional[", iPlayList, "] = ", g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList]) ENDIF #ENDIF IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true OR HAS_ENTERED_OFFLINE_SAVE_FM() OR iPlayList = -1 OR g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] = -1 RETURN FALSE //Block this option by passing it back as unavailable. ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE) ENDIF BREAK CASE QUICKMATCH_SERIES_SUPER_SPORT iPlayList = CV2_GET_SERIES_ARRAY_POS_BY_TYPE(FMMC_TYPE_HOTRING_SERIES) PRINTLN("[TS][CV2] iPlayList = ", iPlayList) #IF IS_DEBUG_BUILD IF iPlayList != -1 PRINTLN("[TS][CV2] g_sV2CoronaVars.iCurrentArrayPosProfessional[", iPlayList, "] = ", g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList]) ENDIF #ENDIF IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true OR HAS_ENTERED_OFFLINE_SAVE_FM() OR iPlayList = -1 OR g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] = -1 RETURN FALSE //Block this option by passing it back as unavailable. ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE) ENDIF BREAK CASE QUICKMATCH_SERIES_TRANSFORM iPlayList = CV2_GET_SERIES_ARRAY_POS_BY_TYPE(FMMC_TYPE_TRANSFORM_SERIES) PRINTLN("[TS][CV2] iPlayList = ", iPlayList) #IF IS_DEBUG_BUILD IF iPlayList != -1 PRINTLN("[TS][CV2] g_sV2CoronaVars.iCurrentArrayPosProfessional[", iPlayList, "] = ", g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList]) ENDIF #ENDIF IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true OR HAS_ENTERED_OFFLINE_SAVE_FM() OR iPlayList = -1 OR g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] = -1 RETURN FALSE //Block this option by passing it back as unavailable. ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE) ENDIF BREAK CASE QUICKMATCH_SERIES_BUNKER iPlayList = CV2_GET_SERIES_ARRAY_POS_BY_TYPE(FMMC_TYPE_BUNKER_SERIES) PRINTLN("[TS][CV2] iPlayList = ", iPlayList) #IF IS_DEBUG_BUILD IF iPlayList != -1 PRINTLN("[TS][CV2] g_sV2CoronaVars.iCurrentArrayPosProfessional[", iPlayList, "] = ", g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList]) ENDIF #ENDIF IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true OR HAS_ENTERED_OFFLINE_SAVE_FM() OR iPlayList = -1 OR g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] = -1 RETURN FALSE //Block this option by passing it back as unavailable. ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE) ENDIF BREAK CASE QUICKMATCH_SERIES_STUNT IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true OR HAS_ENTERED_OFFLINE_SAVE_FM() OR NOT g_sMPTunables.bFmCoronaPlaylistActive RETURN FALSE //Block this option by passing it back as unavailable. ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE) ENDIF BREAK CASE QUICKMATCH_SERIES_ADVERSARY IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true OR HAS_ENTERED_OFFLINE_SAVE_FM() OR CV2_GET_ADVERSARY_SERIES_ARRAY_POS() = -1 OR g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] = -1 RETURN FALSE //Block this option by passing it back as unavailable. ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE) ENDIF BREAK CASE QUICKMATCH_SERIES_ACTIVE_PREMIUM_RACE IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true OR HAS_ENTERED_OFFLINE_SAVE_FM() OR NOT g_sMPTunables.bFmCoronaProfessionalPlaylistActive OR g_sMPTunables.iProfesionalCoronaType[CV2_GET_RACE_ARRAY_POS()] != FMMC_TYPE_RACE //Not set up at all OR g_sV2CoronaVars.iVehicleClassCount = ciCV2_NOT_SET_UP_PROFESSIONAL_RACE RETURN FALSE //Block this option by passing it back as unavailable. ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE) ENDIF BREAK ENDSWITCH BREAK CASE QUICKMATCH_MODE_HEISTS SWITCH INT_TO_ENUM(enumQuickMatchHeists,index) #IF FEATURE_HEIST_ISLAND CASE QUICKMATCH_HEISTS_CAYO_PERICO IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true OR HAS_ENTERED_OFFLINE_SAVE_FM() OR g_sMPTunables.bDisableCasinoHeistPhone RETURN FALSE ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION) ENDIF BREAK #ENDIF CASE QUICKMATCH_HEISTS_DIAMOND_CASINO IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true OR HAS_ENTERED_OFFLINE_SAVE_FM() OR g_sMPTunables.bDisableCasinoHeistPhone RETURN FALSE ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION) ENDIF BREAK CASE QUICKMATCH_HEISTS_DOOMSDAY IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true OR HAS_ENTERED_OFFLINE_SAVE_FM() //Or it's disabled OR g_sMPTunables.bOnCallHeistDisabled = TRUE RETURN FALSE //Block this option by passing it back as unavailable. ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION) ENDIF BREAK CASE QUICKMATCH_HEISTS_HEIST IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true OR HAS_ENTERED_OFFLINE_SAVE_FM() //Or it's disabled OR g_sMPTunables.bOnCallHeistDisabled = TRUE RETURN FALSE //Block this option by passing it back as unavailable. ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION) // RETURN IS_MP_HEIST_STRAND_ACTIVE() OR HAVE_COMPLEATED_ALL_HEIST_MISSIONS_ON_CALL() OR HAS_LESTER_INTRO_TO_HEISTS_CUTSCENE_BEEN_DONE() ENDIF BREAK ENDSWITCH BREAK CASE QUICKMATCH_MODE_CONTACT_MISSIONS SWITCH INT_TO_ENUM(enumQuickMatchContactMissions,index) CASE QUICKMATCH_CONTACT_MISSIONS_SHORT_TRIP IF IS_THIS_A_SOLO_SESSION() OR HAS_ENTERED_OFFLINE_SAVE_FM() RETURN FALSE ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION) ENDIF BREAK CASE QUICKMATCH_CONTACT_MISSIONS_AUTO_SHOP IF IS_THIS_A_SOLO_SESSION() OR HAS_ENTERED_OFFLINE_SAVE_FM() RETURN FALSE ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION) ENDIF BREAK CASE QUICKMATCH_CONTACT_MISSIONS_CONTACT IF IS_THIS_A_SOLO_SESSION() OR SHOULD_USE_OFFLINE_UGC_CONTENT() OR g_FMMC_ROCKSTAR_CREATED.iTypeCount[FMMC_TYPE_MISSION_CONTACT] = 0 OR HAS_ENTERED_OFFLINE_SAVE_FM() RETURN FALSE ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION) ENDIF BREAK CASE QUICKMATCH_CONTACT_MISSIONS_LAMAR IF IS_THIS_A_SOLO_SESSION() OR NOT HAVE_LOW_RIDER_FLOW_MISSIONS_DOWNLOADED() OR HAS_ENTERED_OFFLINE_SAVE_FM() OR g_sMPTunables.bLOWRIDER_DISABLE_ON_CALL_LAMAR_STRAND PRINTLN(" [NEWVS] - QUICKMATCH_MODE_MISSION_FLOW - RETURN FALSE") RETURN FALSE ELSE RETURN (GET_FM_STRAND_PROGRESS(ciFLOW_STRAND_LOW_RIDER) > 0) OR FM_LOW_FLOW_HAS_BEEN_COMPLETED() ENDIF BREAK CASE QUICKMATCH_CONTACT_MISSIONS_MOBILE_OPERATION IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true OR HAS_ENTERED_OFFLINE_SAVE_FM() OR g_sMPTunables.bDisableSvmPhone RETURN FALSE ELSE RETURN TRUE //SVM_FLOW_GET_NEXT_AVAILABLE_MISSION() = ciSVM_FLOW_MISSION_MAX ENDIF BREAK CASE QUICKMATCH_CONTACT_MISSIONS_SPECIAL_VEHICLE IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true OR HAS_ENTERED_OFFLINE_SAVE_FM() OR g_sMPTunables.bDisableSvmPhone RETURN FALSE ELSE RETURN TRUE //SVM_FLOW_GET_NEXT_AVAILABLE_MISSION() = ciSVM_FLOW_MISSION_MAX ENDIF BREAK ENDSWITCH BREAK CASE QUICKMATCH_MODE_ACTIVITIES SWITCH INT_TO_ENUM(enumQuickMatchActivities,index) CASE QUICKMATCH_ACTIVITIES_ARM IF IS_THIS_A_SOLO_SESSION() OR HAS_ENTERED_OFFLINE_SAVE_FM() #IF IS_DEBUG_BUILD OR GET_COMMANDLINE_PARAM_EXISTS("sc_ForceSoloMG") #ENDIF RETURN FALSE ELSE RETURN TRUE ENDIF BREAK CASE QUICKMATCH_ACTIVITIES_TENNIS IF IS_THIS_A_SOLO_SESSION() OR HAS_ENTERED_OFFLINE_SAVE_FM() #IF IS_DEBUG_BUILD OR GET_COMMANDLINE_PARAM_EXISTS("sc_ForceSoloMG") #ENDIF RETURN FALSE ELSE RETURN TRUE ENDIF BREAK CASE QUICKMATCH_ACTIVITIES_DARTS RETURN TRUE BREAK CASE QUICKMATCH_ACTIVITIES_GOLF RETURN TRUE BREAK CASE QUICKMATCH_ACTIVITIES_RANGE RETURN TRUE BREAK ENDSWITCH BREAK CASE QUICKMATCH_MODE_JOBS SWITCH INT_TO_ENUM(enumQuickMatchJobs,index) CASE QUICKMATCH_JOBS_CAPTURE IF IS_THIS_A_SOLO_SESSION() OR g_FMMC_ROCKSTAR_CREATED.iTypeCount[FMMC_TYPE_MISSION_CTF] = 0 OR HAS_ENTERED_OFFLINE_SAVE_FM() RETURN FALSE ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION_CTF) ENDIF BREAK CASE QUICKMATCH_JOBS_DEATHMATCH IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true OR HAS_ENTERED_OFFLINE_SAVE_FM() RETURN FALSE //Block this option by passing it back as unavailable. ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_DEATHMATCH) ENDIF BREAK CASE QUICKMATCH_JOBS_LTS IF IS_THIS_A_SOLO_SESSION() OR g_FMMC_ROCKSTAR_CREATED.iTypeCount[FMMC_TYPE_MISSION_LTS] = 0 OR HAS_ENTERED_OFFLINE_SAVE_FM() RETURN FALSE ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION) ENDIF BREAK CASE QUICKMATCH_JOBS_PARACHUTING IF g_FMMC_ROCKSTAR_CREATED.iTypeCount[FMMC_TYPE_BASE_JUMP] = 0 RETURN FALSE ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_BASE_JUMP) ENDIF BREAK CASE QUICKMATCH_JOBS_RACE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE) BREAK CASE QUICKMATCH_JOBS_SURVIVAL RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_SURVIVAL) BREAK CASE QUICKMATCH_JOBS_VERSUS IF IS_THIS_A_SOLO_SESSION() OR g_FMMC_ROCKSTAR_CREATED.iTypeCount[FMMC_TYPE_MISSION_VS] = 0 OR HAS_ENTERED_OFFLINE_SAVE_FM() RETURN FALSE ELSE RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION) ENDIF BREAK ENDSWITCH BREAK ENDSWITCH RETURN FALSE ENDFUNC PROC Fill_QuickMatch_Screen_Slots() INT imode slotsUsed = 0 //iCanDoQuickMatch = 99 //comment in to quickly test no modes available. IF iCanDoQuickmatch = 0 AND IS_ANY_MODE_AVAILABLE() REPEAT ENUM_TO_INT(QUICKMATCH_MODE_MAX) imode IF IS_MODE_AVAILABLE(INT_TO_ENUM( enumQuickMatchModes,imode)) // Store the details in the Scaleform slot BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "SET_DATA_SLOT") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(18) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(slotsUsed) IF imode = ENUM_TO_INT(QUICKMATCH_MODE_SERIES) PRINTLN("appJIPMP - imode = QUICKMATCH_MODE_SERIES - slotsUsed = ", slotsUsed) ENDIF IF imode = ENUM_TO_INT(QUICKMATCH_MODE_ACTIVITIES) PRINTLN("appJIPMP - imode = QUICKMATCH_MODE_ACTIVITIES - slotsUsed = ", slotsUsed) ENDIF IF imode = ENUM_TO_INT(QUICKMATCH_MODE_HEISTS) PRINTLN("appJIPMP - imode = QUICKMATCH_MODE_HEISTS - slotsUsed = ", slotsUsed) ENDIF IF imode = ENUM_TO_INT(QUICKMATCH_MODE_CONTACT_MISSIONS) PRINTLN("appJIPMP - imode = QUICKMATCH_MODE_CONTACT_MISSIONS - slotsUsed = ", slotsUsed) ENDIF IF imode = ENUM_TO_INT(QUICKMATCH_MODE_JOBS) PRINTLN("appJIPMP - imode = QUICKMATCH_MODE_JOBS - slotsUsed = ", slotsUsed) ENDIF SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0) BEGIN_TEXT_COMMAND_SCALEFORM_STRING(GET_MODE_TEXT(INT_TO_ENUM(enumQuickMatchModes,imode))) END_TEXT_COMMAND_SCALEFORM_STRING() END_SCALEFORM_MOVIE_METHOD() m_ModeList[slotsUsed] = imode // Increment slots used slotsUsed++ PRINTLN("appJIPMP - slots used to fill QuickJoin ", slotsUsed, " name = ", GET_FILENAME_FOR_AUDIO_CONVERSATION(GET_MODE_TEXT(INT_TO_ENUM(enumQuickMatchModes,imode)))) ELSE PRINTLN("appJIPMP - ", GET_FILENAME_FOR_AUDIO_CONVERSATION(GET_MODE_TEXT(INT_TO_ENUM(enumQuickMatchModes,imode)))," NOT AVAILABLE") ENDIF ENDREPEAT ELSE BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "SET_DATA_SLOT") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(18) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(slotsUsed) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0) BEGIN_TEXT_COMMAND_SCALEFORM_STRING("JIPMP_NA") END_TEXT_COMMAND_SCALEFORM_STRING() END_SCALEFORM_MOVIE_METHOD() PRINTLN("appJIPMP - No quick jobs available, so slots used to fill QuickJoin app is at ", slotsUsed) ENDIF ENDPROC PROC STORE_SUB_LIST_DETAILS_IN_SCALEFORM_SLOT(enumQuickMatchModes eMode,INT &iList[],INT index) // Store the details in the Scaleform slot BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "SET_DATA_SLOT") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(18) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(slotsUsedContent) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0) BEGIN_TEXT_COMMAND_SCALEFORM_STRING(GET_CONTENT_TEXT(eMode,index)) END_TEXT_COMMAND_SCALEFORM_STRING() END_SCALEFORM_MOVIE_METHOD() iList[slotsUsedContent] = index // Increment slots used slotsUsedContent++ PRINTLN("appJIPMP - slotsUsedContent = ", slotsUsedContent, " Name = ", GET_FILENAME_FOR_AUDIO_CONVERSATION(GET_CONTENT_TEXT(eMode,index))) PRINTLN("appJIPMP - iList[slotsUsedContent] = ", iList[index], " Name = ", GET_FILENAME_FOR_AUDIO_CONVERSATION(GET_CONTENT_TEXT(eMode,index))) ENDPROC PROC Fill_QuickMatch_Sub_List_Screen_Slots(enumQuickMatchModes eMode) INT index slotsUsedContent = 0 IF iCanDoQuickmatch = 0 AND IS_ANY_MODE_AVAILABLE() SWITCH eMode CASE QUICKMATCH_MODE_SERIES REPEAT ENUM_TO_INT(QUICKMATCH_SERIES_MAX) index IF IS_CONTENT_AVAILABLE(QUICKMATCH_MODE_SERIES,index) STORE_SUB_LIST_DETAILS_IN_SCALEFORM_SLOT(eMode,m_SeriesList,index) ENDIF ENDREPEAT BREAK CASE QUICKMATCH_MODE_ACTIVITIES REPEAT ENUM_TO_INT(QUICKMATCH_ACTIVITIES_MAX) index IF IS_CONTENT_AVAILABLE(QUICKMATCH_MODE_ACTIVITIES,index) STORE_SUB_LIST_DETAILS_IN_SCALEFORM_SLOT(eMode,m_ActivitiesList,index) ENDIF ENDREPEAT BREAK CASE QUICKMATCH_MODE_HEISTS REPEAT ENUM_TO_INT(QUICKMATCH_HEISTS_MAX) index IF IS_CONTENT_AVAILABLE(QUICKMATCH_MODE_HEISTS,index) STORE_SUB_LIST_DETAILS_IN_SCALEFORM_SLOT(eMode,m_HeistsList,index) ENDIF ENDREPEAT BREAK CASE QUICKMATCH_MODE_CONTACT_MISSIONS REPEAT ENUM_TO_INT(QUICKMATCH_CONTACT_MISSIONS_MAX) index IF IS_CONTENT_AVAILABLE(QUICKMATCH_MODE_CONTACT_MISSIONS,index) STORE_SUB_LIST_DETAILS_IN_SCALEFORM_SLOT(eMode,m_ContactMissionsList,index) ENDIF ENDREPEAT BREAK CASE QUICKMATCH_MODE_JOBS REPEAT ENUM_TO_INT(QUICKMATCH_JOBS_MAX) index IF IS_CONTENT_AVAILABLE(QUICKMATCH_MODE_JOBS,index) STORE_SUB_LIST_DETAILS_IN_SCALEFORM_SLOT(eMode,m_JobsList,index) ENDIF ENDREPEAT BREAK ENDSWITCH ELSE BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "SET_DATA_SLOT") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(18) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0) BEGIN_TEXT_COMMAND_SCALEFORM_STRING("JIPMP_NA") END_TEXT_COMMAND_SCALEFORM_STRING() END_SCALEFORM_MOVIE_METHOD() PRINTLN("appJIPMP - No quick jobs available, so slots used to fill QuickJoin app is at ", 0) ENDIF ENDPROC // PURPOSE: Display the JobList screen // // INPUT PARAMS: paramDoUpdate [DEFAULT = TRUE] TRUE means update the data, FALSE means only display the already generated data // paramKeepHighlight [DEFAULT = TRUE] TRUE means keep the highlighter position if the data hasn't changed, FALSE means always reset it to first position PROC Display_First_QuickMatch_Screen() // The JobList page is the Apps first screen, so the phone should be in RunningApp mode so that it knows to return to the HomeScreen on 'BACK'. IF NOT (g_Cellphone.PhoneDS = PDS_RUNNINGAPP) IF g_CellPhone.PhoneDS > PDS_AWAY //Added as a precaution... g_Cellphone.PhoneDS = PDS_RUNNINGAPP PRINTLN("STATE ASSIGNMENT 203. appJIPMP::Display_JobList_Screen() assigns PDS_RUNNINGAPP") ENDIF ENDIF // Setup the highlighter initial position // Store the details from the JobList array in the JobList Screen slots LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex,"SET_DATA_SLOT_EMPTY", QUICKMATCH_LIST_VIEW_STATE) LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", QUICKMATCH_LIST_VIEW_STATE,0,0,INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_208") //Call... Fill_QuickMatch_Screen_Slots() LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", QUICKMATCH_LIST_VIEW_STATE) // Display the screen // NOTE: Must be after the slots have been filled PRINTLN("appJIPMP - Display_First_QuickMatch_Screen() - displaying MPJIPlist [view state: ", QUICKMATCH_LIST_VIEW_STATE, "]") // Display the Header Display_MP_App_Header(m_QuickMatchTextFM) IF slotsUsed = 0 //#1508749 Display_MP_App_Buttons(MP_APP_ICON_BLANK, "", MP_APP_ICON_BLANK, "", MP_APP_ICON_BACK, m_QuickMatchIconTextBack, m_sAppData) ELSE Display_MP_App_Buttons(MP_APP_ICON_YES, m_QuickMatchIconTextYes, MP_APP_ICON_BLANK, "", MP_APP_ICON_BACK, m_QuickMatchIconTextBack, m_sAppData) ENDIF // Now on the JobList screen m_currentStage = QUICKMATCH_MODE_LIST ENDPROC // ----------------------------------------------------------------------------------------------------------- // Confirm screen // ----------------------------------------------------------------------------------------------------------- // PURPOSE: Display the common details of the Confirm screen PROC Display_Confirm_Screen() // Use the Side Task 'tick' icon CONST_INT CONFIRM_SLOT_ICON 12 //do the menu title IF m_currentMode = QUICKMATCH_MODE_HEISTS AND m_HeistsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_HEISTS_HEIST) Display_MP_App_Header("JIPMP_HEISTT") PRINTLN("Display_MP_App_Header(\"JIPMP_HEISTT\")") ELSE Display_MP_App_Header(m_QuickMatchTextFM) PRINTLN("Display_MP_App_Header(m_QuickMatchTextFM)") ENDIF // Delete all data from the Confirm View before filling it with new data LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex, "SET_DATA_SLOT_EMPTY", (TO_FLOAT(CONFIRM_VIEW_STATE))) PRINTLN("appJIPMP - Display_Confirm_Screen() - clearing JIP [view state: ",CONFIRM_VIEW_STATE,"]") // Display 'Are you sure?" - there is only one slot LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(CONFIRM_VIEW_STATE)),(TO_FLOAT(0)), (TO_FLOAT(CONFIRM_SLOT_ICON)), INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, m_areYouSureText) // Display the screen // NOTE: Must be after the slots have been filled LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", (TO_FLOAT(CONFIRM_VIEW_STATE))) // For the confirmation screen, display 'Yes' and 'No' buttons Display_MP_App_Buttons(MP_APP_ICON_YES, m_QuickMatchIconTextYes, MP_APP_ICON_BLANK, "", MP_APP_ICON_NO, m_QuickMatchIconTextNO, m_sAppData) ENDPROC // PURPOSE: Display the common details of the Confirm screen PROC Display_Friends_Or_On_Call_Screen() PRINTLN("appJIPMP - Display_Friends_Or_On_Call_Screen") bBlockAccept = FALSE LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex,"SET_DATA_SLOT_EMPTY", QUICKMATCH_LIST_VIEW_STATE) LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", QUICKMATCH_LIST_VIEW_STATE,0,0,INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_208") //Call... INT iSlot BOOL bTick = TRUE //do the menu title IF m_currentMode = QUICKMATCH_MODE_HEISTS AND m_HeistsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_HEISTS_HEIST) AND NOT g_sMPTunables.bAutoJoinHeistsDisabled IF bDisplayWithFriends // Store the details in the Scaleform slot BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "SET_DATA_SLOT") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(18) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0) BEGIN_TEXT_COMMAND_SCALEFORM_STRING("CELL_JIP_F")//On Call with Friends in session END_TEXT_COMMAND_SCALEFORM_STRING() END_SCALEFORM_MOVIE_METHOD() iSlot++ ENDIF BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "SET_DATA_SLOT") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(18) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0) BEGIN_TEXT_COMMAND_SCALEFORM_STRING("JIPMP_HEISTQ")//Join On Call END_TEXT_COMMAND_SCALEFORM_STRING() END_SCALEFORM_MOVIE_METHOD() iSlot++ // Store the details in the Scaleform slot BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "SET_DATA_SLOT") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(18) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0) BEGIN_TEXT_COMMAND_SCALEFORM_STRING("JIPMP_HEISTD")//Join lobby direct END_TEXT_COMMAND_SCALEFORM_STRING() END_SCALEFORM_MOVIE_METHOD() iSlot++ ELSE // Display 'Are you sure?" - there is only one slot //Only if we are to show with friends IF bDisplayWithFriends // Store the details in the Scaleform slot BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "SET_DATA_SLOT") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(18) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0) BEGIN_TEXT_COMMAND_SCALEFORM_STRING("CELL_JIP_F") END_TEXT_COMMAND_SCALEFORM_STRING() END_SCALEFORM_MOVIE_METHOD() iSlot++ ENDIF // Store the details in the Scaleform slot IF g_sMPTunables.bOnCallDisabled = FALSE BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "SET_DATA_SLOT") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(18) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot) SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0) IF m_currentMode = QUICKMATCH_MODE_SERIES AND m_SeriesList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_SERIES_ACTIVE_PREMIUM_RACE) IF g_sV2CoronaVars.iVehicleClassCount = ciCV2_OWN_NO_PERSONAL_VEHCICLE BEGIN_TEXT_COMMAND_SCALEFORM_STRING("CELL_JIPPRP") bTick = FALSE ELIF g_sV2CoronaVars.iVehicleClassCount = ciCV2_DONT_OWN_THIS_VEHCICLE BEGIN_TEXT_COMMAND_SCALEFORM_STRING("CELL_JIPPRV") ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(GET_DISPLAY_NAME_FROM_VEHICLE_MODEL(g_sV2CoronaVars.mnVehicleModel)) bTick = FALSE ELIF g_sV2CoronaVars.iVehicleClassCount = ciCV2_DONT_OWN_VEHCICLE_IN_THIS_CLASS BEGIN_TEXT_COMMAND_SCALEFORM_STRING("CELL_JIPPRC") ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(CV2_GET_ACTIVE_RACE_CLASS_STRING(CV2_GET_CURRENT_PLAYLIST_CLASS())) bTick = FALSE ELIF g_sV2CoronaVars.iVehicleClassCount = ciCV2_PERSONAL_VEHCICLE_DESTROYED BEGIN_TEXT_COMMAND_SCALEFORM_STRING("FMSPR_HLP9P") bTick = FALSE ELIF NOT CV2_CAN_AFFORD_PROFESSIONAL_RACE_FEE() BEGIN_TEXT_COMMAND_SCALEFORM_STRING("CELL_JIPPRN") ADD_TEXT_COMPONENT_INTEGER(CV2_PROFESSIONAL_RACE_FEE()) bTick = FALSE ELIF CV2_IS_PROCSSSIONAL_RACE_IN_COOL_DOWN() BEGIN_TEXT_COMMAND_SCALEFORM_STRING("PIM_DMAGUT") PRINTLN("[TS][CV2] (g_sV2CoronaVars.iRaceCoolDownPosix - GET_CLOUD_TIME_AS_INT()) * 1000") PRINTLN("[TS][CV2] (", g_sV2CoronaVars.iRaceCoolDownPosix, " - ", GET_CLOUD_TIME_AS_INT(), ") * 1000") ADD_TEXT_COMPONENT_SUBSTRING_TIME((g_sV2CoronaVars.iRaceCoolDownPosix - GET_CLOUD_TIME_AS_INT()) * 1000, TIME_FORMAT_HOURS|TIME_FORMAT_MINUTES|TIME_FORMAT_SECONDS) bTick = FALSE ELSE BEGIN_TEXT_COMMAND_SCALEFORM_STRING("CELL_JIP_PR") ADD_TEXT_COMPONENT_INTEGER(CV2_PROFESSIONAL_RACE_FEE()) bTick = TRUE ENDIF ELSE bTick = TRUE IF m_currentMode = QUICKMATCH_MODE_HEISTS AND m_HeistsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_HEISTS_DIAMOND_CASINO) AND NOT HAS_H3_QUICKMATCH_COOLDOWN_EXPIRED() BEGIN_TEXT_COMMAND_SCALEFORM_STRING("PIM_DMAGUT") PRINTLN("[TS][CASINO_HEIST] (GET_MP_INT_PLAYER_STAT(MPPLY_H3_COOLDOWN) - GET_CLOUD_TIME_AS_INT()) * 1000") PRINTLN("[TS][CASINO_HEIST] (", GET_MP_INT_PLAYER_STAT(MPPLY_H3_COOLDOWN), " - ", GET_CLOUD_TIME_AS_INT(), ") * 1000") ADD_TEXT_COMPONENT_SUBSTRING_TIME((GET_MP_INT_PLAYER_STAT(MPPLY_H3_COOLDOWN) - GET_CLOUD_TIME_AS_INT()) * 1000, TIME_FORMAT_HOURS|TIME_FORMAT_MINUTES|TIME_FORMAT_SECONDS) bTick = FALSE #IF FEATURE_HEIST_ISLAND ELIF m_currentMode = QUICKMATCH_MODE_HEISTS AND m_HeistsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_HEISTS_CAYO_PERICO) AND NOT HAS_H4_QUICKMATCH_COOLDOWN_EXPIRED() BEGIN_TEXT_COMMAND_SCALEFORM_STRING("PIM_DMAGUT") PRINTLN("[TS][CASINO_HEIST] (GET_MP_INT_PLAYER_STAT(MPPLY_H3_COOLDOWN) - GET_CLOUD_TIME_AS_INT()) * 1000") PRINTLN("[TS][CASINO_HEIST] (", GET_MP_INT_PLAYER_STAT(MPPLY_H4_COOLDOWN), " - ", GET_CLOUD_TIME_AS_INT(), ") * 1000") ADD_TEXT_COMPONENT_SUBSTRING_TIME((GET_MP_INT_PLAYER_STAT(MPPLY_H4_COOLDOWN) - GET_CLOUD_TIME_AS_INT()) * 1000, TIME_FORMAT_HOURS|TIME_FORMAT_MINUTES|TIME_FORMAT_SECONDS) bTick = FALSE #ENDIF ELIF m_currentMode = QUICKMATCH_MODE_CONTACT_MISSIONS AND (m_ContactMissionsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_CONTACT_MISSIONS_SPECIAL_VEHICLE) OR m_ContactMissionsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_CONTACT_MISSIONS_MOBILE_OPERATION)) BEGIN_TEXT_COMMAND_SCALEFORM_STRING("JIPMP_SVMH") ELSE BEGIN_TEXT_COMMAND_SCALEFORM_STRING("CELL_JIP_A") ENDIF ENDIF bBlockAccept = !bTick END_TEXT_COMMAND_SCALEFORM_STRING() END_SCALEFORM_MOVIE_METHOD() iSlot++ ENDIF // // // Store the details in the Scaleform slot // BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "SET_DATA_SLOT") // SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(18) // SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot) // SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0) // BEGIN_TEXT_COMMAND_SCALEFORM_STRING("CELL_JIP_A") // END_TEXT_COMMAND_SCALEFORM_STRING() // END_SCALEFORM_MOVIE_METHOD() ENDIF LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", QUICKMATCH_LIST_VIEW_STATE) IF m_currentMode = QUICKMATCH_MODE_HEISTS IF m_HeistsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_HEISTS_DIAMOND_CASINO) AND NOT HAS_H3_QUICKMATCH_COOLDOWN_EXPIRED() IF NOT IS_BIT_SET(MPGlobalsAmbience.iFmGbHelpBitSet9, BI_FM_GANG_BOSS_HELP_9_CASINO_HEIST_QUICK_MATCH_DELAY_HELP_DONE) PRINT_HELP("CH_QM_PHONEN") PRINTLN("[TS][CASINO_HEIST] SET_BIT(MPGlobalsAmbience.iFmGbHelpBitSet9, BI_FM_GANG_BOSS_HELP_9_CASINO_HEIST_QUICK_MATCH_DELAY_HELP_DONE)") SET_BIT(MPGlobalsAmbience.iFmGbHelpBitSet9, BI_FM_GANG_BOSS_HELP_9_CASINO_HEIST_QUICK_MATCH_DELAY_HELP_DONE) ENDIF #IF FEATURE_HEIST_ISLAND ELIF m_HeistsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_HEISTS_CAYO_PERICO) AND NOT HAS_H4_QUICKMATCH_COOLDOWN_EXPIRED() IF NOT IS_BIT_SET(MPGlobalsAmbience.iFmGbHelpBitSet9, BI_FM_GANG_BOSS_HELP_9_ISLAND_HEIST_QUICK_MATCH_DELAY_HELP_DONE) PRINT_HELP("IH_QM_PHONEN") PRINTLN("[TS][CASINO_HEIST] SET_BIT(MPGlobalsAmbience.iFmGbHelpBitSet9, BI_FM_GANG_BOSS_HELP_9_ISLAND_HEIST_QUICK_MATCH_DELAY_HELP_DONE)") SET_BIT(MPGlobalsAmbience.iFmGbHelpBitSet9, BI_FM_GANG_BOSS_HELP_9_ISLAND_HEIST_QUICK_MATCH_DELAY_HELP_DONE) ENDIF #ENDIF ELIF m_HeistsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_HEISTS_HEIST) AND NOT g_sMPTunables.bAutoJoinHeistsDisabled Display_MP_App_Header(m_QuickMatchTextFM) ENDIF ENDIF IF bTick Display_MP_App_Buttons(MP_APP_ICON_YES, m_QuickMatchIconTextYes, MP_APP_ICON_BLANK, "", MP_APP_ICON_BACK, m_QuickMatchIconTextBack, m_sAppData) ELSE Display_MP_App_Buttons(MP_APP_ICON_BLANK, "", MP_APP_ICON_BLANK, "", MP_APP_ICON_BACK, m_QuickMatchIconTextBack, m_sAppData) ENDIF ENDPROC //Temp - would be done in flash. PROC Check_for_List_Navigation() IF dpad_scroll_pause_cued IF TIMERA() > 150 PRINTLN("appJIPMP - Check_for_List_Navigation SETTING dpad_scroll_pause_cued = FALSE") dpad_scroll_pause_cued = FALSE ENDIF ENDIF // PC Scrollwheel support IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL) IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INPUT_CELLPHONE_SCROLL_BACKWARD) IF m_selectedQuickMatchSlot > 0 m_selectedQuickMatchSlot -- ENDIF Call_Scaleform_Input_Keypress_Up() ENDIF IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INPUT_CELLPHONE_SCROLL_FORWARD) m_selectedQuickMatchSlot ++ IF iCanDoQuickmatch = 0 IF m_selectedQuickMatchSlot >= g_numQuickMatchListEntries m_selectedQuickMatchSlot = 0 ENDIF ELSE m_selectedQuickMatchSlot = 0 ENDIF Call_Scaleform_Input_Keypress_Down() ENDIF ENDIF IF dpad_scroll_pause_cued = FALSE IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_NAV_UP_INPUT)) IF m_selectedQuickMatchSlot > 0 m_selectedQuickMatchSlot -- ENDIF Call_Scaleform_Input_Keypress_Up() dpad_scroll_pause_cued = TRUE SETTIMERA (0) ENDIF IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_NAV_DOWN_INPUT)) m_selectedQuickMatchSlot ++ IF iCanDoQuickmatch = 0 IF m_selectedQuickMatchSlot >= g_numQuickMatchListEntries m_selectedQuickMatchSlot = 0 ENDIF ELSE m_selectedQuickMatchSlot = 0 ENDIF Call_Scaleform_Input_Keypress_Down() dpad_scroll_pause_cued = TRUE SETTIMERA (0) ENDIF ENDIF ENDPROC FUNC BOOL SHOULD_GO_TO_QUICKMATCH_FRIENDS_OR_SELF_OR_ON_CALL_SCREEN(BOOL bDisplayWithFriendsPassed) //If we are alone in this session then skip the friends part IF IS_THIS_A_SOLO_SESSION() OR HAS_ENTERED_OFFLINE_SAVE_FM() RETURN FALSE ENDIF //Or there's no friends and the on call is disabled IF bDisplayWithFriendsPassed = FALSE AND (g_sMPTunables.bOnCallDisabled = TRUE OR bPlayerIsDrunk = TRUE) RETURN FALSE ENDIF RETURN TRUE ENDFUNC PROC UPDATE_QUICKMATCH_JOIN_SCREENS() IF SHOULD_GO_TO_QUICKMATCH_FRIENDS_OR_SELF_OR_ON_CALL_SCREEN(bDisplayWithFriends) PRINTLN("appJIPMP - Process_Stage_Mode_List - SHOULD_GO_TO_QUICKMATCH_FRIENDS_OR_SELF_OR_ON_CALL_SCREEN(bDisplayWithFriends)") //[RANKED_RACES] If we select ranked races then not with friends //AND ModeList[iselectedModeSlot] != QUICKMATCH_MODE_RACE_RANKED m_currentStage = QUICKMATCH_FRIENDS_OR_SELF_OR_ON_CALL Display_Friends_Or_On_Call_Screen() ELSE PRINTLN("appJIPMP - Process_Stage_Mode_List - SHOULD_GO_TO_QUICKMATCH_FRIENDS_OR_SELF_OR_ON_CALL_SCREEN ELSE") m_currentStage = QUICKMATCH_OFFER_JOIN g_Cellphone.PhoneDS = PDS_COMPLEXAPP Display_Confirm_Screen() ENDIF ENDPROC PROC GO_BACK_TO_MODES_MENU() PRINTLN("appJIPMP - GO_BACK_TO_MODES_MENU - BACK TO THE MODE LIST.") Clear_Accept_Invite_Warning_Help_Text_If_On_Display() g_Cellphone.PhoneDS = PDS_COMPLEXAPP Display_First_QuickMatch_Screen() m_selectedQuickMatchSlot = 0 iSelectedContent = 0 m_currentStage= QUICKMATCH_MODE_LIST Play_Back_Beep() m_iStageState = 0 ENDPROC PROC Display_QUICKMATCH_SUBLIST_Screen(enumQuickMatchModes eMode) // The JobList page is the Apps first screen, so the phone should be in RunningApp mode so that it knows to return to the HomeScreen on 'BACK'. IF NOT (g_Cellphone.PhoneDS = PDS_RUNNINGAPP) IF g_CellPhone.PhoneDS > PDS_AWAY //Added as a precaution... g_Cellphone.PhoneDS = PDS_RUNNINGAPP PRINTLN("STATE ASSIGNMENT 203. appJIPMP::Display_JobList_Screen() assigns PDS_RUNNINGAPP") ENDIF ENDIF PRINTLN("appJIPMP - Display_QUICKMATCH_SUBLIST_Screen") // Setup the highlighter initial position // Store the details from the JobList array in the JobList Screen slots LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex,"SET_DATA_SLOT_EMPTY", QUICKMATCH_LIST_VIEW_STATE) LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", QUICKMATCH_LIST_VIEW_STATE,0,0,INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_208") //Call... Fill_QuickMatch_Sub_List_Screen_Slots(eMode) LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", QUICKMATCH_LIST_VIEW_STATE) // Display the screen // NOTE: Must be after the slots have been filled PRINTLN("appJIPMP - : Display_QUICKMATCH_SUBLIST_Screen() - displaying MPJIPlist [view state: ", QUICKMATCH_LIST_VIEW_STATE, "]") // Display the Header Display_MP_App_Header(GET_MODE_TEXT(eMode)) IF slotsUsed = 0 //#1508749 Display_MP_App_Buttons(MP_APP_ICON_BLANK, "", MP_APP_ICON_BLANK, "", MP_APP_ICON_BACK, m_QuickMatchIconTextBack, m_sAppData) ELSE Display_MP_App_Buttons(MP_APP_ICON_YES, m_QuickMatchIconTextYes, MP_APP_ICON_BLANK, "", MP_APP_ICON_BACK, m_QuickMatchIconTextBack, m_sAppData) ENDIF // Now on the JobList screen m_currentStage = QUICKMATCH_SUBLIST ENDPROC PROC Process_Stage_Mode_List() Check_for_List_Navigation() IF iCanDoQuickmatch = 0 AND SlotsUsed > 0 //Need this to prevent "Not available" from being selected. IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_POSITIVE_INPUT)) //Player selects a job type from the list. g_InputButtonJustPressed = TRUE Play_Select_Beep() BEGIN_SCALEFORM_MOVIE_METHOD (SF_MovieIndex, "GET_CURRENT_SELECTION") Choice_ReturnedSFIndex = END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE() WHILE NOT IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY (Choice_ReturnedSFIndex) WAIT (0) PRINTLN("appJIPMP - Process_Stage_Mode_List - Waiting on scaleform return during selecting mode.") ENDWHILE iselectedModeSlot = GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT (Choice_ReturnedSFIndex) PRINTLN("appJIPMP - Process_Stage_Mode_List - iselectedModeSlot = ", iselectedModeSlot) IF iselectedModeSlot > -1 AND iselectedModeSlot < ENUM_TO_INT(QUICKMATCH_MODE_MAX) PRINTLN("appJIPMP - Process_Stage_Mode_List - m_ModeList[iselectedModeSlot]) = ", m_ModeList[iselectedModeSlot]) IF g_CellPhone.PhoneDS > PDS_AWAY g_Cellphone.PhoneDS = PDS_COMPLEXAPP // ...some additional debugging help - a unique identifier for each time g_Cellphone.phoneDS gets updated PRINTLN("STATE ASSIGNMENT 202. appJIPMP::Process_Stage_Mode_List() assigns PDS_COMPLEXAPP") ENDIF m_currentMode = INT_TO_ENUM(enumQuickMatchModes,m_ModeList[iselectedModeSlot]) bDisplayWithFriends = ARE_ANY_FRIENDS_INT_THIS_SESSION() SWITCH INT_TO_ENUM(enumQuickMatchModes,m_currentMode) CASE QUICKMATCH_MODE_SERIES PRINTLN("appJIPMP - Process_Stage_Mode_List - Selected Mode = QUICKMATCH_MODE_SERIES") m_currentStage = QUICKMATCH_SUBLIST Display_QUICKMATCH_SUBLIST_Screen(QUICKMATCH_MODE_SERIES) BREAK CASE QUICKMATCH_MODE_HEISTS PRINTLN("appJIPMP - Process_Stage_Mode_List - Selected Mode = QUICKMATCH_MODE_HEISTS") m_currentStage = QUICKMATCH_SUBLIST Display_QUICKMATCH_SUBLIST_Screen(QUICKMATCH_MODE_HEISTS) BREAK CASE QUICKMATCH_MODE_CONTACT_MISSIONS PRINTLN("appJIPMP - Process_Stage_Mode_List - Selected Mode = QUICKMATCH_MODE_CONTACT_MISSIONS") m_currentStage = QUICKMATCH_SUBLIST Display_QUICKMATCH_SUBLIST_Screen(QUICKMATCH_MODE_CONTACT_MISSIONS) BREAK CASE QUICKMATCH_MODE_JOBS PRINTLN("appJIPMP - Process_Stage_Mode_List - Selected Mode = QUICKMATCH_MODE_JOBS") m_currentStage = QUICKMATCH_SUBLIST Display_QUICKMATCH_SUBLIST_Screen(QUICKMATCH_MODE_JOBS) BREAK CASE QUICKMATCH_MODE_ACTIVITIES PRINTLN("appJIPMP - Process_Stage_Mode_List - Selected Mode = QUICKMATCH_MODE_ACTIVITIES") m_currentStage = QUICKMATCH_SUBLIST Display_QUICKMATCH_SUBLIST_Screen(QUICKMATCH_MODE_ACTIVITIES) BREAK CASE QUICKMATCH_MODE_PLAYLIST PRINTLN("appJIPMP - Process_Stage_Mode_List - Selected Mode = QUICKMATCH_MODE_PLAYLIST") UPDATE_QUICKMATCH_JOIN_SCREENS() BREAK CASE QUICKMATCH_MODE_RANDOM PRINTLN("appJIPMP - Process_Stage_Mode_List - Selected Mode = QUICKMATCH_MODE_RANDOM") UPDATE_QUICKMATCH_JOIN_SCREENS() BREAK ENDSWITCH ELSE PRINTLN("appJIPMP - Process_Stage_Mode_List - iselectedModeSlot is out of range of m_ModeList[iselectedModeSlot]) ") ENDIF ENDIF ELSE //#1492475 IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_POSITIVE_INPUT)) g_InputButtonJustPressed = TRUE Play_Back_Beep() ENDIF ENDIF ENDPROC PROC Process_Stage_Sublist() Check_for_List_Navigation() INT iMaxSelections IF iCanDoQuickmatch = 0 AND SlotsUsed > 0 //Need this to prevent "Not available" from being selected. IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_POSITIVE_INPUT)) //Player selects a job type from the list. g_InputButtonJustPressed = TRUE Play_Select_Beep() BEGIN_SCALEFORM_MOVIE_METHOD (SF_MovieIndex, "GET_CURRENT_SELECTION") Choice_ReturnedSFIndex = END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE() WHILE NOT IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY (Choice_ReturnedSFIndex) WAIT (0) PRINTLN("appJIPMP - Process_Stage_Sublist - - Waiting on scaleform return during selecting mode.") ENDWHILE iSelectedContent = GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT (Choice_ReturnedSFIndex) PRINTLN("appJIPMP - Process_Stage_Sublist - SELECTED MODE = ", GET_MODE_TEXT(INT_TO_ENUM(enumQuickMatchModes,m_ModeList[iselectedModeSlot]))) PRINTLN("appJIPMP - Process_Stage_Sublist - iSelectedContent = ", iSelectedContent) SWITCH m_currentMode CASE QUICKMATCH_MODE_SERIES PRINTLN("appJIPMP - Process_Stage_Sublist - - iMaxSelections = QUICKMATCH_SERIES_MAX.") PRINTLN("appJIPMP - Process_Stage_Sublist - SeriesList[iSelectedContent]) = ",GET_CONTENT_TEXT(QUICKMATCH_MODE_SERIES,m_SeriesList[iSelectedContent])) iMaxSelections = ENUM_TO_INT(QUICKMATCH_SERIES_MAX) BREAK CASE QUICKMATCH_MODE_HEISTS PRINTLN("appJIPMP - Process_Stage_Sublist - - iMaxSelections = QUICKMATCH_HEISTS_MAX.") PRINTLN("appJIPMP - Process_Stage_Sublist - SeriesList[iSelectedContent]) = ",GET_CONTENT_TEXT(QUICKMATCH_MODE_HEISTS,m_HeistsList[iSelectedContent])) iMaxSelections = ENUM_TO_INT(QUICKMATCH_HEISTS_MAX) BREAK CASE QUICKMATCH_MODE_JOBS PRINTLN("appJIPMP - Process_Stage_Sublist - - iMaxSelections = QUICKMATCH_JOBS_MAX.") iMaxSelections = ENUM_TO_INT(QUICKMATCH_JOBS_MAX) BREAK CASE QUICKMATCH_MODE_CONTACT_MISSIONS PRINTLN("appJIPMP - Process_Stage_Sublist - - iMaxSelections = QUICKMATCH_CONTACT_MISSIONS_MAX .") iMaxSelections = ENUM_TO_INT(QUICKMATCH_CONTACT_MISSIONS_MAX) BREAK CASE QUICKMATCH_MODE_ACTIVITIES PRINTLN("appJIPMP - Process_Stage_Sublist - - iMaxSelections = QUICKMATCH_ACTIVITIES_MAX .") iMaxSelections = ENUM_TO_INT(QUICKMATCH_ACTIVITIES_MAX) BREAK ENDSWITCH IF iSelectedContent > -1 AND iSelectedContent < iMaxSelections IF g_CellPhone.PhoneDS > PDS_AWAY g_Cellphone.PhoneDS = PDS_COMPLEXAPP PRINTLN("STATE ASSIGNMENT 202. appJIPMP::Process_Stage_Sublist() assigns PDS_COMPLEXAPP") ENDIF bDisplayWithFriends = ARE_ANY_FRIENDS_INT_THIS_SESSION() UPDATE_QUICKMATCH_JOIN_SCREENS() ENDIF ENDIF IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_NEGATIVE_INPUT)) GO_BACK_TO_MODES_MENU() ENDIF ELSE PRINTLN("appJIPMP - Process_Stage_Sublist - SlotsUsed = 0.") //#1492475 IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_POSITIVE_INPUT)) g_InputButtonJustPressed = TRUE Play_Back_Beep() ENDIF ENDIF ENDPROC PROC PROCESS_LAUNCH_QUICKMATCH() INT itype Clear_Accept_Invite_Warning_Help_Text_If_On_Display() IF IS_MODE_AVAILABLE(m_currentMode) PRINTLN("[TS] ***************************************") CLEAR_MY_TRANSITION_SESSION_CONTENT_ID() INT iCurrentPlaylistPos INT iCurrentMissionArrayPos INT iPlayList SWITCH m_currentMode CASE QUICKMATCH_MODE_RANDOM iType = ciTRANSITION_SESSIONS_ACTIVITY_TYPE_ANY PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED RANDOM") BREAK CASE QUICKMATCH_MODE_PLAYLIST iType = FM_GAME_MODE_PLAYLIST PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED PLAYLIST") BREAK CASE QUICKMATCH_MODE_SERIES PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_MODE_SERIES") SWITCH INT_TO_ENUM(enumQuickMatchSeries,m_SeriesList[iSelectedContent]) CASE QUICKMATCH_SERIES_FEATURED iPlayList = CV2_GET_NEW_VS_ARRAY_POS() IF iPlayList != -1 AND SHOULD_SHOW_QUICKMATCH_MODE_MISSION_NEW_VS(iPlayList) iType = FMMC_TYPE_MISSION_NEW_VS iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList) iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_ROOT_CONTENT_ID_HASH(iCurrentPlaylistPos, iPlayList)) IF iCurrentMissionArrayPos != -1 SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName) SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers) SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING() #IF IS_DEBUG_BUILD ELSE PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_FEATURED - iCurrentMissionArrayPos = -1") #ENDIF ENDIF ELSE iType = FMMC_TYPE_MISSION_NEW_VS PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_FEATURED") ENDIF BREAK CASE QUICKMATCH_SERIES_COMMUNITY iType = FMMC_TYPE_COMMUNITY_SERIES iPlayList = CV2_GET_ADVERSARY_SERIES_ARRAY_POS(FMMC_TYPE_COMMUNITY_SERIES) IF iPlayList != -1 iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList) iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[iPlayList][iCurrentPlaylistPos], TRUE) IF iCurrentMissionArrayPos != -1 SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_VERIFIED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName) SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_VERIFIED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers) SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING() #IF IS_DEBUG_BUILD ELSE PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_COMMUNITY - iCurrentMissionArrayPos = -1") #ENDIF ENDIF ENDIF PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_COMMUNITY") BREAK CASE QUICKMATCH_SERIES_CAYO_PERICO iType = FMMC_TYPE_CAYO_PERICO_SERIES iPlayList = CV2_GET_ADVERSARY_SERIES_ARRAY_POS(FMMC_TYPE_CAYO_PERICO_SERIES) IF iPlayList != -1 iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList) iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[iPlayList][iCurrentPlaylistPos], TRUE) IF iCurrentMissionArrayPos != -1 SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_VERIFIED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName) SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_VERIFIED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers) SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING() #IF IS_DEBUG_BUILD ELSE PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_CAYO_PERICO - iCurrentMissionArrayPos = -1") #ENDIF ENDIF ENDIF PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_CAYO_PERICO") BREAK #IF FEATURE_GEN9_EXCLUSIVE CASE QUICKMATCH_SERIES_HSW_RACE IF g_sMPTunables.bDisableStuntSeriesBucket iType = FMMC_TYPE_RACE ELSE iType = FMMC_TYPE_HSW_RACE_SERIES ENDIF iPlayList = CV2_GET_ADVERSARY_SERIES_ARRAY_POS(FMMC_TYPE_HSW_RACE_SERIES) IF iPlayList != -1 iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList) iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[iPlayList][iCurrentPlaylistPos]) IF iCurrentMissionArrayPos != -1 SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName) SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers) SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING() #IF IS_DEBUG_BUILD ELSE PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_HSW_RACE - iCurrentMissionArrayPos = -1") #ENDIF ENDIF ENDIF PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_HSW_RACE") BREAK #ENDIF CASE QUICKMATCH_SERIES_STREET_RACE IF g_sMPTunables.bDisableStuntSeriesBucket iType = FMMC_TYPE_RACE ELSE iType = FMMC_TYPE_STREET_RACE_SERIES ENDIF iPlayList = CV2_GET_ADVERSARY_SERIES_ARRAY_POS(FMMC_TYPE_STREET_RACE_SERIES) IF iPlayList != -1 iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList) iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[iPlayList][iCurrentPlaylistPos]) IF iCurrentMissionArrayPos != -1 SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName) SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers) SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING() #IF IS_DEBUG_BUILD ELSE PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_STREET_RACE - iCurrentMissionArrayPos = -1") #ENDIF ENDIF ENDIF PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_STREET_RACE") BREAK CASE QUICKMATCH_SERIES_PURSUIT IF g_sMPTunables.bDisableStuntSeriesBucket iType = FMMC_TYPE_RACE ELSE iType = FMMC_TYPE_PURSUIT_SERIES ENDIF iPlayList = CV2_GET_ADVERSARY_SERIES_ARRAY_POS(FMMC_TYPE_PURSUIT_SERIES) IF iPlayList != -1 iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList) iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[iPlayList][iCurrentPlaylistPos]) IF iCurrentMissionArrayPos != -1 SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName) SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers) SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING() #IF IS_DEBUG_BUILD ELSE PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_PURSUIT - iCurrentMissionArrayPos = -1") #ENDIF ENDIF ENDIF PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_PURSUIT") BREAK CASE QUICKMATCH_SERIES_OPEN_WHEEL IF g_sMPTunables.bDisableStuntSeriesBucket iType = FMMC_TYPE_RACE ELSE iType = FMMC_TYPE_OPEN_WHEEL_SERIES ENDIF iPlayList = CV2_GET_ADVERSARY_SERIES_ARRAY_POS(FMMC_TYPE_OPEN_WHEEL_SERIES) IF iPlayList != -1 iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList) iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[iPlayList][iCurrentPlaylistPos]) IF iCurrentMissionArrayPos != -1 SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName) SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers) SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING() #IF IS_DEBUG_BUILD ELSE PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_OPEN_WHEEL - iCurrentMissionArrayPos = -1") #ENDIF ENDIF ENDIF PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_OPEN_WHEEL") BREAK CASE QUICKMATCH_SERIES_RACE IF g_sMPTunables.bDisableStuntSeriesBucket iType = FMMC_TYPE_RACE ELSE iType = FMMC_TYPE_RACE_SERIES ENDIF iPlayList = CV2_GET_ADVERSARY_SERIES_ARRAY_POS(FMMC_TYPE_RACE_SERIES) IF iPlayList != -1 iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList) iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[iPlayList][iCurrentPlaylistPos]) IF iCurrentMissionArrayPos != -1 SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName) SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers) SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING() #IF IS_DEBUG_BUILD ELSE PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_RACE - iCurrentMissionArrayPos = -1") #ENDIF ENDIF ENDIF PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_RACE") BREAK CASE QUICKMATCH_SERIES_SURVIVAL IF g_sMPTunables.bDisableStuntSeriesBucket iType = FMMC_TYPE_RACE ELSE iType = FMMC_TYPE_SURVIVAL_SERIES ENDIF iPlayList = CV2_GET_ADVERSARY_SERIES_ARRAY_POS(FMMC_TYPE_SURVIVAL_SERIES) IF iPlayList != -1 iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList) iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[iPlayList][iCurrentPlaylistPos]) IF iCurrentMissionArrayPos != -1 SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName) SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers) SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING() #IF IS_DEBUG_BUILD ELSE PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_SURVIVAL - iCurrentMissionArrayPos = -1") #ENDIF ENDIF ENDIF PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_SURVIVAL") BREAK CASE QUICKMATCH_SERIES_ARENA_WAR IF g_sMPTunables.bDisableStuntSeriesBucket iType = FMMC_TYPE_RACE ELSE iType = FMMC_TYPE_ARENA_SERIES ENDIF iPlayList = CV2_GET_ADVERSARY_SERIES_ARRAY_POS(FMMC_TYPE_ARENA_SERIES) IF iPlayList != -1 iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList) iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[iPlayList][iCurrentPlaylistPos]) IF iCurrentMissionArrayPos != -1 SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName) SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers) SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING() #IF IS_DEBUG_BUILD ELSE PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_ARENA_WAR - iCurrentMissionArrayPos = -1") #ENDIF ENDIF ENDIF PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_ARENA_WAR") BREAK CASE QUICKMATCH_SERIES_SPECIAL_RACE IF g_sMPTunables.bDisableStuntSeriesBucket iType = FMMC_TYPE_MISSION_NEW_VS ELSE iType = FMMC_TYPE_SPECIAL_VEHICLE_RACE_SERIES ENDIF iPlayList = CV2_GET_ADVERSARY_SERIES_ARRAY_POS(FMMC_TYPE_SPECIAL_VEHICLE_RACE_SERIES) IF iPlayList != -1 iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList) iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[iPlayList][iCurrentPlaylistPos]) IF iCurrentMissionArrayPos != -1 SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName) SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers) SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING() #IF IS_DEBUG_BUILD ELSE PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_SPECIAL_RACE - iCurrentMissionArrayPos = -1") #ENDIF ENDIF ENDIF PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_SPECIAL_RACE") BREAK CASE QUICKMATCH_SERIES_SUPER_SPORT IF g_sMPTunables.bDisableStuntSeriesBucket iType = FMMC_TYPE_RACE ELSE iType = FMMC_TYPE_HOTRING_SERIES ENDIF iPlayList = CV2_GET_ADVERSARY_SERIES_ARRAY_POS(FMMC_TYPE_HOTRING_SERIES) IF iPlayList != -1 iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList) iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[iPlayList][iCurrentPlaylistPos]) IF iCurrentMissionArrayPos != -1 SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName) SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers) SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING() #IF IS_DEBUG_BUILD ELSE PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_SUPER_SPORT - iCurrentMissionArrayPos = -1") #ENDIF ENDIF ENDIF PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_SUPER_SPORT") BREAK CASE QUICKMATCH_SERIES_TRANSFORM IF g_sMPTunables.bDisableStuntSeriesBucket iType = FMMC_TYPE_RACE ELSE iType = FMMC_TYPE_TRANSFORM_SERIES ENDIF iPlayList = CV2_GET_ADVERSARY_SERIES_ARRAY_POS(FMMC_TYPE_TRANSFORM_SERIES) IF iPlayList != -1 iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList) iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[iPlayList][iCurrentPlaylistPos]) IF iCurrentMissionArrayPos != -1 SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName) SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers) SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING() #IF IS_DEBUG_BUILD ELSE PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_TRANSFORM - iCurrentMissionArrayPos = -1") #ENDIF ENDIF ENDIF PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_TRANSFORM") BREAK CASE QUICKMATCH_SERIES_BUNKER IF g_sMPTunables.bDisableStuntSeriesBucket iType = FMMC_TYPE_MISSION_NEW_VS ELSE iType = FMMC_TYPE_BUNKER_SERIES ENDIF iPlayList = CV2_GET_ADVERSARY_SERIES_ARRAY_POS(FMMC_TYPE_BUNKER_SERIES) IF iPlayList != -1 iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList) iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[iPlayList][iCurrentPlaylistPos]) IF iCurrentMissionArrayPos != -1 SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName) SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers) SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING() #IF IS_DEBUG_BUILD ELSE PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_BUNKER - iCurrentMissionArrayPos = -1") #ENDIF ENDIF ENDIF PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_BUNKER") BREAK CASE QUICKMATCH_SERIES_STUNT IF g_sMPTunables.bDisableStuntSeriesBucket iType = FMMC_TYPE_RACE ELSE iType = FMMC_TYPE_RACE_STUNT_FOR_QM ENDIF iCurrentPlaylistPos = CV2_GET_CURRENTLY_ACTIVE_V2_CORONA_POS() iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(CV2_GET_CURRENTLY_ACTIVE_V2_CORONA_ROOT_CONTENT_ID_HASH(iCurrentPlaylistPos)) IF iCurrentMissionArrayPos != -1 SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName) SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers) SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING() #IF IS_DEBUG_BUILD ELSE PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_STUNT - iCurrentMissionArrayPos = -1") #ENDIF ENDIF PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_STUNT") BREAK CASE QUICKMATCH_SERIES_ADVERSARY IF g_sMPTunables.bDisableStuntSeriesBucket iType = FMMC_TYPE_MISSION_NEW_VS ELSE iType = FMMC_TYPE_ADVERSARY_SERIES ENDIF iPlayList = CV2_GET_ADVERSARY_SERIES_ARRAY_POS() IF iPlayList != -1 iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList) iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[iPlayList][iCurrentPlaylistPos]) IF iCurrentMissionArrayPos != -1 SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName) SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers) SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING() #IF IS_DEBUG_BUILD ELSE PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_ADVERSARY - iCurrentMissionArrayPos = -1") #ENDIF ENDIF ENDIF PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_ADVERSARY") BREAK CASE QUICKMATCH_SERIES_ACTIVE_PREMIUM_RACE iType = FMMC_TYPE_RACE iPlayList = CV2_GET_RACE_ARRAY_POS() iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList) iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_ROOT_CONTENT_ID_HASH(iCurrentPlaylistPos, iPlayList)) IF iCurrentMissionArrayPos != -1 AND g_sMPTunables.iProfesionalCoronaType[iPlayList] = FMMC_TYPE_RACE SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName) SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers) SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING() SET_TRANSITION_SESSIONS_LAUNCHING_PROFESSIONAL_RACE() #IF IS_DEBUG_BUILD ELSE PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_ACTIVE_PREMIUM_RACE - iCurrentMissionArrayPos = -1") #ENDIF ENDIF PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_ACTIVE_PREMIUM_RACE") BREAK ENDSWITCH BREAK CASE QUICKMATCH_MODE_HEISTS PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_MODE_HEISTS") SWITCH INT_TO_ENUM(enumQuickMatchHeists,m_HeistsList[iSelectedContent]) #IF FEATURE_HEIST_ISLAND CASE QUICKMATCH_HEISTS_CAYO_PERICO iType = FMMC_TYPE_HEIST_ISLAND_FINALE SET_TRANSITION_SESSIONS_STARTING_HEIST_ISLAND_QUICK_MATCH() SET_TRANSITION_SESSIONS_STARTING_ON_CALL() SET_ON_CALL_QUICKMATCH_ATTEMPTS(0) PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_HEISTS_CAYO_PERICO") BREAK #ENDIF CASE QUICKMATCH_HEISTS_DIAMOND_CASINO iType = FMMC_TYPE_GB_CASINO_HEIST SET_TRANSITION_SESSIONS_STARTING_CASINO_HEIST_QUICK_MATCH() SET_TRANSITION_SESSIONS_STARTING_ON_CALL() SET_ON_CALL_QUICKMATCH_ATTEMPTS(0) PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_HEISTS_DIAMOND_CASINO") BREAK CASE QUICKMATCH_HEISTS_DOOMSDAY iType = FMMC_TYPE_FM_GANGOPS SET_TRANSITION_SESSIONS_STARTING_GANG_OPS_QUICK_MATCH() SET_TRANSITION_SESSIONS_STARTING_ON_CALL() SET_ON_CALL_QUICKMATCH_ATTEMPTS(0) INT iGangOpsType iGangOpsType = GET_RANDOM_HEIST_QUICK_MATCH_TYPE(TRUE) IF iGangOpsType = FM_TRAN_ACTIVITY_ID_GO_FIN iType = FMMC_TYPE_FM_GANGOPS_FIN ENDIF SET_TRANSITION_SESSION_HEIST_QUICK_MATCH_TYPE(iGangOpsType) PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_HEISTS_DOOMSDAY") BREAK CASE QUICKMATCH_HEISTS_HEIST iType = GET_CURRENT_HEIST_ROO_CONTENT_ID_HASH() SET_TRANSITION_SESSIONS_STARTING_HEIST_QUICK_MATCH() SET_TRANSITION_SESSIONS_STARTING_ON_CALL() SET_ON_CALL_QUICKMATCH_ATTEMPTS(0) SET_TRANSITION_SESSION_HEIST_QUICK_MATCH_TYPE(GET_RANDOM_HEIST_QUICK_MATCH_TYPE()) PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_HEISTS_HEIST") BREAK ENDSWITCH BREAK CASE QUICKMATCH_MODE_ACTIVITIES PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_MODE_ACTIVITIES") SWITCH INT_TO_ENUM(enumQuickMatchActivities,m_ActivitiesList[iSelectedContent]) CASE QUICKMATCH_ACTIVITIES_ARM iType = FMMC_TYPE_MG_ARM_WRESTLING PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED ARM") BREAK CASE QUICKMATCH_ACTIVITIES_DARTS iType = FMMC_TYPE_MG_DARTS PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED DARTS") BREAK CASE QUICKMATCH_ACTIVITIES_GOLF iType = FMMC_TYPE_MG_GOLF PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED GOLF") BREAK CASE QUICKMATCH_ACTIVITIES_RANGE iType = FMMC_TYPE_MG_SHOOTING_RANGE PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED RANGE") BREAK CASE QUICKMATCH_ACTIVITIES_TENNIS iType = FMMC_TYPE_MG_TENNIS PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED TENNIS") BREAK ENDSWITCH BREAK CASE QUICKMATCH_MODE_CONTACT_MISSIONS PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_MODE_CONTACT_MISSIONS") SWITCH INT_TO_ENUM(enumQuickMatchContactMissions,m_ContactMissionsList[iSelectedContent]) CASE QUICKMATCH_CONTACT_MISSIONS_SHORT_TRIP iType = FMMC_TYPE_FIXER_SHORT_TRIP SET_TRANSITION_SESSIONS_STARTING_SHORT_TRIP_QUICK_MATCH() SET_TRANSITION_SESSIONS_STARTING_ON_CALL() SET_ON_CALL_QUICKMATCH_ATTEMPTS(0) PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_CONTACT_MISSIONS_SHORT_TRIP") BREAK CASE QUICKMATCH_CONTACT_MISSIONS_AUTO_SHOP iType = FMMC_TYPE_TUNER_ROBBERY_FINALE SET_TRANSITION_SESSIONS_STARTING_TUNER_ROBBERY_QUICK_MATCH() SET_TRANSITION_SESSIONS_STARTING_ON_CALL() SET_ON_CALL_QUICKMATCH_ATTEMPTS(0) PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_CONTACT_MISSIONS_AUTO_SHOP") BREAK CASE QUICKMATCH_CONTACT_MISSIONS_CONTACT iType = FMMC_TYPE_MISSION PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_CONTACT_MISSIONS_CONTACT") BREAK CASE QUICKMATCH_CONTACT_MISSIONS_LAMAR iType = FMMC_TYPE_LOWRIDER_INTRO PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_CONTACT_MISSIONS_LAMAR") BREAK CASE QUICKMATCH_CONTACT_MISSIONS_MOBILE_OPERATION SET_TRANSITION_SESSIONS_STARTING_SVM_QUICK_MATCH() SET_TRANSITION_SESSIONS_STARTING_ON_CALL() SET_ON_CALL_QUICKMATCH_ATTEMPTS(0) iType = FMMC_TYPE_GUNRUNNING_WEAPONIZED_VEHICLE PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_CONTACT_MISSIONS_MOBILE_OPERATION") BREAK CASE QUICKMATCH_CONTACT_MISSIONS_SPECIAL_VEHICLE SET_TRANSITION_SESSIONS_STARTING_SVM_QUICK_MATCH() SET_TRANSITION_SESSIONS_STARTING_ON_CALL() SET_ON_CALL_QUICKMATCH_ATTEMPTS(0) iType = FMMC_TYPE_SPECIAL_VEHICLE_MISSION PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_CONTACT_MISSIONS_SPECIAL_VEHICLE") BREAK ENDSWITCH BREAK CASE QUICKMATCH_MODE_JOBS PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_MODE_JOBS") SWITCH INT_TO_ENUM(enumQuickMatchJobs,m_JobsList[iSelectedContent]) CASE QUICKMATCH_JOBS_CAPTURE iType = FMMC_TYPE_MISSION_CTF PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_JOBS_CAPTURE") BREAK CASE QUICKMATCH_JOBS_DEATHMATCH iType = FMMC_TYPE_DEATHMATCH PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_JOBS_DEATHMATCH") BREAK CASE QUICKMATCH_JOBS_LTS iType = FMMC_TYPE_MISSION_LTS PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_JOBS_LTS") BREAK CASE QUICKMATCH_JOBS_PARACHUTING iType = FMMC_TYPE_BASE_JUMP PRINTLN("[TS] * QUICHMATCH PHONE - SELECTED QUICKMATCH_JOBS_PARACHUTING") BREAK CASE QUICKMATCH_JOBS_RACE iType = FMMC_TYPE_RACE PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_JOBS_RACE") BREAK CASE QUICKMATCH_JOBS_SURVIVAL iType = FMMC_TYPE_SURVIVAL PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_JOBS_SURVIVAL") BREAK CASE QUICKMATCH_JOBS_VERSUS iType = FMMC_TYPE_MISSION_VS PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_JOBS_VERSUS") BREAK ENDSWITCH BREAK ENDSWITCH PRINTLN("[TS] ***************************************") Play_Select_Beep() IF (m_currentMode = QUICKMATCH_MODE_HEISTS AND m_HeistsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_HEISTS_HEIST)) OR (m_currentMode = QUICKMATCH_MODE_HEISTS AND m_HeistsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_HEISTS_DOOMSDAY)) AND NOT g_sMPTunables.bAutoJoinHeistsDisabled //If we selected to join on call direct then set that we did so IF iselectedFriendsOnCallSlot = ciFRIENDS_OPTION_WITH AND bDisplayWithFriends SET_TRANSITION_SESSIONS_STARTING_QUICK_MATCH_WITH_LOCAL_FRIENDS() FILL_FRIENDS_QUICK_MATCH_ARRAY() ELIF iselectedFriendsOnCallSlot = ciFRIENDS_OPTION_DIRECT OR (iselectedFriendsOnCallSlot = ciFRIENDS_OPTION_ON_CALL AND bDisplayWithFriends = FALSE) SET_TRANSITION_SESSIONS_STARTING_HEIST_QUICK_MATCH_DIRECT() ENDIF ELSE //If we selected the friends slot then set that we are starting a quick match with friends IF iselectedFriendsOnCallSlot = ciFRIENDS_OPTION_WITH //But only if we should be displaying with friends AND bDisplayWithFriends SET_TRANSITION_SESSIONS_STARTING_QUICK_MATCH_WITH_LOCAL_FRIENDS() FILL_FRIENDS_QUICK_MATCH_ARRAY() ENDIF ENDIF //If we should always go on call IF g_sMPTunables.bQuickJobAlwaysOnCall AND NOT IS_THIS_A_SOLO_SESSION() SET_TRANSITION_SESSIONS_STARTING_ON_CALL() SET_ON_CALL_QUICKMATCH_ATTEMPTS(0) //If on call is not disabled ELIF g_sMPTunables.bOnCallDisabled = FALSE AND bPlayerIsDrunk = FALSE //If we selected to start an on call then set the flag IF (iselectedFriendsOnCallSlot = ciFRIENDS_OPTION_ON_CALL AND bDisplayWithFriends) //Or it was one less that on call and we're not showing the with friends option OR (iselectedFriendsOnCallSlot = (ciFRIENDS_OPTION_ON_CALL - 1) AND NOT bDisplayWithFriends) SET_TRANSITION_SESSIONS_STARTING_ON_CALL() SET_ON_CALL_QUICKMATCH_ATTEMPTS(0) ENDIF ENDIF //If we selected any then set that flag IF iType = ciTRANSITION_SESSIONS_ACTIVITY_TYPE_ANY SET_FM_JOB_ENTERY_TYPE(ciMISSION_ENTERY_TYPE_PHONE_RANDOM) ELIF AM_I_TRANSITION_SESSIONS_STARTING_ON_CALL() SET_FM_JOB_ENTERY_TYPE(ciMISSION_ENTERY_TYPE_ON_CALL) ELSE SET_FM_JOB_ENTERY_TYPE(ciMISSION_ENTERY_TYPE_PHONE) ENDIF //If we are not starting a ranked quick match then IF NOT AM_I_TRANSITION_SESSIONS_STARTING_ON_CALL() INT iCost = GET_CONTACT_REQUEST_COST(REQUEST_REMOVE_WANTED) //If we can afford to pay to lose the wanted then pay IF GET_PLAYER_WANTED_LEVEL(PLAYER_ID()) > 0 INT iDifference IF NOT NETWORK_CAN_SPEND_MONEY2(iCost, FALSE, TRUE, FALSE, iDifference) iCost-=iDifference ENDIF IF iCost > 0 INT iScriptTransactionIndex GAMER_HANDLE gamerHandle gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID()) GIVE_LOCAL_PLAYER_FM_CASH(-iCost, 1, TRUE, 0) IF USE_SERVER_TRANSACTIONS() // Trigger a cash transaction for PC Build (2151163) TRIGGER_FIRE_AND_FORGET_SERVICE_TRANSACTION(SERVICE_SPEND_LOSE_WANTED_LEVEL, iCost, iScriptTransactionIndex, FALSE, TRUE) g_cashTransactionData[iScriptTransactionIndex].eExtraData.gamerHandle = gamerHandle ELSE NETWORK_SPENT_BUY_WANTEDLEVEL(iCost, gamerHandle, FALSE, TRUE) ENDIF ENDIF ENDIF //Set the flag to say that I'm doing a quick match SET_TRANSITION_SESSIONS_STARTING_QUICK_MATCH() //Set that I need to warp to the start of the mission SET_TRANSITION_SESSIONS_NEED_TO_WARP_TO_START_SKYCAM() SET_PLAYER_LEAVING_CORONA_VECTOR(GET_PLAYER_PERCEIVED_COORDS(PLAYER_ID())) NET_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, NSPC_NO_COLLISION | NSPC_CAN_BE_TARGETTED | NSPC_FREEZE_POSITION | NSPC_USE_PLAYER_FADE_OUT) SET_NEWS_FEED_SPLASH_SCREEN_ACTIVE(TRUE, TRUE) //Set freemode controller state GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].iFmLauncherGameState = FMMC_LAUNCHER_STATE_LOAD_MISSION_FOR_TRANSITION_SESSION PRINTLN("[TS]... SET_FM_LAUNCHER_PLAYER_GAME_STATE - FMMC_LAUNCHER_STATE_LOAD_MISSION_FOR_TRANSITION_SESSION") ENDIF //Set the type of quick match IF iType = FM_GAME_MODE_PLAYLIST SET_TRANSITION_SESSIONS_DOING_QUICK_MATCH_PLAYLIST() ELIF iType = ciTRANSITION_SESSIONS_ACTIVITY_TYPE_ANY SET_TRANSITION_SESSIONS_QUICK_MATCH_TYPE_RANDOM() ELSE SET_TRANSITION_SESSIONS_QUICK_MATCH_TYPE(iType) ENDIF CLEAR_PAUSE_MENU_IS_USING_UGC() //[RANKED_RACES] IF AM_I_TRANSITION_SESSIONS_STARTING_ON_CALL() HANG_UP_AND_PUT_AWAY_PHONE(FALSE) Cleanup_and_Terminate() ENDIF ENDIF // B*2280733 - Reset the debouncing bDebounceOfferJobAccept = FALSE ENDPROC PROC Process_Stage_FRIENDS_OR_SELF_OR_ON_CALL() Check_for_List_Navigation() // KGM 6/7/13: If there is a focus mission then put the phone away // (this means the player has probably just walked into a corona, so avoid trying to launch another mission) IF (Is_There_A_MissionsAtCoords_Focus_Mission()) HANG_UP_AND_PUT_AWAY_PHONE() bBlockAccept = FALSE EXIT ENDIF IF iselectedModeSlot < 0 OR iselectedModeSlot >= ENUM_TO_INT(QUICKMATCH_MODE_MAX) IF g_CellPhone.PhoneDS > PDS_AWAY g_Cellphone.PhoneDS = PDS_RUNNINGAPP PRINTLN("STATE ASSIGNMENT 219. appJIPMP::Process_Stage_Offer_join() assigns PDS_RUNNINGAPP") ENDIF Display_First_QuickMatch_Screen() m_currentStage= QUICKMATCH_MODE_LIST bBlockAccept = FALSE EXIT ENDIF // Check if the player wants to go BACK to JobList IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_NEGATIVE_INPUT)) g_Cellphone.PhoneDS = PDS_COMPLEXAPP Display_First_QuickMatch_Screen() m_selectedQuickMatchSlot = 0 m_currentStage= QUICKMATCH_MODE_LIST Play_Back_Beep() bBlockAccept = FALSE EXIT ENDIF IF iCanDoQuickmatch = 0 AND SlotsUsed > 0 //Need this to prevent "Not available" from being selected. AND NOT bBlockAccept IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_POSITIVE_INPUT)) //Player selects a job type from the list. PRINTLN("appJIPMP - Process_Stage_FRIENDS_OR_SELF_OR_ON_CALL - PHONE_POSITIVE_INPUT") g_InputButtonJustPressed = TRUE Play_Select_Beep() BEGIN_SCALEFORM_MOVIE_METHOD (SF_MovieIndex, "GET_CURRENT_SELECTION") Choice_ReturnedSFIndex = END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE() WHILE NOT IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY (Choice_ReturnedSFIndex) WAIT (0) PRINTLN("appJIPMP - Process_Stage_FRIENDS_OR_SELF_OR_ON_CALL - appJIPMP - Waiting on scaleform return during selecting mode.") ENDWHILE iselectedFriendsOnCallSlot = GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT (Choice_ReturnedSFIndex) m_currentStage= QUICKMATCH_OFFER_JOIN g_Cellphone.PhoneDS = PDS_COMPLEXAPP IF (m_currentMode= QUICKMATCH_MODE_CONTACT_MISSIONS AND m_ContactMissionsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_CONTACT_MISSIONS_SPECIAL_VEHICLE)) OR (m_currentMode= QUICKMATCH_MODE_CONTACT_MISSIONS AND m_ContactMissionsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_CONTACT_MISSIONS_MOBILE_OPERATION)) PROCESS_LAUNCH_QUICKMATCH() ELSE Display_Confirm_Screen() ENDIF bBlockAccept = FALSE ENDIF ELSE //#1492475 IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_POSITIVE_INPUT)) AND NOT bBlockAccept g_InputButtonJustPressed = TRUE Play_Back_Beep() ENDIF ENDIF ENDPROC PROC Process_Stage_Offer_join() // KGM 6/7/13: If there is a focus mission then put the phone away // (this means the player has probably just walked into a corona, so avoid trying to launch another mission) IF (Is_There_A_MissionsAtCoords_Focus_Mission()) bBlockAccept = FALSE HANG_UP_AND_PUT_AWAY_PHONE() EXIT ENDIF IF iselectedModeSlot < 0 OR iselectedModeSlot >= ENUM_TO_INT(QUICKMATCH_MODE_MAX) IF g_CellPhone.PhoneDS > PDS_AWAY g_Cellphone.PhoneDS = PDS_RUNNINGAPP PRINTLN("STATE ASSIGNMENT 219. appJIPMP::Process_Stage_Offer_join() assigns PDS_RUNNINGAPP") ENDIF Clear_Accept_Invite_Warning_Help_Text_If_On_Display() Display_First_QuickMatch_Screen() m_currentStage= QUICKMATCH_MODE_LIST bBlockAccept = FALSE EXIT ENDIF // Check if the player wants to go BACK to JobList IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_NEGATIVE_INPUT)) bBlockAccept = FALSE Clear_Accept_Invite_Warning_Help_Text_If_On_Display() g_Cellphone.PhoneDS = PDS_COMPLEXAPP IF ARE_ANY_FRIENDS_INT_THIS_SESSION() AND NOT g_sMPTunables.bQuickJobAlwaysOnCall Display_Friends_Or_On_Call_Screen() m_currentStage= QUICKMATCH_FRIENDS_OR_SELF_OR_ON_CALL ELSE Display_First_QuickMatch_Screen() m_selectedQuickMatchSlot = 0 m_currentStage= QUICKMATCH_MODE_LIST ENDIF iselectedFriendsOnCallSlot = -1 Play_Back_Beep() EXIT ENDIF Display_Accept_Invite_Warning_Help_Text_If_Required() // B*2280733 - I'm adding debouncing to this, so the script will not end until the button has been released. This avoids weapons firing while button is still held down in PC version. IF bDebounceOfferJobAccept = FALSE IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_POSITIVE_INPUT)) //Player confirms they want to start the job... bDebounceOfferJobAccept = TRUE ENDIF ELSE IF Is_Phone_Control_Just_Released (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_POSITIVE_INPUT)) //Don't exit script until button release (avoids firing weapon)... AND NOT bBlockAccept PROCESS_LAUNCH_QUICKMATCH() ENDIF ENDIF ENDPROC PROC MAINTAIN_NETWORK_SCRIPT_BAIL(BOOL bInitialBail = FALSE) // Make sure still in the network game IF NOT (NETWORK_IS_IN_SESSION()) PRINTLN("NETWORK_IS_IN_SESSION() returned FALSE - Disabling cellphone and terminating App") // Disable the cellphone DISABLE_CELLPHONE(TRUE) IF bInitialBail //Reset the transition session clean up flag g_TransitionSessionNonResetVars.sTransVars.bCleanedUpAndWait = FALSE ENDIF //[RANKED_RACES] //CLEAR_TRANSITION_SESSIONS_STARTING_RANKED_QUICK_MATCH() CLEAR_TRANSITION_SESSIONS_STARTING_ON_CALL() Cleanup_and_Terminate() ENDIF ENDPROC // =========================================================================================================== // Main Loop // =========================================================================================================== SCRIPT PRINTLN("appJIPMP ************* ************* *************") PRINTLN("appJIPMP * STARTINGT - ", GET_CLOUD_TIME_AS_INT(), ", F - ", GET_FRAME_COUNT(), " *") PRINTLN("appJIPMP ************* ************* *************") // Ensure script can run in network game NETWORK_SET_SCRIPT_IS_SAFE_FOR_NETWORK_GAME() iCanDoQuickmatch = CAN_DO_QUICK_MATCH(stQuickMatchTimer) IF iCanDoQuickmatch > 0 PRINTLN("appJIPMP - CAN_DO_QUICK_MATCH = ", iCanDoQuickmatch, ", Quick Job functionality is blocked.") ENDIF #IF IS_DEBUG_BUILD IF GET_COMMANDLINE_PARAM_EXISTS("sc_OnCallDisabled") g_sMPTunables.bOnCallDisabled = TRUE ENDIF IF GET_COMMANDLINE_PARAM_EXISTS("sc_OnCallFriendsDisabled") g_sMPTunables.bOnCallFriendsDisabled = TRUE ENDIF #ENDIF CLEAR_MY_TRANSITION_SESSION_ELO() // DO THIS FIRST: Initialise the MP Cellphone App public header Initialise_MP_App_Variables(m_sAppData) //[RANKED_RACES] //Check to see if we are cleaning up after a quickmatch IF AM_I_TRANSITION_SESSIONS_STARTING_ON_CALL() IF IS_TRANSITION_SESSION_LAUNCHING() PRINTLN("[TS] appJIPMP - IS_TRANSITION_SESSION_LAUNCHING - Cleanup_and_Terminate") Cleanup_and_Terminate() ELSE //Clean up the old transition session CLEANUP_AFTER_RANKED_QUICKMATCH_CANCEL(TRUE) IF(GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_V2_PROFESSIONAL_CORONA_ON_CALL OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_V2_CORONA_ON_CALL OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_V2_ADVERSARY_CORONA_ON_CALL) OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_ON_CALL OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_ADVERSARY_SERIES_CORONA_ON_CALL OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_ADVERSARY_SERIES_CORONA_ON_CALL_1 OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_ADVERSARY_SERIES_CORONA_ON_CALL_2 OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_SPECIAL_VEHICLE_SERIES_CORONA_ON_CALL OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_BUNKER_SERIES_CORONA_ON_CALL OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_TRANSFORM_SERIES_CORONA_ON_CALL OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_TARGET_ASSAULT_SERIES_CORONA_ON_CALL OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_HOTRING_SERIES_CORONA_ON_CALL OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_ARENA_SERIES_CORONA_ON_CALL OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_ARENA_SERIES_CORONA_WALL_ON_CALL OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_RACE_SERIES_CORONA_ON_CALL OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_SURVIVAL_SERIES_CORONA_ON_CALL OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_OPEN_WHEEL_SERIES_CORONA_ON_CALL OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_STREET_RACE_SERIES_CORONA_ON_CALL OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_PURSUIT_SERIES_CORONA_ON_CALL CLEAR_FM_JOB_ENTERY_TYPE() ENDIF //Set a flag to clean the vars in fmmc_launcher SET_TRANSITION_SESSIONS_CLEANUP_AFTER_ON_CALL() //If we are in an activity session thenKill it BOOL bInTransition = NETWORK_IS_IN_TRANSITION() IF bInTransition OR NETWORK_IS_TRANSITION_STARTED() OR NETWORK_IS_TRANSITION_BUSY() OR NETWORK_IS_TRANSITION_MATCHMAKING() OR NETWORK_IS_TRANSITION_LEAVE_POSTPONED() IF g_sMPTunables.bAPPJIPMP_CANCEL_MATCHMAKING_ON_NETWORK_BAIL PRINTLN("[TS] appJIPMP - NETWORK_CANCEL_TRANSITION_MATCHMAKING") NETWORK_CANCEL_TRANSITION_MATCHMAKING() ENDIF IF bInTransition PRINTLN("[TS] appJIPMP - NETWORK_BAIL_TRANSITION") NETWORK_BAIL_TRANSITION(ENUM_TO_INT(NETWORK_BAIL_TS_APPJIPMP)) ENDIF ENDIF CLEAR_ROOT_CONTENT_ID_IF_SAFE() RESET_ALL_TRANSITION_SESSION_VARS() CLEAR_PLAYLIST_BITSET() //Set a flag to clean the vars in fmmc_launcher SET_TRANSITION_SESSIONS_CLEANUP_AFTER_ON_CALL() ENDIF ENDIF IF NOT IS_PED_INJURED(PLAYER_PED_ID()) AND Is_Ped_Drunk(PLAYER_PED_ID()) bPlayerIsDrunk = TRUE ENDIF //Reset the transition session clean up flag g_TransitionSessionNonResetVars.sTransVars.bCleanedUpAndWait = FALSE g_sDLCContentContollerStruct.iOnCallBitset = 0 // Main Loop - never terminates while the app can legitimately still run WHILE TRUE WAIT(0) //[RANKED_RACES] //We need to get that elo data! IF sGetEloData.bGotElo = FALSE IF GET_LOCAL_PLAYER_ELO() sGetEloData.bGotElo = TRUE ENDIF ENDIF MAINTAIN_NETWORK_SCRIPT_BAIL() iCanDoQuickmatch = CAN_DO_QUICK_MATCH(stQuickMatchTimer) //comment out to quickly test no quick jobs available. // Need to handle interrupting the app if a cellphone call comes through // KGM 7/5/12: Also need to ensure a request for AWAY or DISABLED prevents any processing within the App IF NOT (g_Cellphone.PhoneDS = PDS_ONGOING_CALL) AND (g_CellPhone.PhoneDS > PDS_AWAY) // Deal with the various stages of the app SWITCH (m_currentStage) // Initial App screen CASE QUICKMATCH_MODE_LIST SWITCH m_iStageState CASE 0 // Display the First App Screen when the app starts // NOTE: Display First App Screen should set the cellphone state as RunningApp Display_First_QuickMatch_Screen() // List navigation initial values m_selectedQuickMatchSlot = 0 m_iStageState++ BREAK CASE 1 Process_Stage_Mode_List() // This will automatically exit the cellphone if the back button is pressed. // If you move two screens deep into your app, then you must set your app state, g_Cellphone.PhoneDS to PDS_COMPLEXAPP so this doesn't return true. IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_NEGATIVE_INPUT)) //g_Cellphone.PhoneDS = PDS_RUNNINGAPP IF (CHECK_FOR_APPLICATION_EXIT()) PRINTLN("CHECK_FOR_APPLICATION_EXIT() returned TRUE") Cleanup_and_Terminate() ENDIF ENDIF BREAK ENDSWITCH BREAK //Sublists. CASE QUICKMATCH_SUBLIST Process_Stage_Sublist() BREAK //With friends or alone. CASE QUICKMATCH_FRIENDS_OR_SELF_OR_ON_CALL Process_Stage_FRIENDS_OR_SELF_OR_ON_CALL() BREAK // Second App Screen (if needed) CASE QUICKMATCH_OFFER_JOIN Process_Stage_Offer_join() BREAK DEFAULT #IF IS_DEBUG_BUILD SCRIPT_ASSERT("Unknown MP JIPMP Stage.") PRINTNL() #ENDIF BREAK ENDSWITCH ELSE //Update: Incoming calls can't currently go through to the phone whilst an app is running. If this changes, we'll need to reinstate it. //Reinstate the block below to make the phone terminate this script when a phonecall comes through so that the phone will //return to the main menu post-phonecall. //This is an important section! It tells this script what to do when a call, be it answerphone or other phonecall, comes through. //BeforeCallPhoneDS = PDS_MAXIMUM //Cleanup_and_Terminate() ENDIF //Critical! Do not remove. This must run every frame as it handles bad things such as the player dying when the phone is active. IF CHECK_FOR_ABNORMAL_EXIT() PRINTLN("CHECK_FOR_ABNORMAL_EXIT() returned TRUE") Cleanup_and_Terminate() ENDIF ENDWHILE ENDSCRIPT