CONST_INT PRICE_OF_RANGE 14 ENUM RANGE_LOCATION RANGELOC_PILLBOX_HILL = 0, RANGELOC_CYPRESS_FLATS ENDENUM ENUM RANGE_ROUND_TYPE RT_INVALID = -1, RT_PISTOL_CHAL_1, // 0 RT_PISTOL_CHAL_2, RT_PISTOL_CHAL_3, RT_SMG_CHAL_1, // 3 RT_SMG_CHAL_2, RT_SMG_CHAL_3, RT_SHOTGUN_CHAL_1, // 6 RT_SHOTGUN_CHAL_2, RT_SHOTGUN_CHAL_3, RT_AR_CHAL_1, // 9 RT_AR_CHAL_2, RT_AR_CHAL_3, RT_LMG_CHAL_1, // 12 RT_LMG_CHAL_2, RT_LMG_CHAL_3, RT_MINIGUN_CHAL_1, // 15 RT_MINIGUN_CHAL_2, RT_MINIGUN_CHAL_3, RT_RAILGUN_CHAL_1, // 18 RT_RAILGUN_CHAL_2, RT_RAILGUN_CHAL_3, RT_RAILGUN_CHAL_4, RT_MAX_ROUND_TYPES ENDENUM // This is used in conjunction with the above to control what's been unlocked and not highlighted. ENUM RANGE_UNLOCK_CATEGORIES R_CAT_UNLOCK_HG = 20, R_CAT_UNLOCK_SMG = 21, R_CAT_UNLOCK_AR = 22, R_CAT_UNLOCK_SG = 23, R_CAT_UNLOCK_LMG = 24, R_CAT_UNLOCK_HVY = 25, R_CAT_UNLOCK_RAIL = 26 ENDENUM ENUM RANGE_WEAPON_TYPE RANGE_PISTOL = 0, RANGE_COMBATPISTOL, RANGE_APPISTOL, RANGE_DLC_PISTOL50, RANGE_DLC_SNSPISTOL, RANGE_MICROSMG = 0, RANGE_SMG, RANGE_DLC_ASSAULTSMG, RANGE_ASSAULTRIFLE = 0, RANGE_CARBINERIFLE, RANGE_ADVANCEDRIFLE, RANGE_DLC_HEAVYRIFLE, RANGE_DLC_SPECIALCARBINE, RANGE_PUMPSHOTGUN = 0, RANGE_SAWNOFFSHOTGUN, RANGE_ASSAULTSHOTGUN, RANGE_DLC_BULLPUPSHOTGUN, RANGE_MINIGUN = 0, RANGE_MG = 0, RANGE_COMBATMG, RANGE_DLC_ASSAULTMG, //NG Current gen owners only RANGE_RAILGUN = 0 ENDENUM ENUM RANGE_ROUND_MEDAL RRM_NONE, RRM_BRONZE, RRM_SILVER, RRM_GOLD ENDENUM STRUCT RangeRoundDataSaved INT iLastScore // The last attempt score // INT iHighScore // Highest score BOOL bUnlocked // Have we unlocked this mode yet BOOL bPassed // Have we passed this mode yet RANGE_ROUND_MEDAL eTopMedal // What is our highest medal RANGE_WEAPON_TYPE eWeaponType // Weapon used INT iShotsFired // Shots Fired INT iShotsHit // Shots Hit FLOAT fAccuracy // Accuracy % INT iZone1Hit INT iZone2Hit INT iZone3Hit INT iZone4Hit ENDSTRUCT ENUM SHOOTRANGE_BOOLS // These are bits, but we can't include the BIT1, etc header in here. SRB_PrintedMinScore_ReverseRange = 1, SRB_ShownFloatingHelp_ShopDiscountBronze = 8, SRB_ShownFloatingHelp_ShopDiscountSilver = 16, SRB_ShownFloatingHelp_ShopDiscountGold = 32, SRB_RangeInSession = 64, SRB_QuitFromRange = 128, SRB_HideBetsMsg = 256 ENDENUM STRUCT ShootRangeDataSaved INT iCatChalLockStatus // Category and Challenge lock status flags INT iWeaponLockStatus // Indiv. weapons lock status flags INT iWeaponUsedStatus // Tracks which indiv. weapons have been used in the range. RangeRoundDataSaved sRounds[RT_MAX_ROUND_TYPES] BOOL m_bSeenTutorial // Our first time at the range? BOOL bClearedAll // Have we cleared all the challenges and awarded a completion percentage INT iBools ENDSTRUCT USING "hud_colours.sch" STRUCT Range_HUD_Data STRING sTimerLabel INT iTimerVal = -1 HUD_COLOURS eTimerColor = HUD_COLOUR_WHITE STRING sBestScore INT iBestScore = -1 HUD_COLOURS eBestScoreColor = HUD_COLOUR_WHITE STRING sTargetsLabel //"TIMER_TAR" INT iCurTargets = -1 INT iMaxTargets = -1 STRING sCurScoreLabel INT iCurScore = -1 HUD_COLOURS eCurScoreColor = HUD_COLOUR_WHITE STRING sGoalScoreLabel INT iGoalScore = -1 HUD_COLOURS eGoalScoreColor = HUD_COLOUR_WHITE INT iMultiplier = -1 INT iCurMultiplierBlocks = -1 INT iMaxMultiplierBlocks = -1 HUD_COLOURS eMultiplierColor = HUD_COLOUR_PURPLE STRING sOpponentScoreLabel INT iOpponentScore = -1 HUD_COLOURS eOpponentScoreColor = HUD_COLOUR_WHITE BOOL bDrawPlayerNames = FALSE ENDSTRUCT STRUCT SHOOTING_RANGE_LAUNCH_DATA RANGE_LOCATION eLocation PED_INDEX pedParticipant1 = NULL PED_INDEX pedParticipant2 = NULL PED_INDEX pedParticipant3 = NULL OBJECT_INDEX objEarmuffs1 = NULL OBJECT_INDEX objEarmuffs2 = NULL OBJECT_INDEX objEarmuffs3 = NULL OBJECT_INDEX objGlasses1 = NULL OBJECT_INDEX objGlasses2 = NULL OBJECT_INDEX objGlasses3 = NULL ENDSTRUCT SHOOTRANGE_BOOLS RANGE_NOT_SAVED_BITFLAGS PROC SET_SHOOTING_RANGE_UNSAVED_BITFLAG(SHOOTRANGE_BOOLS eFlag) CDEBUG2LN(DEBUG_SHOOTRANGE, "SET_SHOOTING_RANGE_UNSAVED_BITFLAG eFlag=", eFlag) RANGE_NOT_SAVED_BITFLAGS |= eFlag ENDPROC PROC CLEAR_SHOOTING_RANGE_UNSAVED_BITFLAG(SHOOTRANGE_BOOLS eFlag) CDEBUG2LN(DEBUG_SHOOTRANGE, "CLEAR_SHOOTING_RANGE_UNSAVED_BITFLAG eFlag=", eFlag) RANGE_NOT_SAVED_BITFLAGS -= RANGE_NOT_SAVED_BITFLAGS & eFlag ENDPROC FUNC BOOL IS_SHOOTING_RANGE_unSAVED_BITFLAG_SET(SHOOTRANGE_BOOLS eFlag) RETURN (ENUM_TO_INT(RANGE_NOT_SAVED_BITFLAGS) & ENUM_TO_INT(eFlag)) != 0 ENDFUNC #IF IS_DEBUG_BUILD FUNC STRING GET_STRING_FROM_RANGE_ROUND_TYPE( RANGE_ROUND_TYPE eType ) SWITCH eType CASE RT_INVALID RETURN "RT_INVALID" CASE RT_PISTOL_CHAL_1 RETURN "RT_PISTOL_CHAL_1" CASE RT_PISTOL_CHAL_2 RETURN "RT_PISTOL_CHAL_2" CASE RT_PISTOL_CHAL_3 RETURN "RT_PISTOL_CHAL_3" CASE RT_SMG_CHAL_1 RETURN "RT_SMG_CHAL_1" CASE RT_SMG_CHAL_2 RETURN "RT_SMG_CHAL_2" CASE RT_SMG_CHAL_3 RETURN "RT_SMG_CHAL_3" CASE RT_SHOTGUN_CHAL_1 RETURN "RT_SHOTGUN_CHAL_1" CASE RT_SHOTGUN_CHAL_2 RETURN "RT_SHOTGUN_CHAL_2" CASE RT_SHOTGUN_CHAL_3 RETURN "RT_SHOTGUN_CHAL_3" CASE RT_AR_CHAL_1 RETURN "RT_AR_CHAL_1" CASE RT_AR_CHAL_2 RETURN "RT_AR_CHAL_2" CASE RT_AR_CHAL_3 RETURN "RT_AR_CHAL_3" CASE RT_LMG_CHAL_1 RETURN "RT_LMG_CHAL_1" CASE RT_LMG_CHAL_2 RETURN "RT_LMG_CHAL_2" CASE RT_LMG_CHAL_3 RETURN "RT_LMG_CHAL_3" CASE RT_MINIGUN_CHAL_1 RETURN "RT_MINIGUN_CHAL_1" CASE RT_MINIGUN_CHAL_2 RETURN "RT_MINIGUN_CHAL_2" CASE RT_MINIGUN_CHAL_3 RETURN "RT_MINIGUN_CHAL_3" CASE RT_RAILGUN_CHAL_1 RETURN "RT_RAILGUN_CHAL_1" CASE RT_RAILGUN_CHAL_2 RETURN "RT_RAILGUN_CHAL_2" CASE RT_RAILGUN_CHAL_3 RETURN "RT_RAILGUN_CHAL_3" CASE RT_RAILGUN_CHAL_4 RETURN "RT_RAILGUN_CHAL_4" CASE RT_MAX_ROUND_TYPES RETURN "RT_MAX_ROUND_TYPES" ENDSWITCH RETURN "unknown RANGE_ROUND_TYPE" ENDFUNC FUNC STRING GET_STRING_FROM_RANGE_ROUND_MEDAL( RANGE_ROUND_MEDAL eMedal ) SWITCH eMedal CASE RRM_NONE RETURN "RRM_NONE" CASE RRM_BRONZE RETURN "RRM_BRONZE" CASE RRM_SILVER RETURN "RRM_SILVER" CASE RRM_GOLD RETURN "RRM_GOLD" ENDSWITCH RETURN "unknown RANGE_ROUND_MEDAL" ENDFUNC #ENDIF