//USING "leader_board_common.sch" USING "commands_stats.sch" USING "net_common_functions.sch" USING "socialclub_leaderboard_hud.sch" USING "net_leaderboards.sch" USING "commands_socialclub.sch" USING "net_stat_system.sch" USING "PS_MP_LESSON_ENUM.sch" // Navigation CONST_INT SC_LB_PRESSED_UP 0 CONST_INT SC_LB_PRESSED_DOWN 1 CONST_INT SC_LB_PRESSED_SELECT 2 CONST_INT SC_LB_PRESSED_Y 3 CONST_INT SC_LB_PRESSED_ACCEPT 4 //General read stats CONST_INT SC_LB_START_READ 0 CONST_INT SC_LB_READ_PENDING 1 CONST_INT SC_LB_READING 2 CONST_INT SC_LB_READ_FINISED 3 //Used by freemode for XP board. CONST_INT FREEMODE_DATA_LB_STAT_TYPE_XP 0 CONST_INT FREEMODE_DATA_LB_STAT_TYPE_TIME 1 CONST_INT FREEMODE_DATA_LB_MAX_STAT_TYPES 2 CONST_INT MAX_STORED_CREWS 5 CONST_INT FREEMODE_DATA_LB_MAINTAIN_STAGE_INIT 0 CONST_INT FREEMODE_DATA_LB_MAINTAIN_STAGE_UPDATE_WRITE 1 CONST_INT FREEMODE_DATA_LB_MAINTAIN_STAGE_CHECKS 2 CONST_INT FREEMODE_DATA_LB_MAINTAIN_STAGE_WRITE 3 CONST_INT FREEMODE_DATA_LB_BS_UPDATE_STAT 0 CONST_INT FREEMODE_DATA_LB_COLUMN_XP 0 CONST_INT FREEMODE_DATA_LB_COLUMN_TIME 1 CONST_INT FREEMODE_DATA_LB_COLUMN_SESSIONS 2 CONST_INT RACE_LEADERBOARD_NO_DATA_RESULT -2 STRUCT RACE_CHECKPOINTS_LOAD_STRUCT INT iCheckPointType INT m_ClanId INT iFriendLoopCounter BOOL bInitComplete INT iBestLapTime ENDSTRUCT #IF IS_DEBUG_BUILD PROC DEBUG_PRINT_LEADERBOARD_READ_DATA_STRUCT(STRING ProcName,Leaderboard2ReadData& lbReadData) INT i println("PRINT_LEADERBOARD_READ_DATA_STRUCT started in ",": ", ProcName) println("leaderboard ID = ",lbReadData.m_LeaderboardID) println("leaderboard TYPE = ",ENUM_TO_INT(lbReadData.m_type)) println("leaderboard CLAN ID = ",lbReadData.m_ClanID) println("leaderboard NUM GROUPS = ", lbReadData.m_GroupSelector.m_NumGroups) REPEAT lbReadData.m_GroupSelector.m_NumGroups i println("leaderboard CATEGORY ",i," = ",lbReadData.m_GroupSelector.m_Group[i].m_Category) println("leaderboard NAME ID ",i," = ",lbReadData.m_GroupSelector.m_Group[i].m_Id) ENDREPEAT ENDPROC PROC DEBUG_PRINT_LEADERBOARD_GROUP_HANDLE_STRUCT(STRING ProcName,Leaderboard2GroupHandle& lbGroup[]) INT i println("PRINT_LEADERBOARD_GROUP_HANDLE_STRUCT started in ",": ", ProcName) println("leaderboard NUM GROUPS = ", lbGroup[0].m_NumGroups) REPEAT lbGroup[0].m_NumGroups i println("leaderboard CATEGORY ",i," = ",lbGroup[0].m_Group[i].m_Category) println("leaderboard NAME ID ",i," = ",lbGroup[0].m_Group[i].m_Id) ENDREPEAT ENDPROC PROC DEBUG_PRINT_WAITING_FOR_READ_TO_FINISH(Leaderboard2ReadData& lbReadData) println("--CURRENT READ DETAILS--") println("leaderboard ID = ",lbReadData.m_LeaderboardID) println("eaderboard TYPE = ",ENUM_TO_INT(lbReadData.m_type)) println("--OUTSTANDING READ DETAILS--") println("leaderboard ID = ",ongoingSCLB_readInfo.m_LeaderboardID) println("leaderboard TYPE = ",ENUM_TO_INT(ongoingSCLB_readInfo.m_type)) ENDPROC PROC DEBUG_PRINT_LB_READ_PROGRESS(STRING ProcName,INT iLoadStage) println(ProcName," moving to load stage ", iLoadStage) ENDPROC PROC DEBUG_PRINT_READ_RESULT_STATUS(STRING ProcName,Leaderboard2ReadData& lbReadData, BOOL bSuccessful) INt i IF bSuccessful println(ProcName, " READ SUCCESSFUL") ENDIF println("leaderboard ID = ",lbReadData.m_LeaderboardID) println("leaderboard TYPE = ",ENUM_TO_INT(lbReadData.m_type)) println("leaderboard NUM GROUPS = ", lbReadData.m_GroupSelector.m_NumGroups) REPEAT lbReadData.m_GroupSelector.m_NumGroups i println("leaderboard CATEGORY ",i," = ",lbReadData.m_GroupSelector.m_Group[i].m_Category) println("leaderboard NAME ID ",i," = ",lbReadData.m_GroupSelector.m_Group[i].m_Id) ENDREPEAT ENDPROC PROC DEBUG_START_LEADERBOARD_PRINT_RESULTS(STRING ProcName,Leaderboard2ReadData& lbReadData) INT i println(ProcName, " leaderboard ID = ",lbReadData.m_LeaderboardID) println("leaderboard TYPE = ",ENUM_TO_INT(lbReadData.m_type)) println("leaderboard NUM GROUPS = ", lbReadData.m_GroupSelector.m_NumGroups) REPEAT lbReadData.m_GroupSelector.m_NumGroups i println("leaderboard CATEGORY ",i," = ",lbReadData.m_GroupSelector.m_Group[i].m_Category) println("leaderboard NAME ID ",i," = ",lbReadData.m_GroupSelector.m_Group[i].m_Id) ENDREPEAT ENDPROC PROC DEBUG_PRINT_SC_LB_RETURNED_VALUES(STRING ProcName,STRING Section, INT iRow, INT iColumn, INT iValue, FLOAT fValue, BOOL bFloat, BOOL bForcePrint = FALSE) IF g_bOutputSCLeaderboardData OR bForcePrint IF bFloat println(ProcName, ": ",Section,": Row # ",iRow ,": Column # ",iColumn," - fValue ", fValue) ELSE println(ProcName, ": ",Section,": Row # ",iRow , ": Column # ",iColumn," - iValue ", iValue) ENDIF ENDIF ENDPROC PROC DEBUG_PRINT_READ_INFO(STRING ProcName,LeaderboardReadInfo readInfo) println(ProcName, ": READ INFO- m_LeaderboardId : ", readINfo.m_LeaderboardId) println(ProcName, ": READ INFO- m_leaderboardType : ", readINfo.m_leaderboardType) println(ProcName, ": READ INFO- m_LeaderboardIndex : ", readINfo.m_LeaderboardIndex) println(ProcName, ": READ INFO- m_ReturnedRows : ", readINfo.m_ReturnedRows) println(ProcName, ": READ INFO- m_TotalRows: ", readINfo.m_TotalRows) println(ProcName, ": READ INFO- m_LocalGamerRowNumber : ", readINfo.m_LocalGamerRowNumber) ENDPROC #ENDIF PROC START_LEADERBOARD_READ(Leaderboard2ReadData lbReadData) #IF IS_DEBUG_BUILD DEBUG_PRINTCALLSTACK() #ENDIF println("--START_LEADERBOARD_READ-- leaderboard ID = ",lbReadData.m_LeaderboardID) println("leaderboard TYPE = ",ENUM_TO_INT(lbReadData.m_type)) ongoingSCLB_readInfo.bProcessingLBRead = TRUE REINIT_NET_TIMER(ongoingSCLB_readInfo.failSafeTimer,TRUE) ongoingSCLB_readInfo.m_LeaderboardID = lbReadData.m_LeaderboardID ongoingSCLB_readInfo.m_type = lbReadData.m_type ENDPROC PROC END_LEADERBOARD_READ(INT& iLoadStage,BOOL& readResult,Leaderboard2ReadData& lbReadData) println("--END_LEADERBOARD_READ-- leaderboard ID = ",lbReadData.m_LeaderboardID) println("leaderboard TYPE = ",ENUM_TO_INT(lbReadData.m_type)) iLoadStage = 0 readResult = FALSE ongoingSCLB_readInfo.bProcessingLBRead = FALSE RESET_NET_TIMER(ongoingSCLB_readInfo.failSafeTimer) LEADERBOARDS_READ_CLEAR(lbReadData.m_LeaderboardId,lbReadData.m_Type) ENDPROC PROC CHECK_LEADERBOARD_READ_SHOULD_HAVE_TERMINATED() IF HAS_NET_TIMER_EXPIRED(ongoingSCLB_readInfo.failSafeTimer,LEADERBOARD_READ_FAILSAFE_TIMER,TRUE) println("--TERMINATING_LEADERBOARD_READ (TIMEOUT)-- leaderboard ID = ",ongoingSCLB_readInfo.m_LeaderboardID) println("leaderboard TYPE = ",ENUM_TO_INT(ongoingSCLB_readInfo.m_type)) LEADERBOARDS_READ_CLEAR(ongoingSCLB_readInfo.m_LeaderboardId,ongoingSCLB_readInfo.m_Type) ongoingSCLB_readInfo.bProcessingLBRead = FALSE RESET_NET_TIMER(ongoingSCLB_readInfo.failSafeTimer) ENDIF ENDPROC FUNC BOOL SHOULD_ALL_SCRIPT_LEADERBOARD_READS_TERMINATE() IF IS_PAUSE_MENU_ACTIVE() AND NOT IS_PLAYER_ACTIVE_IN_CORONA() RETURN TRUE ENDIF RETURN FALSE ENDFUNC FUNC BOOL IS_ANY_LEADERBOARD_READ_BEING_PROCESSED() IF LEADERBOARDS_READ_ANY_PENDING() OR ongoingSCLB_readInfo.bProcessingLBRead CHECK_LEADERBOARD_READ_SHOULD_HAVE_TERMINATED() RETURN TRUE ENDIF RETURN FALSE ENDFUNC FUNC BOOL SCLB_CHECK_HANDLES_ARE_THE_SAME(GAMER_HANDLE &gamerHandle1, GAMER_HANDLE &gamerHandle2) IF NOT IS_GAMER_HANDLE_VALID(gamerHandle1) RETURN FALSE ENDIF IF NOT IS_GAMER_HANDLE_VALID(gamerHandle2) RETURN FALSE ENDIF IF NETWORK_ARE_HANDLES_THE_SAME(gamerHandle1, gamerHandle2) RETURN TRUE ENDIF RETURN FALSE ENDFUNC FUNC BOOL START_SC_LEADERBOARD_READ_SESSION_PLAYERS_BY_ROW(INT& iLoadStage,BOOL &bSuccessful,Leaderboard2ReadData& lbReadData, Leaderboard2GroupHandle& lbGroups, INT numGroups) #IF IS_DEBUG_BUILD STRING procName = "START_SC_LEADERBOARD_READ_SESSION_PLAYERS_BY_ROW" #ENDIF SWITCH iLoadStage CASE 0 IF NOT IS_ANY_LEADERBOARD_READ_BEING_PROCESSED() AND NOT SHOULD_ALL_SCRIPT_LEADERBOARD_READS_TERMINATE() //LEADERBOARDS_READ_EXISTS(lbReadData.m_LeaderboardId, lbReadData.m_Type) #IF IS_DEBUG_BUILD DEBUG_PRINT_LEADERBOARD_READ_DATA_STRUCT(procName,lbReadData) DEBUG_PRINT_LEADERBOARD_GROUP_HANDLE_STRUCT(procName,lbGroups) #ENDIF START_LEADERBOARD_READ(lbReadData) IF LEADERBOARDS2_READ_SESSION_PLAYERS_BY_ROW(lbReadData, lbGroups,numGroups) iLoadStage++ #IF IS_DEBUG_BUILD DEBUG_PRINT_LB_READ_PROGRESS(procName, 1) #ENDIF ELSE #IF IS_DEBUG_BUILD println("LEADERBOARDS2_READ_SESSION_PLAYERS_BY_ROW!! start See Conor") println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type) //SCRIPT_ASSERT("LEADERBOARDS2_READ_SESSION_PLAYERS_BY_ROW FAILED!! See Conor") DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE) DEBUG_PRINT_LB_READ_PROGRESS(procName,3) #ENDIF bSuccessful = FALSE iLoadStage = 3 ENDIF #IF IS_DEBUG_BUILD ELSE IF g_DBb_OutputLeaderboardReadErrors DEBUG_PRINT_WAITING_FOR_READ_TO_FINISH(procName,lbReadData) ENDIF #ENDIF ENDIF BREAK CASE 1 IF NOT LEADERBOARDS_READ_PENDING(lbReadData.m_LeaderboardId, lbReadData.m_Type) iLoadStage++ #IF IS_DEBUG_BUILD DEBUG_PRINT_LB_READ_PROGRESS(procName,3) #ENDIF ENDIF BREAK CASE 2 IF LEADERBOARDS_READ_SUCCESSFUL(lbReadData.m_LeaderboardId, lbReadData.m_Type) #IF IS_DEBUG_BUILD DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,TRUE) DEBUG_PRINT_LB_READ_PROGRESS(procName,3) #ENDIF bSuccessful = TRUE iLoadStage++ ELSE #IF IS_DEBUG_BUILD println("LEADERBOARD READ FAILED!! See Conor") println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type) //SCRIPT_ASSERT("LEADERBOARD READ FAILED!! See Conor") DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE) DEBUG_PRINT_LB_READ_PROGRESS(procName,3) #ENDIF bSuccessful = FALSE iLoadStage++ ENDIF BREAK CASE 3 RETURN TRUE BREAK ENDSWITCH RETURN FALSE ENDFUNC FUNC BOOL START_SC_LEADERBOARD_READ_FRIENDS_BY_ROW(INT& iLoadStage,BOOL &bSuccessful,Leaderboard2ReadData& lbReadData, Leaderboard2GroupHandle& lbGroups[], INT numGroups, BOOL includeLocalPlayer,INT iStartIndex, INT iNumFriendsRead) #IF IS_DEBUG_BUILD STRING procName = "START_SC_LEADERBOARD_READ_FRIENDS_BY_ROW" #ENDIF SWITCH iLoadStage CASE 0 IF NOT IS_ANY_LEADERBOARD_READ_BEING_PROCESSED()//LEADERBOARDS_READ_EXISTS(lbReadData.m_LeaderboardId, lbReadData.m_Type) AND NOT SHOULD_ALL_SCRIPT_LEADERBOARD_READS_TERMINATE() #IF IS_DEBUG_BUILD DEBUG_PRINT_LEADERBOARD_READ_DATA_STRUCT(procName,lbReadData) DEBUG_PRINT_LEADERBOARD_GROUP_HANDLE_STRUCT(procName,lbGroups) #ENDIF START_LEADERBOARD_READ(lbReadData) println("LEADERBOARDS2_READ_FRIENDS_BY_ROW is being called with start index: ",iStartIndex, " includeLocalPlayer: ", includeLocalPlayer) IF LEADERBOARDS2_READ_FRIENDS_BY_ROW(lbReadData, lbGroups,numGroups,includeLocalPlayer,iStartIndex,iNumFriendsRead) iLoadStage++ #IF IS_DEBUG_BUILD DEBUG_PRINT_LB_READ_PROGRESS(procName, 1) #ENDIF ELSE #IF IS_DEBUG_BUILD //println() println("LEADERBOARDS2_READ_FRIENDS_BY_ROW FAILED!! start See Conor") println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type) //println() //SCRIPT_ASSERT("LEADERBOARDS2_READ_FRIENDS_BY_ROW FAILED!! See Conor") DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE) DEBUG_PRINT_LB_READ_PROGRESS(procName,3) #ENDIF bSuccessful = FALSE iLoadStage=3 ENDIF #IF IS_DEBUG_BUILD ELSE IF g_DBb_OutputLeaderboardReadErrors DEBUG_PRINT_WAITING_FOR_READ_TO_FINISH(lbReadData)//"START_SC_LEADERBOARD_READ_FRIENDS_BY_ROW", ENDIF #ENDIF ENDIF BREAK CASE 1 IF NOT LEADERBOARDS_READ_PENDING(lbReadData.m_LeaderboardId, lbReadData.m_Type) iLoadStage++ #IF IS_DEBUG_BUILD DEBUG_PRINT_LB_READ_PROGRESS(procName,2) #ENDIF ENDIF BREAK CASE 2 IF LEADERBOARDS_READ_SUCCESSFUL(lbReadData.m_LeaderboardId, lbReadData.m_Type) #IF IS_DEBUG_BUILD DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,TRUE) DEBUG_PRINT_LB_READ_PROGRESS(procName,3) #ENDIF bSuccessful = TRUE iLoadStage++ ELSE #IF IS_DEBUG_BUILD //println() println("LEADERBOARD READ FAILED!! See Conor") println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type) ///println() //SCRIPT_ASSERT("LEADERBOARD READ FAILED!! See Conor") DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE) DEBUG_PRINT_LB_READ_PROGRESS(procName,3) #ENDIF bSuccessful = FALSE iLoadStage++ ENDIF BREAK CASE 3 RETURN TRUE BREAK ENDSWITCH RETURN FALSE ENDFUNC FUNC BOOL START_SC_LEADERBOARD_READ_BY_ROW(INT& iLoadStage ,BOOL &bSuccessful ,Leaderboard2ReadData& lbReadData ,GAMER_HANDLE& lbGamerHandleData[] ,INT nGamerHandles ,LeaderboardClanIds& pArray_LBClanIds[] ,INT nClanIds ,Leaderboard2GroupHandle& lbGroups[] ,INT numGroups) #IF IS_DEBUG_BUILD STRING procName = "START_SC_LEADERBOARD_READ_BY_ROW" #ENDIF SWITCH iLoadStage CASE 0 IF NOT IS_ANY_LEADERBOARD_READ_BEING_PROCESSED() //LEADERBOARDS_READ_EXISTS(lbReadData.m_LeaderboardId, lbReadData.m_Type) AND NOT SHOULD_ALL_SCRIPT_LEADERBOARD_READS_TERMINATE() #IF IS_DEBUG_BUILD DEBUG_PRINT_LEADERBOARD_READ_DATA_STRUCT(procName,lbReadData) DEBUG_PRINT_LEADERBOARD_GROUP_HANDLE_STRUCT(procName,lbGroups) #ENDIF START_LEADERBOARD_READ(lbReadData) IF LEADERBOARDS2_READ_BY_ROW(lbReadData, lbGamerHandleData, nGamerHandles, pArray_LBClanIds, nClanIds, lbGroups, numGroups) iLoadStage++ #IF IS_DEBUG_BUILD DEBUG_PRINT_LB_READ_PROGRESS(procName, 1) #ENDIF ELSE #IF IS_DEBUG_BUILD //println() println("LEADERBOARDS2_READ_BY_ROW FAILED!! start See Conor") println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type) //println() //SCRIPT_ASSERT("LEADERBOARDS2_READ_BY_ROW FAILED!! See Conor") DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE) DEBUG_PRINT_LB_READ_PROGRESS(procName,3) #ENDIF bSuccessful = FALSE iLoadStage=3 ENDIF #IF IS_DEBUG_BUILD ELSE IF g_DBb_OutputLeaderboardReadErrors DEBUG_PRINT_WAITING_FOR_READ_TO_FINISH(lbReadData)//"START_SC_LEADERBOARD_READ_BY_ROW", ENDIF #ENDIF ENDIF BREAK CASE 1 IF NOT LEADERBOARDS_READ_PENDING(lbReadData.m_LeaderboardId, lbReadData.m_Type) iLoadStage++ #IF IS_DEBUG_BUILD DEBUG_PRINT_LB_READ_PROGRESS(procName,3) #ENDIF ENDIF BREAK CASE 2 IF LEADERBOARDS_READ_SUCCESSFUL(lbReadData.m_LeaderboardId, lbReadData.m_Type) #IF IS_DEBUG_BUILD DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,TRUE) DEBUG_PRINT_LB_READ_PROGRESS(procName,3) #ENDIF bSuccessful = TRUE iLoadStage++ ELSE #IF IS_DEBUG_BUILD //println() println("LEADERBOARD READ FAILED!! See Conor") println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type) //println() //SCRIPT_ASSERT("LEADERBOARD READ FAILED!! See Conor") DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE) DEBUG_PRINT_LB_READ_PROGRESS(procName,3) #ENDIF bSuccessful = FALSE iLoadStage++ ENDIF BREAK CASE 3 RETURN TRUE BREAK ENDSWITCH RETURN FALSE ENDFUNC FUNC BOOL START_SC_LEADERBOARD_READ_BY_HANDLE(INT& iLoadStage,BOOL &bSuccessful, Leaderboard2ReadData& lbReadData, GAMER_HANDLE& handleData) #IF IS_DEBUG_BUILD STRING procName = "START_SC_LEADERBOARD_READ_BY_HANDLE" #ENDIF SWITCH iLoadStage CASE 0 IF NOT IS_ANY_LEADERBOARD_READ_BEING_PROCESSED()//LEADERBOARDS_READ_EXISTS(lbReadData.m_LeaderboardId, lbReadData.m_Type) AND NOT SHOULD_ALL_SCRIPT_LEADERBOARD_READS_TERMINATE() #IF IS_DEBUG_BUILD DEBUG_PRINT_LEADERBOARD_READ_DATA_STRUCT(procName,lbReadData) #ENDIF START_LEADERBOARD_READ(lbReadData) IF LEADERBOARDS2_READ_BY_HANDLE(lbReadData, handleData) iLoadStage++ #IF IS_DEBUG_BUILD DEBUG_PRINT_LB_READ_PROGRESS(procName, 1) #ENDIF ELSE #IF IS_DEBUG_BUILD //println() println("LEADERBOARDS2_READ_BY_HANDLE FAILED!! start See Conor") println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type) //println() //SCRIPT_ASSERT("LEADERBOARDS2_READ_BY_HANDLE FAILED!! See Conor") DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE) DEBUG_PRINT_LB_READ_PROGRESS(procName,3) #ENDIF bSuccessful = FALSE iLoadStage=3 ENDIF #IF IS_DEBUG_BUILD ELSE IF g_DBb_OutputLeaderboardReadErrors DEBUG_PRINT_WAITING_FOR_READ_TO_FINISH(lbReadData)//"START_SC_LEADERBOARD_READ_BY_HANDLE", ENDIF #ENDIF ENDIF BREAK CASE 1 IF NOT LEADERBOARDS_READ_PENDING(lbReadData.m_LeaderboardId, lbReadData.m_Type) iLoadStage++ #IF IS_DEBUG_BUILD DEBUG_PRINT_LB_READ_PROGRESS(procName,2) #ENDIF ENDIF BREAK CASE 2 IF LEADERBOARDS_READ_SUCCESSFUL(lbReadData.m_LeaderboardId, lbReadData.m_Type) #IF IS_DEBUG_BUILD DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,TRUE) DEBUG_PRINT_LB_READ_PROGRESS(procName,3) #ENDIF bSuccessful = TRUE iLoadStage++ ELSE #IF IS_DEBUG_BUILD //println() println("LEADERBOARD READ FAILED!! See Conor") println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type) //println() //SCRIPT_ASSERT("LEADERBOARD READ FAILED!! See Conor") DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE) DEBUG_PRINT_LB_READ_PROGRESS(procName,3) #ENDIF bSuccessful = FALSE iLoadStage++ ENDIF BREAK CASE 3 RETURN TRUE BREAK ENDSWITCH RETURN FALSE ENDFUNC FUNC BOOL START_SC_LEADERBOARD_READ_BY_RANK(INT& iLoadStage,BOOL &bSuccessful,Leaderboard2ReadData& lbReadData, INT rankStart, INT numRows) #IF IS_DEBUG_BUILD STRING procName = "START_SC_LEADERBOARD_READ_BY_RANK" #ENDIF SWITCH iLoadStage CASE 0 IF NOT IS_ANY_LEADERBOARD_READ_BEING_PROCESSED()// LEADERBOARDS_READ_EXISTS(lbReadData.m_LeaderboardId, lbReadData.m_Type) AND NOT SHOULD_ALL_SCRIPT_LEADERBOARD_READS_TERMINATE() #IF IS_DEBUG_BUILD println(procName," Rank Start ",RankStart, " numRows",numRows) DEBUG_PRINT_LEADERBOARD_READ_DATA_STRUCT(procName,lbReadData) #ENDIF START_LEADERBOARD_READ(lbReadData) IF LEADERBOARDS2_READ_BY_RANK(lbReadData, rankStart, numRows) iLoadStage++ #IF IS_DEBUG_BUILD DEBUG_PRINT_LB_READ_PROGRESS(procName, 1) #ENDIF ELSE #IF IS_DEBUG_BUILD //println() println("LEADERBOARDS2_READ_BY_RANK FAILED!! start See Conor") println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type) //println() //SCRIPT_ASSERT("LEADERBOARDS2_READ_BY_RANK FAILED!! See Conor") DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE) DEBUG_PRINT_LB_READ_PROGRESS(procName,3) #ENDIF bSuccessful = FALSE iLoadStage=3 ENDIF #IF IS_DEBUG_BUILD ELSE IF g_DBb_OutputLeaderboardReadErrors DEBUG_PRINT_WAITING_FOR_READ_TO_FINISH(lbReadData)//"START_SC_LEADERBOARD_READ_BY_RANK", ENDIF #ENDIF ENDIF BREAK CASE 1 IF NOT LEADERBOARDS_READ_PENDING(lbReadData.m_LeaderboardId, lbReadData.m_Type) iLoadStage++ #IF IS_DEBUG_BUILD DEBUG_PRINT_LB_READ_PROGRESS(procName,2) #ENDIF ENDIF BREAK CASE 2 IF LEADERBOARDS_READ_SUCCESSFUL(lbReadData.m_LeaderboardId, lbReadData.m_Type) #IF IS_DEBUG_BUILD DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,TRUE) DEBUG_PRINT_LB_READ_PROGRESS(procName,3) #ENDIF bSuccessful = TRUE iLoadStage++ ELSE #IF IS_DEBUG_BUILD //println() println("LEADERBOARD READ FAILED!! See Conor") println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type) //println() //SCRIPT_ASSERT("LEADERBOARD READ FAILED!! See Conor") DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE) DEBUG_PRINT_LB_READ_PROGRESS(procName,3) #ENDIF bSuccessful = FALSE iLoadStage++ ENDIF BREAK CASE 3 RETURN TRUE BREAK ENDSWITCH RETURN FALSE ENDFUNC FUNC BOOL START_SC_LEADERBOARD_READ_BY_RADIUS(INT& iLoadStage,BOOL &bSuccessful,Leaderboard2ReadData& lbReadData, INT radius, GAMER_HANDLE& pivotGamerHandle,BOOL bRankPrediction = FALSE, BOOL bUseRankPredictOverride = FALSE,INT iRPOverride = 0, FLOAT fRPOverride = 0.0) #IF IS_DEBUG_BUILD STRING procName = "START_SC_LEADERBOARD_READ_BY_RADIUS" #ENDIF INT iScore = sclb_rank_predict.combinedResult.m_iColumnData[0] FLOAT fScore = sclb_rank_predict.combinedResult.m_fColumnData[0] IF bUseRankPredictOverride iScore = iRPOverride fScore = fRPOverride ENDIF SWITCH iLoadStage CASE 0 IF NOT IS_ANY_LEADERBOARD_READ_BEING_PROCESSED()//LEADERBOARDS_READ_EXISTS(lbReadData.m_LeaderboardId, lbReadData.m_Type) AND NOT SHOULD_ALL_SCRIPT_LEADERBOARD_READS_TERMINATE() #IF IS_DEBUG_BUILD DEBUG_PRINT_LEADERBOARD_READ_DATA_STRUCT(procName,lbReadData) #ENDIF START_LEADERBOARD_READ(lbReadData) IF bRankPrediction IF IS_BIT_SET(sclb_rank_predict.currentResult.m_ColumnsBitSets, 0) println("LEADERBOARDS2_READ_BY_SCORE_INT: reading for int: ",iScore ) IF LEADERBOARDS2_READ_BY_SCORE_INT(lbReadData, iScore, radius) iLoadStage++ #IF IS_DEBUG_BUILD DEBUG_PRINT_LB_READ_PROGRESS(procName, 1) #ENDIF ELSE #IF IS_DEBUG_BUILD //println() println("LEADERBOARDS2_READ_BY_RADIUS PREDICTION (INT) FAILED!! start See Conor") println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type) //println() //SCRIPT_ASSERT("LEADERBOARDS2_READ_BY_RADIUS PREDICTION (INT) FAILED!! See Conor") DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE) DEBUG_PRINT_LB_READ_PROGRESS(procName,3) #ENDIF bSuccessful = FALSE iLoadStage=3 ENDIF ELSE println("LEADERBOARDS2_READ_BY_SCORE_INT: reading for float: ",fScore ) IF LEADERBOARDS2_READ_BY_SCORE_FLOAT(lbReadData, fScore , radius) iLoadStage++ #IF IS_DEBUG_BUILD DEBUG_PRINT_LB_READ_PROGRESS(procName, 1) #ENDIF ELSE #IF IS_DEBUG_BUILD //println() println("LEADERBOARDS2_READ_BY_RADIUS PREDICTION (FLOAT) FAILED!! start See Conor") println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type) //println() //SCRIPT_ASSERT("LEADERBOARDS2_READ_BY_RADIUS PREDICTION (FLOAT) FAILED!! See Conor") DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE) DEBUG_PRINT_LB_READ_PROGRESS(procName,3) #ENDIF bSuccessful = FALSE iLoadStage=3 ENDIF ENDIF ELSE IF LEADERBOARDS2_READ_BY_RADIUS(lbReadData, radius, pivotGamerHandle) iLoadStage++ #IF IS_DEBUG_BUILD DEBUG_PRINT_LB_READ_PROGRESS(procName, 1) #ENDIF ELSE #IF IS_DEBUG_BUILD //println() println("LEADERBOARDS2_READ_BY_RADIUS FAILED!! start See Conor") println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type) //println() //SCRIPT_ASSERT("LEADERBOARDS2_READ_BY_RADIUS FAILED!! See Conor") DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE) DEBUG_PRINT_LB_READ_PROGRESS(procName,3) #ENDIF bSuccessful = FALSE iLoadStage=3 ENDIF ENDIF #IF IS_DEBUG_BUILD ELSE IF g_DBb_OutputLeaderboardReadErrors DEBUG_PRINT_WAITING_FOR_READ_TO_FINISH(lbReadData)//"START_SC_LEADERBOARD_READ_BY_RADIUS", ENDIF #ENDIF ENDIF BREAK CASE 1 IF NOT LEADERBOARDS_READ_PENDING(lbReadData.m_LeaderboardId, lbReadData.m_Type) iLoadStage++ #IF IS_DEBUG_BUILD DEBUG_PRINT_LB_READ_PROGRESS(procName,3) #ENDIF ENDIF BREAK CASE 2 IF LEADERBOARDS_READ_SUCCESSFUL(lbReadData.m_LeaderboardId, lbReadData.m_Type) #IF IS_DEBUG_BUILD DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,TRUE) DEBUG_PRINT_LB_READ_PROGRESS(procName,3) #ENDIF bSuccessful = TRUE iLoadStage++ ELSE #IF IS_DEBUG_BUILD //println() println("LEADERBOARD READ FAILED!! See Conor") println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type) //println() //SCRIPT_ASSERT("LEADERBOARD READ FAILED!! See Conor") DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE) DEBUG_PRINT_LB_READ_PROGRESS(procName,3) #ENDIF bSuccessful = FALSE iLoadStage++ ENDIF BREAK CASE 3 RETURN TRUE BREAK ENDSWITCH RETURN FALSE ENDFUNC #IF IS_DEBUG_BUILD PROC PRINT_ROW_DATA(SC_LEADERBOARD_DISPLAY_ROW_STRUCT rowData) INT j IF g_bOutputSCLeaderboardData //println() //println("PRINT_ROW_DATA") println("row data gamer name: ",rowData.tl23_ParticipantName) println("row data rank: ",rowData.iRank) REPEAT SC_LEADERBOARD_MAX_DISPLAYED_STATS j println("FLOAT Column # ", j, " = ", rowData.fColumnData[j]) ENDREPEAT REPEAT SC_LEADERBOARD_MAX_DISPLAYED_STATS j println("INT Column # ", j, " = ", rowData.iColumnData[j]) ENDREPEAT println("row data is valid : ", rowData.bValidData) println("END - PRINT_ROW_DATA") ENDIF ENDPROC #ENDIF PROC CLEAR_FINAL_DATA_STRUCT(SC_FINAL_DATA &finalData[]) GAMER_HANDLE emptyGamer INT i, j REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i finalData[i].rowData.tl23_ParticipantName = "" finalData[i].rowData.tl31_CoDriver = "" finalData[i].rowData.playerGamerHandle = emptyGamer finalData[i].rowData.coDriverGamerHandle = emptyGamer finalData[i].rowData.bCustomVehicle = FALSE finalData[i].rowData.iRank = 0 REPEAT SC_LEADERBOARD_MAX_DISPLAYED_STATS j finalData[i].rowData.fColumnData[j] = 0 finalData[i].rowData.iColumnData[j] = 0 ENDREPEAT finalData[i].iSection = 0 finalData[i].rowData.bValidData = FALSE finalData[i].iCrewTagLoadStage = 0 finalData[i].iCoDriverNameLoadStage = 0 finalData[i].iRunUpdateGamerTagsLoadStage = 0 finalData[i].iDisplayNameRequestID = 0 finalData[i].crewTag = "" ENDREPEAT RESET_NET_TIMER(scLB_DisplayedData.failSafeTimer) PRINTLN("CLEAR_FINAL_DATA_STRUCT- Called") ENDPROC FUNC BOOL IS_SC_LEADERBOARD_A_RACE(INT iLeaderboardID) IF iLeaderboardID = ENUM_TO_INT(LEADERBOARD_FREEMODE_RACES) OR iLeaderboardID = ENUM_TO_INT(LEADERBOARD_FREEMODE_GTA_RACES) OR iLeaderboardID = ENUM_TO_INT(LEADERBOARD_FREEMODE_RALLY) OR iLeaderboardID = ENUM_TO_INT(LEADERBOARD_FREEMODE_RACES_LAPS) OR iLeaderboardID = ENUM_TO_INT(LEADERBOARD_FREEMODE_GTA_RACES_LAPS) OR iLeaderboardID = ENUM_TO_INT(LEADERBOARD_FREEMODE_RALLY_LAPS) OR iLeaderboardID = ENUM_TO_INT(LEADERBOARD_FREEMODE_ON_FOOT_RACE) //OR iLeaderboardID = ENUM_TO_INT(LEADERBOARD_FREEMODE_ON_FOOT_LAPS) RETURN TRUE ENDIF RETURN FALSE ENDFUNC FUNC BOOL IS_SC_LEADERBOARD_A_RALLY(INT iLeaderboardID) IF iLeaderboardID = ENUM_TO_INT(LEADERBOARD_FREEMODE_RALLY) OR iLeaderboardID = ENUM_TO_INT(LEADERBOARD_FREEMODE_RALLY_LAPS) RETURN TRUE ENDIF RETURN FALSE ENDFUNC FUNC INT SC_LC_GENERATE_ID_FOR_CACHE(TEXT_LABEL_31 tl_UGC_name, INT iLeaderboard,INT iMissionType, INT iSubType = -1, INT iLaps = -1, BOOL bCoDriver = FALSE) TEXT_LABEL_63 tempString tempString = tl_UGC_name tempString += iLeaderBoard tempString += "_" IF IS_SC_LEADERBOARD_A_RALLY(iLeaderboard) IF bCoDriver tempString += "CoDri" ELSE tempString += "Dri" ENDIF tempString += "_" ENDIF tempString += iMissionType tempString += "_" tempString += iSubType tempString += "_" tempString += ilaps RETURN GET_HASH_KEY(tempString) ENDFUNC FUNC BOOL IS_SC_LB_VALUE_INVALID(INT iValue, FLOAT fValue) IF iValue = HIGHEST_INT OR iValue = -HIGHEST_INT RETURN TRUE ENDIF IF fValue = TO_FLOAT(HIGHEST_INT) OR fValue = TO_FLOAT(-HIGHEST_INT) RETURN TRUE ENDIF RETURN FALSE ENDFUNC //PROC CLEAR_ROW_DATA_STRUCT(LeaderboardRowData& tempRowData[]) // LeaderboardRowData clearData // tempRowData[0] = clearData //ENDPROC PROC CLEAR_ROW_DATA_INFO_STRUCT(LeaderboardRowData& tempRowData) tempRowData.m_GamerHandle.Data1 = 0 tempRowData.m_GamerHandle.Data2 = 0 tempRowData.m_GamerHandle.Data3 = 0 tempRowData.m_GamerHandle.Data4 = 0 tempRowData.m_GamerHandle.Data5 = 0 tempRowData.m_GamerHandle.Data6 = 0 tempRowData.m_GamerHandle.Data7 = 0 tempRowData.m_GamerHandle.Data8 = 0 tempRowData.m_GamerHandle.Data9 = 0 tempRowData.m_GamerHandle.Data10 = 0 tempRowData.m_GamerHandle.Data11 = 0 tempRowData.m_GamerHandle.Data12 = 0 tempRowData.m_GamerHandle.Data13 = 0 tempRowData.m_GamerName = "" tempRowData.m_GroupSelector.m_NumGroups = 0 INT i REPEAT LEADERBOARD_MAX_GROUPS i tempRowData.m_GroupSelector.m_Group[i].m_Category = "" tempRowData.m_GroupSelector.m_Group[i].m_Id = "" ENDREPEAT tempRowData.m_ClanId = 0 tempRowData.m_ClanName = "" tempRowData.m_ClanTag = "" tempRowData.m_Rank = 0 tempRowData.m_NumColumnValues = 0 ENDPROC PROC FILL_READ_INFO_STRUCT(LeaderboardReadInfo& readInfo,Leaderboard2ReadData &ReadDataStruct) readInfo.m_LeaderboardId = ReadDataStruct.m_LeaderboardId readInfo.m_LeaderboardType = ENUM_TO_INT(ReadDataStruct.m_Type) readInfo.m_LeaderboardIndex = 0 ENDPROC FUNC BOOL IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() IF sclb_useRankPrediction AND sclb_rankPredictionDataValid RETURN TRUE ENDIF RETURN FALSE ENDFUNC PROC FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control, SC_LEADERBOARD_DISPLAY_ROW_STRUCT &rowData, INT iRank #IF IS_DEBUG_BUILD, STRING funcName,INT iSection #endif ) //println("FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT: filling in data for a row from the combined rank prediction result") INT iCustomCar INT i IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId) rowData.tl23_ParticipantName = sclb_rank_predict.DriverName rowData.playerGamerHandle = sclb_rank_predict.driverHandle println("CODRIVER NAME = ", sclb_rank_predict.coDriverName) rowData.tl31_CoDriver = sclb_rank_predict.coDriverName ELSE rowData.tl23_ParticipantName = GET_PLAYER_NAME(PLAYER_ID()) rowData.playerGamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID()) ENDIF rowData.iRank = iRank IF IS_SC_LEADERBOARD_A_RACE(scLB_control.ReadDataStruct.m_LeaderboardId) println("COMBINED_PREDICTION_RESULT: Row: ", scLB_DisplayedData.iSectionEntries[iSection], " Column: ", scLB_DisplayedData.iCustomVehicleColumn) iCustomCar = sclb_rank_predict.combinedResult.m_iColumnData[scLB_DisplayedData.iCustomVehicleColumn] IF iCustomCar = 1 rowData.bCustomVehicle = TRUE ELSE rowData.bCustomVehicle = FALSE ENDIF ENDIF rowData.bValidData = TRUE REPEAT scLB_DisplayedData.iNumNonRankColumnsToDisplay i println("COMBINED_PREDICTION_RESULT: Row: ", scLB_DisplayedData.iSectionEntries[iSection], " Column: ", scLB_DisplayedData.iReadColumns[i]) //IF IS_BIT_SET(sclb_rank_predict.currentResult.m_ColumnsBitSets,scLB_DisplayedData.iReadColumns[i]) IF IS_BIT_SET(sclb_rank_predict.currentResult.m_ColumnsBitSets,scLB_DisplayedData.iReadColumns[i]) //IF IS_LEADERBOARD_COLUMN_INT(scLB_control.ReadDataStruct.m_LeaderboardId,scLB_Control.ReadDataStruct.m_Type,scLB_DisplayedData.iReadColumns[i]) rowData.iColumnData[i] = sclb_rank_predict.combinedResult.m_iColumnData[scLB_DisplayedData.iReadColumns[i]] #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Row: ",scLB_DisplayedData.iSectionEntries[iSection],scLB_DisplayedData.iReadColumns[i], rowData.iColumnData[i],0.0,FALSE,TRUE ) #ENDIF ELSE rowData.fColumnData[i] = sclb_rank_predict.combinedResult.m_fColumnData[scLB_DisplayedData.iReadColumns[i]] #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Row: ",scLB_DisplayedData.iSectionEntries[iSection],scLB_DisplayedData.iReadColumns[i], 0,rowData.fColumnData[i],TRUE,TRUE ) #ENDIF ENDIF ENDREPEAT ENDPROC //FUNC INT GET_OFFSET_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(INT iSection, INT iPlayerInitialRank, INT iCurrentRowRank) // IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() // AND scLB_DisplayedData.iSectionEntries[iSection] > scLB_DisplayedData.iPlayerIndexForSection[iSection] // AND scLB_DisplayedData.iPlayerIndexForSection[iSection] >= 0 // IF iPlayerInitialRank != scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iPlayerIndexForSection[iSection]].iRank // IF iCurrentRowRank >= scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iPlayerIndexForSection[iSection]].iRank // RETURN 1 // ENDIF // ENDIF // ENDIF // RETURN 0 //ENDFUNC PROC CALCULATE_OFFSETS_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(INT iSection, INT iPlayerInitialRank) INT i println("CALCULATE_OFFSETS_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION") IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() AND scLB_DisplayedData.iSectionEntries[iSection] > scLB_DisplayedData.iPlayerIndexForSection[iSection] AND scLB_DisplayedData.iPlayerIndexForSection[iSection] >= 0 IF iPlayerInitialRank != scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iPlayerIndexForSection[iSection]].iRank REPEAT scLB_DisplayedData.iSectionEntries[iSection] i IF i != scLB_DisplayedData.iPlayerIndexForSection[iSection] //if row IF scLB_DisplayedData.rowData[iSection][i].iRank >= scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iPlayerIndexForSection[iSection]].iRank IF scLB_DisplayedData.rowData[iSection][i].iRank < iPlayerInitialRank OR iPlayerInitialRank = -1 println("offseting Rank for iSection: ",iSection,"iRow :",i) println("OLD RANK: ",scLB_DisplayedData.rowData[iSection][i].iRank) scLB_DisplayedData.rowData[iSection][i].iRank = scLB_DisplayedData.rowData[iSection][i].iRank + 1 println("NEW RANK: ",scLB_DisplayedData.rowData[iSection][i].iRank) #IF IS_DEBUG_BUILD ELSE println("scLB_DisplayedData.rowData[",iSection,"][",i,"].iRank = ",scLB_DisplayedData.rowData[iSection][i].iRank) println("iPlayerInitialRank = ",iPlayerInitialRank) #ENDIF ENDIF #IF IS_DEBUG_BUILD ELSE println("scLB_DisplayedData.rowData[",iSection,"][",i,"].iRank = ", scLB_DisplayedData.rowData[iSection][i].iRank) println("scLB_DisplayedData.rowData[",iSection,"][",scLB_DisplayedData.iPlayerIndexForSection[iSection],"].iRank = ",scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iPlayerIndexForSection[iSection]].iRank) #ENDIF ENDIF ENDIF ENDREPEAT ELSE println("iPlayerInitialRank = ",iPlayerInitialRank) ENDIF ELSE IF NOT IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() println("Rank prediction NOT valid") ENDIF IF scLB_DisplayedData.iSectionEntries[iSection] <= scLB_DisplayedData.iPlayerIndexForSection[iSection] println("scLB_DisplayedData.iSectionEntries[iSection] = ", scLB_DisplayedData.iSectionEntries[iSection]) println("scLB_DisplayedData.iPlayerIndexForSection[iSection] = ", scLB_DisplayedData.iPlayerIndexForSection[iSection]) ENDIF IF scLB_DisplayedData.iPlayerIndexForSection[iSection] < 0 println("scLB_DisplayedData.iPlayerIndexForSection[iSection] < 0") ENDIF ENDIF ENDPROC FUNC BOOL DO_WE_HAVE_STORED_RANK_PREDICTED_DATA_FOR_THIS_READ(Leaderboard2ReadData readData) INT i IF sclb_useRankPrediction println("DO_WE_HAVE_STORED_RANK_PREDICTED_DATA_FOR_THIS_READ") IF sclb_rank_predict.LBWriteDetails.m_LeaderboardId != 0 IF sclb_rank_predict.LBWriteDetails.m_LeaderboardId = readData.m_LeaderboardId IF sclb_rank_predict.LBWriteDetails.m_GroupSelector.m_NumGroups = readData.m_GroupSelector.m_NumGroups REPEAT readData.m_GroupSelector.m_NumGroups i IF NOT ARE_STRINGS_EQUAL(sclb_rank_predict.LBWriteDetails.m_GroupSelector.m_Group[i].m_Category, readData.m_GroupSelector.m_Group[i].m_Category) OR NOT ARE_STRINGS_EQUAL(sclb_rank_predict.LBWriteDetails.m_GroupSelector.m_Group[i].m_Id, readData.m_GroupSelector.m_Group[i].m_Id) println("FALSE - sclb_rank_predict.LBWriteDetails.m_GroupSelector.m_Group[",i,"].m_Category = ", sclb_rank_predict.LBWriteDetails.m_GroupSelector.m_Group[i].m_Category) println("readData.m_GroupSelector.m_Group[",i,"].m_Category = ", readData.m_GroupSelector.m_Group[i].m_Category) println("sclb_rank_predict.LBWriteDetails.m_GroupSelector.m_Group[",i,"].m_Id = ", sclb_rank_predict.LBWriteDetails.m_GroupSelector.m_Group[i].m_Id) println("readData.m_GroupSelector.m_Group[",i,"].m_Id = ", readData.m_GroupSelector.m_Group[i].m_Id) RETURN FALSE ENDIF ENDREPEAT println("TRUE") RETURN TRUE #IF IS_DEBUG_BUILD ELSE println("FALSE -sclb_rank_predict.LBWriteDetails.m_GroupSelector.m_NumGroups = ",sclb_rank_predict.LBWriteDetails.m_GroupSelector.m_NumGroups) println(" readData.m_GroupSelector.m_NumGroups= ", readData.m_GroupSelector.m_NumGroups) #ENDIF ENDIF #IF IS_DEBUG_BUILD ELSE println("FALSE -sclb_rank_predict.LBWriteDetails.m_LeaderboardId = ",sclb_rank_predict.LBWriteDetails.m_LeaderboardId) println("readData.m_LeaderboardId = ",readData.m_LeaderboardId) #ENDIF ENDIF #IF IS_DEBUG_BUILD ELSE println("FALSE -sclb_rank_predict.LBWriteDetails.m_LeaderboardId = ",sclb_rank_predict.LBWriteDetails.m_LeaderboardId) #ENDIF ENDIF #IF IS_DEBUG_BUILD ELSE println("sclb_useRankPrediction = FALSE") #ENDIF ENDIF RETURN FALSE ENDFUNC /* Global OR Crew read 11 Radius around player If 0 rows are returned Read rank 1-11 Else if radius !include rank 1 read rank 1 endif endif Friend read Get all friend data including player - READ 1 Loop through all friend data. Store rank 1 Loop through until you find player then get rows above/below (there is probably a nicer way to do this but just to get things working again) */ FUNC BOOL SOCIAL_CLUB_GET_GLOBAL_LB_DATA(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control ) GAMER_HANDLE localPlayerHandle LeaderboardRowData initRowData LeaderboardReadInfo readInfo //INT iRankStart INT i, j INT iCustomCar INT iPlayerRow = -1 INT iRowStart INT iIndex BOOL bRankOneInRadius #IF IS_DEBUG_BUILD STRING funcName = "SOCIAL_CLUB_GET_GLOBAL_LB_DATA" #ENDIF INT iSection = SC_LB_SECTION_GLOBAL BOOL bReplaceFirstSlot INT iRankRowsToRead //INT iOffsetRank localPlayerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID()) SWITCH scLB_control.iLoadStage[iSection] //radius around player CASE 0 scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1 scLB_DisplayedData.iSectionEntries[iSection] = 0 sclb_rank_predict.iRankBeforePrediction = -1 sclb_rankPredictionDataValid = FALSE IF DO_WE_HAVE_STORED_RANK_PREDICTED_DATA_FOR_THIS_READ(scLB_control.ReadDataStruct) IF NOT sclb_rankPredictionDataValid println("DO_WE_HAVE_STORED_RANK_PREDICTED_DATA_FOR_THIS_READ = TRUE setting flag to valid") sclb_rankPredictionDataValid = TRUE ENDIF ELSE IF sclb_rankPredictionDataValid println("DO_WE_HAVE_STORED_RANK_PREDICTED_DATA_FOR_THIS_READ = FALSE setting flag to NOT valid") sclb_rankPredictionDataValid = FALSE ENDIF ENDIF IF NOT sclb_rankPredictionDataValid println("DO_WE_HAVE_STORED_RANK_PREDICTED_DATA_FOR_THIS_READ = FALSE") ENDIF IF START_SC_LEADERBOARD_READ_BY_RADIUS(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct,11,localPlayerHandle,IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()) #IF IS_DEBUG_BUILD DEBUG_START_LEADERBOARD_PRINT_RESULTS(funcName,scLB_control.ReadDataStruct) #ENDIF FILL_READ_INFO_STRUCT(readInfo,scLB_control.ReadDataStruct) IF scLB_control.bTempReadResult AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) println(funcName, ":readInfo.m_LocalGamerRowNumber = ",readInfo.m_LocalGamerRowNumber) IF readInfo.m_ReturnedRows > 0 iIndex = 0 i = 0 //RANK PREDICTION IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() REPEAT readInfo.m_ReturnedRows iIndex LEADERBOARDS2_READ_GET_ROW_DATA_INFO(iIndex, initRowData) IF sclb_rank_predict.iRankBeforePrediction < 0 //IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, GET_PLAYER_NAME(PLAYER_ID())) //OR ARE_STRINGS_EQUAL(initRowData.m_GamerName,sclb_rank_predict.driverName) IF SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle) OR SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,sclb_rank_predict.driverHandle) sclb_rank_predict.iRankBeforePrediction =initRowData.m_Rank println(funcName, " setting players rank before prediction = ",sclb_rank_predict.iRankBeforePrediction) ENDIF ENDIF IF iPlayerRow < 0 IF IS_BIT_SET(sclb_rank_predict.currentResult.m_ColumnsBitSets,0) println("Players score: ", sclb_rank_predict.combinedResult.m_iColumnData[0]) println("Returned Row# ",iIndex, " score: ", LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, 0)) IF sclb_rank_predict.combinedResult.m_iColumnData[0] >= LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, 0) iPlayerRow = iIndex println(funcName, " Players score is higher than returned result setting player row to ", iPlayerRow) ENDIF ELSE println("Players score: ", sclb_rank_predict.combinedResult.m_fColumnData[0]) println("Returned Row# ",iIndex, " score: ", LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(iIndex, 0)) IF sclb_rank_predict.combinedResult.m_fColumnData[0] >= LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(iIndex, 0) iPlayerRow = iIndex println(funcName, " Players score is higher than returned result setting player row to ", iPlayerRow) ENDIF ENDIF ENDIF CLEAR_ROW_DATA_INFO_STRUCT(initRowData) ENDREPEAT IF iPlayerRow < 0 iPlayerRow = readInfo.m_ReturnedRows ENDIF ENDIF iIndex = 0 LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData) IF initRowData.m_Rank <= 1 //OR (iPlayerRow = 0 AND initRowData.m_Rank <= 1) println(funcName, ": Rank 1 included in radius search grabbing now") //1st Place IF scLB_DisplayedData.iSectionEntries[iSection] < 11 IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() AND iPlayerRow = 0 FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]],initRowData.m_Rank #IF IS_DEBUG_BUILD ,funcName,iSection#endif ) //iPlayerRow = 0 scLB_DisplayedData.iPlayerIndexForSection[iSection] = 0 #IF IS_DEBUG_BUILD PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]]) #ENDIF scLB_DisplayedData.iSectionEntries[iSection]++ println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] ) ENDIF IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() AND (SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle) OR SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,sclb_rank_predict.driverHandle)) //AND (ARE_STRINGS_EQUAL(initRowData.m_GamerName, GET_PLAYER_NAME(PLAYER_ID())) //OR ARE_STRINGS_EQUAL(initRowData.m_GamerName,sclb_rank_predict.driverName)) ELSE //IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, GET_PLAYER_NAME(PLAYER_ID())) IF SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle) iPlayerRow = 0 scLB_DisplayedData.iPlayerIndexForSection[iSection] = 0 ENDIF scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].tl23_ParticipantName = initRowData.m_GamerName scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].playerGamerHandle = initRowData.m_GamerHandle scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = initRowData.m_Rank IF IS_SC_LEADERBOARD_A_RACE(scLB_control.ReadDataStruct.m_LeaderboardId) println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", scLB_DisplayedData.iSectionEntries[iSection], " Column: ", scLB_DisplayedData.iCustomVehicleColumn) iCustomCar = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0,scLB_DisplayedData.iCustomVehicleColumn) IF iCustomCar = 1 scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bCustomVehicle = TRUE ELSE scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bCustomVehicle = FALSE ENDIF ENDIF IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId) println("CODRIVER - initRowData.m_GroupSelector.m_Group[1].m_Id= ", initRowData.m_GroupSelector.m_Group[1].m_Id) scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].tl31_CoDriver = initRowData.m_GroupSelector.m_Group[1].m_Id ENDIF scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bValidData = TRUE REPEAT scLB_DisplayedData.iNumNonRankColumnsToDisplay i println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", scLB_DisplayedData.iSectionEntries[iSection], " Column: ", scLB_DisplayedData.iReadColumns[i]) IF IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[i]) //IF IS_LEADERBOARD_COLUMN_INT(scLB_control.ReadDataStruct.m_LeaderboardId,scLB_Control.ReadDataStruct.m_Type,scLB_DisplayedData.iReadColumns[i]) scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[i] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, scLB_DisplayedData.iReadColumns[i]) #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Rank 1",scLB_DisplayedData.iSectionEntries[iSection],scLB_DisplayedData.iReadColumns[i], scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[i],0.0,FALSE ) #ENDIF ELSE scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[i] = LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(0, scLB_DisplayedData.iReadColumns[i]) #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Rank 1",scLB_DisplayedData.iSectionEntries[iSection],scLB_DisplayedData.iReadColumns[i], 0,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[i],TRUE ) #ENDIF ENDIF ENDREPEAT //iOffsetRank = GET_OFFSET_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(iSection,sclb_rank_predict.iRankBeforePrediction) //scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank + iOffsetRank //println(funcName,": rank prediction offseting rank by: ", iOffsetRank) #IF IS_DEBUG_BUILD PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]]) #ENDIF scLB_DisplayedData.iSectionEntries[iSection]++ println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] ) ENDIF bRankOneInRadius = TRUE ENDIF ENDIF IF NOT bRankOneInRadius scLB_DisplayedData.iSectionEntries[iSection]++ println(funcName,": adding data to section number of entries now (FAKE TO ALLOW 1st PLACE LATER) : ",scLB_DisplayedData.iSectionEntries[iSection] ) ENDIF IF NOT IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() iPlayerRow = readInfo.m_LocalGamerRowNumber println(funcName,": NOT IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() iPlayerRow: ",iPlayerRow ) ENDIF IF iPlayerRow > 6 iRowStart = iPlayerRow - 6 ELSE IF bRankOneInRadius iRowStart = 1 ELSE iRowStart = 0 ENDIF ENDIF iIndex = iRowStart CLEAR_ROW_DATA_INFO_STRUCT(initRowData) FOR iIndex = iRowStart TO readInfo.m_ReturnedRows-1 LEADERBOARDS2_READ_GET_ROW_DATA_INFO(iIndex, initRowData) //Get data about row outside of getting data for each column? println(funcName,": initRowData.iRank = ", initRowData.m_Rank) println(funcName,": scLB_DisplayedData.iSectionEntries[iSection] = ", scLB_DisplayedData.iSectionEntries[iSection]) IF scLB_DisplayedData.iSectionEntries[iSection] < 11 AND initRowData.m_Rank > 1 IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() AND iPlayerRow = iIndex //IF NOT ARE_STRINGS_EQUAL(scLB_DisplayedData.rowData[iSection][0].tl23_ParticipantName,GET_PLAYER_NAME(PLAYER_ID())) IF NOT SCLB_CHECK_HANDLES_ARE_THE_SAME(scLB_DisplayedData.rowData[iSection][0].playerGamerHandle,initRowData.m_GamerHandle) FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]],initRowData.m_Rank#IF IS_DEBUG_BUILD ,funcName,iSection #endif ) scLB_DisplayedData.iPlayerIndexForSection[iSection] = scLB_DisplayedData.iSectionEntries[iSection] println(funcName, "Adding player to index ", scLB_DisplayedData.iPlayerIndexForSection[iSection]) #IF IS_DEBUG_BUILD PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]]) #ENDIF scLB_DisplayedData.iSectionEntries[iSection]++ println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] ) ENDIF ENDIF //if we are using rank prediction there is no record for local player so its an extra one in the middle IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() //AND (ARE_STRINGS_EQUAL(initRowData.m_GamerName, GET_PLAYER_NAME(PLAYER_ID())) //OR ARE_STRINGS_EQUAL(initRowData.m_GamerName,sclb_rank_predict.driverName)) AND (SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle) OR SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,sclb_rank_predict.driverHandle)) println(funcName,": NOT adding data to section as it's equal to prediction handle") ELSE IF scLB_DisplayedData.iSectionEntries[iSection] < 11 //IF NOT ARE_STRINGS_EQUAL(initRowData.m_GamerName, "") //AND NOT ARE_STRINGS_EQUAL(scLB_DisplayedData.rowData[iSection][0].tl23_ParticipantName,initRowData.m_GamerName) //IF ARE_STRINGS_EQUAL(GET_PLAYER_NAME(PLAYER_ID()),initRowData.m_GamerName) IF IS_GAMER_HANDLE_VALID(initRowData.m_GamerHandle) AND NOT SCLB_CHECK_HANDLES_ARE_THE_SAME(scLB_DisplayedData.rowData[iSection][0].playerGamerHandle,initRowData.m_GamerHandle) IF SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle) IF scLB_DisplayedData.iPlayerIndexForSection[iSection] < 0 scLB_DisplayedData.iPlayerIndexForSection[iSection] = scLB_DisplayedData.iSectionEntries[iSection] println(funcName, "Adding player to index ", scLB_DisplayedData.iPlayerIndexForSection[iSection]) ENDIF ENDIF scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].tl23_ParticipantName = initRowData.m_GamerName scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].playerGamerHandle = initRowData.m_GamerHandle scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = initRowData.m_Rank scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bValidData = TRUE IF IS_SC_LEADERBOARD_A_RACE(scLB_control.ReadDataStruct.m_LeaderboardId) println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", iIndex, " Column: ", scLB_DisplayedData.iCustomVehicleColumn) iCustomCar = LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, scLB_DisplayedData.iCustomVehicleColumn) IF iCustomCar = 1 scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bCustomVehicle = TRUE ELSE scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bCustomVehicle = FALSE ENDIF ENDIF IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId) println("CODRIVER - initRowData.m_GroupSelector.m_Group[1].m_Id= ", initRowData.m_GroupSelector.m_Group[1].m_Id) scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].tl31_CoDriver = initRowData.m_GroupSelector.m_Group[1].m_Id ENDIF i = 0 REPEAT scLB_DisplayedData.iNumNonRankColumnsToDisplay i IF IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[i]) //IF IS_LEADERBOARD_COLUMN_INT(scLB_control.ReadDataStruct.m_LeaderboardId,scLB_Control.ReadDataStruct.m_Type,scLB_DisplayedData.iReadColumns[i]) scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[i] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, scLB_DisplayedData.iReadColumns[i]) println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", iIndex, " Column: ", scLB_DisplayedData.iReadColumns[i], " Value = ",scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[i]) #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Radius around player",iIndex,scLB_DisplayedData.iReadColumns[i], scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[i],0.0,FALSE ) #ENDIF ELSE scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[i] = LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(iIndex, scLB_DisplayedData.iReadColumns[i]) println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", iIndex, " Column: ", scLB_DisplayedData.iReadColumns[i], " Value = ",scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[i]) #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Radius around player",iIndex,scLB_DisplayedData.iReadColumns[i], 0,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[i],TRUE ) #ENDIF ENDIF ENDREPEAT //iOffsetRank = GET_OFFSET_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(iSection,sclb_rank_predict.iRankBeforePrediction) //scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank + iOffsetRank //println(funcName,": rank prediction offseting rank by: ", iOffsetRank) #IF IS_DEBUG_BUILD PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]]) #ENDIF scLB_DisplayedData.iSectionEntries[iSection]++ println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] ) ELSE println(funcName, " gamer hande is not valid or matches slot 0 ") ENDIF ENDIF ENDIF ENDIF CLEAR_ROW_DATA_INFO_STRUCT(initRowData) ENDFOR LEADERBOARDS2_READ_GET_ROW_DATA_END( ) END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct) IF bRankOneInRadius println(funcName," --Rank 1 included in radius-- moving to stage 2 grabbed ") IF scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1 AND IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() IF scLB_DisplayedData.iSectionEntries[iSection] >= 1 FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]], scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]-1].iRank+1 #IF IS_DEBUG_BUILD ,funcName,iSection #endif ) ELSE FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]], 1 #IF IS_DEBUG_BUILD ,funcName,iSection #endif ) ENDIF scLB_DisplayedData.iPlayerIndexForSection[iSection] = scLB_DisplayedData.iSectionEntries[iSection] println(funcName, "Adding player to index ", scLB_DisplayedData.iPlayerIndexForSection[iSection]) #IF IS_DEBUG_BUILD IF scLB_DisplayedData.iSectionEntries[iSection] < 11 PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]]) ENDIF #ENDIF scLB_DisplayedData.iSectionEntries[iSection]++ println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] ) ENDIF scLB_control.iLoadStage[iSection] = 2 ELSE println(funcName," -- moving to stage 1 grabbed ") scLB_control.iLoadStage[iSection] = 1 ENDIF ELSE IF NOT bRankOneInRadius scLB_DisplayedData.iSectionEntries[iSection]++ println(funcName,": adding data to section number of entries now (FAKE TO ALLOW 1st PLACE LATER) : ",scLB_DisplayedData.iSectionEntries[iSection] ) ENDIF LEADERBOARDS2_READ_GET_ROW_DATA_END( ) END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct) scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1 scLB_control.iLoadStage[iSection] = 1 println(funcName," -- no data available for local player moving to stage 1(returned rows is 0)") ENDIF ELSE //LEADERBOARDS2_READ_GET_ROW_DATA_END( ) END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct) scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1 scLB_control.iLoadStage[iSection] = 1 SET_BIT(scLB_DisplayedData.iReadFailedBS,iSection) println(funcName," -- no data available for local player moving to stage 1 (READ FAILED) ") ENDIF ENDIF BREAK CASE 1 //ENDIF IF scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1 iRankRowsToRead = 11 ELSE iRankRowsToRead = 1 ENDIF IF START_SC_LEADERBOARD_READ_BY_RANK(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct, 1,iRankRowsToRead) #IF IS_DEBUG_BUILD DEBUG_START_LEADERBOARD_PRINT_RESULTS(funcName,scLB_control.ReadDataStruct) #ENDIF FILL_READ_INFO_STRUCT(readInfo,scLB_control.ReadDataStruct) IF scLB_control.bTempReadResult AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) IF readInfo.m_ReturnedRows > 0 REPEAT readInfo.m_ReturnedRows i println(funcName," start loop counter: ", i) LEADERBOARDS2_READ_GET_ROW_DATA_INFO(i, initRowData) IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() //AND (ARE_STRINGS_EQUAL(initRowData.m_GamerName, GET_PLAYER_NAME(PLAYER_ID())) //OR ARE_STRINGS_EQUAL(initRowData.m_GamerName,sclb_rank_predict.driverName)) AND (SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle) OR SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,sclb_rank_predict.driverHandle)) println(funcName," data already in stored via rank prediction by passing") ELSE bReplaceFirstSlot = FALSE IF scLB_DisplayedData.rowData[iSection][0].iRank > 1 OR scLB_DisplayedData.rowData[iSection][0].iRank <= 0 bReplaceFirstSlot = TRUE println(funcName," replacing slot 0 as rank 1 is not in") ENDIF IF scLB_DisplayedData.iSectionEntries[iSection] < 11 OR bReplaceFirstSlot IF i = 0 OR bReplaceFirstSlot scLB_DisplayedData.rowData[iSection][0].tl23_ParticipantName = initRowData.m_GamerName scLB_DisplayedData.rowData[iSection][0].playerGamerHandle = initRowData.m_GamerHandle scLB_DisplayedData.rowData[iSection][0].iRank = initRowData.m_Rank IF IS_SC_LEADERBOARD_A_RACE(scLB_control.ReadDataStruct.m_LeaderboardId) println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", 0, " Column: ", scLB_DisplayedData.iCustomVehicleColumn) iCustomCar = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0,scLB_DisplayedData.iCustomVehicleColumn) IF iCustomCar = 1 scLB_DisplayedData.rowData[iSection][0].bCustomVehicle = TRUE ELSE scLB_DisplayedData.rowData[iSection][0].bCustomVehicle = FALSE ENDIF ENDIF IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId) println("CODRIVER - initRowData.m_GroupSelector.m_Group[1].m_Id= ", initRowData.m_GroupSelector.m_Group[1].m_Id) scLB_DisplayedData.rowData[iSection][0].tl31_CoDriver = initRowData.m_GroupSelector.m_Group[1].m_Id ENDIF scLB_DisplayedData.rowData[iSection][0].bValidData = TRUE j = 0 REPEAT scLB_DisplayedData.iNumNonRankColumnsToDisplay j println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", i, " Column: ", scLB_DisplayedData.iReadColumns[j]) IF IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[j]) //IF IS_LEADERBOARD_COLUMN_INT(scLB_control.ReadDataStruct.m_LeaderboardId,scLB_Control.ReadDataStruct.m_Type,scLB_DisplayedData.iReadColumns[i]) scLB_DisplayedData.rowData[iSection][i].iColumnData[j] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(i, scLB_DisplayedData.iReadColumns[j]) #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Rank 1",i,scLB_DisplayedData.iReadColumns[j], scLB_DisplayedData.rowData[iSection][i].iColumnData[j],0.0,FALSE ) #ENDIF ELSE scLB_DisplayedData.rowData[iSection][i].fColumnData[j] = LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(i, scLB_DisplayedData.iReadColumns[j]) #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Rank 1",i,scLB_DisplayedData.iReadColumns[j], 0,scLB_DisplayedData.rowData[iSection][i].fColumnData[j],TRUE ) #ENDIF ENDIF ENDREPEAT IF scLB_DisplayedData.iSectionEntries[iSection] = 0 //iOffsetRank = GET_OFFSET_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(iSection,sclb_rank_predict.iRankBeforePrediction) //scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank + iOffsetRank //println(funcName,": rank prediction offseting rank by: ", iOffsetRank) #IF IS_DEBUG_BUILD PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]]) #ENDIF IF bReplaceFirstSlot println(funcName,": Replacing first entry with rank 1 player as it was not included") ELSE scLB_DisplayedData.iSectionEntries[iSection]++ ENDIF println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] ) ELSE //1943783 IF scLB_DisplayedData.iSectionEntries[iSection] = 1 AND scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1 #IF IS_DEBUG_BUILD PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]]) #ENDIF scLB_DisplayedData.iSectionEntries[iSection]++ println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] ) ENDIF ENDIF ELSE IF scLB_DisplayedData.iSectionEntries[iSection] < 11 //Get data about row outside of getting data for each column? scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].tl23_ParticipantName = initRowData.m_GamerName scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].playerGamerHandle = initRowData.m_GamerHandle IF IS_SC_LEADERBOARD_A_RACE(scLB_control.ReadDataStruct.m_LeaderboardId) println("LEADERBOARDS2_READ_GET_ROW_DATA_INT: Row: ", i, " Column: ", scLB_DisplayedData.iCustomVehicleColumn) iCustomCar = LEADERBOARDS2_READ_GET_ROW_DATA_INT(i,scLB_DisplayedData.iCustomVehicleColumn) IF iCustomCar = 1 scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bCustomVehicle = TRUE ELSE scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bCustomVehicle = FALSE ENDIF ENDIF IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId) println("CODRIVER - initRowData.m_GroupSelector.m_Group[1].m_Id= ", initRowData.m_GroupSelector.m_Group[1].m_Id) scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].tl31_CoDriver = initRowData.m_GroupSelector.m_Group[1].m_Id ENDIF scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = initRowData.m_Rank scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bValidData = TRUE j = 0 REPEAT scLB_DisplayedData.iNumNonRankColumnsToDisplay j println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", i, " Column: ", scLB_DisplayedData.iReadColumns[j]) IF IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[j]) //IF IS_LEADERBOARD_COLUMN_INT(scLB_control.ReadDataStruct.m_LeaderboardId,scLB_Control.ReadDataStruct.m_Type,scLB_DisplayedData.iReadColumns[j]) scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[j] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(i, scLB_DisplayedData.iReadColumns[j]) #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Radius around player",i,scLB_DisplayedData.iReadColumns[j], scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[j],0.0,FALSE ) #ENDIF ELSE scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[j] = LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(i, scLB_DisplayedData.iReadColumns[j]) #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Radius around player",i,scLB_DisplayedData.iReadColumns[j], 0,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[j],TRUE ) #ENDIF ENDIF ENDREPEAT IF i != 0 //iOffsetRank = GET_OFFSET_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(iSection,sclb_rank_predict.iRankBeforePrediction) //scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank + iOffsetRank //println(funcName,": rank prediction offseting rank by: ", iOffsetRank) #IF IS_DEBUG_BUILD PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]]) #ENDIF scLB_DisplayedData.iSectionEntries[iSection]++ println(funcName,": adding data to global section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] ) ENDIF ENDIF ENDIF ENDIF ENDIF CLEAR_ROW_DATA_INFO_STRUCT(initRowData) //println("Looping through global data end loop counter: ", i) ENDREPEAT ENDIF LEADERBOARDS2_READ_GET_ROW_DATA_END( ) END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct) println(funcName," -- moving to stage 2 grabbed ") scLB_control.iLoadStage[iSection] = 2 ELSE SET_BIT(scLB_DisplayedData.iReadFailedBS,iSection) println(funcName," -- moving to end no one in first so no data at all (READ FAILED) ") //LEADERBOARDS2_READ_GET_ROW_DATA_END( ) END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct) scLB_DisplayedData.iSectionEntries[iSection] = 0 scLB_control.iLoadStage[iSection] = 2 scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND] = 0 scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] = 1 scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_CREW] = 0 scLB_control.iLoadStage[SC_LB_SECTION_CREW] = 3 ENDIF ENDIF IF scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1 AND IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() IF scLB_DisplayedData.iSectionEntries[iSection] >= 1 FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]], scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]-1].iRank+1#IF IS_DEBUG_BUILD ,funcName,iSection #endif ) ELSE FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]], 1#IF IS_DEBUG_BUILD ,funcName,iSection #endif ) ENDIF scLB_DisplayedData.iPlayerIndexForSection[iSection] = scLB_DisplayedData.iSectionEntries[iSection] println(funcName, "Adding player to index ", scLB_DisplayedData.iPlayerIndexForSection[iSection]) #IF IS_DEBUG_BUILD PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]]) #ENDIF scLB_DisplayedData.iSectionEntries[iSection]++ println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] ) ENDIF BREAK //Finished CASE 2 println(funcName,": doing rank offset for prediction. Player's rank before prediction = ",sclb_rank_predict.iRankBeforePrediction ) CALCULATE_OFFSETS_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(iSection,sclb_rank_predict.iRankBeforePrediction) scLB_control.iLoadStage[iSection] = 3 BREAK CASE 3 RETURN TRUE BREAK ENDSWITCH RETURN FALSE ENDFUNC //Friend read //Get all friend data including player - READ 1 // //Loop through all friend data. // Store rank 1 // // Loop through until you find player then get rows above/below // (there is probably a nicer way to do this but just to get things working again) FUNC BOOL SOCIAL_CLUB_GET_FRIEND_LB_DATA(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control ) //Leaderboard2ReadData emptyStruct //LeaderboardRowData tempRowData[1] LeaderboardRowData initRowData LeaderboardReadInfo readInfo INT i//, j INT iNumOfFriends INT iPlayerRow = -1 //INT iTotalRows INT iRowStart INT iIndex INT iCustomCar BOOL bIncludeLocalPlayer #IF IS_DEBUG_BUILD STRING funcName = "SOCIAL_CLUB_GET_FRIEND_LB_DATA" #ENDIF INT iSection = SC_LB_SECTION_FRIEND //INT iOffsetRank GAMER_HANDLE localPlayerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID()) SWITCH scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] CASE 0 //getting information about local player iNumOfFriends = NETWORK_GET_FRIEND_COUNT() //inited to -1 scLB_DisplayedData.iPlayerIndexForSection[SC_LB_SECTION_FRIEND] = -1 sclb_rank_predict.iRankBeforePrediction = -1 scLB_DisplayedData.iSectionEntries[iSection] = 0 IF iNumOfFriends > 0 IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() bIncludeLocalPlayer= FALSE ELSE bIncludeLocalPlayer = TRUE ENDIF IF START_SC_LEADERBOARD_READ_FRIENDS_BY_ROW(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct,scLB_control.groupHandle,scLB_control.groupHandle[0].m_NumGroups,bIncludeLocalPlayer,0,100) #IF IS_DEBUG_BUILD DEBUG_START_LEADERBOARD_PRINT_RESULTS("SOCIAL_CLUB_GET_FRIEND_LB_DATA",scLB_control.ReadDataStruct) #ENDIF FILL_READ_INFO_STRUCT(readInfo,scLB_control.ReadDataStruct) IF scLB_control.bTempReadResult AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) println("SOCIAL_CLUB_GET_FRIEND_LB_DATA returned ",readInfo.m_ReturnedRows ," rows. local player row: ",readInfo.m_LocalGamerRowNumber) //RANK PREDICTION IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() iIndex = 0 REPEAT readInfo.m_ReturnedRows iIndex IF iPlayerRow < 0 LEADERBOARDS2_READ_GET_ROW_DATA_INFO(iIndex, initRowData) IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId) IF sclb_rank_predict.iRankBeforePrediction < 0 ///IF ARE_STRINGS_EQUAL(initRowData.m_GamerName,sclb_rank_predict.driverName) IF SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,sclb_rank_predict.driverHandle) sclb_rank_predict.iRankBeforePrediction = initRowData.m_Rank println(funcName, " setting players rank before prediction = ",sclb_rank_predict.iRankBeforePrediction) ENDIF ENDIF ENDIF IF IS_BIT_SET(sclb_rank_predict.currentResult.m_ColumnsBitSets,0) println("Players score: ", sclb_rank_predict.combinedResult.m_iColumnData[0]) println("Returned Row# ",iIndex, " score: ", LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, 0)) IF sclb_rank_predict.combinedResult.m_iColumnData[0] >= LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, 0) iPlayerRow = iIndex println(funcName, " Players score is higher than returned result setting player row to ", iPlayerRow) ENDIF ELSE println("Players score: ", sclb_rank_predict.combinedResult.m_fColumnData[0]) println("Returned Row# ",iIndex, " score: ", LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(iIndex, 0)) IF sclb_rank_predict.combinedResult.m_fColumnData[0] >= LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(iIndex, 0) iPlayerRow = iIndex println(funcName, " Players score is higher than returned result setting player row to ", iPlayerRow) ENDIF ENDIF CLEAR_ROW_DATA_INFO_STRUCT(initRowData) ENDIF ENDREPEAT IF iPlayerRow < 0 iPlayerRow = readInfo.m_ReturnedRows ENDIF ENDIF iIndex = 0 //1st Place IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() AND iPlayerRow = 0 IF scLB_DisplayedData.iSectionEntries[iSection] < 11 FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]],1#IF IS_DEBUG_BUILD ,funcName,iSection #endif ) //iPlayerRow = 0 scLB_DisplayedData.iPlayerIndexForSection[iSection] = 0 #IF IS_DEBUG_BUILD PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]]) #ENDIF scLB_DisplayedData.iSectionEntries[iSection]++ println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] ) ENDIF ENDIF IF readInfo.m_ReturnedRows > 0 LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData) IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() //AND (ARE_STRINGS_EQUAL(initRowData.m_GamerName, GET_PLAYER_NAME(PLAYER_ID())) //OR ARE_STRINGS_EQUAL(initRowData.m_GamerName,sclb_rank_predict.driverName)) AND (SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle) OR SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,sclb_rank_predict.driverHandle)) ELSE //1st Place //Get data about row outside of getting data for each column? //IF NOT ARE_STRINGS_EQUAL(initRowData.m_GamerName, "") //AND scLB_DisplayedData.iSectionEntries[iSection] < 12 //IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, GET_PLAYER_NAME(PLAYER_ID())) IF IS_GAMER_HANDLE_VALID(initRowData.m_GamerHandle) AND scLB_DisplayedData.iSectionEntries[iSection] < 11 IF SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle) iPlayerRow = 0 scLB_DisplayedData.iPlayerIndexForSection[SC_LB_SECTION_FRIEND] = 0 ENDIF scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[iSection]].tl23_ParticipantName = initRowData.m_GamerName scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[iSection]].playerGamerHandle = initRowData.m_GamerHandle scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[iSection]].iRank = 1 IF IS_SC_LEADERBOARD_A_RACE(scLB_control.ReadDataStruct.m_LeaderboardId) println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", scLB_DisplayedData.iSectionEntries[iSection], " Column: ", scLB_DisplayedData.iCustomVehicleColumn) iCustomCar = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0,scLB_DisplayedData.iCustomVehicleColumn) IF iCustomCar = 1 scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[iSection]].bCustomVehicle = TRUE ELSE scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[iSection]].bCustomVehicle = FALSE ENDIF ENDIF IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId) println("CODRIVER - initRowData.m_GroupSelector.m_Group[1].m_Id= ", initRowData.m_GroupSelector.m_Group[1].m_Id) scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[iSection]].tl31_CoDriver = initRowData.m_GroupSelector.m_Group[1].m_Id ENDIF scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[iSection]].bValidData = TRUE REPEAT scLB_DisplayedData.iNumNonRankColumnsToDisplay i println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", scLB_DisplayedData.iSectionEntries[iSection], " Column: ", scLB_DisplayedData.iReadColumns[i]) IF IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[i]) //IF IS_LEADERBOARD_COLUMN_INT(scLB_control.ReadDataStruct.m_LeaderboardId,scLB_Control.ReadDataStruct.m_Type,scLB_DisplayedData.iReadColumns[i]) scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[i] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, scLB_DisplayedData.iReadColumns[i]) #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES("SOCIAL_CLUB_GET_FRIEND_LB_DATA","row: ",scLB_DisplayedData.iSectionEntries[iSection],scLB_DisplayedData.iReadColumns[i], scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[i],0.0,FALSE ) #ENDIF ELSE scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[i] = LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(0, scLB_DisplayedData.iReadColumns[i]) #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES("SOCIAL_CLUB_GET_FRIEND_LB_DATA","row: ",scLB_DisplayedData.iSectionEntries[iSection],scLB_DisplayedData.iReadColumns[i], 0,scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[i],TRUE ) #ENDIF ENDIF ENDREPEAT //iOffsetRank = GET_OFFSET_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(iSection,sclb_rank_predict.iRankBeforePrediction) //scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank + iOffsetRank //println(funcName,": rank prediction offseting rank by: ", iOffsetRank) #IF IS_DEBUG_BUILD PRINT_ROW_DATA(scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[iSection]]) #ENDIF scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND]++ println("SOCIAL_CLUB_GET_FRIEND_LB_DATA: adding data to section number of entries now (FIRST) : ",scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND] ) ELSE CLEAR_ROW_DATA_INFO_STRUCT(initRowData) LEADERBOARDS2_READ_GET_ROW_DATA_END( ) END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct) println("SOCIAL_CLUB_GET_FRIEND_LB_DATA no friends data skiping to end stage 1 (no one in 1st)") scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND] = 0 scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] = 1 IF scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1 AND IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() IF scLB_DisplayedData.iSectionEntries[iSection] >= 1 FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]], scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]-1].iRank+1#IF IS_DEBUG_BUILD ,funcName,iSection #endif ) ELSE FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]], 1#IF IS_DEBUG_BUILD ,funcName,iSection #endif ) ENDIF scLB_DisplayedData.iPlayerIndexForSection[iSection] = scLB_DisplayedData.iSectionEntries[iSection] println(funcName, "Adding player to index ", scLB_DisplayedData.iPlayerIndexForSection[iSection]) #IF IS_DEBUG_BUILD PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]]) #ENDIF scLB_DisplayedData.iSectionEntries[iSection]++ println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] ) ENDIF RETURN FALSE ENDIF ENDIF CLEAR_ROW_DATA_INFO_STRUCT(initRowData) ELSE //IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() // FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(funcName,scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]],1) // scLB_DisplayedData.iPlayerIndexForSection[iSection] = scLB_DisplayedData.iSectionEntries[iSection] // println(funcName, "Adding player to index ", scLB_DisplayedData.iPlayerIndexForSection[iSection]) // #IF IS_DEBUG_BUILD // PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]]) // #ENDIF // scLB_DisplayedData.iSectionEntries[iSection]++ // println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] ) //ELSE scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND] = 0 println("SOCIAL_CLUB_GET_FRIEND_LB_DATA no friends data skiping to end stage 1 (no one in 1st no row returned)") //ENDIF CLEAR_ROW_DATA_INFO_STRUCT(initRowData) LEADERBOARDS2_READ_GET_ROW_DATA_END( ) END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct) IF scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1 AND IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() IF scLB_DisplayedData.iSectionEntries[iSection] >= 1 FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]], scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]-1].iRank+1#IF IS_DEBUG_BUILD ,funcName,iSection #endif ) ELSE FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]], 1#IF IS_DEBUG_BUILD ,funcName,iSection #endif ) ENDIF scLB_DisplayedData.iPlayerIndexForSection[iSection] = scLB_DisplayedData.iSectionEntries[iSection] println(funcName, "Adding player to index ", scLB_DisplayedData.iPlayerIndexForSection[iSection]) #IF IS_DEBUG_BUILD PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]]) #ENDIF scLB_DisplayedData.iSectionEntries[iSection]++ println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] ) ENDIF scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] = 1 RETURN FALSE ENDIF IF NOT IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() iPlayerRow = readInfo.m_LocalGamerRowNumber ENDIF //IF iPlayerRow = -1 //OR iPlayerRow < 7 // iRankStart = 2 //ELSE IF iPlayerRow > 6 iRowStart = iPlayerRow - 6 ELSE iRowStart = 1 ENDIF //ENDIF iIndex = iRowStart println(funcName, " iRowStart = ", iRowStart) FOR iIndex = iRowStart TO readInfo.m_ReturnedRows-1 println(funcName, ": looking at details for returned row of index: ",iIndex, " columnBS: ",scLB_DisplayedData.iReadColumnIsIntBS) LEADERBOARDS2_READ_GET_ROW_DATA_INFO(iIndex, initRowData) IF scLB_DisplayedData.iSectionEntries[iSection] < 11 AND initRowData.m_Rank > 1 //Get data about row outside of getting data for each column? IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() AND iPlayerRow = iIndex //IF NOT ARE_STRINGS_EQUAL(scLB_DisplayedData.rowData[iSection][0].tl23_ParticipantName,GET_PLAYER_NAME(PLAYER_ID())) IF NOT SCLB_CHECK_HANDLES_ARE_THE_SAME(scLB_DisplayedData.rowData[iSection][0].playerGamerHandle,localPlayerHandle) FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]],initRowData.m_Rank #IF IS_DEBUG_BUILD ,funcName,iSection #endif ) scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND]].iRank = iIndex +1 scLB_DisplayedData.iPlayerIndexForSection[iSection] = scLB_DisplayedData.iSectionEntries[iSection] println(funcName, "Adding player to index ", scLB_DisplayedData.iPlayerIndexForSection[iSection]) #IF IS_DEBUG_BUILD PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]]) #ENDIF scLB_DisplayedData.iSectionEntries[iSection]++ println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] ) ENDIF ENDIF IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() //AND (ARE_STRINGS_EQUAL(initRowData.m_GamerName, GET_PLAYER_NAME(PLAYER_ID())) //OR ARE_STRINGS_EQUAL(initRowData.m_GamerName,sclb_rank_predict.driverName)) AND (SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle) OR SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,sclb_rank_predict.driverHandle)) ELSE IF scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND] < 12 //IF NOT ARE_STRINGS_EQUAL(initRowData.m_GamerName, "") //AND NOT ARE_STRINGS_EQUAL(scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][0].tl23_ParticipantName,initRowData.m_GamerName) //IF ARE_STRINGS_EQUAL(GET_PLAYER_NAME(PLAYER_ID()),initRowData.m_GamerName) IF IS_GAMER_HANDLE_VALID(initRowData.m_GamerHandle) AND NOT SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,scLB_DisplayedData.rowData[iSection][0].playerGamerHandle) IF SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle) IF scLB_DisplayedData.iPlayerIndexForSection[SC_LB_SECTION_FRIEND] < 0 scLB_DisplayedData.iPlayerIndexForSection[SC_LB_SECTION_FRIEND] = scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND] ENDIF ENDIF scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND]].tl23_ParticipantName = initRowData.m_GamerName scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND]].playerGamerHandle = initRowData.m_GamerHandle scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND]].iRank = iIndex +1 scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND]].bValidData = TRUE IF IS_SC_LEADERBOARD_A_RACE(scLB_control.ReadDataStruct.m_LeaderboardId) println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", iIndex, " Column: ", scLB_DisplayedData.iCustomVehicleColumn) iCustomCar = LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, scLB_DisplayedData.iCustomVehicleColumn) IF iCustomCar = 1 scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND]].bCustomVehicle = TRUE ELSE scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND]].bCustomVehicle = FALSE ENDIF ENDIF IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId) println("CODRIVER- initRowData.m_GroupSelector.m_Group[1].m_Id= ", initRowData.m_GroupSelector.m_Group[1].m_Id) scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND]].tl31_CoDriver = initRowData.m_GroupSelector.m_Group[1].m_Id ENDIF REPEAT scLB_DisplayedData.iNumNonRankColumnsToDisplay i println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", iIndex, " Column: ", scLB_DisplayedData.iReadColumns[i]) IF IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[i]) //IF IS_LEADERBOARD_COLUMN_INT(scLB_control.ReadDataStruct.m_LeaderboardId,scLB_Control.ReadDataStruct.m_Type,scLB_DisplayedData.iReadColumns[i]) scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND]].iColumnData[i] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, scLB_DisplayedData.iReadColumns[i]) #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES("SOCIAL_CLUB_GET_FRIEND_LB_DATA","Radius around player",iIndex,scLB_DisplayedData.iReadColumns[i], scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][0].iColumnData[i],0.0,FALSE ) #ENDIF ELSE scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND]].fColumnData[i] = LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(iIndex, scLB_DisplayedData.iReadColumns[i]) #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES("SOCIAL_CLUB_GET_FRIEND_LB_DATA","Radius around player",iIndex,scLB_DisplayedData.iReadColumns[i], 0,scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][0].fColumnData[i],TRUE ) #ENDIF ENDIF ENDREPEAT //iOffsetRank = GET_OFFSET_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(iSection,sclb_rank_predict.iRankBeforePrediction) //scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank + iOffsetRank //println(funcName,": rank prediction offseting rank by: ", iOffsetRank) #IF IS_DEBUG_BUILD PRINT_ROW_DATA(scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND]]) #ENDIF scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND]++ println("SOCIAL_CLUB_GET_FRIEND_LB_DATA: (IN LOOP) adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND] ) ENDIF ENDIF ENDIF ENDIF CLEAR_ROW_DATA_INFO_STRUCT(initRowData) ENDFOR LEADERBOARDS2_READ_GET_ROW_DATA_END( ) END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct) println("SOCIAL_CLUB_GET_FRIEND_LB_DATA -- moving to stage 1") scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] = 1 IF scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1 AND IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() IF scLB_DisplayedData.iSectionEntries[iSection] >= 1 FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]], scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]-1].iRank+1#IF IS_DEBUG_BUILD ,funcName,iSection #endif ) ELSE FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]], 1#IF IS_DEBUG_BUILD ,funcName,iSection #endif ) ENDIF scLB_DisplayedData.iPlayerIndexForSection[iSection] = scLB_DisplayedData.iSectionEntries[iSection] println(funcName, "Adding player to index ", scLB_DisplayedData.iPlayerIndexForSection[iSection]) #IF IS_DEBUG_BUILD PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]]) #ENDIF scLB_DisplayedData.iSectionEntries[iSection]++ println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] ) ENDIF RETURN FALSE ELSE END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct) scLB_DisplayedData.iSectionEntries[1] = 0 scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] = 1 SET_BIT(scLB_DisplayedData.iReadFailedBS,SC_LB_SECTION_FRIEND) println("SOCIAL_CLUB_GET_FRIEND_LB_DATA"," -- moving to end no one in first so no data at all (READ FAILED) ") RETURN FALSE ENDIF ENDIF ELSE println("SOCIAL_CLUB_GET_FRIEND_LB_DATA no friends data skiping to end stage 1 (friend count is 0)") END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct) scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND] = 0 scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] = 1 RETURN FALSE ENDIF BREAK CASE 1 println(funcName,": doing rank offset for prediction" ) CALCULATE_OFFSETS_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(iSection,sclb_rank_predict.iRankBeforePrediction) scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] = 2 BREAK CASE 2 RETURN TRUE BREAK ENDSWITCH RETURN FALSE ENDFUNC FUNC BOOL SOCIAL_CLUB_GET_CREW_LB_DATA(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control ) //GAMER_HANDLE gamerHandle LeaderboardRowData initRowData LeaderboardReadInfo readInfo //INT iRankStart INT i, j INT iCustomCar INT iPlayerRow = -1 INT iRowStart INT iIndex // BOOL bRankOneInRadius #IF IS_DEBUG_BUILD STRING funcName = "SOCIAL_CLUB_GET_CREW_LB_DATA" #ENDIF INT iSection = SC_LB_SECTION_CREW BOOL bReplaceFirstSlot INT iRankRowsToRead //INT iOffsetRank GAMER_HANDLE localPlayerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID()) SWITCH scLB_control.iLoadStage[iSection] CASE 0 scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1 scLB_DisplayedData.iSectionEntries[iSection] = 0 sclb_rank_predict.iRankBeforePrediction = -1 IF NETWORK_CLAN_SERVICE_IS_VALID() //gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID()) IF NETWORK_CLAN_PLAYER_IS_ACTIVE(localPlayerHandle) IF NETWORK_CLAN_PLAYER_GET_DESC(scLB_control.localPlayerClanInfo, SIZE_OF(scLB_control.localPlayerClanInfo), localPlayerHandle) println(funcName," moving to stage 1 ") scLB_control.ReadDataStruct.m_ClanId = scLB_control.localPlayerClanInfo.Id scLB_control.ReadDataStruct.m_type = LEADERBOARD2_TYPE_CLAN_MEMBER scLB_control.iLoadStage[iSection] = 1 RETURN FALSE ENDIF ELSE println(funcName," moving to stage 3 NETWORK_CLAN_PLAYER_IS_ACTIVE is false") scLB_control.iLoadStage[iSection] = 3 RETURN TRUE ENDIF ELSE println(funcName," moving to stage 3 NETWORK_CLAN_SERVICE_IS_VALID is false") scLB_control.iLoadStage[iSection] = 3 RETURN TRUE ENDIF BREAK //radius around player CASE 1 //gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID()) scLB_control.ReadDataStruct.m_type = LEADERBOARD2_TYPE_CLAN_MEMBER readInfo.m_LeaderboardId = scLB_control.ReadDataStruct.m_LeaderboardId readInfo.m_LeaderboardType = ENUM_TO_INT(scLB_control.ReadDataStruct.m_type) IF START_SC_LEADERBOARD_READ_BY_RADIUS(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct,11,localPlayerHandle,IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()) #IF IS_DEBUG_BUILD DEBUG_START_LEADERBOARD_PRINT_RESULTS(funcName,scLB_control.ReadDataStruct) #ENDIF FILL_READ_INFO_STRUCT(readInfo,scLB_control.ReadDataStruct) IF scLB_control.bTempReadResult AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) println(funcName, ":readInfo.m_LocalGamerRowNumber = ",readInfo.m_LocalGamerRowNumber) IF readInfo.m_ReturnedRows > 0 iIndex = 0 i = 0 //RANK PREDICTION IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() REPEAT readInfo.m_ReturnedRows iIndex LEADERBOARDS2_READ_GET_ROW_DATA_INFO(iIndex, initRowData) IF sclb_rank_predict.iRankBeforePrediction < 0 //IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, GET_PLAYER_NAME(PLAYER_ID())) //OR ARE_STRINGS_EQUAL(initRowData.m_GamerName,sclb_rank_predict.driverName) IF SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle) OR SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,sclb_rank_predict.driverHandle) sclb_rank_predict.iRankBeforePrediction = initRowData.m_Rank println(funcName, " setting players rank before prediction = ",sclb_rank_predict.iRankBeforePrediction) ENDIF ENDIF IF iPlayerRow < 0 IF IS_BIT_SET(sclb_rank_predict.currentResult.m_ColumnsBitSets,0) println("Players score: ", sclb_rank_predict.combinedResult.m_iColumnData[0]) println("Returned Row# ",iIndex, " score: ", LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, 0)) IF sclb_rank_predict.combinedResult.m_iColumnData[0] >= LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, 0) iPlayerRow = iIndex println(funcName, " Players score is higher than returned result setting player row to ", iPlayerRow) ENDIF ELSE println("Players score: ", sclb_rank_predict.combinedResult.m_fColumnData[0]) println("Returned Row# ",iIndex, " score: ", LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(iIndex, 0)) IF sclb_rank_predict.combinedResult.m_fColumnData[0] >= LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(iIndex, 0) iPlayerRow = iIndex println(funcName, " Players score is higher than returned result setting player row to ", iPlayerRow) ENDIF ENDIF ENDIF CLEAR_ROW_DATA_INFO_STRUCT(initRowData) ENDREPEAT IF iPlayerRow < 0 iPlayerRow = readInfo.m_ReturnedRows ENDIF ENDIF iIndex = 0 LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData) IF initRowData.m_Rank <= 1 //OR (iPlayerRow = 0 AND initRowData.m_Rank <= 2) println(funcName, ": Rank 1 included in radius search grabbing now") IF scLB_DisplayedData.iSectionEntries[iSection] < 11 IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() AND iPlayerRow = 0 FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]],initRowData.m_Rank#IF IS_DEBUG_BUILD ,funcName,iSection #endif ) //iPlayerRow = 0 scLB_DisplayedData.iPlayerIndexForSection[iSection] = 0 #IF IS_DEBUG_BUILD PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]]) #ENDIF println(funcName, "Adding player to index ", scLB_DisplayedData.iPlayerIndexForSection[iSection]) scLB_DisplayedData.iSectionEntries[iSection]++ println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] ) ENDIF IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() //AND (ARE_STRINGS_EQUAL(initRowData.m_GamerName, GET_PLAYER_NAME(PLAYER_ID())) //OR ARE_STRINGS_EQUAL(initRowData.m_GamerName,sclb_rank_predict.driverName)) AND (SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle) OR SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,sclb_rank_predict.driverHandle)) ELSE //1st Place //IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, GET_PLAYER_NAME(PLAYER_ID())) IF SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle) iPlayerRow = 0 scLB_DisplayedData.iPlayerIndexForSection[iSection] = 0 ENDIF scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].tl23_ParticipantName = initRowData.m_GamerName scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].playerGamerHandle = initRowData.m_GamerHandle scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = initRowData.m_Rank IF IS_SC_LEADERBOARD_A_RACE(scLB_control.ReadDataStruct.m_LeaderboardId) println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", scLB_DisplayedData.iSectionEntries[iSection], " Column: ", scLB_DisplayedData.iCustomVehicleColumn) iCustomCar = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0,scLB_DisplayedData.iCustomVehicleColumn) IF iCustomCar = 1 scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bCustomVehicle = TRUE ELSE scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bCustomVehicle = FALSE ENDIF ENDIF IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId) println("CODRIVER - initRowData.m_GroupSelector.m_Group[1].m_Id= ", initRowData.m_GroupSelector.m_Group[1].m_Id) scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].tl31_CoDriver = initRowData.m_GroupSelector.m_Group[1].m_Id ENDIF scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bValidData = TRUE j = 0 REPEAT scLB_DisplayedData.iNumNonRankColumnsToDisplay j println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", scLB_DisplayedData.iSectionEntries[iSection], " Column: ", scLB_DisplayedData.iReadColumns[j]) IF IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[j]) //IF IS_LEADERBOARD_COLUMN_INT(scLB_control.ReadDataStruct.m_LeaderboardId,scLB_Control.ReadDataStruct.m_Type,scLB_DisplayedData.iReadColumns[i]) scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[j] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, scLB_DisplayedData.iReadColumns[j]) #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Row: ",scLB_DisplayedData.iSectionEntries[iSection],scLB_DisplayedData.iReadColumns[j], scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[j],0.0,FALSE ) #ENDIF ELSE scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[j] = LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(0, scLB_DisplayedData.iReadColumns[j]) #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Row: ",scLB_DisplayedData.iSectionEntries[iSection],scLB_DisplayedData.iReadColumns[j], 0,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[j],TRUE ) #ENDIF ENDIF ENDREPEAT //iOffsetRank = GET_OFFSET_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(iSection,sclb_rank_predict.iRankBeforePrediction) //scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank + iOffsetRank //println(funcName,": rank prediction offseting rank by: ", iOffsetRank) #IF IS_DEBUG_BUILD PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]]) #ENDIF scLB_DisplayedData.iSectionEntries[iSection]++ println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] ) ENDIF bRankOneInRadius = TRUE ENDIF ENDIF IF NOT bRankOneInRadius scLB_DisplayedData.iSectionEntries[iSection]++ println(funcName,": adding data to section number of entries now (FAKE TO ALLOW 1st PLACE LATER) : ",scLB_DisplayedData.iSectionEntries[iSection] ) ENDIF IF NOT IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() iPlayerRow = readInfo.m_LocalGamerRowNumber ENDIF IF iPlayerRow > 6 iRowStart = iPlayerRow - 6 ELSE IF bRankOneInRadius iRowStart = 1 ELSE iRowStart = 0 ENDIF ENDIF iIndex = iRowStart CLEAR_ROW_DATA_INFO_STRUCT(initRowData) FOR iIndex = iRowStart TO readInfo.m_ReturnedRows-1 LEADERBOARDS2_READ_GET_ROW_DATA_INFO(iIndex, initRowData) //Get data about row outside of getting data for each column? IF scLB_DisplayedData.iSectionEntries[iSection] < 11 AND initRowData.m_Rank > 1 IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() AND iPlayerRow = iIndex //IF NOT ARE_STRINGS_EQUAL(scLB_DisplayedData.rowData[iSection][0].tl23_ParticipantName,GET_PLAYER_NAME(PLAYER_ID())) IF NOT SCLB_CHECK_HANDLES_ARE_THE_SAME(scLB_DisplayedData.rowData[iSection][0].playerGamerHandle,localPlayerHandle) FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]],initRowData.m_Rank #IF IS_DEBUG_BUILD ,funcName,iSection #endif ) scLB_DisplayedData.iPlayerIndexForSection[iSection] = scLB_DisplayedData.iSectionEntries[iSection] println(funcName, "Adding player to index ", scLB_DisplayedData.iPlayerIndexForSection[iSection]) #IF IS_DEBUG_BUILD PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]]) #ENDIF scLB_DisplayedData.iSectionEntries[iSection]++ println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] ) ENDIF ENDIF //if we are using rank prediction there is no record for local player so its an extra one in the middle IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() //AND (ARE_STRINGS_EQUAL(initRowData.m_GamerName, GET_PLAYER_NAME(PLAYER_ID())) //OR ARE_STRINGS_EQUAL(initRowData.m_GamerName,sclb_rank_predict.driverName)) AND (SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle) OR SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,sclb_rank_predict.driverHandle)) ELSE IF scLB_DisplayedData.iSectionEntries[iSection] < 11 //IF NOT ARE_STRINGS_EQUAL(initRowData.m_GamerName, "") //AND NOT ARE_STRINGS_EQUAL(scLB_DisplayedData.rowData[iSection][0].tl23_ParticipantName,initRowData.m_GamerName) //IF ARE_STRINGS_EQUAL(GET_PLAYER_NAME(PLAYER_ID()),initRowData.m_GamerName) IF IS_GAMER_HANDLE_VALID(initRowData.m_GamerHandle) AND NOT SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,scLB_DisplayedData.rowData[iSection][0].playerGamerHandle) IF SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle) IF scLB_DisplayedData.iPlayerIndexForSection[iSection] < 0 scLB_DisplayedData.iPlayerIndexForSection[iSection] = scLB_DisplayedData.iSectionEntries[iSection] println(funcName, "Adding player to index ", scLB_DisplayedData.iPlayerIndexForSection[iSection]) ENDIF ENDIF scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].tl23_ParticipantName = initRowData.m_GamerName scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].playerGamerHandle = initRowData.m_GamerHandle scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = initRowData.m_Rank scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bValidData = TRUE IF IS_SC_LEADERBOARD_A_RACE(scLB_control.ReadDataStruct.m_LeaderboardId) println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", iIndex, " Column: ", scLB_DisplayedData.iCustomVehicleColumn) iCustomCar = LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, scLB_DisplayedData.iCustomVehicleColumn) IF iCustomCar = 1 scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bCustomVehicle = TRUE ELSE scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bCustomVehicle = FALSE ENDIF ENDIF IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId) println("CODRIVER - initRowData.m_GroupSelector.m_Group[1].m_Id= ", initRowData.m_GroupSelector.m_Group[1].m_Id) scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].tl31_CoDriver = initRowData.m_GroupSelector.m_Group[1].m_Id ENDIF i = 0 REPEAT scLB_DisplayedData.iNumNonRankColumnsToDisplay i println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", iIndex, " Column: ", scLB_DisplayedData.iReadColumns[i]) IF IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[i]) //IF IS_LEADERBOARD_COLUMN_INT(scLB_control.ReadDataStruct.m_LeaderboardId,scLB_Control.ReadDataStruct.m_Type,scLB_DisplayedData.iReadColumns[i]) scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[i] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, scLB_DisplayedData.iReadColumns[i]) #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Radius around player",iIndex,scLB_DisplayedData.iReadColumns[i], scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[i],0.0,FALSE ) #ENDIF ELSE scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[i] = LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(iIndex, scLB_DisplayedData.iReadColumns[i]) #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Radius around player",iIndex,scLB_DisplayedData.iReadColumns[i], 0,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[i],TRUE ) #ENDIF ENDIF ENDREPEAT //iOffsetRank = GET_OFFSET_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(iSection,sclb_rank_predict.iRankBeforePrediction) //scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank + iOffsetRank //println(funcName,": rank prediction offseting rank by: ", iOffsetRank) #IF IS_DEBUG_BUILD PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]]) #ENDIF scLB_DisplayedData.iSectionEntries[iSection]++ println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] ) ENDIF ENDIF ENDIF ENDIF CLEAR_ROW_DATA_INFO_STRUCT(initRowData) ENDFOR LEADERBOARDS2_READ_GET_ROW_DATA_END( ) END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct) IF bRankOneInRadius println(funcName," --Rank 1 included in radius-- moving to stage 3 grabbed ") IF scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1 AND IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() IF scLB_DisplayedData.iSectionEntries[iSection] >= 1 FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]], scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]-1].iRank+1#IF IS_DEBUG_BUILD ,funcName,iSection #endif ) ELSE FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]], 1#IF IS_DEBUG_BUILD ,funcName,iSection #endif ) ENDIF scLB_DisplayedData.iPlayerIndexForSection[iSection] = scLB_DisplayedData.iSectionEntries[iSection] println(funcName, "Adding player to index ", scLB_DisplayedData.iPlayerIndexForSection[iSection]) #IF IS_DEBUG_BUILD PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]]) #ENDIF scLB_DisplayedData.iSectionEntries[iSection]++ println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] ) ENDIF scLB_control.iLoadStage[iSection] = 3 ELSE println(funcName," -- moving to stage 2 grabbed ") scLB_control.iLoadStage[iSection] = 2 ENDIF ELSE IF NOT bRankOneInRadius scLB_DisplayedData.iSectionEntries[iSection]++ println(funcName,": adding data to section number of entries now (FAKE TO ALLOW 1st PLACE LATER) : ",scLB_DisplayedData.iSectionEntries[iSection] ) ENDIF LEADERBOARDS2_READ_GET_ROW_DATA_END( ) END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct) scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1 scLB_control.iLoadStage[iSection] = 2 println(funcName," -- no data available for local player moving to stage 2(returned rows is 0)") ENDIF ELSE //LEADERBOARDS2_READ_GET_ROW_DATA_END( ) END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct) scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1 scLB_control.iLoadStage[iSection] = 2 SET_BIT(scLB_DisplayedData.iReadFailedBS,iSection) println(funcName," -- no data available for local player moving to stage 2 (read failed)") ENDIF ENDIF BREAK CASE 2 //ENDIF IF scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1 iRankRowsToRead = 11 ELSE iRankRowsToRead = 1 ENDIF //gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID()) scLB_control.ReadDataStruct.m_type = LEADERBOARD2_TYPE_CLAN_MEMBER readInfo.m_LeaderboardId = scLB_control.ReadDataStruct.m_LeaderboardId readInfo.m_LeaderboardType = ENUM_TO_INT(scLB_control.ReadDataStruct.m_type) IF START_SC_LEADERBOARD_READ_BY_RANK(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct, 1,iRankRowsToRead) #IF IS_DEBUG_BUILD DEBUG_START_LEADERBOARD_PRINT_RESULTS(funcName,scLB_control.ReadDataStruct) #ENDIF FILL_READ_INFO_STRUCT(readInfo,scLB_control.ReadDataStruct) IF scLB_control.bTempReadResult AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) IF readInfo.m_ReturnedRows > 0 REPEAT readInfo.m_ReturnedRows i println(funcName," start loop counter: ", i) LEADERBOARDS2_READ_GET_ROW_DATA_INFO(i, initRowData) bReplaceFirstSlot = FALSE IF scLB_DisplayedData.rowData[iSection][0].iRank > 1 OR scLB_DisplayedData.rowData[iSection][0].iRank <= 0 bReplaceFirstSlot = TRUE println(funcName," replacing slot 0 as rank 1 is not in") ENDIF IF scLB_DisplayedData.iSectionEntries[iSection] < 11 OR bReplaceFirstSlot IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() //AND (ARE_STRINGS_EQUAL(initRowData.m_GamerName, GET_PLAYER_NAME(PLAYER_ID())) //OR ARE_STRINGS_EQUAL(initRowData.m_GamerName,sclb_rank_predict.driverName)) AND (SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle) OR SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,sclb_rank_predict.driverHandle)) ELSE IF i = 0 OR bReplaceFirstSlot scLB_DisplayedData.rowData[iSection][0].tl23_ParticipantName = initRowData.m_GamerName scLB_DisplayedData.rowData[iSection][0].playerGamerHandle = initRowData.m_GamerHandle scLB_DisplayedData.rowData[iSection][0].iRank = initRowData.m_Rank IF IS_SC_LEADERBOARD_A_RACE(scLB_control.ReadDataStruct.m_LeaderboardId) println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", 0, " Column: ", scLB_DisplayedData.iCustomVehicleColumn) iCustomCar = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0,scLB_DisplayedData.iCustomVehicleColumn) IF iCustomCar = 1 scLB_DisplayedData.rowData[iSection][0].bCustomVehicle = TRUE ELSE scLB_DisplayedData.rowData[iSection][0].bCustomVehicle = FALSE ENDIF ENDIF IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId) println("CODRIVER - initRowData.m_GroupSelector.m_Group[1].m_Id= ", initRowData.m_GroupSelector.m_Group[1].m_Id) scLB_DisplayedData.rowData[iSection][0].tl31_CoDriver = initRowData.m_GroupSelector.m_Group[1].m_Id ENDIF scLB_DisplayedData.rowData[iSection][0].bValidData = TRUE j = 0 REPEAT scLB_DisplayedData.iNumNonRankColumnsToDisplay j println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", 0, " Column: ", scLB_DisplayedData.iReadColumns[j]) IF IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[j]) //IF IS_LEADERBOARD_COLUMN_INT(scLB_control.ReadDataStruct.m_LeaderboardId,scLB_Control.ReadDataStruct.m_Type,scLB_DisplayedData.iReadColumns[i]) scLB_DisplayedData.rowData[iSection][0].iColumnData[j] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, scLB_DisplayedData.iReadColumns[j]) #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Rank 1",0,scLB_DisplayedData.iReadColumns[j], scLB_DisplayedData.rowData[iSection][0].iColumnData[j],0.0,FALSE ) #ENDIF ELSE scLB_DisplayedData.rowData[iSection][0].fColumnData[j] = LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(0, scLB_DisplayedData.iReadColumns[j]) #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Row: ",0,scLB_DisplayedData.iReadColumns[j], 0,scLB_DisplayedData.rowData[iSection][0].fColumnData[j],TRUE ) #ENDIF ENDIF ENDREPEAT IF scLB_DisplayedData.iSectionEntries[iSection] = 0 //iOffsetRank = GET_OFFSET_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(iSection,sclb_rank_predict.iRankBeforePrediction) //scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank + iOffsetRank //println(funcName,": rank prediction offseting rank by: ", iOffsetRank) #IF IS_DEBUG_BUILD PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]]) #ENDIF IF bReplaceFirstSlot println(funcName,": Replacing first entry with rank 1 player as it was not included") ELSE scLB_DisplayedData.iSectionEntries[iSection]++ ENDIF println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] ) ENDIF ELSE IF scLB_DisplayedData.iSectionEntries[iSection] < 11 //Get data about row outside of getting data for each column? scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].tl23_ParticipantName = initRowData.m_GamerName scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].playerGamerHandle = initRowData.m_GamerHandle IF IS_SC_LEADERBOARD_A_RACE(scLB_control.ReadDataStruct.m_LeaderboardId) println("LEADERBOARDS2_READ_GET_ROW_DATA_INT: Row: ", i, " Column: ", scLB_DisplayedData.iCustomVehicleColumn) iCustomCar = LEADERBOARDS2_READ_GET_ROW_DATA_INT(i,scLB_DisplayedData.iCustomVehicleColumn) IF iCustomCar = 1 scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bCustomVehicle = TRUE ELSE scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bCustomVehicle = FALSE ENDIF ENDIF IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId) println("CODRIVER- initRowData.m_GroupSelector.m_Group[1].m_Id= ", initRowData.m_GroupSelector.m_Group[1].m_Id) scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].tl31_CoDriver = initRowData.m_GroupSelector.m_Group[1].m_Id ENDIF scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = initRowData.m_Rank scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bValidData = TRUE j = 0 REPEAT scLB_DisplayedData.iNumNonRankColumnsToDisplay j println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", i, " Column: ", scLB_DisplayedData.iReadColumns[j]) IF IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[j]) //IF IS_LEADERBOARD_COLUMN_INT(scLB_control.ReadDataStruct.m_LeaderboardId,scLB_Control.ReadDataStruct.m_Type,scLB_DisplayedData.iReadColumns[j]) scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[j] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(i, scLB_DisplayedData.iReadColumns[j]) #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Radius around player",i,scLB_DisplayedData.iReadColumns[j], scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[j],0.0,FALSE ) #ENDIF ELSE scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[j] = LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(i, scLB_DisplayedData.iReadColumns[j]) #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Radius around player",i,scLB_DisplayedData.iReadColumns[j], 0,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[j],TRUE ) #ENDIF ENDIF ENDREPEAT IF i != 0 //iOffsetRank = GET_OFFSET_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(iSection,sclb_rank_predict.iRankBeforePrediction) //scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank + iOffsetRank //println(funcName,": rank prediction offseting rank by: ", iOffsetRank) #IF IS_DEBUG_BUILD PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]]) #ENDIF scLB_DisplayedData.iSectionEntries[iSection]++ println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] ) ENDIF ENDIF ENDIF ENDIF ENDIF CLEAR_ROW_DATA_INFO_STRUCT(initRowData) //println("Looping through data end loop counter: ", i) ENDREPEAT ENDIF LEADERBOARDS2_READ_GET_ROW_DATA_END( ) END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct) println(funcName," -- moving to stage 3 grabbed ") scLB_control.iLoadStage[iSection] = 3 ELSE LEADERBOARDS2_READ_GET_ROW_DATA_END( ) END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct) SET_BIT(scLB_DisplayedData.iReadFailedBS,iSection) println(funcName," -- no data available for local player moving to stage 3 (read failed)") scLB_DisplayedData.iSectionEntries[iSection] = 0 scLB_control.iLoadStage[iSection] = 3 ENDIF IF scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1 AND IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() IF scLB_DisplayedData.iSectionEntries[iSection] >= 1 FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]], scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]-1].iRank+1 #IF IS_DEBUG_BUILD ,funcName,iSection #endif ) ELSE FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]], 1#IF IS_DEBUG_BUILD ,funcName,iSection #endif ) ENDIF scLB_DisplayedData.iPlayerIndexForSection[iSection] = scLB_DisplayedData.iSectionEntries[iSection] println(funcName, "Adding player to index ", scLB_DisplayedData.iPlayerIndexForSection[iSection]) #IF IS_DEBUG_BUILD PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]]) #ENDIF scLB_DisplayedData.iSectionEntries[iSection]++ println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] ) ENDIF ENDIF BREAK //Finished CASE 3 println(funcName,": doing rank offset for prediction" ) CALCULATE_OFFSETS_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(iSection,sclb_rank_predict.iRankBeforePrediction) scLB_control.iLoadStage[iSection] = 4 BREAK CASE 4 RETURN TRUE BREAK ENDSWITCH RETURN FALSE ENDFUNC FUNC BOOL GET_SECTION_ROW(SC_FINAL_DATA& finalData[],INT iTotalCounter, INT &ISectionRowCounter, INT iSection) INT iOffset #IF IS_DEBUG_BUILD STRING sProcName = "GET_SECTION_ROW: " #ENDIF println(sProcName,"Section Row Counter: ", ISectionRowCounter, " Section: ", iSection) //first element is always player in first place IF ISectionRowCounter = 0 IF scLB_DisplayedData.rowData[iSection][0].iRank > 0 finalData[iTotalCounter].rowData = scLB_DisplayedData.rowData[iSection][0] coronaLB_Display.playerNames[iSection] = scLB_DisplayedData.rowData[iSection][0].tl23_ParticipantName coronaLB_Display.icolumnValue[iSection] = scLB_DisplayedData.rowData[iSection][0].iColumnData[scLB_DisplayedData.iCoronaBoxColumn] coronaLB_Display.fcolumnValue[iSection] = scLB_DisplayedData.rowData[iSection][0].fColumnData[scLB_DisplayedData.iCoronaBoxColumn] ISectionRowCounter++ println(sProcName,"Added first place section ", iSection, " data to final array: ITOTALCOUNTER = ",iTotalCounter ) #IF IS_DEBUG_BUILD PRINT_ROW_DATA(finalData[iTotalCounter].rowData) #ENDIF RETURN TRUE ELSE println(sProcName,"scLB_DisplayedData.rowData[",iSection,"][0].iRank = 0 not adding section ", iSection, " data") ENDIF //second element is always local player data ELIF ISectionRowCounter = 1 println(sProcName,"Player index for section ", iSection, " : ", scLB_DisplayedData.iPlayerIndexForSection[iSection]) IF scLB_DisplayedData.iPlayerIndexForSection[iSection] > 0 finalData[iTotalCounter].rowData = scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iPlayerIndexForSection[iSection]] ISectionRowCounter++ println(sProcName,"Added player section ", iSection, " to final array: ITOTALCOUNTER = ",iTotalCounter ) #IF IS_DEBUG_BUILD PRINT_ROW_DATA(finalData[iTotalCounter].rowData) #ENDIF RETURN TRUE ELSE IF scLB_DisplayedData.iPlayerIndexForSection[iSection] < 0 finalData[iTotalCounter].rowData.tl23_ParticipantName = GET_PLAYER_NAME(PLAYER_ID()) finalData[iTotalCounter].rowData.playerGamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID()) finalData[iTotalCounter].rowData.iRank = -1 finalData[iTotalCounter].rowData.icolumnData[0] = -1 finalData[iTotalCounter].rowData.icolumnData[1] = -1 finalData[iTotalCounter].rowData.icolumnData[2] = -1 finalData[iTotalCounter].rowData.icolumnData[3] = -1 finalData[iTotalCounter].rowData.fcolumnData[0] = -1.0 finalData[iTotalCounter].rowData.fcolumnData[1] = -1.0 finalData[iTotalCounter].rowData.fcolumnData[2] = -1.0 finalData[iTotalCounter].rowData.fcolumnData[3] = -1.0 //finalData[iTotalCounter].rowData.iCarEnum = 0 ISectionRowCounter++ println(sProcName,"Added player section ", iSection, " to final array (empty data): ITOTALCOUNTER = ",iTotalCounter ) #IF IS_DEBUG_BUILD PRINT_ROW_DATA(finalData[iTotalCounter].rowData) #ENDIF RETURN TRUE ELSE println(sProcName,"Not adding player data to section ", iSection, " data as player index is :", scLB_DisplayedData.iPlayerIndexForSection[iSection]) ENDIF ISectionRowCounter++ ENDIF ELSE //if even IF ISectionRowCounter%2 = 0 iOffset = ISectionRowCounter/2 IF scLB_DisplayedData.iPlayerIndexForSection[iSection] - iOffset >= 1 IF scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iPlayerIndexForSection[iSection] - iOffset].iRank > 0 finalData[iTotalCounter].rowData = scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iPlayerIndexForSection[iSection] - iOffset] ISectionRowCounter++ println(sProcName,"Added section ", iSection, " data to final array (even): ITOTALCOUNTER = ",iTotalCounter ) #IF IS_DEBUG_BUILD PRINT_ROW_DATA(finalData[iTotalCounter].rowData) #ENDIF RETURN TRUE ENDIF ENDIF ELSE //if odd iOffset = FLOOR(TO_FLOAT(ISectionRowCounter/2)) IF scLB_DisplayedData.iPlayerIndexForSection[iSection] + iOffset < 12 AND scLB_DisplayedData.iPlayerIndexForSection[iSection] + iOffset > 0 IF scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iPlayerIndexForSection[iSection] + iOffset].iRank > 1 finalData[iTotalCounter].rowData = scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iPlayerIndexForSection[iSection] + iOffset] ISectionRowCounter++ println(sProcName,"Added section ", iSection, " data to final array (odd): ITOTALCOUNTER = ",iTotalCounter ) #IF IS_DEBUG_BUILD PRINT_ROW_DATA(finalData[iTotalCounter].rowData) #ENDIF RETURN TRUE ENDIF ENDIF ENDIF ENDIF ISectionRowCounter++ RETURN FALSE ENDFUNC FUNC INT SC_LEADERBOARD_CACHE_GET_FREE_SLOT(INT iCacheID) INT i INT iOldestSlot INT iOldestTime INT iCurrentTime REPEAT MAX_SOCIAL_CLUB_LEADERBOARD_CACHES i IF scLB_cache.iCacheIds[i] = iCacheID RETURN i //println("SC_LEADERBOARD_CACHE_GET_FREE_SLOT: player already has this data cached but re-caching??") ENDIF ENDREPEAT i = 0 REPEAT MAX_SOCIAL_CLUB_LEADERBOARD_CACHES i IF scLB_cache.iCacheIds[i] = 0 RETURN i ELSE IF LEADERBOARDS_GET_CACHE_EXISTS(scLB_cache.iCacheIds[i]) iCurrentTime = LEADERBOARDS_GET_CACHE_TIME(scLB_cache.iCacheIds[i]) IF iCurrentTime > iOldestTime iOldestSlot = i iOldestTime = iCurrentTime ENDIF ELSE RETURN i ENDIF ENDIF ENDREPEAT RETURN iOldestSlot ENDFUNC PROC SC_LEADERBOARD_CACHE_CLEAR_SLOT(INT iCacheID = -1,INT iSlotID=-1) INT i IF iSlotID != -1 println("SC_LEADERBOARD_CACHE_CLEAR_SLOT: Clearing slot ID: ", iSlotID) IF LEADERBOARDS_GET_CACHE_EXISTS(scLB_cache.iCacheIds[iSlotID]) LEADERBOARDS_CLEAR_CACHE_DATA_ID(scLB_cache.iCacheIds[iSlotID]) println("SC_LEADERBOARD_CACHE_CLEAR_SLOT: slot have cache ID: ", iCacheID) ENDIF scLB_cache.iCacheIds[iSlotID] = 0 ELSE IF iCacheID != -1 println("SC_LEADERBOARD_CACHE_CLEAR_SLOT: Clearing cache ID: ", iCacheID) IF LEADERBOARDS_GET_CACHE_EXISTS(iCacheID) LEADERBOARDS_CLEAR_CACHE_DATA_ID(iCacheID) ENDIF REPEAT MAX_SOCIAL_CLUB_LEADERBOARD_CACHES i IF scLB_cache.iCacheIds[i] = iCacheID scLB_cache.iCacheIds[i] = 0 ENDIF ENDREPEAT ENDIF ENDIF ENDPROC PROC SC_LEADERBOARD_CACHE_CLEAR_ALL() INT i println("SC_LEADERBOARD_CACHE_CLEAR_ALL: Called from ", GET_THIS_SCRIPT_NAME()) LEADERBOARDS_CLEAR_CACHE_DATA() REPEAT MAX_SOCIAL_CLUB_LEADERBOARD_CACHES i scLB_cache.iCacheIds[i] = 0 ENDREPEAT ENDPROC PROC SC_LB_CHECK_IS_DATA_CACHED(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control) INT iCacheTime IF LEADERBOARDS_GET_CACHE_EXISTS(scLB_DisplayedData.iCacheHashID) iCacheTime = LEADERBOARDS_GET_CACHE_TIME(scLB_DisplayedData.iCacheHashID) println("SC_LB_CHECK_IS_DATA_CACHED: cache does exists for : ",scLB_DisplayedData.iCacheHashID, " time: ",iCacheTime) IF iCacheTime < SC_LEADERBOARD_CACHE_DUMP_TIME SET_BIT(scLB_control.iBS,SC_LEADERBOARD_CONTROL_SETUP_USING_CACHE) ELSE CLEAR_BIT(scLB_control.iBS,SC_LEADERBOARD_CONTROL_SETUP_USING_CACHE) println("SC_LB_CHECK_IS_DATA_CACHED: time is up clearing cache for : ",scLB_DisplayedData.iCacheHashID) SC_LEADERBOARD_CACHE_CLEAR_SLOT(scLB_DisplayedData.iCacheHashID) ENDIF ELSE println("SC_LB_CHECK_IS_DATA_CACHED: cache does NOT exist for : ",scLB_DisplayedData.iCacheHashID) ENDIF ENDPROC PROC TRIGGER_SC_LB_CACHE_CHECK() SET_BIT(scLB_cache.iBS,SC_LB_CACHE_CHECK_STATUS) scLB_cache.iSlowCounter = 0 RESET_NET_TIMER(scLB_cache.checkTimer) ENDPROC PROC MAINTAIN_CACHE_CLEARING() IF IS_BIT_SET(scLB_cache.iBS,SC_LB_CACHE_CHECK_STATUS) IF scLB_cache.iCacheIds[scLB_cache.iSlowCounter] != 0 IF NETWORK_IS_GAME_IN_PROGRESS() IF IS_NET_PLAYER_OK(PLAYER_ID()) IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),scLB_cache.vCacheLocation[scLB_cache.iSlowCounter]) > SC_LEADERBOARD_CACHE_DUMP_RANGE AND NOT IS_PLAYER_ACTIVE_IN_CORONA() println("Clearing cache out of range of cache area.") SC_LEADERBOARD_CACHE_CLEAR_SLOT(-1,scLB_cache.iSlowCounter) ELSE INT iCacheTime IF LEADERBOARDS_GET_CACHE_EXISTS(scLB_DisplayedData.iCacheHashID) iCacheTime = LEADERBOARDS_GET_CACHE_TIME(scLB_DisplayedData.iCacheHashID) println("MAINTAIN_CACHE_CLEARING: cache does exists for : ",scLB_DisplayedData.iCacheHashID, " time: ",iCacheTime) IF iCacheTime > SC_LEADERBOARD_CACHE_DUMP_TIME println("MAINTAIN_CACHE_CLEARING: time is up clearing cache for : ",scLB_DisplayedData.iCacheHashID) SC_LEADERBOARD_CACHE_CLEAR_SLOT(scLB_DisplayedData.iCacheHashID) ENDIF ENDIF ENDIF ENDIF ELSE IF NOT IS_PED_INJURED(PLAYER_PED_ID()) IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),scLB_cache.vCacheLocation[scLB_cache.iSlowCounter]) > SC_LEADERBOARD_CACHE_DUMP_RANGE println("Clearing cache out of range of cache area.") SC_LEADERBOARD_CACHE_CLEAR_SLOT(-1,scLB_cache.iSlowCounter) ELSE INT iCacheTime IF LEADERBOARDS_GET_CACHE_EXISTS(scLB_DisplayedData.iCacheHashID) iCacheTime = LEADERBOARDS_GET_CACHE_TIME(scLB_DisplayedData.iCacheHashID) println("MAINTAIN_CACHE_CLEARING: cache does exists for : ",scLB_DisplayedData.iCacheHashID, " time: ",iCacheTime) IF iCacheTime > SC_LEADERBOARD_CACHE_DUMP_TIME println("MAINTAIN_CACHE_CLEARING: time is up clearing cache for : ",scLB_DisplayedData.iCacheHashID) SC_LEADERBOARD_CACHE_CLEAR_SLOT(scLB_DisplayedData.iCacheHashID) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF scLB_cache.iSlowCounter++ IF scLB_cache.iSlowCounter >= MAX_SOCIAL_CLUB_LEADERBOARD_CACHES CLEAR_BIT(scLB_cache.iBS,SC_LB_CACHE_CHECK_STATUS) ENDIF ELSE IF IS_PAUSE_MENU_ACTIVE() IF NOT IS_BIT_SET(scLB_cache.iBS,SC_LB_CACHE_PAUSE_ACTIVATED) TRIGGER_SC_LB_CACHE_CHECK() SET_BIT(scLB_cache.iBS,SC_LB_CACHE_PAUSE_ACTIVATED) ENDIF ELSE CLEAR_BIT(scLB_cache.iBS,SC_LB_CACHE_PAUSE_ACTIVATED) ENDIF IF NOT HAS_NET_TIMER_STARTED(scLB_cache.checkTimer) START_NET_TIMER(scLB_cache.checkTimer,TRUE) ELSE IF HAS_NET_TIMER_EXPIRED(scLB_cache.checkTimer,SC_LEADERBOARD_CHECK_TIME,TRUE) TRIGGER_SC_LB_CACHE_CHECK() ENDIF ENDIF ENDIF ENDPROC PROC CLEAR_CACHE_DISPLAY_DATA_STRUCT(LeaderboardCachedDisplayData& toClear) GAMER_HANDLE emptyHandle INT i toClear.m_Id = 0 toClear.m_GamerName = "" toClear.m_CoDriverName = "" toClear.m_GamerHandle = emptyHandle toClear.m_CoDriverHandle = emptyHandle toClear.m_CustomVehicle = FALSE toClear.m_Rank = 0 toClear.m_RowFlags = 0 toClear.m_NumColumns = 0 toClear.m_ColumnsBitSets = 0 REPEAT MAX_COLUMNS i toClear.m_fColumnData[i] = 0 toClear.m_iColumnData[i] = 0 ENDREPEAT ENDPROC PROC CACHE_FINAL_DATA_LIST(SC_FINAL_DATA& finalData[]) INT i,j //println("CACHE_FINAL_DATA_LIST: STARTING CACHE of ID: ", scLB_DisplayedData.iCacheHashID) INT iCacheSlot iCacheSlot = SC_LEADERBOARD_CACHE_GET_FREE_SLOT(scLB_DisplayedData.iCacheHashID) IF scLB_cache.iCacheIds[iCacheSlot] != 0 println("CACHE_FINAL_DATA_LIST: clearing oldest slot to make room") SC_LEADERBOARD_CACHE_CLEAR_SLOT(-1,iCacheSlot) ENDIF REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i CLEAR_CACHE_DISPLAY_DATA_STRUCT(tempSCLB_CacheData) IF finalData[i].iSection != 0 tempSCLB_CacheData.m_Id = scLB_DisplayedData.iCacheHashID println("---START ROW--- Hash ID: ",tempSCLB_CacheData.m_Id) tempSCLB_CacheData.m_GamerName = finalData[i].rowData.tl23_ParticipantName println("Gamer Name: ",tempSCLB_CacheData.m_GamerName ) IF ARE_STRINGS_EQUAL(finalData[i].rowData.tl31_CoDriver,"") tempSCLB_CacheData.m_CoDriverName = finalData[i].rowData.tl23_ParticipantName ELSE tempSCLB_CacheData.m_CoDriverName = finalData[i].rowData.tl31_CoDriver ENDIF println("Co-Driver Name: ",tempSCLB_CacheData.m_CoDriverName) tempSCLB_CacheData.m_GamerHandle = finalData[i].rowData.playerGamerHandle //println("Gamer Handle: ", tempSCLB_CacheData.m_GamerHandle) IF IS_GAMER_HANDLE_VALID(finalData[i].rowData.coDriverGamerHandle) tempSCLB_CacheData.m_CoDriverHandle = finalData[i].rowData.coDriverGamerHandle ELSE tempSCLB_CacheData.m_CoDriverHandle = finalData[i].rowData.playerGamerHandle ENDIF //println("Co-Driver Handle: ",tempSCLB_CacheData.m_CoDriverHandle) tempSCLB_CacheData.m_CustomVehicle = finalData[i].rowData.bCustomVehicle println("Custom Vehicle: ",tempSCLB_CacheData.m_CustomVehicle) tempSCLB_CacheData.m_Rank = finalData[i].rowData.iRank println("Rank: ",tempSCLB_CacheData.m_Rank) tempSCLB_CacheData.m_NumColumns = scLB_DisplayedData.iNumNonRankColumnsToDisplay //IF tempSCLB_CacheData.m_NumColumns > 5 // println("More than 5 columns capping at 5 for testing") // tempSCLB_CacheData.m_NumColumns = 5 //ENDIF println("Number of Columns: ",tempSCLB_CacheData.m_NumColumns) tempSCLB_CacheData.m_ColumnsBitSets = scLB_DisplayedData.iDisplayColumnIsIntBS println("Column Bitset: ",tempSCLB_CacheData.m_ColumnsBitSets) println("Row Flags BEFORE: ",tempSCLB_CacheData.m_RowFlags) println("Row is: ",finalData[i].rowData.bValidData) IF finalData[i].rowData.bValidData SET_BIT(tempSCLB_CacheData.m_RowFlags,SC_LEADERBOARD_ROW_FLAG_VALID) ELSE CLEAR_BIT(tempSCLB_CacheData.m_RowFlags,SC_LEADERBOARD_ROW_FLAG_VALID) ENDIF println("Row is in section: ",finalData[i].iSection) SET_BIT(tempSCLB_CacheData.m_RowFlags,finalData[i].iSection) println("Row Flags: ",tempSCLB_CacheData.m_RowFlags) REPEAT tempSCLB_CacheData.m_NumColumns j //IF j < 5 //if an INT IF IS_BIT_SET(tempSCLB_CacheData.m_ColumnsBitSets,j) tempSCLB_CacheData.m_iColumnData[j] = finalData[i].rowData.iColumnData[j] println("Adding INT for column ", j, " value: ",tempSCLB_CacheData.m_iColumnData[j]) ELSE tempSCLB_CacheData.m_fColumnData[j] = finalData[i].rowData.fColumnData[j] println("Adding FLOAT for column ", j, " value: ",tempSCLB_CacheData.m_fColumnData[j] ) ENDIF //ENDIF ENDREPEAT scLB_cache.iCacheIds[iCacheSlot] = scLB_DisplayedData.iCacheHashID LEADERBOARDS_CACHE_DATA_ROW(tempSCLB_CacheData) ENDIF ENDREPEAT scLB_cache.vCacheLocation[iCacheSlot] = GET_PLAYER_COORDS(PLAYER_ID()) println("CACHE_FINAL_DATA_LIST: FINISHED CACHE of ID: ", scLB_DisplayedData.iCacheHashID) ENDPROC PROC ASSIGN_FINAL_DATA_FROM_CACHE(SC_FINAL_DATA& finalData[]) INT i,j println("ASSIGN_FINAL_DATA_FROM_CACHE: RETRIEVE DATA for cache ID: ",scLB_DisplayedData.iCacheHashID) INT iSection REPEAT 3 i scLB_DisplayedData.iSectionEntries[i] = 0 scLB_DisplayedData.iPlayerIndexForSection[i] = -1 ENDREPEAT GAMER_HANDLE localPlayerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID()) IF LEADERBOARDS_GET_CACHE_EXISTS(scLB_DisplayedData.iCacheHashID) INT iRows iRows = LEADERBOARDS_GET_CACHE_NUMBER_OF_ROWS(scLB_DisplayedData.iCacheHashID) println("RETRIEVE DATA num rows : ", iRows) #IF IS_DEBUG_BUILD IF iRows > SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS println("ASSIGN_FINAL_DATA_FROM_CACHE: more rows cached than should be used. Previous cache NOT cleared!") SCRIPT_ASSERT("ASSIGN_FINAL_DATA_FROM_CACHE: more rows cached than should be used. Previous cache NOT cleared!- See Conor.") ENDIF #ENDIF i = 0 REPEAT iRows i IF i< SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS CLEAR_CACHE_DISPLAY_DATA_STRUCT(tempSCLB_CacheData) iSection = 0 println("-START RETRIEVE CACHE ROW-Row ID: ", i) LEADERBOARDS_GET_CACHE_DATA_ROW(scLB_DisplayedData.iCacheHashID,i,tempSCLB_CacheData) //IF finalData[i].iSection != 0 //need to get the iBS miguel added finalData[i].rowData.tl23_ParticipantName = tempSCLB_CacheData.m_GamerName println("Participant Name: ", finalData[i].rowData.tl23_ParticipantName) finalData[i].rowData.tl31_CoDriver = tempSCLB_CacheData.m_CoDriverName println("Co-Driver Name: ", finalData[i].rowData.tl31_CoDriver) finalData[i].rowData.playerGamerHandle = tempSCLB_CacheData.m_GamerHandle //println("Player gamer handle: ", finalData[i].rowData.playerGamerHandle) finalData[i].rowData.coDriverGamerHandle = tempSCLB_CacheData.m_CoDriverHandle //println("Co-Driver gamer handle: ", finalData[i].rowData.coDriverGamerHandle) finalData[i].rowData.bCustomVehicle = tempSCLB_CacheData.m_CustomVehicle println("Custom vehicle: ", finalData[i].rowData.bCustomVehicle) finalData[i].rowData.iRank = tempSCLB_CacheData.m_Rank println("Rank: ", finalData[i].rowData.iRank) scLB_DisplayedData.iNumNonRankColumnsToDisplay = tempSCLB_CacheData.m_NumColumns println("Number of columns: ", scLB_DisplayedData.iNumNonRankColumnsToDisplay) scLB_DisplayedData.iReadColumnIsIntBS = tempSCLB_CacheData.m_ColumnsBitSets println("Column bitset: ", scLB_DisplayedData.iReadColumnIsIntBS) // iSection = 0 println("Row Flags: ", tempSCLB_CacheData.m_RowFlags) IF IS_BIT_SET(tempSCLB_CacheData.m_RowFlags,1) iSection = 1 ELIF IS_BIT_SET(tempSCLB_CacheData.m_RowFlags,2) iSection = 2 ELIF IS_BIT_SET(tempSCLB_CacheData.m_RowFlags,3) iSection = 3 ENDIF println("Row is in section: ", iSection) scLB_DisplayedData.iSectionEntries[iSection-1]++ finalData[i].iSection = iSection IF finalData[i].rowData.iRank != -1 IF IS_BIT_SET(tempSCLB_CacheData.m_RowFlags,SC_LEADERBOARD_ROW_FLAG_VALID) finalData[i].rowData.bValidData = TRUE println("Row is valid ") ELSE finalData[i].rowData.bValidData = FALSE println("Row is NOT valid ") ENDIF //IF ARE_STRINGS_EQUAL(GET_PLAYER_NAME(PLAYER_ID()),finalData[i].rowData.tl23_ParticipantName) IF SCLB_CHECK_HANDLES_ARE_THE_SAME(finalData[i].rowData.playerGamerHandle,localPlayerHandle) scLB_DisplayedData.iPlayerIndexForSection[iSection-1] = 0 println("scLB_DisplayedData.iPlayerIndexForSection[",iSection-1, "] = 0") ENDIF ENDIF //ELIF IS_BIT_SET(tempSCLB_CacheData.m_RowFlags,1) // scLB_DisplayedData.iSectionEntries[1]++ // finalData[i].iSection = 2 // IF ARE_STRINGS_EQUAL(GET_PLAYER_NAME(PLAYER_ID()),finalData[i].rowData.tl23_ParticipantName) // IF finalData[i].rowData.iRank != -1 // scLB_DisplayedData.iPlayerIndexForSection[1] = 0 // ENDIF // ENDIF //ELIF IS_BIT_SET(tempSCLB_CacheData.m_RowFlags,2) // finalData[i].iSection = 3 // scLB_DisplayedData.iSectionEntries[2]++ // IF ARE_STRINGS_EQUAL(GET_PLAYER_NAME(PLAYER_ID()),finalData[i].rowData.tl23_ParticipantName) // IF finalData[i].rowData.iRank != -1 // scLB_DisplayedData.iPlayerIndexForSection[2] = 0 // ENDIF // ENDIF //ENDIF REPEAT tempSCLB_CacheData.m_NumColumns j //IF j < 5 //if an INT //println("INT for column ", j, " Value: ", tempSCLB_CacheData.m_iColumnData[j]) //println("FLOAT for column ", j, " Value: ", tempSCLB_CacheData.m_fColumnData[j]) IF IS_BIT_SET(tempSCLB_CacheData.m_ColumnsBitSets,j) finalData[i].rowData.iColumnData[j] = tempSCLB_CacheData.m_iColumnData[j] println("INT for column ", j, " Value: ", finalData[i].rowData.iColumnData[j]) ELSE finalData[i].rowData.fColumnData[j] = tempSCLB_CacheData.m_fColumnData[j] println("FLOAT for column ", j, " Value: ", finalData[i].rowData.fColumnData[j]) ENDIF //ENDIF ENDREPEAT //ENDIF println("---END RETRIEVE CACHE ROW---") ENDIF ENDREPEAT #IF IS_DEBUG_BUILD IF g_bOutputSCLeaderboardData REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i println("AFTER ASSIGNING CACHE - SC FINAL leaderboard row : ", i) println("SC FINAL leaderboard row data gamer name: ",finalData[i].rowData.tl23_ParticipantName," rank: ",finalData[i].rowData.iRank, " section: ",finalData[i].iSection) REPEAT SC_LEADERBOARD_MAX_DISPLAYED_STATS j println(j,"- float column Value ",finalData[i].rowData.fcolumnData[j]) println(j,"-int column Value ",finalData[i].rowData.icolumnData[j]) ENDREPEAT ENDREPEAT ENDIF #ENDIF ELSE println("ASSIGN_FINAL_DATA_FROM_CACHE: CACHE DOESN'T EXIST!! ID: ",scLB_DisplayedData.iCacheHashID) SCRIPT_ASSERT("ASSIGN_FINAL_DATA_FROM_CACHE: trying to assign cache but it doesn't exist! - See Conor") ENDIF ENDPROC PROC ORDER_FINAL_LIST(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control,SC_FINAL_DATA& finalData[]) INT i, j SC_LEADERBOARD_DISPLAY_ROW_STRUCT tempRow INT itempSection IF NOT IS_BIT_SET(scLB_control.iBS,SC_LEADERBOARD_CONTROL_SETUP_USING_CACHE) AND NOT IS_BIT_SET(scLB_control.iBS,SC_LEADERBOARD_CONTROL_GENERATED_FINAL_LIST) #IF IS_DEBUG_BUILD IF g_bOutputSCLeaderboardData REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i println("BEFORE SORT: Row: ",i) println("SC FINAL leaderboard row data gamer name: ",finalData[i].rowData.tl23_ParticipantName," co-driver: ",finalData[i].rowData.tl31_CoDriver," rank: ",finalData[i].rowData.iRank, " section: ",finalData[i].iSection) REPEAT SC_LEADERBOARD_MAX_DISPLAYED_STATS j println("Column # ", j) println(j, "- float column Value ",finalData[i].rowData.fcolumnData[j]) println(j, "- int column Value ",finalData[i].rowData.icolumnData[j]) ENDREPEAT ENDREPEAT ENDIF #ENDIF REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i IF finalData[i].iSection != 0 FOR j=i+1 TO 11 IF finalData[j].iSection != 0 IF finalData[j].iSection < finalData[i].iSection itempSection = finalData[j].iSection finalData[j].iSection = finalData[i].iSection finalData[i].iSection = itempSection tempRow = finalData[j].rowData finalData[j].rowData = finalData[i].rowData finalData[i].rowData = tempRow ELIF finalData[j].iSection = finalData[i].iSection //If less than j = i IF finalData[j].rowData.iRank != -1 IF finalData[j].rowData.iRank < finalData[i].rowData.iRank OR finalData[i].rowData.iRank = -1 itempSection = finalData[j].iSection finalData[j].iSection = finalData[i].iSection finalData[i].iSection = itempSection tempRow = finalData[j].rowData finalData[j].rowData= finalData[i].rowData finalData[i].rowData = tempRow ENDIF ENDIF ENDIF ENDIF ENDFOR ENDIF ENDREPEAT #IF IS_DEBUG_BUILD IF g_bOutputSCLeaderboardData REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i println("AFTER SORT Row: ",i) println("SC FINAL leaderboard row data gamer name: ",finalData[i].rowData.tl23_ParticipantName," rank: ",finalData[i].rowData.iRank, " section: ",finalData[i].iSection) REPEAT SC_LEADERBOARD_MAX_DISPLAYED_STATS j println(j,"- float column Value ",finalData[i].rowData.fcolumnData[j]) println(j,"- int column Value ",finalData[i].rowData.icolumnData[j]) ENDREPEAT ENDREPEAT ENDIF #ENDIF ENDIF ENDPROC PROC GET_FINAL_DATA_LIST(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control,SC_FINAL_DATA& finalData[]) INT iGlobalRowCounter INT iFriendRowCounter INT iCrewRowCounter INT iTotalCounter //INT iFriendAboveCounter, iFriendBelowCounter INT i IF NOT IS_BIT_SET(scLB_control.iBS,SC_LEADERBOARD_CONTROL_SETUP_USING_CACHE) AND NOT IS_BIT_SET(scLB_control.iBS,SC_LEADERBOARD_CONTROL_GENERATED_FINAL_LIST) REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i IF GET_SECTION_ROW(finalData,iTotalCounter,iGlobalRowCounter,SC_LB_SECTION_GLOBAL) finalData[iTotalCounter].iSection = 1 iTotalCounter++ IF iTotalCounter >= SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS EXIT ENDIF ENDIF //IF GET_SECTION_ROW(finalData,scLB_control,iTotalCounter,iFriendRowCounter,iFriendAboveCounter, iFriendBelowCounter) IF GET_SECTION_ROW(finalData,iTotalCounter,iFRiendRowCounter,SC_LB_SECTION_FRIEND) finalData[iTotalCounter].iSection = 2 iTotalCounter++ IF iTotalCounter >= SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS EXIT ENDIF ENDIF IF GET_SECTION_ROW(finalData,iTotalCounter,iCrewRowCounter,SC_LB_SECTION_CREW) finalData[iTotalCounter].iSection = 3 iTotalCounter++ IF iTotalCounter >= SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS EXIT ENDIF ENDIF ENDREPEAT ELSE ASSIGN_FINAL_DATA_FROM_CACHE(finalData) ENDIF ENDPROC FUNC BOOL IS_GAMER_HANDLE_ALREADY_IN_ARRAY(GAMER_HANDLE& gamerToCheck,GAMERS_HANDLES& gamerHandles[]) INT i REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i IF IS_GAMER_HANDLE_VALID(gamerHandles[i].m_GamerHandle) IF NETWORK_ARE_HANDLES_THE_SAME(gamerToCheck,gamerHandles[i].m_GamerHandle) RETURN TRUE ENDIF ENDIF ENDREPEAT RETURN FALSE ENDFUNC PROC CLEAR_CREW_TAGS_FOR_LEADERBOARD(SC_FINAL_DATA& finalData[]) INT i REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i CLEAR_GAMER_HANDLE_STRUCT(tempGlobalLeaderboardCrewData.gamerHandles[i].m_GamerHandle) tempGlobalLeaderboardCrewData.crewTags[i] = "" ENDREPEAT IF finalData[0].iCrewTagLoadStage > 0 finalData[0].iCrewTagLoadStage = 0 finalData[1].iCrewTagLoadStage = 0 IF NOT NETWORK_GET_PRIMARY_CLAN_DATA_PENDING() NETWORK_GET_PRIMARY_CLAN_DATA_CLEAR() ENDIF ENDIF PRINTLN("CLEAR_GLOBAL_CREW_DATA_FOR_LEADERBOARD called this frame") IF NETWORK_GET_PRIMARY_CLAN_DATA_PENDING() NETWORK_GET_PRIMARY_CLAN_DATA_CANCEL() ENDIF tempGlobalLeaderboardCrewData.iNumGamers = 0 ENDPROC FUNC BOOL GET_CREW_TAGS_FOR_LEADERBOARD(SC_FINAL_DATA& finalData[]) INT i,j // REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i // IF NOT GET_CREW_TAG_FOR_GAMER(finalData[i].iCrewTagLoadStage,finalData[i].rowData.playerGamerHandle,finalData[i].crewTag) // RETURN FALSE // ENDIF // ENDREPEAT //RETURN TRUE SWITCH finalData[0].iCrewTagLoadStage CASE 0 CLEAR_CREW_TAGS_FOR_LEADERBOARD(finalData) IF (IS_PLAYSTATION_PLATFORM() OR IS_XBOX_PLATFORM()) AND NOT NETWORK_HAVE_USER_CONTENT_PRIVILEGES() PRINTLN("GET_CREW_TAGS_FOR_LEADERBOARD: Moving to stage 3 (user content priv off)") finalData[0].iCrewTagLoadStage= 3 RETURN FALSE ENDIF REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i IF IS_GAMER_HANDLE_VALID(finalData[i].rowData.playerGamerHandle) IF NOT IS_GAMER_HANDLE_ALREADY_IN_ARRAY(finalData[i].rowData.playerGamerHandle,tempGlobalLeaderboardCrewData.gamerHandles) tempGlobalLeaderboardCrewData.gamerHandles[tempGlobalLeaderboardCrewData.iNumGamers].m_GamerHandle = finalData[i].rowData.playerGamerHandle #IF IS_DEBUG_BUILD DEBUG_PRINT_GAMER_HANDLE(tempGlobalLeaderboardCrewData.gamerHandles[tempGlobalLeaderboardCrewData.iNumGamers].m_GamerHandle) #ENDIF tempGlobalLeaderboardCrewData.iNumGamers++ PRINTLN("GET_CREW_TAGS_FOR_LEADERBOARD:valid handle added total now: ",tempGlobalLeaderboardCrewData.iNumGamers) ENDIF ENDIF ENDREPEAT IF tempGlobalLeaderboardCrewData.iNumGamers > 0 PRINTLN("GET_CREW_TAGS_FOR_LEADERBOARD: Moving to stage 1") finalData[0].iCrewTagLoadStage= 1 ELSE PRINTLN("GET_CREW_TAGS_FOR_LEADERBOARD: Moving to stage 3 (no gamers to query)") finalData[0].iCrewTagLoadStage= 3 ENDIF BREAK CASE 1 IF GET_CREW_TAGS_FOR_GAMERS(finalData[1].iCrewTagLoadStage,tempGlobalLeaderboardCrewData.iNumGamers,tempGlobalLeaderboardCrewData.gamerHandles,tempGlobalLeaderboardCrewData.crewTags) finalData[0].iCrewTagLoadStage = 2 PRINTLN("GET_CREW_TAGS_FOR_LEADERBOARD: Moving to stage 2") ENDIF BREAK CASE 2 IF tempGlobalLeaderboardCrewData.iNumGamers > SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS tempGlobalLeaderboardCrewData.iNumGamers = SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS ENDIF REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i REPEAT tempGlobalLeaderboardCrewData.iNumGamers j IF IS_GAMER_HANDLE_VALID(finalData[i].rowData.playerGamerHandle) AND IS_GAMER_HANDLE_VALID(tempGlobalLeaderboardCrewData.gamerHandles[j].m_GamerHandle) IF NETWORK_ARE_HANDLES_THE_SAME(finalData[i].rowData.playerGamerHandle,tempGlobalLeaderboardCrewData.gamerHandles[j].m_GamerHandle) finalData[i].crewTag = tempGlobalLeaderboardCrewData.crewTags[j] println("GET_CREW_TAGS_FOR_LEADERBOARD: player ",finalData[i].rowData.tl23_ParticipantName, " crew Tag = ",tempGlobalLeaderboardCrewData.crewTags[j] ) ELSE PRINTLN("GET_CREW_TAGS_FOR_LEADERBOARD: gamer handles not the same I: ", i, " j: ",j) ENDIF ELSE PRINTLN("GET_CREW_TAGS_FOR_LEADERBOARD: gamer handles not valid") ENDIF ENDREPEAT ENDREPEAT PRINTLN("GET_CREW_TAGS_FOR_LEADERBOARD: Moving to stage 3") finalData[0].iCrewTagLoadStage= 3 BREAK CASE 3 RETURN TRUE BREAK ENDSWITCH RETURN FALSE ENDFUNC FUNC BOOL GET_CO_DRIVER_DISPLAY_NAMES(SC_FINAL_DATA& finalData[]) INT i IF IS_XBOX_PLATFORM() OR IS_PLAYSTATION_PLATFORM() REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i IF NOT GET_DISPLAY_NAME_FROM_USERID(finalData[i].iCoDriverNameLoadStage,finalData[i].rowData.tl31_CoDriver,finalData[i].coDriverDisplayName,scLB_DisplayedData.tempDisplayName,finalData[i].iDisplayNameRequestID) RETURN FALSE ENDIF ENDREPEAT ELSE REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i IF NOT GET_GAMER_NAME_FROM_USER_ID(finalData[i].iCoDriverNameLoadStage,finalData[i].rowData.tl31_CoDriver,finalData[i].coDriverDisplayName) RETURN FALSE ENDIF ENDREPEAT ENDIF RETURN TRUE ENDFUNC #IF IS_DEBUG_BUILD PROC RESET_SCLB_DEBUG_METRICS_DATA() sclbDebugMetrics.iTotalFrames = 0 sclbDebugMetrics.iGlobalDataFrames = 0 sclbDebugMetrics.iCrewDataFrames = 0 sclbDebugMetrics.iFriendDataFrames = 0 sclbDebugMetrics.iTagsFrames = 0 sclbDebugMetrics.iCoDriverNameFrames = 0 sclbDebugMetrics.iUpdatedGamerTagFrames = 0 sclbDebugMetrics.iFlagsBS = 0 sclbDebugMetrics.bReset = FALSE sclbDebugMetrics.iTotalTime = 0 RESET_NET_TIMER(sclbDebugMetrics.totalTimer) ENDPROC PROC PRINT_SCLB_DEBUG_METRICS_DATA() PRINTLN("SCLB_DEBUG_METRICS: iTotalFrames = ", sclbDebugMetrics.iTotalFrames) PRINTLN("SCLB_DEBUG_METRICS: iGlobalDataFrames = ", sclbDebugMetrics.iGlobalDataFrames) PRINTLN("SCLB_DEBUG_METRICS: iFriendDataFrames = ", sclbDebugMetrics.iFriendDataFrames) PRINTLN("SCLB_DEBUG_METRICS: iCrewDataFrames = ", sclbDebugMetrics.iCrewDataFrames) PRINTLN("SCLB_DEBUG_METRICS: iCoDriverNameFrames = ", sclbDebugMetrics.iCoDriverNameFrames) PRINTLN("SCLB_DEBUG_METRICS: iUpdatedGamerTagFrames = ", sclbDebugMetrics.iUpdatedGamerTagFrames) PRINTLN("SCLB_DEBUG_METRICS: iTagsFrames = ", sclbDebugMetrics.iTagsFrames) PRINTLN("SCLB_DEBUG_METRICS: iTotalTime = ", sclbDebugMetrics.iTotalTime) ENDPROC #ENDIF /// PURPOSE: /// Durango Only: gets the display name from handle FUNC BOOL GET_DISPLAY_NAMES_FROM_HANDLES_FOR_SCLB(SC_FINAL_DATA& finalData[]) IF NOT IS_XBOX_PLATFORM() AND NOT IS_PLAYSTATION_PLATFORM() SCRIPT_ASSERT("GET_DISPLAY_NAMES_FROM_HANDLES_FOR_SCLB- is only supported on Durango- See Conor") DEBUG_PRINTCALLSTACK() PRINTLN("GET_DISPLAY_NAMES_FROM_HANDLES_FOR_SCLB- is only supported on Durango") RETURN TRUE ENDIF IF finalData[0].iRunUpdateGamerTagsLoadStage = 2 RETURN TRUE ENDIF INT iResult INT i INT iCounter SWITCH finalData[0].iRunUpdateGamerTagsLoadStage CASE 0 scLB_DisplayedData.iNumTempHandles = 0 REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i scLB_DisplayedData.tempDisplayName[i] = "" CLEAR_GAMER_HANDLE_STRUCT(scLB_DisplayedData.tempHandleList[i]) IF IS_GAMER_HANDLE_VALID(finalData[i].rowData.playerGamerHandle) scLB_DisplayedData.tempHandleList[scLB_DisplayedData.iNumTempHandles] = finalData[i].rowData.playerGamerHandle scLB_DisplayedData.iNumTempHandles++ ENDIF ENDREPEAT IF scLB_DisplayedData.iNumTempHandles > 0 finalData[0].iDisplayNameRequestID = NETWORK_DISPLAYNAMES_FROM_HANDLES_START(scLB_DisplayedData.tempHandleList,scLB_DisplayedData.iNumTempHandles) finalData[0].iRunUpdateGamerTagsLoadStage = 1 ELSE finalData[0].iRunUpdateGamerTagsLoadStage = 2 ENDIF BREAK CASE 1 iResult = NETWORK_GET_DISPLAYNAMES_FROM_HANDLES(finalData[0].iDisplayNameRequestID,scLB_DisplayedData.tempDisplayName,scLB_DisplayedData.iNumTempHandles) IF iResult = 0 PRINTLN("GET_DISPLAY_NAMES_FROM_HANDLES_FOR_SCLB- SUCCEEDED!") REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i IF IS_GAMER_HANDLE_VALID(finalData[i].rowData.playerGamerHandle) finalData[i].rowData.tl23_ParticipantName = scLB_DisplayedData.tempDisplayName[iCounter] PRINTLN("GET_DISPLAY_NAMES_FROM_HANDLES_FOR_SCLB PlayerName = ",finalData[i].rowData.tl23_ParticipantName ) iCounter++ ENDIF ENDREPEAT finalData[0].iRunUpdateGamerTagsLoadStage = 2 ELIF iResult = -1 PRINTLN("GET_DISPLAY_NAMES_FROM_HANDLES_FOR_SCLB- FAILED!") finalData[0].iRunUpdateGamerTagsLoadStage = 2 ELSE PRINTLN("GET_DISPLAY_NAMES_FROM_HANDLES_FOR_SCLB: waiting for display name request: iResult = ",iResult) RETURN FALSE ENDIF BREAK CASE 2 finalData[0].iDisplayNameRequestID = -1 RETURN TRUE BREAK ENDSWITCH RETURN FALSE ENDFUNC FUNC BOOL GET_UPDATED_GAMERTAGS(SC_FINAL_DATA& finalData[]) INT i IF IS_PC_VERSION() PRINTLN("GET_UPDATED_GAMERTAGS: bypassing for PC build.") RETURN TRUE ELIF IS_XBOX_PLATFORM() OR IS_PLAYSTATION_PLATFORM() IF NOT GET_DISPLAY_NAMES_FROM_HANDLES_FOR_SCLB(finalData) RETURN FALSE ENDIF ELSE REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i IF NOT GET_GAMER_NAME_FROM_HANDLE(finalData[i].iRunUpdateGamerTagsLoadStage,finalData[i].rowData.playerGamerHandle,finalData[i].rowData.tl23_ParticipantName) RETURN FALSE ENDIF ENDREPEAT ENDIF RETURN TRUE ENDFUNC /// PURPOSE: /// Loads the social club data from global players, friends and crew /// PARAMS: /// scLB_control - The control struct for loading the data /// RETURNS: /// true when all the data has been grabbed FUNC BOOL LOAD_SOCIAL_CLUB_LEADERBOARD_DATA(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control) #IF IS_DEBUG_BUILD IF NOT IS_BIT_SET(sclbDebugMetrics.iFlagsBS,SCLB_DEBUG_METRICS_FINISHED) IF NOT HAS_NET_TIMER_STARTED(sclbDebugMetrics.totalTimer) START_NET_TIMER(sclbDebugMetrics.totalTimer,TRUE) ENDIF ENDIF #ENDIF IF NOT sclb_useRankPrediction IF NOT HAS_NET_TIMER_STARTED(scLB_DisplayedData.optionChangeDelay) START_NET_TIMER(scLB_DisplayedData.optionChangeDelay,TRUE) PRINTLN("LOAD_SOCIAL_CLUB_LEADERBOARD_DATA- option delay timer -1 ") RETURN FALSE ELSE IF NOT HAS_NET_TIMER_EXPIRED(scLB_DisplayedData.optionChangeDelay,1000,TRUE) PRINTLN("LOAD_SOCIAL_CLUB_LEADERBOARD_DATA- option delay timer -2 ") RETURN FALSE ENDIF ENDIF ENDIF #IF IS_DEBUG_BUILD IF NOT IS_BIT_SET(sclbDebugMetrics.iFlagsBS,SCLB_DEBUG_METRICS_FINISHED) sclbDebugMetrics.iTotalFrames++ ENDIF #ENDIF //failed to connect for some reason IF NOT NETWORK_HAS_VALID_ROS_CREDENTIALS() OR NOT IS_PLAYER_ONLINE() OR (NOT NETWORK_HAVE_ONLINE_PRIVILEGES() AND NETWORK_HAS_AGE_RESTRICTIONS()) OR scLB_DisplayedData.iReadFailedBS != 0 //a read failed the values will be invalid display error message CLEAR_BIT(scLB_control.iBS,SC_LEADERBOARD_CONTROL_SETUP_CHECK_CACHE) PRINTLN("LOAD_SOCIAL_CLUB_LEADERBOARD_DATA- failed to connect ") RETURN TRUE ENDIF IF NOT IS_BIT_SET(scLB_control.iBS,SC_LEADERBOARD_CONTROL_SETUP_CHECK_CACHE) SC_LB_CHECK_IS_DATA_CACHED(scLB_control) SET_BIT(scLB_control.iBS,SC_LEADERBOARD_CONTROL_SETUP_CHECK_CACHE) #IF IS_DEBUG_BUILD //IF g_bOutputSCLeaderboardData println("LOAD_SOCIAL_CLUB_LEADERBOARD_DATA: checked for cached data") //ENDIF #ENDIF RETURN FALSE ELSE IF IS_BIT_SET(scLB_control.iBS,SC_LEADERBOARD_CONTROL_SETUP_USING_CACHE) #IF IS_DEBUG_BUILD IF scLB_control.iLoadStage[SC_LB_SECTION_CREW] != 3 println("LOAD_SOCIAL_CLUB_LEADERBOARD_DATA: using cached data") ENDIF #ENDIF scLB_control.iLoadStage[SC_LB_SECTION_GLOBAL] = 2 scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] = 1 scLB_control.iLoadStage[SC_LB_SECTION_CREW] = 3 RETURN TRUE ENDIF ENDIF #IF IS_DEBUG_BUILD IF NOT IS_BIT_SET(sclbDebugMetrics.iFlagsBS,SCLB_DEBUG_METRICS_GOT_GLOBAL) sclbDebugMetrics.iGlobalDataFrames++ ENDIF #ENDIF IF NOT SOCIAL_CLUB_GET_GLOBAL_LB_DATA(scLB_control) #IF IS_DEBUG_BUILD IF g_bOutputSCLeaderboardData println("Waiting for SOCIAL_CLUB_GET_GLOBAL_LB_DATA") ENDIF #ENDIF RETURN FALSE ENDIF #IF IS_DEBUG_BUILD SET_BIT(sclbDebugMetrics.iFlagsBS,SCLB_DEBUG_METRICS_GOT_GLOBAL) IF NOT IS_BIT_SET(sclbDebugMetrics.iFlagsBS,SCLB_DEBUG_METRICS_GOT_FRIENDS) sclbDebugMetrics.iFriendDataFrames++ ENDIF #ENDIF IF NOT SOCIAL_CLUB_GET_FRIEND_LB_DATA(scLB_control) #IF IS_DEBUG_BUILD IF g_bOutputSCLeaderboardData println("Waiting for SOCIAL_CLUB_GET_FRIEND_LB_DATA") ENDIF #ENDIF RETURN FALSE ENDIF #IF IS_DEBUG_BUILD SET_BIT(sclbDebugMetrics.iFlagsBS,SCLB_DEBUG_METRICS_GOT_FRIENDS) IF NOT IS_BIT_SET(sclbDebugMetrics.iFlagsBS,SCLB_DEBUG_METRICS_GOT_CREW) sclbDebugMetrics.iCrewDataFrames++ ENDIF #ENDIF IF NOT SOCIAL_CLUB_GET_CREW_LB_DATA(scLB_control) #IF IS_DEBUG_BUILD IF g_bOutputSCLeaderboardData println("Waiting for SOCIAL_CLUB_GET_CREW_LB_DATA") ENDIF #ENDIF RETURN FALSE ENDIF IF NOT IS_BIT_SET(scLB_control.iBS,SC_LEADERBOARD_CONTROL_GENERATED_FINAL_LIST) CLEAR_FINAL_DATA_STRUCT(tempFinalData) GET_FINAL_DATA_LIST(scLB_control,tempFinalData) ORDER_FINAL_LIST(scLB_control,tempFinalData) SET_BIT(scLB_control.iBS,SC_LEADERBOARD_CONTROL_GENERATED_FINAL_LIST) ENDIF #IF IS_DEBUG_BUILD SET_BIT(sclbDebugMetrics.iFlagsBS,SCLB_DEBUG_METRICS_GOT_CREW) // IF NOT IS_BIT_SET(sclbDebugMetrics.iFlagsBS,SCLB_DEBUG_METRICS_GOT_TAGS) // sclbDebugMetrics.iTagsFrames++ // ENDIF #ENDIF IF NOT IS_BIT_SET(scLB_control.iBS, SC_LEADERBOARD_CONTROL_GENERATED_TAGS) IF NOT HAS_NET_TIMER_STARTED(scLB_DisplayedData.failSafeTimer) START_NET_TIMER(scLB_DisplayedData.failSafeTimer,TRUE) ELSE IF HAS_NET_TIMER_EXPIRED(scLB_DisplayedData.failSafeTimer,30000,TRUE) println("LOAD_SOCIAL_CLUB_LEADERBOARD_DATA: hit failsafe timer for tag generation skipping)") SET_BIT(scLB_control.iBS, SC_LEADERBOARD_CONTROL_GENERATED_TAGS) ENDIF ENDIF IF GET_CO_DRIVER_DISPLAY_NAMES(tempFinalData) ELSE #IF IS_DEBUG_BUILD IF g_bOutputSCLeaderboardData println("LOAD_SOCIAL_CLUB_LEADERBOARD_DATA: Waiting for GET_CO_DRIVER_DISPLAY_NAMES()") ENDIF sclbDebugMetrics.iCoDriverNameFrames++ #ENDIF RETURN FALSE ENDIF IF GET_UPDATED_GAMERTAGS(tempFinalData) ELSE #IF IS_DEBUG_BUILD IF g_bOutputSCLeaderboardData println("LOAD_SOCIAL_CLUB_LEADERBOARD_DATA: Waiting for GET_UPDATED_GAMERTAGS()") ENDIF sclbDebugMetrics.iUpdatedGamerTagFrames++ #ENDIF RETURN FALSE ENDIF IF GET_CREW_TAGS_FOR_LEADERBOARD(tempFinalData) CACHE_FINAL_DATA_LIST(tempFinalData) SET_BIT(scLB_control.iBS, SC_LEADERBOARD_CONTROL_GENERATED_TAGS) CACHE_FINAL_DATA_LIST(tempFinalData) ELSE #IF IS_DEBUG_BUILD IF g_bOutputSCLeaderboardData println("LOAD_SOCIAL_CLUB_LEADERBOARD_DATA: Waiting for GET_CREW_TAGS_FOR_LEADERBOARD()") ENDIF sclbDebugMetrics.iTagsFrames++ #ENDIF RETURN FALSE ENDIF ENDIF #IF IS_DEBUG_BUILD SET_BIT(sclbDebugMetrics.iFlagsBS,SCLB_DEBUG_METRICS_GOT_TAGS) IF NOT IS_BIT_SET(sclbDebugMetrics.iFlagsBS,SCLB_DEBUG_METRICS_FINISHED) IF HAS_NET_TIMER_STARTED(sclbDebugMetrics.totalTimer) sclbDebugMetrics.iTotalTime = GET_NET_TIMER_DIFFERENCE_WITH_CURRENT_TIME(sclbDebugMetrics.totalTimer,TRUE) ENDIF PRINT_SCLB_DEBUG_METRICS_DATA() SET_BIT(sclbDebugMetrics.iFlagsBS,SCLB_DEBUG_METRICS_FINISHED) ENDIF #ENDIF RETURN TRUE ENDFUNC /// PURPOSE: /// Clears the control struct for the social club board. /// This MUST be cleared if you are using common Social Club functions /// PARAMS: /// scLB_control - control struct to clear PROC SOCIAL_CLUB_CLEAR_CONTROL_STRUCT(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control) INT i NETWORK_CLAN_DESC emptyClanDes //GAMER_HANDLE emptyHandle //SC_LEADERBOARD_DISPLAY_ROW_STRUCT tempRow scLB_control.iLoadStage[0] = 0 scLB_control.iLoadStage[1] = 0 scLB_control.iLoadStage[2] = 0 scLB_control.iTempLoadStage = 0 #IF IS_DEBUG_BUILD RESET_SCLB_DEBUG_METRICS_DATA() #ENDIF scLB_control.iLoopCounter = 0 //scLB_control.iRowsThisLoop = 0 scLB_control.localPlayerClanInfo = emptyClanDes scLB_control.iBS = 0 scLB_control.iDataCounter = 0 scLB_control.ReadDataStruct.m_LeaderboardId = 0 scLB_control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_INVALID scLB_control.ReadDataStruct.m_ClanId = 0 scLB_control.ReadDataStruct.m_GroupSelector.m_NumGroups = 0 REPEAT LEADERBOARD_MAX_GROUPS i scLB_control.ReadDataStruct.m_GroupSelector.m_Group[i].m_Category = "" scLB_control.ReadDataStruct.m_GroupSelector.m_Group[i].m_Id = "" ENDREPEAT scLB_control.groupHandle[0].m_NumGroups = 0 REPEAT LEADERBOARD_MAX_GROUPS i scLB_control.groupHandle[0].m_Group[i].m_Category = "" scLB_control.groupHandle[0].m_Group[i].m_Id = "" ENDREPEAT DEBUG_PRINTCALLSTACK() println("SOCIAL_CLUB_CLEAR_CONTROL_STRUCT- called this frame") ENDPROC #IF IS_DEBUG_BUILD PROC PRINT_LEADERBOARD_SETUP_DETAILS(SC_LEADERBOARD_CONTROL_STRUCT &scLB_control,TEXT_LABEL_31 UniqueLBGroup,INT iMissionType,INT iSubType,INT iLaps,BOOL bCoDriver) IF g_bOutputSCLeaderboardSetupThisFrame println("PRINT_LEADERBOARD_SETUP_DETAILS- START") PRINTLN("UniqueLBGroup = ",UniqueLBGroup) PRINTLN("iMissionType = ",iMissionType) PRINTLN("iSubType = ",iSubType) PRINTLN("iLaps = ",iLaps) PRINTLN("bCoDriver = ",bCoDriver) println("scLB_control.ReadDataStruct.m_LeaderboardId = ",scLB_control.ReadDataStruct.m_LeaderboardId) println("scLB_Control.ReadDataStruct.m_Type = ", scLB_Control.ReadDataStruct.m_Type) println("scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = ",scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups) println("scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = ",scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category) println("scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = ",scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id) println("scLB_DisplayedData.displaySetup.iDisplayType = ", scLB_DisplayedData.displaySetup.iDisplayType) println("scLB_DisplayedData.displaySetup.sLeaderboardType = ", scLB_DisplayedData.displaySetup.sLeaderboardType) println("scLB_DisplayedData.displaySetup.sLeaderboardName = ",scLB_DisplayedData.displaySetup.sLeaderboardName) println("scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral = ",scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral) println("scLB_DisplayedData.sColumnTextName[0] = ",scLB_DisplayedData.sColumnTextName[0]) println("scLB_DisplayedData.sColumnTextName[1] = ",scLB_DisplayedData.sColumnTextName[1]) println("scLB_DisplayedData.sColumnTextName[2] = ",scLB_DisplayedData.sColumnTextName[2]) println("scLB_DisplayedData.sColumnTextName[3] = ",scLB_DisplayedData.sColumnTextName[3]) println("scLB_DisplayedData.iReadColumns[0] = ",scLB_DisplayedData.iReadColumns[0]) println("scLB_DisplayedData.iReadColumns[1] = ",scLB_DisplayedData.iReadColumns[1]) println("scLB_DisplayedData.iReadColumns[2] = ",scLB_DisplayedData.iReadColumns[2]) println("scLB_DisplayedData.iReadColumns[3] = ",scLB_DisplayedData.iReadColumns[3]) println("scLB_DisplayedData.iNumNonRankColumnsToDisplay = ", scLB_DisplayedData.iNumNonRankColumnsToDisplay) // println("IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) = ",IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])) // println("IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) = ",IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])) // println("IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) = ",IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])) // println("IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3]) = ",IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3])) println("scLB_DisplayedData.displaySetup.iLayout = ",scLB_DisplayedData.displaySetup.iLayout) // println("scLB_DisplayedData.displaySetup.iIcons[0] = ",scLB_DisplayedData.displaySetup.iIcons[0]) // println("scLB_DisplayedData.displaySetup.iIcons[1] = ",scLB_DisplayedData.displaySetup.iIcons[1]) // println("scLB_DisplayedData.displaySetup.iIcons[2] = ",scLB_DisplayedData.displaySetup.iIcons[2]) // println("scLB_DisplayedData.displaySetup.iIcons[3] = ",scLB_DisplayedData.displaySetup.iIcons[3]) println("scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ",scLB_DisplayedData.displaySetup.iColumnDisplayType[0]) println("scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ",scLB_DisplayedData.displaySetup.iColumnDisplayType[1]) println("scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ",scLB_DisplayedData.displaySetup.iColumnDisplayType[2]) println("scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ",scLB_DisplayedData.displaySetup.iColumnDisplayType[3]) g_bOutputSCLeaderboardSetupThisFrame = FALSE println("PRINT_LEADERBOARD_SETUP_DETAILS- END") ENDIF ENDPROC #ENDIF FUNC TEXT_LABEL_23 GET_SHOOTING_RANGE_CHALLENGE_NAME(INT iType) TEXT_LABEL_23 tempText SWITCH iType CASE FMMC_TYPE_SP_RANGE_PISTOL_1 tempText = "HUD_MG_RANGE0" BREAK CASE FMMC_TYPE_SP_RANGE_PISTOL_2 tempText = "HUD_MG_RANGE1" BREAK CASE FMMC_TYPE_SP_RANGE_PISTOL_3 tempText = "HUD_MG_RANGE2" BREAK CASE FMMC_TYPE_SP_RANGE_SMG_1 tempText = "HUD_MG_RANGE3" BREAK CASE FMMC_TYPE_SP_RANGE_SMG_2 tempText = "HUD_MG_RANGE4" BREAK CASE FMMC_TYPE_SP_RANGE_SMG_3 tempText = "HUD_MG_RANGE5" BREAK CASE FMMC_TYPE_SP_RANGE_SHOTGUN_1 tempText = "HUD_MG_RANGE6" BREAK CASE FMMC_TYPE_SP_RANGE_SHOTGUN_2 tempText = "HUD_MG_RANGE7" BREAK CASE FMMC_TYPE_SP_RANGE_SHOTGUN_3 tempText = "HUD_MG_RANGE8" BREAK CASE FMMC_TYPE_SP_RANGE_AR_1 tempText = "HUD_MG_RANGE9" BREAK CASE FMMC_TYPE_SP_RANGE_AR_2 tempText = "HUD_MG_RANGE10" BREAK CASE FMMC_TYPE_SP_RANGE_AR_3 tempText = "HUD_MG_RANGE11" BREAK CASE FMMC_TYPE_SP_RANGE_LMG_1 tempText = "HUD_MG_RANGE12" BREAK CASE FMMC_TYPE_SP_RANGE_LMG_2 tempText = "HUD_MG_RANGE13" BREAK CASE FMMC_TYPE_SP_RANGE_LMG_3 tempText = "HUD_MG_RANGE14" BREAK CASE FMMC_TYPE_SP_RANGE_HEAVY_1 tempText = "HUD_MG_RANGE15" BREAK CASE FMMC_TYPE_SP_RANGE_HEAVY_2 tempText = "HUD_MG_RANGE16" BREAK CASE FMMC_TYPE_SP_RANGE_HEAVY_3 tempText = "HUD_MG_RANGE17" BREAK CASE FMMC_TYPE_SP_RANGE_RAILGUN_1 tempText = "HUD_MG_RANGE18" BREAK CASE FMMC_TYPE_SP_RANGE_RAILGUN_2 tempText = "HUD_MG_RANGE19" BREAK CASE FMMC_TYPE_SP_RANGE_RAILGUN_3 tempText = "HUD_MG_RANGE20" BREAK CASE FMMC_TYPE_SP_RANGE_RAILGUN_4 tempText = "HUD_MG_RANGE21" BREAK ENDSWITCH RETURN tempText ENDFUNC FUNC TEXT_LABEL_23 GET_ARENA_WARS_MODE_NAME(INT iType) TEXT_LABEL_23 tempText SWITCH iType CASE SCLB_TYPE_ARENA_MODE_BUZZER_BEATER tempText = "BuzzerBeater" BREAK CASE SCLB_TYPE_ARENA_MODE_CARNAGE tempText = "Carnage" BREAK CASE SCLB_TYPE_ARENA_MODE_FLAG_WAR tempText ="FlagWar" BREAK CASE SCLB_TYPE_ARENA_MODE_WRECK_IT tempText = "WreckIt" BREAK CASE SCLB_TYPE_ARENA_MODE_BOMB_BALL tempText = "BombBall" BREAK CASE SCLB_TYPE_ARENA_MODE_GAMES_MASTERS tempText = "GamesMasters" BREAK CASE SCLB_TYPE_ARENA_MODE_MONSTERS tempText = "Monsters" BREAK CASE SCLB_TYPE_ARENA_MODE_HOT_BOMB tempText = "HotBomb" BREAK CASE SCLB_TYPE_ARENA_MODE_TAG_TEAM tempText = "TagTeam" BREAK DEFAULT PRINTLN("GET_ARENA_WARS_MODE_NAME: invalid ID# ",iType," passed in! See Conor") SCRIPT_ASSERT("GET_ARENA_WARS_MODE_NAME: invalid ID# passed in! See Conor") BREAK ENDSWITCH RETURN tempText ENDFUNC /// PURPOSE: /// To setup common leaderboard read parameters /// PARAMS: /// scLB_control - struct used to control leaderboard read progress /// iMissionType - used to indicate what setup is used /// UniqueLBGroupingIdentifier - Explaination below* /// stMissionName - Only used for User Generated Content (UGC) /// iSubType - subtype of mission type /// iLaps - used only for races // UniqueLBGroupingIdentifier - THIS IS ONLY NEEDED IF THE LEADERBOARD YOU ARE WRITING TO HAS GROUPS. // Because we only have a single leaderboard we need a way to group together data this is based on a unique ID. // For UGC this identifier is automatically created when a file is saved. // If the leaderboard you are using is NOT reling upon UGC you can make up whatever identifier you want. PROC SETUP_SOCIAL_CLUB_LEADERBOARD_READ_DATA(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control, INT iMissionType, STRING UniqueLBGroupingIdentifier,STRING stMissionName, INT iSubType = -1, INT iLaps = -1, BOOL bCoDriver = FALSE, BOOL bMinigameDisplay = FALSE) TEXT_LABEL_31 UniqueLBGroup IF NOT IS_STRING_NULL_OR_EMPTY(UniqueLBGroupingIdentifier) //AND NOT IS_STRING_NULL_OR_EMPTY(creatorID) UniqueLBGroup = UniqueLBGroupingIdentifier ENDIF IF bMinigameDisplay ENDIF ///Leaderboard2ReadData ReadDataStruct TEXT_LABEL_31 lapText INT i scLB_DisplayedData.iReadColumnIsIntBS = 0 scLB_DisplayedData.iDisplayColumnIsIntBS = 0 scLB_DisplayedData.iInvalidDataSetBS = 0 GAMER_USERID localUserID SWITCH iMissionType CASE FMMC_TYPE_RACE IF iSubType = ciRACE_SUB_TYPE_STANDARD IF iLaps > 0 AND NOT IS_THIS_RACE_A_POINT_2_POINT_RACE() scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_RACES_LAPS) ELSE scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_RACES) ENDIF scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Mission" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup IF iLaps > 0 AND NOT IS_THIS_RACE_A_POINT_2_POINT_RACE() scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 2 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "Laps" lapText = "" lapText += iLaps scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = lapText scLB_DisplayedData.displaySetup.iLaps = iLaps IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName) IF iLaps = 1 scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RCE_L1" scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RCE_LM" scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName ENDIF ELSE IF iLaps = 1 scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RCE_NN_L1" ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RCE_NN_LM" ENDIF ENDIF ELSE IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName) scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RCE" scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RCE_NN" ENDIF scLB_DisplayedData.displaySetup.iLaps = -1 ENDIF scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) //scLB_DisplayedData.iReadColumns[0] = 5 //best lap first IF iLaps <= 0 OR IS_THIS_RACE_A_POINT_2_POINT_RACE() scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_BL" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_VEH" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_RANK" scLB_DisplayedData.sColumnTextName[3] = "" scLB_DisplayedData.iReadColumns[0] = 1 scLB_DisplayedData.iReadColumns[1] = 3 scLB_DisplayedData.iReadColumns[2] = 0 scLB_DisplayedData.iReadColumns[3] = 0 scLB_DisplayedData.iCustomVehicleColumn = 4 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 2 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS) ////scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_VEHICLE) //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_LAP) //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_VEHICLE) //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_POSITION) //scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) ELSE scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_RT" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_BL" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_VEH" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_RANK" scLB_DisplayedData.iReadColumns[0] = 2 scLB_DisplayedData.iReadColumns[1] = 1 scLB_DisplayedData.iReadColumns[2] = 3 scLB_DisplayedData.iReadColumns[3] = 0 scLB_DisplayedData.iCustomVehicleColumn = 4 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS) ////scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_VEHICLE) //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_TIME) //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_LAP) //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_VEHICLE) //scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION) //scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) ENDIF scLB_DisplayedData.iCoronaBoxColumn = 0 ELIF iSubType = ciRACE_SUB_TYPE_GTA //*SCORE_COLUMN( AGG_MAX ) : COLUMN_ID_LB_SCORE - LBCOLUMNTYPE_INT64 //BEST_LAP_TIME( AGG_LAST ) : COLUMN_ID_LB_BEST_TIME - LBCOLUMNTYPE_INT64 // TOTAL_TIME( AGG_LAST ) : COLUMN_ID_LB_TOTAL_TIME - LBCOLUMNTYPE_INT64 // KILLS( AGG_LAST ) : COLUMN_ID_LB_KILLS - LBCOLUMNTYPE_INT32 // DEATHS( AGG_LAST ) : COLUMN_ID_LB_DEATHS - LBCOLUMNTYPE_INT32 //VEHICLE_ID( AGG_LAST ) : COLUMN_ID_LB_VEHICLE_ID - LBCOLUMNTYPE_INT32 //VEHICLE_COLOR( AGG_LAST ) : COLUMN_ID_LB_VEHICLE_COLOR - LBCOLUMNTYPE_INT32 IF iLaps > 0 AND NOT IS_THIS_RACE_A_POINT_2_POINT_RACE() scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_GTA_RACES_LAPS) ELSE scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_GTA_RACES) ENDIF scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Mission" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup IF iLaps > 0 AND NOT IS_THIS_RACE_A_POINT_2_POINT_RACE() scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 2 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "Laps" lapText = "" lapText += iLaps scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = lapText scLB_DisplayedData.displaySetup.iLaps = iLaps IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName) IF iLaps = 1 scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_GRCE_L1" scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_GRCE_LM" scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName ENDIF ELSE IF iLaps = 1 scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_GRCE_NN_L1" ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_GRCE_NN_LM" ENDIF ENDIF ELSE scLB_DisplayedData.displaySetup.iLaps = -1 IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName) scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_GRCE" scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_GRCE_NN" ENDIF ENDIF scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) IF iLaps <= 0 OR IS_THIS_RACE_A_POINT_2_POINT_RACE() scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_BL" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_VEH" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_RANK" scLB_DisplayedData.sColumnTextName[3] = "" scLB_DisplayedData.iReadColumns[0] = 1 scLB_DisplayedData.iReadColumns[1] = 5 scLB_DisplayedData.iReadColumns[2] = 0 scLB_DisplayedData.iReadColumns[3] = 0 scLB_DisplayedData.iCustomVehicleColumn = 6 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 2 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS) ////scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_VEHICLE) //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_LAP) //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_VEHICLE) //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_POSITION) //scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) ELSE scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_RT" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_BL" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_VEH" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_RANK" scLB_DisplayedData.iReadColumns[0] = 2 scLB_DisplayedData.iReadColumns[1] = 1 scLB_DisplayedData.iReadColumns[2] = 5 scLB_DisplayedData.iReadColumns[3] = 0 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3 scLB_DisplayedData.iCustomVehicleColumn = 6 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS) ////scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_VEHICLE) //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_TIME) //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_LAP) //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_VEHICLE) //scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION) //scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) //println("SETUP_SOCIAL_CLUB_LEADERBOARD_READ_DATA: Reading RACE GTA leaderboard") ENDIF scLB_DisplayedData.iCoronaBoxColumn = 0 ELIF iSubType = ciRACE_SUB_TYPE_RALLY IF iLaps > 0 AND NOT IS_THIS_RACE_A_POINT_2_POINT_RACE() scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_RALLY_LAPS) ELSE scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_RALLY) ENDIF scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 2 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Mission" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup IF NOT bCoDriver scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "CoDriver" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "" //"RSN_ConorM_2" ELSE scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "CoDriver" NETWORK_PLAYER_GET_USERID(PLAYER_ID(),localUserID) scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = localUserID.Name scLB_DisplayedData.displaySetup.bCoDriver = TRUE ENDIF IF iLaps > 0 AND NOT IS_THIS_RACE_A_POINT_2_POINT_RACE() scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups =3 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Category = "Laps" lapText = "" lapText += iLaps scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Id = lapText scLB_DisplayedData.displaySetup.iLaps = iLaps IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName) IF iLaps = 1 scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RRCE_L1" scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RRCE_LM" scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName ENDIF ELSE IF iLaps = 1 scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RRCE_NN_L1" ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RRCE_NN_LM" ENDIF ENDIF ELSE scLB_DisplayedData.displaySetup.iLaps = -1 IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName) scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RRCE" scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RRCE_NN" ENDIF ENDIF IF iLaps <= 0 OR IS_THIS_RACE_A_POINT_2_POINT_RACE() scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_BL" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_VEH" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_RANK" scLB_DisplayedData.sColumnTextName[3] = "" scLB_DisplayedData.iReadColumns[0] = 1 scLB_DisplayedData.iReadColumns[1] = 3 scLB_DisplayedData.iReadColumns[2] = 0 scLB_DisplayedData.iReadColumns[3] = 0 scLB_DisplayedData.iCustomVehicleColumn = 4 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 2 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS) ////scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_VEHICLE) //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_LAP) //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_VEHICLE) //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_POSITION) //scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) ELSE //scLB_DisplayedData.iReadColumns[0] = 5 //best lap first scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_RT" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_BL" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_VEH" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_RANK" scLB_DisplayedData.iReadColumns[0] = 2 scLB_DisplayedData.iReadColumns[1] = 1 scLB_DisplayedData.iReadColumns[2] = 3 scLB_DisplayedData.iReadColumns[3] = 0 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3 scLB_DisplayedData.iCustomVehicleColumn = 4 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS) ////scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_VEHICLE) //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_TIME) //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_LAP) //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_VEHICLE) //scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION) //scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) //println("SETUP_SOCIAL_CLUB_LEADERBOARD_READ_DATA: Reading RACE RALLY leaderboard") ENDIF //scLB_DisplayedData.iCacheHashID = SC_LC_GENERATE_ID_FOR_CACHE(scLB_control.ReadDataStruct.m_LeaderboardId,iMissionType,iSubType,iLaps,bCoDriver) scLB_DisplayedData.iCoronaBoxColumn = 0 ELIF iSubType = FMMC_RACE_TYPE_ON_FOOT OR iSubType = FMMC_RACE_TYPE_ON_FOOT_P2P //println("Setup on foot race LB!") //*SCORE_COLUMN( AGG_MAX ) : COLUMN_ID_LB_SCORE - LBCOLUMNTYPE_INT64 //BEST_LAP_TIME( AGG_LAST ) : COLUMN_ID_LB_BEST_TIME - LBCOLUMNTYPE_INT64 // TOTAL_TIME( AGG_LAST ) : COLUMN_ID_LB_TOTAL_TIME - LBCOLUMNTYPE_INT64 // KILLS( AGG_LAST ) : COLUMN_ID_LB_KILLS - LBCOLUMNTYPE_INT32 // DEATHS( AGG_LAST ) : COLUMN_ID_LB_DEATHS - LBCOLUMNTYPE_INT32 //VEHICLE_ID( AGG_LAST ) : COLUMN_ID_LB_VEHICLE_ID - LBCOLUMNTYPE_INT32 //VEHICLE_COLOR( AGG_LAST ) : COLUMN_ID_LB_VEHICLE_COLOR - LBCOLUMNTYPE_INT32 IF iLaps > 0 AND NOT IS_THIS_RACE_A_POINT_2_POINT_RACE() scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_ON_FOOT_RACE_LAPS) ELSE scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_ON_FOOT_RACE) ENDIF scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Mission" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup IF iLaps > 0 AND NOT IS_THIS_RACE_A_POINT_2_POINT_RACE() scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 2 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "Laps" lapText = "" lapText += iLaps scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = lapText scLB_DisplayedData.displaySetup.iLaps = iLaps IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName) IF iLaps = 1 scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_FRCE_L1" scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_FRCE_LM" scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName ENDIF ELSE IF iLaps = 1 scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_FRCE_NN_L1" ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_FRCE_NN_LM" ENDIF ENDIF ELSE scLB_DisplayedData.displaySetup.iLaps = -1 IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName) scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_FRCE" scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_FRCE_NN" ENDIF ENDIF scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) IF iLaps <= 0 OR IS_THIS_RACE_A_POINT_2_POINT_RACE() scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_BL" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_RANK" scLB_DisplayedData.sColumnTextName[3] = "" scLB_DisplayedData.iReadColumns[0] = 1 scLB_DisplayedData.iReadColumns[1] = 0 scLB_DisplayedData.iReadColumns[2] = 0 scLB_DisplayedData.iReadColumns[3] = 0 scLB_DisplayedData.iCustomVehicleColumn = 0 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 1 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS) ////scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_VEHICLE) //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_LAP) //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_POSITION) //scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) ELSE scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_RT" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_BL" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_RANK" scLB_DisplayedData.iReadColumns[0] = 2 scLB_DisplayedData.iReadColumns[1] = 1 scLB_DisplayedData.iReadColumns[2] = 0 scLB_DisplayedData.iReadColumns[3] = 0 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 2 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS) ////scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_VEHICLE) //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_TIME) //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_LAP) //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_POSITION) //scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) //println("SETUP_SOCIAL_CLUB_LEADERBOARD_READ_DATA: Reading RACE GTA leaderboard") ENDIF scLB_DisplayedData.iCoronaBoxColumn = 0 ELIF iSubType = ciRACE_SUB_TYPE_NON_CONTACT IF iLaps > 0 AND NOT IS_THIS_RACE_A_POINT_2_POINT_RACE() scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_NON_CONTACT_RACES_1_LAPS) +(iLaps-1) ELSE scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_NON_CONTACT_RACES) ENDIF scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Mission" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup IF iLaps > 0 AND NOT IS_THIS_RACE_A_POINT_2_POINT_RACE() scLB_DisplayedData.displaySetup.iLaps = iLaps IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName) IF iLaps = 1 scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RCE_L1" scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RCE_LM" scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName ENDIF ELSE IF iLaps = 1 scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RCE_NN_L1" ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RCE_NN_LM" ENDIF ENDIF ELSE IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName) scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RCE" scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RCE_NN" ENDIF scLB_DisplayedData.displaySetup.iLaps = -1 ENDIF scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) //scLB_DisplayedData.iReadColumns[0] = 5 //best lap first IF iLaps <= 0 OR IS_THIS_RACE_A_POINT_2_POINT_RACE() scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_BL" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_VEH" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_RANK" scLB_DisplayedData.sColumnTextName[3] = "" scLB_DisplayedData.iReadColumns[0] = 1 scLB_DisplayedData.iReadColumns[1] = 3 scLB_DisplayedData.iReadColumns[2] = 0 scLB_DisplayedData.iReadColumns[3] = 0 scLB_DisplayedData.iCustomVehicleColumn = 4 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 2 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS) ////scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_VEHICLE) //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_LAP) //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_VEHICLE) //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_POSITION) //scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) ELSE scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_RT" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_BL" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_VEH" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_RANK" scLB_DisplayedData.iReadColumns[0] = 2 scLB_DisplayedData.iReadColumns[1] = 1 scLB_DisplayedData.iReadColumns[2] = 3 scLB_DisplayedData.iReadColumns[3] = 0 scLB_DisplayedData.iCustomVehicleColumn = 4 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS) ////scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_VEHICLE) //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_TIME) //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_LAP) //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_VEHICLE) //scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION) //scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) ENDIF scLB_DisplayedData.iCoronaBoxColumn = 0 ENDIF BREAK CASE FMMC_TYPE_DEATHMATCH //KILLS( AGG_SUM ) : COLUMN_ID_LB_KILLS - CLAN_LBCOLUMNTYPE_INT32 // DEATHS( AGG_SUM ) : COLUMN_ID_LB_DEATHS - CLAN_LBCOLUMNTYPE_INT32 // KILL_DEATH_RATIO( AGG_SUM ) : COLUMN_ID_LB_DEATH_RATIO - CLAN_LBCOLUMNTYPE_INT32 IF iSubType = FMMC_DM_TYPE_NORMAL OR iSubType = FMMC_DM_TYPE_KOTH scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_DEATHMATCH) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Mission" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) IF iSubType = FMMC_DM_TYPE_KOTH IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName) scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_KOTH" scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_KOTH_NN" ENDIF ELSE IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName) scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_DM" scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_DM_NN" ENDIF ENDIF scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_WLRAT" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_WINS" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_LOSES" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_KD" scLB_DisplayedData.sColumnTextName[4] = "SCLB_C_KILLS" scLB_DisplayedData.sColumnTextName[5] = "SCLB_C_DEATH" scLB_DisplayedData.iReadColumns[0] = 0 scLB_DisplayedData.iReadColumns[1] = 4 scLB_DisplayedData.iReadColumns[2] = 6 scLB_DisplayedData.iReadColumns[3] = 3 scLB_DisplayedData.iReadColumns[4] = 1 scLB_DisplayedData.iReadColumns[5] = 2 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 6 CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[4]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[5]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT) scLB_DisplayedData.displaySetup.iColumnDisplayType[4] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[5] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) //println("SETUP_SOCIAL_CLUB_LEADERBOARD_READ_DATA: Reading DM NORMAL leaderboard") ELIF iSubType = FMMC_DM_TYPE_TEAM OR iSubType = FMMC_DM_TYPE_TEAM_KOTH scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_TEAM_DEATHMATCH) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Mission" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) IF iSubType = FMMC_DM_TYPE_TEAM_KOTH IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName) scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_TKOTH" scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_TKOTH_NN" ENDIF ELSE IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName) scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_TDM" scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_TDM_NN" ENDIF ENDIF scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_WLRAT" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_WINS" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_LOSES" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_KD" scLB_DisplayedData.sColumnTextName[4] = "SCLB_C_KILLS" scLB_DisplayedData.sColumnTextName[5] = "SCLB_C_DEATH" scLB_DisplayedData.iReadColumns[0] = 0 scLB_DisplayedData.iReadColumns[1] = 4 scLB_DisplayedData.iReadColumns[2] = 6 scLB_DisplayedData.iReadColumns[3] = 3 scLB_DisplayedData.iReadColumns[4] = 1 scLB_DisplayedData.iReadColumns[5] = 2 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 6 CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[4]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[5]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT) scLB_DisplayedData.displaySetup.iColumnDisplayType[4] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[5] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) ELIF iSubType = FMMC_DM_TYPE_VEHICLE scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_VEHICLE_DEATHMATCH) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Mission" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName) scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_VEHDM" scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_VEHDM_NN" ENDIF scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_WLRAT" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_WINS" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_LOSES" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_KD" scLB_DisplayedData.sColumnTextName[4] = "SCLB_C_KILLS" scLB_DisplayedData.sColumnTextName[5] = "SCLB_C_DEATH" scLB_DisplayedData.iReadColumns[0] = 0 scLB_DisplayedData.iReadColumns[1] = 4 scLB_DisplayedData.iReadColumns[2] = 6 scLB_DisplayedData.iReadColumns[3] = 3 scLB_DisplayedData.iReadColumns[4] = 1 scLB_DisplayedData.iReadColumns[5] = 2 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 6 CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[4]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[5]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT) scLB_DisplayedData.displaySetup.iColumnDisplayType[4] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[5] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) ENDIF BREAK CASE FMMC_TYPE_MG_GOLF scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_GOLF) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "GameType" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "MP" scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_GOLF" scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_GOLF0" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_GOLF1" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_GAMES" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_RANK" scLB_DisplayedData.iReadColumns[0] = 0 //best round scLB_DisplayedData.iReadColumns[1] = 1 //longest drive scLB_DisplayedData.iReadColumns[2] = 3 //num matches scLB_DisplayedData.iReadColumns[3] = 0 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS) //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_CROWN) //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_GOLF_CLUB) //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_GOLF) //scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT_NEG_B4_DIS) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) BREAK CASE FMMC_TYPE_MG_GOLF_SP scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_GOLF) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "GameType" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "SP" scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_GOLF" scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_GOLF0" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_GOLF1" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_GAMES" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_RANK" scLB_DisplayedData.iReadColumns[0] = 0 //best round scLB_DisplayedData.iReadColumns[1] = 1 //longest drive scLB_DisplayedData.iReadColumns[2] = 3 //num matches scLB_DisplayedData.iReadColumns[3] = 0 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS) //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_CROWN) //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_GOLF_CLUB) //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_GOLF) //scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT_NEG_B4_DIS) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) BREAK CASE FMMC_TYPE_MG_HUNTING // Want score, Time to Gold, Kills, Heart shots, and Photos sent scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_HUNTING) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_PLAYER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 0 scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_HUNTING" scLB_DisplayedData.displaySetup.sLeaderboardName = "CMSW" scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral = FALSE scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MINIGAME) scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_HSCORE" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_TIMEHUNT" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_EKILLS" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_PHOTOS" scLB_DisplayedData.sColumnTextName[4] = "SCLB_C_MONEY" //scLB_DisplayedData.sColumnTextName[5] = "" scLB_DisplayedData.iReadColumns[0] = 0 // Score scLB_DisplayedData.iReadColumns[1] = 5 // wins scLB_DisplayedData.iReadColumns[2] = 2 // LOSES scLB_DisplayedData.iReadColumns[3] = 4 scLB_DisplayedData.iReadColumns[4] = 6 //scLB_DisplayedData.iReadColumns[5] = 0 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 5 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[4]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_5_STATS) //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_POINT) //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_TIME) //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_KILLS) //scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_CROSSHAIR) //scLB_DisplayedData.displaySetup.iIcons[4] = ENUM_TO_INT(ICON_DOLLAR) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_GOLD_TIME) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[4] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) BREAK CASE FMMC_TYPE_MG_ARM_WRESTLING scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_ARM_WRESTLING) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_PLAYER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 0 scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_ARM" scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_WINS" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_LOSES" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_WLRAT" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_RANK" scLB_DisplayedData.iReadColumns[0] = 2 //wins scLB_DisplayedData.iReadColumns[1] = 5 //loses scLB_DisplayedData.iReadColumns[2] = 0 //ratio scLB_DisplayedData.iReadColumns[3] = 0 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS) //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_WINNER) //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_ARM) //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_SCALE) //scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) //println("Setup arm wrestling leaderboard read data") BREAK CASE FMMC_TYPE_MG_DARTS scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_DARTS) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "GameType" IF iSubType = -1 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "MP" ELSE scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "SP" ENDIF scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_DARTS" scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_WLRAT" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_WINS" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_LOSES" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_RANK" scLB_DisplayedData.iReadColumns[0] = 0 //ratio scLB_DisplayedData.iReadColumns[1] = 7 //wins scLB_DisplayedData.iReadColumns[2] = 5 //LOSES scLB_DisplayedData.iReadColumns[3] = 0 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3 CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS) //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_SCALE) //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_WINNER) //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_DART) //scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) BREAK CASE FMMC_TYPE_MG_TENNIS scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_TENNIS) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "GameType" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "MP" // scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "Location" // scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "ElBarto" // scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Category = "Type" // scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Id = "????" scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_TENNIS" scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName IF IS_STRING_NULL_OR_EMPTY(stMissionName) scLB_DisplayedData.displaySetup.sLeaderboardName = "HUD_MG_TENNIS" scLB_DisplayedData.displaySetup.sLeaderboardName += (iSubType+1) ENDIF scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral = FALSE scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_WINS" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_LOSES" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_TEN1" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_TEN2" scLB_DisplayedData.sColumnTextName[4] = "SCLB_C_TEN0" scLB_DisplayedData.iReadColumns[0] = 0 //wins scLB_DisplayedData.iReadColumns[1] = 9 //loses scLB_DisplayedData.iReadColumns[2] = 7 //sets won scLB_DisplayedData.iReadColumns[3] = 5 //games won scLB_DisplayedData.iReadColumns[4] = 2 //aces scLB_DisplayedData.iNumNonRankColumnsToDisplay = 5 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[4]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS) //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_TENNIS_BALL) //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_WINNER) //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_LOSER) //scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[4] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) BREAK CASE FMMC_TYPE_MG_TENNIS_SP scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_TENNIS) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "GameType" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "SP" scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_TENNIS" scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral = FALSE scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_WINS" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_LOSES" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_TEN1" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_TEN2" scLB_DisplayedData.sColumnTextName[4] = "SCLB_C_TEN0" scLB_DisplayedData.iReadColumns[0] = 0 //wins scLB_DisplayedData.iReadColumns[1] = 9 //loses scLB_DisplayedData.iReadColumns[2] = 7 //sets won scLB_DisplayedData.iReadColumns[3] = 5 //games won scLB_DisplayedData.iReadColumns[4] = 2 //aces scLB_DisplayedData.iNumNonRankColumnsToDisplay = 5 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[4]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS) //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_TENNIS_BALL) //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_WINNER) //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_LOSER) //scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[4] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) BREAK CASE FMMC_TYPE_MG_SHOOTING_RANGE scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_MP_SRANGE) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 2 SWITCH iSubType CASE 0 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Type" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "RANDOM" scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_RANGEa" BREAK CASE 1 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Type" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "GRID" scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_RANGEb" BREAK CASE 2 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Type" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "COVERED" scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_RANGEc" BREAK DEFAULT scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Type" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "RANDOM" scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_RANGEa" #IF IS_DEBUG_BUILD println(iSubType," FMMC_TYPE_MG_SHOOTING_RANGE: FAILED- incorrect arguments passed to setup! called from: ", GET_THIS_SCRIPT_NAME()) SCRIPT_ASSERT("SETUP_SOCIAL_CLUB_LEADERBOARD_READ_DATA: Shooting range leaderboard failed to pass in correct setup. See Conor.") #ENDIF BREAK ENDSWITCH SWITCH iLaps CASE 0 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "WeaponId" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "Pistols" scLB_DisplayedData.displaySetup.sLeaderboardName = "HUD_MG_PISTOL" BREAK CASE 1 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "WeaponId" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "SMGs" scLB_DisplayedData.displaySetup.sLeaderboardName = "HUD_MG_SMG" BREAK CASE 2 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "WeaponId" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "AssaultRifles" scLB_DisplayedData.displaySetup.sLeaderboardName = "HUD_MG_ASSAULT" BREAK CASE 3 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "WeaponId" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "Shotguns" scLB_DisplayedData.displaySetup.sLeaderboardName = "HUD_MG_SHOTGUN" BREAK CASE 4 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "WeaponId" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "LMGs" scLB_DisplayedData.displaySetup.sLeaderboardName = "HUD_MG_LMG" BREAK CASE 5 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "WeaponId" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "Heavies" scLB_DisplayedData.displaySetup.sLeaderboardName = "HUD_MG_HEAVY" BREAK DEFAULT scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "WeaponId" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "Pistols" scLB_DisplayedData.displaySetup.sLeaderboardName = "HUD_MG_PISTOL" #IF IS_DEBUG_BUILD println(iSubType, " FMMC_TYPE_MG_SHOOTING_RANGE: FAILED- incorrect arguments passed to setup! called from: ", GET_THIS_SCRIPT_NAME()) SCRIPT_ASSERT("SETUP_SOCIAL_CLUB_LEADERBOARD_READ_DATA: Shooting range leaderboard failed to pass in correct setup. See Conor.") #ENDIF BREAK ENDSWITCH scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral = FALSE scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_WLRAT" scLB_DisplayedData.sColumnTextName[1] = "SCLB_HITS" scLB_DisplayedData.sColumnTextName[2] = "SCLB_SHOTS" scLB_DisplayedData.sColumnTextName[3] = "SCLB_ACC" scLB_DisplayedData.iReadColumns[0] = 0 //score scLB_DisplayedData.iReadColumns[1] = 2 //hit scLB_DisplayedData.iReadColumns[2] = 1 //fired scLB_DisplayedData.iReadColumns[3] = 3 //accuracy scLB_DisplayedData.iNumNonRankColumnsToDisplay = 4 CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS) //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_CROSSHAIR) //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_GUN) //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_POSITION) //scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_NONE) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT) BREAK // CASE FMMC_TYPE_MG_RANGE_GRID // scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_SRANGE) // scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER // scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 2 // scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "GameType" // scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "MP" // scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "Type" // scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "GRID" // scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MINIGAME) // scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_RANGE" // scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_SCORE" // scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_WEAP" // scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_RANK" // scLB_DisplayedData.sColumnTextName[3] = "" // scLB_DisplayedData.iReadColumns[0] = 0 //score // scLB_DisplayedData.iReadColumns[1] = 1 //weapon // scLB_DisplayedData.iReadColumns[2] = 0 // scLB_DisplayedData.iReadColumns[3] = 0 // scLB_DisplayedData.iNumNonRankColumnsToDisplay = 2 // SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) // SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) // scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS) // //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_CROSSHAIR) // //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_GUN) // //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_POSITION) // //scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_NONE) // scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) // scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_GUN) // scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) // scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_NONE) // RETURN TRUE // BREAK // CASE FMMC_TYPE_MG_RANGE_COVERED // scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_SRANGE) // scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER // scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 2 // scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "GameType" // scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "MP" // scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "Type" // scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "COVERED" // scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MINIGAME) // scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_RANGE" // scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_SCORE" // scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_WEAP" // scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_RANK" // scLB_DisplayedData.sColumnTextName[3] = "" // scLB_DisplayedData.iReadColumns[0] = 0 //score // scLB_DisplayedData.iReadColumns[1] = 1 //weapon // scLB_DisplayedData.iReadColumns[2] = 0 // scLB_DisplayedData.iReadColumns[3] = 0 // scLB_DisplayedData.iNumNonRankColumnsToDisplay = 2 // SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) // SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) // scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS) // //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_CROSSHAIR) // //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_GUN) // //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_POSITION) // //scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_NONE) // scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) // scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_GUN) // scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) // scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_NONE) // RETURN TRUE // BREAK // CASE FMMC_TYPE_MG_RANGE_RANDOM // scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_SRANGE) // scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER // scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 2 // scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "GameType" // scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "MP" // scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "Type" // scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "RANDOM" // scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MINIGAME) // scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_RANGE" // scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_SCORE" // scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_WEAP" // scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_RANK" // scLB_DisplayedData.sColumnTextName[3] = "" // scLB_DisplayedData.iReadColumns[0] = 0 //score // scLB_DisplayedData.iReadColumns[1] = 1 //weapon // scLB_DisplayedData.iReadColumns[2] = 0 // scLB_DisplayedData.iReadColumns[3] = 0 // scLB_DisplayedData.iNumNonRankColumnsToDisplay = 2 // SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) // SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) // scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS) // //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_CROSSHAIR) // //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_GUN) // //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_POSITION) // //scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_NONE) // scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) // scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_GUN) // scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) // scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_NONE) // RETURN TRUE // BREAK CASE FMMC_TYPE_SP_RANGE_PISTOL_1 CASE FMMC_TYPE_SP_RANGE_PISTOL_2 CASE FMMC_TYPE_SP_RANGE_PISTOL_3 CASE FMMC_TYPE_SP_RANGE_SMG_1 CASE FMMC_TYPE_SP_RANGE_SMG_2 CASE FMMC_TYPE_SP_RANGE_SMG_3 CASE FMMC_TYPE_SP_RANGE_SHOTGUN_1 CASE FMMC_TYPE_SP_RANGE_SHOTGUN_2 CASE FMMC_TYPE_SP_RANGE_SHOTGUN_3 CASE FMMC_TYPE_SP_RANGE_AR_1 CASE FMMC_TYPE_SP_RANGE_AR_2 CASE FMMC_TYPE_SP_RANGE_AR_3 CASE FMMC_TYPE_SP_RANGE_LMG_1 CASE FMMC_TYPE_SP_RANGE_LMG_2 CASE FMMC_TYPE_SP_RANGE_LMG_3 CASE FMMC_TYPE_SP_RANGE_HEAVY_1 CASE FMMC_TYPE_SP_RANGE_HEAVY_2 CASE FMMC_TYPE_SP_RANGE_HEAVY_3 CASE FMMC_TYPE_SP_RANGE_RAILGUN_1 CASE FMMC_TYPE_SP_RANGE_RAILGUN_2 CASE FMMC_TYPE_SP_RANGE_RAILGUN_3 CASE FMMC_TYPE_SP_RANGE_RAILGUN_4 scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_SRANGE) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Type" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_RANGE" scLB_DisplayedData.displaySetup.sLeaderboardName = GET_SHOOTING_RANGE_CHALLENGE_NAME(iMissionType) scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral = FALSE scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_SCORE" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_WEAP" // scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_RANK" // scLB_DisplayedData.sColumnTextName[3] = "" scLB_DisplayedData.iReadColumns[0] = 0 //score scLB_DisplayedData.iReadColumns[1] = 7 //weapon // scLB_DisplayedData.iReadColumns[2] = 0 // scLB_DisplayedData.iReadColumns[3] = 0 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 2 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS) //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_CROSSHAIR) //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_GUN) // //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_POSITION) // //scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_NONE) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_GUN) // scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) // scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_NONE) BREAK CASE FMMC_TYPE_SP_TRI_ALAMO CASE FMMC_TYPE_SP_TRI_LOSSANTOS CASE FMMC_TYPE_SP_TRI_VESPUCCI scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_TRIATHLON) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Location" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_TRI" scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral = FALSE scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_TIME" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_RANK" scLB_DisplayedData.sColumnTextName[2] = "" scLB_DisplayedData.sColumnTextName[3] = "" scLB_DisplayedData.iReadColumns[0] = 0 //time scLB_DisplayedData.iReadColumns[1] = 0 scLB_DisplayedData.iReadColumns[2] = 0 scLB_DisplayedData.iReadColumns[3] = 0 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 1 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_2_STATS) //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_TIME) //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_POSITION) //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_NONE) //scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_NONE) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME_NEG_B4_DIS)//SCLB_DATA_TYPE_TIME) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_NONE) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_NONE) BREAK CASE FMMC_TYPE_SP_OFFROAD_RACES scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_RACES) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 3 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "GameType" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "SP" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "Location" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = UniqueLBGroup scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Category = "Type" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Id = "OffroadRace" scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral = FALSE scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) scLB_DisplayedData.displaySetup.sLeaderboardType = "OFFR_TITLE" scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_TIME" //scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_RANK" scLB_DisplayedData.iReadColumns[0] = 3 //time //scLB_DisplayedData.iReadColumns[1] = 1 //race rank (only takes 1 2 or 3) scLB_DisplayedData.iNumNonRankColumnsToDisplay = 1 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) //SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_2_STATS) // scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_TIME) // scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_POSITION) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME) //scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) BREAK CASE FMMC_TYPE_SURVIVAL scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_SURVIVAL) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Mission" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName) scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_HRD" scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_HRD_NN" ENDIF scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_SCORE" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_WAVE" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_TKILLS" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_TDEATH" scLB_DisplayedData.iReadColumns[0] = 0 scLB_DisplayedData.iReadColumns[1] = 1 //waves scLB_DisplayedData.iReadColumns[2] = 2 //kills scLB_DisplayedData.iReadColumns[3] = 3 // deaths scLB_DisplayedData.iNumNonRankColumnsToDisplay = 4 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS) //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_LAP) //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_KILLS) //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_CROSSHAIR) //scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) BREAK CASE FMMC_TYPE_MISSION //1955210 IF iSubType = FMMC_MISSION_TYPE_PLANNING OR iSubType = FMMC_MISSION_TYPE_HEIST scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_HEIST_MISSION) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Mission" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName) IF iSubType = FMMC_MISSION_TYPE_HEIST scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_HEIST" ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_HEISTP" ENDIF scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName ELSE IF iSubType = FMMC_MISSION_TYPE_HEIST scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_HEIST_NN" ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_HEISTPNN" ENDIF ENDIF scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_SCORE" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_TIME" scLB_DisplayedData.sColumnTextName[2] = "SCLB_ACC" scLB_DisplayedData.sColumnTextName[3] = "SCLB_HEADSHOT" scLB_DisplayedData.sColumnTextName[4] = "SCLB_C_KILLS" scLB_DisplayedData.iReadColumns[0] = 0 scLB_DisplayedData.iReadColumns[1] = 1 scLB_DisplayedData.iReadColumns[2] = 4 scLB_DisplayedData.iReadColumns[3] = 5 scLB_DisplayedData.iReadColumns[4] = 6 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[4]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_5_STATS) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME_POSITIVE) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[4] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) ELIF g_FMMC_STRUCT.iMissionEndType = ciMISSION_SCORING_TYPE_TIME // *SCORE_COLUMN( AGG_MAX ) : COLUMN_ID_LB_SCORE - LBCOLUMNTYPE_INT64 // KILLS( AGG_LAST ) : COLUMN_ID_LB_KILLS - LBCOLUMNTYPE_INT32 // DEATHS( AGG_LAST ) : COLUMN_ID_LB_DEATHS - LBCOLUMNTYPE_INT32 // KILL_DEATH_RATIO( AGG_LAST ) : COLUMN_ID_LB_KILL_DEATH_RATIO - LBCOLUMNTYPE_DOUBLE //TOTAL_TIME( AGG_SUM ) : COLUMN_ID_LB_TOTAL_TIME - LBCOLUMNTYPE_INT64 //TOTAL_KILLS( AGG_SUM ) : COLUMN_ID_LB_KILLS - LBCOLUMNTYPE_INT32 //TOTAL_DEATHS( AGG_SUM ) : COLUMN_ID_LB_DEATHS - LBCOLUMNTYPE_INT32 //TOTAL_KILL_DEATH_RATIO( AGG_SUM ) : COLUMN_ID_LB_KILL_DEATH_RATIO - LBCOLUMNTYPE_DOUBLE scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_MISSIONS_BY_TIME) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Mission" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName) IF g_FMMC_STRUCT.iMissionSubType = FMMC_MISSION_TYPE_LTS scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_LTS" ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_MIS" ENDIF scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName ELSE IF g_FMMC_STRUCT.iMissionSubType = FMMC_MISSION_TYPE_LTS scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_LTS_NN" ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_MIS_NN" ENDIF ENDIF scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_TIME" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_KILLS" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_DEATH" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_RANK" scLB_DisplayedData.iReadColumns[0] = 0 //time scLB_DisplayedData.iReadColumns[1] = 1 //kills scLB_DisplayedData.iReadColumns[2] = 2 //deaths scLB_DisplayedData.iReadColumns[3] = 0 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS) //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_TIME) //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_KILLS) //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_DEATHS) //scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME_NEG_B4_DIS) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) ELSE // *SCORE_COLUMN( AGG_MAX ) : COLUMN_ID_LB_SCORE - LBCOLUMNTYPE_INT64 //KILLS( AGG_LAST ) : COLUMN_ID_LB_KILLS - LBCOLUMNTYPE_INT32 //DEATHS( AGG_LAST ) : COLUMN_ID_LB_DEATHS - LBCOLUMNTYPE_INT32 //KILL_DEATH_RATIO( AGG_LAST ) : COLUMN_ID_LB_KILL_DEATH_RATIO - LBCOLUMNTYPE_DOUBLE scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_MISSIONS_BY_BEST_SCORE) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Mission" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName) IF g_FMMC_STRUCT.iMissionSubType = FMMC_MISSION_TYPE_LTS scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_LTS" ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_MIS" ENDIF scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName ELSE IF g_FMMC_STRUCT.iMissionSubType = FMMC_MISSION_TYPE_LTS scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_LTS_NN" ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_MIS_NN" ENDIF ENDIF IF IS_THIS_ROCKSTAR_MISSION_NEW_VS_TOUR_DE_FORCE(g_FMMC_STRUCT.iAdversaryModeType) OR IS_THIS_ROCKSTAR_MISSION_NEW_VS_OVERTIME_ANY(g_FMMC_STRUCT.iAdversaryModeType) scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_SCORE" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_DEATH" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_RANK" scLB_DisplayedData.iReadColumns[0] = 0 //Score scLB_DisplayedData.iReadColumns[1] = 2 // deaths scLB_DisplayedData.iReadColumns[2] = 0 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 2 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS) //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_CROWN) //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_KILLS) //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_DEATHS) //scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) ELIF IS_THIS_ROCKSTAR_MISSION_NEW_VS_BOMB_FOOTBALL(g_FMMC_STRUCT.iAdversaryModeType) scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_SCORE" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_DEATH" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_RANK" scLB_DisplayedData.iReadColumns[0] = 0 //Score scLB_DisplayedData.iReadColumns[1] = 2 // deaths scLB_DisplayedData.iReadColumns[2] = 0 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 2 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS) //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_CROWN) //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_KILLS) //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_DEATHS) //scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) ELSE scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_SCORE" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_KILLS" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_DEATH" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_RANK" scLB_DisplayedData.iReadColumns[0] = 0 //Score scLB_DisplayedData.iReadColumns[1] = 1 //kills scLB_DisplayedData.iReadColumns[2] = 2 // deaths scLB_DisplayedData.iReadColumns[3] = 0 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS) //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_CROWN) //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_KILLS) //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_DEATHS) //scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) ENDIF ENDIF BREAK CASE FMMC_TYPE_BASE_JUMP // *SCORE_COLUMN( AGG_MAX ) : COLUMN_ID_LB_SCORE - LBCOLUMNTYPE_INT64 // SCORE( AGG_LAST ) : COLUMN_ID_LB_JUMP_SCORE - LBCOLUMNTYPE_INT32 // TIME( AGG_LAST ) : COLUMN_ID_LB_TOTAL_TIME - LBCOLUMNTYPE_INT64 // JUMP_COUNT( AGG_SUM ) : COLUMN_ID_LB_NUM_POINTS - LBCOLUMNTYPE_INT32 scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_BASEJUMPS) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Mission" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName) scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_BJ" scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_BJ_NN" ENDIF scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_SCORE" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_TIME" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_JUMPS" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_RANK" scLB_DisplayedData.iReadColumns[0] = 0 //Score //setting up invalid time data scLB_DisplayedData.iReadColumns[1] = 1 //time SET_BIT(scLB_DisplayedData.iInvalidDataSetBS,1) scLB_DisplayedData.iInvalidDataInt[1] = -1 scLB_DisplayedData.iReadColumns[2] = 2 // # jumps scLB_DisplayedData.iReadColumns[3] = 0 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS) //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_CROWN) //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_TIME) //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_CROWN) //scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME_POSITIVE) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) BREAK CASE FMMC_TYPE_SP_BASEJUMP scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_BASE_JUMPING) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Location" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral = FALSE IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName) scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_BJ" scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_BJ_NN" ENDIF scLB_DisplayedData.sColumnTextName[0] = "SCLB_CASH" scLB_DisplayedData.sColumnTextName[1] = "SCLB_TOTCASH" scLB_DisplayedData.iReadColumns[0] = 0 //cash scLB_DisplayedData.iReadColumns[1] = 3 //total cash scLB_DisplayedData.iNumNonRankColumnsToDisplay = 2 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_2_STATS) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) BREAK //pilot school CASE FMMC_TYPE_MG_PILOT_SCHOOL SWITCH INT_TO_ENUM(PILOT_SCHOOL_DLC_CLASSES_ENUM_NEW,iSubType) CASE PSCD_DLC_OutsideLoop CASE PSCD_DLC_FollowLeader CASE PSCD_DLC_VehicleLanding CASE PSCD_DLC_CollectFlags SWITCH INT_TO_ENUM(PILOT_SCHOOL_DLC_CLASSES_ENUM_NEW,iSubType) CASE PSCD_DLC_OutsideLoop scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_OUTSIDE_LOOP) BREAK CASE PSCD_DLC_FollowLeader scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_FOLLOW_LEADER) BREAK CASE PSCD_DLC_VehicleLanding scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_MOVING_LANDING) BREAK CASE PSCD_DLC_CollectFlags scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_COLLECT_FLAGS) BREAK ENDSWITCH scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_PLAYER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 0 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "" scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName) scLB_DisplayedData.displaySetup.sLeaderboardType = stMissionName ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "PS_TITLE" ENDIF scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_TIME" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_MEDAL1" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_MEDAL2" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_MEDAL3" scLB_DisplayedData.iReadColumns[0] = 1 scLB_DisplayedData.iReadColumns[1] = 4 scLB_DisplayedData.iReadColumns[2] = 3 scLB_DisplayedData.iReadColumns[3] = 2 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 4 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3]) //scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_2_STATS) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) BREAK CASE PSCD_DLC_Engine_failure CASE PSCD_DLC_ChaseParachute CASE PSCD_DLC_CityLanding SWITCH INT_TO_ENUM(PILOT_SCHOOL_DLC_CLASSES_ENUM_NEW,iSubType) CASE PSCD_DLC_Engine_failure scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_ENGINE_FAILURE) BREAK CASE PSCD_DLC_ChaseParachute scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_CHASE_PARACHUTE) BREAK CASE PSCD_DLC_CityLanding scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_CITY_LANDING) BREAK ENDSWITCH scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_PLAYER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 0 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "" scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName) scLB_DisplayedData.displaySetup.sLeaderboardType = stMissionName ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "PS_TITLE" ENDIF scLB_DisplayedData.sColumnTextName[0] = "SCLB_DIST" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_MEDAL1" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_MEDAL2" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_MEDAL3" scLB_DisplayedData.iReadColumns[0] = 1 scLB_DisplayedData.iReadColumns[1] = 4 scLB_DisplayedData.iReadColumns[2] = 3 scLB_DisplayedData.iReadColumns[3] = 2 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 4 CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3]) //scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_2_STATS) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) BREAK CASE PSCD_DLC_FlyLow scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_GROUND_LEVEL) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_PLAYER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 0 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "" scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName) scLB_DisplayedData.displaySetup.sLeaderboardType = stMissionName ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "PS_TITLE" ENDIF scLB_DisplayedData.sColumnTextName[0] = "SCLB_AVG_HEI" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_MEDAL1" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_MEDAL2" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_MEDAL3" scLB_DisplayedData.iReadColumns[0] = 1 scLB_DisplayedData.iReadColumns[1] = 4 scLB_DisplayedData.iReadColumns[2] = 3 scLB_DisplayedData.iReadColumns[3] = 2 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 4 CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3]) //scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_2_STATS) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) BREAK CASE PSCD_DLC_ShootingRange CASE PSCD_DLC_Formation SWITCH INT_TO_ENUM(PILOT_SCHOOL_DLC_CLASSES_ENUM_NEW,iSubType) CASE PSCD_DLC_ShootingRange scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_SHOOTING_RANGE) BREAK CASE PSCD_DLC_Formation scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_FORMATION_FLIGHT) BREAK ENDSWITCH scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_PLAYER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 0 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "" scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName) scLB_DisplayedData.displaySetup.sLeaderboardType = stMissionName ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "PS_TITLE" ENDIF scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_SCORE" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_MEDAL1" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_MEDAL2" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_MEDAL3" scLB_DisplayedData.iReadColumns[0] = 0 scLB_DisplayedData.iReadColumns[1] = 3 scLB_DisplayedData.iReadColumns[2] = 2 scLB_DisplayedData.iReadColumns[3] = 1 //scLB_DisplayedData.iReadColumns[3] = 2 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 4 CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3]) //scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_2_STATS) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT_TO_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) BREAK ENDSWITCH BREAK CASE FMMC_TYPE_SP_FLIGHT_SCHOOL_DIST /*SCORE_COLUMN( AGG_SUM ) : COLUMN_ID_LB_SCORE - LBCOLUMNTYPE_INT64 BEST_TIME( AGG_MAX ) : COLUMN_ID_LB_BEST_TIME - LBCOLUMNTYPE_INT64 BEST_LANDING_ACC( AGG_MAX ) : COLUMN_ID_LB_LAND_ACCURACY - LBCOLUMNTYPE_INT32 NUMBER_GOLD_MEDALS( AGG_SUM ) : COLUMN_ID_LB_GOLD_MEDALS - LBCOLUMNTYPE_INT32*/ scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_FLIGHT_SCHOOL_BY_DIST) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Location" //not sure it needed this?? scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName) scLB_DisplayedData.displaySetup.sLeaderboardType = stMissionName ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "PS_TITLE" ENDIF scLB_DisplayedData.sColumnTextName[0] = "SCLB_DIST" //scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_TIME" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_MEDAL1" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_MEDAL2" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_MEDAL3" scLB_DisplayedData.iReadColumns[0] = 2 //scLB_DisplayedData.iReadColumns[1] = 1 scLB_DisplayedData.iReadColumns[1] = 5 scLB_DisplayedData.iReadColumns[2] = 4 scLB_DisplayedData.iReadColumns[3] = 3 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 4 CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3]) //scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_2_STATS) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT_DIST_WITH_CONV_FT) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) BREAK CASE FMMC_TYPE_SP_FLIGHT_SCHOOL_TIME /*SCORE_COLUMN( AGG_SUM ) : COLUMN_ID_LB_SCORE - LBCOLUMNTYPE_INT64 BEST_TIME( AGG_MAX ) : COLUMN_ID_LB_BEST_TIME - LBCOLUMNTYPE_INT64 BEST_LANDING_ACC( AGG_MAX ) : COLUMN_ID_LB_LAND_ACCURACY - LBCOLUMNTYPE_INT32 NUMBER_GOLD_MEDALS( AGG_SUM ) : COLUMN_ID_LB_GOLD_MEDALS - LBCOLUMNTYPE_INT32*/ scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_FLIGHT_SCHOOL_BY_TIME) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Location" //not sure it needed this?? scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral = FALSE IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName) scLB_DisplayedData.displaySetup.sLeaderboardType = stMissionName ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_MIS_NN" ENDIF scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_TIME" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_MEDAL1" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_MEDAL2" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_MEDAL3" scLB_DisplayedData.iReadColumns[0] = 0 scLB_DisplayedData.iReadColumns[1] = 4 scLB_DisplayedData.iReadColumns[2] = 3 scLB_DisplayedData.iReadColumns[3] = 2 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 4 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3]) //scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_2_STATS) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME_NEG_B4_DIS_NO_MS) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) BREAK CASE FMMC_TYPE_SP_FLIGHT_SCHOOL_RATING /*SCORE_COLUMN( AGG_SUM ) : COLUMN_ID_LB_SCORE - LBCOLUMNTYPE_INT64 BEST_TIME( AGG_MAX ) : COLUMN_ID_LB_BEST_TIME - LBCOLUMNTYPE_INT64 BEST_LANDING_ACC( AGG_MAX ) : COLUMN_ID_LB_LAND_ACCURACY - LBCOLUMNTYPE_INT32 NUMBER_GOLD_MEDALS( AGG_SUM ) : COLUMN_ID_LB_GOLD_MEDALS - LBCOLUMNTYPE_INT32*/ scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_FLIGHT_SCHOOL_BY_RATING) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Location" //not sure it needed this?? scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral = FALSE IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName) scLB_DisplayedData.displaySetup.sLeaderboardType = "PS_TITLE" scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_MIS_NN" ENDIF scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_SCORE" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_TIME" scLB_DisplayedData.sColumnTextName[2] = "SCLB_ACC" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_MEDAL1" scLB_DisplayedData.sColumnTextName[4] = "SCLB_C_MEDAL2" scLB_DisplayedData.sColumnTextName[4] = "SCLB_C_MEDAL3" scLB_DisplayedData.iReadColumns[0] = 0 scLB_DisplayedData.iReadColumns[1] = 1 scLB_DisplayedData.iReadColumns[2] = 2 scLB_DisplayedData.iReadColumns[3] = 5 scLB_DisplayedData.iReadColumns[4] = 4 scLB_DisplayedData.iReadColumns[5] = 3 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 6 CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[4]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[5]) //scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_2_STATS) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME_NO_MS) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[4] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[5] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) BREAK CASE FMMC_TYPE_SP_STUNT_PLANE_RACES scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_RACES) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 3 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "GameType" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "SP" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "Location" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = UniqueLBGroup scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Category = "Type" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Id = "StuntPlaneRace" scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral = FALSE IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName) scLB_DisplayedData.displaySetup.sLeaderboardType = stMissionName ELSE scLB_DisplayedData.displaySetup.sLeaderboardType = "SPR_TITLE" ENDIF scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_TIME" scLB_DisplayedData.iReadColumns[0] = 2 //time scLB_DisplayedData.iNumNonRankColumnsToDisplay = 1 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_2_STATS) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME) BREAK CASE FMMC_TYPE_SP_STREET_RACE scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_RACES) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 3 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "GameType" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "Location" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Category = "Type" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "SP" //scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_GRCE_NN" scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) IF iLaps <= 0 scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_RT" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_VEH" scLB_DisplayedData.sColumnTextName[2] = ""//SCLB_C_RANK" scLB_DisplayedData.sColumnTextName[3] = "" scLB_DisplayedData.iReadColumns[0] = 3 scLB_DisplayedData.iReadColumns[1] = 4 scLB_DisplayedData.iReadColumns[2] = 1 scLB_DisplayedData.iReadColumns[3] = 0 scLB_DisplayedData.iCustomVehicleColumn = 6 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 2//3 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) //SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS) ////scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_VEHICLE) //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_LAP) //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_VEHICLE) //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_POSITION) //scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE) //scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) ELSE scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_RT" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_BL" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_VEH" scLB_DisplayedData.sColumnTextName[3] = ""//SCLB_C_RANK" scLB_DisplayedData.iReadColumns[0] = 3 scLB_DisplayedData.iReadColumns[1] = 2 scLB_DisplayedData.iReadColumns[2] = 4 scLB_DisplayedData.iReadColumns[3] = 1 scLB_DisplayedData.iCustomVehicleColumn = 4 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3//4 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) //SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS) ////scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_VEHICLE) //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_TIME) //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_LAP) //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_VEHICLE) //scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION) //scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE) //scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) ENDIF scLB_DisplayedData.iCoronaBoxColumn = 0 SWITCH iSubType CASE 0 scLB_DisplayedData.displaySetup.sLeaderboardType = "MGCR_1" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "MGCR_1" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Id = "StreetRace" BREAK CASE 1 scLB_DisplayedData.displaySetup.sLeaderboardType = "MGCR_2" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "MGCR_2" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Id = "StreetRace" BREAK CASE 2 scLB_DisplayedData.displaySetup.sLeaderboardType = "MGCR_4" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "MGCR_4" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Id = "StreetRace" BREAK CASE 3 scLB_DisplayedData.displaySetup.sLeaderboardType = "MGCR_5" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "MGCR_5" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Id = "StreetRace" BREAK CASE 4 scLB_DisplayedData.displaySetup.sLeaderboardType = "MGCR_6" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "MGCR_6" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Id = "StreetRace" BREAK CASE 5 scLB_DisplayedData.displaySetup.sLeaderboardType = "MGSR_1" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "MGSR_1" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Id = "SeaRace" BREAK CASE 6 scLB_DisplayedData.displaySetup.sLeaderboardType = "MGSR_2" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "MGSR_2" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Id = "SeaRace" BREAK CASE 7 scLB_DisplayedData.displaySetup.sLeaderboardType = "MGSR_3" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "MGSR_3" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Id = "SeaRace" BREAK CASE 8 scLB_DisplayedData.displaySetup.sLeaderboardType = "MGSR_4" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "MGSR_4" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Id = "SeaRace" BREAK DEFAULT SCRIPT_ASSERT("FMMC_TYPE_SP_STREET_RACE iSubType was invalid") BREAK ENDSWITCH BREAK CASE SCLB_TYPE_ARENA_WARS_MODES scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_ARENA) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "ArenaMode" scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_WINS" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_GAMES" scLB_DisplayedData.iReadColumns[0] = 0 //wins scLB_DisplayedData.iReadColumns[1] = 1 //Points (kills/flags/checkpints/passes) scLB_DisplayedData.iReadColumns[2] = 2 //games played scLB_DisplayedData.iReadColumns[3] = 3 //points2 (time survived/kills/damage/goals etc) scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = GET_ARENA_WARS_MODE_NAME(iSubType) scLB_DisplayedData.iNumNonRankColumnsToDisplay = 4 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) SWITCH iSubType CASE SCLB_TYPE_ARENA_MODE_BUZZER_BEATER scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_ARN_BUZZ" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_KILLS" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_TIMESUR" scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME_NO_MS) BREAK CASE SCLB_TYPE_ARENA_MODE_CARNAGE scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_ARN_CARN" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_KILLS" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_DAMDEALT" BREAK CASE SCLB_TYPE_ARENA_MODE_FLAG_WAR scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_ARN_FLAGW" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_FLAGS" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_KILLS" BREAK CASE SCLB_TYPE_ARENA_MODE_WRECK_IT scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_ARN_WRECK" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_KILLS" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_DAMDEALT" BREAK CASE SCLB_TYPE_ARENA_MODE_BOMB_BALL scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_ARN_BOMBB" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_POINTS" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_GOALS" BREAK CASE SCLB_TYPE_ARENA_MODE_GAMES_MASTERS scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_ARN_GAMEM" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_CPOINTS" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_KILLS" BREAK CASE SCLB_TYPE_ARENA_MODE_MONSTERS scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_ARN_MNSTR" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_KILLS" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_DAMDEALT" BREAK CASE SCLB_TYPE_ARENA_MODE_HOT_BOMB scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_ARN_HOTB" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_PASSES" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_TIMESUR" scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME_NO_MS) BREAK CASE SCLB_TYPE_ARENA_MODE_TAG_TEAM scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_ARN_TAGT" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_KILLS" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_TAGS" BREAK ENDSWITCH scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) scLB_DisplayedData.iNumNonRankColumnsToDisplay = 4 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) BREAK CASE SCLB_TYPE_ARENA_WARS_CAREER scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_ARENA_CAREER) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_PLAYER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 0 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "" scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_ARN_CAREER" scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_CARPT" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_WLRAT" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_MATCHES" scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_TITLE" //scLB_DisplayedData.sColumnTextName[4] = "SCLB_C_VEH" scLB_DisplayedData.iReadColumns[0] = 0 //score scLB_DisplayedData.iReadColumns[1] = 1 //wins ratio scLB_DisplayedData.iReadColumns[2] = 3 //# games scLB_DisplayedData.iReadColumns[3] = 4 //title //scLB_DisplayedData.iReadColumns[4] = 5 //vehicle scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) scLB_DisplayedData.iNumNonRankColumnsToDisplay = 4 scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3]) //SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[4]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_ARENA_TITLE) //scLB_DisplayedData.displaySetup.iColumnDisplayType[4] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE) BREAK CASE SCLB_TYPE_CAR_MEET_MEMBERSHIP scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_TUNER_CAR_CLUB) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_PLAYER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 0 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "" scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_CCM_CAREER" scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_CCMLVL" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_WLRAT" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_RACES" //scLB_DisplayedData.sColumnTextName[4] = "SCLB_C_VEH" scLB_DisplayedData.iReadColumns[0] = 0 //score scLB_DisplayedData.iReadColumns[1] = 4 //wins ratio scLB_DisplayedData.iReadColumns[2] = 3 //# races //scLB_DisplayedData.iReadColumns[3] = 4 //title //scLB_DisplayedData.iReadColumns[4] = 5 //vehicle scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3 scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) //SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3]) //SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[4]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_CC_MEMBER_RANK) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) //scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_ARENA_TITLE) //scLB_DisplayedData.displaySetup.iColumnDisplayType[4] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE) BREAK CASE FMMC_TYPE_SANDBOX_ACTIVITY scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_TUNER_RACES) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "GameType" UniqueLBGroup = "TUNER_SANDB_SVAR" IF iSubType = ENUM_TO_INT(SAS_HH_LOCATION_1) OR iSubType = ENUM_TO_INT(SAS_HH_LOCATION_2) UniqueLBGroup += ENUM_TO_INT(SAS_HH_LOCATION_1) ELSE UniqueLBGroup += iSubType ENDIF scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_BESTT" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_WINS" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_VEH" scLB_DisplayedData.iReadColumns[0] = 0 //fastest time scLB_DisplayedData.iReadColumns[1] = 2 //wins scLB_DisplayedData.iReadColumns[2] = 3 //vehicle scLB_DisplayedData.iCustomVehicleColumn = 4 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) //SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3]) scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3 scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME_NEG_B4_DIS) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE) SWITCH INT_TO_ENUM(SANDBOX_ACTIVITY_SUBVARIATION,iSubType) CASE SAS_TT_LOCATION_1 scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_T_TT" scLB_DisplayedData.iReadColumns[0] = 0 //fastest time scLB_DisplayedData.iReadColumns[1] = 3 //vehicle scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_BESTT" scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_VEH" scLB_DisplayedData.sColumnTextName[2] = "" scLB_DisplayedData.iNumNonRankColumnsToDisplay = 2 scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_2_STATS) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME_NEG_B4_DIS) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE) BREAK CASE SAS_CD_LOCATION_1 scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_T_CD" BREAK CASE SAS_HH_LOCATION_1 CASE SAS_HH_LOCATION_2 scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_T_HH1" BREAK ENDSWITCH BREAK CASE FMMC_TYPE_STREET_RACE_SERIES CASE FMMC_TYPE_PURSUIT_SERIES scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_TUNER_RACES) scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 2 scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "Mission" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = UniqueLBGroup IF iMissionType = FMMC_TYPE_STREET_RACE_SERIES scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "GameType" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "TUNER_SRS" scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_T_SRS" scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_BL" ELSE scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "GameType" scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "TUNER_PS" scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_T_PURS" scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_BESTT" ENDIF scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_WINS" scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_VEH" scLB_DisplayedData.iReadColumns[0] = 0 //fastest time scLB_DisplayedData.iReadColumns[1] = 2 //wins scLB_DisplayedData.iReadColumns[2] = 3 //vehicle scLB_DisplayedData.iCustomVehicleColumn = 4 scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3 SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS) scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME_NEG_B4_DIS) scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT) scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE) scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER) BREAK ENDSWITCH i = 0 REPEAT scLB_DisplayedData.iNumNonRankColumnsToDisplay i //IF i < 5 IF IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[i]) SET_BIT(scLB_DisplayedData.iDisplayColumnIsIntBS,i) //println("scLB_DisplayedData.iDisplayColumnIsIntBS setting bit, ", i) ENDIF //ENDIF ENDREPEAT scLB_DisplayedData.iCacheHashID = SC_LC_GENERATE_ID_FOR_CACHE(UniqueLBGroup,scLB_control.ReadDataStruct.m_LeaderboardId,iMissionType,iSubType,iLaps,bCoDriver) #IF IS_DEBUG_BUILD PRINT_LEADERBOARD_SETUP_DETAILS(scLB_control,UniqueLBGroup,iMissionType,iSubType,iLaps,bCoDriver) #ENDIF ENDPROC PROC SOCIAL_CLUB_CLEAR_NAVIGATION_STRUCT(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control) scLB_control.navigation.iButtonBS = 0 scLB_control.navigation.iCurrentVertSel = -1 scLB_control.navigation.iMaxVertSel = 0 RESET_NET_TIMER(scLB_control.navigation.menuNavDelay) scLB_control.navigation.bShowingAProfile = FALSE INT i GAMER_HANDLE emptyHandle REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i scLB_control.navigation.slotData[i].iSlot = -1 scLB_control.navigation.slotData[i].iFinalState = 0 scLB_control.navigation.slotData[i].playerGamerHandle = emptyHandle ENDREPEAT REPEAT 3 i scLB_control.navigation.iSectionCounter[i] = 0 ENDREPEAT println("SOCIAL_CLUB_CLEAR_NAVIGATION_STRUCT called") ENDPROC PROC SOCIAL_CLUB_CLEAR_DISPLAY_SETUP_STRUCT(SC_LEADERBOARD_DISPLAY_SETUP &displaySetup) displaySetup.iDisplayType = 0 displaySetup.sLeaderboardType = "" displaySetup.sLeaderboardName = "" displaySetup.b_sLeaderboardNameLiteral = TRUE displaySetup.iLaps = 0 displaySetup.bCoDriver = FALSE displaySetup.iLayout = 0 INT i REPEAT SC_LEADERBOARD_MAX_DISPLAYED_STATS i displaySetup.iColumnDisplayType[i] = 0 displaySetup.iValidType[i] = 0 ENDREPEAT ENDPROC /// PURPOSE: /// Clears the global SC leaderboard display struct PROC SOCIAL_CLUB_CLEAR_DISPLAY_STRUCT() INT i, j SC_LEADERBOARD_DISPLAY_ROW_STRUCT tempRow REPEAT 3 i REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS j scLB_DisplayedData.rowData[i][j] = tempRow ENDREPEAT scLB_DisplayedData.iSectionEntries[i] = 0 ENDREPEAT scLB_DisplayedData.iNumNonRankColumnsToDisplay = 0 scLB_DisplayedData.iCustomVehicleColumn = 0 i = 0 REPEAT SC_LEADERBOARD_MAX_DISPLAYED_STATS i scLB_DisplayedData.iReadColumns[i] = 0 scLB_DisplayedData.sColumnTextName[i] = "" scLB_DisplayedData.iInvalidDataInt[i] = 0 scLB_DisplayedData.iInvalidDataFloat[i] = 0 ENDREPEAT scLB_DisplayedData.iInvalidDataSetBS = 0 scLB_DisplayedData.iReadColumnIsIntBS = 0 scLB_DisplayedData.iDisplayColumnIsIntBS = 0 i= 0 REPEAT 3 i scLB_DisplayedData.iPlayersRankForSection[i] = 0 scLB_DisplayedData.iPlayerIndexForSection[i] = 0 ENDREPEAT scLB_DisplayedData.iCoronaBoxColumn = 0 SOCIAL_CLUB_CLEAR_DISPLAY_SETUP_STRUCT(scLB_DisplayedData.displaySetup) RESET_NET_TIMER(scLB_DisplayedData.downloadingTimer) scLB_DisplayedData.iLoadLoopCounter = -1 scLB_DisplayedData.iCacheHashID = 0 RESET_NET_TIMER(scLB_DisplayedData.optionChangeDelay) scLB_DisplayedData.iCurrentViewID = 0 RESET_NET_TIMER(scLB_DisplayedData.failSafeTimer) scLB_DisplayedData.iReadFailedBS = 0 scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_LABEL_NO_ICON) scLB_DisplayedData.displaySetup.bCoDriver = FALSE scLB_DisplayedData.bResetTriggered = FALSE println("Clearing SC display struct") ENDPROC PROC CLEAR_RANK_PREDICTION_ROW(LeaderboardPredictionRow &Row) INT i Row.m_Id = 0 Row.m_NumColumns = 0 Row.m_ColumnsBitSets = 0 REPEAT MAX_COLUMNS i Row.m_fColumnData[i] = 0 Row.m_iColumnData[i] = 0 ENDREPEAT ENDPROC PROC CLEAR_RANK_REDICTION_DETAILS() sclb_rank_predict.iReadStage = 0 sclb_rank_predict.bFinishedRead = FALSE sclb_rank_predict.bFinishedWrite = FALSE sclb_rank_predict.bAssignedValuesInWrite = FALSE sclb_rank_predict.bNoPreviousValue = FALSE CLEAR_RANK_PREDICTION_ROW(scLB_rank_predict.readResult) CLEAR_RANK_PREDICTION_ROW(sclb_rank_predict.currentResult) CLEAR_RANK_PREDICTION_ROW(sclb_rank_predict.combinedResult) CLEAR_RANK_PREDICTION_ROW(sclb_rank_predict.DifficultyCombinedResult) sclb_rank_predict.coDriverName = "" sclb_rank_predict.driverName = "" CLEAR_GAMER_HANDLE_STRUCT(sclb_rank_predict.driverHandle) sclb_rank_predict.iRankBeforePrediction = -1 sclb_useRankPrediction = FALSE sclb_rankPredictionDataValid = FALSE LeaderboardUpdateData emptyData sclb_rank_predict.LBWriteDetails = emptyData println("CLEAR_RANK_PREDICTION_DETAILS: Called by ", GET_THIS_SCRIPT_NAME()) #IF IS_DEBUG_BUILD DEBUG_PRINTCALLSTACK() #ENDIF ENDPROC /// PURPOSE: /// Cleans up the social club leaderboard display struct and control struct. Also ends any on going reads. /// PARAMS: /// scLB_control - The control struct for loading the data PROC CLEANUP_SOCIAL_CLUB_LEADERBOARD(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control, BOOL bForceCleanup = FALSE) IF scLB_control.iTempLoadStage != 0 println("Ending read in CLEANUP_SOCIAL_CLUB_LEADERBOARD in ", GET_THIS_SCRIPT_NAME() ) END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct) ENDIF IF scLB_control.iLoadStage[0] != 0 OR scLB_control.iLoadStage[1] != 0 OR scLB_control.iLoadStage[2] != 0 OR bForceCleanup = TRUE SOCIAL_CLUB_CLEAR_CONTROL_STRUCT(scLB_control) SOCIAL_CLUB_CLEAR_NAVIGATION_STRUCT(scLB_control) CLEAR_FINAL_DATA_STRUCT(tempFinalData) //println("CLEANUP_SOCIAL_CLUB_LEADERBOARD called") #IF IS_DEBUG_BUILD DEBUG_PRINTCALLSTACK() #ENDIF PRINTLN("CLEANUP_SOCIAL_CLUB_LEADERBOARD - called this frame") ENDIF IF scLB_DisplayedData.iNumNonRankColumnsToDisplay != 0 OR scLB_DisplayedData.bResetTriggered SOCIAL_CLUB_CLEAR_DISPLAY_STRUCT() ENDIF IF IS_AUDIO_SCENE_ACTIVE("LEADERBOARD_SCENE") STOP_AUDIO_SCENE("LEADERBOARD_SCENE") ENDIF IF NETWORK_IS_SIGNED_ONLINE() RESET_NET_TIMER(scLBSignInWarn.signedOutTimer) ENDIF MPGlobalsAmbience.bPlayerViewingLeaderboard = FALSE ENDPROC PROC CLEANUP_CORONA_LEADERBOARD(BOOL& bDrawingMenu,BOOL& bMenuActive,SC_LEADERBOARD_CONTROL_STRUCT& scLB_control,SCALEFORM_INDEX& scaleformIndex[],SCALEFORM_INSTRUCTIONAL_BUTTONS& scaleformStruct, BOOL bInCorona = FALSE) IF IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU) OR IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_LOADING_MENU) IF HAS_SCALEFORM_MOVIE_LOADED(scaleformIndex[0]) SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(scaleformIndex[0]) //println("CLEANUP_CORONA_LEADERBOARD called setting SC scaleform movie 0 as no longer needed") ENDIF //CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU) //CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_LOADING_MENU) scLB_Control.ibs = 0 IF HAS_SCALEFORM_MOVIE_LOADED(scaleformIndex[1]) BEGIN_SCALEFORM_MOVIE_METHOD(scaleformIndex[1], "CLEAR_ALL") END_SCALEFORM_MOVIE_METHOD() ENDIF IF bInCorona = FALSE REFRESH_SCALEFORM_INSTRUCTIONAL_BUTTONS(scaleformStruct) ENDIF println("CLEANUP_CORONA_LEADERBOARD called") ENDIF SOCIAL_CLUB_CLEAR_NAVIGATION_STRUCT(scLB_control) MPGlobalsAmbience.bPlayerViewingLeaderboard = FALSE bMenuActive = FALSE bDrawingMenu = FALSE ENDPROC FUNC BOOL SC_LB_OK_TO_ALLOW_MENU_NAVIGATION_AGAIN(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control,CONTROL_ACTION theInput) IF theInput = INPUT_FRONTEND_UP OR theInput = INPUT_FRONTEND_DOWN INT iL_LR, iL_UD, iR_LR, iR_UD GET_CONTROL_VALUE_OF_ANALOGUE_STICKS(iL_LR, iL_UD, iR_LR, iR_UD) IF ((NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL,theInput) AND NOT IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL,theInput)) AND (iL_UD < 75 and iL_UD > -75)) OR HAS_NET_TIMER_EXPIRED(scLB_control.navigation.menuNavDelay,250) //#IF IS_DEBUG_BUILD //IF theInput = INPUT_FRONTEND_DOWN // println("OK to allow input: iL_UD = ", iL_UD) // IF HAS_NET_TIMER_EXPIRED(scLB_control.navigation.menuNavDelay,250) // println("OK to allow input: timer expired ") // ENDIF //ENDIF //#ENDIF RETURN TRUE ENDIF ELSE IF (NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL,theInput) AND NOT IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL,theInput)) OR HAS_NET_TIMER_EXPIRED(scLB_control.navigation.menuNavDelay,250) // IF HAS_NET_TIMER_EXPIRED(scLB_control.navigation.menuNavDelay,250) // println("OK to allow input: timer expired ") // ENDIF RETURN TRUE ENDIF ENDIF RETURN FALSE ENDFUNC //FUNC INT FIND_NO_ZERO_SLOT(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control) // REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS // IF scLB_control.navigation.slotData[scLB_control.navigation.iCurrentVertSel].iSlot <= 0 // scLB_control.navigation.iCurrentVertSel++ // ENDIF // ENDREPEAT //ENDFUNC PROC HANDLE_SELECTION_OF_PLAYERS_LISTED(SCALEFORM_INDEX& scaleFormID, SC_LEADERBOARD_CONTROL_STRUCT& scLB_control) //SC_LEADERBOARD_CONTROL_STRUCT scLB_control //SC_FINAL_DATA finaldata[] BOOL bChanged INT iTempVertSelection = scLB_control.navigation.iCurrentVertSel // PC mouse support IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL) SET_MOUSE_CURSOR_THIS_FRAME() SET_INPUT_EXCLUSIVE( FRONTEND_CONTROL, INPUT_CURSOR_X) SET_INPUT_EXCLUSIVE( FRONTEND_CONTROL, INPUT_CURSOR_Y) SET_INPUT_EXCLUSIVE( FRONTEND_CONTROL, INPUT_CURSOR_ACCEPT) SET_INPUT_EXCLUSIVE( FRONTEND_CONTROL, INPUT_CURSOR_CANCEL) DISABLE_CONTROL_ACTION( FRONTEND_CONTROL, INPUT_FRONTEND_PAUSE_ALTERNATE) // Scroll up IF IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_SCROLL_UP) SET_CONTROL_VALUE_NEXT_FRAME(FRONTEND_CONTROL, INPUT_FRONTEND_UP, 1) ENDIF // Scroll down IF IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_SCROLL_DOWN) SET_CONTROL_VALUE_NEXT_FRAME(FRONTEND_CONTROL, INPUT_FRONTEND_DOWN, 1) ENDIF eMOUSE_EVT eMouseEvent INT iUID INT iContext // Check mouse events IF GET_MOUSE_EVENT(scaleFormID, eMouseEvent, iUID, iContext ) IF eMouseEvent = EVENT_TYPE_MOUSE_PRESS IF iUID > scLB_control.navigation.iSectionCounter[0] // The iUID isn't in section 0 (global) IF iUID <= scLB_control.navigation.iSectionCounter[0] + scLB_control.navigation.iSectionCounter[1] + 2 // The iUID is in section 1 (friends) iUID -= 2 // Reduce the iUID by 2 blank rows ELSE // The iUID is in section 2 (crew) iUID -= 4 // Reduce the iUID by 4 blank rows ENDIF ENDIF iUID -= 1 // Reduce the iUID by 1 so it syncs with scLB_control.navigation.iCurrentVertSel println("HANDLE_SELECTION_OF_PLAYERS_LISTED iSectionCounter 0 = ", scLB_control.navigation.iSectionCounter[0], " iSectionCounter 1 = ", scLB_control.navigation.iSectionCounter[1], " iSectionCounter 2 = ", scLB_control.navigation.iSectionCounter[2], " iUID = ", iUID) // Select new item IF scLB_control.navigation.iCurrentVertSel != iUID scLB_control.navigation.iCurrentVertSel = iUID PLAY_SOUND_FRONTEND(-1, "NAV_UP_DOWN", "HUD_FRONTEND_DEFAULT_SOUNDSET") bChanged = TRUE ELSE // Confirm current item to bring up social club profile SET_CONTROL_VALUE_NEXT_FRAME(FRONTEND_CONTROL, INPUT_FRONTEND_SELECT, 1) ENDIF ENDIF ENDIF ENDIF INT iL_LR, iL_UD, iR_LR, iR_UD // Don't want these getting values when using keyboard and mouse // as they can cause conflicts with the frontend controls. - Steve R LDS IF NOT IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL) GET_CONTROL_VALUE_OF_ANALOGUE_STICKS(iL_LR, iL_UD, iR_LR, iR_UD) ENDIF IF scLB_control.navigation.iMaxVertSel > 0 IF NOT IS_BIT_SET(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_UP) IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_UP) OR IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_UP) OR iL_UD < -100 PLAY_SOUND_FRONTEND(-1, "NAV_UP_DOWN", "HUD_FRONTEND_DEFAULT_SOUNDSET") scLB_control.navigation.iCurrentVertSel += -1 SET_BIT(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_UP) RESET_NET_TIMER(scLB_control.navigation.menuNavDelay) bChanged = TRUE ENDIF ELSE IF SC_LB_OK_TO_ALLOW_MENU_NAVIGATION_AGAIN(scLB_control,INPUT_FRONTEND_UP) CLEAR_BIT(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_UP) ENDIF ENDIF IF NOT IS_BIT_SET(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_DOWN) IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_DOWN) OR IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_DOWN) OR iL_UD > 100 PLAY_SOUND_FRONTEND(-1, "NAV_UP_DOWN", "HUD_FRONTEND_DEFAULT_SOUNDSET") scLB_control.navigation.iCurrentVertSel += 1 SET_BIT(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_DOWN) RESET_NET_TIMER(scLB_control.navigation.menuNavDelay) bChanged = TRUE //println("Player pressed down on the social club leaderboard.") ENDIF ELSE IF SC_LB_OK_TO_ALLOW_MENU_NAVIGATION_AGAIN(scLB_control,INPUT_FRONTEND_DOWN) CLEAR_BIT(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_DOWN) ENDIF ENDIF ENDIF IF bChanged IF scLB_control.navigation.iCurrentVertSel < 0 scLB_control.navigation.iCurrentVertSel = scLB_control.navigation.iMaxVertSel-1 ENDIF IF scLB_control.navigation.iCurrentVertSel >= scLB_control.navigation.iMaxVertSel scLB_control.navigation.iCurrentVertSel = 0 ENDIF ENDIF IF NOT IS_BIT_SET(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_Y) IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_Y) OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_Y) OR IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_ACCEPT) SET_BIT(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_Y) RESET_NET_TIMER(scLB_control.navigation.menuNavDelay) bChanged = TRUE ENDIF ELSE IF SC_LB_OK_TO_ALLOW_MENU_NAVIGATION_AGAIN(scLB_control,INPUT_FRONTEND_Y) CLEAR_BIT(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_Y) ENDIF ENDIF IF scLB_control.navigation.iCurrentVertSel >= 0 IF scLB_control.navigation.iCurrentVertSel != iTempVertSelection println("iTempVertSelection = ", iTempVertSelection," iCurrentVertSel = ", scLB_control.navigation.iCurrentVertSel," iSlot = ", scLB_control.navigation.slotData[scLB_control.navigation.iCurrentVertSel].iSlot) //highlight appropriate slot/unhighlight last slot IF iTempVertSelection >= 0 CLEAR_BIT(scLB_control.navigation.slotData[iTempVertSelection].iFinalState,SCLB_SLOT_STATE_BIT_SELECTED) SET_SC_LEADERBOARD_SLOT_FINAL_STATE(scaleFormID,scLB_control.navigation.slotData[iTempVertSelection].iSlot,scLB_control.navigation.slotData[iTempVertSelection].iFinalState) ENDIF SET_BIT(scLB_control.navigation.slotData[scLB_control.navigation.iCurrentVertSel].iFinalState,SCLB_SLOT_STATE_BIT_SELECTED) SET_SC_LEADERBOARD_SLOT_FINAL_STATE(scaleFormID,scLB_control.navigation.slotData[scLB_control.navigation.iCurrentVertSel].iSlot,scLB_control.navigation.slotData[scLB_control.navigation.iCurrentVertSel].iFinalState) CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS) ENDIF IF IS_GAMER_HANDLE_VALID(scLB_control.navigation.slotData[scLB_control.navigation.iCurrentVertSel].playerGamerHandle) IF NOT IS_BIT_SET(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_SELECT) IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_SELECT) OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_SELECT) IF NOT IS_SYSTEM_UI_BEING_DISPLAYED() PLAY_SOUND_FRONTEND(-1, "SELECT", "HUD_FRONTEND_MP_SOUNDSET") SET_BIT(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_SELECT) NETWORK_SHOW_PROFILE_UI(scLB_control.navigation.slotData[scLB_control.navigation.iCurrentVertSel].playerGamerHandle) PRINTLN("CDM: Activating profile UI for selected player") ELSE PRINTLN("CDM: System UI active not displaying profile UI") ENDIF ENDIF ELSE IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_SELECT) CLEAR_BIT(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_SELECT) ENDIF ENDIF ENDIF ENDIF // BOOL scButtonActive // IF NOT NETWORK_HAS_SOCIAL_CLUB_ACCOUNT() // scButtonActive = TRUE // ELSE // IF NOT NETWORK_ARE_SOCIAL_CLUB_POLICIES_CURRENT() // scButtonActive = TRUE // ENDIF // ENDIF // IF scButtonActive // IF NOT IS_BIT_SET(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_ACCEPT) // IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT) // OR IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT) // #IF IS_DEBUG_BUILD // IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT) // println("HANDLE_SELECTION_OF_PLAYERS_LISTED: IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)") // ENDIF // IF IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT) // println("HANDLE_SELECTION_OF_PLAYERS_LISTED:IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)") // ENDIF // #ENDIF // PLAY_SOUND_FRONTEND(-1, "ACCEPT","HUD_FRONTEND_MP_SOUNDSET") // SET_BIT(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_ACCEPT) // println("HANDLE_SELECTION_OF_PLAYERS_LISTED player pressed cancel when on leaderboard") // SET_SOCIAL_CLUB_TOUR("General") // OPEN_SOCIAL_CLUB_MENU() // SET_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SOCIAL_CLUB_TOUR) // exit // ENDIF // ELSE // IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL) // AND NOT IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL) // CLEAR_BIT(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_ACCEPT) // ENDIF // ENDIF // ENDIF ENDPROC /// PURPOSE: /// Function to indicate whether it is ok to show profile option or not. /// PARAMS: /// scLB_control - leaderboard control struct. /// RETURNS: /// True if it is ok to show the button FUNC BOOL SHOULD_PROFILE_BUTTON_BE_AVAILABLE_FOR_LEADERBOARD(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control) IF IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU) AND scLB_DisplayedData.iSectionEntries[0] > 0 AND scLB_control.navigation.iCurrentVertSel >= 0 RETURN TRUE ENDIF RETURN FALSE ENDFUNC /// PURPOSE: /// Draws all the components of the SC board. /// PARAMS: /// scaleFormID - scaleform index of the SC leaderboard /// scLB_control - control struct handling loading the data if needed PROC DRAW_SC_SCALEFORM_LEADERBOARD(SCALEFORM_INDEX& scaleFormID,SC_LEADERBOARD_CONTROL_STRUCT& scLB_control) INT i INT iDisplayLoop //BOOL highlightGlobalTop //BOOl highlightFriendTop //BOOL highlightCrewTop INT iSectionCounter[3] // INT iSlotCounter REINIT_NET_TIMER(scLBSignInWarn.signedOutTimer,TRUE) BOOL bHighlightedARow HIDE_HELP_TEXT_THIS_FRAME() DISABLE_DPADDOWN_THIS_FRAME() DISABLE_CELLPHONE_THIS_FRAME_ONLY() HIDE_HUD_AND_RADAR_THIS_FRAME() DISABLE_ALL_MP_HUD_THIS_FRAME() HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_HELP_TEXT) SET_INSTRUCTIONAL_BUTTONS_UNDER_HUD_THIS_FRAME() SET_LOADING_ICON_SUBTITLES_OFFSET_SHIFT_THIS_FRAME() IF NOT IS_PLAYER_ACTIVE_IN_CORONA() IF NOT IS_AUDIO_SCENE_ACTIVE("LEADERBOARD_SCENE") START_AUDIO_SCENE("LEADERBOARD_SCENE") ENDIF ENDIF BOOL bInValidDataForThisColumn #IF IS_DEBUG_BUILD BOOL bDisplayedUIThisFrame = FALSE #ENDIF // IF IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SOCIAL_CLUB_TOUR) // IF NOT IS_SOCIAL_CLUB_ACTIVE() // //AND NOT IS_PAUSE_MENU_ACTIVE() // println("NOT IS_SOCIAL_CLUB_ACTIVE() clearing flag") // CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SOCIAL_CLUB_TOUR) // ENDIF // ELSE TEXT_LABEL_63 tempText TEXT_LABEL_7 emptyText IF NOT IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_REQUESTED_MOVIE) scaleFormID = REQUEST_SC_LEADERBOARD_UI() SET_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_REQUESTED_MOVIE) ENDIF BOOL bAddedSectionHeader[3] //TEXT_LABEL_15 tempCrewTag[2] INT iFinalState GAMER_HANDLE localPlayerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID()) GAMER_USERID localUserID IF HAS_SCALEFORM_MOVIE_LOADED(scaleFormID) IF NOT NETWORK_HAS_VALID_ROS_CREDENTIALS() OR NOT IS_PLAYER_ONLINE() OR (NOT NETWORK_HAVE_ONLINE_PRIVILEGES() AND NETWORK_HAS_AGE_RESTRICTIONS()) OR scLB_DisplayedData.iReadFailedBS != 0 // IF NOT NETWORK_HAS_VALID_ROS_CREDENTIALS() // PRINTLN("CDM: 1951069- NOT NETWORK_HAS_VALID_ROS_CREDENTIALS()") // ENDIF // IF NOT IS_PLAYER_ONLINE() // PRINTLN("CDM: 1951069- NOT IS_PLAYER_ONLINE()") // ENDIF // IF NOT NETWORK_HAVE_ONLINE_PRIVILEGES() // PRINTLN("CDM: 1951069- NOT NETWORK_HAVE_ONLINE_PRIVILEGES()") // ENDIF IF NOT IS_PLAYER_ONLINE() IF scLB_DisplayedData.iCurrentViewID != SC_LB_VIEW_ID_NOT_ONLINE CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU) scLB_DisplayedData.iCurrentViewID = SC_LB_VIEW_ID_NOT_ONLINE ENDIF ELSE IF (NOT NETWORK_HAVE_ONLINE_PRIVILEGES() AND NETWORK_HAS_AGE_RESTRICTIONS()) IF scLB_DisplayedData.iCurrentViewID != SC_LB_VIEW_ID_NO_PERMISSION CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU) scLB_DisplayedData.iCurrentViewID = SC_LB_VIEW_ID_NO_PERMISSION ENDIF ELSE IF NOT NETWORK_HAS_VALID_ROS_CREDENTIALS() IF scLB_DisplayedData.iCurrentViewID != SC_LB_VIEW_ID_NO_ROS CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU) scLB_DisplayedData.iCurrentViewID = SC_LB_VIEW_ID_NO_ROS ENDIF ELSE IF scLB_DisplayedData.iReadFailedBS != 0 IF scLB_DisplayedData.iCurrentViewID != SC_LB_VIEW_ID_READ_FAILED CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU) scLB_DisplayedData.iCurrentViewID = SC_LB_VIEW_ID_READ_FAILED ENDIF ENDIF ENDIF ENDIF ENDIF //println("Player cannot view leaderboard.") IF NOT IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU) // IF scLB_DisplayedData.iCurrentViewID = SC_LB_VIEW_ID_NOT_ONLINE // IF IS_SYSTEM_UI_BEING_DISPLAYED() // EXIT // ELSE // IF HAS_NET_TIMER_EXPIRED() // // ENDIF // ENDIF // ENDIF BEGIN_SCALEFORM_MOVIE_METHOD(scaleFormID,"CLEAR_ALL_SLOTS") END_SCALEFORM_MOVIE_METHOD() SET_SC_LEADERBOARD_DISPLAY_TYPE(scaleFormID,INT_TO_ENUM(DISPLAY_TYPES,scLB_DisplayedData.displaySetup.iDisplayType)) println("Setting LB display type = ",scLB_DisplayedData.displaySetup.iDisplayType ) IF DOES_TEXT_LABEL_EXIST(scLB_DisplayedData.displaySetup.sLeaderboardType) IF NOT IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId) IF scLB_DisplayedData.displaySetup.iLaps > 0 tempText = scLB_DisplayedData.displaySetup.sLeaderboardName //tempText += "- " //temptext += scLB_DisplayedData.displaySetup.iLaps SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,emptyText,temptext,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral,scLB_DisplayedData.displaySetup.iLaps) ELSE SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,emptyText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral) ENDIF ELSE IF NOT scLB_DisplayedData.displaySetup.bCoDriver tempText = "FMMC_COR_SCLB5" IF scLB_DisplayedData.displaySetup.iLaps > 0 SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral,scLB_DisplayedData.displaySetup.iLaps) ELSE SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral) ENDIF ELSE tempText = "FMMC_COR_SCLB6" IF scLB_DisplayedData.displaySetup.iLaps > 0 SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral,scLB_DisplayedData.displaySetup.iLaps) ELSE SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral) ENDIF ENDIF ENDIF SET_SC_LEADERBOARD_COLUMN_TITLES(scaleFormID,"SCLB_C_RANK",scLB_DisplayedData.sColumnTextName,scLB_DisplayedData.iNumNonRankColumnsToDisplay) ENDIF iFinalState = 0 SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_WORLD) SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,TRUE,TRUE) //iSlotCounter++ iFinalState = 0 SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_FRIENDS) SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,TRUE,TRUE) //iSlotCounter++ iFinalState = 0 SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_CREW) SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,TRUE,TRUE) SET_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU) DISPLAY_SC_LEADERBOARD_UI(scaleFormID) CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS) CLEAR_HELP() ELSE DISPLAY_SC_LEADERBOARD_UI(scaleFormID) ENDIF // IF NOT IS_PLAYER_ONLINE() // IF NOT IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU) // BEGIN_SCALEFORM_MOVIE_METHOD(scaleFormID,"CLEAR_ALL_SLOTS") // END_SCALEFORM_MOVIE_METHOD() // SET_SC_LEADERBOARD_DISPLAY_TYPE(scaleFormID,INT_TO_ENUM(DISPLAY_TYPES,scLB_DisplayedData.displaySetup.iDisplayType)) // println("Setting LB display type = ",scLB_DisplayedData.displaySetup.iDisplayType ) // IF DOES_TEXT_LABEL_EXIST(scLB_DisplayedData.displaySetup.sLeaderboardType) // IF NOT IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId) // IF scLB_DisplayedData.displaySetup.iLaps > 0 // tempText = scLB_DisplayedData.displaySetup.sLeaderboardName // //tempText += "- " // //temptext += scLB_DisplayedData.displaySetup.iLaps // SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,emptyText,temptext,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral,scLB_DisplayedData.displaySetup.iLaps) // ELSE // SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,emptyText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral) // ENDIF // ELSE // IF NOT scLB_DisplayedData.displaySetup.bCoDriver // tempText = "FMMC_COR_SCLB5" // //SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,temptext,FALSE) // IF scLB_DisplayedData.displaySetup.iLaps > 0 // SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral,scLB_DisplayedData.displaySetup.iLaps) // ELSE // SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral) // ENDIF // ELSE // tempText = "FMMC_COR_SCLB6" // //SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,FALSE) // IF scLB_DisplayedData.displaySetup.iLaps > 0 // SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral,scLB_DisplayedData.displaySetup.iLaps) // ELSE // SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral) // ENDIF // ENDIF // ENDIF // SET_SC_LEADERBOARD_COLUMN_TITLES(scaleFormID,"SCLB_C_RANK",scLB_DisplayedData.sColumnTextName,scLB_DisplayedData.iNumNonRankColumnsToDisplay) // ENDIF // iFinalState = 0 // SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_WORLD) // SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,TRUE,TRUE) // //iSlotCounter++ // iFinalState = 0 // SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_FRIENDS) // SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,TRUE,TRUE) // //iSlotCounter++ // iFinalState = 0 // SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_CREW) // SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,TRUE,TRUE) // SET_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU) // DISPLAY_SC_LEADERBOARD_UI(scaleFormID) // CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS) // CLEAR_HELP() // ELSE // DISPLAY_SC_LEADERBOARD_UI(scaleFormID) // ENDIF // ELIF NOT NETWORK_HAVE_ONLINE_PRIVILEGES() // IF NOT IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU) // BEGIN_SCALEFORM_MOVIE_METHOD(scaleFormID,"CLEAR_ALL_SLOTS") // END_SCALEFORM_MOVIE_METHOD() // SET_SC_LEADERBOARD_DISPLAY_TYPE(scaleFormID,INT_TO_ENUM(DISPLAY_TYPES,scLB_DisplayedData.displaySetup.iDisplayType)) // println("Setting LB display type = ",scLB_DisplayedData.displaySetup.iDisplayType ) // IF DOES_TEXT_LABEL_EXIST(scLB_DisplayedData.displaySetup.sLeaderboardType) // IF NOT IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId) // IF scLB_DisplayedData.displaySetup.iLaps > 0 // tempText = scLB_DisplayedData.displaySetup.sLeaderboardName // //tempText += "- " // //temptext += scLB_DisplayedData.displaySetup.iLaps // SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,emptyText,temptext,TRUE,scLB_DisplayedData.displaySetup.iLaps) // ELSE // SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,emptyText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral) // ENDIF // ELSE // IF NOT scLB_DisplayedData.displaySetup.bCoDriver // tempText = "FMMC_COR_SCLB5" // //SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,temptext,FALSE) // IF scLB_DisplayedData.displaySetup.iLaps > 0 // SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral,scLB_DisplayedData.displaySetup.iLaps) // ELSE // SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral) // ENDIF // ELSE // tempText = "FMMC_COR_SCLB6" // //SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,FALSE) // IF scLB_DisplayedData.displaySetup.iLaps > 0 // SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral,scLB_DisplayedData.displaySetup.iLaps) // ELSE // SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral) // ENDIF // ENDIF // ENDIF // SET_SC_LEADERBOARD_COLUMN_TITLES(scaleFormID,"SCLB_C_RANK",scLB_DisplayedData.sColumnTextName,scLB_DisplayedData.iNumNonRankColumnsToDisplay) // ENDIF // iFinalState = 0 // SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_WORLD) // SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,TRUE,TRUE) // //iSlotCounter++ // iFinalState = 0 // SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_FRIENDS) // SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,TRUE,TRUE) // //iSlotCounter++ // iFinalState = 0 // SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_CREW) // SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,TRUE,TRUE) // SET_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU) // CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS) // DISPLAY_SC_LEADERBOARD_UI(scaleFormID) // CLEAR_HELP() // ELSE // DISPLAY_SC_LEADERBOARD_UI(scaleFormID) // ENDIF ELSE IF scLB_DisplayedData.iCurrentViewID != SC_LB_VIEW_ID_NORMAL CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU) scLB_DisplayedData.iCurrentViewID = SC_LB_VIEW_ID_NORMAL ENDIF IF NOT LOAD_SOCIAL_CLUB_LEADERBOARD_DATA(scLB_control) scLB_control.navigation.iCurrentVertSel = -1 CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU) IF NOT IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_LOADING_MENU) BEGIN_SCALEFORM_MOVIE_METHOD(scaleFormID,"CLEAR_ALL_SLOTS") END_SCALEFORM_MOVIE_METHOD() SET_SC_LEADERBOARD_DISPLAY_TYPE(scaleFormID,INT_TO_ENUM(DISPLAY_TYPES,scLB_DisplayedData.displaySetup.iDisplayType)) println("Setting LB display type = ",scLB_DisplayedData.displaySetup.iDisplayType ) IF DOES_TEXT_LABEL_EXIST(scLB_DisplayedData.displaySetup.sLeaderboardType) IF NOT IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId) IF scLB_DisplayedData.displaySetup.iLaps > 0 tempText = scLB_DisplayedData.displaySetup.sLeaderboardName //tempText += "- " //temptext += scLB_DisplayedData.displaySetup.iLaps SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,emptyText,temptext,TRUE,scLB_DisplayedData.displaySetup.iLaps) ELSE SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,emptyText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral) ENDIF ELSE IF NOT scLB_DisplayedData.displaySetup.bCoDriver tempText = "FMMC_COR_SCLB5" //SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,temptext,FALSE) IF scLB_DisplayedData.displaySetup.iLaps > 0 SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral,scLB_DisplayedData.displaySetup.iLaps) ELSE SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral) ENDIF ELSE tempText = "FMMC_COR_SCLB6" //SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,FALSE) IF scLB_DisplayedData.displaySetup.iLaps > 0 SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral,scLB_DisplayedData.displaySetup.iLaps) ELSE SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral) ENDIF ENDIF ENDIF SET_SC_LEADERBOARD_COLUMN_TITLES(scaleFormID,"SCLB_C_RANK",scLB_DisplayedData.sColumnTextName,scLB_DisplayedData.iNumNonRankColumnsToDisplay) ENDIF SET_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_LOADING_MENU) CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS) ENDIF iSlotCounter = 0 i = 0 IF scLB_DisplayedData.iLoadLoopCounter = -1 TEXT_LABEL_23 textLabel = "SC_LB_DL0" REPEAT 3 i IF i = 0 iFinalState = 0 SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_WORLD) SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,FALSE) ELIF i = 1 iFinalState = 0 SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_FRIENDS) SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,FALSE) ELIF i = 2 iFinalState = 0 SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_CREW) SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,FALSE) ENDIF //iSlotCounter++ iFinalState = 0 SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_DESCRIPTION) SET_SC_LEADERBOARD_SLOT_TEXT_DESCRIPTION_ONLY(scaleFormID, iSlotCounter,iFinalState,textLabel)//,scLB_DisplayedData.iNumNonRankColumnsToDisplay) iSlotCounter++ ENDREPEAT scLB_DisplayedData.iLoadLoopCounter = 1 RESET_NET_TIMER(scLB_DisplayedData.downloadingTimer) ELSE IF HAS_NET_TIMER_EXPIRED(scLB_DisplayedData.downloadingTimer,300) TEXT_LABEL_23 textLabel = "SC_LB_DL" textLabel += scLB_DisplayedData.iLoadLoopCounter REPEAT 3 i IF i = 0 iFinalState = 0 SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_WORLD) SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,FALSE) ELIF i = 1 iFinalState = 0 SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_FRIENDS) SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,FALSE) ELIF i = 2 iFinalState = 0 SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_CREW) SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,FALSE) ENDIF //iSlotCounter++ iFinalState = 0 SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_DESCRIPTION) SET_SC_LEADERBOARD_SLOT_TEXT_DESCRIPTION_ONLY(scaleFormID, iSlotCounter,iFinalState,textLabel)//,scLB_DisplayedData.iNumNonRankColumnsToDisplay) iSlotCounter++ ENDREPEAT scLB_DisplayedData.iLoadLoopCounter++ IF scLB_DisplayedData.iLoadLoopCounter > 3 scLB_DisplayedData.iLoadLoopCounter = 0 ENDIF RESET_NET_TIMER(scLB_DisplayedData.downloadingTimer) ENDIF ENDIF #IF IS_DEBUG_BUILD bDisplayedUIThisFrame = TRUE #ENDIF DISPLAY_SC_LEADERBOARD_UI(scaleFormID) ELSE CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_LOADING_MENU) // bAddedSectionHeader[0] = FALSE // bAddedSectionHeader[1] = FALSE // bAddedSectionHeader[2] = FALSE //scLB_control.navigation.iCurrentVertSel = -1 IF NOT IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU) REPEAT 3 i scLB_control.navigation.iSectionCounter[i] = 0 ENDREPEAT BEGIN_SCALEFORM_MOVIE_METHOD(scaleFormID,"CLEAR_ALL_SLOTS") END_SCALEFORM_MOVIE_METHOD() SET_SC_LEADERBOARD_DISPLAY_TYPE(scaleFormID,INT_TO_ENUM(DISPLAY_TYPES,scLB_DisplayedData.displaySetup.iDisplayType)) println("Setting LB display type = ",scLB_DisplayedData.displaySetup.iDisplayType ) IF DOES_TEXT_LABEL_EXIST(scLB_DisplayedData.displaySetup.sLeaderboardType) IF NOT IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId) IF scLB_DisplayedData.displaySetup.iLaps > 0 tempText = scLB_DisplayedData.displaySetup.sLeaderboardName //tempText += "- " //temptext += scLB_DisplayedData.displaySetup.iLaps SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,emptyText,temptext,TRUE,scLB_DisplayedData.displaySetup.iLaps) ELSE SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,emptyText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral) ENDIF ELSE IF NOT scLB_DisplayedData.displaySetup.bCoDriver tempText = "FMMC_COR_SCLB5" //SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,temptext,FALSE) IF scLB_DisplayedData.displaySetup.iLaps > 0 SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral,scLB_DisplayedData.displaySetup.iLaps) ELSE SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral) ENDIF ELSE tempText = "FMMC_COR_SCLB6" //SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,FALSE) IF scLB_DisplayedData.displaySetup.iLaps > 0 SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral,scLB_DisplayedData.displaySetup.iLaps) ELSE SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral) ENDIF ENDIF ENDIF SET_SC_LEADERBOARD_COLUMN_TITLES(scaleFormID,"SCLB_C_RANK",scLB_DisplayedData.sColumnTextName,scLB_DisplayedData.iNumNonRankColumnsToDisplay) ENDIF //INT iGlobalCounter,iFriendCounter, iCrewCounter IF NOT IS_BIT_SET(scLB_control.iBS,SC_LEADERBOARD_CONTROL_GENERATED_FINAL_LIST) CLEAR_FINAL_DATA_STRUCT(tempFinalData) GET_FINAL_DATA_LIST(scLB_control,tempFinalData) ORDER_FINAL_LIST(scLB_control,tempFinalData) ENDIF iSlotCounter = 0 scLB_control.navigation.iMaxVertSel = 0 IF scLB_DisplayedData.iSectionEntries[0] > 1 OR (scLB_DisplayedData.iSectionEntries[0] > 0 AND scLB_DisplayedData.iPlayerIndexForSection[0] != -1) OR (scLB_DisplayedData.iSectionEntries[0] > 0 AND scLB_DisplayedData.displaySetup.bCoDriver AND IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId) AND scLB_DisplayedData.iPlayerIndexForSection[0] != -1) scLB_control.navigation.iCurrentVertSel = -1 i = 0 REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i BOOL bSkipRow = FALSE IF tempFinalData[i].iSection = 1 IF NOT bAddedSectionHeader[0] iFinalState = 0 SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_WORLD) SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,FALSE) //iSlotCounter++ bAddedSectionHeader[0] = TRUE ENDIF ELIF tempFinalData[i].iSection = 2 IF NOT bAddedSectionHeader[1] iFinalState = 0 SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_FRIENDS) IF scLB_DisplayedData.iSectionEntries[1] < 1 AND scLB_DisplayedData.iPlayerIndexForSection[1] = -1 AND NOT (scLB_DisplayedData.iSectionEntries[1] > 0 AND scLB_DisplayedData.displaySetup.bCoDriver AND IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId) AND scLB_DisplayedData.iPlayerIndexForSection[1] != -1) SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,TRUE) bSkipRow = TRUE //bSkipRow = TRUE ELSE SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,FALSE) ENDIF bAddedSectionHeader[1] = TRUE ENDIF ELIF tempFinalData[i].iSection = 3 IF NOT bAddedSectionHeader[2] iFinalState = 0 SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_CREW) IF NOT NETWORK_HAS_SOCIAL_CLUB_ACCOUNT() bSkipRow = TRUE ELSE IF NOT NETWORK_ARE_SOCIAL_CLUB_POLICIES_CURRENT() bSkipRow = TRUE ENDIF ENDIF IF scLB_DisplayedData.iSectionEntries[2] < 2 AND scLB_DisplayedData.iPlayerIndexForSection[2] = -1 AND NOT (scLB_DisplayedData.iSectionEntries[2] > 0 AND scLB_DisplayedData.displaySetup.bCoDriver AND IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId) AND scLB_DisplayedData.iPlayerIndexForSection[2] != -1) bSkipRow = TRUE ENDIF IF bSkipRow SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,TRUE) ELSE SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,FALSE) ENDIF bAddedSectionHeader[2] = TRUE ENDIF ENDIF //IF NOT ARE_STRINGS_EQUAL(tempFinalData[i].rowData.tl23_ParticipantName,"") IF IS_GAMER_HANDLE_VALID(tempFinalData[i].rowData.playerGamerHandle) IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId) NETWORK_PLAYER_GET_USERID(PLAYER_ID(),localUserID) IF NOT tempFinalData[i].rowData.bValidData AND ARE_STRINGS_EQUAL(scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id,localUserID.Name) bSkipRow = TRUE ENDIF ENDIF IF NOT bSkipRow iFinalState = 0 IF NOT scLB_DisplayedData.displaySetup.bCoDriver //IF ARE_STRINGS_EQUAL(tempFinalData[i].rowData.tl23_ParticipantName,GET_PLAYER_NAME(PLAYER_ID())) IF SCLB_CHECK_HANDLES_ARE_THE_SAME(tempFinalData[i].rowData.playerGamerHandle,localPlayerHandle) SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_IS_PLAYER) IF scLB_control.navigation.iCurrentVertSel = -1 bHighlightedARow = TRUE scLB_control.navigation.iCurrentVertSel = i SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_SELECTED) //SET_SC_LEADERBOARD_SLOT_FINAL_STATE(scaleFormID,scLB_control.navigation.slotData[scLB_control.navigation.iCurrentVertSel].iSlot,scLB_control.navigation.slotData[scLB_control.navigation.iCurrentVertSel].iFinalState) ENDIF ENDIF ENDIF IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId) tempText = tempFinalData[i].rowData.tl23_ParticipantName IF NOT IS_STRING_NULL_OR_EMPTY(tempFinalData[i].coDriverDisplayName) AND NOT ARE_STRINGS_EQUAL(tempFinalData[i].coDriverDisplayName,"") temptext += "/" tempText += tempFinalData[i].coDriverDisplayName ENDIF //GET_GAMER_HANDLE_CREW_TAG_FOR_SCALEFORM(tempFinalData[i].rowData.playerGamerHandle,tempCrewTag[0]) println("Entry for slot : ",iSlotCounter, " CrewID = ",tempFinalData[i].crewTag) //GET_GAMER_HANDLE_CREW_TAG_FOR_SCALEFORM(GET_GAMER_HANDLE_STRING(finalData[i].rowData.tl31_CoDriver),tempCrewTag[1]) START_SC_LEADERBOARD_SLOT(scaleFormID,iSlotCounter,iFinalState,tempFinalData[i].rowData.iRank, tempText,tempFinalData[i].crewTag)//tempCrewTag[0]) scLB_control.navigation.slotData[i].iSlot = iSlotCounter println("scLB_control.navigation.slotData[",i,"].iSlot = ",scLB_control.navigation.slotData[i].iSlot) scLB_control.navigation.slotData[i].iFinalState = iFinalState scLB_control.navigation.slotData[i].playerGamerHandle = tempFinalData[i].rowData.playerGamerHandle scLB_control.navigation.iMaxVertSel++ ELSE //GET_GAMER_HANDLE_CREW_TAG_FOR_SCALEFORM(tempFinalData[i].rowData.playerGamerHandle,tempFinalData[i].crewTag)//tempCrewTag[0]) println("Entry for slot : ",iSlotCounter, " CrewID = ",tempFinalData[i].crewTag)//tempCrewTag[0]) START_SC_LEADERBOARD_SLOT(scaleFormID,iSlotCounter,iFinalState,tempFinalData[i].rowData.iRank, tempFinalData[i].rowData.tl23_ParticipantName,tempFinalData[i].crewTag)//tempCrewTag[0]) scLB_control.navigation.slotData[i].iSlot = iSlotCounter println("scLB_control.navigation.slotData[",i,"].iSlot = ",scLB_control.navigation.slotData[i].iSlot) scLB_control.navigation.slotData[i].iFinalState = iFinalState scLB_control.navigation.slotData[i].playerGamerHandle = tempFinalData[i].rowData.playerGamerHandle scLB_control.navigation.iMaxVertSel++ ENDIF REPEAT scLB_DisplayedData.iNumNonRankColumnsToDisplay iDisplayLoop //IF IS_LEADERBOARD_COLUMN_INT(scLB_control.ReadDataStruct.m_LeaderboardId,scLB_Control.ReadDataStruct.m_Type,scLB_DisplayedData.iReadColumns[iDisplayLoop]) bInValidDataForThisColumn = FALSE IF IS_BIT_SET(scLB_DisplayedData.iDisplayColumnIsIntBS,iDisplayLoop) IF IS_BIT_SET(scLB_DisplayedData.iInvalidDataSetBS,iDisplayLoop) IF scLB_DisplayedData.iInvalidDataInt[iDisplayLoop] = tempFinalData[i].rowData.icolumnData[iDisplayLoop] bInValidDataForThisColumn = TRUE ENDIF // println("CDM: Latest scLB_DisplayedData.iInvalidDataInt[iDisplayLoop] = ",scLB_DisplayedData.iInvalidDataInt[iDisplayLoop]) // println("CDM: Latest tempFinalData[i].rowData.icolumnData[iDisplayLoop] = ",tempFinalData[i].rowData.icolumnData[iDisplayLoop]) ENDIF IF bInValidDataForThisColumn ADD_SC_LEADERBOARD_COLUMN_DATA_INT(scLB_DisplayedData.displaySetup,iDisplayLoop,tempFinalData[i].rowData.icolumnData[iDisplayLoop],FALSE,tempFinalData[i].rowData.bCustomVehicle) ELSE ADD_SC_LEADERBOARD_COLUMN_DATA_INT(scLB_DisplayedData.displaySetup,iDisplayLoop,tempFinalData[i].rowData.icolumnData[iDisplayLoop],tempFinalData[i].rowData.bValidData,tempFinalData[i].rowData.bCustomVehicle) ENDIF println("ADD_SC_LEADERBOARD_COLUMN_DATA_INT: ", tempFinalData[i].rowData.icolumnData[iDisplayLoop]) ELSE IF IS_BIT_SET(scLB_DisplayedData.iInvalidDataSetBS,iDisplayLoop) IF scLB_DisplayedData.iInvalidDataFloat[iDisplayLoop] = tempFinalData[i].rowData.icolumnData[iDisplayLoop] bInValidDataForThisColumn = TRUE ENDIF ENDIF IF bInValidDataForThisColumn ADD_SC_LEADERBOARD_COLUMN_DATA_FLOAT(scLB_DisplayedData.displaySetup,iDisplayLoop,tempFinalData[i].rowData.fcolumnData[iDisplayLoop],FALSE) ELSE ADD_SC_LEADERBOARD_COLUMN_DATA_FLOAT(scLB_DisplayedData.displaySetup,iDisplayLoop,tempFinalData[i].rowData.fcolumnData[iDisplayLoop],tempFinalData[i].rowData.bValidData) ENDIF println("ADD_SC_LEADERBOARD_COLUMN_DATA_FLOAT: ", tempFinalData[i].rowData.fcolumnData[iDisplayLoop]) ENDIF ENDREPEAT STOP_SC_LEADERBOARD_SLOT() iSectionCounter[tempFinalData[i].iSection-1]++ IF iSectionCounter[tempFinalData[i].iSection-1] = 2 IF tempFinalData[i].rowData.iRank > 2 SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_OUTLINE) SET_BIT(scLB_control.navigation.slotData[0].iFinalState,SCLB_SLOT_STATE_BIT_OUTLINE) SET_SC_LEADERBOARD_SLOT_FINAL_STATE(scaleFormID,iSlotCounter-1,iFinalState) ENDIF ENDIF iSlotCounter++ ENDIF ENDIF ENDREPEAT i =0 REPEAT 3 i scLB_control.navigation.iSectionCounter[i] = iSectionCounter[i] ENDREPEAT ELSE iFinalState = 0 SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_WORLD) SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,TRUE) //iSlotCounter++ iFinalState = 0 SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_FRIENDS) SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,TRUE) //iSlotCounter++ iFinalState = 0 SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_CREW) SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,TRUE) //iSlotCounter++ //println("DRAW_SC_SCALEFORM_LEADERBOARD: empty leaderboard") ENDIF SET_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU) CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS) #IF IS_DEBUG_BUILD bDisplayedUIThisFrame = TRUE #ENDIF DISPLAY_SC_LEADERBOARD_UI(scaleFormID) CLEAR_HELP() //println("Setup social club leaderboard") IF scLB_control.navigation.iCurrentVertSel = -1 AND NOT bHighlightedARow = TRUE IF scLB_DisplayedData.iSectionEntries[0] > 1 scLB_control.navigation.iCurrentVertSel = 0 SET_BIT(scLB_control.navigation.slotData[scLB_control.navigation.iCurrentVertSel].iFinalState,SCLB_SLOT_STATE_BIT_SELECTED) SET_SC_LEADERBOARD_SLOT_FINAL_STATE(scaleFormID,scLB_control.navigation.slotData[scLB_control.navigation.iCurrentVertSel].iSlot,scLB_control.navigation.slotData[scLB_control.navigation.iCurrentVertSel].iFinalState) ENDIF ENDIF ELSE #IF IS_DEBUG_BUILD bDisplayedUIThisFrame = TRUE #ENDIF DISPLAY_SC_LEADERBOARD_UI(scaleFormID) HANDLE_SELECTION_OF_PLAYERS_LISTED(scaleformID, scLB_control) ENDIF ENDIF ENDIF ENDIF //ENDIF #IF IS_DEBUG_BUILD IF bDisplayedUIThisFrame //println("DRAW_SC_SCALEFORM_LEADERBOARD: called this frame but bDisplayedUIThisFrame = FALSE") //IF SHOULD_PROFILE_BUTTON_BE_AVAILABLE_FOR_LEADERBOARD(scLB_control) // println("SHOULD_PROFILE_BUTTON_BE_AVAILABLE_FOR_LEADERBOARD = TRUE") //ENDIF ENDIF #ENDIF ENDPROC /// PURPOSE: /// Draws the social club leaderboards and disables control actions /// PARAMS: /// scLB_control - The control struct for the leaderboard /// scaleformIndex - The scaleform index for the leaderboard movie PROC DRAW_SOCIAL_CLUB_LEADERBOARD(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control, SCALEFORM_INDEX& scaleformIndex[]) IF NOT IS_PLAYER_TARGETTING_ANYTHING(PLAYER_ID()) AND NOT IS_PLAYER_FREE_AIMING(PLAYER_ID()) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_WEAPON_ICON) ENDIF DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ATTACK) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_ATTACK_LIGHT) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_ATTACK_HEAVY) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_BLOCK) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SELECT_NEXT_WEAPON) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SELECT_PREV_WEAPON) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_WEAPON_WHEEL_NEXT) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_WEAPON_WHEEL_PREV) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SELECT_WEAPON) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_WEAPON_WHEEL_UD) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_WEAPON_WHEEL_LR) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_RELOAD) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_JUMP) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ENTER) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_NEXT_CAMERA) IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_FRONTEND_PAUSE_ALTERNATE) // B*2223500 ENDIF MPGlobalsAmbience.bPlayerViewingLeaderboard = TRUE g_bDisableVoteThisFrame = TRUE DRAW_SC_SCALEFORM_LEADERBOARD(scaleformIndex[0],scLB_control) ENDPROC FUNC BOOL SAFE_TO_SC_LEADERBOARD() IF IS_CUSTOM_MENU_SAFE_TO_DRAW() RETURN TRUE ELSE IF IS_PLAYER_ACTIVE_IN_CORONA() IF NOT IS_SCREEN_FADED_IN() //OR (IS_SCRIPT_HUD_DISPLAYING(HUDPART_TRANSITIONHUD) AND GET_CURRENT_TRANSITION_STATE() != TRANSITION_STATE_WAITING_FOR_EXTERNAL_TERMINATION_CALL) OR (IS_PAUSE_MENU_ACTIVE()) //OR (IS_PLAYER_SWITCH_IN_PROGRESS()) //MP Player Switch is happening. OR (IS_COMMERCE_STORE_OPEN()) OR (g_bResultScreenDisplaying) OR (g_sMenuData.bDisableMenu) RETURN FALSE ENDIF ENDIF ENDIF RETURN TRUE ENDFUNC PROC HANDLE_SOCIAL_CLUB_LEADERBOARD_CORONA(INT& iButtonBS,BOOL& bDrawingMenu,BOOL& bMenuActive,BOOL& bDrawGlobalBoard,BOOL& bDrawCoDriverBoard, INT& iState, INT &iRangeWeap, SC_LEADERBOARD_CONTROL_STRUCT& scLB_control, SCALEFORM_INDEX& scaleformIndex[],SCALEFORM_INSTRUCTIONAL_BUTTONS& scaleformStruct, BOOL bInCorona = FALSE) // IF IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SOCIAL_CLUB_TOUR) // IF NOT IS_SOCIAL_CLUB_ACTIVE() // //AND NOT IS_PAUSE_MENU_ACTIVE() // println("NOT IS_SOCIAL_CLUB_ACTIVE() clearing flag") // CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SOCIAL_CLUB_TOUR) // ENDIF // ELSE IF bDrawingMenu IF SAFE_TO_SC_LEADERBOARD() DRAW_SOCIAL_CLUB_LEADERBOARD(scLB_control,scaleformIndex) IF IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_LOADING_MENU) OR IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU) //Deal with the buttons IF bInCorona = FALSE SPRITE_PLACEMENT ScaleformSprite ScaleformSprite = GET_SCALEFORM_INSTRUCTIONAL_BUTTON_POSITION() IF NOT IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS) REFRESH_SCALEFORM_INSTRUCTIONAL_BUTTONS(scaleformStruct) SET_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS) // IF NOT NETWORK_HAS_SOCIAL_CLUB_ACCOUNT() // ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT),"IB_SOCIAL_CLUB",scaleformStruct) // ELSE // IF NOT NETWORK_ARE_SOCIAL_CLUB_POLICIES_CURRENT() // ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT),"SCLB_SIGNIN",scaleformStruct) // ENDIF // ENDIF IF IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU) AND scLB_DisplayedData.iSectionEntries[0] > 0 AND scLB_control.navigation.iCurrentVertSel >= 0 ADD_SCALEFORM_INSTRUCTIONAL_INPUT(FRONTEND_CONTROL, INPUT_FRONTEND_SELECT,"SCLB_PROFILE",scaleformStruct, TRUE) ENDIF ADD_SCALEFORM_INSTRUCTIONAL_INPUT(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL,"BB_BACK",scaleformStruct, TRUE) IF IS_SC_LEADERBOARD_A_RACE(scLB_control.ReadDataStruct.m_LeaderboardId) AND NOT IS_THIS_RACE_A_POINT_2_POINT_RACE() IF bDrawGlobalBoard ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_X),"FMMC_COR_SCLB2",scaleformStruct) ELSE ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_X),"FMMC_COR_SCLB1",scaleformStruct) ENDIF ENDIF IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId) IF bDrawCoDriverBoard ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"FMMC_COR_SCLB5",scaleformStruct) ELSE ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"FMMC_COR_SCLB6",scaleformStruct) ENDIF ENDIF IF scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_MP_SRANGE) SWITCH iState CASE 0 ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_X),"FMMC_COR_SCLB7a",scaleformStruct) BREAK CASE 1 ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_X),"FMMC_COR_SCLB7b",scaleformStruct) BREAK CASE 2 ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_X),"FMMC_COR_SCLB7c",scaleformStruct) BREAK ENDSWITCH SWITCH iRangeWeap CASE 0 ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"HUD_MG_SMG",scaleformStruct) //off by one as this is for NEXT selection not current BREAK CASE 1 ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"HUD_MG_ASSAULT",scaleformStruct) //off by one as this is for NEXT selection not current BREAK CASE 2 ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"HUD_MG_SHOTGUN",scaleformStruct) //off by one as this is for NEXT selection not current BREAK CASE 3 ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"HUD_MG_LMG",scaleformStruct) //off by one as this is for NEXT selection not current BREAK CASE 4 ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"HUD_MG_HEAVY",scaleformStruct) //off by one as this is for NEXT selection not current BREAK CASE 5 ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"HUD_MG_PISTOL",scaleformStruct) //off by one as this is for NEXT selection not current BREAK ENDSWiTCH ENDIF // IF IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU) // AND scLB_DisplayedData.iSectionEntries[0] > 0 // ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(ICON_DPAD_UPDOWN,"SCLB_NAVIGATE",scaleformStruct) // ENDIF ENDIF //println("Setup the button options.") RUN_SCALEFORM_INSTRUCTIONAL_BUTTONS(scaleformIndex[1], ScaleformSprite, scaleformStruct) //ELSE // RUN_SCALEFORM_INSTRUCTIONAL_BUTTONS(scaleformIndex[1], ScaleformSprite, scaleformStruct) //ENDIF ENDIF ELSE println("HANDLE_SOCIAL_CLUB_LEADERBOARD_CORONA: waiting for menu to be setup before drawing buttons.") ENDIF // #IF IS_DEBUG_BUILD // ELSE // println("HANDLE_SOCIAL_CLUB_LEADERBOARD_CORONA: can't draw IS_CUSTOM_MENU_SAFE_TO_DRAW() = FALSE!!!") // IF NOT IS_SCREEN_FADED_IN() // println("HANDLE_SOCIAL_CLUB_LEADERBOARD_CORONA: because screen is not faded in") // ENDIF // IF (IS_SCRIPT_HUD_DISPLAYING(HUDPART_TRANSITIONHUD) AND GET_CURRENT_TRANSITION_STATE() != TRANSITION_STATE_WAITING_FOR_EXTERNAL_TERMINATION_CALL) // println("HANDLE_SOCIAL_CLUB_LEADERBOARD_CORONA: because (IS_SCRIPT_HUD_DISPLAYING(HUDPART_TRANSITIONHUD) AND GET_CURRENT_TRANSITION_STATE() != TRANSITION_STATE_WAITING_FOR_EXTERNAL_TERMINATION_CALL)") // ENDIF // IF (IS_PAUSE_MENU_ACTIVE()) // println("HANDLE_SOCIAL_CLUB_LEADERBOARD_CORONA: because IS_PAUSE_MENU_ACTIVE())") // ENDIF // IF (IS_COMMERCE_STORE_OPEN()) // println("HANDLE_SOCIAL_CLUB_LEADERBOARD_CORONA: because IS_COMMERCE_STORE_OPEN())") // ENDIF // IF (g_bResultScreenDisplaying) // println("HANDLE_SOCIAL_CLUB_LEADERBOARD_CORONA: because g_bResultScreenDisplaying") // ENDIF // IF (IS_PLAYER_SWITCH_IN_PROGRESS()) //MP Player Switch is happening. // println("HANDLE_SOCIAL_CLUB_LEADERBOARD_CORONA: because IS_PLAYER_SWITCH_IN_PROGRESS()") // ENDIF // IF (g_sMenuData.bDisableMenu) // println("HANDLE_SOCIAL_CLUB_LEADERBOARD_CORONA: because g_sMenuData.bDisableMenu)") // ENDIF // #ENDIF ENDIF IF NOT IS_BIT_SET(iButtonBS,FM_PRESSED_BS_CIRCLE) IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL) OR IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL) // #IF IS_DEBUG_BUILD // IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL) // println("HANDLE_SOCIAL_CLUB_LEADERBOARD_CORONA: IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)") // ENDIF // IF IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL) // println("HANDLE_SOCIAL_CLUB_LEADERBOARD_CORONA:IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)") // ENDIF // #ENDIF PLAY_SOUND_FRONTEND(-1, "BACK","HUD_FRONTEND_MP_SOUNDSET") SET_BIT(iButtonBS,FM_PRESSED_BS_CIRCLE) println("CLEANUP_CORONA_LEADERBOARD: player pressed cancel when on leaderboard") CLEANUP_CORONA_LEADERBOARD(bDrawingMenu,bMenuActive,scLB_Control,scaleformIndex,scaleformStruct) exit ENDIF ELSE IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL) AND NOT IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL) CLEAR_BIT(iButtonBS,FM_PRESSED_BS_CIRCLE) ENDIF ENDIF IF IS_SC_LEADERBOARD_A_RACE(scLB_control.ReadDataStruct.m_LeaderboardId) AND NOT IS_THIS_RACE_A_POINT_2_POINT_RACE() IF NOT IS_BIT_SET(iButtonBS,FM_PRESSED_BS_X) IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_X) OR IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_X) PLAY_SOUND_FRONTEND(-1, "SELECT","HUD_FRONTEND_MP_SOUNDSET") SET_BIT(iButtonBS,FM_PRESSED_BS_X) IF bDrawGlobalBoard bDrawGlobalBoard = FALSE ELSE bDrawGlobalBoard = TRUE ENDIF println("global board = ",bDrawGlobalBoard) CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS) CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_LOADING_MENU) CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU) ENDIF ELSE IF NOT IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_X) AND NOT IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_X) CLEAR_BIT(iButtonBS,FM_PRESSED_BS_X) ENDIF ENDIF ENDIF IF scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_MP_SRANGE) IF NOT IS_BIT_SET(iButtonBS,FM_PRESSED_BS_X) IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_X) OR IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_X) PLAY_SOUND_FRONTEND(-1, "SELECT","HUD_FRONTEND_MP_SOUNDSET") SET_BIT(iButtonBS,FM_PRESSED_BS_X) iState++ IF iState > 2 iState = 0 ENDIF CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_LOADING_MENU) CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU) CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS) println("HANDLE_SOCIAL_CLUB_LEADERBOARD_CORONA: shooting range moving to state: ", iState) ENDIF ELSE IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_X) AND NOT IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_X) CLEAR_BIT(iButtonBS,FM_PRESSED_BS_X) ENDIF ENDIF IF NOT IS_BIT_SET(iButtonBS,FM_PRESSED_BS_Y) IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_Y) OR IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_Y) PLAY_SOUND_FRONTEND(-1, "SELECT","HUD_FRONTEND_MP_SOUNDSET") SET_BIT(iButtonBS,FM_PRESSED_BS_Y) iRangeWeap++ IF iRangeWeap > 5 iRangeWeap = 0 ENDIF CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_LOADING_MENU) CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU) CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS) println("HANDLE_SOCIAL_CLUB_LEADERBOARD_CORONA: shooting range moving to weapon: ", iRangeWeap) ENDIF ELSE IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_Y) AND NOT IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_Y) CLEAR_BIT(iButtonBS,FM_PRESSED_BS_Y) ENDIF ENDIF ENDIF //BOOL bTemp //IF bTemp = TRUE IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId) IF NOT IS_BIT_SET(iButtonBS,FM_PRESSED_BS_Y) IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_Y) OR IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_Y) PLAY_SOUND_FRONTEND(-1, "SELECT","HUD_FRONTEND_MP_SOUNDSET") SET_BIT(iButtonBS,FM_PRESSED_BS_Y) IF bDrawCoDriverBoard bDrawCoDriverBoard = FALSE ELSE bDrawCoDriverBoard = TRUE ENDIF println("bDrawCoDriverBoard = ",bDrawCoDriverBoard ) CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS) CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_LOADING_MENU) CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU) ENDIF ELSE IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_Y) AND NOT IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_Y) CLEAR_BIT(iButtonBS,FM_PRESSED_BS_y) ENDIF ENDIF //ENDIF ENDIF ENDIF //ENDIF ENDPROC FUNC STRING CONVERT_TEXT_LABEL_TO_LITERAL_STRING(STRING theString) RETURN theString ENDFUNC STRUCT BEST_LAPS_DISPLAY_NAME_STRUCT TEXT_LABEL_63 tl63_names[2] GAMER_HANDLE gh_handles[2] INT iQueryProgress[2] //for the request on durango TEXT_LABEL_63 tl63_namesTemp[2] GAMER_HANDLE gh_handlesTemp[2] INT iNumHandles INT iRequestID ENDSTRUCT FUNC BOOL GET_DISPLAY_NAMES_FOR_BEST_LAP_TIMES(BEST_LAPS_DISPLAY_NAME_STRUCT &theStruct) INT i INT iResult INT iCounter IF IS_PC_VERSION() PRINTLN("GET_DISPLAY_NAMES_FOR_BEST_LAP_TIMES: bypassing for PC build.") RETURN TRUE ELIF IS_XBOX_PLATFORM() OR IS_PLAYSTATION_PLATFORM() SWITCH theStruct.iQueryProgress[0] CASE 0 theStruct.iNumHandles = 0 theStruct.iRequestID = -1 REPEAT 2 i theStruct.tl63_namesTemp[i] = "" CLEAR_GAMER_HANDLE_STRUCT(theStruct.gh_handlesTemp[i]) IF IS_GAMER_HANDLE_VALID(theStruct.gh_handles[i]) theStruct.gh_handlesTemp[theStruct.iNumHandles] = theStruct.gh_handles[i] theStruct.iNumHandles++ ENDIF ENDREPEAT IF theStruct.iNumHandles > 0 theStruct.iRequestID = NETWORK_DISPLAYNAMES_FROM_HANDLES_START(theStruct.gh_handlesTemp,theStruct.iNumHandles) theStruct.iQueryProgress[0] = 1 ELSE theStruct.iQueryProgress[0] = 2 ENDIF BREAK CASE 1 iResult = NETWORK_GET_DISPLAYNAMES_FROM_HANDLES(theStruct.iRequestID,theStruct.tl63_namesTemp,theStruct.iNumHandles) IF iResult = 0 PRINTLN("GET_DISPLAY_NAMES_FOR_BEST_LAP_TIMES- SUCCEEDED!") REPEAT 2 i IF IS_GAMER_HANDLE_VALID(theStruct.gh_handles[i]) theStruct.tl63_names[i] = theStruct.tl63_namesTemp[iCounter] PRINTLN("GET_DISPLAY_NAMES_FOR_BEST_LAP_TIMES PlayerName = ",theStruct.tl63_names[i] ) iCounter++ ENDIF ENDREPEAT theStruct.iQueryProgress[0] = 2 ELIF iResult = -1 PRINTLN("GET_DISPLAY_NAMES_FOR_BEST_LAP_TIMES- FAILED!") theStruct.iQueryProgress[0] = 2 ELSE PRINTLN("GET_DISPLAY_NAMES_FOR_BEST_LAP_TIMES: waiting for display name request: iResult = ",iResult) RETURN FALSE ENDIF BREAK CASE 2 theStruct.iRequestID = -1 RETURN TRUE BREAK ENDSWITCH ELSE REPEAT 2 i IF NOT GET_GAMER_NAME_FROM_HANDLE(theStruct.iQueryProgress[i],theStruct.gh_handles[i],theStruct.tl63_names[i]) RETURN FALSE ENDIF ENDREPEAT RETURN TRUE ENDIF RETURN FALSE ENDFUNC /// PURPOSE: /// Gets the personal/global/crew best lap times FUNC BOOL GET_RACE_BEST_LAP_TIMES(INT& iReadStage, INT& iLoadStage,BOOL& bSuccessful, INT iRaceType,INT& iGlobalBest, INT& iPersonalBest,INT& iComparisonBest,RACE_CHECKPOINTS_LOAD_STRUCT &raceStoredDataStruct,TEXT_LABEL_31& worldRecordHolderName, TEXT_LABEL_31& compareRecordHolderName,BEST_LAPS_DISPLAY_NAME_STRUCT &displayNamesQuery) IF IS_STRING_NULL_OR_EMPTY(g_FMMC_STRUCT.tl31LoadedContentID) println("GET_RACE_BEST_LAP_TIMES: exited as current file name is empty") RETURN TRUE ENDIF Leaderboard2ReadData lbReadData Leaderboard2ReadData emptyData //LeaderboardRowData tempRowData[1] LeaderboardRowData initRowData LeaderboardReadInfo readInfo INT iLoopRowMax = 50 INT iNumOfFriends INT iRowIndex GAMER_HANDLE gamerHandle gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID()) NETWORK_CLAN_DESC clanDesc Leaderboard2GroupHandle groupHandleData[1] INT iIndex = 0 TEXT_LABEL_31 createdGroupText createdGroupText = g_FMMC_STRUCT.tl31LoadedContentID SWITCH iRaceType CASE ciRACE_SUB_TYPE_STANDARD CASE ciRACE_SUB_TYPE_GTA CASE ciRACE_SUB_TYPE_NON_CONTACT IF GlobalServerBD_Races.iRaceMode = ciRACE_SUB_TYPE_STANDARD lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_RACES) ENDIF IF GlobalServerBD_Races.iRaceMode = ciRACE_SUB_TYPE_GTA lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_GTA_RACES) ENDIF IF GlobalServerBD_Races.iRaceMode = ciRACE_SUB_TYPE_NON_CONTACT lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_NON_CONTACT_RACES) ENDIF lbReadData.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER lbReadData.m_GroupSelector.m_NumGroups = 1 lbReadData.m_GroupSelector.m_Group[0].m_Category = "Mission" lbReadData.m_GroupSelector.m_Group[0].m_Id = createdGroupText BREAK CASE ciRACE_SUB_TYPE_RALLY lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_RALLY) lbReadData.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER lbReadData.m_GroupSelector.m_NumGroups = 2 lbReadData.m_GroupSelector.m_Group[0].m_Category = "Mission" lbReadData.m_GroupSelector.m_Group[0].m_Id = createdGroupText lbReadData.m_GroupSelector.m_Group[1].m_Category = "CoDriver" lbReadData.m_GroupSelector.m_Group[1].m_Id = "" BREAK ENDSWITCH // IF iRaceType = ciRACE_SUB_TYPE_STANDARD // lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_RACES) // ELIF iRaceType = ciRACE_SUB_TYPE_GTA // lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_GTA_RACES) // ELIF iRaceType = ciRACE_SUB_TYPE_RALLY // lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_RALLY) // ENDIF // lbReadData.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER // lbReadData.m_GroupSelector.m_NumGroups = 1 // lbReadData.m_GroupSelector.m_Group[0].m_Category = "Mission" // lbReadData.m_GroupSelector.m_Group[0].m_Id = createdGroupText // SWITCH iReadStage CASE 0 displayNamesQuery.iQueryProgress[0] = 0 displayNamesQuery.iQueryProgress[1] = 0 IF START_SC_LEADERBOARD_READ_BY_RANK(iLoadStage,bSuccessful,lbReadData,1,1) #IF IS_DEBUG_BUILD println("GET_RACE_BEST_LAP_TIMES: Global best LEADERBOARD ID = ", lbReadData.m_LeaderboardId, " groupHandle = ",lbReadData.m_GroupSelector.m_Group[0].m_Id) #ENDIF FILL_READ_INFO_STRUCT(readInfo,lbReadData) IF bSuccessful AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) IF readInfo.m_ReturnedRows > 0 LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData) //IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, "") IF NOT IS_GAMER_HANDLE_VALID(initRowData.m_GamerHandle) println("GET_RACE_BEST_LAP_TIMES: Global best -- moving to stage 99 no global data - A") iGlobalBest = RACE_LEADERBOARD_NO_DATA_RESULT iReadStage = 99 ELSE iGlobalBest = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0) println("GET_RACE_BEST_LAP_TIMES: Global best Before= ",iGlobalBest) IF iGlobalBest < 0 iGlobalBest = -iGlobalBest ENDIF displayNamesQuery.gh_handles[0] = initRowData.m_GamerHandle println("GET_RACE_BEST_LAP_TIMES: Global best AFTER= ",iGlobalBest) //worldRecordHolderName = CONVERT_TEXT_LABEL_TO_LITERAL_STRING(initRowData.m_GamerName) worldRecordHolderName = initRowData.m_GamerName //stoopid compiler! IF IS_STRING_NULL(worldRecordHolderName) /// ENDIF println("GET_RACE_BEST_LAP_TIMES: Global best --moving to stage 1 world record holder name = ", worldRecordHolderName) iReadStage = 1 ENDIF //println("Ending read in READ_BY_RANK in ", GET_THIS_SCRIPT_NAME() ) ELSE println("GET_RACE_BEST_LAP_TIMES: Global best -- moving to stage 99 no global data - B") iGlobalBest = -1 iReadStage = 99 ENDIF LEADERBOARDS2_READ_GET_ROW_DATA_END( ) ELSE iGlobalBest = -1 println("GET_RACE_BEST_LAP_TIMES: Global best -- moving to stage 99 no global data - C") iReadStage = 99 ENDIF END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData) lbReadData = emptyData ENDIF BREAK CASE 1 IF START_SC_LEADERBOARD_READ_BY_HANDLE(iLoadStage,bSuccessful,lbReadData,gamerHandle) #IF IS_DEBUG_BUILD println("GET_RACE_BEST_LAP_TIMES: Personal best LEADERBOARD ID = ", lbReadData.m_LeaderboardId," groupHandle = ",lbReadData.m_GroupSelector.m_Group[0].m_Id) #ENDIF FILL_READ_INFO_STRUCT(readInfo,lbReadData) IF bSuccessful AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) IF readInfo.m_ReturnedRows > 0 LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData) //IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, "") IF NOT IS_GAMER_HANDLE_VALID(initRowData.m_GamerHandle) println("GET_RACE_BEST_LAP_TIMES: Personal best -- moving to stage 2 no data for local player -A") iPersonalBest = RACE_LEADERBOARD_NO_DATA_RESULT iReadStage = 2 ELSE iPersonalBest = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0) displayNamesQuery.gh_handles[1] = initRowData.m_GamerHandle println("GET_RACE_BEST_LAP_TIMES: Personal best- Before= ",iPersonalBest) IF iPersonalBest < 0 iPersonalBest = -iPersonalBest ENDIF println("GET_RACE_BEST_LAP_TIMES: Personal best-AFTERe= ",iPersonalBest) println("GET_RACE_BEST_LAP_TIMES: Personal best-- moving to stage 2 got data for local player -B") iReadStage = 2 ENDIF ELSE iPersonalBest = -1 println("GET_RACE_BEST_LAP_TIMES: Personal best -- moving to stage 2 no data for local player -C") iReadStage = 2 ENDIF LEADERBOARDS2_READ_GET_ROW_DATA_END( ) ELSE iPersonalBest = -1 println("GET_RACE_BEST_LAP_TIMES: Personal best -- moving to stage 2 no data for local player -D") iReadStage = 2 ENDIF //println("Ending read in READ_BY_HANDLE in ", GET_THIS_SCRIPT_NAME() ) END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData) lbReadData = emptyData ENDIF BREAK CASE 2 println("GET_RACE_BEST_LAP_TIMES: Checkpoints type: ",raceStoredDataStruct.iCheckPointType) SWITCH raceStoredDataStruct.iCheckPointType CASE RACE_SPLIT_COMPARISON_CREW iReadStage = 3 println("GET_RACE_BEST_LAP_TIMES: moving to stage 3 GET crew time") BREAK CASE RACE_SPLIT_COMPARISON_WORLD compareRecordHolderName = worldRecordHolderName iComparisonBest = iGlobalBest iReadStage = 5 println("GET_RACE_BEST_LAP_TIMES: moving to stage 5 already got global best") BREAK CASE RACE_SPLIT_COMPARISON_PERSONAL compareRecordHolderName = GET_PLAYER_NAME(PLAYER_ID()) iComparisonBest = iPersonalBest iReadStage = 5 println("GET_RACE_BEST_LAP_TIMES: moving to stage 5 already got personal") BREAK CASE RACE_SPLIT_COMPARISON_FRIEND iReadStage = 4 println("GET_RACE_BEST_LAP_TIMES: moving to stage 4 GET friend time ") BREAK ENDSWITCH BREAK CASE 3 IF NETWORK_CLAN_SERVICE_IS_VALID() IF NETWORK_CLAN_PLAYER_IS_ACTIVE(gamerHandle) IF raceStoredDataStruct.m_ClanId = 0 IF NETWORK_CLAN_PLAYER_GET_DESC(clanDesc, SIZE_OF(clanDesc), gamerHandle) //println("GET_RACE_CHECKPOINT_DATA got players active crew details. moving to stage 1 ") raceStoredDataStruct.m_ClanId = clanDesc.Id ENDIF println("GET_RACE_BEST_LAP_TIMES: Crew best waiting raceStoredDataStruct.m_ClanId = 0") RETURN FALSE ENDIF ELSE println("GET_RACE_BEST_LAP_TIMES: Crew best exiting NETWORK_CLAN_PLAYER_IS_ACTIVE is false") RETURN TRUE ENDIF ELSE println("GET_RACE_BEST_LAP_TIMES: Crew best exiting N NETWORK_CLAN_SERVICE_IS_VALID is false") RETURN TRUE ENDIF lbReadData.m_ClanId = raceStoredDataStruct.m_ClanId lbReadData.m_Type = LEADERBOARD2_TYPE_CLAN_MEMBER IF START_SC_LEADERBOARD_READ_BY_RANK(iLoadStage,bSuccessful,lbReadData,1,1) #IF IS_DEBUG_BUILD println("GET_RACE_BEST_LAP_TIMES: Crew best LEADERBOARD ID = ", lbReadData.m_LeaderboardId," groupHandle = ",lbReadData.m_GroupSelector.m_Group[0].m_Id) #ENDIF FILL_READ_INFO_STRUCT(readInfo,lbReadData) IF bSuccessful AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) IF readInfo.m_ReturnedRows > 0 LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData) //IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, "") IF NOT IS_GAMER_HANDLE_VALID(initRowData.m_GamerHandle) println("GET_RACE_BEST_LAP_TIMES: Crew best -- moving to stage 5 no data -A") iComparisonBest = RACE_LEADERBOARD_NO_DATA_RESULT iReadStage = 5 ELSE iComparisonBest = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0) displayNamesQuery.gh_handles[1] = initRowData.m_GamerHandle println("GET_RACE_BEST_LAP_TIMES: Crew best Before= ",iComparisonBest) IF iComparisonBest < 0 iComparisonBest = -iComparisonBest ENDIF println("GET_RACE_BEST_LAP_TIMES: Crew best AFTER= ",iComparisonBest) println("GET_RACE_BEST_LAP_TIMES: Crew best-- moving to stage 5 got data -B") iReadStage = 5 ENDIF ELSE iComparisonBest = -1 println("GET_RACE_BEST_LAP_TIMES: Crew best -- moving to stage 5 no data -C") iReadStage = 5 ENDIF LEADERBOARDS2_READ_GET_ROW_DATA_END( ) ELSE iComparisonBest = -1 println("GET_RACE_BEST_LAP_TIMES: Crew best -- moving to stage 5 no data -D") iReadStage = 5 ENDIF END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData) lbReadData = emptyData ENDIF BREAK CASE 4 //getting information about local player iNumOfFriends = NETWORK_GET_FRIEND_COUNT() IF iNumOfFriends > 0 iRowIndex = raceStoredDataStruct.iFriendLoopCounter*iLoopRowMax IF START_SC_LEADERBOARD_READ_FRIENDS_BY_ROW(iLoadStage,bSuccessful, lbReadData,groupHandleData, groupHandleData[0].m_NumGroups,TRUE,iRowIndex,iLoopRowMax) #IF IS_DEBUG_BUILD DEBUG_START_LEADERBOARD_PRINT_RESULTS("GET_RACE_BEST_LAP_TIMES: Friend best Getinng Friend Data",lbReadData) #ENDIF FILL_READ_INFO_STRUCT(readInfo,lbReadData) IF bSuccessful AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) IF readInfo.m_ReturnedRows > 0 iIndex = 0 //repeat through all row before player println("readInfo.m_ReturnedRows: ", readInfo.m_ReturnedRows) REPEAT readInfo.m_ReturnedRows iIndex LEADERBOARDS2_READ_GET_ROW_DATA_INFO(iIndex, initRowData) //IF readInfo.m_LocalGamerRowNumber != iIndex IF initRowData.m_Rank > 0 IF raceStoredDataStruct.iBestLapTime = 0 OR raceStoredDataStruct.iBestLapTime < LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, 0) compareRecordHolderName = initRowData.m_GamerName displayNamesQuery.gh_handles[1] = initRowData.m_GamerHandle raceStoredDataStruct.iBestLapTime = LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, 0) iComparisonBest = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0,0) IF iComparisonBest< 0 iComparisonBest = -(iComparisonBest) ENDIF println("Setting current best lap for Checkspoint to ", raceStoredDataStruct.iBestLapTime) ENDIF ENDIF //ELSE // println("This is the local player's row ignoring") //ENDIF ENDREPEAT CLEAR_ROW_DATA_INFO_STRUCT(initRowData) LEADERBOARDS2_READ_GET_ROW_DATA_END( ) END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData) raceStoredDataStruct.iFriendLoopCounter++ IF iNumOfFriends > raceStoredDataStruct.iFriendLoopCounter*iLoopRowMax iReadStage = 4 println("GET_RACE_BEST_LAP_TIMES: Friend best friend data moving to ",raceStoredDataStruct.iFriendLoopCounter," loop") ELSE println("GET_RACE_BEST_LAP_TIMES: Friend best friend data finished looping returning true") iReadStage = 5 ENDIF ELSE CLEAR_ROW_DATA_INFO_STRUCT(initRowData) LEADERBOARDS2_READ_GET_ROW_DATA_END( ) END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData) raceStoredDataStruct.iFriendLoopCounter++ IF iNumOfFriends > raceStoredDataStruct.iFriendLoopCounter*iLoopRowMax iReadStage = 4 println("GET_RACE_BEST_LAP_TIMES: Friend best friend data no friend in first group of friends moving to ",raceStoredDataStruct.iFriendLoopCounter ," loop") ELSE iReadStage = 5 ENDIF ENDIF ELSE println("GET_RACE_BEST_LAP_TIMES: Friend best friend data no friends data skiping to end stage 1 (no row data) ") END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData) iReadStage = 5 ENDIF ENDIF ELSE println("GET_RACE_BEST_LAP_TIMES: Friend best friend data no friends data skiping to end stage 1 (friend count is 0)") END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData) iReadStage = 5 ENDIF BREAK CASE 5 IF GET_DISPLAY_NAMES_FOR_BEST_LAP_TIMES(displayNamesQuery) IF NOT IS_STRING_NULL_OR_EMPTY(displayNamesQuery.tl63_names[0]) worldRecordHolderName = displayNamesQuery.tl63_names[0] println("GET_RACE_BEST_LAP_TIMES: world record = ",worldRecordHolderName) IF raceStoredDataStruct.iCheckPointType = RACE_SPLIT_COMPARISON_WORLD compareRecordHolderName = displayNamesQuery.tl63_names[0] println("GET_RACE_BEST_LAP_TIMES: compare record = ",compareRecordHolderName) ELSE IF NOT IS_STRING_NULL_OR_EMPTY(displayNamesQuery.tl63_names[1]) compareRecordHolderName = displayNamesQuery.tl63_names[1] println("GET_RACE_BEST_LAP_TIMES: compare record = ",compareRecordHolderName) ENDIF ENDIF ENDIF iReadStage = 99 ENDIF BREAK CASE 99 RETURN TRUE BREAK ENDSWITCH RETURN FALSE ENDFUNC PROC CLEANUP_RACE_BEST_LAP_TIMES(INT& iReadStage, INT& iLoadStage, BOOL& bResult, INT& iGlobalBest, INT& iPersonalBest,INT& iComparisonBest,Leaderboard2ReadData lbReadData) iReadStage = 0 iGlobalBest = 0 iPersonalBest = 0 iComparisonBest = 0 IF iLoadStage != 0 println("Ending read in CLEANUP_RACE_BEST_LAP_TIMES in ", GET_THIS_SCRIPT_NAME() ) END_LEADERBOARD_READ(iLoadStage,bResult, lbReadData) ENDIF iLoadStage = 0 ENDPROC //FUNC BOOL GET_RACE_CHECKPOINT_DATA(INT& iReadStage, INT& iLoadStage,BOOL& bSuccessful, INT iRaceType,INT iCheckpoints,INT &iCheckpointTimes[],RACE_CHECKPOINTS_LOAD_STRUCT &raceStoredDataStruct, INT &iComparisonTimeTotal, TEXT_LABEL_31& checkpointRecordHolderName) // // //Remove this and put in actual time // UNUSED_PARAMETER(iComparisonTimeTotal) // // //println("GET_RACE_CHECKPOINT_DATA - Called this frame") // //println("GET_RACE_CHECKPOINT_DATA -iRaceType = ",iRaceType) // //println("GET_RACE_CHECKPOINT_DATA -iCheckpoints = ",iCheckpoints) // //println("GET_RACE_CHECKPOINT_DATA -iComparisonTimeTotal = ",iComparisonTimeTotal) // Leaderboard2ReadData lbReadData // Leaderboard2ReadData emptyData // LeaderboardRowData initRowData // LeaderboardReadInfo readInfo // INT i // // INT iLoopRowMax = 50 // INT iNumOfFriends // INT iRowIndex // // GAMER_HANDLE gamerHandle // NETWORK_CLAN_DESC clanDesc // // Leaderboard2GroupHandle groupHandleData[1] // // INT iIndex = 0 // // TEXT_LABEL_31 createdGroupText // createdGroupText = g_FMMC_STRUCT.tl31LoadedContentID // IF iCheckpoints = 0 // ENDIF // SWITCH iRaceType // CASE ciRACE_SUB_TYPE_STANDARD // CASE ciRACE_SUB_TYPE_GTA // CASE ciRACE_SUB_TYPE_RALLY // IF GlobalServerBD_Races.iRaceMode = ciRACE_SUB_TYPE_STANDARD // lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_RACE_CHECKPOINTS) // ENDIF // IF GlobalServerBD_Races.iRaceMode = ciRACE_SUB_TYPE_GTA // lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_GTA_RACE_CHECKPOINTS) // ENDIF // IF GlobalServerBD_Races.iRaceMode = ciRACE_SUB_TYPE_RALLY // lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_RALLY_CHECKPOINTS) // ENDIF // lbReadData.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER // lbReadData.m_GroupSelector.m_NumGroups = 1 // lbReadData.m_GroupSelector.m_Group[0].m_Category = "Mission" // lbReadData.m_GroupSelector.m_Group[0].m_Id = createdGroupText // BREAK // DEFAULT // IF iReadStage > 0 // END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData) // ENDIF // RETURN FALSE // BREAK // ENDSWITCH // // IF IS_STRING_NULL_OR_EMPTY(g_FMMC_STRUCT.tl31LoadedContentID) // //println("GET_RACE_CHECKPOINT_DATA: exited as current file name is empty") // IF iReadStage > 0 // END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData) // ENDIF // RETURN TRUE // ENDIF // // gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID()) // IF raceStoredDataStruct.iCheckPointType = RACE_SPLIT_COMPARISON_CREW // lbReadData.m_Type = LEADERBOARD2_TYPE_CLAN_MEMBER // lbReadData.m_ClanId = raceStoredDataStruct.m_ClanId // ENDIF // IF IS_STRING_NULL(checkpointRecordHolderName) // //compiler doesn't like it without this // ENDIF // IF NOT raceStoredDataStruct.bInitComplete // IF raceStoredDataStruct.iCheckPointType = RACE_SPLIT_COMPARISON_CREW // // IF NETWORK_CLAN_SERVICE_IS_VALID() // IF NETWORK_CLAN_PLAYER_IS_ACTIVE(gamerHandle) // IF raceStoredDataStruct.m_ClanId = 0 // IF NETWORK_CLAN_PLAYER_GET_DESC(clanDesc, SIZE_OF(clanDesc), gamerHandle) // //println("GET_RACE_CHECKPOINT_DATA got players active crew details. moving to stage 1 ") // lbReadData.m_ClanId = clanDesc.Id // raceStoredDataStruct.m_ClanId = clanDesc.Id // ENDIF // println("GET_RACE_CHECKPOINT_DATA waiting raceStoredDataStruct.m_ClanId = 0") // RETURN FALSE // ENDIF // ELSE // println("GET_RACE_CHECKPOINT_DATA exiting NETWORK_CLAN_PLAYER_IS_ACTIVE is false") // RETURN TRUE // ENDIF // ELSE // println("GET_RACE_CHECKPOINT_DATA exiting NETWORK_CLAN_SERVICE_IS_VALID is false") // RETURN TRUE // ENDIF // ENDIF // SWITCH raceStoredDataStruct.iCheckPointType // CASE RACE_SPLIT_COMPARISON_CREW // CASE RACE_SPLIT_COMPARISON_WORLD // iReadStage = 1 // println("GET_RACE_CHECKPOINT_DATA: setting read stage = 1 Checkpoints type: ",raceStoredDataStruct.iCheckPointType) // BREAK // CASE RACE_SPLIT_COMPARISON_PERSONAL // iReadStage = 2 // println("GET_RACE_CHECKPOINT_DATA: setting read stage = 4 Checkpoints type: ",raceStoredDataStruct.iCheckPointType) // BREAK // CASE RACE_SPLIT_COMPARISON_FRIEND // iReadStage = 3 // println("GET_RACE_CHECKPOINT_DATA: setting read stage = 2 Checkpoints type: ",raceStoredDataStruct.iCheckPointType) // BREAK // ENDSWITCH // raceStoredDataStruct.bInitComplete = TRUE // ENDIF // SWITCH iReadStage // CASE 1 // IF START_SC_LEADERBOARD_READ_BY_RANK(iLoadStage,bSuccessful,lbReadData,1,1) // #IF IS_DEBUG_BUILD // println("GET_RACE_CHECKPOINT_DATA: LEADERBOARD ID = ", lbReadData.m_LeaderboardId) // println("GET_RACE_CHECKPOINT_DATA: LEADERBOARD Category 1 = ",lbReadData.m_GroupSelector.m_Group[0].m_Category) // println("GET_RACE_CHECKPOINT_DATA: LEADERBOARD groupHandle 1 = ",lbReadData.m_GroupSelector.m_Group[0].m_Id) // println("GET_RACE_CHECKPOINT_DATA: iCheckpoints = ",iCheckPoints) // //println("GET_RACE_CHECKPOINT_DATA: LEADERBOARD Category 2 = ",lbReadData.m_GroupSelector.m_Group[1].m_Category) // //println("GET_RACE_CHECKPOINT_DATA: LEADERBOARD groupHandle 2 = ",lbReadData.m_GroupSelector.m_Group[1].m_Id) // #ENDIF // FILL_READ_INFO_STRUCT(readInfo,lbReadData) // IF bSuccessful // AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) // IF readInfo.m_ReturnedRows > 0 // LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData) // //IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, "") // IF NOT IS_GAMER_HANDLE_VALID(initRowData.m_GamerHandle) // println("GET_RACE_CHECKPOINT_DATA -- moving to stage 99 no data (name invalid) Checkpoint Type: ",raceStoredDataStruct.iCheckPointType ) // iReadStage = 99 // ELSE // iComparisonTimeTotal = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0,0) // checkpointRecordHolderName = initRowData.m_GamerName // IF iComparisonTimeTotal< 0 // iComparisonTimeTotal = -(iComparisonTimeTotal) // ENDIF // #IF IS_DEBUG_BUILD // IF initRowData.m_NumColumnValues-1 != iCheckpoints // println("GET_RACE_CHECKPOINT_DATA: initRowData.m_NumColumnValues != iCheckpoints") // println("GET_RACE_CHECKPOINT_DATA: initRowData.m_NumColumnValues (including total time 0) = ",initRowData.m_NumColumnValues ) // println("GET_RACE_CHECKPOINT_DATA: iCheckpoints = ", iCheckpoints) // SCRIPT_ASSERT("GET_RACE_CHECKPOINT_DATA: initRowData.m_NumColumnValues != iCheckpoints") // ENDIF // #ENDIF // REPEAT initRowData.m_NumColumnValues-1 i // iCheckpointTimes[i] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, i+1) // println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", 0, " Column: ", i+1, " Time: ", iCheckpointTimes[i]) // ENDREPEAT // println("GET_RACE_CHECKPOINT_DATA-- moving to stage 99 got best Checkpoint Type: ",raceStoredDataStruct.iCheckPointType ) // iReadStage = 99 // ENDIF // println("Ending read in READ_BY_RANK in ", GET_THIS_SCRIPT_NAME() ) // ELSE // println("GET_RACE_CHECKPOINT_DATA -- moving to stage 99 no data (no rows returned) Checkpoint Type: ",raceStoredDataStruct.iCheckPointType ) // iReadStage = 99 // ENDIF // LEADERBOARDS2_READ_GET_ROW_DATA_END( ) // ELSE // println("GET_RACE_CHECKPOINT_DATA -- moving to stage 99 no data (read failed) Checkpoint Type: ",raceStoredDataStruct.iCheckPointType ) // iReadStage = 99 // ENDIF // END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData) // lbReadData = emptyData // ENDIF // BREAK // // CASE 2 // IF START_SC_LEADERBOARD_READ_BY_HANDLE(iLoadStage,bSuccessful,lbReadData,gamerHandle) // #IF IS_DEBUG_BUILD // println("GET_RACE_CHECKPOINT_DATA: LEADERBOARD ID = ", lbReadData.m_LeaderboardId) // println("GET_RACE_CHECKPOINT_DATA: LEADERBOARD Category 1 = ",lbReadData.m_GroupSelector.m_Group[0].m_Category) // println("GET_RACE_CHECKPOINT_DATA: LEADERBOARD groupHandle 1 = ",lbReadData.m_GroupSelector.m_Group[0].m_Id) // println("GET_RACE_CHECKPOINT_DATA: iCheckpoints = ",iCheckPoints) // //println("GET_RACE_CHECKPOINT_DATA: LEADERBOARD Category 2 = ",lbReadData.m_GroupSelector.m_Group[1].m_Category) // //println("GET_RACE_CHECKPOINT_DATA: LEADERBOARD groupHandle 2 = ",lbReadData.m_GroupSelector.m_Group[1].m_Id) // #ENDIF // FILL_READ_INFO_STRUCT(readInfo,lbReadData) // IF bSuccessful // AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) // IF readInfo.m_ReturnedRows > 0 // LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData) // //IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, "") // IF NOT IS_GAMER_HANDLE_VALID(initRowData.m_GamerHandle) // println("GET_RACE_CHECKPOINT_DATA -- moving to stage 99 no data (name invalid) Checkpoint Type: ",raceStoredDataStruct.iCheckPointType ) // iReadStage = 99 // ELSE // checkpointRecordHolderName = initRowData.m_GamerName // iComparisonTimeTotal = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0,0) // IF iComparisonTimeTotal< 0 // iComparisonTimeTotal = -(iComparisonTimeTotal) // ENDIF // #IF IS_DEBUG_BUILD // IF initRowData.m_NumColumnValues-1 != iCheckpoints // println("GET_RACE_CHECKPOINT_DATA: initRowData.m_NumColumnValues != iCheckpoints") // println("GET_RACE_CHECKPOINT_DATA: initRowData.m_NumColumnValues (including total time 0) = ",initRowData.m_NumColumnValues ) // println("GET_RACE_CHECKPOINT_DATA: iCheckpoints = ", iCheckpoints) // SCRIPT_ASSERT("GET_RACE_CHECKPOINT_DATA: initRowData.m_NumColumnValues != iCheckpoints") // ENDIF // #ENDIF // REPEAT initRowData.m_NumColumnValues-1 i // iCheckpointTimes[i] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, i+1) // println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", 0, " Column: ", i+1, " Time: ", iCheckpointTimes[i]) // // ENDREPEAT // iReadStage = 99 // println("GET_RACE_CHECKPOINT_DATA-- moving to stage 99 got best Checkpoint Type: ",raceStoredDataStruct.iCheckPointType ) // ENDIF // println("Ending read in READ_BY_RANK in ", GET_THIS_SCRIPT_NAME() ) // ELSE // println("GET_RACE_CHECKPOINT_DATA -- moving to stage 99 no data (no rows returned) Checkpoint Type: ",raceStoredDataStruct.iCheckPointType ) // iReadStage = 99 // ENDIF // LEADERBOARDS2_READ_GET_ROW_DATA_END( ) // ELSE // println("GET_RACE_CHECKPOINT_DATA -- moving to stage 99 no data (read failed) Checkpoint Type: ",raceStoredDataStruct.iCheckPointType ) // iReadStage = 99 // ENDIF // END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData) // lbReadData = emptyData // ENDIF // BREAK // // CASE 3 // //getting information about local player // iNumOfFriends = NETWORK_GET_FRIEND_COUNT() // IF iNumOfFriends > 0 // iRowIndex = raceStoredDataStruct.iFriendLoopCounter*iLoopRowMax // IF START_SC_LEADERBOARD_READ_FRIENDS_BY_ROW(iLoadStage,bSuccessful, // lbReadData,groupHandleData, // groupHandleData[0].m_NumGroups,TRUE,iRowIndex,iLoopRowMax) // #IF IS_DEBUG_BUILD // DEBUG_START_LEADERBOARD_PRINT_RESULTS("GET_RACE_CHECKPOINT_DATA: Getinng Friend Data",lbReadData) // #ENDIF // FILL_READ_INFO_STRUCT(readInfo,lbReadData) // println("GET_RACE_CHECKPOINT_DATA: iCheckpoints = ",iCheckPoints) // IF bSuccessful // AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) // IF readInfo.m_ReturnedRows > 0 // iIndex = 0 // //repeat through all row before player // println("readInfo.m_ReturnedRows: ", readInfo.m_ReturnedRows) // REPEAT readInfo.m_ReturnedRows iIndex // LEADERBOARDS2_READ_GET_ROW_DATA_INFO(iIndex, initRowData) // //IF readInfo.m_LocalGamerRowNumber != iIndex // IF initRowData.m_Rank > 0 // checkpointRecordHolderName = initRowData.m_GamerName // IF raceStoredDataStruct.iBestLapTime = 0 // OR raceStoredDataStruct.iBestLapTime < LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, 0) // raceStoredDataStruct.iBestLapTime = LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, 0) // iComparisonTimeTotal = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0,0) // IF iComparisonTimeTotal< 0 // iComparisonTimeTotal = -(iComparisonTimeTotal) // ENDIF // println("Setting current best lap for Checkspoint to ", raceStoredDataStruct.iBestLapTime) // #IF IS_DEBUG_BUILD // IF initRowData.m_NumColumnValues-1 != iCheckpoints // println("GET_RACE_CHECKPOINT_DATA: initRowData.m_NumColumnValues != iCheckpoints") // println("GET_RACE_CHECKPOINT_DATA: initRowData.m_NumColumnValues (including total time 0) = ",initRowData.m_NumColumnValues ) // println("GET_RACE_CHECKPOINT_DATA: iCheckpoints = ", iCheckpoints) // SCRIPT_ASSERT("GET_RACE_CHECKPOINT_DATA: initRowData.m_NumColumnValues != iCheckpoints") // ENDIF // #ENDIF // REPEAT initRowData.m_NumColumnValues-1 i // iCheckpointTimes[i] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, i+1) // println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", 0, " Column: ", i+1, " Time: ", iCheckpointTimes[i]) // println("GET_RACE_CHECKPOINT_DATA-- friend data filling best lap time: ",raceStoredDataStruct.iCheckPointType ) // ENDREPEAT // ENDIF // ENDIF // //ELSE // // println("This is the local player's row ignoring") // //ENDIF // ENDREPEAT // // CLEAR_ROW_DATA_INFO_STRUCT(initRowData) // LEADERBOARDS2_READ_GET_ROW_DATA_END( ) // END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData) // raceStoredDataStruct.iFriendLoopCounter++ // IF iNumOfFriends > raceStoredDataStruct.iFriendLoopCounter*iLoopRowMax // iReadStage = 3 // println("GET_RACE_CHECKPOINT_DATA friend data moving to ",raceStoredDataStruct.iFriendLoopCounter," loop") // RETURN FALSE // ELSE // println("GET_RACE_CHECKPOINT_DATA friend data finished looping returning true") // iReadStage = 99 // RETURN FALSE // ENDIF // ELSE // CLEAR_ROW_DATA_INFO_STRUCT(initRowData) // LEADERBOARDS2_READ_GET_ROW_DATA_END( ) // END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData) // raceStoredDataStruct.iFriendLoopCounter++ // IF iNumOfFriends > raceStoredDataStruct.iFriendLoopCounter*iLoopRowMax // iReadStage = 3 // println("GET_RACE_CHECKPOINT_DATA friend data no friend in first group of friends moving to ",raceStoredDataStruct.iFriendLoopCounter ," loop") // ENDIF // RETURN TRUE // ENDIF // ELSE // println("GET_RACE_CHECKPOINT_DATA friend data no friends data skiping to end stage 1 (no row data) ") // END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData) // iReadStage = 99 // RETURN TRUE // ENDIF // ENDIF // ELSE // println("GET_RACE_CHECKPOINT_DATA friend data no friends data skiping to end stage 1 (friend count is 0)") // END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData) // iReadStage = 99 // RETURN TRUE // ENDIF // BREAK // // CASE 99 // RETURN TRUE // BREAK // ENDSWITCH // RETURN FALSE //ENDFUNC // //PROC CLEANUP_GET_RACE_CHECKPOINT_DATA(INT& iReadStage, INT& iLoadStage,BOOL& bSuccessful,Leaderboard2ReadData lbReadData) // iReadStage = 0 // IF iLoadStage != 0 // println("Ending read in CLEANUP_GET_RACE_CHECKPOINT_DATA in ", GET_THIS_SCRIPT_NAME() ) // END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData) // ENDIF // iLoadStage = 0 //ENDPROC FUNC BOOL GET_FREEMODE_DATA_LEADERBOARD_VALUES() LeaderboardReadInfo readInfo LeaderboardRowData initRowData GAMER_HANDLE gamerHandle INT i SWITCH freemodeDataLB.iLoadStage //get TOTAL XP value on leaderboard CASE 0 freemodeDataLB.iTotalLB_XP = 0 freemodeDataLB.iTotalLB_Time = 0 REPEAT MAX_STORED_CREWS i freemodeDataLB.iCrewLB_XP[i] = 0 freemodeDataLB.iCrewLB_Time[i] = 0 ENDREPEAT freemodeDataLB.iLoadStage = 1 BREAK CASE 1 gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID()) freemodeDataLB.ReadDataStruct.m_LeaderboardID = ENUM_TO_INT(LEADERBOARD_FREEMODE_PLAYER_XP) freemodeDataLB.ReadDataStruct.m_type = LEADERBOARD2_TYPE_PLAYER readInfo.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_PLAYER_XP) readInfo.m_LeaderboardType = ENUM_TO_INT(LEADERBOARD2_TYPE_PLAYER) IF START_SC_LEADERBOARD_READ_BY_HANDLE(freemodeDataLB.iTempLoadStage,freemodeDataLB.bTempReadResult ,freemodeDataLB.ReadDataStruct,gamerHandle) #IF IS_DEBUG_BUILD DEBUG_START_LEADERBOARD_PRINT_RESULTS("GET_FREEMODE_DATA_LEADERBOARD_VALUES (crew) ",freemodeDataLB.ReadDataStruct) #ENDIF FILL_READ_INFO_STRUCT(readInfo,freemodeDataLB.ReadDataStruct) IF freemodeDataLB.bTempReadResult AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) IF readInfo.m_ReturnedRows > 0 LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData) //XP //println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", 0, " Column: ", FREEMODE_DATA_LB_COLUMN_XP) freemodeDataLB.iTotalLB_XP = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0,FREEMODE_DATA_LB_COLUMN_XP) println("GET_FREEMODE_DATA_LEADERBOARD_VALUES-- total XP = ",freemodeDataLB.iTotalLB_XP," moving to stage 2 ") IF freemodeDataLB.iTotalLB_XP < 0 freemodeDataLB.iTotalLB_XP = 0 ENDIF //TIME //println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", 0, " Column: ", FREEMODE_DATA_LB_COLUMN_TIME) freemodeDataLB.iTotalLB_Time = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0,FREEMODE_DATA_LB_COLUMN_TIME) println("GET_FREEMODE_DATA_LEADERBOARD_VALUES-- total TIME = ",freemodeDataLB.iTotalLB_Time," moving to stage 3 ") IF freemodeDataLB.iTotalLB_Time < 0 freemodeDataLB.iTotalLB_Time = 0 ENDIF ELSE println("GET_FREEMODE_DATA_LEADERBOARD_VALUES-- no data available for local player moving to stage 2 (no rows returned)") ENDIF ELSE println("GET_FREEMODE_DATA_LEADERBOARD_VALUES-- no data available for local player moving to stage 2 (read failed)") ENDIF freemodeDataLB.iLoadStage = 2 CLEAR_ROW_DATA_INFO_STRUCT(initRowData) IF freemodeDataLB.bTempReadResult LEADERBOARDS2_READ_GET_ROW_DATA_END( ) ENDIF END_LEADERBOARD_READ(freemodeDataLB.iTempLoadStage,freemodeDataLB.bTempReadResult,freemodeDataLB.ReadDataStruct) ENDIF BREAK CASE 2 IF NETWORK_CLAN_SERVICE_IS_VALID() freemodeDataLB.ReadDataStruct.m_ClanId = GET_CREW_ID_FROM_SLOT(freemodeDataLB.iCrewSlotForLoop) IF freemodeDataLB.ReadDataStruct.m_ClanId != 0 AND freemodeDataLB.ReadDataStruct.m_ClanId != -1 println("GET_FREEMODE_DATA_LEADERBOARD_VALUES got crew ID for slot: ",freemodeDataLB.iCrewSlotForLoop," Value of: ",freemodeDataLB.ReadDataStruct.m_ClanId ) freemodeDataLB.iLoadStage = 3 ELSE println("GET_FREEMODE_DATA_LEADERBOARD_VALUES crew ID for slot: ",freemodeDataLB.iCrewSlotForLoop, " is 0 or -1 looping to next crew ID") freemodeDataLB.iCrewSlotForLoop++ IF freemodeDataLB.iCrewSlotForLoop >= MAX_STORED_CREWS println("GET_FREEMODE_DATA_LEADERBOARD_VALUES freemodeDataLB.iCrewSlotForLoop >= MAX_STORED_CREWS moving to stage 4") freemodeDataLB.iLoadStage = 4 ENDIF ENDIF ELSE println("GET_FREEMODE_DATA_LEADERBOARD_VALUES exiting NETWORK_CLAN_SERVICE_IS_VALID is false") RETURN TRUE ENDIF BREAK //get CREW XP value on leaderboard CASE 3 gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID()) freemodeDataLB.ReadDataStruct.m_LeaderboardID = ENUM_TO_INT(LEADERBOARD_FREEMODE_PLAYER_XP) freemodeDataLB.ReadDataStruct.m_type = LEADERBOARD2_TYPE_CLAN_MEMBER readInfo.m_LeaderboardId = freemodeDataLB.ReadDataStruct.m_LeaderboardId readInfo.m_LeaderboardType = ENUM_TO_INT(LEADERBOARD2_TYPE_CLAN_MEMBER) IF START_SC_LEADERBOARD_READ_BY_HANDLE(freemodeDataLB.iTempLoadStage,freemodeDataLB.bTempReadResult ,freemodeDataLB.ReadDataStruct,gamerHandle) #IF IS_DEBUG_BUILD DEBUG_START_LEADERBOARD_PRINT_RESULTS("GET_FREEMODE_DATA_LEADERBOARD_VALUES (crew) ",freemodeDataLB.ReadDataStruct) #ENDIF FILL_READ_INFO_STRUCT(readInfo,freemodeDataLB.ReadDataStruct) IF freemodeDataLB.bTempReadResult AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) IF readInfo.m_ReturnedRows > 0 LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData) //XP //println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", 0, " Column: ", FREEMODE_DATA_LB_COLUMN_XP) freemodeDataLB.iCrewLB_XP[freemodeDataLB.iCrewSlotForLoop] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0,FREEMODE_DATA_LB_COLUMN_XP) println("GET_FREEMODE_DATA_LEADERBOARD_VALUES-- freemodeDataLB.iCrewLB_XP[",freemodeDataLB.iCrewSlotForLoop,"] = ",freemodeDataLB.iCrewLB_XP[freemodeDataLB.iCrewSlotForLoop]) IF freemodeDataLB.iCrewLB_XP[freemodeDataLB.iCrewSlotForLoop] < 0 freemodeDataLB.iCrewLB_XP[freemodeDataLB.iCrewSlotForLoop] = 0 ENDIF //TIME //println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", 0, " Column: ", FREEMODE_DATA_LB_COLUMN_TIME) freemodeDataLB.iCrewLB_Time[freemodeDataLB.iCrewSlotForLoop] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0,FREEMODE_DATA_LB_COLUMN_TIME) println("GET_FREEMODE_DATA_LEADERBOARD_VALUES-- freemodeDataLB.iCrewLB_Time[",freemodeDataLB.iCrewSlotForLoop,"] = ",freemodeDataLB.iCrewLB_Time[freemodeDataLB.iCrewSlotForLoop]) IF freemodeDataLB.iCrewLB_Time[freemodeDataLB.iCrewSlotForLoop] < 0 freemodeDataLB.iCrewLB_Time[freemodeDataLB.iCrewSlotForLoop] = 0 ENDIF ELSE println("GET_FREEMODE_DATA_LEADERBOARD_VALUES-- no data available for local player moving to stage 2 (no rows returned)") ENDIF ELSE println("GET_FREEMODE_DATA_LEADERBOARD_VALUES-- no data available for local player moving to stage 2 (read failed)") ENDIF freemodeDataLB.iLoadStage = 2 CLEAR_ROW_DATA_INFO_STRUCT(initRowData) IF freemodeDataLB.bTempReadResult LEADERBOARDS2_READ_GET_ROW_DATA_END( ) ENDIF END_LEADERBOARD_READ(freemodeDataLB.iTempLoadStage,freemodeDataLB.bTempReadResult,freemodeDataLB.ReadDataStruct) freemodeDataLB.iCrewSlotForLoop++ IF freemodeDataLB.iCrewSlotForLoop >= MAX_STORED_CREWS println("GET_FREEMODE_DATA_LEADERBOARD_VALUES freemodeDataLB.iCrewSlotForLoop >= MAX_STORED_CREWS moving to stage 4") freemodeDataLB.iLoadStage = 4 ENDIF ENDIF BREAK CASE 4 RETURN TRUE BREAK ENDSWITCH RETURN FALSE ENDFUNC PROC WRITE_FREEMODE_DATA_LEADERBOARD_MAINTAINENCE_UPDATE() TEXT_LABEL_31 categoryNames[1] TEXT_LABEL_23 uniqueIdentifiers[1] INT i REPEAT MAX_STORED_CREWS i IF freemodeDataLB.iCrewLB_Time[i] != 0 OR freemodeDataLB.iCrewLB_XP[i] > 0 INT iCrewID = GET_CREW_ID_FROM_SLOT(i) IF iCrewID != 0 AND iCrewID != -1 IF INIT_LEADERBOARD_WRITE(LEADERBOARD_FREEMODE_PLAYER_XP,uniqueIdentifiers,categoryNames,0,iCrewID) // Write XP (score) println("WRITE_FREEMODE_DATA_LEADERBOARD_MAINTAINENCE_UPDATE: writing UPDATE crew XP= ", freemodeDataLB.iCrewLB_XP[i],"time = ",freemodeDataLB.iCrewLB_Time[i]) LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_SCORE,freemodeDataLB.iCrewLB_XP[i],0) // Write time LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_TOTAL_TIME, freemodeDataLB.iCrewLB_Time[i],0) // Write session LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_NUM_MATCHES, 0,0) ENDIF ENDIF ENDIF ENDREPEAT IF freemodeDataLB.iTotalLB_XP > 0 OR freemodeDataLB.iTotalLB_Time != 0 IF INIT_LEADERBOARD_WRITE(LEADERBOARD_FREEMODE_PLAYER_XP,uniqueIdentifiers,categoryNames,0,0) // Write XP (score) LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_SCORE,freemodeDataLB.iTotalLB_XP,0) // Write time println("WRITE_FREEMODE_DATA_LEADERBOARD_MAINTAINENCE_UPDATE: writing UPDATE TOTAL XP = ",freemodeDataLB.iTotalLB_XP," TIME = ",freemodeDataLB.iTotalLB_Time) LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_TOTAL_TIME, freemodeDataLB.iTotalLB_Time,0) // Write session LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_NUM_MATCHES, 0,0) ENDIF ENDIF ENDPROC PROC WRITE_TO_FREEMODE_DATA_LEADERBOARD() TEXT_LABEL_31 categoryNames[1] TEXT_LABEL_23 uniqueIdentifiers[1] INT iXPdifference INT iTimeDifference INT iCurXP = GET_MP_INT_PLAYER_STAT(MPPLY_GLOBALXP) INT iCurTime = GET_TOTAL_NUMBER_OF_MINUTES_FOR_FREEMODE_PLAY_TIME() //1199053 //Freemode XP iXPdifference = iCurXP - freemodeDataLB.lastWrite.iXpLast iTimeDifference = iCurTime - freemodeDataLB.lastWrite.iTimeLAst //PLAYER IF iXPdifference > 0 IF INIT_LEADERBOARD_WRITE(LEADERBOARD_FREEMODE_PLAYER_XP,uniqueIdentifiers,categoryNames,0) // Write XP (score) println("WRITE_TO_GLOBAL_XP_LEADERBOARD: stat = ", iCurXP," iXPlast = ",freemodeDataLB.lastWrite.iXpLast," difference = ", iXPdifference) LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_SCORE,iXPdifference,0) // Write time println("WRITE_TO_GLOBAL_XP_LEADERBOARD: stat = ", iCurTime," iTimeLAst = ",freemodeDataLB.lastWrite.iTimeLAst," difference = ", iTimeDifference) LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_TOTAL_TIME, iTimeDifference,0) // Write session LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_NUM_MATCHES, 0,0) freemodeDataLB.lastWrite.iXpLast = iCurXP freemodeDataLB.lastWrite.iTimeLAst = iCurTime ENDIF // ELSE // freemodeDataLB.lastWrite.iXpLast = iCurXP // freemodeDataLB.lastWrite.iTimeLAst = iCurTime ENDIF ENDPROC //Stick validation of the local data versus board here. FUNC BOOL GLOBAL_XP_IS_LOCAL_VALUE_VALID(INT iLocal_Value, INT iLB_Value) IF ABSI(iLocal_Value - iLB_Value) > 0 RETURN TRUE ENDIF RETURN FALSE ENDFUNC FUNC INT CREW_FREEMODE_DATA_LB_GLOBAL_VALUE_FOR_SLOT(INT iSlot) SWITCH iSlot CASE 0 RETURN g_MPPLY_CREW_LOCAL_XP_0 BREAK CASE 1 RETURN g_MPPLY_CREW_LOCAL_XP_1 BREAK CASE 2 RETURN g_MPPLY_CREW_LOCAL_XP_2 BREAK CASE 3 RETURN g_MPPLY_CREW_LOCAL_XP_3 BREAK CASE 4 RETURN g_MPPLY_CREW_LOCAL_XP_4 BREAK ENDSWITCH RETURN g_MPPLY_CREW_LOCAL_XP_0 ENDFUNC FUNC MPPLY_INT_STATS CREW_FREEMODE_DATA_LB_STAT_ENUM_FOR_SLOT(INT iSlot, BOOL bXP) SWITCH iSlot CASE 0 IF bXP RETURN MPPLY_CREW_LOCAL_XP_0 ELSE RETURN MPPLY_CREW_LOCAL_TIME_0 ENDIF BREAK CASE 1 IF bXP RETURN MPPLY_CREW_LOCAL_XP_1 ELSE RETURN MPPLY_CREW_LOCAL_TIME_1 ENDIF BREAK CASE 2 IF bXP RETURN MPPLY_CREW_LOCAL_XP_2 ELSE RETURN MPPLY_CREW_LOCAL_TIME_2 ENDIF BREAK CASE 3 IF bXP RETURN MPPLY_CREW_LOCAL_XP_3 ELSE RETURN MPPLY_CREW_LOCAL_TIME_3 ENDIF BREAK CASE 4 IF bXP RETURN MPPLY_CREW_LOCAL_XP_4 ELSE RETURN MPPLY_CREW_LOCAL_TIME_4 ENDIF BREAK ENDSWITCH RETURN MPPLY_CREW_LOCAL_XP_0 ENDFUNC /// PURPOSE: /// Initialises crew stats slots PROC INITIALISE_PLAYERS_CREW_STAT_SLOTS() GAMER_HANDLE playersgamerhandle= GET_GAMER_HANDLE_PLAYER(PLAYER_ID()) GET_PLAYER_CLAN_ID(playersgamerhandle) NETWORK_CLAN_DESC PlayerClan INT iLoop = NETWORK_CLAN_GET_LOCAL_MEMBERSHIPS_COUNT() INT i MPPLY_INT_STATS playerstat NET_PRINT("INITIALISE_PLAYERS_CREW_STAT_SLOTS: ") IF iLoop > 0 REPEAT iLoop i NETWORK_CLAN_GET_MEMBERSHIP_DESC(PlayerClan, i) IF IS_PLAYER_ALREADY_IN_THIS_CLAN(PlayerClan.Id) IF iLoop = 0 playerstat = MPPLY_CREW_0_ID SET_HEAVILY_ACCESSED_MP_INT_PLAYER_STAT(playerstat, PlayerClan.Id) //NET_PRINT("SLOT 0 = : ") //NET_PRINT_INT(GET_MP_INT_PLAYER_STAT(playerstat)) ELIF iLoop = 1 playerstat = MPPLY_CREW_1_ID SET_HEAVILY_ACCESSED_MP_INT_PLAYER_STAT(playerstat, PlayerClan.Id) // NET_PRINT("SLOT 1 = : ") //NET_PRINT_INT(GET_MP_INT_PLAYER_STAT(playerstat)) ELIF iLoop = 2 playerstat = MPPLY_CREW_2_ID SET_HEAVILY_ACCESSED_MP_INT_PLAYER_STAT(playerstat, PlayerClan.Id) // NET_PRINT("SLOT 2 = : ") //NET_PRINT_INT(GET_MP_INT_PLAYER_STAT(playerstat)) ELIF iLoop = 3 playerstat = MPPLY_CREW_3_ID SET_HEAVILY_ACCESSED_MP_INT_PLAYER_STAT(playerstat, PlayerClan.Id) // NET_PRINT("SLOT 3 = : ") //NET_PRINT_INT(GET_MP_INT_PLAYER_STAT(playerstat)) ELIF iLoop = 4 playerstat = MPPLY_CREW_4_ID SET_HEAVILY_ACCESSED_MP_INT_PLAYER_STAT(playerstat, PlayerClan.Id) // NET_PRINT("SLOT 4 = : ") //NET_PRINT_INT(GET_MP_INT_PLAYER_STAT(playerstat)) ELSE //NET_PRINT("iloop is out of range ") ENDIF ELSE //NET_PRINT("IS_PLAYER_ALREADY_IN_THIS_CLAN = FALSE ") ENDIF ENDREPEAT ENDIF ENDPROC PROC REWARD_PLAYER_HAS_LINKED_ACCOUNT_TO_SOCIAL_CLUB() IF NOT GET_MP_BOOL_PLAYER_STAT(MPPLY_XP_REWARD_PLAYER_IN_CREW) GAMER_HANDLE player_handle player_handle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID()) IF NETWORK_CLAN_SERVICE_IS_VALID() IF NETWORK_CLAN_PLAYER_IS_ACTIVE(player_handle) SET_MP_BOOL_PLAYER_STAT(MPPLY_XP_REWARD_PLAYER_IN_CREW,TRUE) GIVE_LOCAL_PLAYER_XP(eXPTYPE_STANDARD, "REWLINKCRE", XPTYPE_SOCIALCLUB, XPCATEGORY_SOCIALCLUB_JOINED_CREW, 2000, 1) NET_PRINT("\n REWARD_PLAYER_HAS_LINKED_ACCOUNT_TO_SOCIAL_CLUB Player joined a crew REWARD: 2000\n ") ENDIF ENDIF ENDIF ENDPROC FUNC BOOL SHOULD_STATS_BE_MAINTAINED() //IF GET_MILLISECONDS_IN_DAYS(ABSI(GET_CLOUD_TIME_AS_INT() - g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iLastFreemodeDataLBMaintenance)) >= 1 IF GET_MILLISECONDS_IN_DAYS(ABSI(GET_CLOUD_TIME_AS_INT() - GET_MP_INT_CHARACTER_STAT(MP_STAT_MAINTAIN_XP_WITH_LEADB))) >= g_sMPTunables.iFREEMODE_XP_MAINTAIN_TIME_IN_DAYS RETURN TRUE ENDIF RETURN FALSE ENDFUNC PROC SET_FREEMODE_DATA_LB_STAGE(INT iStage) #IF IS_DEBUG_BUILD SWITCH iStage CASE FREEMODE_DATA_LB_MAINTAIN_STAGE_INIT println("SET_FREEMODE_DATA_LB_STAGE- FREEMODE_DATA_LB_MAINTAIN_STAGE_INIT") BREAK CASE FREEMODE_DATA_LB_MAINTAIN_STAGE_UPDATE_WRITE println("SET_FREEMODE_DATA_LB_STAGE- FREEMODE_DATA_LB_MAINTAIN_STAGE_UPDATE_WRITEE") BREAK CASE FREEMODE_DATA_LB_MAINTAIN_STAGE_CHECKS println("SET_FREEMODE_DATA_LB_STAGE- FREEMODE_DATA_LB_MAINTAIN_STAGE_CHECKS") BREAK CASE FREEMODE_DATA_LB_MAINTAIN_STAGE_WRITE println("SET_FREEMODE_DATA_LB_STAGE- FREEMODE_DATA_LB_MAINTAIN_STAGE_WRITE") BREAK ENDSWITCH #ENDIF freemodeDataLB.iMaintainStage = iStage ENDPROC PROC INIT_WRITE_VALUES() freemodeDataLB.lastWrite.iXpLast = GET_MP_INT_PLAYER_STAT(MPPLY_GLOBALXP) freemodeDataLB.lastWrite.iTimeLast = GET_TOTAL_NUMBER_OF_MINUTES_FOR_FREEMODE_PLAY_TIME() println("INIT_WRITE_VALUES: iXpLast = ",freemodeDataLB.lastWrite.iXpLast," iTimeLast = ",freemodeDataLB.lastWrite.iTimeLast) ENDPROC /// PURPOSE: /// Used in freemode to maintain read/writes to XP board /// PARAMS: /// freemodeDataLB - control/data struct PROC MAINTAIN_FREEMODE_DATA_LEADERBOARD_READ_WRITE() INT i INT iCurrentStatValue BOOl bUpdatedStats BOOL bUpdateLB #IF IS_DEBUG_BUILD STRING state #ENDIF IF IS_NET_PLAYER_OK(PLAYER_ID()) IF NOT freemodeDataLB.bFilledCrewSlots GAMER_HANDLE gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID()) INT iCurrentCrew = GET_PLAYER_CLAN_ID(gamerHandle) INT iCurrentCrewSlot = GET_CURRENT_CREW_SLOT_FROM_ID(iCurrentCrew) IF iCurrentCrewSlot = -1 // will have to assign this. Talk to Brenda, Conor IF NETWORK_CLAN_SERVICE_IS_VALID() IF NETWORK_CLAN_PLAYER_IS_ACTIVE(gamerHandle) IF iCurrentCrew != -1 SET_CREW_ID_IN_VALID_CREW_STAT(iCurrentCrew) REWARD_PLAYER_HAS_LINKED_ACCOUNT_TO_SOCIAL_CLUB() freemodeDataLB.bFilledCrewSlots = TRUE ENDIF ENDIF ELSE EXIT ENDIF ELSE freemodeDataLB.bFilledCrewSlots = TRUE ENDIF ENDIF SWITCH freemodeDataLB.iMaintainStage CASE FREEMODE_DATA_LB_MAINTAIN_STAGE_INIT //println("---FREEMODE_DATA_LB_MAINTAIN_STAGE_INIT--- running.") IF NOT SHOULD_STATS_BE_MAINTAINED() INIT_WRITE_VALUES() println("---FREEMODE_DATA_LB_MAINTAIN_STAGE_INIT--- NOT SHOULD_STATS_BE_MAINTAINED()") SET_FREEMODE_DATA_LB_STAGE(FREEMODE_DATA_LB_MAINTAIN_STAGE_CHECKS) EXIT ENDIF IF NOT NETWORK_CLAN_SERVICE_IS_VALID() //println("---FREEMODE_DATA_LB_MAINTAIN_STAGE_INIT--- clan service not valid") EXIT ENDIF IF NOT GET_FREEMODE_DATA_LEADERBOARD_VALUES() //println("---FREEMODE_DATA_LB_MAINTAIN_STAGE_INIT--- waiting for GET_FREEMODE_DATA_LEADERBOARD_VALUES()") EXIT ENDIF freemodeDataLB.iUpdateTotalLB_XP = 0 freemodeDataLB.iUpdateTotalLB_Time = 0 REPEAT MAX_STORED_CREWS i freemodeDataLB.iUpdateCrewLB_XP[i] = 0 freemodeDataLB.iUpdateCrewLB_Time[i] = 0 ENDREPEAT iCurrentStatValue = GET_MP_INT_PLAYER_STAT(MPPLY_GLOBALXP) //IF LB TOTAL = STAT TOTAL IF freemodeDataLB.iTotalLB_XP = iCurrentStatValue #IF IS_DEBUG_BUILD state = "total XP Value on LB matches" println("CDM---FREEMODE DATA LB--- ",state) #ENDIF //IF LB TOTAL > STAT TOTAL ELIF freemodeDataLB.iTotalLB_XP > iCurrentStatValue //UPDATE STAT SET_MP_INT_PLAYER_STAT(MPPLY_GLOBALXP,freemodeDataLB.iTotalLB_XP) #IF IS_DEBUG_BUILD state = "total XP Value on LB is greater" println("CDM---FREEMODE DATA LB--- ",state,"updating total STAT to = ", freemodeDataLB.iTotalLB_XP) #ENDIF bUpdatedStats = TRUE //LB TOTAL < STAT TOTAL ELSE //UPDATE LB freemodeDataLB.iUpdateTotalLB_XP = iCurrentStatValue - freemodeDataLB.iTotalLB_XP #IF IS_DEBUG_BUILD state = "total XP Value on LB is less" println("CDM---FREEMODE DATA LB--- ",state,"updating total LB by = ", freemodeDataLB.iUpdateTotalLB_XP) #ENDIF bUpdateLB = TRUE ENDIF //CHECK CREW VALUES REPEAT MAX_STORED_CREWS i iCurrentStatValue = CREW_FREEMODE_DATA_LB_GLOBAL_VALUE_FOR_SLOT(i) //IF LB IS HIGHER IF freemodeDataLB.iCrewLB_XP[i] > iCurrentStatValue //CREW STAT = LB SET_HEAVILY_ACCESSED_MP_INT_PLAYER_STAT(CREW_FREEMODE_DATA_LB_STAT_ENUM_FOR_SLOT(i,TRUE),freemodeDataLB.iCrewLB_XP[i]) println("CDM---FREEMODE DATA LB---",state," for slot", i," the XP STAT is less than LB setting to = ", freemodeDataLB.iCrewLB_XP[i]) bUpdatedStats = TRUE //LB IS LOWER ELIF freemodeDataLB.iCrewLB_XP[i] < iCurrentStatValue //WRITE TO LB WITH THAT CREW freemodeDataLB.iUpdateCrewLB_XP[i] = iCurrentStatValue - freemodeDataLB.iCrewLB_XP[i] println("CDM---FREEMODE DATA LB---",state," for slot",i," the XP STAT is greater than LB writing new value to LB = ", freemodeDataLB.iUpdateCrewLB_XP[i]) //MINUS WRITTEN VALUE FROM TOTAL LB VALUE freemodeDataLB.iUpdateTotalLB_XP += -freemodeDataLB.iUpdateCrewLB_XP[i] println("CDM---FREEMODE DATA LB---",state," for slot",i," the XP STAT is greater than LB incrementing LB update value by = ", -freemodeDataLB.iUpdateCrewLB_XP[i]) println("CDM---FREEMODE DATA LB--- total XP Value update is now ",freemodeDataLB.iUpdateTotalLB_XP) bUpdateLB = TRUE ENDIF ENDREPEAT iCurrentStatValue = GET_TOTAL_NUMBER_OF_MINUTES_FOR_FREEMODE_PLAY_TIME() //IF LB TOTAL = STAT TOTAL IF freemodeDataLB.iTotalLB_Time = iCurrentStatValue #IF IS_DEBUG_BUILD state = "total TIME Value on LB matches" println("CDM---FREEMODE DATA LB--- ",state) #ENDIF //IF LB TOTAL > STAT TOTAL ELIF freemodeDataLB.iTotalLB_Time > iCurrentStatValue //UPDATE STAT //SET_MP_INT_PLAYER_STAT(MPPLY_TOTAL_TIME_SPENT_FREEMODE,freemodeDataLB.iTotalLB_Time*60*1000) //we store minutes #IF IS_DEBUG_BUILD state = "total TIME Value on LB is greater" println("CDM---FREEMODE DATA LB--- ",state,"updating total STAT to = ", freemodeDataLB.iTotalLB_Time*60*1000) //we store minutes #ENDIF bUpdatedStats = TRUE //LB TOTAL < STAT TOTAL ELSE //UPDATE LB freemodeDataLB.iUpdateTotalLB_Time = iCurrentStatValue - freemodeDataLB.iTotalLB_Time #IF IS_DEBUG_BUILD state = "total TIME Value on LB is less" println("CDM---FREEMODE DATA LB--- ",state,"updating total LB by = ", freemodeDataLB.iUpdateTotalLB_Time) #ENDIF bUpdateLB = TRUE ENDIF //CHECK CREW VALUES REPEAT MAX_STORED_CREWS i iCurrentStatValue = GET_TOTAL_NUMBER_OF_MINUTES_FOR_MP_UNSIGNED_INT_PLAYER_STAT(CREW_FREEMODE_DATA_LB_STAT_ENUM_FOR_SLOT(i,FALSE)) //IF LB IS HIGHER IF freemodeDataLB.iCrewLB_Time[i] > iCurrentStatValue //CREW STAT = LB SET_MP_INT_PLAYER_STAT(CREW_FREEMODE_DATA_LB_STAT_ENUM_FOR_SLOT(i,FALSE),freemodeDataLB.iCrewLB_Time[i]) println("CDM---FREEMODE DATA LB---",state," for slot", i," the TIME STAT is less than LB setting to = ", freemodeDataLB.iCrewLB_Time[i]) bUpdatedStats = TRUE //LB IS LOWER ELIF freemodeDataLB.iCrewLB_Time[i] < iCurrentStatValue //WRITE TO LB WITH THAT CREW freemodeDataLB.iUpdateCrewLB_Time[i] = iCurrentStatValue - freemodeDataLB.iCrewLB_Time[i] println("CDM---FREEMODE DATA LB---",state," for slot",i," the TIME STAT is greater than LB writing new value to LB = ", freemodeDataLB.iUpdateCrewLB_Time[i]) //MINUS WRITTEN VALUE FROM TOTAL LB VALUE freemodeDataLB.iUpdateTotalLB_Time += -freemodeDataLB.iUpdateCrewLB_Time[i] println("CDM---FREEMODE DATA LB---",state," for slot",i," the TIME STAT is greater than LB incrementing LB update value by = ", -freemodeDataLB.iUpdateCrewLB_Time[i]) println("CDM---FREEMODE DATA LB--- total TIME Value update is now ",freemodeDataLB.iUpdateTotalLB_Time) bUpdateLB = TRUE ENDIF ENDREPEAT IF bUpdateLB IF bUpdatedStats SET_BIT(freemodeDataLB.iBS, FREEMODE_DATA_LB_BS_UPDATE_STAT) ENDIF SET_FREEMODE_DATA_LB_STAGE(FREEMODE_DATA_LB_MAINTAIN_STAGE_UPDATE_WRITE) ELSE INIT_WRITE_VALUES() //g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iLastFreemodeDataLBMaintenance = SET_MP_INT_CHARACTER_STAT(MP_STAT_MAINTAIN_XP_WITH_LEADB,GET_CLOUD_TIME_AS_INT()) //REQUEST_SAVE(STAT_SAVETYPE_SCRIPT_MP_GLOBALS) SET_FREEMODE_DATA_LB_STAGE(FREEMODE_DATA_LB_MAINTAIN_STAGE_CHECKS) ENDIF //PSEUDOCODE FOR REFERENCE //IF LB TOTAL = STAT TOTAL //CHECK CREW VALUES //IF THEY MATCH--- DONE //EXIT //ELSE THEY DONT MATCH //IF LB IS HIGHER //CREW STAT = LB //ELSE LB IS LOWER //WRITE TO LB WITH THAT CREW //MINUS WRITTEN VALUE FROM TOTAL LB VALUE //END //END //END //ELSE LB TOTAL != STAT TOTAL //IF LB TOTAL > STAT TOTAL //UPDATE STAT VALUE //CHECK CREW VALUES //UPDATE MIS-MATCHED CREW VALUES //END //ELSE LB TOTAL < STAT TOTAL //CHECK CREW VALUES //IF THEY MATCH //UPDATE TOTAL VALUE ON LB //ELSE //UPDATE MIS-MATCHED CREW VALUES ANY OVER TOTAL WRITE MINUS //END //END //END //END BREAK CASE FREEMODE_DATA_LB_MAINTAIN_STAGE_UPDATE_WRITE IF NOT SHOULD_ALL_SCRIPT_LEADERBOARD_READS_TERMINATE() WRITE_FREEMODE_DATA_LEADERBOARD_MAINTAINENCE_UPDATE() INIT_WRITE_VALUES() SET_MP_INT_CHARACTER_STAT(MP_STAT_MAINTAIN_XP_WITH_LEADB,GET_CLOUD_TIME_AS_INT()) //g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iLastFreemodeDataLBMaintenance = GET_CLOUD_TIME_AS_INT() //REQUEST_SAVE(STAT_SAVETYPE_SCRIPT_MP_GLOBALS) SET_FREEMODE_DATA_LB_STAGE(FREEMODE_DATA_LB_MAINTAIN_STAGE_CHECKS) ENDIF BREAK CASE FREEMODE_DATA_LB_MAINTAIN_STAGE_CHECKS INT iXPdifference IF NOT freemodeDataLB.bFinishedInitialLeaderboardCheck println("MAINTAIN_FREEMODE_DATA_LEADERBOARD_READ_WRITE: freemodeDataLB.bFinishedInitialLeaderboardCheck = TRUE") freemodeDataLB.bFinishedInitialLeaderboardCheck = TRUE ENDIF IF NOT HAS_NET_TIMER_STARTED(freemodeDataLB.updateTimer) START_NET_TIMER(freemodeDataLB.updateTimer,TRUE) // record players Crew XP at start ELSE IF HAS_NET_TIMER_EXPIRED(freemodeDataLB.updateTimer,30000,TRUE) //at least 30 seconds between writes no matter what. iXPdifference = GET_MP_INT_PLAYER_STAT(MPPLY_GLOBALXP) - freemodeDataLB.lastWrite.iXpLast IF HAS_NET_TIMER_EXPIRED(freemodeDataLB.updateTimer,g_sMPTunables.iFREEMODE_DATA_LB_PERIODIC_WRITE_TIME,TRUE) println("MAINTAIN_FREEMODE_DATA_LEADERBOARD_READ_WRITE writing stats as timer expired") WRITE_TO_FREEMODE_DATA_LEADERBOARD() RESET_NET_TIMER(freemodeDataLB.updateTimer) EXIT ENDIF IF iXPdifference > g_sMPTunables.iFREEMODE_DATA_LB_WRITE_XP_THRESHOLD println("MAINTAIN_FREEMODE_DATA_LEADERBOARD_READ_WRITE xp difference is > than threshold: ", iXPdifference) WRITE_TO_FREEMODE_DATA_LEADERBOARD() RESET_NET_TIMER(freemodeDataLB.updateTimer) ENDIF ENDIF ENDIF BREAK ENDSWITCH ENDIF ENDPROC FUNC BOOL IS_PLAYER_IN_EXCLUDED_LIST(GAMER_HANDLE gamerHandle, GAMER_HANDLE &excludeGamer[]) INT i IF IS_GAMER_HANDLE_VALID(gamerHandle) REPEAT NUM_NETWORK_PLAYERS i IF IS_GAMER_HANDLE_VALID(excludeGamer[i]) IF NETWORK_ARE_HANDLES_THE_SAME(gamerHandle,excludeGamer[i]) RETURN TRUE ENDIF ENDIF ENDREPEAT ENDIF RETURN FALSE ENDFUNC //Example use of below function //SC_LEADERBOARD_CONTROL_STRUCT scLB_control //SETUP_SOCIAL_CLUB_LEADERBOARD_READ_DATA(scLB_control,FMMC_TYPE_RACE,"RaceName","DisplayName",ciRACE_SUB_TYPE_STANDARD,5,FALSE) //IF SOCIAL_CLUB_COMPARE_FRIENDS_SEND_MESSAGE(scLB_control) // //finished //ENDIF //once finished SOCIAL_CLUB_CLEAR_CONTROL_STRUCT(scLB_control) /// PURPOSE: /// To compare friends and send message if you have beaten them /// PARAMS: /// scLB_control - FUNC BOOL SOCIAL_CLUB_COMPARE_FRIENDS_SEND_MESSAGE(SC_LEADERBOARD_CONTROL_STRUCT &scLB_control, UGCStateUpdate_Data& ugcdata, BOOL &bHaveFriendsToSendTo, INT iMyPreviousScore, INT iMyCurrentScore, INT iMissionType, INT iMissionSubType, INT iLaps, STRING stMissionName, GAMER_HANDLE &excludeGamer[]) IF IS_GAMER_HANDLE_VALID(excludeGamer[0]) // Added so compiles, Conor remove this once you've used this data properly. ENDIF LeaderboardRowData initRowData LeaderboardReadInfo readInfo //INT i INT iNumOfFriends //INT iPlayerRow = -1 INT iRowIndex INT iIndex INT iLoopRowMax = 100 INT iFriendScore SWITCH scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] CASE 0 //getting information about local player iNumOfFriends = NETWORK_GET_FRIEND_COUNT() IF iNumOfFriends > 0 iRowIndex = scLB_control.iLoopCounter*iLoopRowMax IF START_SC_LEADERBOARD_READ_FRIENDS_BY_ROW(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct,scLB_control.groupHandle,scLB_control.groupHandle[0].m_NumGroups,TRUE,iRowIndex,iLoopRowMax) #IF IS_DEBUG_BUILD DEBUG_START_LEADERBOARD_PRINT_RESULTS("SOCIAL_CLUB_COMPARE_FRIENDS_SEND_MESSAGE",scLB_control.ReadDataStruct) #ENDIF FILL_READ_INFO_STRUCT(readInfo,scLB_control.ReadDataStruct) IF scLB_control.bTempReadResult AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) println("readInfo.m_ReturnedRows: ", readInfo.m_ReturnedRows) IF readInfo.m_ReturnedRows > 0 iIndex = 0 //repeat through all row before player REPEAT readInfo.m_ReturnedRows iIndex LEADERBOARDS2_READ_GET_ROW_DATA_INFO(iIndex, initRowData) IF readInfo.m_LocalGamerRowNumber != iIndex IF initRowData.m_Rank > 0 IF NOT IS_PLAYER_IN_EXCLUDED_LIST(initRowData.m_GamerHandle,excludeGamer) iFriendScore = LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, 0) println("Previous Score: ", iMyPreviousScore," Current Score: ", iMyCurrentScore,"Their Score: ", iFriendScore) IF iMyPreviousScore < 0 iMyPreviousScore = iMyPreviousScore*-1 //println("Your Previous Score (UPDATED): ", iMyPreviousScore) ENDIF IF iMyCurrentScore < 0 iMyCurrentScore = iMyCurrentScore*-1 //println("Your Current Score (UPDATED): ", iMyCurrentScore) ENDIF IF iFriendScore < 0 iFriendScore = iFriendScore *-1 //println("Their Score (UPDATED): ", iFriendScore) ENDIF IF iFriendScore > iMyCurrentScore AND ((iMyPreviousScore > iFriendScore) OR (iMyPreviousScore = 0)) //IF NOT ARE_STRINGS_EQUAL(initRowData.m_GamerName, "") IF IS_GAMER_HANDLE_VALID(initRowData.m_GamerHandle) SC_INBOX_MESSAGE_PUSH_GAMER_T0_RECIP_LIST(initRowData.m_GamerHandle) bHaveFriendsToSendTo = TRUE println("You placed higher than a friend named ",initRowData.m_GamerName, "congrats!") ENDIF ENDIF ELSE println("Gamer is in exlcuded list ignoring for messaging name = ",initRowData.m_GamerName) ENDIF ENDIF ELSE println("This is the local player's row ignoring") ENDIF ENDREPEAT CLEAR_ROW_DATA_INFO_STRUCT(initRowData) LEADERBOARDS2_READ_GET_ROW_DATA_END( ) END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct) scLB_control.iLoopCounter++ IF iNumOfFriends > scLB_control.iLoopCounter*iLoopRowMax scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] = 0 println("SOCIAL_CLUB_COMPARE_FRIENDS_SEND_MESSAGE moving to ",scLB_control.iLoopCounter ," loop") RETURN FALSE ELSE println("SOCIAL_CLUB_COMPARE_FRIENDS_SEND_MESSAGE finished looping returning true") scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] = 1 RETURN FALSE ENDIF ELSE CLEAR_ROW_DATA_INFO_STRUCT(initRowData) LEADERBOARDS2_READ_GET_ROW_DATA_END( ) END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct) scLB_control.iLoopCounter++ IF iNumOfFriends > scLB_control.iLoopCounter*iLoopRowMax scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] = 0 println("SOCIAL_CLUB_COMPARE_FRIENDS_SEND_MESSAGE no friend in first group of friends moving to ",scLB_control.iLoopCounter ," loop") ENDIF println("SOCIAL_CLUB_COMPARE_FRIENDS_SEND_MESSAGE no rows returned ") RETURN TRUE ENDIF ELSE println("SOCIAL_CLUB_COMPARE_FRIENDS_SEND_MESSAGE no friends data skiping to end stage 1 (no row data) ") END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct) scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] = 1 RETURN TRUE ENDIF ENDIF ELSE println("SOCIAL_CLUB_COMPARE_FRIENDS_SEND_MESSAGE no friends data skiping to end stage 1 (friend count is 0)") END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct) scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] = 1 RETURN TRUE ENDIF BREAK CASE 1 IF bHaveFriendsToSendTo NET_PRINT("[WJK] - SOCIAL_CLUB_COMPARE_FRIENDS_SEND_MESSAGE - bHaveFriendsToSendTo = TRUE")NET_NL() ugcdata.tl31MissionContentId = scLB_control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id ugcdata.Score = iMyCurrentScore ugcdata.tl31MissionName = stMissionName ugcdata.tl31CoPlayerName = " " ugcdata.MissionType = iMissionType ugcdata.MissionSubType = iMissionSubType ugcdata.Laps = iLaps ugcdata.bSwapSenderWithCoPlayer = FALSE NET_PRINT("[WJK] - ugcdata data:")NET_NL() NET_PRINT("[WJK] - tl31MissionContentId:") NET_PRINT(ugcdata.tl31MissionContentId) NET_NL() NET_PRINT("[WJK] - Score:") NET_PRINT_INT(ugcdata.Score) NET_NL() NET_PRINT("[WJK] - tl31MissionName:") NET_PRINT(ugcdata.tl31MissionName) NET_NL() NET_PRINT("[WJK] - tl31CoPlayerName:") NET_PRINT(ugcdata.tl31CoPlayerName) NET_NL() NET_PRINT("[WJK] - MissionType:") NET_PRINT_INT(ugcdata.MissionType) NET_NL() NET_PRINT("[WJK] - MissionSubType:") NET_PRINT_INT(ugcdata.MissionSubType) NET_NL() NET_PRINT("[WJK] - Laps:") NET_PRINT_INT(ugcdata.Laps) NET_NL() NET_PRINT("[WJK] - bSwapSenderWithCoPlayer:") IF ugcdata.bSwapSenderWithCoPlayer NET_PRINT("TRUE") ELSE NET_PRINT("FALSE") ENDIF NET_NL() SC_INBOX_SEND_UGCSTATUPDATE_TO_RECIP_LIST(ugcdata) ELSE NET_PRINT("[WJK] - SOCIAL_CLUB_COMPARE_FRIENDS_SEND_MESSAGE - bHaveFriendsToSendTo = FALSE")NET_NL() ENDIF scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] = 2 RETURN TRUE BREAK CASE 2 RETURN TRUE BREAK ENDSWITCH RETURN FALSE ENDFUNC FUNC INT SC_LB_GET_GLOBAL_LEADERBOARD_FROM_MODE_LB(INT iCurrentModeLB) SWITCH INT_TO_ENUM(LEADERBOARDS_ENUM,iCurrentModeLB) CASE LEADERBOARD_MINI_GAMES_DARTS CASE LEADERBOARD_MINI_GAMES_GOLF CASE LEADERBOARD_MINI_GAMES_MP_SRANGE CASE LEADERBOARD_MINI_GAMES_TENNIS CASE LEADERBOARD_MINI_GAMES_ARM_WRESTLING CASE LEADERBOARD_FREEMODE_MISSIONS_BY_TIME // CASE LEADERBOARD_FREEMODE_MISSIONS_BY_SCORE CASE LEADERBOARD_FREEMODE_MISSIONS_BY_BEST_SCORE CASE LEADERBOARD_FREEMODE_SURVIVAL CASE LEADERBOARD_FREEMODE_RACE_TOURNAMENT_QUALIFICATION RETURN iCurrentModeLB BREAK CASE LEADERBOARD_FREEMODE_DEATHMATCH CASE LEADERBOARD_FREEMODE_DEATHMATCH_OVERALL RETURN ENUM_TO_INT(LEADERBOARD_FREEMODE_DEATHMATCH_OVERALL) BREAK CASE LEADERBOARD_FREEMODE_TEAM_DEATHMATCH CASE LEADERBOARD_FREEMODE_TEAM_DEATHMATCH_OVERALL RETURN ENUM_TO_INT(LEADERBOARD_FREEMODE_TEAM_DEATHMATCH_OVERALL) BREAK CASE LEADERBOARD_FREEMODE_VEHICLE_DEATHMATCH CASE LEADERBOARD_FREEMODE_VEHICLE_DEATHMATCH_OVERALL RETURN ENUM_TO_INT(LEADERBOARD_FREEMODE_VEHICLE_DEATHMATCH_OVERALL) BREAK CASE LEADERBOARD_FREEMODE_BASEJUMPS CASE LEADERBOARD_FREEMODE_BASEJUMPS_OVERALL RETURN ENUM_TO_INT(LEADERBOARD_FREEMODE_BASEJUMPS_OVERALL) BREAK CASE LEADERBOARD_FREEMODE_RACES CASE LEADERBOARD_FREEMODE_RACES_OVERALL CASE LEADERBOARD_FREEMODE_RACES_LAPS RETURN ENUM_TO_INT(LEADERBOARD_FREEMODE_RACES_OVERALL) BREAK CASE LEADERBOARD_FREEMODE_GTA_RACES CASE LEADERBOARD_FREEMODE_GTA_RACES_OVERALL CASE LEADERBOARD_FREEMODE_GTA_RACES_LAPS RETURN ENUM_TO_INT(LEADERBOARD_FREEMODE_GTA_RACES_OVERALL) BREAK CASE LEADERBOARD_FREEMODE_RALLY CASE LEADERBOARD_FREEMODE_RALLY_LAPS CASE LEADERBOARD_FREEMODE_RALLY_OVERALL CASE LEADERBOARD_FREEMODE_RALLY_CODRIVER_OVERALL RETURN ENUM_TO_INT(LEADERBOARD_FREEMODE_RALLY_OVERALL) BREAK CASE LEADERBOARD_FREEMODE_ON_FOOT_RACE CASE LEADERBOARD_FREEMODE_ON_FOOT_RACE_OVERALL CASE LEADERBOARD_FREEMODE_ON_FOOT_RACE_LAPS RETURN ENUM_TO_INT(LEADERBOARD_FREEMODE_ON_FOOT_RACE_OVERALL) BREAK // CASE LEADERBOARD_FREEMODE_CREW_CHALLENGES // CASE LEADERBOARD_FREEMODE_CREW_CHALLENGES_H2H // RETURN ENUM_TO_INT(LEADERBOARD_FREEMODE_CREW_CHALLENGES_OVERALL) // BREAK CASE LEADERBOARD_FREEMODE_NON_CONTACT_RACES CASE LEADERBOARD_FREEMODE_NON_CONTACT_RACES_OVERALL RETURN ENUM_TO_INT(LEADERBOARD_FREEMODE_NON_CONTACT_RACES_OVERALL) BREAK ENDSWITCH IF iCurrentModeLB >= ENUM_TO_INT(LEADERBOARD_FREEMODE_NON_CONTACT_RACES_1_LAPS) AND iCurrentModeLB <= ENUM_TO_INT(LEADERBOARD_FREEMODE_ELO_NON_CONTACT_RACES_OVERALL_SEASON50) RETURN ENUM_TO_INT(LEADERBOARD_FREEMODE_NON_CONTACT_RACES_OVERALL) ENDIF #IF IS_DEBUG_BUILD println("SC_LB_GET_GLOBAL_LEADERBOARD_FROM_MODE_LB: trying to get global LB from an invalid mode ID. Mode ID = ", iCurrentModeLB) SCRIPT_ASSERT("SC_LB_GET_GLOBAL_LEADERBOARD_FROM_MODE_LB: trying to get global LB from an invalid mode ID. See Conor") #ENDIF RETURN -1 ENDFUNC PROC RESET_MATCHED_CREWS(SC_MATCHED_CREWS &matchedCrew) INT i matchedCrew.iLoadStage = 0 matchedCrew.iTempLoadStage = 0 matchedCrew.bFinished = FALSE REPEAT MAX_SC_MATCHED_CREWS i matchedCrew.CrewData[i].Name = "" matchedCrew.CrewData[i].Tag = "" matchedCrew.CrewData[i].iID = 0 ENDREPEAT ENDPROC FUNC BOOL GET_MATCHED_CREWS_FOR_GAME_MODE(MISSION_TO_LAUNCH_DETAILS &sLaunchMissionDetails,SC_LEADERBOARD_CONTROL_STRUCT &scLB_control, SC_MATCHED_CREWS &matchedCrew) GAMER_HANDLE gamerHandle LeaderboardRowData initRowData LeaderboardReadInfo readInfo NETWORK_CLAN_DESC clanDesc IF sLaunchMissionDetails.iCreatorID = FMMC_ROCKSTAR_CREATOR_ID OR sLaunchMissionDetails.iCreatorID = FMMC_ROCKSTAR_CANDIDATE_CREATOR_ID OR sLaunchMissionDetails.iCreatorID = FMMC_ROCKSTAR_HIDEOUT_CREATOR_ID OR sLaunchMissionDetails.iCreatorID = FMMC_MINI_GAME_CREATOR_ID ELSE matchedCrew.iLoadStage = 0 matchedCrew.bFinished = TRUE RETURN TRUE ENDIF INT i INT iCounter #IF IS_DEBUG_BUILD STRING funcName = "GET_MATCHED_CREWS_FOR_GAME_MODE" //DEBUG_PRINT_LEADERBOARD_READ_DATA_STRUCT(funcName,scLB_control.ReadDataStruct) #ENDIF IF NOT matchedCrew.bFinished SWITCH matchedCrew.iLoadStage CASE 0 IF NETWORK_CLAN_SERVICE_IS_VALID() gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID()) IF NETWORK_CLAN_PLAYER_IS_ACTIVE(gamerHandle) IF NETWORK_CLAN_PLAYER_GET_DESC(clanDesc, SIZE_OF(clanDesc), gamerHandle) println(funcName," moving to stage 1 ") matchedCrew.ReadDataStruct.m_LeaderboardId = SC_LB_GET_GLOBAL_LEADERBOARD_FROM_MODE_LB(scLB_control.ReadDataStruct.m_LeaderboardId) matchedCrew.ReadDataStruct.m_ClanId = clanDesc.Id matchedCrew.ReadDataStruct.m_type = LEADERBOARD2_TYPE_CLAN matchedCrew.iLoadStage = 1 RETURN FALSE ENDIF ELSE println(funcName," moving to stage 2 NETWORK_CLAN_PLAYER_IS_ACTIVE is false") matchedCrew.iLoadStage = 2 RETURN TRUE ENDIF ELSE println(funcName," moving to stage 2 NETWORK_CLAN_SERVICE_IS_VALID is false") matchedCrew.iLoadStage = 2 RETURN TRUE ENDIF BREAK CASE 1 matchedCrew.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_CLAN gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID()) iCounter = 0 IF START_SC_LEADERBOARD_READ_BY_RADIUS(matchedCrew.iTempLoadStage,matchedCrew.bTempReadResult,matchedCrew.ReadDataStruct,8,gamerHandle) #IF IS_DEBUG_BUILD DEBUG_START_LEADERBOARD_PRINT_RESULTS(funcName,matchedCrew.ReadDataStruct) #ENDIF FILL_READ_INFO_STRUCT(readInfo,matchedCrew.ReadDataStruct) IF matchedCrew.bTempReadResult AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) IF readInfo.m_ReturnedRows > 0 REPEAT readInfo.m_ReturnedRows i LEADERBOARDS2_READ_GET_ROW_DATA_INFO(i, initRowData) IF initRowData.m_ClanId != matchedCrew.ReadDataStruct.m_ClanId IF iCounter < MAX_SC_MATCHED_CREWS matchedCrew.CrewData[iCounter].iID = initRowData.m_ClanId matchedCrew.CrewData[iCounter].Name = initRowData.m_ClanName matchedCrew.CrewData[iCounter].Tag = initRowData.m_ClanTag println(funcName, "-- matchedCrew.CrewData[",iCounter,"].iID = ", matchedCrew.CrewData[iCounter].iID, " Name = ", matchedCrew.CrewData[iCounter].Name, " Tag = ",matchedCrew.CrewData[iCounter].Tag) iCounter++ ENDIF ENDIF CLEAR_ROW_DATA_INFO_STRUCT(initRowData) ENDREPEAT LEADERBOARDS2_READ_GET_ROW_DATA_END( ) END_LEADERBOARD_READ(matchedCrew.iTempLoadStage,matchedCrew.bTempReadResult,matchedCrew.ReadDataStruct) matchedCrew.iLoadStage = 2 println(funcName," -- found matched crews moving to stage 2") ELSE LEADERBOARDS2_READ_GET_ROW_DATA_END( ) END_LEADERBOARD_READ(matchedCrew.iTempLoadStage,matchedCrew.bTempReadResult,matchedCrew.ReadDataStruct) matchedCrew.iLoadStage = 2 println(funcName," -- no rows returned moving to stage 2") ENDIF ELSE END_LEADERBOARD_READ(matchedCrew.iTempLoadStage,matchedCrew.bTempReadResult,matchedCrew.ReadDataStruct) matchedCrew.iLoadStage = 2 println(funcName," -- no matched crews found moving to stage 2") ENDIF ENDIF BREAK CASE 2 println(funcName," finishing generating matched crew list") matchedCrew.iLoadStage = 0 matchedCrew.bFinished = TRUE BREAK ENDSWITCH ELSE RETURN TRUE ENDIF RETURN TRUE ENDFUNC /// PURPOSE: /// To get the global and personal best for a given race in SP. /// PARAMS: /// iReadStage - this is just needs to be an int defined in the script that will retain its value over more than a frame (i.e. dont just define it before calling this) /// iLoadStage - this is just needs to be an int defined in the script that will retain its value over more than a frame (i.e. dont just define it before calling this) /// bSuccessful - this is just needs to be an bool defined in the script that will retain its value over more than a frame (i.e. dont just define it before calling this) /// iRaceType - the number indicating the race (NOTE: OFFROAD RACES offset is 100) /// iGlobalBest - when function returns true this will be the global best /// iPersonalBest - when function returns true this will be the personal best /// RETURNS: /// True when it's finished. Note this should always return true even if it finds no records and the values remain 0. FUNC BOOL GET_SP_RACE_PERSONAL_GLOBAL_BEST(INT& iReadStage, INT& iLoadStage,BOOL& bSuccessful, INT iRaceID,INT& iGlobalBest, INT& iPersonalBest) Leaderboard2ReadData lbReadData Leaderboard2ReadData emptyData //LeaderboardRowData tempRowData[1] LeaderboardRowData initRowData LeaderboardReadInfo readInfo GAMER_HANDLE gamerHandle gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID()) lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_RACES) lbReadData.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER lbReadData.m_GroupSelector.m_NumGroups = 3 lbReadData.m_GroupSelector.m_Group[0].m_Category = "GameType" lbReadData.m_GroupSelector.m_Group[1].m_Category = "Location" lbReadData.m_GroupSelector.m_Group[2].m_Category = "Type" lbReadData.m_GroupSelector.m_Group[0].m_Id = "SP" SWITCH iRaceID CASE 0 lbReadData.m_GroupSelector.m_Group[1].m_Id = "MGCR_1" lbReadData.m_GroupSelector.m_Group[2].m_Id = "StreetRace" BREAK CASE 1 lbReadData.m_GroupSelector.m_Group[1].m_Id = "MGCR_2" lbReadData.m_GroupSelector.m_Group[2].m_Id = "StreetRace" BREAK CASE 2 lbReadData.m_GroupSelector.m_Group[1].m_Id = "MGCR_4" lbReadData.m_GroupSelector.m_Group[2].m_Id = "StreetRace" BREAK CASE 3 lbReadData.m_GroupSelector.m_Group[1].m_Id = "MGCR_5" lbReadData.m_GroupSelector.m_Group[2].m_Id = "StreetRace" BREAK CASE 4 lbReadData.m_GroupSelector.m_Group[1].m_Id = "MGCR_6" lbReadData.m_GroupSelector.m_Group[2].m_Id = "StreetRace" BREAK CASE 5 lbReadData.m_GroupSelector.m_Group[1].m_Id = "MGSR_1" lbReadData.m_GroupSelector.m_Group[2].m_Id = "SeaRace" BREAK CASE 6 lbReadData.m_GroupSelector.m_Group[1].m_Id = "MGSR_2" lbReadData.m_GroupSelector.m_Group[2].m_Id = "SeaRace" BREAK CASE 7 lbReadData.m_GroupSelector.m_Group[1].m_Id = "MGSR_3" lbReadData.m_GroupSelector.m_Group[2].m_Id = "SeaRace" BREAK CASE 8 lbReadData.m_GroupSelector.m_Group[1].m_Id = "MGSR_4" lbReadData.m_GroupSelector.m_Group[2].m_Id = "SeaRace" BREAK CASE 100 lbReadData.m_GroupSelector.m_Group[1].m_Id = "OR_RACE_01" //Canyon Cliffs lbReadData.m_GroupSelector.m_Group[2].m_Id = "OffroadRace" BREAK CASE 101 lbReadData.m_GroupSelector.m_Group[1].m_Id = "OR_RACE_02" //Ridge Run lbReadData.m_GroupSelector.m_Group[2].m_Id = "OffroadRace" BREAK CASE 102 lbReadData.m_GroupSelector.m_Group[1].m_Id = "OR_RACE_03" //Valley Trail lbReadData.m_GroupSelector.m_Group[2].m_Id = "OffroadRace" BREAK CASE 103 lbReadData.m_GroupSelector.m_Group[1].m_Id = "OR_RACE_04" //Lakeside Splash lbReadData.m_GroupSelector.m_Group[2].m_Id = "OffroadRace" BREAK CASE 104 lbReadData.m_GroupSelector.m_Group[1].m_Id = "OR_RACE_05" //Eco Friendly lbReadData.m_GroupSelector.m_Group[2].m_Id = "OffroadRace" BREAK CASE 105 lbReadData.m_GroupSelector.m_Group[1].m_Id = "OR_RACE_06" //Mineward Spiral lbReadData.m_GroupSelector.m_Group[2].m_Id = "OffroadRace" BREAK DEFAULT SCRIPT_ASSERT("GET_SP_RACE_PERSONAL_GLOBAL_BEST iRaceType was invalid") BREAK ENDSWITCH // SWITCH iReadStage CASE 0 IF START_SC_LEADERBOARD_READ_BY_RANK(iLoadStage,bSuccessful,lbReadData,1,1) #IF IS_DEBUG_BUILD println("GET_SP_RACE_GLOBAL_BEST: LEADERBOARD ID = ", lbReadData.m_LeaderboardId) println("groupHandle[0] = ",lbReadData.m_GroupSelector.m_Group[0].m_Id ," groupHandle[1] = ",lbReadData.m_GroupSelector.m_Group[1].m_Id ," groupHandle[2] = ",lbReadData.m_GroupSelector.m_Group[2].m_Id) #ENDIF FILL_READ_INFO_STRUCT(readInfo,lbReadData) IF bSuccessful AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) IF readInfo.m_ReturnedRows > 0 LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData) //IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, "") IF NOT IS_GAMER_HANDLE_VALID(initRowData.m_GamerHandle) println("GET_SP_RACE_GLOBAL_BEST -- moving to stage 2 no global data ") iReadStage = 2 ELSE iGlobalBest = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 3) println("Global best is for player name: ", initRowData.m_GamerName, " is - ",iGlobalBest) iReadStage = 1 ENDIF //println("Ending read in READ_BY_RANK in ", GET_THIS_SCRIPT_NAME() ) ELSE println("GET_SP_RACE_GLOBAL_BEST -- moving to stage 2 no global data ") iReadStage = 2 ENDIF LEADERBOARDS2_READ_GET_ROW_DATA_END( ) ELSE println("GET_SP_RACE_GLOBAL_BEST -- moving to stage 2 no global data ") iReadStage = 2 ENDIF END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData) lbReadData = emptyData ENDIF BREAK CASE 1 IF START_SC_LEADERBOARD_READ_BY_HANDLE(iLoadStage,bSuccessful,lbReadData,gamerHandle) #IF IS_DEBUG_BUILD println("GET_SP_RACE_PERSONAL_BEST: LEADERBOARD ID = ", lbReadData.m_LeaderboardId, " groupHandle = ",lbReadData.m_GroupSelector.m_Group[0].m_Id) #ENDIF FILL_READ_INFO_STRUCT(readInfo,lbReadData) IF bSuccessful AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) IF readInfo.m_ReturnedRows > 0 LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData) //IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, "") IF NOT IS_GAMER_HANDLE_VALID(initRowData.m_GamerHandle) println("GET_SP_RACE_PERSONAL_BEST -- moving to stage 2 no data for local player ") iReadStage = 2 ELSE iPersonalBest = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 3) println("Personal best is for player name: ", initRowData.m_GamerName, " is - ",iPersonalBest ) iReadStage = 2 ENDIF ELSE println("GET_SP_RACE_PERSONAL_BEST -- moving to stage 2 no data for local player ") iReadStage = 2 ENDIF LEADERBOARDS2_READ_GET_ROW_DATA_END( ) ELSE println("GET_SP_RACE_PERSONAL_BEST -- moving to stage 2 no data for local player ") iReadStage = 2 ENDIF println("Ending read in READ_BY_HANDLE in ", GET_THIS_SCRIPT_NAME() ) END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData) lbReadData = emptyData ENDIF BREAK CASE 2 RETURN TRUE BREAK ENDSWITCH RETURN FALSE ENDFUNC PROC CLEANUP_SP_RACE_PERSONAL_GLOBAL_BEST(INT& iReadStage, INT& iLoadStage, BOOL& bResult, INT& iGlobalBest, INT& iPersonalBest) iReadStage = 0 iLoadStage = 0 iGlobalBest = 0 bResult = FALSE iPersonalBest = 0 ENDPROC FUNC BOOL DO_SIGNED_OUT_WARNING(INT& iBS, BOOL bStoreMessage = FALSE) FE_WARNING_FLAGS iButtonBS = FE_WARNING_OK IF scLBSignInWarn.iFrameLastCalled + 5 < GET_FRAME_COUNT() AND scLBSignInWarn.iFrameLastCalled > 0 RESET_NET_TIMER(scLBSignInWarn.signInDelay) RESET_NET_TIMER(scLBSignInWarn.signedOutTimer) iBS = 0 scLBSignInWarn.iFrameLastCalled = 0 SET_LOADING_ICON_INACTIVE() println("DO_SIGNED_OUT_WARNING: reseting more than 5 frames since last called") ENDIF scLBSignInWarn.iFrameLastCalled = GET_FRAME_COUNT() NP_UNAVAILABILITY_REASON reason = REASON_INVALID IF IS_PLAYSTATION_PLATFORM() IF NETWORK_IS_NP_AVAILABLE() = FALSE reason = NETWORK_GET_NP_UNAVAILABLE_REASON() ENDIF ENDIF IF (IS_PLAYSTATION_PLATFORM() AND (reason = REASON_AGE OR reason = REASON_GAME_UPDATE OR reason = REASON_SYSTEM_UPDATE OR reason = REASON_CONNECTION)) OR (NOT SCRIPT_IS_CLOUD_AVAILABLE() AND NETWORK_IS_SIGNED_ONLINE()) // wait for ros refresh IF NETWORK_IS_REFRESHING_ROS_CREDENTIALS() println("DO_SIGNED_OUT_WARNING: refreshing ROS credentials") RUN_SCALEFORM_LOADING_ICON(scLBSignInWarn.loadingIcon, SHOULD_REFRESH_SCALEFORM_LOADING_ICON(scLBSignInWarn.loadingIcon)) IF NOT IS_BIT_SET(iBs,4) SET_BIT(iBs,4) scLBSignInWarn.loadingIcon.sMainStringSlot = "" REFRESH_SCALEFORM_LOADING_ICON(scLBSignInWarn.loadingIcon) ENDIF ELSE IF reason = REASON_AGE SET_WARNING_MESSAGE_WITH_HEADER("PM_INF_QMFT", "HUD_PROFILECHNG",iButtonBS) ELIF reason = REASON_GAME_UPDATE SET_WARNING_MESSAGE_WITH_HEADER("PM_INF_QMFT", "HUD_GAMEUPD_G",iButtonBS) ELIF reason= REASON_SYSTEM_UPDATE SET_WARNING_MESSAGE_WITH_HEADER("PM_INF_QMFT", "HUD_SYSTUPD_G",iButtonBS) ELIF reason= REASON_CONNECTION SET_WARNING_MESSAGE_WITH_HEADER("PM_INF_QMFT", "SCLB_NO_INT",iButtonBS) ELIF NOT SCRIPT_IS_CLOUD_AVAILABLE() SET_WARNING_MESSAGE_WITH_HEADER("PM_INF_QMFT", "SCLB_NO_ROS",iButtonBS) ENDIF println("DO_SIGNED_OUT_WARNING: warning signed in no cloud") IF NOT IS_BIT_SET(iBS, 0) IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT) SET_BIT(iBS, 0) ENDIF ELSE IF IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT) RESET_NET_TIMER(scLBSignInWarn.signedOutTimer) RESET_NET_TIMER(scLBSignInWarn.signInDelay) iBS = 0 scLBSignInWarn.iFrameLastCalled = 0 SET_LOADING_ICON_INACTIVE() println("DO_SIGNED_OUT_WARNING: pressed accept killing warning") RETURN TRUE ENDIF ENDIF ENDIF ELSE RUN_SCALEFORM_LOADING_ICON(scLBSignInWarn.loadingIcon, SHOULD_REFRESH_SCALEFORM_LOADING_ICON(scLBSignInWarn.loadingIcon)) IF (HAS_NET_TIMER_STARTED(scLBSignInWarn.signedOutTimer) AND NOT HAS_NET_TIMER_EXPIRED(scLBSignInWarn.signedOutTimer,2000,TRUE)) AND NOT NETWORK_IS_SIGNED_ONLINE() SET_BIT(iBS,3) scLBSignInWarn.loadingIcon.sMainStringSlot = "" REFRESH_SCALEFORM_LOADING_ICON(scLBSignInWarn.loadingIcon) println("DO_SIGNED_OUT_WARNING: not signed in doing loading icon") ELSE IF NOT IS_BIT_SET(iBS,3) IF NOT IS_BIT_SET(iBS,1) DISPLAY_SYSTEM_SIGNIN_UI() SET_BIT(iBS,1) scLBSignInWarn.loadingIcon.sMainStringSlot = "" REFRESH_SCALEFORM_LOADING_ICON(scLBSignInWarn.loadingIcon) println("DO_SIGNED_OUT_WARNING: showing sign in warning") ELSE // IF NOT IS_BIT_SET(iBS,2) // REINIT_NET_TIMER(scLBSignInWarn.signInDelay,TRUE) // IF NOT IS_SYSTEM_UI_BEING_DISPLAYED() // SET_BIT(iBS,2) // println("DO_SIGNED_OUT_WARNING: UI no longer being displayed allow timer to progress") // ENDIF // ENDIF ENDIF ENDIF ENDIF BOOL bDisplaySpinner IF HAS_NET_TIMER_STARTED(scLBSignInWarn.signInDelay) IF NOT HAS_NET_TIMER_EXPIRED(scLBSignInWarn.signInDelay,4000,TRUE) bDisplaySpinner = TRUE ENDIF ENDIF IF NOT bDisplaySpinner IF bStoreMessage IF NOT NETWORK_IS_SIGNED_ONLINE() IF NETWORK_IS_CABLE_CONNECTED() SET_WARNING_MESSAGE_WITH_HEADER("PM_INF_QMFT", "STORE_NOT_ONL",iButtonBS) ELSE SET_WARNING_MESSAGE_WITH_HEADER("PM_INF_QMFT", "SCLB_NO_INT",iButtonBS) ENDIF println("DO_SIGNED_OUT_WARNING: store warning not signed in online") IF NOT IS_SYSTEM_UI_BEING_DISPLAYED() IF NOT IS_BIT_SET(iBS, 0) IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT) SET_BIT(iBS, 0) ENDIF ELSE IF IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT) RESET_NET_TIMER(scLBSignInWarn.signInDelay) iBS = 0 scLBSignInWarn.iFrameLastCalled = 0 SET_LOADING_ICON_INACTIVE() RETURN TRUE ENDIF ENDIF ENDIF ELSE RESET_NET_TIMER(scLBSignInWarn.signInDelay) iBS = 0 scLBSignInWarn.iFrameLastCalled = 0 SET_LOADING_ICON_INACTIVE() RETURN TRUE ENDIF ELSE IF IS_BIT_SET(iBS,3) IF NETWORK_IS_CABLE_CONNECTED() SET_WARNING_MESSAGE_WITH_HEADER("PM_INF_QMFT", "SCLB_SIGN_OUT",iButtonBS) ELSE SET_WARNING_MESSAGE_WITH_HEADER("PM_INF_QMFT", "SCLB_NO_INT",iButtonBS) ENDIF println("DO_SIGNED_OUT_WARNING: non store warning signed out") IF NOT IS_BIT_SET(iBS, 0) IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT) SET_BIT(iBS, 0) ENDIF ELSE IF IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT) RESET_NET_TIMER(scLBSignInWarn.signedOutTimer) RESET_NET_TIMER(scLBSignInWarn.signInDelay) iBS = 0 scLBSignInWarn.iFrameLastCalled = 0 SET_LOADING_ICON_INACTIVE() RETURN TRUE ENDIF ENDIF ELSE IF NETWORK_IS_CABLE_CONNECTED() SET_WARNING_MESSAGE_WITH_HEADER("PM_INF_QMFT", "SCLB_NOT_ONL",iButtonBS) ELSE SET_WARNING_MESSAGE_WITH_HEADER("PM_INF_QMFT", "SCLB_NO_INT",iButtonBS) ENDIF println("DO_SIGNED_OUT_WARNING: non store warning not online") IF NOT IS_SYSTEM_UI_BEING_DISPLAYED() IF NOT IS_BIT_SET(iBS, 0) IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT) SET_BIT(iBS, 0) ENDIF ELSE IF IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT) RESET_NET_TIMER(scLBSignInWarn.signedOutTimer) RESET_NET_TIMER(scLBSignInWarn.signInDelay) iBS = 0 scLBSignInWarn.iFrameLastCalled = 0 SET_LOADING_ICON_INACTIVE() RETURN TRUE ENDIF ENDIF ENDIF ENDIF ENDIF //ELSE //display spinner ENDIF ENDIF RETURN FALSE ENDFUNC PROC INIT_RANK_PREDICTION_COMMON_VALUES() sclb_rank_predict.readResult.m_Id = sclb_rank_predict.currentResult.m_Id sclb_rank_predict.readResult.m_NumColumns = sclb_rank_predict.currentResult.m_NumColumns sclb_rank_predict.readResult.m_ColumnsBitSets = sclb_rank_predict.currentResult.m_ColumnsBitSets sclb_rank_predict.combinedResult.m_Id = sclb_rank_predict.currentResult.m_Id sclb_rank_predict.combinedResult.m_NumColumns = sclb_rank_predict.currentResult.m_NumColumns sclb_rank_predict.combinedResult.m_ColumnsBitSets = sclb_rank_predict.currentResult.m_ColumnsBitSets ENDPROC #IF IS_DEBUG_BUILD PROC PRINT_RANK_PREDICTION_STRUCT(LeaderboardPredictionRow &Row) INT i println("Leaderboard ID: ",Row.m_Id) println("Num columns: ",Row.m_NumColumns) REPEAT 32 i println("Row.m_ColumnsBitSets BIT[",i,"] = ", IS_BIT_SET(Row.m_ColumnsBitSets,i)) ENDREPEAT REPEAT MAX_COLUMNS i println("Row.m_fColumnData[",i,"] = ", Row.m_fColumnData[i]) println("Row.m_iColumnData[",i,"] = ", Row.m_iColumnData[i]) ENDREPEAT println("--END PRINT_RANK_PREDICTION_STRUCT---") ENDPROC #ENDIF PROC FIX_PREDICTED_RATIO_VALUES_AS_NEEDED(INT iLeaderboardID,LeaderboardPredictionRow &combinedResult) FLOAT fDivisor //Special Cases IF iLeaderboardID = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_DARTS) IF combinedResult.m_fColumnData[0] >= HIGHEST_INT fDivisor = TO_FLOAT(combinedResult.m_iColumnData[5]) IF fDivisor <= 0 fDivisor = 1 ENDIF combinedResult.m_fColumnData[0] = TO_FLOAT(combinedResult.m_iColumnData[7])/fDivisor ENDIF ENDIF ENDPROC FUNC BOOL SHOULD_RANK_PREDICTION_SKIP_MERGE_IS_NO_PREVIOUS_DATA(INT iLeaderboardID) SWITCH INT_TO_ENUM(LEADERBOARDS_ENUM, iLeaderboardID) CASE LEADERBOARD_MINI_GAMES_RACES CASE LEADERBOARD_MINI_GAMES_FLIGHT_SCHOOL_BY_TIME CASE LEADERBOARD_FREEMODE_GTA_RACES CASE LEADERBOARD_FREEMODE_GTA_RACES_LAPS CASE LEADERBOARD_FREEMODE_RACES CASE LEADERBOARD_FREEMODE_RACES_LAPS CASE LEADERBOARD_FREEMODE_MISSIONS_BY_TIME CASE LEADERBOARD_FREEMODE_RALLY CASE LEADERBOARD_FREEMODE_RALLY_LAPS CASE LEADERBOARD_FREEMODE_ON_FOOT_RACE CASE LEADERBOARD_FREEMODE_ON_FOOT_RACE_LAPS CASE LEADERBOARD_FREEMODE_BASEJUMPS CASE LEADERBOARD_MINI_GAMES_TRIATHLON CASE LEADERBOARD_MINI_GAMES_HUNTING CASE LEADERBOARD_MINI_GAMES_GOLF CASE LEADERBOARD_FREEMODE_NON_CONTACT_RACES CASE LEADERBOARD_FREEMODE_NON_CONTACT_RACES_OVERALL CASE LEADERBOARD_FLIGHT_SCHOOL_CHASE_PARACHUTE CASE LEADERBOARD_FLIGHT_SCHOOL_CITY_LANDING CASE LEADERBOARD_FLIGHT_SCHOOL_COLLECT_FLAGS CASE LEADERBOARD_FLIGHT_SCHOOL_ENGINE_FAILURE CASE LEADERBOARD_FLIGHT_SCHOOL_FOLLOW_LEADER CASE LEADERBOARD_FLIGHT_SCHOOL_FORMATION_FLIGHT CASE LEADERBOARD_FLIGHT_SCHOOL_GROUND_LEVEL CASE LEADERBOARD_FLIGHT_SCHOOL_MOVING_LANDING CASE LEADERBOARD_FLIGHT_SCHOOL_OUTSIDE_LOOP CASE LEADERBOARD_FLIGHT_SCHOOL_SHOOTING_RANGE RETURN TRUE BREAK ENDSWITCH IF iLeaderboardID >= ENUM_TO_INT(LEADERBOARD_FREEMODE_NON_CONTACT_RACES_1_LAPS) AND iLeaderboardID <= ENUM_TO_INT(LEADERBOARD_FREEMODE_ELO_NON_CONTACT_RACES_OVERALL_SEASON50) RETURN TRUE ENDIF RETURN FALSE ENDFUNC FUNC BOOL SHOULD_RANK_PREDICTION_SKIP_READ_COLUMN(INT iLeaderboardID, INT iCol) IF LEADERBOARDS_GET_COLUMN_ID(iLeaderboardID,LEADERBOARD2_TYPE_GROUP,iCol) = ENUM_TO_INT(LB_INPUT_COL_MATCH_ID) RETURN TRUE ENDIF SWITCH INT_TO_ENUM(LEADERBOARDS_ENUM, iLeaderboardID) CASE LEADERBOARD_MINI_GAMES_MP_SRANGE IF iCol = 5 RETURN TRUE ENDIF BREAK CASE LEADERBOARD_FREEMODE_MISSIONS_BY_BEST_SCORE IF iCol = 4 RETURN TRUE ENDIF BREAK CASE LEADERBOARD_FREEMODE_HEIST_MISSION IF iCol = 5 RETURN TRUE ENDIF BREAK ENDSWITCH RETURN FALSE ENDFUNC FUNC BOOL GET_RANK_PREDICTION_DETAILS(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control) //Leaderboard2ReadData lbReadData //Leaderboard2ReadData emptyData //LeaderboardRowData tempRowData[1] LeaderboardRowData initRowData LeaderboardReadInfo readInfo LeaderboardPredictionRow emptyRow GAMER_HANDLE gamerHandle IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId) gamerHandle = sclb_rank_predict.driverHandle ELSE gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID()) ENDIF INT i println("sclb_rank_predict.currentResult.m_Id = ", sclb_rank_predict.currentResult.m_Id) SWITCH sclb_rank_predict.iReadStage CASE 0 IF START_SC_LEADERBOARD_READ_BY_HANDLE(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct,gamerHandle) println("GET_RANK_PREDICTION_DETAILS: Called by ", GET_THIS_SCRIPT_NAME()) // #IF IS_DEBUG_BUILD // println("GET_RANK_PREDICTION_DETAILS: LEADERBOARD ID = ", scLB_control.ReadDataStruct.m_LeaderboardId) // #ENDIF FILL_READ_INFO_STRUCT(readInfo,scLB_control.ReadDataStruct) sclb_rank_predict.currentResult.m_Id = scLB_control.ReadDataStruct.m_LeaderboardId PRINTLN("GET_RANK_PREDICTION_DETAILS: sclb_rank_predict.currentResult.m_Id = ",sclb_rank_predict.currentResult.m_Id) sclb_rank_predict.currentResult.m_NumColumns = LEADERBOARDS_GET_NUMBER_OF_COLUMNS(scLB_control.ReadDataStruct.m_LeaderboardId,LEADERBOARD_TYPE_GROUP) REPEAT sclb_rank_predict.currentResult.m_NumColumns i IF NOT SHOULD_RANK_PREDICTION_SKIP_READ_COLUMN(scLB_control.ReadDataStruct.m_LeaderboardId,i) IF IS_LEADERBOARD_COLUMN_INT(scLB_control.ReadDataStruct.m_LeaderboardId,LEADERBOARD2_TYPE_GROUP,i) SET_BIT(sclb_rank_predict.currentResult.m_ColumnsBitSets,i) ELSE CLEAR_BIT(sclb_rank_predict.currentResult.m_ColumnsBitSets,i) ENDIF ENDIF ENDREPEAT PRINTLN("GET_RANK_PREDICTION_DETAILS: m_ColumnsBitSets = ",sclb_rank_predict.currentResult.m_ColumnsBitSets) IF scLB_control.bTempReadResult AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) IF readInfo.m_ReturnedRows > 0 LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData) println("GET_RANK_PREDICTION_DETAILS: ",sclb_rank_predict.currentResult.m_NumColumns) //IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, "") IF initRowData.m_NumColumnValues != sclb_rank_predict.currentResult.m_NumColumns #IF IS_DEBUG_BUILD println("GET_RANK_PREDICTION_DETAILS: sclb_rank_predict.currentResult.m_NumColumns = ",sclb_rank_predict.currentResult.m_NumColumns," initRowData.m_NumColumnValues = ",initRowData.m_NumColumnValues) //SCRIPT_ASSERT("GET_RANK_PREDICTION_DETAILS: columns returned != num columns setup") #ENDIF ENDIF IF NOT IS_GAMER_HANDLE_VALID(initRowData.m_GamerHandle) scLB_rank_predict.bNoPreviousValue = TRUE println("GET_RANK_PREDICTION_DETAILS -- moving to stage 1 no data for local player ") ELSE REPEAT sclb_rank_predict.currentResult.m_NumColumns i IF NOT SHOULD_RANK_PREDICTION_SKIP_READ_COLUMN(scLB_control.ReadDataStruct.m_LeaderboardId,i) println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", 0, " Column: ",i) IF IS_LEADERBOARD_COLUMN_INT(scLB_control.ReadDataStruct.m_LeaderboardId,LEADERBOARD2_TYPE_GROUP,i) scLB_rank_predict.readResult.m_iColumnData[i] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, i) IF scLB_rank_predict.readResult.m_iColumnData[i] = -1 IF i > initRowData.m_NumColumnValues println("GET_RANK_PREDICTION_DETAILS: hit failsafe setting column (INT): ",i,"to 0") scLB_rank_predict.readResult.m_iColumnData[i] = 0 ENDIF ENDIF #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES("GET_RANK_PREDICTION_DETAILS","Current Run",0,i, scLB_rank_predict.readResult.m_iColumnData[i],0.0,FALSE,TRUE ) #ENDIF ELSE scLB_rank_predict.readResult.m_fColumnData[i] = LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(0, i) IF scLB_rank_predict.readResult.m_fColumnData[i] = -1.0 IF i > initRowData.m_NumColumnValues println("GET_RANK_PREDICTION_DETAILS: hit failsafe setting column (FLOAT): ",i,"to 0") scLB_rank_predict.readResult.m_fColumnData[i] = 0 ENDIF ENDIF #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES("GET_RANK_PREDICTION_DETAILS","Current Run",0,i, 0,scLB_rank_predict.readResult.m_fColumnData[i],TRUE,TRUE ) #ENDIF ENDIF ENDIF ENDREPEAT println("GET_RANK_PREDICTION_DETAILS -- moving to stage 1 got data for local player ") ENDIF ELSE scLB_rank_predict.bNoPreviousValue = TRUE println("GET_RANK_PREDICTION_DETAILS -- moving to stage 1 no data for local player ") ENDIF LEADERBOARDS2_READ_GET_ROW_DATA_END( ) ELSE scLB_rank_predict.bNoPreviousValue = TRUE println("GET_RANK_PREDICTION_DETAILS -- moving to stage 1 no data for local player ") ENDIF sclb_rank_predict.iReadStage = 1 println("Ending read in READ_BY_HANDLE in ", GET_THIS_SCRIPT_NAME() ) END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct) ENDIF BREAK CASE 1 //Wait for the rank prediction write scLB_rank_predict.bFinishedRead = TRUE IF scLB_rank_predict.bFinishedWrite INIT_RANK_PREDICTION_COMMON_VALUES() #IF IS_DEBUG_BUILD println("GET_RANK_PREDICTION_DETAILS finished write for current run ", GET_THIS_SCRIPT_NAME() ) println("READ RESULT" ) PRINT_RANK_PREDICTION_STRUCT(scLB_rank_predict.readResult) println("CURRENT RUN" ) PRINT_RANK_PREDICTION_STRUCT(scLB_rank_predict.currentResult) #ENDIF IF scLB_rank_predict.bNoPreviousValue IF SHOULD_RANK_PREDICTION_SKIP_MERGE_IS_NO_PREVIOUS_DATA(scLB_control.ReadDataStruct.m_LeaderboardId) sclb_rank_predict.iReadStage = 3 println("GET_RANK_PREDICTION_DETAILS -- moving to stage 3 no previous run data SHOULD_RANK_PREDICTION_SKIP_MERGE_IS_NO_PREVIOUS_DATA = TRUE") ELSE sclb_rank_predict.iReadStage = 2 println("GET_RANK_PREDICTION_DETAILS -- moving to stage 2 no previous run data ") ENDIF ELSE sclb_rank_predict.iReadStage = 2 println("GET_RANK_PREDICTION_DETAILS -- moving to stage 2 previous run data ") ENDIF ENDIF BREAK CASE 2 LEADERBOARDS2_READ_RANK_PREDICTION(scLB_rank_predict.readResult,scLB_rank_predict.currentResult,scLB_rank_predict.combinedResult) //println("GET_RANK_PREDICTION_DETAILS -- combined the result moving to stage 4") //FIX_PREDICTED_RATIO_VALUES_AS_NEEDED(sclb_rank_predict.currentResult.m_Id,scLB_rank_predict.readResult) sclb_rank_predict.iReadStage = 4 #IF IS_DEBUG_BUILD println("GET_RANK_PREDICTION_DETAILS COMBINED values " ) PRINT_RANK_PREDICTION_STRUCT(scLB_rank_predict.combinedResult) #ENDIF scLB_control.iTempLoadStage = 0 scLB_control.bTempReadResult = FALSE BREAK CASE 3 scLB_rank_predict.combinedResult = scLB_rank_predict.currentResult //println("GET_RANK_PREDICTION_DETAILS -- combined the result moving to stage 4 (NO PREVIOUS DATA!)") sclb_rank_predict.iReadStage = 4 #IF IS_DEBUG_BUILD println("GET_RANK_PREDICTION_DETAILS COMBINED values (NO PREVIOUS DATA!)" ) PRINT_RANK_PREDICTION_STRUCT(scLB_rank_predict.combinedResult) #ENDIF scLB_control.iTempLoadStage = 0 scLB_control.bTempReadResult = FALSE BREAK CASE 4 IF NETWORK_IS_GAME_IN_PROGRESS() AND HAS_UGC_GLOBAL_BLOCK_LOADED() IF IS_PLAYLIST_SETTING_CHALLENGE_TIME() sclb_rank_predict.iReadStage = 99 println("GET_RANK_PREDICTION_DETAILS: IS_PLAYLIST_SETTING_CHALLENGE_TIME: retrieving LB data" ) ELSE println("GET_RANK_PREDICTION_DETAILS: NOT IS_PLAYLIST_SETTING_CHALLENGE_TIME() proceeding normally" ) sclb_rank_predict.iReadStage = 999 RETURN TRUE ENDIF ELSE println("GET_RANK_PREDICTION_DETAILS: NOT NETWORK_IS_GAME_IN_PROGRESS() proceeding normally" ) sclb_rank_predict.iReadStage = 999 RETURN TRUE ENDIF BREAK CASE 99 IF SHOULD_RANK_PREDICTION_SKIP_MERGE_IS_NO_PREVIOUS_DATA(scLB_control.ReadDataStruct.m_LeaderboardId) scLB_rank_predict.DifficultyCombinedResult = scLB_rank_predict.currentResult println("GET_RANK_PREDICTION_DETAILS -- combined the result moving to stage 4 (NOT COMBINING DATA!)") ELSE emptyRow.m_Id = scLB_rank_predict.currentResult.m_Id emptyRow.m_NumColumns = scLB_rank_predict.currentResult.m_NumColumns emptyRow.m_ColumnsBitSets = scLB_rank_predict.currentResult.m_ColumnsBitSets LEADERBOARDS2_READ_RANK_PREDICTION(emptyRow,scLB_rank_predict.currentResult,scLB_rank_predict.DifficultyCombinedResult) println("GET_RANK_PREDICTION_DETAILS -- combined the result moving to stage 100") ENDIF sclb_rank_predict.iReadStage = 100 #IF IS_DEBUG_BUILD println("GET_RANK_PREDICTION_DETAILS COMBINED values " ) PRINT_RANK_PREDICTION_STRUCT(scLB_rank_predict.combinedResult) #ENDIF scLB_control.iTempLoadStage = 0 scLB_control.bTempReadResult = FALSE BREAK CASE 100 IF START_SC_LEADERBOARD_READ_BY_RADIUS(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct,1,gamerHandle,TRUE, TRUE,scLB_rank_predict.DifficultyCombinedResult.m_iColumnData[0],scLB_rank_predict.DifficultyCombinedResult.m_fColumnData[0]) println("GET_RANK_PREDICTION_DETAILS: Called by ", GET_THIS_SCRIPT_NAME()) #IF IS_DEBUG_BUILD println("GET_RANK_PREDICTION_DETAILS: LEADERBOARD ID = ", scLB_control.ReadDataStruct.m_LeaderboardId) #ENDIF FILL_READ_INFO_STRUCT(readInfo,scLB_control.ReadDataStruct) IF scLB_control.bTempReadResult AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) IF readInfo.m_ReturnedRows > 0 LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData) IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, "") g_sCHALLENGE_DIFFICULTY.iMyRankPrediction = -1 println("GET_RANK_PREDICTION_DETAILS -- moving to stage 1 no data for local player g_sCHALLENGE_DIFFICULTY.iMyRankPrediction = ",g_sCHALLENGE_DIFFICULTY.iMyRankPrediction) ELSE g_sCHALLENGE_DIFFICULTY.iMyRankPrediction = initRowData.m_Rank println("GET_RANK_PREDICTION_DETAILS -- moving to stage 1 got data for local player g_sCHALLENGE_DIFFICULTY.iMyRankPrediction = ",g_sCHALLENGE_DIFFICULTY.iMyRankPrediction) ENDIF ELSE g_sCHALLENGE_DIFFICULTY.iMyRankPrediction = -1 println("GET_RANK_PREDICTION_DETAILS -- moving to stage 1 no data for local player g_sCHALLENGE_DIFFICULTY.iMyRankPrediction = ",g_sCHALLENGE_DIFFICULTY.iMyRankPrediction) ENDIF LEADERBOARDS2_READ_GET_ROW_DATA_END( ) ELSE g_sCHALLENGE_DIFFICULTY.iMyRankPrediction = -1 println("GET_RANK_PREDICTION_DETAILS -- moving to stage 1 no data for local player g_sCHALLENGE_DIFFICULTY.iMyRankPrediction = ",g_sCHALLENGE_DIFFICULTY.iMyRankPrediction) ENDIF sclb_rank_predict.iReadStage = 999 println("Ending read in READ_BY_RADIUS in ", GET_THIS_SCRIPT_NAME() ) END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct) ENDIF BREAK CASE 999 RETURN TRUE BREAK ENDSWITCH RETURN FALSE ENDFUNC FUNC STORED_ELO_ENUM GET_STORED_ELO_ENUM_FOR_LEADERBOARD(LEADERBOARDS_ENUM leaderboard) SWITCH leaderboard CASE LEADERBOARD_FREEMODE_ELO_DEATHMATCH_OVERALL RETURN SCLB_ELO_DM CASE LEADERBOARD_FREEMODE_ELO_TEAM_DEATHMATCH_OVERALL RETURN SCLB_ELO_TEAM_DM CASE LEADERBOARD_FREEMODE_ELO_VEHICLE_DEATHMATCH_OVERALL RETURN SCLB_ELO_VEH_DM CASE LEADERBOARD_FREEMODE_ELO_BASEJUMPS_OVERALL RETURN SCLB_ELO_BASEJ CASE LEADERBOARD_FREEMODE_ELO_RACES_OVERALL RETURN SCLB_ELO_RACE CASE LEADERBOARD_FREEMODE_ELO_GTA_RACES_OVERALL RETURN SCLB_ELO_GTA_RACE CASE LEADERBOARD_FREEMODE_ELO_RALLY_OVERALL RETURN SCLB_ELO_RALLY CASE LEADERBOARD_FREEMODE_ELO_RALLY_CODRIVER_OVERALL RETURN SCLB_ELO_RALLY_CODRIVER CASE LEADERBOARD_FREEMODE_ELO_ON_FOOT_RACE_OVERALL RETURN SCLB_ELO_ONFOOT_RACE ENDSWITCH IF ENUM_TO_INT(leaderboard) >= ENUM_TO_INT(LEADERBOARD_FREEMODE_ELO_NON_CONTACT_RACES_OVERALL_SEASON1) AND ENUM_TO_INT(leaderboard) <= ENUM_TO_INT(LEADERBOARD_FREEMODE_ELO_NON_CONTACT_RACES_OVERALL_SEASON50) RETURN SCLB_ELO_NONCONTACT_RACE ENDIF RETURN SCLB_ELO_INVALID ENDFUNC PROC CLEAR_GET_PLAYER_ELO_FOR_MODE_FLAGS(INT& iReadStage, INT& iLoadStage,BOOL& bSuccessful) iReadStage = 0 iLoadStage = 0 bSuccessful = FALSE ENDPROC FUNC BOOL UPDATE_STORED_ELO(LEADERBOARDS_ENUM leaderboard,INT &iELOUpdate) STORED_ELO_ENUM eloEnum eloEnum = GET_STORED_ELO_ENUM_FOR_LEADERBOARD(leaderboard) IF NOT storedELOData.bReadFinished[eloEnum] #IF IS_DEBUG_BUILD println("UPDATE_STORED_ELO: ELO READ NOT FINSIHED!(",iELOUpdate,") for board ",leaderboard) SCRIPT_ASSERT("UPDATE_STORED_ELO: player has attempted to update elo but read not finished. Not storing!") #ENDIF RETURN FALSE ELIF storedELOData.bReadFailed[eloEnum] #IF IS_DEBUG_BUILD println("UPDATE_STORED_ELO: ELO READ FAILED!(",iELOUpdate,") for board ",leaderboard) SCRIPT_ASSERT("UPDATE_STORED_ELO: player has attempted to update elo but read failed. Not storing!") #ENDIF RETURN FALSE ELIF storedELOData.iLastReadSeason[eloEnum] != g_sMPTunables.iEloSeason #IF IS_DEBUG_BUILD println("UPDATE_STORED_ELO: for board ",leaderboard,"storedELOData.iLastReadSeason[",eloEnum,"] = ",storedELOData.iLastReadSeason[eloEnum]," and g_sMPTunables.iEloSeason = ",g_sMPTunables.iEloSeason) SCRIPT_ASSERT("UPDATE_STORED_ELO: player has attempted to update elo but season has changed. Not storing!") #ENDIF RETURN FALSE // ELIF storedELOData.bIsELO_ActuallyZero[eloEnum] = TRUE // println("UPDATE_STORED_ELO: ELO WAS ZERO BEFORE UPDATE") // println("UPDATE_STORED_ELO: ELO WAS UPDATED BY MORE THAN 1000!! (",iLocalUpdate,") for board ",leaderboard) // storedELOData.iELO[eloEnum] = iLocalUpdate // RETURN TRUE ELSE storedELOData.iELO[eloEnum] += iELOUpdate println("UPDATE_STORED_ELO: LB ",leaderboard," stored ELO now = ",storedELOData.iELO[eloEnum]) RETURN TRUE ENDIF RETURN FALSE ENDFUNC FUNC BOOL GET_PLAYER_ELO_FOR_MODE(LEADERBOARDS_ENUM leaderboard, INT& iReadStage, INT& iLoadStage,BOOL& bSuccessful, INT &iCurrentELO) STORED_ELO_ENUM eloEnum eloEnum = GET_STORED_ELO_ENUM_FOR_LEADERBOARD(leaderboard) //BOOL bNoData IF eloEnum = SCLB_ELO_INVALID #IF IS_DEBUG_BUILD println("GET_PLAYER_ELO_FOR_MODE: trying to get elo for invalid leaderboard! Leaderboard = ", leaderboard) SCRIPT_ASSERT("GET_PLAYER_ELO_FOR_MODE: trying to get elo for invalid leaderboard! See Conor!") #ENDIF ELSE IF NOT IS_THIS_A_RSTAR_ACTIVITY() storedELOData.bReadFailed[eloEnum] = TRUE storedELOData.bReadFinished[eloEnum] = FALSE println("GET_PLAYER_ELO_FOR_MODE: NOT IS_THIS_A_RSTAR_ACTIVITY EXITING!") RETURN TRUE ENDIF IF NOT storedELOData.bReadFailed[eloEnum] AND storedELOData.bReadFinished[eloEnum] AND storedELOData.iLastReadSeason[eloEnum] = g_sMPTunables.iEloSeason iCurrentELO = storedELOData.iELO[eloEnum] println("GET_PLAYER_ELO_FOR_MODE: player has stored ELO value for leaderboard #",ENUM_TO_INT(leaderboard)," returning that value: ",iCurrentELO) RETURN TRUE ELSE Leaderboard2ReadData lbReadData Leaderboard2ReadData emptyData LeaderboardRowData initRowData LeaderboardReadInfo readInfo GAMER_HANDLE gamerHandle gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID()) lbReadData.m_LeaderboardId = ENUM_TO_INT(leaderboard) IF lbReadData.m_LeaderboardId >= ENUM_TO_INT(LEADERBOARD_FREEMODE_ELO_NON_CONTACT_RACES_OVERALL_SEASON1) AND lbReadData.m_LeaderboardId <= ENUM_TO_INT(LEADERBOARD_FREEMODE_ELO_NON_CONTACT_RACES_OVERALL_SEASON50) lbReadData.m_Type = LEADERBOARD2_TYPE_PLAYER lbReadData.m_GroupSelector.m_NumGroups = 0 ELSE lbReadData.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER lbReadData.m_GroupSelector.m_NumGroups = 1 lbReadData.m_GroupSelector.m_Group[0].m_Category = "SeasonId" lbReadData.m_GroupSelector.m_Group[0].m_Id = "" lbReadData.m_GroupSelector.m_Group[0].m_Id += g_sMPTunables.iEloSeason ENDIF SWITCH iReadStage CASE 0 println("GET_PLAYER_ELO_FOR_MODE: getting ELO for leaderboardd #",ENUM_TO_INT(leaderboard)," season: ",lbReadData.m_GroupSelector.m_Group[0].m_Id) IF START_SC_LEADERBOARD_READ_BY_HANDLE(iLoadStage,bSuccessful,lbReadData,gamerHandle) #IF IS_DEBUG_BUILD println("GET_PLAYER_ELO_FOR_MODE: LEADERBOARD ID = ", lbReadData.m_LeaderboardId," groupHandle = ",lbReadData.m_GroupSelector.m_Group[0].m_Id) #ENDIF FILL_READ_INFO_STRUCT(readInfo,lbReadData) IF bSuccessful AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) IF readInfo.m_ReturnedRows > 0 LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData) IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, "") println("GET_PLAYER_ELO_FOR_MODE:-- moving to stage 1 no data for local player -A ") iReadStage = 1 iCurrentELO = 0 ELSE iCurrentELO = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0) println("GET_PLAYER_ELO_FOR_MODE: player ", initRowData.m_GamerName," ELO = ",iCurrentELO) iReadStage = 1 ENDIF ELSE println("GET_PLAYER_ELO_FOR_MODE: -- moving to stage 1 no data for local player - B") iReadStage = 1 iCurrentELO = 0 ENDIF storedELOData.iELO[eloEnum] = iCurrentELO storedELOData.iLastReadSeason[eloEnum] = g_sMPTunables.iEloSeason storedELOData.bReadFailed[eloEnum] = FALSE LEADERBOARDS2_READ_GET_ROW_DATA_END( ) ELSE println("GET_PLAYER_ELO_FOR_MODE: -- moving to stage 1 no data for local player (READ FAILED) ") iReadStage = 1 //IF storedELOData.iELO[eloEnum] = 0 storedELOData.bReadFailed[eloEnum] = TRUE ENDIF storedELOData.bReadFinished[eloEnum] = TRUE println("Ending read in READ_BY_HANDLE in ", GET_THIS_SCRIPT_NAME() ) END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData) lbReadData = emptyData ENDIF BREAK CASE 1 RETURN TRUE BREAK ENDSWITCH ENDIF ENDIF RETURN FALSE ENDFUNC /// PURPOSE: /// To get the global best for a flight school lesson /// PARAMS: /// iReadStage - this is just needs to be an int defined in the script that will retain its value over more than a frame (i.e. dont just define it before calling this) /// iLoadStage - this is just needs to be an int defined in the script that will retain its value over more than a frame (i.e. dont just define it before calling this) /// bSuccessful - this is just needs to be an bool defined in the script that will retain its value over more than a frame (i.e. dont just define it before calling this) /// iLesson - the number indicating the lession IS /// fGlobalBest - when function returns true this will be the global best /// bGotResultFromLB - true if read was successful. Read may not be successful /// RETURNS: /// True when it's finished. Note this should always return true even if it finds no records and the values remain 0. FUNC BOOL GET_FLIGHT_SCHOOL_LESSON_GLOBAL_BEST(INT& iReadStage, INT& iLoadStage,BOOL& bSuccessful, INT iLesson,FLOAT& fGlobalBest, BOOL &bGotResultFromLB) Leaderboard2ReadData lbReadData Leaderboard2ReadData emptyData //LeaderboardRowData tempRowData[1] LeaderboardRowData initRowData LeaderboardReadInfo readInfo BOOL bInt = FALSE SWITCH INT_TO_ENUM(PILOT_SCHOOL_DLC_CLASSES_ENUM_NEW,iLesson) CASE PSCD_DLC_OutsideLoop lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_OUTSIDE_LOOP) BREAK CASE PSCD_DLC_FollowLeader lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_FOLLOW_LEADER) BREAK CASE PSCD_DLC_VehicleLanding lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_MOVING_LANDING) BREAK CASE PSCD_DLC_CollectFlags lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_COLLECT_FLAGS) BREAK CASE PSCD_DLC_Engine_failure lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_ENGINE_FAILURE) BREAK CASE PSCD_DLC_ChaseParachute lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_CHASE_PARACHUTE) BREAK CASE PSCD_DLC_CityLanding lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_CITY_LANDING) BREAK CASE PSCD_DLC_FlyLow lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_GROUND_LEVEL) BREAK CASE PSCD_DLC_ShootingRange lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_SHOOTING_RANGE) BREAK CASE PSCD_DLC_Formation lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_FORMATION_FLIGHT) BREAK DEFAULT PRINTLN("GET_FLIGHT_SCHOOL_LESSON_GLOBAL_BEST- passed in invalid lesson ID! ID: ",iLesson) SCRIPT_ASSERT("GET_FLIGHT_SCHOOL_LESSON_GLOBAL_BEST- passed in invalid lesson ID!") BREAK ENDSWITCH lbReadData.m_Type = LEADERBOARD2_TYPE_PLAYER lbReadData.m_GroupSelector.m_NumGroups = 0 lbReadData.m_GroupSelector.m_Group[0].m_Category = "" lbReadData.m_GroupSelector.m_Group[0].m_Id = "" SWITCH iReadStage CASE 0 IF START_SC_LEADERBOARD_READ_BY_RANK(iLoadStage,bSuccessful,lbReadData,1,1) #IF IS_DEBUG_BUILD println("GET_FLIGHT_SCHOOL_LESSON_GLOBAL_BEST: LEADERBOARD ID = ", lbReadData.m_LeaderboardId) #ENDIF FILL_READ_INFO_STRUCT(readInfo,lbReadData) IF bSuccessful AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) IF readInfo.m_ReturnedRows > 0 LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData) IF NOT IS_GAMER_HANDLE_VALID(initRowData.m_GamerHandle) println("GET_FLIGHT_SCHOOL_LESSON_GLOBAL_BEST -- no global data C") ELSE IF bInt fGlobalBest = TO_FLOAT(LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0)) ELSE fGlobalBest = LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(0, 0) ENDIF println("Global best is for player name: ", initRowData.m_GamerName, " is - ",fGlobalBest) ENDIF ELSE println("GET_FLIGHT_SCHOOL_LESSON_GLOBAL_BEST -- no global data A ") ENDIF LEADERBOARDS2_READ_GET_ROW_DATA_END() ELSE println("GET_FLIGHT_SCHOOL_LESSON_GLOBAL_BEST -- no global data B ") ENDIF bGotResultFromLB = bSuccessful iReadStage = 2 END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData) lbReadData = emptyData ENDIF BREAK CASE 2 RETURN TRUE BREAK ENDSWITCH RETURN FALSE ENDFUNC PROC CLEANUP_FLIGHT_SCHOOL_LESSON_GLOBAL_BEST(INT iLesson,INT& iReadStage, INT& iLoadStage, BOOL& bResult) IF iLoadStage != 0 Leaderboard2ReadData lbReadData SWITCH INT_TO_ENUM(PILOT_SCHOOL_DLC_CLASSES_ENUM_NEW,iLesson) CASE PSCD_DLC_OutsideLoop lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_OUTSIDE_LOOP) BREAK CASE PSCD_DLC_FollowLeader lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_FOLLOW_LEADER) BREAK CASE PSCD_DLC_VehicleLanding lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_MOVING_LANDING) BREAK CASE PSCD_DLC_CollectFlags lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_COLLECT_FLAGS) BREAK CASE PSCD_DLC_Engine_failure lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_ENGINE_FAILURE) BREAK CASE PSCD_DLC_ChaseParachute lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_CHASE_PARACHUTE) BREAK CASE PSCD_DLC_CityLanding lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_CITY_LANDING) BREAK CASE PSCD_DLC_FlyLow lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_GROUND_LEVEL) BREAK CASE PSCD_DLC_ShootingRange lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_SHOOTING_RANGE) BREAK CASE PSCD_DLC_Formation lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_FORMATION_FLIGHT) BREAK DEFAULT PRINTLN("GET_FLIGHT_SCHOOL_LESSON_GLOBAL_BEST- passed in invalid lesson ID! ID: ",iLesson) SCRIPT_ASSERT("GET_FLIGHT_SCHOOL_LESSON_GLOBAL_BEST- passed in invalid lesson ID!") BREAK ENDSWITCH lbReadData.m_Type = LEADERBOARD2_TYPE_PLAYER lbReadData.m_GroupSelector.m_NumGroups = 0 lbReadData.m_GroupSelector.m_Group[0].m_Category = "" lbReadData.m_GroupSelector.m_Group[0].m_Id = "" println("Ending read in CLEANUP_RACE_BEST_LAP_TIMES in ", GET_THIS_SCRIPT_NAME() ) END_LEADERBOARD_READ(iLoadStage,bResult, lbReadData) ENDIF iReadStage = 0 iLoadStage = 0 bResult = FALSE PRINTLN("CLEANUP_FLIGHT_SCHOOL_LESSON_GLOBAL_BEST- Called") ENDPROC PROC CLEAR_LIMITED_EDITION_ITEM_LB_DETAILS(LIMITED_EDITION_ITEM_LB_DETAILS &itemDetails) INT i itemDetails.iTotalStage = 0 itemDetails.iReadStage = 0 itemDetails.bSuccessful = FALSE REPEAT MAX_LIMITED_EDITION_ITEMS i itemDetails.iID[i] = 0 itemDetails.iStockSold[i] = 0 itemDetails.iTotalStock[i] = 0 ENDREPEAT ENDPROC #IF IS_DEBUG_BUILD PROC DEBUG_PRINT_LIMITED_EDITION_INFORMATION(LIMITED_EDITION_ITEM_LB_DETAILS &itemDetails) println("READ- ",itemDetails.bSuccessful) INT i REPEAT MAX_LIMITED_EDITION_ITEMS i println("itemDetails.iID[",i,"] = ",itemDetails.iID[i], "iStockSold = ",itemDetails.iStockSold[i], "iTotalStock = ",itemDetails.iTotalStock[i]) ENDREPEAT println("----------------END DEBUG_PRINT_LIMITED_EDITION_INFORMATION------------------------") ENDPROC #ENDIF FUNC INT GET_LIMITED_EDITION_ITEM_INDEX(TEXT_LABEL_31 &tl_31) TEXT_LABEL_31 tempLabel INT i = 0 REPEAT MAX_LIMITED_EDITION_ITEMS i tempLabel = "" tempLabel += g_sMPTunables.ilimitededitionitemid[i] //i println("GET_LIMITED_EDITION_ITEM_INDEX: tl_31:",tl_31, " tempLabel: ",tempLabel) IF ARE_STRINGS_EQUAL(tl_31,tempLabel) println("GET_LIMITED_EDITION_ITEM_INDEX: ",tl_31, " at Index = ",i) RETURN i ENDIF ENDREPEAT #IF IS_DEBUG_BUILD println("GET_LIMITED_EDITION_ITEM_INDEX: trying to get index of invalid item! Item ID = ",tl_31) #ENDIF RETURN -1 ENDFUNC /// PURPOSE: /// Returns the details about the limited edition items /// PARAMS: /// itemDetails - all the details you need as well as control for the leaderboard read /// RETURNS: /// TRUE when finished (this will always return true even if LB read fails FUNC BOOL GET_LIMITED_EDITION_ITEMS(LIMITED_EDITION_ITEM_LB_DETAILS &itemDetails) TEXT_LABEL_31 categoryNames[MAX_LIMITED_EDITION_ITEMS] TEXT_LABEL_23 uniqueIdentifiers[MAX_LIMITED_EDITION_ITEMS] INT iCategoriesToCheck INT i REPEAT MAX_LIMITED_EDITION_ITEMS i itemDetails.iID[i] = g_sMPTunables.ilimitededitionitemid[i] //i itemDetails.iStockSold[i] = 0 itemDetails.iTotalStock[i] = ROUND(g_sMPTunables.flimitededitiontunableamount[i]) //50 IF itemDetails.iTotalStock[i] != -1 AND g_sMPTunables.ilimitededitionitemid[i] != 0 categoryNames[iCategoriesToCheck] = "ItemId" uniqueIdentifiers[iCategoriesToCheck] = "" uniqueIdentifiers[iCategoriesToCheck] += g_sMPTunables.ilimitededitionitemid[i] //i iCategoriesToCheck++ ENDIF ENDREPEAT LeaderboardRowData initRowData LeaderboardReadInfo readInfo Leaderboard2ReadData lbReadData lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_LIMITED_EDITION) lbReadData.m_Type = LEADERBOARD2_TYPE_GROUP lbReadData.m_GroupSelector.m_NumGroups = 1 lbReadData.m_GroupSelector.m_Group[0].m_Category = "" lbReadData.m_GroupSelector.m_Group[0].m_Id = "" i = 0 GAMER_HANDLE noGamer[1] LeaderboardClanIds clanIDs[1] Leaderboard2GroupHandle groupHandle[MAX_LIMITED_EDITION_ITEMS] REPEAT iCategoriesToCheck i groupHandle[i].m_Group[0].m_Category = categoryNames[i] groupHandle[i].m_Group[0].m_Id = uniqueIdentifiers[i] groupHandle[i].m_NumGroups = 1 ENDREPEAT INT iIndex SWITCH itemDetails.iTotalStage CASE 0 IF START_SC_LEADERBOARD_READ_BY_ROW(itemDetails.iReadStage,itemDetails.bSuccessful,lbReadData, noGamer,0, clanIDs,0, groupHandle, iCategoriesToCheck) //println("GET_LIMITED_EDITION_ITEMS: Called by ", GET_THIS_SCRIPT_NAME()) #IF IS_DEBUG_BUILD println("GET_LIMITED_EDITION_ITEMS LEADERBOARD ID = ", lbReadData.m_LeaderboardId) #ENDIF FILL_READ_INFO_STRUCT(readInfo,lbReadData) IF itemDetails.bSuccessful AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) IF readInfo.m_ReturnedRows > 0 i = 0 iIndex = 0 REPEAT readInfo.m_ReturnedRows i LEADERBOARDS2_READ_GET_ROW_DATA_INFO(i, initRowData) iIndex = GET_LIMITED_EDITION_ITEM_INDEX(initRowData.m_GroupSelector.m_Group[0].m_Id) IF iIndex >= 0 itemDetails.iStockSold[iIndex] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(i, 0) println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", i, " Column: ",0) #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES("TEST_LIMITED_SHOP_ITEMS","Current Run",i,0, itemDetails.iStockSold[iIndex],0.0,TRUE ) #ENDIF ENDIF ENDREPEAT ELSE println("GET_LIMITED_EDITION_ITEMS -- moving to stage 1 no data ") ENDIF LEADERBOARDS2_READ_GET_ROW_DATA_END( ) ELSE println("GET_LIMITED_EDITION_ITEMS -- moving to stage 1 no data ") ENDIF itemDetails.iTotalStage = 1 #IF IS_DEBUG_BUILD DEBUG_PRINT_LIMITED_EDITION_INFORMATION(itemDetails) #ENDIF END_LEADERBOARD_READ(itemDetails.iReadStage,itemDetails.bSuccessful,lbReadData) ENDIF BREAK CASE 1 RETURN TRUE BREAK ENDSWITCH RETURN FALSE ENDFUNC /// PURPOSE: /// Writes to the leaderboard for limited edition items /// PARAMS: /// iID - the id of the items you are purchasing /// iAmount - the amount of items you are purchasing PROC WRITE_PURCHASE_OF_LIMITED_EDITION_ITEMS(INT iID, INT iAmount = 1) TEXT_LABEL_31 categoryNames[1] TEXT_LABEL_23 uniqueIdentifiers[1] categoryNames[0] = "ItemId" uniqueIdentifiers[0] = "" uniqueIdentifiers[0] += iID IF INIT_LEADERBOARD_WRITE(LEADERBOARD_FREEMODE_LIMITED_EDITION,uniqueIdentifiers,categoryNames,1) println(" WRITE_PURCHASE_OF_LIMITED_EDITION_ITEMS: purchasing item ID: ", iID, " and Amount: ",iAmount) LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_SCORE,iAmount,0) ENDIF ENDPROC #IF IS_DEBUG_BUILD PROC TEST_ELO_LEADERBOARDS() IF debugELOLeaderboard.bReadData IF GET_PLAYER_ELO_FOR_MODE(LEADERBOARD_FREEMODE_ELO_DEATHMATCH_OVERALL, debugELOLeaderboard.iReadStage, debugELOLeaderboard.iTempLoadStage,debugELOLeaderboard.bTempReadResult, debugELOLeaderboard.iReturnedELO) CLEAR_GET_PLAYER_ELO_FOR_MODE_FLAGS(debugELOLeaderboard.iReadStage, debugELOLeaderboard.iTempLoadStage,debugELOLeaderboard.bTempReadResult) debugELOLeaderboard.bReadData = FALSE ENDIF ENDIF TEXT_LABEL_31 categoryNames[1] TEXT_LABEL_23 uniqueIdentifiers[1] INT iELOUpdate = debugELOLeaderboard.iWriteNewEloValue IF debugELOLeaderboard.bWriteData categoryNames[0] = "SeasonId" uniqueIdentifiers[0] = g_sMPTunables.iEloSeason IF INIT_LEADERBOARD_WRITE(LEADERBOARD_FREEMODE_ELO_DEATHMATCH_OVERALL,uniqueIdentifiers,categoryNames,1) IF UPDATE_STORED_ELO(LEADERBOARD_FREEMODE_ELO_DEATHMATCH_OVERALL,iELOUpdate) LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_SCORE,iELOUpdate,0) println("LEADERBOARDS_WRITE_ADD_COLUMN writing ELO update to LB ",iELOUpdate) ELSE LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_SCORE,0,0) //println("LEADERBOARDS_WRITE_ADD_COLUMN: UPDATE_STORED_ELO failed not updating LB!") ENDIF // Write kills LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_KILLS,0,0) //println("LEADERBOARDS_WRITE_ADD_COLUMN writing to col # 1 COL_KILLS ",0 ) // Write deaths LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_DEATHS,0,0) //println("LEADERBOARDS_WRITE_ADD_COLUMN writing to col # 2 COL_DEATHS ",0) // Write wins LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_NUM_WINS,0,0) //println("LEADERBOARDS_WRITE_ADD_COLUMN writing to col # 2 COL_WINS ",0) // Write wins LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_NUM_MATCHES,0,0) //println("LEADERBOARDS_WRITE_ADD_COLUMN writing to col # 2 COL_MATCHES ",0) // Write wins LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_NUM_MATCHES_LOST,0,0) //println("LEADERBOARDS_WRITE_ADD_COLUMN writing to col # 2 COL_LOSES ",0) // Write time //NEED TO ADD TRACKING FOR THIS REF# 12345232312 LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_TOTAL_TIME_ELO_RACE,0,0) ENDIF debugELOLeaderboard.bWriteData = FALSE ENDIF ENDPROC PROC CLEAR_TEST_LIMITED_SHOP_ITEMS_LEADERBOARD_READ_STRUCT() debugLimitedShopItems.bReadLeaderboardValues = FALSE debugLimitedShopItems.iReadStage = 0 debugLimitedShopItems.iTempLoadStage = 0 debugLimitedShopItems.bTempReadResult = FALSE ENDPROC PROC TEST_LIMITED_SHOP_ITEMS() //1445116 // INT iItemID[10] // INT iItemAmount[10] // INT i //TEXT_LABEL_31 categoryNames[1] //TEXT_LABEL_23 uniqueIdentifiers[0] // REPEAT 10 i // iItemID[i] = i // iItemAmount[i] = 10*i // categoryNames[i] = "ItemId" // uniqueIdentifiers[i] = "" // uniqueIdentifiers[i] += i // ENDREPEAT // // LeaderboardRowData initRowData // LeaderboardReadInfo readInfo // // Leaderboard2ReadData lbReadData // // IF debugLimitedShopItems.bTriggerPurchase WRITE_PURCHASE_OF_LIMITED_EDITION_ITEMS(debugLimitedShopItems.iPurchaseItemID,debugLimitedShopItems.iPurchaseAmount) debugLimitedShopItems.bTriggerPurchase = FALSE ELIF debugLimitedShopItems.bReadLeaderboardValues IF GET_LIMITED_EDITION_ITEMS(debugTextLimEdItems) CLEAR_LIMITED_EDITION_ITEM_LB_DETAILS(debugTextLimEdItems) debugLimitedShopItems.bReadLeaderboardValues = FALSE ENDIF ENDIF // lbReadData.m_LeaderboardId = LEADERBOARD_FREEMODE_LIMITED_EDITION // lbReadData.m_Type = LEADERBOARD_TYPE_GROUP // lbReadData.m_GroupSelector.m_NumGroups = 4 // i = 0 // GAMER_HANDLE noGamer[1] // LeaderboardClanIds clanIDs[1] // Leaderboard2GroupHandle groupHandle // // REPEAT lbReadData.m_GroupSelector.m_NumGroups i // lbReadData.m_GroupSelector.m_Group[i].m_Category = categoryNames[i] // lbReadData.m_GroupSelector.m_Group[i].m_Id = uniqueIdentifiers[i] // groupHandle.m_Group[i].m_Category = categoryNames[i] // groupHandle.m_Group[i].m_Id = uniqueIdentifiers[i] // ENDREPEAT // groupHandle.m_NumGroups = lbReadData.m_GroupSelector.m_NumGroups // // IF debugLimitedShopItems.bReadLeaderboardValues // SWITCH debugLimitedShopItems.iReadStage // CASE 0 // IF START_SC_LEADERBOARD_READ_BY_ROW(debugLimitedShopItems.iTempLoadStage,debugLimitedShopItems.bTempReadResult,lbReadData,noGamer,0,clanIDs,0,groupHandle,groupHandle.m_NumGroups) // println("TEST_LIMITED_SHOP_ITEMS: Called by ", GET_THIS_SCRIPT_NAME()) // #IF IS_DEBUG_BUILD // println("TEST_LIMITED_SHOP_ITEMS LEADERBOARD ID = ", lbReadData.m_LeaderboardId) // #ENDIF // FILL_READ_INFO_STRUCT(readInfo,lbReadData) // // IF debugLimitedShopItems.bTempReadResult // AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) // IF readInfo.m_ReturnedRows > 0 // i = 0 // REPEAT readInfo.m_ReturnedRows i // LEADERBOARDS2_READ_GET_ROW_DATA_INFO(i, initRowData) // println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", i, " Column: ",0) // #IF IS_DEBUG_BUILD // DEBUG_PRINT_SC_LB_RETURNED_VALUES("TEST_LIMITED_SHOP_ITEMS","Current Run",i,0, // LEADERBOARDS2_READ_GET_ROW_DATA_INT(i, 0),0.0,TRUE ) // #ENDIF // ENDREPEAT // ELSE // println("TEST_LIMITED_SHOP_ITEMS -- moving to stage 1 no data for local player ") // ENDIF // // LEADERBOARDS2_READ_GET_ROW_DATA_END( ) // ELSE // println("TEST_LIMITED_SHOP_ITEMS -- moving to stage 1 no data for local player ") // ENDIF // debugLimitedShopItems.iReadStage = 1 // END_LEADERBOARD_READ(debugLimitedShopItems.iTempLoadStage,debugLimitedShopItems.bTempReadResult,lbReadData) // ENDIF // BREAK // // CASE 1 // CLEAR_TEST_LIMITED_SHOP_ITEMS_LEADERBOARD_READ_STRUCT() // BREAK // ENDSWITCH // ENDIF // ENDIF ENDPROC #ENDIF //PURPOSE: Checks if a Lottery Leaderboard Read is successful. Making sure the Leaderboard is okay to be used. FUNC INT HAS_LOTTERY_LEADERBOARD_TEST_PASSED(INT &iTempLoadStage, BOOL &bTempReadResult) LeaderboardReadInfo readInfo LeaderboardRowData initRowData Leaderboard2ReadData ReadDataStruct GAMER_HANDLE gamerHandle gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID()) ReadDataStruct.m_LeaderboardID = ENUM_TO_INT(LEADERBOARD_FREEMODE_LOTTERY_TICKET) ReadDataStruct.m_type = LEADERBOARD2_TYPE_PLAYER readInfo.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_LOTTERY_TICKET) readInfo.m_LeaderboardType = ENUM_TO_INT(LEADERBOARD2_TYPE_PLAYER) IF START_SC_LEADERBOARD_READ_BY_HANDLE(iTempLoadStage, bTempReadResult, ReadDataStruct, gamerHandle) #IF IS_DEBUG_BUILD DEBUG_START_LEADERBOARD_PRINT_RESULTS("HAS_LOTTERY_LEADERBOARD_TEST_PASSED (ReadDataStruct) ", ReadDataStruct) #ENDIF FILL_READ_INFO_STRUCT(readInfo, ReadDataStruct) CLEAR_ROW_DATA_INFO_STRUCT(initRowData) END_LEADERBOARD_READ(iTempLoadStage, bTempReadResult, ReadDataStruct) IF bTempReadResult = TRUE PRINTLN(" LOTTERY - HAS_LOTTERY_LEADERBOARD_TEST_PASSED = TRUE") RETURN 1 ELSE PRINTLN(" LOTTERY - HAS_LOTTERY_LEADERBOARD_TEST_PASSED = FALSE") RETURN -1 ENDIF ENDIF //PRINTLN(" LOTTERY - HAS_LOTTERY_LEADERBOARD_TEST_PASSED = PENDING") RETURN 0 ENDFUNC FUNC BOOL START_SC_LEADERBOARD_READ_BY_PLATFORM(INT &iLoadStage,BOOL &bSuccessful, Leaderboard2ReadData &lbReadData, STRING handleData,STRING platform) #IF IS_DEBUG_BUILD STRING procName = "START_SC_LEADERBOARD_READ_BY_PLATFORM" #ENDIF SWITCH iLoadStage CASE 0 IF NOT IS_ANY_LEADERBOARD_READ_BEING_PROCESSED()//LEADERBOARDS_READ_EXISTS(lbReadData.m_LeaderboardId, lbReadData.m_Type) AND NOT SHOULD_ALL_SCRIPT_LEADERBOARD_READS_TERMINATE() #IF IS_DEBUG_BUILD DEBUG_PRINT_LEADERBOARD_READ_DATA_STRUCT(procName,lbReadData) #ENDIF START_LEADERBOARD_READ(lbReadData) IF LEADERBOARDS2_READ_BY_PLAFORM(lbReadData, handleData, platform) iLoadStage++ #IF IS_DEBUG_BUILD DEBUG_PRINT_LB_READ_PROGRESS(procName, 1) #ENDIF ELSE #IF IS_DEBUG_BUILD //println() println("LEADERBOARDS2_READ_BY_PLAFORM FAILED!! start See Conor") println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type) //println() //SCRIPT_ASSERT("LEADERBOARDS2_READ_BY_HANDLE FAILED!! See Conor") DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE) DEBUG_PRINT_LB_READ_PROGRESS(procName,3) #ENDIF bSuccessful = FALSE iLoadStage=3 ENDIF #IF IS_DEBUG_BUILD ELSE IF g_DBb_OutputLeaderboardReadErrors DEBUG_PRINT_WAITING_FOR_READ_TO_FINISH(lbReadData)//"START_SC_LEADERBOARD_READ_BY_HANDLE", ENDIF #ENDIF ENDIF BREAK CASE 1 IF NOT LEADERBOARDS_READ_PENDING(lbReadData.m_LeaderboardId, lbReadData.m_Type) iLoadStage++ #IF IS_DEBUG_BUILD DEBUG_PRINT_LB_READ_PROGRESS(procName,2) #ENDIF ENDIF BREAK CASE 2 IF LEADERBOARDS_READ_SUCCESSFUL(lbReadData.m_LeaderboardId, lbReadData.m_Type) #IF IS_DEBUG_BUILD DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,TRUE) DEBUG_PRINT_LB_READ_PROGRESS(procName,3) #ENDIF bSuccessful = TRUE iLoadStage++ ELSE #IF IS_DEBUG_BUILD //println() println("LEADERBOARD READ FAILED!! See Conor") println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type) //println() //SCRIPT_ASSERT("LEADERBOARD READ FAILED!! See Conor") DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE) DEBUG_PRINT_LB_READ_PROGRESS(procName,3) #ENDIF bSuccessful = FALSE iLoadStage++ ENDIF BREAK CASE 3 RETURN TRUE BREAK ENDSWITCH RETURN FALSE ENDFUNC PROC RESET_PLATFORM_UPGRADE_LB_CHECK_STRUCT(PLATFORM_UPGRADE_LB_CHECKS &sPlatformUpdateLBData) PRINTLN("Resetting PLATFORM_UPGRADE_LB_CHECKS struct.") Leaderboard2ReadData lbReadData lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_COMMERCE) lbReadData.m_Type = LEADERBOARD2_TYPE_PLAYER END_LEADERBOARD_READ(sPlatformUpdateLBData.iReadStage,sPlatformUpdateLBData.bSuccessful,lbReadData) sPlatformUpdateLBData.iTotalStage = 0 sPlatformUpdateLBData.iReadStage = 0 sPlatformUpdateLBData.bSuccessful = FALSE sPlatformUpdateLBData.bComplete = FALSE ENDPROC FUNC BOOL RUN_PLATFORM_UPGRADE_LB_CHECKS(PLATFORM_UPGRADE_LB_CHECKS &iPlatformUpdateLBData, BOOL bSPCheck = FALSE) IF iPlatformUpdateLBData.iFrameCheck+10 < GET_FRAME_COUNT() RESET_PLATFORM_UPGRADE_LB_CHECK_STRUCT(iPlatformUpdateLBData) PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - Resetting due to inactivity.") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - Resetting due to inactivity.") #ENDIF ENDIF iPlatformUpdateLBData.iFrameCheck = GET_FRAME_COUNT() #IF IS_DEBUG_BUILD IF NOT bSPCheck PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - Running MP check variation.") ELSE PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - Running SP check variation.") ENDIF #ENDIF #IF USE_FINAL_PRINTS IF NOT bSPCheck PRINTLN_FINAL("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - Running MP check variation.") ELSE PRINTLN_FINAL("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - Running SP check variation.") ENDIF #ENDIF IF (g_struct_Save_transfer_data_PS3.m_totalProgressMadeInSp <= 0 OR IS_STRING_NULL_OR_EMPTY(g_struct_Save_transfer_data_PS3.m_gamerHandle)) AND (g_struct_Save_transfer_data_XBOX360.m_totalProgressMadeInSp <= 0 OR IS_STRING_NULL_OR_EMPTY(g_struct_Save_transfer_data_XBOX360.m_gamerHandle)) PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS- no valid migration data returning true") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - No valid migration data returning true.") #ENDIF RETURN TRUE ENDIF LeaderboardRowData initRowData LeaderboardReadInfo readInfo Leaderboard2ReadData lbReadData TEXT_LABEL_63 gamerName STRING platform lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_COMMERCE) lbReadData.m_Type = LEADERBOARD2_TYPE_PLAYER INT iChecksStatus IF NOT bSPCheck iChecksStatus = GET_MP_INT_PLAYER_STAT(MPPLY_PLAT_UP_LB_CHECK) ELSE iChecksStatus = 0 //Whenever we rerun this function in SP we want to rerun all tests. //Pull the current profile settings so we don't lose any values as we update bits. IF ARE_PROFILE_SETTINGS_VALID() CDEBUG1LN(DEBUG_LASTGEN, " Loaded current profile settings.") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] Loaded current profile settings.") #ENDIF g_iPlayerHasLastGenSpecialContentBitset = GET_PROFILE_SETTING(GAMER_HAS_SPECIALEDITION_CONTENT) ENDIF ENDIF //platform matches STAT_MIGRATE_SAVEGAME_START() IF IS_BIT_SET(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_PS3_BLIMP)) AND IS_BIT_SET(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_PS3_COLLECT)) AND IS_BIT_SET(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_PS3_SPECIAL)) AND IS_BIT_SET(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_XBOX360_BLIMP)) AND IS_BIT_SET(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_XBOX360_COLLECT)) AND IS_BIT_SET(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_XBOX360_SPECIAL)) PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS- all checks complete returning true") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - All checks complete returning true.") #ENDIF RETURN TRUE ENDIF SWITCH iPlatformUpdateLBData.iTotalStage CASE 0 IF g_struct_Save_transfer_data_PS3.m_totalProgressMadeInSp <= 0 OR IS_STRING_NULL_OR_EMPTY(g_struct_Save_transfer_data_PS3.m_gamerHandle) PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - PS3 SP progress made: ", g_struct_Save_transfer_data_PS3.m_totalProgressMadeInSp) PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - PS3 gamer handle: ", g_struct_Save_transfer_data_PS3.m_gamerHandle) PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - PS3 gamer-handle invalid. Skipping PS3 checks.") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] PS3 SP progress made: ", g_struct_Save_transfer_data_PS3.m_totalProgressMadeInSp) PRINTLN_FINAL("[LASTGEN][SE-CE] PS3 gamer handle: ", g_struct_Save_transfer_data_PS3.m_gamerHandle) PRINTLN_FINAL("[LASTGEN][SE-CE] PS3 gamer-handle invalid. Skipping PS3 checks.") #ENDIF iPlatformUpdateLBData.iTotalStage = 3 RETURN FALSE ENDIF gamerName = g_struct_Save_transfer_data_PS3.m_gamerHandle platform = ("ps3") lbReadData.m_GroupSelector.m_NumGroups = 1 lbReadData.m_GroupSelector.m_Group[0].m_Category = "ProductId" lbReadData.m_GroupSelector.m_Group[0].m_Id = "preorder_pack" #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] ------- Leaderboard Query -------") PRINTLN_FINAL("[LASTGEN][SE-CE] GamerHandle: ", gamerName) PRINTLN_FINAL("[LASTGEN][SE-CE] Platform: ", platform) PRINTLN_FINAL("[LASTGEN][SE-CE] Id: ", lbReadData.m_GroupSelector.m_Group[0].m_Id) PRINTLN_FINAL("[LASTGEN][SE-CE] Category: ", lbReadData.m_GroupSelector.m_Group[0].m_Category) PRINTLN_FINAL("[LASTGEN][SE-CE] NumbeOfGroups: ", lbReadData.m_GroupSelector.m_NumGroups) PRINTLN_FINAL("[LASTGEN][SE-CE] ---------------------------------") #ENDIF IF NOT IS_BIT_SET(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_PS3_BLIMP)) IF START_SC_LEADERBOARD_READ_BY_PLATFORM(iPlatformUpdateLBData.iReadStage,iPlatformUpdateLBData.bSuccessful,lbReadData, gamerName,platform) PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS LEADERBOARD ID = ", lbReadData.m_LeaderboardId) #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS LEADERBOARD ID = ", lbReadData.m_LeaderboardId) #ENDIF FILL_READ_INFO_STRUCT(readInfo,lbReadData) IF iPlatformUpdateLBData.bSuccessful AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) IF readInfo.m_ReturnedRows > 0 LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData) IF LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0) > 0 PRINTLN("START_SC_LEADERBOARD_READ_BY_PLATFORM: Row: ",0, " Column: ",0) #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES("RUN_PLATFORM_UPGRADE_LB_CHECKS","Current Run",0,0, LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0),0.0,TRUE ) #ENDIF PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - Setting player has PS3 BLIMP.") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] Setting player has PS3 BLIMP.") #ENDIF SET_BIT(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_HAS_BLIMP)) IF NOT bSPCheck SET_MP_INT_PLAYER_STAT(MPPLY_PLAT_UP_LB_CHECK,iChecksStatus) ENDIF ELSE PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for PS3 BLIMP. (C)") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for PS3 BLIMP. (C)") #ENDIF ENDIF ELSE PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for PS3 BLIMP. (B)") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for PS3 BLIMP. (B)") #ENDIF ENDIF SET_BIT(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_PS3_BLIMP)) LEADERBOARDS2_READ_GET_ROW_DATA_END( ) ELSE PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for PS3 BLIMP. (A)") PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - iPlatformUpdateLBData.bSuccessful = ", iPlatformUpdateLBData.bSuccessful) PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) = ", LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)) #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for PS3 BLIMP. (A)") PRINTLN_FINAL("[LASTGEN][SE-CE] iPlatformUpdateLBData.bSuccessful = ", iPlatformUpdateLBData.bSuccessful) PRINTLN_FINAL("[LASTGEN][SE-CE] LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) = ", LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)) #ENDIF ENDIF iPlatformUpdateLBData.bSuccessful = FALSE iPlatformUpdateLBData.iTotalStage = 1 END_LEADERBOARD_READ(iPlatformUpdateLBData.iReadStage,iPlatformUpdateLBData.bSuccessful,lbReadData) ENDIF ELSE PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - Already run check for PS3 BLIMP. Moving to next check.") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] Already run check for PS3 BLIMP. Moving to next check.") #ENDIF iPlatformUpdateLBData.bSuccessful = FALSE iPlatformUpdateLBData.iTotalStage = 1 ENDIF BREAK CASE 1 gamerName = g_struct_Save_transfer_data_PS3.m_gamerHandle platform = ("ps3") lbReadData.m_GroupSelector.m_NumGroups = 1 lbReadData.m_GroupSelector.m_Group[0].m_Category = "ProductId" lbReadData.m_GroupSelector.m_Group[0].m_Id = "collectors_ed" #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] ------- Leaderboard Query -------") PRINTLN_FINAL("[LASTGEN][SE-CE] GamerHandle: ", gamerName) PRINTLN_FINAL("[LASTGEN][SE-CE] Platform: ", platform) PRINTLN_FINAL("[LASTGEN][SE-CE] Id: ", lbReadData.m_GroupSelector.m_Group[0].m_Id) PRINTLN_FINAL("[LASTGEN][SE-CE] Category: ", lbReadData.m_GroupSelector.m_Group[0].m_Category) PRINTLN_FINAL("[LASTGEN][SE-CE] NumbeOfGroups: ", lbReadData.m_GroupSelector.m_NumGroups) PRINTLN_FINAL("[LASTGEN][SE-CE] ---------------------------------") #ENDIF CLEAR_BIT(g_iPlayerHasLastGenSpecialContentBitset, BIT_LAST_GEN_SPECIAL_CONTENT_PS3_COLLECTORS) IF NOT IS_BIT_SET(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_PS3_COLLECT)) IF START_SC_LEADERBOARD_READ_BY_PLATFORM(iPlatformUpdateLBData.iReadStage,iPlatformUpdateLBData.bSuccessful,lbReadData, gamerName,platform) #IF IS_DEBUG_BUILD println("RUN_PLATFORM_UPGRADE_LB_CHECKS LEADERBOARD ID = ", lbReadData.m_LeaderboardId) #ENDIF FILL_READ_INFO_STRUCT(readInfo,lbReadData) PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS readInfo.m_LeaderboardId = ", readInfo.m_LeaderboardId) PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS readInfo.m_LeaderboardType = ", readInfo.m_LeaderboardType) IF iPlatformUpdateLBData.bSuccessful AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) IF readInfo.m_ReturnedRows > 0 LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData) IF LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0) > 0 println("START_SC_LEADERBOARD_READ_BY_PLATFORM: Row: ", 0, " Column: ",0) #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES("RUN_PLATFORM_UPGRADE_LB_CHECKS","Current Run",0,0, LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0),0.0,TRUE ) #ENDIF PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - Setting player has PS3 COLLECTORS.") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] Setting player has PS3 COLLECTORS.") #ENDIF SET_BIT(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_HAS_COLLECT)) SET_BIT(g_iPlayerHasLastGenSpecialContentBitset, BIT_LAST_GEN_SPECIAL_CONTENT_PS3_COLLECTORS) IF NOT bSPCheck SET_MP_INT_PLAYER_STAT(MPPLY_PLAT_UP_LB_CHECK,iChecksStatus) ELSE CPRINTLN(DEBUG_LASTGEN, " Flagging that player's last gen account had PS3 COLLECTORS in SP stat.") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] Flagging that player's last gen account had PS3 COLLECTORS in SP stat.") #ENDIF IF ARE_PROFILE_SETTINGS_VALID() CPRINTLN(DEBUG_LASTGEN, " Updated profile settings.") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] Updated profile settings.") #ENDIF SET_HAS_SPECIALEDITION_CONTENT(g_iPlayerHasLastGenSpecialContentBitset) ENDIF ENDIF ELSE PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for PS3 COLLECTORS. (C)") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for PS3 COLLECTORS. (C)") #ENDIF ENDIF ELSE PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for PS3 COLLECTORS. (B)") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for PS3 COLLECTORS. (B)") #ENDIF ENDIF SET_BIT(g_iPlayerHasLastGenSpecialContentBitset,BIT_LAST_GEN_SPECIAL_CONTENT_STAT_STORED_COLLECTOR) STAT_SET_INT(SP_UNLOCK_EXCLUS_CONTENT, g_iPlayerHasLastGenSpecialContentBitset) CPRINTLN(DEBUG_LASTGEN, "[LASTGEN][SE-CE] PS3 STAT_STORED_COLLECTOR Set g_iPlayerHasLastGenSpecialContentBitset = ", g_iPlayerHasLastGenSpecialContentBitset, " " ) SET_BIT(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_PS3_COLLECT)) LEADERBOARDS2_READ_GET_ROW_DATA_END( ) ELSE PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for PS3 COLLECTORS. (A)") PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - iPlatformUpdateLBData.bSuccessful = ", iPlatformUpdateLBData.bSuccessful) PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) = ", LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)) #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for PS3 COLLECTORS. (A)") PRINTLN_FINAL("[LASTGEN][SE-CE] iPlatformUpdateLBData.bSuccessful = ", iPlatformUpdateLBData.bSuccessful) PRINTLN_FINAL("[LASTGEN][SE-CE] LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) = ", LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)) #ENDIF ENDIF iPlatformUpdateLBData.bSuccessful = FALSE iPlatformUpdateLBData.iTotalStage = 2 END_LEADERBOARD_READ(iPlatformUpdateLBData.iReadStage,iPlatformUpdateLBData.bSuccessful,lbReadData) ENDIF ELSE PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - Already run check for PS3 COLLECTORS. Moving to next check.") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] Already run check for PS3 COLLECTORS. Moving to next check.") #ENDIF iPlatformUpdateLBData.bSuccessful = FALSE iPlatformUpdateLBData.iTotalStage = 2 ENDIF BREAK CASE 2 gamerName = g_struct_Save_transfer_data_PS3.m_gamerHandle platform = ("ps3") lbReadData.m_GroupSelector.m_NumGroups = 1 lbReadData.m_GroupSelector.m_Group[0].m_Category = "ProductId" lbReadData.m_GroupSelector.m_Group[0].m_Id = "special_ed" #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] ------- Leaderboard Query -------") PRINTLN_FINAL("[LASTGEN][SE-CE] GamerHandle: ", gamerName) PRINTLN_FINAL("[LASTGEN][SE-CE] Platform: ", platform) PRINTLN_FINAL("[LASTGEN][SE-CE] Id: ", lbReadData.m_GroupSelector.m_Group[0].m_Id) PRINTLN_FINAL("[LASTGEN][SE-CE] Category: ", lbReadData.m_GroupSelector.m_Group[0].m_Category) PRINTLN_FINAL("[LASTGEN][SE-CE] NumbeOfGroups: ", lbReadData.m_GroupSelector.m_NumGroups) PRINTLN_FINAL("[LASTGEN][SE-CE] ---------------------------------") #ENDIF CLEAR_BIT(g_iPlayerHasLastGenSpecialContentBitset, BIT_LAST_GEN_SPECIAL_CONTENT_PS3_SPECIAL) IF NOT IS_BIT_SET(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_PS3_SPECIAL)) IF START_SC_LEADERBOARD_READ_BY_PLATFORM(iPlatformUpdateLBData.iReadStage,iPlatformUpdateLBData.bSuccessful,lbReadData, gamerName,platform) #IF IS_DEBUG_BUILD println("RUN_PLATFORM_UPGRADE_LB_CHECKS LEADERBOARD ID = ", lbReadData.m_LeaderboardId) #ENDIF FILL_READ_INFO_STRUCT(readInfo,lbReadData) IF iPlatformUpdateLBData.bSuccessful AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) IF readInfo.m_ReturnedRows > 0 LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData) IF LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0) > 0 println("START_SC_LEADERBOARD_READ_BY_PLATFORM: Row: ", 0, " Column: ",0) #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES("RUN_PLATFORM_UPGRADE_LB_CHECKS","Current Run",0,0, LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0),0.0,TRUE ) #ENDIF PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - Setting player has PS3 SPECIAL.") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] Setting player has PS3 SPECIAL.") #ENDIF SET_BIT(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_HAS_SPECIAL)) SET_BIT(g_iPlayerHasLastGenSpecialContentBitset, BIT_LAST_GEN_SPECIAL_CONTENT_PS3_SPECIAL) IF NOT bSPCheck SET_MP_INT_PLAYER_STAT(MPPLY_PLAT_UP_LB_CHECK,iChecksStatus) ELSE CPRINTLN(DEBUG_LASTGEN, " Flagging that player's last gen account had PS3 SPECIAL in SP stat.") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] Flagging that player's last gen account had PS3 SPECIAL in SP stat.") #ENDIF IF ARE_PROFILE_SETTINGS_VALID() CPRINTLN(DEBUG_LASTGEN, " Updated profile settings.") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] Updated profile settings.") #ENDIF SET_HAS_SPECIALEDITION_CONTENT(g_iPlayerHasLastGenSpecialContentBitset) ENDIF ENDIF ELSE PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for PS3 SPECIAL. (C)") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for PS3 SPECIAL. (C)") #ENDIF ENDIF ELSE PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for PS3 SPECIAL. (B)") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for PS3 SPECIAL. (B)") #ENDIF ENDIF SET_BIT(g_iPlayerHasLastGenSpecialContentBitset,BIT_LAST_GEN_SPECIAL_CONTENT_STAT_STORED_SPECIAL) STAT_SET_INT(SP_UNLOCK_EXCLUS_CONTENT, g_iPlayerHasLastGenSpecialContentBitset) CPRINTLN(DEBUG_LASTGEN, "[LASTGEN][SE-CE] PS3 STAT_STORED_SPECIAL Set g_iPlayerHasLastGenSpecialContentBitset = ", g_iPlayerHasLastGenSpecialContentBitset, " " ) SET_BIT(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_PS3_SPECIAL)) LEADERBOARDS2_READ_GET_ROW_DATA_END( ) ELSE PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for PS3 SPECIAL. (A)") PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - iPlatformUpdateLBData.bSuccessful = ", iPlatformUpdateLBData.bSuccessful) PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) = ", LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)) #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for PS3 SPECIAL. (A)") PRINTLN_FINAL("[LASTGEN][SE-CE] iPlatformUpdateLBData.bSuccessful = ", iPlatformUpdateLBData.bSuccessful) PRINTLN_FINAL("[LASTGEN][SE-CE] LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) = ", LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)) #ENDIF ENDIF iPlatformUpdateLBData.bSuccessful = FALSE iPlatformUpdateLBData.iTotalStage = 3 END_LEADERBOARD_READ(iPlatformUpdateLBData.iReadStage,iPlatformUpdateLBData.bSuccessful,lbReadData) ENDIF ELSE PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - Already run check for PS3 SPECIAL. Moving to next check.") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] Already run check for PS3 SPECIAL. Moving to next check.") #ENDIF iPlatformUpdateLBData.bSuccessful = FALSE iPlatformUpdateLBData.iTotalStage = 3 ENDIF BREAK CASE 3 IF g_struct_Save_transfer_data_XBOX360.m_totalProgressMadeInSp <= 0 OR IS_STRING_NULL_OR_EMPTY(g_struct_Save_transfer_data_XBOX360.m_gamerHandle) PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - 360 SP progress made: ", g_struct_Save_transfer_data_XBOX360.m_totalProgressMadeInSp) PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - 360 gamer handle: ", g_struct_Save_transfer_data_XBOX360.m_gamerHandle) PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - Xbox360 gamer-handle invalid. Skipping 360 checks.") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] 360 SP progress made: ", g_struct_Save_transfer_data_XBOX360.m_totalProgressMadeInSp) PRINTLN_FINAL("[LASTGEN][SE-CE] 360 gamer handle: ", g_struct_Save_transfer_data_XBOX360.m_gamerHandle) PRINTLN_FINAL("[LASTGEN][SE-CE] Xbox360 gamer-handle invalid. Skipping 360 checks.") #ENDIF iPlatformUpdateLBData.iTotalStage = 6 RETURN FALSE ENDIF gamerName = g_struct_Save_transfer_data_XBOX360.m_gamerHandle platform = ("xbox360") lbReadData.m_GroupSelector.m_NumGroups = 1 lbReadData.m_GroupSelector.m_Group[0].m_Category = "ProductId" lbReadData.m_GroupSelector.m_Group[0].m_Id = "atomic_blimp" #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] ------- Leaderboard Query -------") PRINTLN_FINAL("[LASTGEN][SE-CE] GamerHandle: ", gamerName) PRINTLN_FINAL("[LASTGEN][SE-CE] Platform: ", platform) PRINTLN_FINAL("[LASTGEN][SE-CE] Id: ", lbReadData.m_GroupSelector.m_Group[0].m_Id) PRINTLN_FINAL("[LASTGEN][SE-CE] Category: ", lbReadData.m_GroupSelector.m_Group[0].m_Category) PRINTLN_FINAL("[LASTGEN][SE-CE] NumbeOfGroups: ", lbReadData.m_GroupSelector.m_NumGroups) PRINTLN_FINAL("[LASTGEN][SE-CE] ---------------------------------") #ENDIF IF NOT IS_BIT_SET(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_XBOX360_BLIMP)) IF START_SC_LEADERBOARD_READ_BY_PLATFORM(iPlatformUpdateLBData.iReadStage,iPlatformUpdateLBData.bSuccessful,lbReadData, gamerName,platform) #IF IS_DEBUG_BUILD println("RUN_PLATFORM_UPGRADE_LB_CHECKS LEADERBOARD ID = ", lbReadData.m_LeaderboardId) #ENDIF FILL_READ_INFO_STRUCT(readInfo,lbReadData) IF iPlatformUpdateLBData.bSuccessful AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) IF readInfo.m_ReturnedRows > 0 LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData) IF LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0) > 0 println("START_SC_LEADERBOARD_READ_BY_PLATFORM: Row: ", 0, " Column: ",0) #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES("RUN_PLATFORM_UPGRADE_LB_CHECKS","Current Run",0,0, LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0),0.0,TRUE ) #ENDIF PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - Setting player has 360 BLIMP.") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] Setting player has 360 BLIMP.") #ENDIF SET_BIT(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_HAS_BLIMP)) IF NOT bSPCheck SET_MP_INT_PLAYER_STAT(MPPLY_PLAT_UP_LB_CHECK,iChecksStatus) ENDIF ELSE PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for 360 BLIMP. (C)") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for 360 BLIMP. (C)") #ENDIF ENDIF ELSE PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for 360 BLIMP. (B)") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for 360 BLIMP. (B)") #ENDIF ENDIF SET_BIT(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_XBOX360_BLIMP)) LEADERBOARDS2_READ_GET_ROW_DATA_END( ) ELSE PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for 360 BLIMP. (A)") PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - iPlatformUpdateLBData.bSuccessful = ", iPlatformUpdateLBData.bSuccessful) PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) = ", LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)) #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for 360 BLIMP. (A)") PRINTLN_FINAL("[LASTGEN][SE-CE] iPlatformUpdateLBData.bSuccessful = ", iPlatformUpdateLBData.bSuccessful) PRINTLN_FINAL("[LASTGEN][SE-CE] LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) = ", LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)) #ENDIF ENDIF iPlatformUpdateLBData.bSuccessful = FALSE iPlatformUpdateLBData.iTotalStage = 4 END_LEADERBOARD_READ(iPlatformUpdateLBData.iReadStage,iPlatformUpdateLBData.bSuccessful,lbReadData) ENDIF ELSE PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - Already run check for 360 BLIMP. Moving to next check.") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] Already run check for 360 BLIMP. Moving to next check.") #ENDIF iPlatformUpdateLBData.bSuccessful = FALSE iPlatformUpdateLBData.iTotalStage = 4 ENDIF BREAK CASE 4 gamerName = g_struct_Save_transfer_data_XBOX360.m_gamerHandle platform = ("xbox360") lbReadData.m_GroupSelector.m_NumGroups = 1 lbReadData.m_GroupSelector.m_Group[0].m_Category = "ProductId" lbReadData.m_GroupSelector.m_Group[0].m_Id = "collectors_ed" #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] ------- Leaderboard Query -------") PRINTLN_FINAL("[LASTGEN][SE-CE] GamerHandle: ", gamerName) PRINTLN_FINAL("[LASTGEN][SE-CE] Platform: ", platform) PRINTLN_FINAL("[LASTGEN][SE-CE] Id: ", lbReadData.m_GroupSelector.m_Group[0].m_Id) PRINTLN_FINAL("[LASTGEN][SE-CE] Category: ", lbReadData.m_GroupSelector.m_Group[0].m_Category) PRINTLN_FINAL("[LASTGEN][SE-CE] NumbeOfGroups: ", lbReadData.m_GroupSelector.m_NumGroups) PRINTLN_FINAL("[LASTGEN][SE-CE] ---------------------------------") #ENDIF CLEAR_BIT(g_iPlayerHasLastGenSpecialContentBitset, BIT_LAST_GEN_SPECIAL_CONTENT_360_COLLECTORS) IF NOT IS_BIT_SET(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_XBOX360_COLLECT)) IF START_SC_LEADERBOARD_READ_BY_PLATFORM(iPlatformUpdateLBData.iReadStage,iPlatformUpdateLBData.bSuccessful,lbReadData, gamerName,platform) #IF IS_DEBUG_BUILD println("RUN_PLATFORM_UPGRADE_LB_CHECKS LEADERBOARD ID = ", lbReadData.m_LeaderboardId) #ENDIF FILL_READ_INFO_STRUCT(readInfo,lbReadData) IF iPlatformUpdateLBData.bSuccessful AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) IF readInfo.m_ReturnedRows > 0 LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData) IF LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0) > 0 println("START_SC_LEADERBOARD_READ_BY_PLATFORM: Row: ", 0, " Column: ",0) #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES("RUN_PLATFORM_UPGRADE_LB_CHECKS","Current Run",0,0, LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0),0.0,TRUE ) #ENDIF PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - Setting player has 360 COLLECTORS.") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] Setting player has 360 COLLECTORS.") #ENDIF SET_BIT(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_HAS_COLLECT)) SET_BIT(g_iPlayerHasLastGenSpecialContentBitset, BIT_LAST_GEN_SPECIAL_CONTENT_360_COLLECTORS) IF NOT bSPCheck SET_MP_INT_PLAYER_STAT(MPPLY_PLAT_UP_LB_CHECK,iChecksStatus) ELSE PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - Setting player has 360 COLLECTORS.") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] Setting player has 360 COLLECTORS.") #ENDIF IF ARE_PROFILE_SETTINGS_VALID() CPRINTLN(DEBUG_LASTGEN, " Updated profile settings.") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] Updated profile settings.") #ENDIF SET_HAS_SPECIALEDITION_CONTENT(g_iPlayerHasLastGenSpecialContentBitset) ENDIF ENDIF ELSE PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for 360 COLLECTORS. (C)") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for 360 COLLECTORS. (C)") #ENDIF ENDIF ELSE PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for 360 COLLECTORS. (B)") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for 360 COLLECTORS. (B)") #ENDIF ENDIF SET_BIT(g_iPlayerHasLastGenSpecialContentBitset, BIT_LAST_GEN_SPECIAL_CONTENT_STAT_STORED_COLLECTOR) STAT_SET_INT(SP_UNLOCK_EXCLUS_CONTENT, g_iPlayerHasLastGenSpecialContentBitset) CPRINTLN(DEBUG_LASTGEN, "[LASTGEN][SE-CE] 360 STAT_STORED_COLLECTOR Set g_iPlayerHasLastGenSpecialContentBitset = ", g_iPlayerHasLastGenSpecialContentBitset, " " ) SET_BIT(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_XBOX360_COLLECT)) LEADERBOARDS2_READ_GET_ROW_DATA_END( ) ELSE PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for 360 COLLECTORS. (A)") PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - iPlatformUpdateLBData.bSuccessful = ", iPlatformUpdateLBData.bSuccessful) PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) = ", LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)) #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for 360 COLLECTORS. (A)") PRINTLN_FINAL("[LASTGEN][SE-CE] iPlatformUpdateLBData.bSuccessful = ", iPlatformUpdateLBData.bSuccessful) PRINTLN_FINAL("[LASTGEN][SE-CE] LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) = ", LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)) #ENDIF ENDIF iPlatformUpdateLBData.bSuccessful = FALSE iPlatformUpdateLBData.iTotalStage = 5 END_LEADERBOARD_READ(iPlatformUpdateLBData.iReadStage,iPlatformUpdateLBData.bSuccessful,lbReadData) ENDIF ELSE iPlatformUpdateLBData.bSuccessful = FALSE iPlatformUpdateLBData.iTotalStage = 5 println("RUN_PLATFORM_UPGRADE_LB_CHECKS -- already checked blimp moving to stage 5 ") ENDIF BREAK CASE 5 gamerName = g_struct_Save_transfer_data_XBOX360.m_gamerHandle platform = ("xbox360") lbReadData.m_GroupSelector.m_NumGroups = 1 lbReadData.m_GroupSelector.m_Group[0].m_Category = "ProductId" lbReadData.m_GroupSelector.m_Group[0].m_Id = "special_ed" #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] ------- Leaderboard Query -------") PRINTLN_FINAL("[LASTGEN][SE-CE] GamerHandle: ", gamerName) PRINTLN_FINAL("[LASTGEN][SE-CE] Platform: ", platform) PRINTLN_FINAL("[LASTGEN][SE-CE] Id: ", lbReadData.m_GroupSelector.m_Group[0].m_Id) PRINTLN_FINAL("[LASTGEN][SE-CE] Category: ", lbReadData.m_GroupSelector.m_Group[0].m_Category) PRINTLN_FINAL("[LASTGEN][SE-CE] NumbeOfGroups: ", lbReadData.m_GroupSelector.m_NumGroups) PRINTLN_FINAL("[LASTGEN][SE-CE] ---------------------------------") #ENDIF CLEAR_BIT(g_iPlayerHasLastGenSpecialContentBitset, BIT_LAST_GEN_SPECIAL_CONTENT_360_SPECIAL) IF NOT IS_BIT_SET(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_XBOX360_SPECIAL)) IF START_SC_LEADERBOARD_READ_BY_PLATFORM(iPlatformUpdateLBData.iReadStage,iPlatformUpdateLBData.bSuccessful,lbReadData, gamerName,platform) #IF IS_DEBUG_BUILD println("RUN_PLATFORM_UPGRADE_LB_CHECKS LEADERBOARD ID = ", lbReadData.m_LeaderboardId) #ENDIF FILL_READ_INFO_STRUCT(readInfo,lbReadData) IF iPlatformUpdateLBData.bSuccessful AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) IF readInfo.m_ReturnedRows > 0 LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData) IF LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0) > 0 println("START_SC_LEADERBOARD_READ_BY_PLATFORM: Row: ", 0, " Column: ",0) #IF IS_DEBUG_BUILD DEBUG_PRINT_SC_LB_RETURNED_VALUES("RUN_PLATFORM_UPGRADE_LB_CHECKS","Current Run",0,0, LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0),0.0,TRUE ) #ENDIF PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - Setting player has 360 SPECIAL.") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] Setting player has 360 SPECIAL.") #ENDIF SET_BIT(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_HAS_SPECIAL)) SET_BIT(g_iPlayerHasLastGenSpecialContentBitset, BIT_LAST_GEN_SPECIAL_CONTENT_360_SPECIAL) IF NOT bSPCheck SET_MP_INT_PLAYER_STAT(MPPLY_PLAT_UP_LB_CHECK,iChecksStatus) ELSE CPRINTLN(DEBUG_LASTGEN, " Flagging that player's last gen account had 360 SPECIAL in SP stat.") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] Flagging that player's last gen account had 360 SPECIAL in SP stat.") #ENDIF IF ARE_PROFILE_SETTINGS_VALID() CPRINTLN(DEBUG_LASTGEN, " Updated profile settings.") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] Updated profile settings.") #ENDIF SET_HAS_SPECIALEDITION_CONTENT(g_iPlayerHasLastGenSpecialContentBitset) ENDIF ENDIF ELSE PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for 360 SPECIAL. (C)") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for 360 SPECIAL. (C)") #ENDIF ENDIF ELSE PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for 360 SPECIAL. (B)") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for 360 SPECIAL. (B)") #ENDIF ENDIF SET_BIT(g_iPlayerHasLastGenSpecialContentBitset,BIT_LAST_GEN_SPECIAL_CONTENT_STAT_STORED_SPECIAL) STAT_SET_INT(SP_UNLOCK_EXCLUS_CONTENT, g_iPlayerHasLastGenSpecialContentBitset) CPRINTLN(DEBUG_LASTGEN, "[LASTGEN][SE-CE] 360 STAT_STORED_SPECIAL Set g_iPlayerHasLastGenSpecialContentBitset = ", g_iPlayerHasLastGenSpecialContentBitset, " " ) SET_BIT(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_XBOX360_SPECIAL)) LEADERBOARDS2_READ_GET_ROW_DATA_END( ) ELSE PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for 360 SPECIAL. (A)") PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - iPlatformUpdateLBData.bSuccessful = ", iPlatformUpdateLBData.bSuccessful) PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) = ", LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)) #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for 360 SPECIAL. (A)") PRINTLN_FINAL("[LASTGEN][SE-CE] iPlatformUpdateLBData.bSuccessful = ", iPlatformUpdateLBData.bSuccessful) PRINTLN_FINAL("[LASTGEN][SE-CE] LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) = ", LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)) #ENDIF ENDIF iPlatformUpdateLBData.bSuccessful = FALSE iPlatformUpdateLBData.iTotalStage = 6 END_LEADERBOARD_READ(iPlatformUpdateLBData.iReadStage,iPlatformUpdateLBData.bSuccessful,lbReadData) IF NOT bSPCheck REQUEST_SAVE(SSR_REASON_LEADERBOARD) ENDIF ENDIF ELSE iPlatformUpdateLBData.bSuccessful = FALSE iPlatformUpdateLBData.iTotalStage = 6 IF NOT bSPCheck PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - Requesting save in final stage.") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] Requesting save in final stage.") #ENDIF REQUEST_SAVE(SSR_REASON_LEADERBOARD) ENDIF ENDIF BREAK CASE 6 PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - Check ran to completion. Finished.") #IF USE_FINAL_PRINTS PRINTLN_FINAL("[LASTGEN][SE-CE] Check ran to completion. Finished.") #ENDIF RETURN TRUE BREAK ENDSWITCH RETURN FALSE ENDFUNC #IF FEATURE_TUNER STRUCT CAR_MEET_LEADERBOARD_WRITE_DATA INT iFMMCType INT iSubType INT iBestTime //fastest lap/best time INT iWins //# of wins (generally will be 1 if you won, 0 if you lost) INT iLoses //# of loses (generally will be 0 if you won, 1 if you lost) INT iMatches //# of matches (generally will be 1) INT iVehModel //Int value of the vehicle model used BOOL bCustomVeh //Was custom or stock vehicle used TRUE = custom INT iClubXP //Club XP after event TEXT_LABEL_31 tlOverwriteUGCID //USED FOR TESTING/OVERWRITING IF NEEDED ONLY ENDSTRUCT /// PURPOSE: /// Write to the car meet membership leaderboard /// PARAMS: PROC WRITE_TO_CAR_MEET_LEADERBOARDS(CAR_MEET_LEADERBOARD_WRITE_DATA &data #IF IS_DEBUG_BUILD, BOOL bBypassXPSafetyCheck = FALSE #endif ) //EXIT //exitng LBS dont exist yet. TEXT_LABEL_31 categoryNames[2] TEXT_LABEL_23 uniqueIdentifiers[2] INT iNumCategories IF g_bAllowWriteToCarMeetMembershipLB //so we can disable this in BG script if needed #IF IS_DEBUG_BUILD IF NOT bBypassXPSafetyCheck #ENDIF IF data.iClubXP < GET_PLAYERS_CAR_CLUB_REP(PLAYER_ID()) PRINTLN("WRITE_TO_CAR_MEET_LEADERBOARDS: INVALID XP USED!! See Conor stored XP: ",GET_PLAYERS_CAR_CLUB_REP(PLAYER_ID())," written XP: ",data.iClubXP) SCRIPT_ASSERT("WRITE_TO_CAR_MEET_LEADERBOARDS: INVALID XP USED!! See Conor") ELSE PRINTLN("WRITE_TO_CAR_MEET_LEADERBOARDS: stored XP: ",GET_PLAYERS_CAR_CLUB_REP(PLAYER_ID())," written XP: ",data.iClubXP) ENDIF #IF IS_DEBUG_BUILD ENDIF #ENDIF categoryNames[0] = "" uniqueIdentifiers[0] = "" IF data.iFMMCType = FMMC_TYPE_SANDBOX_ACTIVITY AND data.iSubType = ENUM_TO_INT(SAS_TT_LOCATION_1) //Time trials don't "win" or "lose" data.iWins = 0 data.iLoses = 0 data.iMatches = 0 ENDIF IF INIT_LEADERBOARD_WRITE(LEADERBOARD_FREEMODE_TUNER_CAR_CLUB,uniqueIdentifiers,categoryNames,0) //LEADERBOARD_FREEMODE_TUNER_CAR_CLUB PRINTLN("WRITE_TO_CAR_MEET_MEMBERSHIP_LEADERBOARD Writing to SC Leaderboard for CAR MEET MEMBERSHIP") LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_SCORE, data.iClubXP, 0) PRINTLN("WRITE_TO_CAR_MEET_MEMBERSHIP_LEADERBOARD XP value = ", data.iClubXP) LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_NUM_WINS, data.iWins, 0) PRINTLN("WRITE_TO_CAR_MEET_MEMBERSHIP_LEADERBOARD wins incremented by ",data.iWins) LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_NUM_MATCHES_LOST, data.iLoses, 0) PRINTLN("WRITE_TO_CAR_MEET_MEMBERSHIP_LEADERBOARD loses incremented by ",data.iLoses) LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_NUM_MATCHES, data.iMatches, 0) PRINTLN("WRITE_TO_CAR_MEET_MEMBERSHIP_LEADERBOARD matches incremented by ", data.iMatches) ENDIF ENDIF IF g_bAllowWriteToTunerRaceLB AND data.iFMMCType != 0 categoryNames[0] = "GameType" SWITCH data.iFMMCType CASE FMMC_TYPE_SANDBOX_ACTIVITY iNumCategories = 1 uniqueIdentifiers[0] = "TUNER_SANDB_SVAR" IF data.iSubType = ENUM_TO_INT(SAS_HH_LOCATION_1) OR data.iSubType = ENUM_TO_INT(SAS_HH_LOCATION_2) uniqueIdentifiers[0] += ENUM_TO_INT(SAS_HH_LOCATION_1) ELSE uniqueIdentifiers[0] += data.iSubType ENDIF PRINTLN("WRITE_TO_CAR_MEET_MEMBERSHIP_LEADERBOARD Writing to SC Leaderboard for Sandbox Activity: ",uniqueIdentifiers[0]) BREAK CASE FMMC_TYPE_STREET_RACE_SERIES CASE FMMC_TYPE_PURSUIT_SERIES iNumCategories = 2 categoryNames[1] = "Mission" IF data.iFMMCType = FMMC_TYPE_STREET_RACE_SERIES uniqueIdentifiers[0] = "TUNER_SRS" ELSE uniqueIdentifiers[0] = "TUNER_PS" ENDIF IF NOT IS_STRING_NULL_OR_EMPTY(data.tlOverwriteUGCID) PRINTLN("WRITE_TO_CAR_MEET_MEMBERSHIP_LEADERBOARD: Overwriting UGC content ID to: ",data.tlOverwriteUGCID) uniqueIdentifiers[1] = data.tlOverwriteUGCID ELSE uniqueIdentifiers[1] = g_FMMC_STRUCT.tl31LoadedContentID ENDIF PRINTLN("WRITE_TO_CAR_MEET_MEMBERSHIP_LEADERBOARD Writing to SC Leaderboard for Tuner Race type: ",data.iFMMCType," content ID: ",uniqueIdentifiers[0]) BREAK ENDSWITCH IF INIT_LEADERBOARD_WRITE(LEADERBOARD_FREEMODE_TUNER_RACES,uniqueIdentifiers,categoryNames,iNumCategories) //LEADERBOARD_FREEMODE_TUNER_CAR_CLUB //TUNER_SANDB_SVAR2 LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_SCORE, -data.iBestTime, 0) PRINTLN("WRITE_TO_CAR_MEET_MEMBERSHIP_LEADERBOARD score (neg best time) = ", -data.iBestTime) LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_BEST_TIME, data.iBestTime, 0) PRINTLN("WRITE_TO_CAR_MEET_MEMBERSHIP_LEADERBOARD best time = ",data.iBestTime) LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_NUM_WINS, data.iWins, 0) PRINTLN("WRITE_TO_CAR_MEET_MEMBERSHIP_LEADERBOARD wins = ",data.iWins) LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_VEHICLE_ID, data.iVehModel, 0) PRINTLN("WRITE_TO_CAR_MEET_MEMBERSHIP_LEADERBOARD data.iVehModel = ", data.iVehModel) IF data.bCustomVeh LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_CUSTOM_VEHICLE, 1, 0) PRINTLN("WRITE_TO_CAR_MEET_MEMBERSHIP_LEADERBOARD custom vehicle ") ELSE LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_CUSTOM_VEHICLE, 0, 0) PRINTLN("WRITE_TO_CAR_MEET_MEMBERSHIP_LEADERBOARD NOT custom vehicle ") ENDIF ENDIF ENDIF ENDPROC CONST_INT CM_SCLB_BS_SETUP_READ 0 CONST_INT CM_SCLB_BS_RUNNING_LB 1 CONST_INT CM_SCLB_BS_NOT_SAFE_TO_DISPLAY 2 CONST_INT CM_SCLB_BS_STARTED_RUNNING 3 CONST_INT CM_SCLB_TRIGGER_CAREER 0 CONST_INT CM_SCLB_TRIGGER_SANDBOX 1 CONST_INT CM_SCLB_TRIGGER_SERIES 2 CONST_INT CM_SCLB_TIME_TRIAL 0 CONST_INT CM_SCLB_CHECKPOINT_DASH 1 CONST_INT CM_SCLB_HEAD_TO_HEAD1 2 //CONST_INT CM_SCLB_HEAD_TO_HEAD2 3 CONST_INT CM_SCLB_SERIES_STREET_RACES 0 CONST_INT CM_SCLB_SERIES_PURSUIT 1 STRUCT CAR_MEET_SCLB_DATA INT iBS SC_LEADERBOARD_CONTROL_STRUCT scLB_control SCALEFORM_INDEX scLB_ScaleformID[2] SCALEFORM_INSTRUCTIONAL_BUTTONS scaleformStruct INT iFMMCType INT iSubType TEXT_LABEL_31 FileName TEXT_LABEL_63 MissionName INT iTriggerType INT iCurrentSelection ENDSTRUCT FUNC BOOL IS_SAFE_TO_DISPLAY_SCLB_IN_CAR_MEET(CAR_MEET_SCLB_DATA &cmSCLBData) IF g_BG_ForceCleanupCarMeetLB RETURN FALSE ENDIF IF IS_BIT_SET(cmSCLBData.iBS,CM_SCLB_BS_NOT_SAFE_TO_DISPLAY) PRINTLN("IS_SAFE_TO_DISPLAY_SCLB_IN_CAR_MEET: FALSE cmSCLBData.iBS,CM_SCLB_BS_NOT_SAFE_TO_DISPLAY ") RETURN FALSE ENDIF IF NOT IS_SKYSWOOP_AT_GROUND() PRINTLN("IS_SAFE_TO_DISPLAY_SCLB_IN_CAR_MEET: FALSE NOT IS_SKYSWOOP_AT_GROUND() ") RETURN FALSE ENDIF IF IS_PLAYER_SWITCH_IN_PROGRESS() PRINTLN("IS_SAFE_TO_DISPLAY_SCLB_IN_CAR_MEET: FALSE IS_PLAYER_SWITCH_IN_PROGRESS") RETURN FALSE ENDIF IF IS_PAUSE_MENU_ACTIVE_EX() PRINTLN("IS_SAFE_TO_DISPLAY_SCLB_IN_CAR_MEET: FALSE IS_PAUSE_MENU_ACTIVE_EX") RETURN FALSE ENDIF //add any conditions here RETURN TRUE ENDFUNC PROC GET_CAR_MEET_SC_LEADERBOARD_UGC_DATA(INT iFMMCType,INT iArrayID,TEXT_LABEL_31 &fileName,TEXT_LABEL_63 &missionName) INT iArray INT iContentID IF iFMMCType = FMMC_TYPE_PURSUIT_SERIES iContentID = g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[ciCV2_SERIES_PURSUIT][iArrayID] ELIF iFMMCType = FMMC_TYPE_STREET_RACE_SERIES iContentID = g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[ciCV2_SERIES_STREET_RACE][iArrayID] ELSE fileName = "" missionName = "" EXIT ENDIF iArray = GET_CONTENT_ID_INDEX(iContentID) IF iArray != -1 fileName = g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iArray].tlName missionName = g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iArray].tlMissionName EXIT ENDIF ENDPROC CONST_INT CAR_MEET_SCLB_RESET_NEW_BOARD 100 PROC CLEANUP_CAR_MEET_SC_LEADERBOARD(CAR_MEET_SCLB_DATA &cmSCLBData,INT iReason = 0) PRINTLN("CLEANUP_CAR_MEET_SC_LEADERBOARD: called for iReason = ",iReason) IF iReason = CAR_MEET_SCLB_RESET_NEW_BOARD scLB_DisplayedData.bResetTriggered = TRUE CLEAR_BIT(cmSCLBData.scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS) CLEAR_BIT(cmSCLBData.scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_LOADING_MENU) CLEAR_BIT(cmSCLBData.scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU) scLB_DisplayedData.iReadFailedBS = 0 SOCIAL_CLUB_CLEAR_CONTROL_STRUCT(cmSCLBData.scLB_Control) //CLEANUP_SOCIAL_CLUB_LEADERBOARD(cmSCLBData.scLB_control,TRUE) CLEAR_BIT(cmSCLBData.iBS,CM_SCLB_BS_SETUP_READ) ELSE CLEAR_BIT(cmSCLBData.iBS, CM_SCLB_BS_RUNNING_LB) scLB_DisplayedData.bResetTriggered = TRUE IF IS_BIT_SET(cmSCLBData.scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU) OR IS_BIT_SET(cmSCLBData.scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_LOADING_MENU) IF HAS_SCALEFORM_MOVIE_LOADED(cmSCLBData.scLB_ScaleformID[0]) SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(cmSCLBData.scLB_ScaleformID[0]) ENDIF IF HAS_SCALEFORM_MOVIE_LOADED(cmSCLBData.scLB_ScaleformID[1]) BEGIN_SCALEFORM_MOVIE_METHOD(cmSCLBData.scLB_ScaleformID[1], "CLEAR_ALL") END_SCALEFORM_MOVIE_METHOD() ENDIF REFRESH_SCALEFORM_INSTRUCTIONAL_BUTTONS(cmSCLBData.scaleformStruct) ENDIF CLEANUP_SOCIAL_CLUB_LEADERBOARD(cmSCLBData.scLB_control,TRUE) cmSCLBData.iBS = 0 ENDIF ENDPROC PROC RUN_CAR_MEET_SC_LEADERBOARD(CAR_MEET_SCLB_DATA &cmSCLBData) IF IS_BIT_SET(cmSCLBData.iBS, CM_SCLB_BS_RUNNING_LB) IF IS_SAFE_TO_DISPLAY_SCLB_IN_CAR_MEET(cmSCLBData) // Do any leaderboard per-frame processing IF NOT IS_BIT_SET(cmSCLBData.iBS,CM_SCLB_BS_SETUP_READ) SWITCH cmSCLBData.iTriggerType CASE CM_SCLB_TRIGGER_CAREER cmSCLBData.iFMMCType = SCLB_TYPE_CAR_MEET_MEMBERSHIP BREAK CASE CM_SCLB_TRIGGER_SANDBOX cmSCLBData.iFMMCType = FMMC_TYPE_SANDBOX_ACTIVITY SWITCH cmSCLBData.iCurrentSelection CASE CM_SCLB_TIME_TRIAL cmSCLBData.iSubType = ENUM_TO_INT(SAS_TT_LOCATION_1) BREAK CASE CM_SCLB_CHECKPOINT_DASH cmSCLBData.iSubType = ENUM_TO_INT(SAS_CD_LOCATION_1) BREAK CASE CM_SCLB_HEAD_TO_HEAD1 cmSCLBData.iSubType = ENUM_TO_INT(SAS_HH_LOCATION_1) //just one? //SAS_HH_LOCATION_2 BREAK // CASE CM_SCLB_HEAD_TO_HEAD2 // cmSCLBData.iSubType = ENUM_TO_INT(SAS_HH_LOCATION_2) // //SAS_HH_LOCATION_2 // BREAK ENDSWITCH BREAK CASE CM_SCLB_TRIGGER_SERIES SWITCH cmSCLBData.iCurrentSelection CASE CM_SCLB_SERIES_STREET_RACES cmSCLBData.iFMMCType = FMMC_TYPE_STREET_RACE_SERIES BREAK CASE CM_SCLB_SERIES_PURSUIT cmSCLBData.iFMMCType = FMMC_TYPE_PURSUIT_SERIES BREAK ENDSWITCH BREAK ENDSWITCH GET_CAR_MEET_SC_LEADERBOARD_UGC_DATA(cmSCLBData.iFMMCType,cmSCLBData.iSubType,cmSCLBData.FileName,cmSCLBData.MissionName) PRINTLN("RUN_CAR_MEET_SC_LEADERBOARD: cmSCLBData.iFMMCType = ",cmSCLBData.iFMMCType," cmSCLBData.iSubType = ",cmSCLBData.iSubType, " cmSCLBData.FileName = ",cmSCLBData.FileName, " cmSCLBData.MissionName = ",cmSCLBData.MissionName) SETUP_SOCIAL_CLUB_LEADERBOARD_READ_DATA(cmSCLBData.scLB_control, cmSCLBData.iFMMCType,cmSCLBData.FileName,cmSCLBData.MissionName,cmSCLBData.iSubType) SET_BIT(cmSCLBData.iBS,CM_SCLB_BS_SETUP_READ) DRAW_SOCIAL_CLUB_LEADERBOARD(cmSCLBData.scLB_control,cmSCLBData.scLB_ScaleformID) ELSE DRAW_SOCIAL_CLUB_LEADERBOARD(cmSCLBData.scLB_control,cmSCLBData.scLB_ScaleformID) SPRITE_PLACEMENT ScaleformSprite ScaleformSprite = GET_SCALEFORM_INSTRUCTIONAL_BUTTON_POSITION() IF NOT IS_BIT_SET(cmSCLBData.scLB_control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS) REFRESH_SCALEFORM_INSTRUCTIONAL_BUTTONS(cmSCLBData.scaleformStruct) SET_BIT(cmSCLBData.scLB_control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS) IF IS_BIT_SET(cmSCLBData.scLB_control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU) AND scLB_DisplayedData.iSectionEntries[0] > 0 AND cmSCLBData.scLB_control.navigation.iCurrentVertSel >= 0 ADD_SCALEFORM_INSTRUCTIONAL_INPUT(FRONTEND_CONTROL, INPUT_FRONTEND_SELECT,"SCLB_PROFILE",cmSCLBData.scaleformStruct, TRUE) ENDIF ADD_SCALEFORM_INSTRUCTIONAL_INPUT(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL,"BB_BACK",cmSCLBData.scaleformStruct, TRUE) IF cmSCLBData.iTriggerType = CM_SCLB_TRIGGER_SANDBOX SWITCH cmSCLBData.iCurrentSelection CASE CM_SCLB_TIME_TRIAL ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_X),"SCLB_T_CD",cmSCLBData.scaleformStruct) BREAK CASE CM_SCLB_CHECKPOINT_DASH ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_X),"SCLB_T_HH1",cmSCLBData.scaleformStruct) BREAK CASE CM_SCLB_HEAD_TO_HEAD1 ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_X),"SCLB_T_TT",cmSCLBData.scaleformStruct) BREAK ENDSWITCH ELIF cmSCLBData.iTriggerType = CM_SCLB_TRIGGER_SERIES ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_X),"SCLB_B_NEXT",cmSCLBData.scaleformStruct) SWITCH cmSCLBData.iCurrentSelection CASE CM_SCLB_SERIES_STREET_RACES ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"SCLB_T_PURSA",cmSCLBData.scaleformStruct) BREAK CASE CM_SCLB_SERIES_PURSUIT ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"SCLB_T_SRSA",cmSCLBData.scaleformStruct) BREAK ENDSWITCH ENDIF ENDIF RUN_SCALEFORM_INSTRUCTIONAL_BUTTONS(cmSCLBData.scLB_ScaleformID[1], ScaleformSprite, cmSCLBData.scaleformStruct) ENDIF // IF scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_MP_SRANGE) // SWITCH iState // CASE 0 // ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_X),"FMMC_COR_SCLB7a",scaleformStruct) // BREAK // CASE 1 // ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_X),"FMMC_COR_SCLB7b",scaleformStruct) // BREAK // CASE 2 // ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_X),"FMMC_COR_SCLB7c",scaleformStruct) // BREAK // ENDSWITCH // SWITCH iRangeWeap // CASE 0 // ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"HUD_MG_SMG",scaleformStruct) //off by one as this is for NEXT selection not current // BREAK // CASE 1 // ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"HUD_MG_ASSAULT",scaleformStruct) //off by one as this is for NEXT selection not current // BREAK // CASE 2 // ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"HUD_MG_SHOTGUN",scaleformStruct) //off by one as this is for NEXT selection not current // BREAK // CASE 3 // ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"HUD_MG_LMG",scaleformStruct) //off by one as this is for NEXT selection not current // BREAK // CASE 4 // ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"HUD_MG_HEAVY",scaleformStruct) //off by one as this is for NEXT selection not current // BREAK // CASE 5 // ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"HUD_MG_PISTOL",scaleformStruct) //off by one as this is for NEXT selection not current // BREAK // ENDSWiTCH // ENDIF IF cmSCLBData.iTriggerType = CM_SCLB_TRIGGER_SANDBOX IF IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL, INPUT_FRONTEND_X) OR IS_DISABLED_CONTROL_JUST_RELEASED(FRONTEND_CONTROL, INPUT_FRONTEND_X) cmSCLBData.iCurrentSelection++ IF cmSCLBData.iCurrentSelection > CM_SCLB_HEAD_TO_HEAD1 cmSCLBData.iCurrentSelection = CM_SCLB_TIME_TRIAL ENDIF CLEANUP_CAR_MEET_SC_LEADERBOARD(cmSCLBData,2)//,CAR_MEET_SCLB_RESET_NEW_BOARD) ENDIF ELIF cmSCLBData.iTriggerType = CM_SCLB_TRIGGER_SERIES IF IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL, INPUT_FRONTEND_X) OR IS_DISABLED_CONTROL_JUST_RELEASED(FRONTEND_CONTROL, INPUT_FRONTEND_X) cmSCLBData.iSubType++ IF cmSCLBData.iCurrentSelection = CM_SCLB_SERIES_STREET_RACES IF cmSCLBData.iSubType > g_sMPTunables.iFmCoronaPlaylistProffesionalLength[ciCV2_SERIES_STREET_RACE] cmSCLBData.iSubType = 0 ENDIF ELIF cmSCLBData.iCurrentSelection = CM_SCLB_SERIES_PURSUIT IF cmSCLBData.iSubType > g_sMPTunables.iFmCoronaPlaylistProffesionalLength[ciCV2_SERIES_PURSUIT] cmSCLBData.iSubType = 0 ENDIF ENDIF CLEANUP_CAR_MEET_SC_LEADERBOARD(cmSCLBData,3)//,CAR_MEET_SCLB_RESET_NEW_BOARD) ENDIF IF IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL, INPUT_FRONTEND_Y) OR IS_DISABLED_CONTROL_JUST_RELEASED(FRONTEND_CONTROL, INPUT_FRONTEND_Y) cmSCLBData.iCurrentSelection++ IF cmSCLBData.iCurrentSelection > CM_SCLB_SERIES_PURSUIT cmSCLBData.iCurrentSelection = CM_SCLB_SERIES_STREET_RACES ENDIF cmSCLBData.iSubType = 0 CLEANUP_CAR_MEET_SC_LEADERBOARD(cmSCLBData,4)//,CAR_MEET_SCLB_RESET_NEW_BOARD) ENDIF ENDIF // XBOX B to go back to wall control IF IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL) OR IS_DISABLED_CONTROL_JUST_RELEASED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL) CLEANUP_CAR_MEET_SC_LEADERBOARD(cmSCLBData,0) ENDIF ELSE CLEANUP_CAR_MEET_SC_LEADERBOARD(cmSCLBData,1) ENDIF ENDIF ENDPROC #ENDIF // //EOF