Use anims for item actions

This commit is contained in:
Vortrex
2022-01-06 13:35:50 -06:00
parent a04d145327
commit 0728c1f9e6

View File

@@ -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 = [];