Skip to content

Commit 423b8b5

Browse files
committed
Merge remote-tracking branch 'AlexRXWindy/adjust-player-stats' into dev
2 parents 7cedae6 + 87f9061 commit 423b8b5

File tree

15 files changed

+1553
-348
lines changed

15 files changed

+1553
-348
lines changed

[core]/es_extended/client/modules/adjustments.lua

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,107 @@ function Adjustments:Multipliers()
235235
end)
236236
end
237237

238+
function Adjustments:ApplyPlayerStats()
239+
if not Config.PlayerStatsByGender.enabled then return end
240+
241+
if Config.EnableDebug then
242+
print('[^3adjustments^7] applying player stats...')
243+
end
244+
245+
local gender = self:GetPlayerGender()
246+
if not gender then
247+
if Config.EnableDebug then
248+
print('[^1adjustments^7] failed to detect gender')
249+
end
250+
return
251+
end
252+
253+
local stats = Config.PlayerStatsByGender[gender]
254+
if not stats then
255+
if Config.EnableDebug then
256+
print('[^1adjustments^7] no stats found for gender: ' .. gender)
257+
end
258+
return
259+
end
260+
261+
if stats.stamina then
262+
SetRunSprintMultiplierForPlayer(ESX.playerId, stats.stamina)
263+
end
264+
265+
if stats.strength then
266+
SetPlayerMeleeWeaponDamageModifier(ESX.playerId, stats.strength)
267+
end
268+
269+
if stats.swimSpeed then
270+
SetSwimMultiplierForPlayer(ESX.playerId, stats.swimSpeed)
271+
end
272+
273+
-- moveSpeed requires continuous loop
274+
if stats.moveSpeed then
275+
self.currentMoveSpeed = stats.moveSpeed
276+
if not self.moveSpeedThreadRunning then
277+
self.moveSpeedThreadRunning = true
278+
CreateThread(function()
279+
while Config.PlayerStatsByGender.enabled and self.currentMoveSpeed do
280+
if ESX.PlayerData.ped then
281+
SetPedMoveRateOverride(ESX.PlayerData.ped, self.currentMoveSpeed)
282+
end
283+
Wait(0)
284+
end
285+
self.moveSpeedThreadRunning = false
286+
end)
287+
end
288+
end
289+
290+
if Config.EnableDebug then
291+
print('[^2adjustments^7] stats applied for gender: ' .. gender)
292+
end
293+
end
294+
295+
function Adjustments:GetPlayerGender()
296+
if not ESX.PlayerLoaded then
297+
if Config.EnableDebug then
298+
print('[^1adjustments^7] player not loaded yet')
299+
end
300+
return
301+
end
302+
303+
if Config.EnableDebug then
304+
print('[^3adjustments^7] detecting gender using: ' .. (Config.PlayerStatsByGender.useCharacterData and 'character data' or 'ped model'))
305+
end
306+
307+
if Config.PlayerStatsByGender.useCharacterData then
308+
-- Option 1: character data
309+
if ESX.PlayerData.sex then
310+
return ESX.PlayerData.sex == 'm' and 'male' or 'female'
311+
end
312+
else
313+
-- Option 2: ped model
314+
local model = GetEntityModel(ESX.PlayerData.ped)
315+
316+
for i = 1, #Config.PlayerStatsByGender.malePeds do
317+
if model == Config.PlayerStatsByGender.malePeds[i] then
318+
return 'male'
319+
end
320+
end
321+
322+
for i = 1, #Config.PlayerStatsByGender.femalePeds do
323+
if model == Config.PlayerStatsByGender.femalePeds[i] then
324+
return 'female'
325+
end
326+
end
327+
328+
-- Native fallback
329+
if IsPedMale(ESX.PlayerData.ped) then
330+
return 'male'
331+
else
332+
return 'female'
333+
end
334+
end
335+
336+
return nil
337+
end
338+
238339
function Adjustments:Load()
239340
self:RemoveHudComponents()
240341
self:DisableAimAssist()
@@ -250,4 +351,25 @@ function Adjustments:Load()
250351
self:WantedLevel()
251352
self:DisableRadio()
252353
self:Multipliers()
354+
355+
AddEventHandler('esx:playerLoaded', function(xPlayer, isNew, skin)
356+
self:ApplyPlayerStats()
357+
end)
358+
359+
if not Config.PlayerStatsByGender.useCharacterData then
360+
AddEventHandler('skinchanger:modelLoaded', function()
361+
self:ApplyPlayerStats()
362+
end)
363+
end
364+
365+
AddEventHandler('esx:onPlayerSpawn', function()
366+
self:ApplyPlayerStats()
367+
end)
368+
369+
if Config.PlayerStatsByGender.enabled and Config.EnableDebug then
370+
print('[^2adjustments^7] player stats by gender loaded')
371+
print('[^3adjustments^7] enabled: ' .. tostring(Config.PlayerStatsByGender.enabled))
372+
print('[^3adjustments^7] use character data: ' .. tostring(Config.PlayerStatsByGender.useCharacterData))
373+
print('[^3adjustments^7] debug mode: active')
374+
end
253375
end

[core]/es_extended/client/modules/streaming.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,4 +125,4 @@ function ESX.Streaming.RequestWeaponAsset(weaponHash, cb)
125125
end
126126

127127
return ret(cb, weaponHash)
128-
end
128+
end

[core]/es_extended/fxmanifest.lua

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,13 @@ version '1.13.4'
77

88
shared_scripts {
99
'locale.lua',
10-
11-
'shared/config/main.lua',
12-
'shared/config/weapons.lua',
10+
'shared/config/main.lua',
1311
'shared/config/adjustments.lua',
14-
12+
'shared/config/logs.lua',
13+
'shared/config/weapons.lua',
1514
'shared/main.lua',
15+
'shared/modules/*',
1616
'shared/functions.lua',
17-
'shared/modules/*.lua',
1817
}
1918

2019
server_scripts {
@@ -23,21 +22,19 @@ server_scripts {
2322

2423
'server/common.lua',
2524
'server/modules/callback.lua',
26-
'server/classes/player.lua',
27-
'server/classes/vehicle.lua',
28-
'server/classes/overrides/*.lua',
25+
'server/classes/*.*',
26+
'server/classes/xPlayer/main.lua',
2927
'server/functions.lua',
3028
'server/modules/onesync.lua',
3129
'server/modules/paycheck.lua',
30+
'server/modules/getXPlayer.lua',
3231

3332
'server/main.lua',
3433
'server/modules/commands.lua',
3534

3635
'server/bridge/**/*.lua',
3736
'server/modules/npwd.lua',
38-
'server/modules/createJob.lua',
39-
'server/migration/**/main.lua',
40-
'server/migration/main.lua',
37+
'server/modules/createJob.lua'
4138
}
4239

4340
client_scripts {
@@ -67,20 +64,12 @@ files {
6764
'locales/*.lua',
6865
'locale.js',
6966
'html/ui.html',
70-
71-
'html/css/app.css',
72-
73-
'html/js/mustache.min.js',
74-
'html/js/wrapper.js',
75-
'html/js/app.js',
76-
77-
'html/fonts/pdown.ttf',
78-
'html/fonts/bankgothic.ttf',
79-
"client/imports/*.lua",
67+
'html/**/*',
68+
'client/imports/*.lua',
8069
}
8170

8271
dependencies {
8372
'/native:0x6AE51D4B',
8473
'/native:0xA61C8FC6',
8574
'oxmysql',
86-
}
75+
}

0 commit comments

Comments
 (0)