From 348d8d9fe9205af73601580ba730b44d56f840a0 Mon Sep 17 00:00:00 2001 From: Vortrex <3858226+VortrexFTW@users.noreply.github.com> Date: Sat, 5 Feb 2022 10:55:34 -0600 Subject: [PATCH] Consume ammo item when equipping empty weapon --- scripts/server/item.js | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) 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