USING "minigame_uiinputs.sch" USING "hud_drawing.sch" USING "screens_header.sch" USING "UIUtil.sch" USING "script_oddjob_funcs.sch" USING "script_usecontext.sch" USING "common_races.sch" USING "RC_Helper_Functions.sch" USING "screen_placements.sch" USING "screen_placements_export.sch" USING "socialclub_leaderboard.sch" USING "net_leaderboards.sch" // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // // SCRIPT NAME : Race_Results.sch // AUTHOR : Joe Binks // DESCRIPTION : Deals with the end of race results // // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** ENUM CR_FINISH_CUT_STATE CR_FINISH_INIT = 0, CR_FINISH_CREATE_CAM, CR_FINISH_WAIT_FOR_RESULTS, CR_FINISH_IDLE ENDENUM /*ENUM OFFROAD_SCREEN_TEXT OFFROAD_SC_MENU_TITLE, OFFROAD_SC_STATS_TITLE, OFFROAD_SC_STAT1_TXT, OFFROAD_SC_STAT2_TXT, OFFROAD_SC_STAT3_TXT, OFFROAD_SC_STAT4_TXT, OFFROAD_SC_STAT5_TXT, OFFROAD_SC_STAT6_TXT, OFFROAD_SC_STAT7_TXT, OFFROAD_SC_STAT8_TXT, OFFROAD_SC_STAT1VAL_TXT, OFFROAD_SC_STAT2VAL_TXT, OFFROAD_SC_STAT3VAL_TXT, OFFROAD_SC_STAT4VAL_TXT, OFFROAD_SC_STAT5VAL_TXT, OFFROAD_SC_STAT6VAL_TXT, OFFROAD_SC_STAT7VAL_TXT, OFFROAD_SC_BRONZEGOAL_TXT, OFFROAD_SC_SILVERGOAL_TXT, OFFROAD_SC_GOLDGOAL_TXT ENDENUM ENUM OFFROAD_SCREEN_SPRITE OFFROAD_SC_BACKGROUND, OFFROAD_SC_RACE_IMG, OFFROAD_SC_MEDAL_AWARD_IMG, OFFROAD_SC_BRONZE_IMG, OFFROAD_SC_SILVER_IMG, OFFROAD_SC_GOLD_IMG ENDENUM ENUM OFFROAD_SCREEN_RECT OFFROAD_SC_STATS_HEADER_BG, OFFROAD_SC_STATS_EDGE, OFFROAD_SC_RACE_IMG_BG, OFFROAD_SC_STAT1_BG, OFFROAD_SC_STAT2_BG, OFFROAD_SC_STAT3_BG, OFFROAD_SC_STAT4_BG, OFFROAD_SC_STAT5_BG, OFFROAD_SC_STAT6_BG, OFFROAD_SC_BRONZE_BG, OFFROAD_SC_SILVER_BG, OFFROAD_SC_GOLD_BG, OFFROAD_SC_BRONZE_OVERLAY, OFFROAD_SC_SILVER_OVERLAY, OFFROAD_SC_GOLD_OVERLAY ENDENUM*/ STRUCT RACE_RESULTS_STRUCT CR_FINISH_CUT_STATE eCRCutFinish = CR_FINISH_INIT INT CAM_INTERP_TIME = 4200//4500 INT PULSE_TIME = 3600//3000 INT iDisplayResultsTimer = 0 INT iPulseTimer = 0 CAMERA_INDEX ciCityRaceFinishCam[8] //CAMERA_INDEX ciCityRaceFinishCamTwo[2] SIMPLE_USE_CONTEXT ucInstructions VECTOR vCamPos[8] VECTOR vCamRot[8] FLOAT fFOV ENDSTRUCT /*CR_FINISH_CUT_STATE eCRCutFinish = CR_FINISH_INIT CONST_INT CAM_INTERP_TIME 3000 INT iDisplayResultsTimer = 0 CAMERA_INDEX ciCityRaceFinishCam SIMPLE_USE_CONTEXT ucInstructions*/ SC_LEADERBOARD_CONTROL_STRUCT sclbControl // Variables for getting best times from the leaderboards INT iReadStage INT iLoadStage BOOL bSuccessful INT iRaceOnlineID INT iGlobalBest = -1 INT iPersonalBest = -1 BOOL bBestTimesReady = FALSE BOOL bAllowLeaderboard = TRUE // =========================== // FUNCTIONS // =========================== SPRITE_PLACEMENT TempScoreCard PROC TEMP_SCORE_CARD_INIT () PIXEL_POSITION_AND_SIZE_SPRITE(TempScoreCard, 512, 69, 512, 520, TRUE) SPRITE_COLOR(TempScoreCard, 255,255,255,64) ENDPROC FUNC FLOAT HT_HUD_FORMAT_FLOAT_SCORE(FLOAT thisFloat) IF thisFloat < 0 RETURN 0.0 ENDIF //if the formatting is fine we'll get here RETURN thisFloat ENDFUNC PROC SET_FINISH_CAM_POSITIONS(RACE_RESULTS_STRUCT& sRaceResults, RACE_TRACK_ID trackID) MODEL_NAMES mnCar IF IS_VEHICLE_OK(sPlayerVehicle.vehPlayerVehicle) mnCar = GET_ENTITY_MODEL(sPlayerVehicle.vehPlayerVehicle) ENDIF SWITCH trackID CASE STREET_RACE_01 sRaceResults.vCamPos[0] = <<-165.999557,-1593.640259,36.050823>> sRaceResults.vCamRot[0] = <<-1.140186,-0.000000,-18.934132>> sRaceResults.vCamPos[1] = <<-166.138535,-1593.817627,36.055077>> sRaceResults.vCamRot[1] = <<-1.140186,0.000000,-18.478167>> sRaceResults.vCamPos[2] = <<-166.138535,-1593.817627,46.055077>>//<<-165.209152,-1595.171509,46.560944>> sRaceResults.vCamRot[2] = <<52.6710, 0.0000, -18.5600>>//<<30.3861, -0.0000, -18.5600>>//<<-1.140186,0.000000,-18.478167>>//<<9.106841,-0.000000,-13.721704>> sRaceResults.vCamPos[3] = <<-167.659088,-1578.869995,45.294144>> sRaceResults.vCamRot[3] = <<52.6710, -0.1338, 10.8626>>//<<26.4972, -0.1338, 10.8626>>//<<-2.670335,-0.133780,10.862582>> IF mnCar = INT_TO_ENUM(MODEL_NAMES, GET_HASH_KEY("DUBSTA3")) sRaceResults.vCamPos[4] = <<-167.5634, -1578.0896, 36.1500>> sRaceResults.vCamRot[4] = <<-5.9218, -0.0947, 21.8453>> sRaceResults.vCamPos[5] = <<-166.1911, -1577.5270, 36.0991>> sRaceResults.vCamRot[5] = <<-7.2671, -0.0947, 44.6906>> ELIF mnCar = INT_TO_ENUM(MODEL_NAMES, GET_HASH_KEY("MONSTER")) sRaceResults.vCamPos[4] = <<-172.7921, -1581.9796, 36.2618>> sRaceResults.vCamRot[4] = <<-4.0569, -0.1415, -22.1047>> sRaceResults.vCamPos[5] = <<-172.3110, -1582.1637, 36.2613>> sRaceResults.vCamRot[5] = <<-4.0569, -0.1415, -19.9102>> ELSE sRaceResults.vCamPos[4] = <<-167.659088,-1578.869995,35.294144>> sRaceResults.vCamRot[4] = <<-2.670335,-0.133780,10.862582>> sRaceResults.vCamPos[5] = <<-167.488312,-1578.681396,35.287971>> sRaceResults.vCamRot[5] = <<-2.670335,-0.133781,12.423575>> ENDIF IF mnCar = INT_TO_ENUM(MODEL_NAMES, GET_HASH_KEY("MONSTER")) sRaceResults.vCamPos[6] = <<-166.3731, -1571.6453, 37.2137>> sRaceResults.vCamRot[6] = <<-10.5428, -0.1337, 132.3746>> sRaceResults.vCamPos[7] = <<-164.2483, -1569.8260, 37.7305>> sRaceResults.vCamRot[7] = <<-10.5428, -0.1337, 142.4265>> ELSE sRaceResults.vCamPos[6] = <<-165.813171,-1572.277588,35.576958>> sRaceResults.vCamRot[6] = <<-6.502827,-0.133783,134.851166>> sRaceResults.vCamPos[7] = <<-165.657867,-1571.710205,35.635654>> sRaceResults.vCamRot[7] = <<-6.502827,-0.133782,138.748703>> ENDIF sRaceResults.fFOV = 25 BREAK CASE STREET_RACE_02 sRaceResults.vCamPos[0] = <<345.9444, 326.0113, 104.2977>>//<<357.2692, 322.7362, 103.9649>> sRaceResults.vCamRot[0] = <<-2.2338, 0.0066, -123.2325>>//<<-3.6091, 0.0066, -125.5736>> sRaceResults.vCamPos[1] = <<345.6188, 325.8368, 104.3046>>//<<355.0306, 323.6436, 104.1131>> sRaceResults.vCamRot[1] = <<-2.2338, 0.0066, -125.4908>>//<<-2.7873, 0.0066, -136.0524>> sRaceResults.vCamPos[2] = <<345.6188, 325.8368, 114.3046>>//<<351.9950, 316.2025, 115.5018>>//<<355.5760, 321.7519, 111.3383>> sRaceResults.vCamRot[2] = <<61.4186, 0.0066, -125.2516>>//<<26.8785, 0.0066, -125.2516>>//<<-2.2338, 0.0066, -125.4908>>//<<11.0052, 0.0066, -115.5175>>//<<6.2304, 0.0066, -124.6168>> sRaceResults.vCamPos[3] = <<349.7675, 318.5139, 114.5701>> sRaceResults.vCamRot[3] = <<61.4186, 0.0683, -51.2922>>//<<22.4462, 0.0683, -51.2922>>//<<-6.4077, 0.0685, -51.2659>> IF mnCar = INT_TO_ENUM(MODEL_NAMES, GET_HASH_KEY("DUBSTA3")) sRaceResults.vCamPos[4] = <<350.6226, 319.2393, 105.5075>> sRaceResults.vCamRot[4] = <<-14.1152, 0.0341, -34.8046>> sRaceResults.vCamPos[5] = <<352.4439, 318.4305, 105.5037>> sRaceResults.vCamRot[5] = <<-14.1153, 0.0341, -13.9017>> ELIF mnCar = INT_TO_ENUM(MODEL_NAMES, GET_HASH_KEY("MONSTER")) sRaceResults.vCamPos[4] = <<345.9572, 322.6875, 105.8543>> sRaceResults.vCamRot[4] = <<-10.7212, 0.0790, -88.9707>> sRaceResults.vCamPos[5] = <<346.2430, 322.2848, 105.8016>> sRaceResults.vCamRot[5] = <<-9.6145, 0.0790, -87.2469>> ELSE sRaceResults.vCamPos[4] = <<349.7675, 318.5139, 104.5701>> sRaceResults.vCamRot[4] = <<-6.4077, 0.0685, -51.2659>> sRaceResults.vCamPos[5] = <<349.9963, 318.3574, 104.5610>> sRaceResults.vCamRot[5] = <<-6.4077, 0.0685, -46.9079>> ENDIF IF mnCar = INT_TO_ENUM(MODEL_NAMES, GET_HASH_KEY("MONSTER")) sRaceResults.vCamPos[6] = <<357.8919, 321.2549, 105.4607>> sRaceResults.vCamRot[6] = <<-3.2542, 0.0014, 80.7604>> sRaceResults.vCamPos[7] = <<359.4669, 319.8764, 105.6448>> sRaceResults.vCamRot[7] = <<-3.2542, 0.0014, 80.7604>> ELSE sRaceResults.vCamPos[6] = <<356.9244, 319.9118, 104.1889>> sRaceResults.vCamRot[6] = <<-3.2411, 0.0035, 62.3779>> sRaceResults.vCamPos[7] = <<357.7713, 320.1022, 104.2291>> sRaceResults.vCamRot[7] = <<-3.2411, 0.0035, 74.7132>> ENDIF sRaceResults.fFOV = 25 BREAK CASE STREET_RACE_04 sRaceResults.vCamPos[0] = <<-796.1253, -2532.3179, 13.7076>> sRaceResults.vCamRot[0] = <<3.1635, -0.0349, 129.4171>> sRaceResults.vCamPos[1] = <<-796.1734, -2532.2598, 13.7076>> sRaceResults.vCamRot[1] = <<3.1635, -0.0349, 123.6241>> sRaceResults.vCamPos[2] = <<-796.1734, -2532.2598, 23.7076>>//<<-801.9807, -2532.1855, 25.3552>> sRaceResults.vCamRot[2] = <<53.9221, -0.0349, 122.1631>>//<<28.4593, -0.0349, 123.6241>>//<<3.1635, -0.0349, 123.6241>>//<<12.7229, -0.0346, 132.9350>> sRaceResults.vCamPos[3] = <<-796.4111, -2523.5613, 23.9621>> sRaceResults.vCamRot[3] = <<53.9221, -0.0707, -153.6631>>//<<19.8757, -0.0707, -153.6631>>//<<-2.3601, -0.0691, -153.5230>> IF mnCar = INT_TO_ENUM(MODEL_NAMES, GET_HASH_KEY("DUBSTA3")) sRaceResults.vCamPos[4] = <<-796.4529, -2524.6165, 15.0410>> sRaceResults.vCamRot[4] = <<-7.1159, 0.0458, -134.7064>> sRaceResults.vCamPos[5] = <<-797.3875, -2525.8794, 15.0393>> sRaceResults.vCamRot[5] = <<-7.1159, 0.0458, -115.5518>> ELIF mnCar = INT_TO_ENUM(MODEL_NAMES, GET_HASH_KEY("MONSTER")) sRaceResults.vCamPos[4] = <<-791.3419, -2519.9180, 15.0172>> sRaceResults.vCamRot[4] = <<-2.2670, 0.0182, 170.5412>> sRaceResults.vCamPos[5] = <<-791.8328, -2519.8376, 15.0171>> sRaceResults.vCamRot[5] = <<-2.2670, 0.0182, 171.6637>> ELSE sRaceResults.vCamPos[4] = <<-796.4111, -2523.5613, 13.9621>>//<<-796.3872, -2523.5405, 13.9626>> sRaceResults.vCamRot[4] = <<-2.3601, -0.0691, -153.5230>>//<<-2.5866, -0.0094, -156.8727>> sRaceResults.vCamPos[5] = <<-796.5952, -2523.7085, 13.9597>> sRaceResults.vCamRot[5] = <<-2.5866, -0.0094, -153.6361>> ENDIF IF mnCar = INT_TO_ENUM(MODEL_NAMES, GET_HASH_KEY("MONSTER")) sRaceResults.vCamPos[6] = <<-795.2563, -2531.8118, 15.4606>> sRaceResults.vCamRot[6] = <<-7.3224, -0.0241, -23.3218>> sRaceResults.vCamPos[7] = <<-797.5802, -2532.9832, 15.7165>> sRaceResults.vCamRot[7] = <<-7.3224, -0.0241, -24.3511>> ELSE sRaceResults.vCamPos[6] = <<-797.7468, -2530.2664, 14.2931>> sRaceResults.vCamRot[6] = <<-7.1993, -0.0094, -44.5229>> sRaceResults.vCamPos[7] = <<-796.9835, -2531.1924, 14.3335>> sRaceResults.vCamRot[7] = <<-8.9660, -0.0094, -29.9138>> ENDIF sRaceResults.fFOV = 25 BREAK CASE STREET_RACE_05 sRaceResults.vCamPos[0] = <<750.5599, -1140.9828, 30.1426>> sRaceResults.vCamRot[0] = <<0.0483, 0.0013, -107.7410>> sRaceResults.vCamPos[1] = <<750.0837, -1141.1554, 30.1422>> sRaceResults.vCamRot[1] = <<0.0483, 0.0013, -117.1716>> sRaceResults.vCamPos[2] = <<750.0837, -1141.1554, 40.1422>>//<<748.6282, -1142.9174, 54.0660>> sRaceResults.vCamRot[2] = <<46.0912, 0.0013, -117.2112>>//<<19.0066, 0.0013, -117.1716>>//<<0.0483, 0.0013, -117.1716>>//<<8.5452, 0.0013, -112.2555>> sRaceResults.vCamPos[3] = <<813.1603, -1161.7493, 38.7039>> sRaceResults.vCamRot[3] = <<11.9990, 0.0201, -83.4509>>//<<-2.9712, 0.0059, -83.4627>> IF mnCar = INT_TO_ENUM(MODEL_NAMES, GET_HASH_KEY("DUBSTA3")) sRaceResults.vCamPos[4] = <<815.0908, -1162.6770, 29.8120>> sRaceResults.vCamRot[4] = <<-13.5952, 0.0560, -61.7062>> sRaceResults.vCamPos[5] = <<817.5979, -1163.7069, 29.4702>> sRaceResults.vCamRot[5] = <<-13.1626, 0.0560, -11.7796>> ELIF mnCar = INT_TO_ENUM(MODEL_NAMES, GET_HASH_KEY("MONSTER")) sRaceResults.vCamPos[4] = <<810.1620, -1160.6328, 30.3700>> sRaceResults.vCamRot[4] = <<-12.1619, 0.0081, -85.4750>> sRaceResults.vCamPos[5] = <<810.3062, -1160.8761, 30.3431>> sRaceResults.vCamRot[5] = <<-11.7112, 0.0081, -83.0783>> ELSE sRaceResults.vCamPos[4] = <<813.1603, -1161.7493, 28.7039>> sRaceResults.vCamRot[4] = <<-2.9712, 0.0059, -83.4627>> sRaceResults.vCamPos[5] = <<813.6791, -1162.0240, 28.6743>> sRaceResults.vCamRot[5] = <<-3.9024, 0.0059, -79.3115>> ENDIF IF mnCar = INT_TO_ENUM(MODEL_NAMES, GET_HASH_KEY("MONSTER")) sRaceResults.vCamPos[6] = <<822.7552, -1160.9124, 29.7837>> sRaceResults.vCamRot[6] = <<-11.3320, 0.0040, 86.0030>> sRaceResults.vCamPos[7] = <<824.2561, -1162.3478, 30.0892>> sRaceResults.vCamRot[7] = <<-6.1371, 0.0040, 85.1825>> ELSE sRaceResults.vCamPos[6] = <<821.5195, -1163.6158, 28.5451>> sRaceResults.vCamRot[6] = <<-4.4063, -0.0244, 60.9237>> sRaceResults.vCamPos[7] = <<822.8655, -1162.8406, 28.6227>> sRaceResults.vCamRot[7] = <<-0.9147, -0.0244, 75.4051>> ENDIF sRaceResults.fFOV = 25 BREAK CASE STREET_RACE_06 sRaceResults.vCamPos[0] = <<-1051.9481, -1152.6044, 1.7317>> sRaceResults.vCamRot[0] = <<4.3072, -0.0727, 97.2603>> sRaceResults.vCamPos[1] = <<-1051.8080, -1152.2676, 1.7187>> sRaceResults.vCamRot[1] = <<4.3072, -0.0727, 90.1290>> sRaceResults.vCamPos[2] = <<-1051.8080, -1152.2676, 11.7187>>//<<-1056.8759, -1153.1646, 22.8423>> sRaceResults.vCamRot[2] = <<52.1620, -0.0727, 90.1290>>//<<35.3628, -0.0727, 90.1290>>//<<4.3072, -0.0727, 90.1290>>//<<2.7708, -0.0727, 88.7767>> sRaceResults.vCamPos[3] = <<-1023.0024, -1126.4069, 12.5596>> sRaceResults.vCamRot[3] = <<52.1620, -0.0315, 151.2765>>//<<15.9597, -0.0315, 151.2765>>//<<-2.9801, -0.0213, 151.2480>> sRaceResults.vCamPos[4] = <<-1023.0024, -1126.4069, 2.5596>> sRaceResults.vCamRot[4] = <<-2.9801, -0.0213, 151.2480>> sRaceResults.vCamPos[5] = <<-1023.4984, -1126.5459, 2.5418>> sRaceResults.vCamRot[5] = <<-2.9801, -0.0213, 155.1694>> sRaceResults.vCamPos[6] = <<-1028.4272, -1130.7130, 2.3506>> sRaceResults.vCamRot[6] = <<4.2629, -0.0213, -73.0231>> sRaceResults.vCamPos[7] = <<-1028.6172, -1131.7168, 2.6039>> sRaceResults.vCamRot[7] = <<-1.0784, -0.0213, -61.3829>> sRaceResults.fFOV = 25 BREAK CASE SEA_RACE_01 sRaceResults.vCamPos[0] = <<3006.734131,1170.371826,2.515141>>//<<3008.1960, 1168.5701, 2.4071>> sRaceResults.vCamRot[0] = <<4.303476,0.000000,-20.753296>>//<<-8.3052, 0.0000, -20.7533>> sRaceResults.vCamPos[1] = <<3006.734131,1170.371826,2.515141>>//<<3008.1960, 1168.5701, 2.4071>> sRaceResults.vCamRot[1] = <<4.303476,0.000000,-20.753296>>//<<-8.3052, 0.0000, -20.7533>> sRaceResults.vCamPos[2] = <<3006.734131,1170.371826,22.515141>>//<<3008.1960, 1168.5701, 12.4071>>//<<3008.2788, 1168.7892, 12.4169>> sRaceResults.vCamRot[2] = <<54.303476,0.000000,-20.753296>>//<<36.2222, 0.0000, -20.7533>>//-21.1617>> sRaceResults.fFOV = 35 BREAK CASE SEA_RACE_02 sRaceResults.vCamPos[0] = <<3589.2041, 5155.5752, 11.8528>>//<<3595.855957,5136.727539,4.004726>>//<<3593.260742,5138.154785,3.823712>> sRaceResults.vCamRot[0] = <<-15.7070, -0.0486, -159.6172>>//<<-0.188566,0.000000,-162.038422>>//<<-12.9053, -0.0000, -164.9235>> sRaceResults.vCamPos[1] = <<3589.2041, 5155.5752, 11.8528>>//<<3595.855957,5136.727539,4.004726>>//<<3593.260742,5138.154785,3.823712>> sRaceResults.vCamRot[1] = <<-15.7070, -0.0486, -159.6172>>//<<-0.188566,0.000000,-162.038422>>//<<-12.9053, -0.0000, -164.9235>> sRaceResults.vCamPos[2] = <<3595.855957,5136.727539,24.004726>>//<<3593.260742,5138.154785,13.823712>> sRaceResults.vCamRot[2] = <<50.188566,0.000000,-162.038422>>//<<54.1960, 0.0000, -164.9235>>//-167.1748>> sRaceResults.fFOV = 35 BREAK CASE SEA_RACE_03 sRaceResults.vCamPos[0] = <<-1466.864136,2631.413574,2.130511>>//<<-1472.567749,2629.427002,1.811960>> sRaceResults.vCamRot[0] = <<3.075093,-0.039810,-114.141556>>//<<1.564253,-0.039810,-89.297714>> sRaceResults.vCamPos[1] = <<-1466.864136,2631.413574,2.130511>>//<<-1472.567749,2629.427002,1.811960>> sRaceResults.vCamRot[1] = <<3.075093,-0.039810,-114.141556>>//<<1.564253,-0.039810,-89.297714>> sRaceResults.vCamPos[2] = <<-1466.864136,2631.413574,22.130511>>//<<-1472.567749,2629.427002,11.811960>> sRaceResults.vCamRot[2] = <<53.075093,-0.039810,-114.141556>>//<<45.9465, -0.039810,-89.297714>>//-0.0371, -81.2768>> sRaceResults.fFOV = 35 BREAK CASE SEA_RACE_04 sRaceResults.vCamPos[0] = <<406.017120,-2727.060547,1.925007>>//<<405.807617,-2730.208252,1.762025>> sRaceResults.vCamRot[0] = <<2.283322,0.014000,-41.709625>>//<<0.782910,0.014000,-15.434910>> sRaceResults.vCamPos[1] = <<406.017120,-2727.060547,1.925007>>//<<405.807617,-2730.208252,1.762025>> sRaceResults.vCamRot[1] = <<2.283322,0.014000,-41.709625>>//<<0.782910,0.014000,-15.434910>> sRaceResults.vCamPos[2] = <<406.017120,-2727.060547,21.925007>>//<<405.807617,-2730.208252,11.762025>> sRaceResults.vCamRot[2] = <<52.283322,0.014000,-41.709625>>//<<57.7838, 0.014000,-15.434910>>//0.0126, -39.0680>> sRaceResults.fFOV = 35 BREAK ENDSWITCH ENDPROC /// PURPOSE: /// Creates the camera that moves up to the sky /// PARAMS: /// vPlayerVehicle - The player's vehicle PROC Make_Finish_Cameras(RACE_RESULTS_STRUCT & sRaceResults) INT i_index = 0 REPEAT 7 i_index //IF NOT DOES_CAM_EXIST(sRaceResults.ciCityRaceFinishCam[i_index]) sRaceResults.ciCityRaceFinishCam[i_index] = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED, sRaceResults.vCamPos[i_index], sRaceResults.vCamRot[i_index], 25.374201) //ENDIF ENDREPEAT /*IF NOT DOES_CAM_EXIST(sRaceResults.ciCityRaceFinishCam[0]) AND NOT DOES_CAM_EXIST(sRaceResults.ciCityRaceFinishCam[1]) sRaceResults.ciCityRaceFinishCam[0] = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED, sRaceResults.vCamPosOne, sRaceResults.vCamRotOne, 40.0) sRaceResults.ciCityRaceFinishCam[1] = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED, sRaceResults.vCamPosTwo, sRaceResults.vCamRotTwo, 40.0) ENDIF IF NOT DOES_CAM_EXIST(sRaceResults.ciCityRaceFinishCamTwo[0]) AND NOT DOES_CAM_EXIST(sRaceResults.ciCityRaceFinishCamTwo[1]) sRaceResults.ciCityRaceFinishCamTwo[0] = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED, sRaceResults.vCamPosTwo, sRaceResults.vCamRotTwo, 40.0) sRaceResults.ciCityRaceFinishCamTwo[1] = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED, sRaceResults.vCamPosThree, sRaceResults.vCamRotThree, 40.0) ENDIF*/ ENDPROC /// PURPOSE: /// Makes the camera rise up to the sky for the end of race results /// PARAMS: /// vPlayerVehicle - the player's vehicle FUNC BOOL City_Race_Manage_Finish_Camera(VEHICLE_INDEX& vPlayerVehicle, RACE_RESULTS_STRUCT& sRaceResults, RACE_TRACK_ID trackID) IF NOT DOES_ENTITY_EXIST(vPlayerVehicle) CPRINTLN(DEBUG_MISSION, "City_Race_Manage_Finish_Camera: vPlayerVehicle doesnt exist, exiting") RETURN FALSE ENDIF SWITCH sRaceResults.eCRCutFinish CASE CR_FINISH_INIT CPRINTLN(DEBUG_MISSION, "City_Race_Manage_Finish_Camera: inside CR_FINISH_INIT") IF (NOT DOES_CAM_EXIST(sRaceResults.ciCityRaceFinishCam[0])) CPRINTLN(DEBUG_MISSION, "City_Race_Manage_Finish_Camera: running Make_Finish_Cam") SET_FINISH_CAM_POSITIONS(sRaceResults, trackID) //Make_Finish_Cameras(sRaceResults) sRaceResults.ciCityRaceFinishCam[0] = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED, sRaceResults.vCamPos[0], sRaceResults.vCamRot[0], sRaceResults.fFOV) sRaceResults.ciCityRaceFinishCam[1] = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED, sRaceResults.vCamPos[1], sRaceResults.vCamRot[1], sRaceResults.fFOV) ELIF NOT IS_CAM_ACTIVE(sRaceResults.ciCityRaceFinishCam[0]) CPRINTLN(DEBUG_MISSION, "City_Race_Manage_Finish_Camera: Trying to set finish cam active.") SET_CAM_ACTIVE(sRaceResults.ciCityRaceFinishCam[0], TRUE) SET_CAM_ACTIVE_WITH_INTERP(sRaceResults.ciCityRaceFinishCam[1],sRaceResults.ciCityRaceFinishCam[0],2000,GRAPH_TYPE_LINEAR) ANIMPOSTFX_PLAY("MinigameEndFranklin", 0, FALSE) PLAY_SOUND_FRONTEND(-1,"Hit_In","PLAYER_SWITCH_CUSTOM_SOUNDSET") SET_FOLLOW_VEHICLE_CAM_VIEW_MODE(CAM_VIEW_MODE_THIRD_PERSON) SET_GAMEPLAY_CAM_RELATIVE_PITCH(0) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) RENDER_SCRIPT_CAMS(TRUE, FALSE) SHAKE_CAM(sRaceResults.ciCityRaceFinishCam[1],"HAND_SHAKE",0.3) ELSE /*BRING_VEHICLE_TO_HALT(vPlayerVehicle, 100.0, 1) SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)*/ //BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(vPlayerVehicle, 70.0) SET_ENTITY_CAN_BE_DAMAGED(vPlayerVehicle, FALSE) CPRINTLN(DEBUG_MISSION, "City_Race_Manage_Finish_Camera: moving to state: CR_FINISH_CAMERA_PAN") sRaceResults.iDisplayResultsTimer = GET_GAME_TIMER() + sRaceResults.CAM_INTERP_TIME sRaceResults.iPulseTimer = GET_GAME_TIMER() + sRaceResults.PULSE_TIME sRaceResults.eCRCutFinish = CR_FINISH_WAIT_FOR_RESULTS ENDIF BREAK CASE CR_FINISH_WAIT_FOR_RESULTS //BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(vPlayerVehicle, 70.0) IF DOES_CAM_EXIST(sRaceResults.ciCityRaceFinishCam[1]) IF NOT IS_CAM_INTERPOLATING(sRaceResults.ciCityRaceFinishCam[1]) sRaceResults.ciCityRaceFinishCam[2] = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED, sRaceResults.vCamPos[2], sRaceResults.vCamRot[2], sRaceResults.fFOV) SET_CAM_ACTIVE_WITH_INTERP(sRaceResults.ciCityRaceFinishCam[2],sRaceResults.ciCityRaceFinishCam[1],600,GRAPH_TYPE_SIN_ACCEL_DECEL) SET_CAM_MOTION_BLUR_STRENGTH(sRaceResults.ciCityRaceFinishCam[2],1.0) //SHAKE_CAM(sRaceResults.ciCityRaceFinishCam[2],"HAND_SHAKE",1.0) ANIMPOSTFX_STOP("MinigameEndFranklin") ANIMPOSTFX_PLAY("MinigameTransitionIn", 0, TRUE) PLAY_SOUND_FRONTEND(-1,"Short_Transition_In","PLAYER_SWITCH_CUSTOM_SOUNDSET") DESTROY_CAM(sRaceResults.ciCityRaceFinishCam[0]) DESTROY_CAM(sRaceResults.ciCityRaceFinishCam[1]) ENDIF //ELIF GET_GAME_TIMER() > sRaceResults.iDisplayResultsTimer ELIF DOES_CAM_EXIST(sRaceResults.ciCityRaceFinishCam[2]) IF NOT IS_CAM_INTERPOLATING(sRaceResults.ciCityRaceFinishCam[2]) SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) sRaceResults.eCRCutFinish = CR_FINISH_IDLE ENDIF RETURN TRUE ENDIF BREAK CASE CR_FINISH_IDLE // return TRUE so the race script can start displaying the results screen RETURN TRUE BREAK ENDSWITCH RETURN FALSE ENDFUNC PROC Stop_Finish_Cam(RACE_RESULTS_STRUCT& sRaceResults, BOOL bStartNextCam = TRUE, BOOL bInterp = FALSE) IF DOES_CAM_EXIST(sRaceResults.ciCityRaceFinishCam[2]) //AND DOES_CAM_EXIST(sRaceResults.ciCityRaceFinishCam[1]) //IF IS_CAM_ACTIVE(sRaceResults.ciCityRaceFinishCam[0]) OR IS_CAM_ACTIVE(sRaceResults.ciCityRaceFinishCam[1]) CPRINTLN(DEBUG_MISSION, "Cleared away the finish camera") sRaceResults.eCRCutFinish = CR_FINISH_INIT //RENDER_SCRIPT_CAMS(FALSE, FALSE) ANIMPOSTFX_STOP("MinigameTransitionIn") PLAY_SOUND_FRONTEND(-1,"Short_Transition_Out","PLAYER_SWITCH_CUSTOM_SOUNDSET") //ANIMPOSTFX_PLAY("MinigameEndFranklin", 0, FALSE) /*SET_CAM_ACTIVE(sRaceResults.ciCityRaceFinishCam[0], FALSE) SET_CAM_ACTIVE(sRaceResults.ciCityRaceFinishCam[1], FALSE)*/ IF bStartNextCam sRaceResults.ciCityRaceFinishCam[3] = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED, sRaceResults.vCamPos[3], sRaceResults.vCamRot[3], 25.374201) SET_CAM_ACTIVE(sRaceResults.ciCityRaceFinishCam[3], TRUE) sRaceResults.ciCityRaceFinishCam[4] = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED, sRaceResults.vCamPos[4], sRaceResults.vCamRot[4], 25.374201) SET_CAM_ACTIVE_WITH_INTERP(sRaceResults.ciCityRaceFinishCam[4],sRaceResults.ciCityRaceFinishCam[3],600,GRAPH_TYPE_SIN_ACCEL_DECEL) SET_CAM_MOTION_BLUR_STRENGTH(sRaceResults.ciCityRaceFinishCam[3],1.0) SHAKE_CAM(sRaceResults.ciCityRaceFinishCam[3],"HAND_SHAKE",0.3) SET_CAM_MOTION_BLUR_STRENGTH(sRaceResults.ciCityRaceFinishCam[4],1.0) SHAKE_CAM(sRaceResults.ciCityRaceFinishCam[4],"HAND_SHAKE",0.3) ELSE VECTOR vPosition = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(PLAYER_PED_ID(), <<0,-5,1>>) //GET_ENTITY_COORDS(PLAYER_PED_ID()) VECTOR vRotation = GET_ENTITY_ROTATION(PLAYER_PED_ID()) sRaceResults.ciCityRaceFinishCam[3] = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED, vPosition + <<0,0,20>>, vRotation + <<55,0,0>>, 50.0) SET_CAM_ACTIVE(sRaceResults.ciCityRaceFinishCam[3], TRUE) //WAIT(0) sRaceResults.ciCityRaceFinishCam[4] = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED, vPosition, vRotation, 50.0) SET_CAM_ACTIVE_WITH_INTERP(sRaceResults.ciCityRaceFinishCam[4],sRaceResults.ciCityRaceFinishCam[3],600,GRAPH_TYPE_SIN_ACCEL_DECEL) SET_CAM_MOTION_BLUR_STRENGTH(sRaceResults.ciCityRaceFinishCam[3],1.0) SET_CAM_MOTION_BLUR_STRENGTH(sRaceResults.ciCityRaceFinishCam[4],1.0) DESTROY_CAM(sRaceResults.ciCityRaceFinishCam[2]) //WAIT(600) //RENDER_SCRIPT_CAMS(FALSE, bInterp, 600) //STOP_RENDERING_SCRIPT_CAMS_USING_CATCH_UP() bInterp=bInterp //RENDER_SCRIPT_CAMS(FALSE, FALSE, 600) ENDIF ANIMPOSTFX_PLAY("MinigameTransitionOut", 0, FALSE) //DESTROY_CAM(sRaceResults.ciCityRaceFinishCam[0]) //DESTROY_CAM(sRaceResults.ciCityRaceFinishCam[1]) CPRINTLN(DEBUG_MISSION, "Finish camera not active") //ENDIF ENDIF ENDPROC FUNC BOOL City_Race_Manage_Reward_Camera(RACE_RESULTS_STRUCT& sRaceResults) SWITCH sRaceResults.eCRCutFinish CASE CR_FINISH_INIT IF DOES_CAM_EXIST(sRaceResults.ciCityRaceFinishCam[4]) IF NOT IS_CAM_INTERPOLATING(sRaceResults.ciCityRaceFinishCam[4]) sRaceResults.ciCityRaceFinishCam[5] = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED, sRaceResults.vCamPos[5], sRaceResults.vCamRot[5], 25.374201) SET_CAM_ACTIVE_WITH_INTERP(sRaceResults.ciCityRaceFinishCam[5],sRaceResults.ciCityRaceFinishCam[4],4500,GRAPH_TYPE_LINEAR) SHAKE_CAM(sRaceResults.ciCityRaceFinishCam[5],"HAND_SHAKE",0.3) DESTROY_CAM(sRaceResults.ciCityRaceFinishCam[4]) PLAY_SOUND_FRONTEND(-1,"Short_Transition_Out","PLAYER_SWITCH_CUSTOM_SOUNDSET") ENDIF ELIF DOES_CAM_EXIST(sRaceResults.ciCityRaceFinishCam[5]) IF NOT IS_CAM_INTERPOLATING(sRaceResults.ciCityRaceFinishCam[5]) sRaceResults.ciCityRaceFinishCam[6] = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED, sRaceResults.vCamPos[6], sRaceResults.vCamRot[6], 50.0) sRaceResults.ciCityRaceFinishCam[7] = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED, sRaceResults.vCamPos[7], sRaceResults.vCamRot[7], 50.0) SET_CAM_ACTIVE(sRaceResults.ciCityRaceFinishCam[6], TRUE) SET_CAM_ACTIVE_WITH_INTERP(sRaceResults.ciCityRaceFinishCam[7],sRaceResults.ciCityRaceFinishCam[6],2000,GRAPH_TYPE_DECEL) SHAKE_CAM(sRaceResults.ciCityRaceFinishCam[7],"HAND_SHAKE",0.3) DESTROY_CAM(sRaceResults.ciCityRaceFinishCam[5]) ENDIF ELIF DOES_CAM_EXIST(sRaceResults.ciCityRaceFinishCam[7]) IF NOT IS_CAM_INTERPOLATING(sRaceResults.ciCityRaceFinishCam[7]) RETURN TRUE ENDIF /*ELSE RETURN TRUE*/ ENDIF BREAK ENDSWITCH RETURN FALSE ENDFUNC PROC Stop_Reward_Cam(RACE_RESULTS_STRUCT& sRaceResults) IF DOES_CAM_EXIST(sRaceResults.ciCityRaceFinishCam[2]) //IF DOES_CAM_EXIST(sRaceResults.ciCityRaceFinishCam[0]) AND DOES_CAM_EXIST(sRaceResults.ciCityRaceFinishCam[1]) //IF IS_CAM_ACTIVE(sRaceResults.ciCityRaceFinishCam[0]) OR IS_CAM_ACTIVE(sRaceResults.ciCityRaceFinishCam[1]) CPRINTLN(DEBUG_MISSION, "Cleared away finish camera two") sRaceResults.eCRCutFinish = CR_FINISH_INIT STOP_RENDERING_SCRIPT_CAMS_USING_CATCH_UP() //RENDER_SCRIPT_CAMS(FALSE, FALSE) //SET_CAM_ACTIVE(sRaceResults.ciCityRaceFinishCamTwo, FALSE) //DESTROY_CAM(sRaceResults.ciCityRaceFinishCamTwo[0]) //DESTROY_CAM(sRaceResults.ciCityRaceFinishCamTwo[1]) CPRINTLN(DEBUG_MISSION, "Finish camera two not active") //ENDIF ENDIF ENDPROC PROC GET_RACE_BEST_TIMES(RACE_TRACK_ID trackID) IF NOT bBestTimesReady AND IS_PLAYER_ONLINE() AND NETWORK_HAVE_ONLINE_PRIVILEGES() SWITCH trackID CASE STREET_RACE_01 iRaceOnlineID = 0 BREAK CASE STREET_RACE_02 iRaceOnlineID = 1 BREAK CASE STREET_RACE_04 iRaceOnlineID = 2 BREAK CASE STREET_RACE_05 iRaceOnlineID = 3 BREAK CASE STREET_RACE_06 iRaceOnlineID = 4 BREAK CASE SEA_RACE_01 iRaceOnlineID = 5 BREAK CASE SEA_RACE_02 iRaceOnlineID = 6 BREAK CASE SEA_RACE_03 iRaceOnlineID = 7 BREAK CASE SEA_RACE_04 iRaceOnlineID = 8 BREAK ENDSWITCH bBestTimesReady = GET_SP_RACE_PERSONAL_GLOBAL_BEST(iReadStage, iLoadStage, bSuccessful, iRaceOnlineID, iGlobalBest, iPersonalBest) ENDIF ENDPROC // Sets up the screen layout for the end-of-mission results screen. PROC INIT_RACE_RESULTS(END_SCREEN_DATASET & esdEndScreen, RACE_TRACK_ID trackID, INT iPlayerPosition, INT iNumRacers, INT iPlayerTime)//, INT iPlayerLapTime) PRINTLN("Setting up Race Results screen") RESET_ENDSCREEN(esdEndScreen) END_SCREEN_MEDAL_STATUS eMedalStatus = ESMS_NO_MEDAL STRING sPositionLabel = "" SWITCH iPlayerPosition CASE 1 eMedalStatus = ESMS_GOLD sPositionLabel = "SPR_1stpl" BREAK CASE 2 eMedalStatus = ESMS_SILVER sPositionLabel = "SPR_2ndpl" BREAK CASE 3 eMedalStatus = ESMS_BRONZE sPositionLabel = "SPR_3rdpl" BREAK CASE 4 eMedalStatus = ESMS_NO_MEDAL sPositionLabel = "SPR_4thpl" BREAK CASE 5 eMedalStatus = ESMS_NO_MEDAL sPositionLabel = "SPR_5thpl" BREAK CASE 6 eMedalStatus = ESMS_NO_MEDAL sPositionLabel = "SPR_6thpl" BREAK CASE 7 eMedalStatus = ESMS_NO_MEDAL sPositionLabel = "SPR_7thpl" BREAK CASE 8 eMedalStatus = ESMS_NO_MEDAL sPositionLabel = "SPR_8thpl" BREAK ENDSWITCH STRING sRaceName SWITCH trackID CASE STREET_RACE_01 sRaceName = "SLOSSANTOS" BREAK CASE STREET_RACE_02 sRaceName = "CITYCIRCUIT" BREAK CASE STREET_RACE_04 sRaceName = "AIRPORTR" BREAK CASE STREET_RACE_05 sRaceName = "FREEWAY" BREAK CASE STREET_RACE_06 sRaceName = "VERSPUCCI" BREAK CASE SEA_RACE_01 sRaceName = "NORTHCOAST" BREAK CASE SEA_RACE_02 sRaceName = "SOUTHCOAST" BREAK CASE SEA_RACE_03 sRaceName = "CANYON" BREAK CASE SEA_RACE_04 sRaceName = "LOSSANTOS" BREAK ENDSWITCH SET_ENDSCREEN_DATASET_HEADER(esdEndScreen, sPositionLabel, sRaceName) ADD_ENDSCREEN_DATASET_CONTENT_ELEMENT(esdEndScreen, ESEF_TIME_M_S_MS_WITH_PERIOD, "SPR_TIME", "", iPlayerTime, 0, ESCM_NO_MARK) esdEndScreen.bHoldOnEnd = TRUE IF bBestTimesReady AND IS_PLAYER_ONLINE() AND NETWORK_HAVE_ONLINE_PRIVILEGES() /*WHILE NOT GET_SP_RACE_PERSONAL_GLOBAL_BEST(iReadStage, iLoadStage, bSuccessful, iRaceOnlineID, iGlobalBest, iPersonalBest) WAIT(0) ENDWHILE*/ IF iPersonalBest > iPlayerTime OR iPersonalBest <= 0 iPersonalBest = iPlayerTime ENDIF ADD_ENDSCREEN_DATASET_CONTENT_ELEMENT(esdEndScreen, ESEF_TIME_M_S_MS_WITH_PERIOD, "SPR_BESTTIME", "", iPersonalBest, 0, ESCM_NO_MARK) IF iGlobalBest > iPlayerTime OR iGlobalBest <= 0 iGlobalBest = iPlayerTime ENDIF ADD_ENDSCREEN_DATASET_CONTENT_ELEMENT(esdEndScreen, ESEF_TIME_M_S_MS_WITH_PERIOD, "LOB_SPLIT_0", "", iGlobalBest, 0, ESCM_NO_MARK) ENDIF IF iPlayerPosition <= 3 SET_ENDSCREEN_COMPLETION_LINE_STATE(esdEndScreen, TRUE, "SPR_RESULT", iPlayerPosition, iNumRacers, ESC_FRACTION_COMPLETION, eMedalStatus) ELSE SET_ENDSCREEN_COMPLETION_LINE_STATE(esdEndScreen, FALSE, "SPR_RESULT", iPlayerPosition, iNumRacers, ESC_FRACTION_COMPLETION, eMedalStatus) ENDIF //ENDSCREEN_PREPARE(esdEndScreen) ENDPROC // Show the results screen, and monitor the player's input. PROC DRAW_RACE_RESULTS(END_SCREEN_DATASET & esdEndScreen) RENDER_ENDSCREEN(esdEndScreen) ENDPROC PROC HT_MENU_SFX_PLAY_NAV_UP() PLAY_SOUND_FRONTEND(-1, "NAV_UP_DOWN", "HUD_MINI_GAME_SOUNDSET") ENDPROC PROC HT_MENU_SFX_PLAY_NAV_DOWN() PLAY_SOUND_FRONTEND(-1, "NAV_UP_DOWN", "HUD_MINI_GAME_SOUNDSET") ENDPROC PROC HT_MENU_SFX_PLAY_NAV_SELECT() PLAY_SOUND_FRONTEND(-1, "SELECT", "HUD_MINI_GAME_SOUNDSET") ENDPROC PROC HT_MENU_SFX_PLAY_NAV_BACK() PLAY_SOUND_FRONTEND(-1, "CANCEL", "HUD_MINI_GAME_SOUNDSET") ENDPROC PROC INIT_RACE_LEADERBOARD(RACE_TRACK_ID trackID, INT iPlayerPosition, INT iPlayerTime, INT iPlayerLapTime, VEHICLE_INDEX viPlayer) IF IS_PLAYER_ONLINE() AND NETWORK_HAVE_ONLINE_PRIVILEGES() TEXT_LABEL_31 categoryNames[3] categoryNames[0] = "GameType" categoryNames[1] = "Location" categoryNames[2] = "Type" TEXT_LABEL_23 uniqueIdentifiers[3] uniqueIdentifiers[0] = "SP" SWITCH trackID CASE STREET_RACE_01 uniqueIdentifiers[1] = "MGCR_1" uniqueIdentifiers[2] = "StreetRace" BREAK CASE STREET_RACE_02 uniqueIdentifiers[1] = "MGCR_2" uniqueIdentifiers[2] = "StreetRace" BREAK CASE STREET_RACE_04 uniqueIdentifiers[1] = "MGCR_4" uniqueIdentifiers[2] = "StreetRace" BREAK CASE STREET_RACE_05 uniqueIdentifiers[1] = "MGCR_5" uniqueIdentifiers[2] = "StreetRace" BREAK CASE STREET_RACE_06 uniqueIdentifiers[1] = "MGCR_6" uniqueIdentifiers[2] = "StreetRace" BREAK CASE SEA_RACE_01 uniqueIdentifiers[1] = "MGSR_1" uniqueIdentifiers[2] = "SeaRace" BREAK CASE SEA_RACE_02 uniqueIdentifiers[1] = "MGSR_2" uniqueIdentifiers[2] = "SeaRace" BREAK CASE SEA_RACE_03 uniqueIdentifiers[1] = "MGSR_3" uniqueIdentifiers[2] = "SeaRace" BREAK CASE SEA_RACE_04 uniqueIdentifiers[1] = "MGSR_4" uniqueIdentifiers[2] = "SeaRace" BREAK DEFAULT SCRIPT_ASSERT("Track ID was invalid") BREAK ENDSWITCH SC_LEADERBOARD_CACHE_CLEAR_ALL() IF INIT_LEADERBOARD_WRITE(LEADERBOARD_MINI_GAMES_RACES, uniqueIdentifiers, categoryNames, 3, -1, TRUE) //LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_SCORE, -iPlayerTime, 0) //(long) WRITE_VALUE_TO_LEADERBOARD_USED_FOR_RANK_PREDICTION(ENUM_TO_INT(LEADERBOARD_MINI_GAMES_RACES), LB_INPUT_COL_SCORE, -iPlayerTime, 0) //(long) //LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_BEST_TIME, iPlayerLapTime, 0) //(long) WRITE_VALUE_TO_LEADERBOARD_USED_FOR_RANK_PREDICTION(ENUM_TO_INT(LEADERBOARD_MINI_GAMES_RACES), LB_INPUT_COL_BEST_TIME, iPlayerLapTime, 0) //(long) //LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_TOTAL_TIME, iPlayerTime, 0) //(long) WRITE_VALUE_TO_LEADERBOARD_USED_FOR_RANK_PREDICTION(ENUM_TO_INT(LEADERBOARD_MINI_GAMES_RACES), LB_INPUT_COL_TOTAL_TIME, iPlayerTime, 0) //(long) //LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_VEHICLE_ID, ENUM_TO_INT(GET_ENTITY_MODEL(viPlayer)), 0) //(int) WRITE_VALUE_TO_LEADERBOARD_USED_FOR_RANK_PREDICTION(ENUM_TO_INT(LEADERBOARD_MINI_GAMES_RACES), LB_INPUT_COL_VEHICLE_ID, ENUM_TO_INT(GET_ENTITY_MODEL(viPlayer)), 0) //(int) //LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_VEHICLE_COLOR, 0, 0) //(int) WRITE_VALUE_TO_LEADERBOARD_USED_FOR_RANK_PREDICTION(ENUM_TO_INT(LEADERBOARD_MINI_GAMES_RACES), LB_INPUT_COL_VEHICLE_COLOR, 0, 0) //(int) //LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_NUM_MATCHES, 1, 0) //(int) WRITE_VALUE_TO_LEADERBOARD_USED_FOR_RANK_PREDICTION(ENUM_TO_INT(LEADERBOARD_MINI_GAMES_RACES), LB_INPUT_COL_NUM_MATCHES, 1, 0) //(int) INT iGold = 0 INT iSilver = 0 INT iBronze = 0 INT iMedal = 0 IF iPlayerPosition = 1 iGold = 1 iMedal = 3 ELIF iPlayerPosition = 2 iSilver = 1 iMedal = 2 ELIF iPlayerPosition = 3 iBronze = 1 iMedal = 1 ENDIF LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_GOLD_MEDALS, iGold, 0) //(int) LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_SILVER_MEDALS, iSilver, 0) //(int) LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_BRONZE_MEDALS, iBronze, 0) //(int) LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_MEDAL, iMedal, 0) //(int) ENDIF ENDIF ENDPROC PROC SETUP_RACE_LEADERBOARD(RACE_TRACK_ID trackID) IF IS_PLAYER_ONLINE() AND NETWORK_HAVE_ONLINE_PRIVILEGES() AND bAllowLeaderboard INT iSubType INT iLaps SWITCH trackID CASE STREET_RACE_01 iSubType = 0 iLaps = 2 BREAK CASE STREET_RACE_02 iSubType = 1 iLaps = 1 BREAK CASE STREET_RACE_04 iSubType = 2 iLaps = 2 BREAK CASE STREET_RACE_05 iSubType = 3 iLaps = 2 BREAK CASE STREET_RACE_06 iSubType = 4 iLaps = 2 BREAK CASE SEA_RACE_01 iSubType = 5 iLaps = 0 BREAK CASE SEA_RACE_02 iSubType = 6 iLaps = 0 BREAK CASE SEA_RACE_03 iSubType = 7 iLaps = 0 BREAK CASE SEA_RACE_04 iSubType = 8 iLaps = 0 BREAK DEFAULT SCRIPT_ASSERT("Track ID was invalid") BREAK ENDSWITCH SETUP_SOCIAL_CLUB_LEADERBOARD_READ_DATA(sclbControl, FMMC_TYPE_SP_STREET_RACE, "", "", iSubType, iLaps) //LOAD_SOCIAL_CLUB_LEADERBOARD_DATA(sclbControl) //SET_SC_LEADERBOARD_DISPLAY_TYPE(uiLeaderboard) //SET_SC_LEADERBOARD_TITLE(uiLeaderboard, sTitle) bAllowLeaderboard = FALSE ENDIF ENDPROC PROC DRAW_RACE_LEADERBOARD(SCALEFORM_INDEX& uiLeaderboard[])//, SC_LEADERBOARD_CONTROL_STRUCT& scLB_control) IF IS_PLAYER_ONLINE() AND NETWORK_HAVE_ONLINE_PRIVILEGES() //DISPLAY_SC_LEADERBOARD_UI(uiLeaderboard) DRAW_SOCIAL_CLUB_LEADERBOARD(sclbControl, uiLeaderboard) ENDIF ENDPROC PROC CLEANUP_RACE_LEADERBOARD(END_SCREEN_DATASET & esdEndScreen, SCALEFORM_INDEX &uiLeaderboard)//, SC_LEADERBOARD_CONTROL_STRUCT& scLB_control) IF IS_PLAYER_ONLINE() AND NETWORK_HAVE_ONLINE_PRIVILEGES() CLEANUP_SC_LEADERBOARD_UI(uiLeaderboard) CLEANUP_SOCIAL_CLUB_LEADERBOARD(sclbControl) ENDIF //RESET_ENDSCREEN(esdEndScreen) ENDSCREEN_SHUTDOWN(esdEndScreen) ENDPROC PROC INIT_RESULT_SCREEN_BUTTONS(RACE_RESULTS_STRUCT& sRaceResults) CPRINTLN(DEBUG_MISSION, "INIT_RESULT_SCREEN_BUTTONS ") /*INIT_SIMPLE_USE_CONTEXT(sRaceResults.ucInstructions, FALSE, FALSE, TRUE, TRUE) ADD_SIMPLE_USE_CONTEXT_INPUT(sRaceResults.ucInstructions, "CMRC_CONT", FRONTEND_CONTROL, INPUT_FRONTEND_ENDSCREEN_ACCEPT) SET_SIMPLE_USE_CONTEXT_MINIGAME_ATTACHED(sRaceResults.ucInstructions)*/ INIT_SIMPLE_USE_CONTEXT(sRaceResults.ucInstructions, FALSE, FALSE, TRUE, TRUE) ADD_SIMPLE_USE_CONTEXT_INPUT(sRaceResults.ucInstructions, "SPR_CONT2", FRONTEND_CONTROL, INPUT_FRONTEND_ENDSCREEN_ACCEPT) ADD_SIMPLE_USE_CONTEXT_INPUT(sRaceResults.ucInstructions, "SPR_UI_RETRY", FRONTEND_CONTROL, INPUT_FRONTEND_ENDSCREEN_EXPAND) IF IS_PLAYER_ONLINE() AND NETWORK_HAVE_ONLINE_PRIVILEGES() ADD_SIMPLE_USE_CONTEXT_INPUT(sRaceResults.ucInstructions, "HUD_INPUT68", FRONTEND_CONTROL, INPUT_FRONTEND_LEADERBOARD) ENDIF SET_SIMPLE_USE_CONTEXT_FULLSCREEN(sRaceResults.ucInstructions) SET_SIMPLE_USE_CONTEXT_MINIGAME_ATTACHED(sRaceResults.ucInstructions) ENDPROC PROC DRAW_RESULT_SCREEN_INSTRUCTIONS(RACE_RESULTS_STRUCT& sRaceResults) UPDATE_SIMPLE_USE_CONTEXT(sRaceResults.ucInstructions) ENDPROC