private async Task updateAmmoInWeapon() { await Delay(500); uint weaponHash = 0; if (API.GetCurrentPedWeapon(API.PlayerPedId(), ref weaponHash, false, 0, false)) { string weaponName = Function.Call<string>((Hash)0x89CF5FF3D363311E, weaponHash); //Debug.WriteLine(weaponName); if (weaponName.Contains("UNARMED")) { return; } Dictionary<string, int> ammoDict = new Dictionary<string, int>(); WeaponClass usedWeapon = null; foreach (KeyValuePair<int, WeaponClass> weap in userWeapons.ToList()) { if (weaponName.Contains(weap.Value.getName()) && weap.Value.getUsed()) { ammoDict = weap.Value.getAllAmmo(); usedWeapon = weap.Value; } } if (usedWeapon == null) return; foreach (var ammo in ammoDict.ToList()) { int ammoQuantity = Function.Call<int>((Hash)0x39D22031557946C1, API.PlayerPedId(), API.GetHashKey(ammo.Key)); if (ammoQuantity != ammo.Value) { usedWeapon.setAmmo(ammoQuantity, ammo.Key); } } } }//Update weapon ammo