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().itemTypes = loadItemTypesFromDatabase();
getServerData().items = loadItemsFromDatabase(); getServerData().items = loadItemsFromDatabase();
setItemTypeDataIndexes();
setItemDataIndexes(); setItemDataIndexes();
cacheAllGroundItems(); cacheAllGroundItems();
@@ -216,6 +217,10 @@ function useItemCommand(command, params, client) {
return false; 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).itemActionState = VRR_ITEM_ACTION_USE;
getPlayerData(client).itemActionItem = hotBarSlot; getPlayerData(client).itemActionItem = hotBarSlot;
showPlayerItemUseDelay(client, hotBarSlot); showPlayerItemUseDelay(client, hotBarSlot);
@@ -285,6 +290,10 @@ function pickupItemCommand(command, params, client) {
return false; 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).itemActionState = VRR_ITEM_ACTION_PICKUP;
getPlayerData(client).itemActionItem = itemId; getPlayerData(client).itemActionItem = itemId;
showPlayerItemPickupDelay(client, itemId); showPlayerItemPickupDelay(client, itemId);
@@ -342,6 +351,10 @@ function dropItemCommand(command, params, client) {
return false; 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).itemActionState = VRR_ITEM_ACTION_DROP;
getPlayerData(client).itemActionItem = hotBarSlot; getPlayerData(client).itemActionItem = hotBarSlot;
showPlayerItemDropDelay(client, hotBarSlot); showPlayerItemDropDelay(client, hotBarSlot);
@@ -385,6 +398,10 @@ function putItemCommand(command, params, client) {
return false; return false;
} }
if(getItemTypeData(getItemData(itemId).itemTypeIndex).putAnimationIndex != false) {
makePlayerPlayAnimation(client, getItemTypeData(getItemData(itemId).itemTypeIndex).putAnimationIndex, 0.0);
}
getPlayerData(client).itemActionItem = hotBarSlot; getPlayerData(client).itemActionItem = hotBarSlot;
getPlayerData(client).itemActionState = VRR_ITEM_ACTION_PUT; getPlayerData(client).itemActionState = VRR_ITEM_ACTION_PUT;
showPlayerItemPutDelay(client, hotBarSlot); showPlayerItemPutDelay(client, hotBarSlot);
@@ -428,6 +445,10 @@ function takeItemCommand(command, params, client) {
// return false; // return false;
//} //}
if(getItemTypeData(getItemData(itemId).itemTypeIndex).takeAnimationIndex != false) {
makePlayerPlayAnimation(client, getItemTypeData(getItemData(itemId).itemTypeIndex).takeAnimationIndex, 0.0);
}
getPlayerData(client).itemActionItem = itemId; getPlayerData(client).itemActionItem = itemId;
getPlayerData(client).itemActionState = VRR_ITEM_ACTION_TAKE; getPlayerData(client).itemActionState = VRR_ITEM_ACTION_TAKE;
showPlayerItemTakeDelay(client, itemId); showPlayerItemTakeDelay(client, itemId);
@@ -630,7 +651,7 @@ function playerUseItem(client, hotBarSlot) {
break; break;
case VRR_ITEM_USETYPE_DRINK: 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); givePlayerHealth(client, getItemTypeData(getItemData(itemIndex).itemTypeIndex).useValue);
getItemData(itemIndex).value = getItemData(itemIndex).value - getItemTypeData(getItemData(itemIndex).itemTypeIndex).useValue; getItemData(itemIndex).value = getItemData(itemIndex).value - getItemTypeData(getItemData(itemIndex).itemTypeIndex).useValue;
if(getItemData(itemIndex).value <= 0) { if(getItemData(itemIndex).value <= 0) {
@@ -810,24 +831,27 @@ function playerUseItem(client, hotBarSlot) {
case VRR_ITEM_USETYPE_SMOKEDRUG: case VRR_ITEM_USETYPE_SMOKEDRUG:
meActionToNearbyPlayers(client, `smokes some ${getItemName(itemIndex)}`); meActionToNearbyPlayers(client, `smokes some ${getItemName(itemIndex)}`);
getPlayerData(client).incomingDamageMultiplier = getItemTypeData(getItemData(itemIndex).itemTypeIndex).useValue; if(getPlayerData(client).incomingDamageMultiplier-getItemTypeData(getItemData(itemIndex).itemTypeIndex).useValue > 25) {
givePlayerHealth(client, 100); getPlayerData(client).incomingDamageMultiplier = getPlayerData(client).incomingDamageMultiplier-getItemTypeData(getItemData(itemIndex).itemTypeIndex).useValue;
}
deleteItem(itemIndex); deleteItem(itemIndex);
switchPlayerActiveHotBarSlot(client, -1); switchPlayerActiveHotBarSlot(client, -1);
break; break;
case VRR_ITEM_USETYPE_SNORTDRUG: case VRR_ITEM_USETYPE_SNORTDRUG:
meActionToNearbyPlayers(client, `snorts some ${getItemName(itemIndex)}`); meActionToNearbyPlayers(client, `snorts some ${getItemName(itemIndex)}`);
getPlayerData(client).incomingDamageMultiplier = getItemTypeData(getItemData(itemIndex).itemTypeIndex).useValue; if(getPlayerData(client).incomingDamageMultiplier-getItemTypeData(getItemData(itemIndex).itemTypeIndex).useValue > 25) {
givePlayerHealth(client, 100); getPlayerData(client).incomingDamageMultiplier = getPlayerData(client).incomingDamageMultiplier-getItemTypeData(getItemData(itemIndex).itemTypeIndex).useValue;
}
deleteItem(itemIndex); deleteItem(itemIndex);
switchPlayerActiveHotBarSlot(client, -1); switchPlayerActiveHotBarSlot(client, -1);
break; break;
case VRR_ITEM_USETYPE_INJECTDRUG: case VRR_ITEM_USETYPE_INJECTDRUG:
meActionToNearbyPlayers(client, `shoots up some ${getItemName(itemIndex)}`); meActionToNearbyPlayers(client, `shoots up some ${getItemName(itemIndex)}`);
getPlayerData(client).incomingDamageMultiplier = getItemTypeData(getItemData(itemIndex).itemTypeIndex).useValue; if(getPlayerData(client).incomingDamageMultiplier-getItemTypeData(getItemData(itemIndex).itemTypeIndex).useValue > 25) {
givePlayerHealth(client, 100); getPlayerData(client).incomingDamageMultiplier = getPlayerData(client).incomingDamageMultiplier-getItemTypeData(getItemData(itemIndex).itemTypeIndex).useValue;
}
deleteItem(itemIndex); deleteItem(itemIndex);
switchPlayerActiveHotBarSlot(client, -1); switchPlayerActiveHotBarSlot(client, -1);
break; break;
@@ -854,7 +878,7 @@ function playerUseItem(client, hotBarSlot) {
} }
break; 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`); messagePlayerError(client, `Equip a compatible weapon and press R to use an ammo clip/magazine`);
break; 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() { function cacheAllGroundItems() {
getServerData().groundItemCache = []; getServerData().groundItemCache = [];