diff --git a/scripts/server/item.js b/scripts/server/item.js index 0e0092d3..e7bf69db 100644 --- a/scripts/server/item.js +++ b/scripts/server/item.js @@ -12,6 +12,7 @@ function initItemScript() { getServerData().itemTypes = loadItemTypesFromDatabase(); getServerData().items = loadItemsFromDatabase(); + setItemTypeDataIndexes(); setItemDataIndexes(); cacheAllGroundItems(); @@ -216,6 +217,10 @@ function useItemCommand(command, params, client) { return false; } + if(getItemTypeData(getItemData(itemId).itemTypeIndex).useAnimationIndex != false) { + makePlayerPlayAnimation(client, getItemTypeData(getItemData(itemId).itemTypeIndex).useAnimationIndex, 0.0); + } + getPlayerData(client).itemActionState = VRR_ITEM_ACTION_USE; getPlayerData(client).itemActionItem = hotBarSlot; showPlayerItemUseDelay(client, hotBarSlot); @@ -285,6 +290,10 @@ function pickupItemCommand(command, params, client) { return false; } + if(getItemTypeData(getItemData(itemId).itemTypeIndex).dropAnimationIndex != false) { + makePlayerPlayAnimation(client, getItemTypeData(getItemData(itemId).itemTypeIndex).pickupAnimationIndex, 0.0); + } + getPlayerData(client).itemActionState = VRR_ITEM_ACTION_PICKUP; getPlayerData(client).itemActionItem = itemId; showPlayerItemPickupDelay(client, itemId); @@ -342,6 +351,10 @@ function dropItemCommand(command, params, client) { return false; } + if(getItemTypeData(getItemData(itemId).itemTypeIndex).dropAnimationIndex != false) { + makePlayerPlayAnimation(client, getItemTypeData(getItemData(itemId).itemTypeIndex).dropAnimationIndex, 0.0); + } + getPlayerData(client).itemActionState = VRR_ITEM_ACTION_DROP; getPlayerData(client).itemActionItem = hotBarSlot; showPlayerItemDropDelay(client, hotBarSlot); @@ -385,6 +398,10 @@ function putItemCommand(command, params, client) { return false; } + if(getItemTypeData(getItemData(itemId).itemTypeIndex).putAnimationIndex != false) { + makePlayerPlayAnimation(client, getItemTypeData(getItemData(itemId).itemTypeIndex).putAnimationIndex, 0.0); + } + getPlayerData(client).itemActionItem = hotBarSlot; getPlayerData(client).itemActionState = VRR_ITEM_ACTION_PUT; showPlayerItemPutDelay(client, hotBarSlot); @@ -428,6 +445,10 @@ function takeItemCommand(command, params, client) { // return false; //} + if(getItemTypeData(getItemData(itemId).itemTypeIndex).takeAnimationIndex != false) { + makePlayerPlayAnimation(client, getItemTypeData(getItemData(itemId).itemTypeIndex).takeAnimationIndex, 0.0); + } + getPlayerData(client).itemActionItem = itemId; getPlayerData(client).itemActionState = VRR_ITEM_ACTION_TAKE; showPlayerItemTakeDelay(client, itemId); @@ -630,7 +651,7 @@ function playerUseItem(client, hotBarSlot) { break; case VRR_ITEM_USETYPE_DRINK: - meActionToNearbyPlayers(client, `drink some of their ${getItemName(itemIndex)}`); + meActionToNearbyPlayers(client, `drinks some of their ${getItemName(itemIndex)}`); givePlayerHealth(client, getItemTypeData(getItemData(itemIndex).itemTypeIndex).useValue); getItemData(itemIndex).value = getItemData(itemIndex).value - getItemTypeData(getItemData(itemIndex).itemTypeIndex).useValue; if(getItemData(itemIndex).value <= 0) { @@ -810,24 +831,27 @@ function playerUseItem(client, hotBarSlot) { case VRR_ITEM_USETYPE_SMOKEDRUG: meActionToNearbyPlayers(client, `smokes some ${getItemName(itemIndex)}`); - getPlayerData(client).incomingDamageMultiplier = getItemTypeData(getItemData(itemIndex).itemTypeIndex).useValue; - givePlayerHealth(client, 100); + if(getPlayerData(client).incomingDamageMultiplier-getItemTypeData(getItemData(itemIndex).itemTypeIndex).useValue > 25) { + getPlayerData(client).incomingDamageMultiplier = getPlayerData(client).incomingDamageMultiplier-getItemTypeData(getItemData(itemIndex).itemTypeIndex).useValue; + } deleteItem(itemIndex); switchPlayerActiveHotBarSlot(client, -1); break; case VRR_ITEM_USETYPE_SNORTDRUG: meActionToNearbyPlayers(client, `snorts some ${getItemName(itemIndex)}`); - getPlayerData(client).incomingDamageMultiplier = getItemTypeData(getItemData(itemIndex).itemTypeIndex).useValue; - givePlayerHealth(client, 100); + if(getPlayerData(client).incomingDamageMultiplier-getItemTypeData(getItemData(itemIndex).itemTypeIndex).useValue > 25) { + getPlayerData(client).incomingDamageMultiplier = getPlayerData(client).incomingDamageMultiplier-getItemTypeData(getItemData(itemIndex).itemTypeIndex).useValue; + } deleteItem(itemIndex); switchPlayerActiveHotBarSlot(client, -1); break; case VRR_ITEM_USETYPE_INJECTDRUG: meActionToNearbyPlayers(client, `shoots up some ${getItemName(itemIndex)}`); - getPlayerData(client).incomingDamageMultiplier = getItemTypeData(getItemData(itemIndex).itemTypeIndex).useValue; - givePlayerHealth(client, 100); + if(getPlayerData(client).incomingDamageMultiplier-getItemTypeData(getItemData(itemIndex).itemTypeIndex).useValue > 25) { + getPlayerData(client).incomingDamageMultiplier = getPlayerData(client).incomingDamageMultiplier-getItemTypeData(getItemData(itemIndex).itemTypeIndex).useValue; + } deleteItem(itemIndex); switchPlayerActiveHotBarSlot(client, -1); break; @@ -854,7 +878,7 @@ function playerUseItem(client, hotBarSlot) { } break; - case VRR_ITEM_USETYPE_AMMOCLIP: + case VRR_ITEM_USETYPE_AMMO_CLIP: messagePlayerError(client, `Equip a compatible weapon and press R to use an ammo clip/magazine`); break; @@ -1133,6 +1157,23 @@ function setItemDataIndexes() { // =========================================================================== +function setItemTypeDataIndexes() { + for(let i in getServerData().itemTypes) { + if(getServerData().itemTypes[i]) { + getServerData().itemTypes[i].index = i; + getServerData().itemTypes[i].useAnimationIndex = getAnimationFromParams(getServerData().itemTypes[i].useAnimationName); + getServerData().itemTypes[i].switchAnimationIndex = getAnimationFromParams(getServerData().itemTypes[i].switchAnimationName); + getServerData().itemTypes[i].dropAnimationIndex = getAnimationFromParams(getServerData().itemTypes[i].dropAnimationName); + getServerData().itemTypes[i].putAnimationIndex = getAnimationFromParams(getServerData().itemTypes[i].putAnimationName); + getServerData().itemTypes[i].takeAnimationIndex = getAnimationFromParams(getServerData().itemTypes[i].takeAnimationName); + getServerData().itemTypes[i].giveAnimationIndex = getAnimationFromParams(getServerData().itemTypes[i].giveAnimationName); + getServerData().itemTypes[i].pickupAnimationIndex = getAnimationFromParams(getServerData().itemTypes[i].pickupAnimationName); + } + } +} + +// =========================================================================== + function cacheAllGroundItems() { getServerData().groundItemCache = [];