No message. 83 files changed.

This commit is contained in:
Vortrex
2021-01-11 10:31:49 -06:00
parent ce8579364c
commit 7f2ee0c8d5
83 changed files with 1544 additions and 746 deletions

View File

@@ -1,7 +1,7 @@
// ===========================================================================
// Asshat-Gaming Roleplay
// https://github.com/VortrexFTW/gtac_asshat_rp
// Copyright (c) 2020 Asshat-Gaming (https://asshatgaming.com)
// Copyright (c) 2021 Asshat-Gaming (https://asshatgaming.com)
// ---------------------------------------------------------------------------
// FILE: item.js
// DESC: Provides item functions and usage
@@ -104,6 +104,7 @@ function createGroundItemObject(itemId) {
getItemData(itemId).object = gta.createObject(getItemTypeData(getItemData(itemId).itemTypeIndex).dropModel, applyOffsetToVector3(getItemData(itemId).position, getItemTypeData(getItemData(itemId).itemTypeIndex).dropPosition));
getItemData(itemId).object.setRotation(getItemTypeData(getItemData(itemId).itemTypeIndex).dropRotation);
getItemData(itemId).object.dimension = getItemData(itemId).dimension;
setEntityData(getItemData(itemId).object, "ag.scale", getItemTypeData(getItemData(itemId).itemTypeIndex).dropScale, true);
addToWorld(getItemData(itemId).object);
getServerData().groundItemCache.push(itemId);
@@ -146,7 +147,19 @@ function createGroundItemCommand(command, params, client) {
// ---------------------------------------------------------------------------
function useItemCommand(command, params, client) {
let hotBarSlot = toInteger(params) || getPlayerData(client).activeHotBarSlot;
let hotBarSlot = getPlayerData(client).activeHotBarSlot;
if(!areParamsEmpty(params)) {
hotBarSlot = toInteger(params);
hotBarSlot = hotBarSlot-1;
}
if(hotBarSlot == -1) {
return false;
}
if(getPlayerData(client).hotBarItems[hotBarSlot] == -1) {
return false;
}
let itemId = getPlayerData(client).hotBarItems[hotBarSlot];
@@ -162,10 +175,17 @@ function useItemCommand(command, params, client) {
return false;
}
playerUseItem(client, itemId);
if(getItemTypeData(getItemData(itemId).itemTypeIndex).useType == AG_ITEM_USETYPE_NONE || getItemTypeData(getItemData(itemId).itemTypeIndex).useType == AG_ITEM_USETYPE_WEAPON) {
return false;
}
getPlayerData(client).hotBarItems[hotBarSlot] = -1;
updatePlayerHotBar(client);
if(getPlayerData(client).itemOccupiedDelay) {
return false;
}
getPlayerData(client).itemActionItem = hotBarSlot;
getPlayerData(client).itemOccupiedDelay = true;
showPlayerItemUseDelay(client, hotBarSlot);
}
// ---------------------------------------------------------------------------
@@ -218,9 +238,13 @@ function pickupItemCommand(command, params, client) {
return false;
}
meActionToNearbyPlayers(client, `picks up ${getProperDeterminerForName(getItemTypeData(getItemData(itemId).itemTypeIndex).name)} ${getItemTypeData(getItemData(itemId).itemTypeIndex).name} from the ground`);
if(getPlayerData(client).itemActionState != AG_ITEM_ACTION_NONE) {
return false;
}
playerPickupItem(client, itemId);
getPlayerData(client).itemActionItem = itemId;
getPlayerData(client).itemOccupiedDelay = true;
showPlayerItemPickupDelay(client, itemId);
}
// ---------------------------------------------------------------------------
@@ -251,18 +275,19 @@ function dropItemCommand(command, params, client) {
return false;
}
playerDropItem(client, itemId);
if(getPlayerData(client).itemActionState != AG_ITEM_ACTION_NONE) {
return false;
}
meActionToNearbyPlayers(client, `drops ${getProperDeterminerForName(getItemTypeData(getItemData(itemId).itemTypeIndex).name)} ${getItemTypeData(getItemData(itemId).itemTypeIndex).name} on the ground`);
getPlayerData(client).hotBarItems[hotBarSlot] = -1;
updatePlayerHotBar(client);
getPlayerData(client).itemActionItem = hotBarSlot;
getPlayerData(client).itemActionState = AG_ITEM_ACTION_DROP;
showPlayerItemDropDelay(client, itemId);
}
// ---------------------------------------------------------------------------
function putItemCommand(command, params, client) {
let hotBarSlot = toInteger(params) || getPlayerData(client).activeHotBarSlot;
let hotBarSlot = toInteger(params);
let itemId = getPlayerData(client).hotBarItems[hotBarSlot];
@@ -278,32 +303,13 @@ function putItemCommand(command, params, client) {
return false;
}
let bestNewOwner = getBestNewOwnerToPutItem(client);
let itemName = getItemTypeData(getItemData(itemId).itemTypeIndex).name;
switch(bestNewOwner[0]) {
case AG_ITEM_OWNER_HOUSE:
meActionToNearbyPlayers(client, `places ${getProperDeterminerForName(itemName)} ${itemName} in the house`);
break;
case AG_ITEM_OWNER_BIZFLOOR:
meActionToNearbyPlayers(client, `places ${getProperDeterminerForName(itemName)} ${itemName} for sale in the business`);
break;
case AG_ITEM_OWNER_BIZSTORAGE:
meActionToNearbyPlayers(client, `places ${getProperDeterminerForName(itemName)} ${itemName} in the business storage room`);
break;
case AG_ITEM_OWNER_VEHTRUNK:
meActionToNearbyPlayers(client, `places ${getProperDeterminerForName(itemName)} ${itemName} in the ${getVehicleName(bestNewOwner[1])}'s trunk`);
break;
if(getPlayerData(client).itemActionState != AG_ITEM_ACTION_NONE) {
return false;
}
playerPutItem(client, itemId, bestNewOwner[0], bestNewOwner[1]);
getPlayerData(client).hotBarItems[hotBarSlot] = -1;
updatePlayerHotBar(client);
getPlayerData(client).itemActionItem = hotBarSlot;
getPlayerData(client).itemActionState = AG_ITEM_ACTION_PUT;
showPlayerItemPutDelay(client, hotBarSlot);
}
// ---------------------------------------------------------------------------
@@ -325,48 +331,20 @@ function takeItemCommand(command, params, client) {
return false;
}
if(!getItemData(itemId)) {
messagePlayerError(client, `The item you're trying to take is bugged. A bug report has been sent to the server developers.`);
submitBugReport(client, `(AUTOMATED REPORT) Put Item: Getting item data for item ${itemId} in player hotbar slot ${hotBarSlot} (cache ${getPlayerData(client).hotBarItems[hotBarSlot]}) returned false.`);
if(getPlayerData(client).itemActionState != AG_ITEM_ACTION_NONE) {
return false;
}
if(!getItemTypeData(getItemData(itemId).itemTypeIndex)) {
messagePlayerError(client, `The item you're trying to take is bugged. A bug report has been sent to the server developers.`);
submitBugReport(client, `(AUTOMATED REPORT) Put Item: Getting item type ${getItemData(itemId).itemType} data for item ${itemId}/${getItemData(itemId).databaseId} in player hotbar slot ${hotBarSlot} (cache ${getPlayerData(client).hotBarItems[hotBarSlot]}) returned false.`);
return false;
}
let itemName = getItemTypeData(getItemData(itemId).itemTypeIndex).name;
switch(bestOwner[1]) {
case AG_ITEM_OWNER_HOUSE:
meActionToNearbyPlayers(client, `takes ${getProperDeterminerForName(itemName)} ${itemName} from the house`);
break;
case AG_ITEM_OWNER_BIZFLOOR:
meActionToNearbyPlayers(client, `takes ${getProperDeterminerForName(itemName)} ${itemName} from the business`);
break;
case AG_ITEM_OWNER_BIZSTORAGE:
meActionToNearbyPlayers(client, `takes ${getProperDeterminerForName(itemName)} ${itemName} from the business storage room`);
break;
case AG_ITEM_OWNER_VEHTRUNK:
meActionToNearbyPlayers(client, `takes ${getProperDeterminerForName(itemName)} ${itemName} from the ${getVehicleName(bestOwner[1])}'s trunk`);
break;
}
playerTakeItem(client, itemId);
getPlayerData(client).hotBarItems[hotBarSlot] = -1;
updatePlayerHotBar(client);
getPlayerData(client).itemActionItem = itemId;
getPlayerData(client).itemActionState = AG_ITEM_ACTION_TAKE;
showPlayerItemTakeDelay(client, itemId);
}
// ---------------------------------------------------------------------------
function playerUseItem(client, itemIndex) {
let closestPlayer;
let tempUseValue;
switch(getItemTypeData(getItemData(itemIndex).itemTypeIndex).useType) {
case AG_ITEM_USETYPE_SKIN:
@@ -378,10 +356,7 @@ function playerUseItem(client, itemIndex) {
break;
case AG_ITEM_USETYPE_WEAPON:
//let weaponId = getItemTypeData(getItemData(itemIndex).itemTypeIndex).useId;
//let ammo = getItemData(itemIndex).useValue;
//givePlayerWeapon(client, weaponId, ammo);
//meActionToNearbyPlayers(client, `changes their clothes to ${getItemData(itemIndex).name}`);
messagePlayerError(client, `The ${getItemTypeData(getItemData(itemIndex).itemTypeIndex).name} is a weapon. To use it, switch to it from your items. The use key has no effect.`);
break;
case AG_ITEM_USETYPE_PHONE:
@@ -393,7 +368,7 @@ function playerUseItem(client, itemIndex) {
break;
case AG_ITEM_USETYPE_FOOD:
tempUseValue = (getItemTypeData(getItemData(itemIndex).itemTypeIndex).useId-getItemData(itemIndex).value > 0) ? getItemTypeData(getItemData(itemIndex).itemTypeIndex).useId : getItemData(itemIndex).value;
tempUseValue = (getItemTypeData(getItemData(itemIndex).itemTypeIndex).useValue-getItemData(itemIndex).value > 0) ? getItemTypeData(getItemData(itemIndex).itemTypeIndex).useValue : getItemData(itemIndex).value;
givePlayerHealth(client, tempUseValue);
if(getItemData(itemIndex).value-tempUseValue <= 0) {
getPlayerData(client).hotBarItems[getPlayerData(client).hotBarItems.indexOf(itemIndex)] = -1;
@@ -401,11 +376,11 @@ function playerUseItem(client, itemIndex) {
} else {
getItemData(itemIndex).value = getItemData(itemIndex).value-tempUseValue;
}
meActionToNearbyPlayers(client, `takes a bite of their ${getItemData(itemIndex).name}`);
meActionToNearbyPlayers(client, `takes a bite of their ${getItemTypeData(getItemData(itemIndex).itemTypeIndex).name}`);
break;
case AG_ITEM_USETYPE_DRINK:
tempUseValue = (getItemTypeData(getItemData(itemIndex).itemTypeIndex).useId-getItemData(itemIndex).value > 0) ? getItemTypeData(getItemData(itemIndex).itemTypeIndex).useId : getItemData(itemIndex).value;
tempUseValue = (getItemTypeData(getItemData(itemIndex).itemTypeIndex).useValue-getItemData(itemIndex).value > 0) ? getItemTypeData(getItemData(itemIndex).itemTypeIndex).useValue : getItemData(itemIndex).value;
givePlayerHealth(client, tempUseValue);
getItemData(itemIndex).value = getItemData(itemIndex).value - tempUseValue;
if(getItemData(itemIndex).value-tempUseValue <= 0) {
@@ -413,7 +388,7 @@ function playerUseItem(client, itemIndex) {
deleteItem(itemIndex);
} else {
getItemData(itemIndex).value = getItemData(itemIndex).value-tempUseValue;
meActionToNearbyPlayers(client, `takes a drink of their ${getItemData(itemIndex).name}`);
meActionToNearbyPlayers(client, `takes a drink of their ${getItemTypeData(getItemData(itemIndex).itemTypeIndex).name}`);
}
break;
@@ -444,111 +419,220 @@ function playerUseItem(client, itemIndex) {
return false;
}
break;
case AG_ITEM_USETYPE_NONE:
messagePlayerError(client, `The ${getItemTypeData(getItemData(itemIndex).itemTypeIndex).name} doesn't do anything when you try to use it.`);
break;
case AG_ITEM_USETYPE_WALKIETALKIE:
getItemData(itemIndex).enabled = !getItemData(itemIndex).enabled;
messagePlayerAlert(client, `You turned ${toUpperCase(getBoolRedGreenInlineColour(getOnOffFromBool(getItemData(itemIndex).enabled)))} your walkie talkie in slot ${getPlayerData(client).activeHotBarSlot+1} (${getItemValueDisplay(itemIndex)})`);
break;
case AG_ITEM_USETYPE_PHONE:
getItemData(itemIndex).enabled = !getItemData(itemIndex).enabled;
if(getItemData(itemIndex).enabled) {
messagePlayerAlert(client, `You turned on your phone in slot ${getPlayerData(client).activeHotBarSlot+1} (${getItemValueDisplay(itemIndex)})`);
} else {
messagePlayerAlert(client, `You turned OFF your phone in slot ${getPlayerData(client).activeHotBarSlot+1}`);
}
break;
default:
messagePlayerError(client, `The ${getItemTypeData(getItemData(itemIndex).itemTypeIndex).name} doesn't do anything when you try to use it.`);
break;
}
getItemData(itemIndex).needsSaved = true;
updatePlayerHotBar(client);
}
// ---------------------------------------------------------------------------
function playerDropItem(client, itemIndex) {
getItemData(itemIndex).ownerType = AG_ITEM_OWNER_GROUND;
getItemData(itemIndex).ownerId = 0;
getItemData(itemIndex).position = getPlayerPosition(client);
getItemData(itemIndex).dimension = getPlayerDimension(client);
createGroundItemObject(itemIndex);
getItemData(itemIndex).needsSaved = true;
function playerDropItem(client, hotBarSlot) {
let itemId = getPlayerData(client).hotBarItems[hotBarSlot];
if(itemId != -1) {
meActionToNearbyPlayers(client, `drops ${getProperDeterminerForName(getItemTypeData(getItemData(itemId).itemTypeIndex).name)} ${getItemTypeData(getItemData(itemId).itemTypeIndex).name} on the ground`);
getPlayerData(client).hotBarItems[hotBarSlot] = -1;
updatePlayerHotBar(client);
getItemData(itemId).ownerType = AG_ITEM_OWNER_GROUND;
getItemData(itemId).ownerId = 0;
getItemData(itemId).position = getPlayerPosition(client);
getItemData(itemId).dimension = getPlayerDimension(client);
createGroundItemObject(itemId);
getItemData(itemId).needsSaved = true;
}
}
// ---------------------------------------------------------------------------
function playerPutItem(client, itemIndex, ownerType, ownerId) {
getItemData(itemIndex).ownerType = ownerType;
getItemData(itemIndex).ownerId = ownerId;
getItemData(itemIndex).position = toVector(0.0, 0.0, 0.0);
getItemData(itemIndex).dimension = 0;
getItemData(itemIndex).needsSaved = true;
function playerPutItem(client, hotBarSlot) {
let itemId = getPlayerData(client).hotBarItems[hotBarSlot];
let bestNewOwner = getBestNewOwnerToPutItem(client);
let itemName = getItemTypeData(getItemData(itemId).itemTypeIndex).name;
switch(bestNewOwner[0]) {
case AG_ITEM_OWNER_HOUSE:
meActionToNearbyPlayers(client, `places ${getProperDeterminerForName(itemName)} ${itemName} in the house`);
break;
case AG_ITEM_OWNER_BIZFLOOR:
meActionToNearbyPlayers(client, `places ${getProperDeterminerForName(itemName)} ${itemName} for sale in the business`);
break;
case AG_ITEM_OWNER_BIZSTORAGE:
meActionToNearbyPlayers(client, `places ${getProperDeterminerForName(itemName)} ${itemName} in the business storage room`);
break;
case AG_ITEM_OWNER_VEHTRUNK:
meActionToNearbyPlayers(client, `places ${getProperDeterminerForName(itemName)} ${itemName} in the ${getVehicleName(bestNewOwner[1])}'s trunk`);
break;
}
getItemData(itemId).ownerType = ownerType;
getItemData(itemId).ownerId = ownerId;
getItemData(itemId).position = toVector(0.0, 0.0, 0.0);
getItemData(itemId).dimension = 0;
getItemData(itemId).needsSaved = true;
getPlayerData(client).hotBarItems[hotBarSlot] = -1;
updatePlayerHotBar(client);
}
// ---------------------------------------------------------------------------
function playerPickupItem(client, itemIndex) {
function playerPickupItem(client, itemId) {
meActionToNearbyPlayers(client, `picks up ${getProperDeterminerForName(getItemTypeData(getItemData(itemId).itemTypeIndex).name)} ${getItemTypeData(getItemData(itemId).itemTypeIndex).name} from the ground`);
let firstSlot = getPlayerFirstEmptyHotBarSlot(client);
if(firstSlot != -1) {
getItemData(itemIndex).ownerType = AG_ITEM_OWNER_PLAYER;
getItemData(itemIndex).ownerId = getPlayerCurrentSubAccount(client).databaseId;
getItemData(itemIndex).position = toVector3(0.0, 0.0, 0.0);
getItemData(itemIndex).dimension = 0;
getItemData(itemId).ownerType = AG_ITEM_OWNER_PLAYER;
getItemData(itemId).ownerId = getPlayerCurrentSubAccount(client).databaseId;
getItemData(itemId).position = toVector3(0.0, 0.0, 0.0);
getItemData(itemId).dimension = 0;
deleteGroundItemObject(itemIndex);
getPlayerData(client).hotBarItems[firstSlot] = itemIndex;
getPlayerData(client).hotBarItems[firstSlot] = itemId;
updatePlayerHotBar(client);
}
}
// ---------------------------------------------------------------------------
function playerTakeItem(client, itemIndex) {
function playerTakeItem(client, itemId) {
let itemName = getItemTypeData(getItemData(itemId).itemTypeIndex).name;
switch(bestOwner[1]) {
case AG_ITEM_OWNER_HOUSE:
meActionToNearbyPlayers(client, `takes ${getProperDeterminerForName(itemName)} ${itemName} from the house`);
break;
case AG_ITEM_OWNER_BIZFLOOR:
meActionToNearbyPlayers(client, `takes ${getProperDeterminerForName(itemName)} ${itemName} from the business`);
break;
case AG_ITEM_OWNER_BIZSTORAGE:
meActionToNearbyPlayers(client, `takes ${getProperDeterminerForName(itemName)} ${itemName} from the business storage room`);
break;
case AG_ITEM_OWNER_VEHTRUNK:
meActionToNearbyPlayers(client, `takes ${getProperDeterminerForName(itemName)} ${itemName} from the trunk`);
break;
}
let firstSlot = getPlayerFirstEmptyHotBarSlot(client);
if(firstSlot != -1) {
getItemData(itemIndex).ownerType = AG_ITEM_OWNER_PLAYER;
getItemData(itemIndex).ownerId = getPlayerCurrentSubAccount(client).databaseId;
getItemData(itemId).ownerType = AG_ITEM_OWNER_PLAYER;
getItemData(itemId).ownerId = getPlayerCurrentSubAccount(client).databaseId;
getPlayerData(client).hotBarItems[firstSlot] = itemIndex;
getPlayerData(client).hotBarItems[firstSlot] = itemId;
updatePlayerHotBar(client);
}
}
// ---------------------------------------------------------------------------
function playerSwitchItem(client, hotBarSlot) {
let currentHotBarSlot = getPlayerData(client).activeHotBarSlot;
logToConsole(LOG_DEBUG, `[Asshat.Item] ${getPlayerDisplayForConsole(client)} switched from hotbar slot ${currentHotBarSlot} to ${hotBarSlot}`);
if(currentHotBarSlot != -1 && getPlayerData(client).hotBarItems[currentHotBarSlot] != -1 && getPlayerData(client).hotBarItems[hotBarSlot] != -1) {
meActionToNearbyPlayers(client, `puts away ${getProperDeterminerForName(getItemTypeData(getItemData(getPlayerData(client).hotBarItems[currentHotBarSlot]).itemTypeIndex).name)} ${getItemTypeData(getItemData(getPlayerData(client).hotBarItems[currentHotBarSlot]).itemTypeIndex).name} and pulls out ${getProperDeterminerForName(getItemTypeData(getItemData(getPlayerData(client).hotBarItems[hotBarSlot]).itemTypeIndex).name)} ${getItemTypeData(getItemData(getPlayerData(client).hotBarItems[hotBarSlot]).itemTypeIndex).name}`);
} else if(currentHotBarSlot != -1 && getPlayerData(client).hotBarItems[currentHotBarSlot] != -1 && (hotBarSlot == -1 || getPlayerData(client).hotBarItems[hotBarSlot] == -1)) {
meActionToNearbyPlayers(client, `puts away ${getProperDeterminerForName(getItemTypeData(getItemData(getPlayerData(client).hotBarItems[currentHotBarSlot]).itemTypeIndex).name)} ${getItemTypeData(getItemData(getPlayerData(client).hotBarItems[currentHotBarSlot]).itemTypeIndex).name}`);
} else if((currentHotBarSlot == -1 || getPlayerData(client).hotBarItems[currentHotBarSlot] == -1) && getPlayerData(client).hotBarItems[hotBarSlot] != -1) {
meActionToNearbyPlayers(client, `pulls out ${getProperDeterminerForName(getItemTypeData(getItemData(getPlayerData(client).hotBarItems[hotBarSlot]).itemTypeIndex).name)} ${getItemTypeData(getItemData(getPlayerData(client).hotBarItems[hotBarSlot]).itemTypeIndex).name}`);
} else {
return false;
}
if(currentHotBarSlot != -1) {
if(getPlayerData(client).hotBarItems[currentHotBarSlot] != -1) {
if(getItemData(getPlayerData(client).hotBarItems[currentHotBarSlot])) {
if(getItemTypeData(getItemData(getPlayerData(client).hotBarItems[currentHotBarSlot]).itemTypeIndex).useType == AG_ITEM_USETYPE_WEAPON) {
getItemData(getPlayerData(client).hotBarItems[currentHotBarSlot]).value = getPlayerWeaponAmmo(client);
clearPlayerWeapons(client);
}
}
}
}
if(hotBarSlot != -1) {
if(getPlayerData(client).hotBarItems[hotBarSlot] != -1) {
if(getItemData(getPlayerData(client).hotBarItems[hotBarSlot])) {
if(getItemTypeData(getItemData(getPlayerData(client).hotBarItems[hotBarSlot]).itemTypeIndex).useType == AG_ITEM_USETYPE_WEAPON) {
givePlayerWeapon(client, toInteger(getItemTypeData(getItemData(getPlayerData(client).hotBarItems[hotBarSlot]).itemTypeIndex).useId), toInteger(getItemData(getPlayerData(client).hotBarItems[hotBarSlot]).value), true, true);
setPlayerWeaponDamageEnabled(client, true);
setPlayerWeaponDamageEvent(client, AG_WEAPON_DAMAGE_EVENT_NONE);
} else if(getItemTypeData(getItemData(getPlayerData(client).hotBarItems[hotBarSlot]).itemTypeIndex).useType == AG_ITEM_USETYPE_TAZER) {
givePlayerWeapon(client, toInteger(getItemTypeData(getItemData(getPlayerData(client).hotBarItems[hotBarSlot]).itemTypeIndex).useId), toInteger(getItemData(getPlayerData(client).hotBarItems[hotBarSlot]).value), true, true);
setPlayerWeaponDamageEnabled(client, false);
setPlayerWeaponDamageEvent(client, AG_WEAPON_DAMAGE_EVENT_TAZER);
}
}
}
}
getPlayerData(client).activeHotBarSlot = hotBarSlot;
updatePlayerHotBar(client);
}
// ---------------------------------------------------------------------------
function playerSwitchHotBarSlotCommand(command, params, client) {
if(areParamsEmpty(params)) {
messagePlayerSyntax(client, getCommandSyntaxText(command));
return false;
}
let hotBarSlot = toInteger(params) || getPlayerData(client).activeHotBarSlot;
let hotBarSlot = toInteger(params);
if(hotBarSlot < 0 || hotBarSlot > 9) {
messagePlayerError(client, "The slot to switch to must be between 0 and 9!");
messagePlayerError(client, "Use slot number between 1 and 9, or 0 for none!");
return false;
}
hotBarSlot = hotBarSlot-1;
let currentHotBarSlot = getPlayerData(client).activeHotBarSlot;
if(currentHotBarSlot != 0) {
if(getItemData(getPlayerData(client).hotBarItems[currentHotBarSlot])) {
if(getItemTypeData(getItemData(getPlayerData(client).hotBarItems[currentHotBarSlot]).itemTypeIndex).useType == AG_ITEM_USETYPE_WEAPON) {
getItemData(getPlayerData(client).hotBarItems[currentHotBarSlot]).value = getPlayerWeaponAmmo(client);
clearPlayerWeapons(client);
}
}
if(hotBarSlot == 0) {
hotBarSlot = -1;
} else {
hotBarSlot = hotBarSlot-1;
}
if(getItemData(getPlayerData(client).hotBarItems[hotBarSlot])) {
if(getItemTypeData(getItemData(getPlayerData(client).hotBarItems[hotBarSlot]).itemTypeIndex).useType == AG_ITEM_USETYPE_WEAPON) {
givePlayerWeapon(client, getItemTypeData(getItemData(getPlayerData(client).hotBarItems[hotBarSlot]).itemTypeIndex).useId, getItemData(getPlayerData(client).hotBarItems[hotBarSlot]).value, true);
setPlayerWeaponDamageEnabled(client, true);
setPlayerWeaponDamageEvent(client, AG_WEAPON_DAMAGE_EVENT_NONE);
} else if(getItemTypeData(getItemData(getPlayerData(client).hotBarItems[hotBarSlot]).itemTypeIndex).useType == AG_ITEM_USETYPE_TAZER) {
givePlayerWeapon(client, getItemTypeData(getItemData(getPlayerData(client).hotBarItems[hotBarSlot]).itemTypeIndex).useId, getItemData(getPlayerData(client).hotBarItems[hotBarSlot]).value, true);
setPlayerWeaponDamageEnabled(client, false);
setPlayerWeaponDamageEvent(client, AG_WEAPON_DAMAGE_EVENT_TAZER);
}
if(getPlayerData(client).activeHotBarSlot == hotBarSlot) {
return false;
}
if(getPlayerData(client).hotBarItems[currentHotBarSlot] != -1 && getPlayerData(client).hotBarItems[hotBarSlot] != -1) {
meActionToNearbyPlayers(client, `puts away ${getProperDeterminerForName(getItemTypeData(getItemData(getPlayerData(client).hotBarItems[currentHotBarSlot]).itemTypeIndex).name)} ${getItemTypeData(getItemData(getPlayerData(client).hotBarItems[currentHotBarSlot]).itemTypeIndex).name} and pulls out ${getProperDeterminerForName(getItemData(getPlayerData(client).hotBarItems[hotBarSlot]).name)} ${getItemData(getPlayerData(client).hotBarItems[hotBarSlot]).name}`);
} else if(getPlayerData(client).hotBarItems[currentHotBarSlot] != -1 && getPlayerData(client).hotBarItems[hotBarSlot] == -1) {
meActionToNearbyPlayers(client, `puts away ${getProperDeterminerForName(getItemTypeData(getItemData(getPlayerData(client).hotBarItems[currentHotBarSlot]).itemTypeIndex).name)} ${getItemTypeData(getItemData(getPlayerData(client).hotBarItems[currentHotBarSlot]).itemTypeIndex).name}`);
} else if(getPlayerData(client).hotBarItems[currentHotBarSlot] == -1 && getPlayerData(client).hotBarItems[hotBarSlot] != -1) {
meActionToNearbyPlayers(client, `pulls out ${getProperDeterminerForName(getItemTypeData(getItemData(getPlayerData(client).hotBarItems[hotBarSlot]).itemTypeIndex).name)} ${getItemTypeData(getItemData(getPlayerData(client).hotBarItems[hotBarSlot]).itemTypeIndex).name}`);
if(getPlayerData(client).itemActionState != AG_ITEM_ACTION_NONE) {
return false;
}
getPlayerData(client).activeHotBarSlot = hotBarSlot;
updatePlayerHotBar(client);
getPlayerData(client).itemActionItem = hotBarSlot;
getPlayerData(client).itemActionState = AG_ITEM_ACTION_SWITCH;
showPlayerItemSwitchDelay(client, hotBarSlot);
}
// ---------------------------------------------------------------------------
@@ -720,7 +804,7 @@ function listPlayerInventoryCommand(command, params, client) {
if(getPlayerData(client).hotBarItems[i] == -1) {
itemDisplay.push(`[#CCCCCC]${toInteger(i)+1}: [#AAAAAA](Empty)`);
} else {
itemDisplay.push(`[#CCCCCC]${toInteger(i)+1}: [#AAAAAA]${getItemTypeData(getItemData(getPlayerData(client).hotBarItems[i]).itemTypeIndex).name}[${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])}]`);
}
}
@@ -761,7 +845,7 @@ function listBusinessStorageInventoryCommand(command, params, client) {
if(getBusinessData(businessId).storageItemCache[i] == -1) {
itemDisplay.push(`[#CCCCCC]${toInteger(i)+1}[#AAAAAA](Empty)`);
} else {
itemDisplay.push(`[#CCCCCC]${toInteger(i)+1}: [#AAAAAA]${getItemTypeData(getItemData(getBusinessData(businessId).storageItemCache[i]).itemTypeIndex).name}[${getItemData(getBusinessData(businessId).storageItemCache[i]).value}]`);
itemDisplay.push(`[#CCCCCC]${toInteger(i)+1}: [#AAAAAA]${getItemTypeData(getItemData(getBusinessData(businessId).storageItemCache[i]).itemTypeIndex).name}[${getItemValueDisplay(getBusinessData(businessId).storageItemCache[i])}]`);
}
}
@@ -798,7 +882,7 @@ function listBusinessFloorInventoryCommand(command, params, client) {
if(getBusinessData(businessId).floorItemCache[i] == -1) {
itemDisplay.push(`[#CCCCCC]${toInteger(i)+1}[#AAAAAA](Empty)`);
} else {
itemDisplay.push(`[#CCCCCC]${toInteger(i)+1}: [#AAAAAA]${getItemTypeData(getItemData(getBusinessData(businessId).floorItemCache[i]).itemTypeIndex).name}[${getItemData(getBusinessData(businessId).floorItemCache[i]).value}]`);
itemDisplay.push(`[#CCCCCC]${toInteger(i)+1}: [#AAAAAA]${getItemTypeData(getItemData(getBusinessData(businessId).floorItemCache[i]).itemTypeIndex).name}[${getItemValueDisplay(getBusinessData(businessId).floorItemCache[i])}]`);
}
}
@@ -835,7 +919,7 @@ function listHouseInventoryCommand(command, params, client) {
if(getHouseData(houseId).itemCache[i] == -1) {
itemDisplay.push(`[#CCCCCC]${toInteger(i)+1}[#AAAAAA](Empty)`);
} else {
itemDisplay.push(`[#CCCCCC]${toInteger(i)+1}: [#AAAAAA]${getItemTypeData(getItemData(getHouseData(houseId).itemCache[i]).itemTypeIndex).name}[${getItemData(getBusinessData(houseId).itemCache[i]).value}]`);
itemDisplay.push(`[#CCCCCC]${toInteger(i)+1}: [#AAAAAA]${getItemTypeData(getItemData(getHouseData(houseId).itemCache[i]).itemTypeIndex).name}[${getItemValueDisplay(getBusinessData(houseId).itemCache[i])}]`);
}
}
@@ -872,7 +956,7 @@ function listItemInventoryCommand(command, params, client) {
if(getItemData(itemId).itemCache[i] == -1) {
itemDisplay.push(`[#CCCCCC]${toInteger(i)+1}[#AAAAAA](Empty)`);
} else {
itemDisplay.push(`[#CCCCCC]${toInteger(i)+1}: [#AAAAAA]${getItemTypeData(getItemData(getItemData(itemId).itemCache[i]).itemTypeIndex).name}[${getItemData(getItemData(itemId).itemCache[i]).value}]`);
itemDisplay.push(`[#CCCCCC]${toInteger(i)+1}: [#AAAAAA]${getItemTypeData(getItemData(getItemData(itemId).itemCache[i]).itemTypeIndex).name}[${getItemValueDisplay(getItemData(itemId).itemCache[i])}]`);
}
}
@@ -994,4 +1078,107 @@ function getItemTypeIndexFromDatabaseId(databaseId) {
}
}
// ---------------------------------------------------------------------------
function playerItemActionDelayComplete(client) {
switch(getPlayerData(client).itemActionState) {
case AG_ITEM_ACTION_USE:
playerUseItem(client, getPlayerData(client).itemActionItem);
break;
case AG_ITEM_ACTION_DROP:
playerDropItem(client, getPlayerData(client).itemActionItem);
break;
case AG_ITEM_ACTION_TAKE:
playerTakeItem(client, getPlayerData(client).itemActionItem);
break;
case AG_ITEM_ACTION_PUT:
playerPutItem(client, getPlayerData(client).itemActionItem);
break;
case AG_ITEM_ACTION_PICKUP:
playerPickupItem(client, getPlayerData(client).itemActionItem);
break;
case AG_ITEM_ACTION_SWITCH:
playerSwitchItem(client, getPlayerData(client).itemActionItem);
break;
}
getPlayerData(client).itemActionState = AG_ITEM_ACTION_NONE;
getPlayerData(client).itemActionItem = -1;
}
// ---------------------------------------------------------------------------
function getItemValueDisplay(itemId) {
if(getItemData(itemId)) {
if(getItemTypeData(getItemData(itemId).itemTypeIndex).useType == AG_ITEM_USETYPE_SKIN) {
return getSkinNameFromId(getItemData(itemId).value);
} else if(getItemTypeData(getItemData(itemId).itemTypeIndex).useType == AG_ITEM_USETYPE_FOOD) {
return toString(getItemData(itemId).value)+"%";
} else if(getItemTypeData(getItemData(itemId).itemTypeIndex).useType == AG_ITEM_USETYPE_PHONE) {
return toString(getItemData(itemId).value);
} else if(getItemTypeData(getItemData(itemId).itemTypeIndex).useType == AG_ITEM_USETYPE_WALKIETALKIE) {
return toString(toString(getItemData(itemId).value.slice(0,-2))+"."+toString(getItemData(itemId).value.slice(0,-2))+"MHz");
} else {
return getItemData(itemId).value;
}
}
return "unknown";
}
// ---------------------------------------------------------------------------
function getPlayerFirstItemSlotByUseType(client, useType) {
for(let i in getPlayerData(client).hotBarItems) {
if(getPlayerData(client).hotBarItems[i] != -1) {
if(getItemData(getPlayerData(client).hotBarItems[i])) {
if(getItemTypeData(getItemData(getPlayerData(client).hotBarItems[i]).itemTypeIndex).useType == useType) {
return i;
}
}
}
}
return -1;
}
// ---------------------------------------------------------------------------
function toggleItemEnabledCommand(command, params, client) {
if(!getPlayerActiveItem(client)) {
messagePlayerError(client, `You aren't holding anything!`);
return false;
}
if(!getItemData(getPlayerActiveItem(client))) {
messagePlayerError(client, `You aren't holding anything!`);
return false;
}
getItemData(getPlayerActiveItem(client)).enabled = !getItemData(getPlayerActiveItem(client)).enabled;
messagePlayerNormal(client, `You turned ${toUpperCase(getOnOffFromBool(getBoolRedGreenInlineColour(getItemData(getPlayerActiveItem(client)).enabled)))} (your ${getItemName(getPlayerActiveItem(client))} in slot ${getPlayerActiveItemSlot(client)}`)
}
// ---------------------------------------------------------------------------
function getItemName(itemId) {
if(getItemData(itemId)) {
return getItemTypeData(getItemData(itemId).typeIndex).name;
}
}
// ---------------------------------------------------------------------------
function getPlayerActiveItem(client) {
if(getPlayerData(client).activeHotBarSlot != -1) {
if(getPlayerData(client).hotBarItems[getPlayerData(client).activeHotBarSlot] != -1) {
return getPlayerData(client).hotBarItems[getPlayerData(client).activeHotBarSlot];
}
}
}
// ---------------------------------------------------------------------------