No message. 83 files changed.
This commit is contained in:
@@ -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];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
Reference in New Issue
Block a user