mirror of
https://github.com/esx-framework/esx_core.git
synced 2026-08-28 17:01:14 +00:00
feat(player-stats): add new configurable stats and new character stat options
This commit is contained in:
@@ -235,6 +235,73 @@ function Adjustments:Multipliers()
|
||||
end)
|
||||
end
|
||||
|
||||
function Adjustments:ApplyPlayerStats()
|
||||
if not Config.PlayerStatsByGender.enabled then return end
|
||||
|
||||
local gender = self:GetPlayerGender()
|
||||
if not gender then return end
|
||||
|
||||
local stats = Config.PlayerStatsByGender[gender]
|
||||
if not stats then return end
|
||||
|
||||
|
||||
SetPlayerMaxStamina(ESX.playerId, 100.0)
|
||||
RestorePlayerStamina(ESX.playerId, 100.0)
|
||||
SetRunSprintMultiplierForPlayer(ESX.playerId, stats.stamina)
|
||||
SetSwimMultiplierForPlayer(ESX.playerId, stats.stamina)
|
||||
|
||||
SetPedMoveRateOverride(ESX.PlayerData.ped, stats.stamina)
|
||||
|
||||
SetPlayerMeleeWeaponDamageModifier(ESX.playerId, stats.strength)
|
||||
SetPlayerWeaponDamageModifier(ESX.playerId, stats.strength)
|
||||
end
|
||||
|
||||
function Adjustments:GetPlayerGender()
|
||||
if not ESX.PlayerLoaded then return end
|
||||
|
||||
if Config.PlayerStatsByGender.useCharacterData then
|
||||
if ESX.PlayerData.sex then
|
||||
return ESX.PlayerData.sex == 'm' and 'male' or 'female'
|
||||
end
|
||||
|
||||
if ESX.PlayerData.gender then
|
||||
return ESX.PlayerData.gender == 0 and 'male' or 'female'
|
||||
end
|
||||
else
|
||||
local model = GetEntityModel(ESX.PlayerData.ped)
|
||||
if model == `mp_m_freemode_01` then
|
||||
return 'male'
|
||||
elseif model == `mp_f_freemode_01` then
|
||||
return 'female'
|
||||
end
|
||||
|
||||
if IsPedMale(ESX.PlayerData.ped) then
|
||||
return 'male'
|
||||
else
|
||||
return 'female'
|
||||
end
|
||||
end
|
||||
|
||||
return nil
|
||||
end
|
||||
|
||||
function Adjustments:RefreshPlayerStats()
|
||||
if not Config.PlayerStatsByGender.enabled then return end
|
||||
|
||||
local gender = self:GetPlayerGender()
|
||||
if not gender then return end
|
||||
|
||||
local stats = Config.PlayerStatsByGender[gender]
|
||||
if not stats then return end
|
||||
|
||||
SetRunSprintMultiplierForPlayer(ESX.playerId, stats.stamina)
|
||||
SetSwimMultiplierForPlayer(ESX.playerId, stats.stamina)
|
||||
SetPedMoveRateOverride(ESX.PlayerData.ped, stats.stamina)
|
||||
|
||||
SetPlayerMeleeWeaponDamageModifier(ESX.playerId, stats.strength)
|
||||
SetPlayerWeaponDamageModifier(ESX.playerId, stats.strength)
|
||||
end
|
||||
|
||||
function Adjustments:Load()
|
||||
self:RemoveHudComponents()
|
||||
self:DisableAimAssist()
|
||||
@@ -250,4 +317,16 @@ function Adjustments:Load()
|
||||
self:WantedLevel()
|
||||
self:DisableRadio()
|
||||
self:Multipliers()
|
||||
|
||||
AddEventHandler('esx:playerLoaded', function(xPlayer, isNew, skin)
|
||||
self:ApplyPlayerStats()
|
||||
end)
|
||||
|
||||
AddEventHandler('skinchanger:modelLoaded', function()
|
||||
self:RefreshPlayerStats()
|
||||
end)
|
||||
|
||||
AddEventHandler('esx:onPlayerSpawn', function()
|
||||
self:RefreshPlayerStats()
|
||||
end)
|
||||
end
|
||||
|
||||
@@ -44,6 +44,20 @@ Config.Multipliers = {
|
||||
vehicleDensity = 1.0
|
||||
}
|
||||
|
||||
Config.PlayerStatsByGender = {
|
||||
enabled = true,
|
||||
debugMode = true,
|
||||
useCharacterData = true, -- true: uses ESX.PlayerData.sex | false: uses ped model/skin
|
||||
male = {
|
||||
stamina = 1.0,
|
||||
strength = 1.0
|
||||
},
|
||||
female = {
|
||||
stamina = 1.15,
|
||||
strength = 0.85
|
||||
}
|
||||
}
|
||||
|
||||
-- Pattern string format
|
||||
--1 will lead to a random number from 0-9.
|
||||
--A will lead to a random letter from A-Z.
|
||||
|
||||
Reference in New Issue
Block a user