diff --git a/scripts/server/item.js b/scripts/server/item.js index 9925f7c9..0e44e959 100644 --- a/scripts/server/item.js +++ b/scripts/server/item.js @@ -1063,8 +1063,17 @@ function playerSwitchItem(client, newHotBarSlot) { setPlayerWeaponDamageEnabled(client, true); setPlayerWeaponDamageEvent(client, VRR_WEAPON_DAMAGE_EVENT_NORMAL); } else { - messagePlayerError(client, getLocaleString(client, "ItemUnequippableNoAmmo", getItemName(newHotBarItem), newHotBarSlot)); - return false; + let ammoItemSlot = getPlayerFirstAmmoItemForWeapon(client, getItemTypeData(getItemData(newHotBarItem).itemTypeIndex).useId); + if(ammoItemSlot != false) { + getItemData(newHotBarItem).value = getItemData(getPlayerData(client).hotBarItems[ammoItemSlot]).value; + givePlayerWeapon(client, toInteger(getItemTypeData(getItemData(newHotBarItem).itemTypeIndex).useId), toInteger(getItemData(newHotBarItem).value), true, true); + setPlayerWeaponDamageEnabled(client, true); + setPlayerWeaponDamageEvent(client, VRR_WEAPON_DAMAGE_EVENT_NORMAL); + deleteItem(getPlayerData(client).hotBarItems[ammoItemSlot]); + } else { + messagePlayerError(client, getLocaleString(client, "ItemUnequippableNoAmmo", getItemName(newHotBarItem), newHotBarSlot)); + return false; + } } } else if(getItemTypeData(getItemData(newHotBarItem).itemTypeIndex).useType == VRR_ITEM_USETYPE_TAZER) { if(getItemData(newHotBarItem).value > 0) { @@ -2074,4 +2083,22 @@ function getItemTypeFromParams(params) { return false; } +// =========================================================================== + +function getPlayerFirstAmmoItemForWeapon(client, weaponId) { + for(let i in getPlayerData(client).hotBarItems) { + if(getPlayerData(client).hotBarItems[i] != -1) { + if(getItemData(getPlayerData(client).hotBarItems[i]) != false) { + if(getItemTypeData(getItemData(getPlayerData(client).hotBarItems[i]).itemTypeIndex).useType == VRR_ITEM_USETYPE_AMMO_CLIP) { + if(getItemTypeData(getItemData(getPlayerData(client).hotBarItems[i]).itemTypeIndex).useId == weaponId) { + return i; + } + } + } + } + } + + return false; +} + // =========================================================================== \ No newline at end of file