diff --git a/scripts/server/item.js b/scripts/server/item.js index 14619472..06df3ca3 100644 --- a/scripts/server/item.js +++ b/scripts/server/item.js @@ -351,7 +351,14 @@ function playerUseItem(client, hotBarSlot) { switch(getItemTypeData(getItemData(itemIndex).itemTypeIndex).useType) { case AG_ITEM_USETYPE_SKIN: let oldSkin = getPlayerSkin(client); + if(isPlayerWorking(client)) { + oldSkin = getPlayerCurrentSubAccount(client).skin; + } + let newSkin = getItemData(itemIndex).value; + if(isPlayerWorking(client)) { + newSkin = getPlayerCurrentSubAccount(client).skin; + } setPlayerSkin(client, newSkin); getItemData(itemIndex).value = oldSkin; meActionToNearbyPlayers(client, `puts on ${getProperDeterminerForName(getSkinNameFromId(newSkin))} ${getSkinNameFromId(newSkin)} ${toLowerCase(getItemName(itemIndex))}`); @@ -487,6 +494,8 @@ function playerDropItem(client, hotBarSlot) { if(itemId != -1) { meActionToNearbyPlayers(client, `drops ${getProperDeterminerForName(getItemName(itemId))} ${getItemName(itemId)} on the ground`); + resyncWeaponItemAmmo(client); + getPlayerData(client).hotBarItems[hotBarSlot] = -1; updatePlayerHotBar(client); @@ -524,6 +533,8 @@ function playerPutItem(client, hotBarSlot) { break; } + resyncWeaponItemAmmo(client); + getItemData(itemId).ownerType = ownerType; getItemData(itemId).ownerId = ownerId; getItemData(itemId).position = toVector(0.0, 0.0, 0.0); @@ -603,15 +614,18 @@ function playerSwitchItem(client, newHotBarSlot) { newHotBarItem = getPlayerData(client).hotBarItems[newHotBarSlot]; } + resyncWeaponItemAmmo(client); + if(currentHotBarItem != -1) { if(getItemData(currentHotBarItem)) { if(getGlobalConfig().weaponEquippableTypes.indexOf(getItemTypeData(getItemData(currentHotBarItem).itemTypeIndex).useType) != -1) { - getItemData(currentHotBarItem).value = getPlayerWeaponAmmo(client); clearPlayerWeapons(client); } } } + + if(newHotBarItem != -1) { if(getItemData(newHotBarItem)) { if(getItemTypeData(getItemData(newHotBarItem).itemTypeIndex).useType == AG_ITEM_USETYPE_WEAPON) { @@ -892,6 +906,16 @@ function listPlayerInventoryCommand(command, params, client) { if(getPlayerData(client).hotBarItems[i] == -1) { itemDisplay.push(`[#CCCCCC]${toInteger(i)+1}: [#AAAAAA](Empty)`); } else { + if(getGlobalConfig().weaponEquippableTypes.indexOf(getItemTypeData(getItemData(getPlayerData(client).hotBarItems[i]).itemTypeIndex).useType)) { + if(getPlayerData(client).hotBarItems[i] == getPlayerData(client).hotBarItems[getPlayerData(client).currentHotBarItem]) { + if(getPlayerWeaponAmmo(client) <= getItemData(getPlayerData(client).hotBarItems[i]).value) { + getItemData(getPlayerData(client).hotBarItems[i]).value = getPlayerWeaponAmmo(client); + } else { + setPlayerWeaponAmmo(client, getItemTypeData(getItemData(getPlayerData(client).hotBarItems[i]).itemTypeIndex).useId, getItemData(getPlayerData(client).hotBarItems[i]).value); + } + } + } + itemDisplay.push(`[#CCCCCC]${toInteger(i)+1}: [#AAAAAA]${getItemTypeData(getItemData(getPlayerData(client).hotBarItems[i]).itemTypeIndex).name}[${getItemValueDisplay(getPlayerData(client).hotBarItems[i])}]`); } } @@ -1059,24 +1083,6 @@ function listItemInventoryCommand(command, params, client) { // --------------------------------------------------------------------------- -function stockItemOnBusinessFloorCommand(command, params, client) { - -} - -// --------------------------------------------------------------------------- - -function storeItemInBusinessStorageCommand(command, params, client) { - -} - -// --------------------------------------------------------------------------- - -function orderItemForBusinessCommand(command, params, client) { - -} - -// --------------------------------------------------------------------------- - function getItemData(itemId) { return getServerData().items[itemId]; } @@ -1275,4 +1281,22 @@ function getPlayerItemSlot(client, slot) { } } +// --------------------------------------------------------------------------- + +function resyncWeaponItemAmmo(client) { + if(getPlayerData(client).currentHotBarItem != -1) { + if(getPlayerData(client).hotBarItems[getPlayerData(client).currentHotBarItem] != -1) { + if(getItemData(getPlayerData(client).hotBarItems[getPlayerData(client).currentHotBarItem])) { + if(getGlobalConfig().weaponEquippableTypes.indexOf(getItemTypeData(getItemData(getPlayerData(client).hotBarItems[getPlayerData(client).currentHotBarItem]).itemTypeIndex).useType)) { + if(getPlayerWeaponAmmo(client) <= getItemData(getPlayerData(client).hotBarItems[getPlayerData(client).currentHotBarItem]).value) { + getItemData(getPlayerData(client).hotBarItems[getPlayerData(client).currentHotBarItem]).value = getPlayerWeaponAmmo(client); + } else { + setPlayerWeaponAmmo(client, getItemTypeData(getItemData(getPlayerData(client).hotBarItems[getPlayerData(client).currentHotBarItem]).itemTypeIndex).useId, getItemData(getPlayerData(client).hotBarItems[getPlayerData(client).currentHotBarItem]).value); + } + } + } + } + } +} + // --------------------------------------------------------------------------- \ No newline at end of file