////////////////////////////////////////////////////////////////////////////////////////// // // // SCRIPT NAME : stats_public.sch // // AUTHOR : Kenneth Ross // // DESCRIPTION : Contains helper funtion to get stat for specified // // character. // // // // ////////////////////////////////////////////////////////////////////////////////////////// USING "rage_builtins.sch" USING "globals.sch" USING "net_stat_system.sch" PROC DISABLE_PLAYER_PED_STAT_UPDATES_THIS_FRAME() g_bDisableStatUpdatesThisFrame = TRUE ENDPROC PROC INCREMENT_PLAYER_PED_STAT(enumCharacterList ePed, PLAYER_STATS_ENUM ePlayerStat, INT iAmount) PRINTLN("INCREMENT_PLAYER_PED_STAT - char=", ePed, ", stat=", ePlayerStat, ", ammount=", iAmount, ", script=", GET_THIS_SCRIPT_NAME()) INT iStatValue MP_INT_STATS mpIntStat SWITCH ePed CASE CHAR_MICHAEL CASE CHAR_FRANKLIN CASE CHAR_TREVOR g_savedGlobals.sPlayerData.sInfo.iPlayerStatScript[ePlayerStat][ePed] += iAmount BREAK CASE CHAR_MULTIPLAYER #IF USE_TU_CHANGES mpIntStat = MAX_NUM_MP_INT_STATS #ENDIF #IF NOT USE_TU_CHANGES mpIntStat = MP_STAT_PSTAT_INT9 //Matches the index of the FinalSub MAX_NUM_MP_INT_STATS. To be compiled into SP scripts. #ENDIF SWITCH ePlayerStat CASE PS_STAMINA mpIntStat = MP_STAT_SCRIPT_INCREASE_STAM BREAK CASE PS_LUNG_CAPACITY mpIntStat = MP_STAT_SCRIPT_INCREASE_LUNG BREAK CASE PS_STRENGTH mpIntStat = MP_STAT_SCRIPT_INCREASE_STRN BREAK CASE PS_DRIVING_ABILITY mpIntStat = MP_STAT_SCRIPT_INCREASE_DRIV BREAK CASE PS_FLYING_ABILITY mpIntStat = MP_STAT_SCRIPT_INCREASE_FLY BREAK CASE PS_SHOOTING_ABILITY mpIntStat = MP_STAT_SCRIPT_INCREASE_SHO BREAK CASE PS_STEALTH_ABILITY mpIntStat = MP_STAT_SCRIPT_INCREASE_STL BREAK ENDSWITCH #IF USE_TU_CHANGES IF mpIntStat != MAX_NUM_MP_INT_STATS iStatValue = GET_MP_INT_CHARACTER_STAT(mpIntStat) iStatValue += iAmount IF iStatValue > 100 iStatValue = 100 ENDIF SET_MP_INT_CHARACTER_STAT(mpIntStat, iStatValue) ENDIF #ENDIF #IF NOT USE_TU_CHANGES IF mpIntStat != MP_STAT_PSTAT_INT9 //Matches the index of the FinalSub MAX_NUM_MP_INT_STATS. To be compiled into SP scripts. iStatValue = GET_MP_INT_CHARACTER_STAT(mpIntStat) iStatValue += iAmount IF iStatValue > 100 iStatValue = 100 ENDIF SET_MP_INT_CHARACTER_STAT(mpIntStat, iStatValue) ENDIF #ENDIF BREAK ENDSWITCH ENDPROC /// PURPOSE: Returns the appropriate stat enum for the given ped and helper stat enum /// /// PARAMS: /// ePed - The player ped we want to get the stat for (CHAR_MICHAEL, CHAR_FRANKLIN, CHAR_TREVOR) /// ePlayerStat - The helper enum used to look up stats /// RETURNS: /// PROC GET_PLAYER_PED_STAT_ENUM(enumCharacterList ePed, PLAYER_STATS_ENUM ePlayerStat, STATSENUM &eSPStat, MP_INT_STATS &eMPStat) SWITCH ePed CASE CHAR_MICHAEL SWITCH ePlayerStat CASE PS_SPECIAL_ABILITY eSPStat = SP0_SPECIAL_ABILITY_UNLOCKED BREAK CASE PS_STAMINA eSPStat = SP0_STAMINA BREAK CASE PS_LUNG_CAPACITY eSPStat = SP0_LUNG_CAPACITY BREAK CASE PS_STRENGTH eSPStat = SP0_STRENGTH BREAK CASE PS_DRIVING_ABILITY eSPStat = SP0_WHEELIE_ABILITY BREAK CASE PS_FLYING_ABILITY eSPStat = SP0_FLYING_ABILITY BREAK CASE PS_SHOOTING_ABILITY eSPStat = SP0_SHOOTING_ABILITY BREAK CASE PS_STEALTH_ABILITY eSPStat = SP0_STEALTH_ABILITY BREAK ENDSWITCH BREAK CASE CHAR_FRANKLIN SWITCH ePlayerStat CASE PS_SPECIAL_ABILITY eSPStat = SP1_SPECIAL_ABILITY_UNLOCKED BREAK CASE PS_STAMINA eSPStat = SP1_STAMINA BREAK CASE PS_LUNG_CAPACITY eSPStat = SP1_LUNG_CAPACITY BREAK CASE PS_STRENGTH eSPStat = SP1_STRENGTH BREAK CASE PS_DRIVING_ABILITY eSPStat = SP1_WHEELIE_ABILITY BREAK CASE PS_FLYING_ABILITY eSPStat = SP1_FLYING_ABILITY BREAK CASE PS_SHOOTING_ABILITY eSPStat = SP1_SHOOTING_ABILITY BREAK CASE PS_STEALTH_ABILITY eSPStat = SP1_STEALTH_ABILITY BREAK ENDSWITCH BREAK CASE CHAR_TREVOR SWITCH ePlayerStat CASE PS_SPECIAL_ABILITY eSPStat = SP2_SPECIAL_ABILITY_UNLOCKED BREAK CASE PS_STAMINA eSPStat = SP2_STAMINA BREAK CASE PS_LUNG_CAPACITY eSPStat = SP2_LUNG_CAPACITY BREAK CASE PS_STRENGTH eSPStat = SP2_STRENGTH BREAK CASE PS_DRIVING_ABILITY eSPStat = SP2_WHEELIE_ABILITY BREAK CASE PS_FLYING_ABILITY eSPStat = SP2_FLYING_ABILITY BREAK CASE PS_SHOOTING_ABILITY eSPStat = SP2_SHOOTING_ABILITY BREAK CASE PS_STEALTH_ABILITY eSPStat = SP2_STEALTH_ABILITY BREAK ENDSWITCH BREAK CASE CHAR_MULTIPLAYER SWITCH ePlayerStat CASE PS_SPECIAL_ABILITY eMPStat = MP_STAT_SPECIAL_ABILITY BREAK CASE PS_STAMINA eMPStat = MP_STAT_STAMINA BREAK CASE PS_LUNG_CAPACITY eMPStat = MP_STAT_LUNG_CAPACITY BREAK CASE PS_STRENGTH eMPStat = MP_STAT_STRENGTH BREAK CASE PS_DRIVING_ABILITY eMPStat = MP_STAT_WHEELIE_ABILITY BREAK CASE PS_FLYING_ABILITY eMPStat = MP_STAT_FLYING_ABILITY BREAK CASE PS_SHOOTING_ABILITY eMPStat = MP_STAT_SHOOTING_ABILITY BREAK CASE PS_STEALTH_ABILITY eMPStat = MP_STAT_STEALTH_ABILITY BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC FUNC BOOL GET_PLAYER_PED_MAXED_STAT_ENUM(enumCharacterList ePed, PLAYER_STATS_ENUM ePlayerStat, STATSENUM &eSPStat) eSPStat = LAST_PLAYING_TIME SWITCH ePed CASE CHAR_MICHAEL SWITCH ePlayerStat CASE PS_SPECIAL_ABILITY eSPStat = SP0_SPECIAL_ABILITY_MAXED BREAK CASE PS_STAMINA eSPStat = SP0_STAMINA_MAXED BREAK CASE PS_LUNG_CAPACITY eSPStat = SP0_LUNG_CAPACITY_MAXED BREAK CASE PS_STRENGTH eSPStat = SP0_STRENGTH_MAXED BREAK CASE PS_DRIVING_ABILITY eSPStat = SP0_WHEELIE_ABILITY_MAXED BREAK CASE PS_FLYING_ABILITY eSPStat = SP0_FLYING_ABILITY_MAXED BREAK CASE PS_SHOOTING_ABILITY eSPStat = SP0_SHOOTING_ABILITY_MAXED BREAK CASE PS_STEALTH_ABILITY eSPStat = SP0_STEALTH_ABILITY_MAXED BREAK ENDSWITCH BREAK CASE CHAR_FRANKLIN SWITCH ePlayerStat CASE PS_SPECIAL_ABILITY eSPStat = SP1_SPECIAL_ABILITY_MAXED BREAK CASE PS_STAMINA eSPStat = SP1_STAMINA_MAXED BREAK CASE PS_LUNG_CAPACITY eSPStat = SP1_LUNG_CAPACITY_MAXED BREAK CASE PS_STRENGTH eSPStat = SP1_STRENGTH_MAXED BREAK CASE PS_DRIVING_ABILITY eSPStat = SP1_WHEELIE_ABILITY_MAXED BREAK CASE PS_FLYING_ABILITY eSPStat = SP1_FLYING_ABILITY_MAXED BREAK CASE PS_SHOOTING_ABILITY eSPStat = SP1_SHOOTING_ABILITY_MAXED BREAK CASE PS_STEALTH_ABILITY eSPStat = SP1_STEALTH_ABILITY_MAXED BREAK ENDSWITCH BREAK CASE CHAR_TREVOR SWITCH ePlayerStat CASE PS_SPECIAL_ABILITY eSPStat = SP2_SPECIAL_ABILITY_MAXED BREAK CASE PS_STAMINA eSPStat = SP2_STAMINA_MAXED BREAK CASE PS_LUNG_CAPACITY eSPStat = SP2_LUNG_CAPACITY_MAXED BREAK CASE PS_STRENGTH eSPStat = SP2_STRENGTH_MAXED BREAK CASE PS_DRIVING_ABILITY eSPStat = SP2_WHEELIE_ABILITY_MAXED BREAK CASE PS_FLYING_ABILITY eSPStat = SP2_FLYING_ABILITY_MAXED BREAK CASE PS_SHOOTING_ABILITY eSPStat = SP2_SHOOTING_ABILITY_MAXED BREAK CASE PS_STEALTH_ABILITY eSPStat = SP2_STEALTH_ABILITY_MAXED BREAK ENDSWITCH BREAK ENDSWITCH RETURN (eSPStat != LAST_PLAYING_TIME) ENDFUNC FUNC STATSENUM GET_SP_PLAYER_STAT_ENUM(enumCharacterList ePed, PLAYER_STATS_ENUM ePlayerStat) STATSENUM eSPStat MP_INT_STATS eMPStat GET_PLAYER_PED_STAT_ENUM(ePed, ePlayerStat, eSPStat, eMPStat) RETURN eSPStat ENDFUNC FUNC INT GET_SP_PLAYER_PED_STAT_VALUE(enumCharacterList ePed, PLAYER_STATS_ENUM ePlayerStat) INT iCurrentStatValue STATSENUM eSPStat = GET_SP_PLAYER_STAT_ENUM(ePed, ePlayerStat) STAT_GET_INT(eSPStat, iCurrentStatValue) RETURN iCurrentStatValue ENDFUNC FUNC MP_INT_STATS GET_MP_PLAYER_STAT_ENUM(PLAYER_STATS_ENUM ePlayerStat) STATSENUM eSPStat MP_INT_STATS eMPStat GET_PLAYER_PED_STAT_ENUM(CHAR_MULTIPLAYER, ePlayerStat, eSPStat, eMPStat) RETURN eMPStat ENDFUNC FUNC INT GET_MP_PLAYER_PED_STAT_VALUE(PLAYER_STATS_ENUM ePlayerStat, INT iSlot = -1) MP_INT_STATS eMPStat = GET_MP_PLAYER_STAT_ENUM(ePlayerStat) RETURN GET_MP_INT_CHARACTER_STAT(eMPStat, iSlot) ENDFUNC /// PURPOSE: Returns the appropriate stat label for the given helper stat enum /// /// PARAMS: /// ePlayerStat - The helper enum used to look up stats /// RETURNS: /// FUNC STRING GET_PLAYER_STAT_FEED_NAME(PLAYER_STATS_ENUM ePlayerStat) SWITCH ePlayerStat CASE PS_SPECIAL_ABILITY RETURN "PSF_SPEC_AB" BREAK CASE PS_STAMINA RETURN "PSF_STAMINA" BREAK CASE PS_LUNG_CAPACITY RETURN "PSF_LUNG" BREAK CASE PS_STRENGTH RETURN "PSF_STRENGTH" BREAK CASE PS_DRIVING_ABILITY RETURN "PSF_DRIVING" BREAK CASE PS_FLYING_ABILITY RETURN "PSF_FLYING" BREAK CASE PS_SHOOTING_ABILITY RETURN "PSF_SHOOTING" BREAK CASE PS_STEALTH_ABILITY RETURN "PSF_STEALTH" BREAK ENDSWITCH RETURN "ERROR" ENDFUNC /// PURPOSE: Returns the appropriate stat label for the given helper stat enum /// /// PARAMS: /// ePlayerStat - The helper enum used to look up stats /// RETURNS: /// FUNC STRING GET_PLAYER_STAT_DISPLAY_NAME(PLAYER_STATS_ENUM ePlayerStat) SWITCH ePlayerStat CASE PS_SPECIAL_ABILITY RETURN "PS_SPEC_AB" BREAK CASE PS_STAMINA RETURN "PS_STAMINA" BREAK CASE PS_LUNG_CAPACITY RETURN "PS_LUNG" BREAK CASE PS_STRENGTH RETURN "PS_STRENGTH" BREAK CASE PS_DRIVING_ABILITY RETURN "PS_DRIVING" BREAK CASE PS_FLYING_ABILITY RETURN "PS_FLYING" BREAK CASE PS_SHOOTING_ABILITY RETURN "PS_SHOOTING" BREAK CASE PS_STEALTH_ABILITY RETURN "PS_STEALTH" BREAK ENDSWITCH RETURN "ERROR" ENDFUNC FUNC ABILITY_ICON GET_PLAYER_STAT_FEED_ICON(PLAYER_STATS_ENUM ePlayerStat) SWITCH ePlayerStat CASE PS_SPECIAL_ABILITY RETURN ABILITY_SPECIAL_ABILITY_CAPACITY BREAK CASE PS_STAMINA RETURN ABILITY_STAMINA BREAK CASE PS_LUNG_CAPACITY RETURN ABILITY_LUNG_CAPACITY BREAK CASE PS_STRENGTH RETURN ABILITY_STRENGTH BREAK CASE PS_DRIVING_ABILITY RETURN ABILITY_DRIVING BREAK CASE PS_FLYING_ABILITY RETURN ABILITY_FLYING_ABILITY BREAK CASE PS_SHOOTING_ABILITY RETURN ABILITY_SHOOTING BREAK CASE PS_STEALTH_ABILITY RETURN ABILITY_STEALTH_ABILITY BREAK ENDSWITCH RETURN ABILITY_INVALID ENDFUNC FUNC INT GET_TOTAL_NUMBER_OF_HOURS_FOR_UNSIGNED_INT_STAT(STATSENUM eStat) INT iStatValue iStatValue = 0 iStatValue += (STAT_GET_NUMBER_OF_DAYS(eStat) * 24) iStatValue += (STAT_GET_NUMBER_OF_HOURS(eStat)) RETURN iStatValue ENDFUNC FUNC INT GET_TOTAL_NUMBER_OF_MINUTES_FOR_UNSIGNED_INT_STAT(STATSENUM eStat) INT iStatValue iStatValue = 0 iStatValue += (STAT_GET_NUMBER_OF_DAYS(eStat) * 1440) iStatValue += (STAT_GET_NUMBER_OF_HOURS(eStat) * 60) iStatValue += (STAT_GET_NUMBER_OF_MINUTES(eStat)) RETURN iStatValue ENDFUNC FUNC INT GET_TOTAL_NUMBER_OF_SECONDS_FOR_UNSIGNED_INT_STAT(STATSENUM eStat) INT iStatValue iStatValue = 0 iStatValue += (STAT_GET_NUMBER_OF_DAYS(eStat) * 86400) iStatValue += (STAT_GET_NUMBER_OF_HOURS(eStat) * 3600) iStatValue += (STAT_GET_NUMBER_OF_MINUTES(eStat) * 60) iStatValue += (STAT_GET_NUMBER_OF_SECONDS(eStat)) RETURN iStatValue ENDFUNC