diff --git a/[esx]/es_extended/client/main.lua b/[esx]/es_extended/client/main.lua index 2897991f..182c35bf 100644 --- a/[esx]/es_extended/client/main.lua +++ b/[esx]/es_extended/client/main.lua @@ -389,36 +389,32 @@ end function StartServerSyncLoops() if not Config.OxInventory then - -- keep track of ammo - CreateThread(function() - local currentWeapon = {timer=0} - while ESX.PlayerLoaded do - local sleep = 500 + -- keep track of ammo - if currentWeapon.timer == sleep then - local ammoCount = GetAmmoInPedWeapon(ESX.PlayerData.ped, currentWeapon.hash) - TriggerServerEvent('esx:updateWeaponAmmo', currentWeapon.name, ammoCount) - currentWeapon.timer = 0 - elseif currentWeapon.timer > sleep then - currentWeapon.timer = currentWeapon.timer - sleep - end - - if IsPedArmed(ESX.PlayerData.ped, 4) then - sleep = 0 - if IsPedShooting(ESX.PlayerData.ped) then - local _,weaponHash = GetCurrentPedWeapon(ESX.PlayerData.ped, true) - local weapon = ESX.GetWeaponFromHash(weaponHash) - - if weapon then - currentWeapon.name = weapon.name - currentWeapon.hash = weaponHash - currentWeapon.timer = 100 * sleep - end + CreateThread(function() + local currentWeapon = {Ammo = 0} + while ESX.PlayerLoaded do + local sleep = 250 + if IsPedArmed(ESX.PlayerData.ped, 4) or IsPedArmed(ESX.PlayerData.ped, 2) then + sleep = 0 + local _,weaponHash = GetCurrentPedWeapon(ESX.PlayerData.ped, true) + local weapon = ESX.GetWeaponFromHash(weaponHash) + if weapon then + local ammoCount = GetAmmoInPedWeapon(ESX.PlayerData.ped, weaponHash) + if weapon.name ~= currentWeapon.name then + currentWeapon.Ammo = ammoCount + currentWeapon.name = weapon.name + else + if ammoCount ~= currentWeapon.Ammo then + currentWeapon.Ammo = ammoCount + TriggerServerEvent('esx:updateWeaponAmmo', weapon.name, ammoCount) + end + end + end + end + Wait(sleep) end - end - Wait(sleep) - end - end) + end) end -- sync current player coords with server