GetAmmoInPedWeapon returns -1 on NPCs

Whenever setting the ammo of an NPC PED to the desired number, the PED’s ammo remains infinite, and GetAmmoInPedWeapon always returns -1. Is this a technological limitation of FiveM? Or is it something that the developers haven’t fixed yet? Or am I doing something very wrong in this logic?

local PedMurder = CreatePed(4, GetHashKey("a_m_m_business_01"), 0.0, 0.0, 0.0, 0.0, true, true)
SetEntityCoords(PedMurder, 1029.6010, 914.1136, 222.0574, false, false, false, false)
SetEntityHeading(PedMurder, 331.6583)
GiveWeaponToPed(PedMurder, GetHashKey("WEAPON_REVOLVER"))
SetCurrentPedWeapon(PedMurder, GetHashKey("WEAPON_REVOLVER"))
SetPedAmmo(PedMurder, GetHashKey("WEAPON_REVOLVER"), 6)
print(GetAmmoInPedWeapon(PedMurder, GetHashKey("WEAPON_REVOLVER")))

print returns: -1

You’re not getting/setting the weapon the PED is currently using.

Try using this native: GetSelectedPedWeapon - FiveM Natives @ Cfx.re Docs

local ammoInGun = GetAmmoInPedWeapon(PedMurder, GetCurrentPedWeapon(PedMurder))
print(ammoInGun) 

Now returns 0 after set 6 ammo, but the NPC have infinite bullets, i tried this too:

SetPedInfiniteAmmo(MurderNPC, false, GetSelectedPedWeapon(MurderNPC))
SetPedInfiniteAmmoClip(MurderNPC, false)

But NPC stay with infinite ammo, he shots 6 times and reload and continue, shoot more 6 times reload and continue, infinite…

Use this instead of GetSelectedPedWeapon:

Yes i change all to GetCurrentPedWeapon but its the same situation:

    local MurderNPCModel = GetHashKey("a_m_m_business_01")
    RequestModel(MurderNPCModel)
    while not HasModelLoaded(MurderNPCModel) do
        Citizen.Wait(0)
    end
    local MurderNPC = CreatePed(4, MurderNPCModel, 0.0, 0.0, 0.0, 0.0, true, true)
    if DoesEntityExist(MurderNPC) then TriggerServerEvent('custom:SetInitialNPCsBucketEqualSourcePlayerID', NetworkGetNetworkIdFromEntity(MurderNPC)) end
    SetEntityCoords(MurderNPC, 1029.6010, 914.1136, 222.0574, false, false, false, false)
    SetEntityHeading(MurderNPC, 331.6583)
    GiveWeaponToPed(MurderNPC, GetHashKey("WEAPON_REVOLVER"))
    SetCurrentPedWeapon(MurderNPC, GetHashKey("WEAPON_REVOLVER"), true)
    SetPedInfiniteAmmo(MurderNPC, false, GetCurrentPedWeapon(MurderNPC))
    SetPedInfiniteAmmoClip(MurderNPC, false)
    SetPedAmmo(PedMurder, GetCurrentPedWeapon(MurderNPC), 1)

Look

Is this a typo?

It is the variable that stores the PED (NPC)

Shouldn’t it be MurderNPC?

    local MurderNPCModel = GetHashKey("a_m_m_business_01")
    RequestModel(MurderNPCModel)
    while not HasModelLoaded(MurderNPCModel) do
        Citizen.Wait(0)
    end
    local MurderNPC = CreatePed(4, MurderNPCModel, 0.0, 0.0, 0.0, 0.0, true, true)
    if DoesEntityExist(MurderNPC) then TriggerServerEvent('custom:SetInitialNPCsBucketEqualSourcePlayerID', NetworkGetNetworkIdFromEntity(MurderNPC)) end
    SetEntityCoords(MurderNPC, 1029.6010, 914.1136, 222.0574, false, false, false, false)
    SetEntityHeading(MurderNPC, 331.6583)
    GiveWeaponToPed(MurderNPC, GetHashKey("WEAPON_REVOLVER"))
    SetCurrentPedWeapon(MurderNPC, GetHashKey("WEAPON_REVOLVER"), true)
    SetPedAmmo(MurderNPC, GetCurrentPedWeapon(MurderNPC), 1)
    print(GetAmmoInPedWeapon(MurderNPC, GetCurrentPedWeapon(MurderNPC)))

Sorry, yesterday I was very tired at night and I ended up not noticing lol, but even after adjusting this the NPC still has infinite ammo and continues to print 0 when trying to get how much ammo he has :frowning: