Merge branch 'nightly' into organizing
This commit is contained in:
@@ -698,3 +698,9 @@ function setElementHeading(elementId, heading) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|
||||||
|
function deleteLocalPlayerPed() {
|
||||||
|
destroyElement(localPlayer);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
@@ -59,6 +59,7 @@ function addAllNetworkHandlers() {
|
|||||||
addNetworkEventHandler("vrr.spawn", serverRequestedLocalPlayerSpawn);
|
addNetworkEventHandler("vrr.spawn", serverRequestedLocalPlayerSpawn);
|
||||||
addNetworkEventHandler("vrr.clearPedState", clearLocalPedState);
|
addNetworkEventHandler("vrr.clearPedState", clearLocalPedState);
|
||||||
addNetworkEventHandler("vrr.drunkEffect", setLocalPlayerDrunkEffect);
|
addNetworkEventHandler("vrr.drunkEffect", setLocalPlayerDrunkEffect);
|
||||||
|
addNetworkEventHandler("vrr.deleteLocalPlayerPed", deleteLocalPlayerPed);
|
||||||
|
|
||||||
// Vehicle
|
// Vehicle
|
||||||
addNetworkEventHandler("vrr.vehicle", receiveVehicleFromServer);
|
addNetworkEventHandler("vrr.vehicle", receiveVehicleFromServer);
|
||||||
|
|||||||
@@ -281,6 +281,7 @@ function doActionToNearbyPlayers(client, messageText) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
messageDiscordChatChannel(`🙋 *${messageText} (${getCharacterFullName(client)})*`);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
@@ -294,6 +295,7 @@ function meActionToNearbyPlayers(client, messageText) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
messageDiscordChatChannel(`🙋 *${getCharacterFullName(client)} ${messageText}*`);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|||||||
@@ -216,6 +216,7 @@ let globalConfig = {
|
|||||||
passwordRequiredSymbols: 0,
|
passwordRequiredSymbols: 0,
|
||||||
minChatLines: 1,
|
minChatLines: 1,
|
||||||
maxChatLines: 6,
|
maxChatLines: 6,
|
||||||
|
vehicleTrunkDistance: 2.0,
|
||||||
};
|
};
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|||||||
@@ -172,12 +172,12 @@ function onPedEnteringVehicle(event, ped, vehicle, seat) {
|
|||||||
if (getVehicleData(vehicle).locked) {
|
if (getVehicleData(vehicle).locked) {
|
||||||
if (doesPlayerHaveVehicleKeys(client, vehicle)) {
|
if (doesPlayerHaveVehicleKeys(client, vehicle)) {
|
||||||
if (!doesPlayerHaveKeyBindsDisabled(client) && doesPlayerHaveKeyBindForCommand(client, "lock")) {
|
if (!doesPlayerHaveKeyBindsDisabled(client) && doesPlayerHaveKeyBindForCommand(client, "lock")) {
|
||||||
messagePlayerTip(client, `🔒 This ${getVehicleName(vehicle)} is locked. Press {ALTCOLOUR}${toUpperCase(getKeyNameFromId(getPlayerKeyBindForCommand(client, "lock").key))} {MAINCOLOUR}to unlock it.`);
|
messagePlayerTip(client, getLocaleString(client, "VehicleLockedCommandTip", `{vehiclePurple}${getVehicleName(vehicle)}{MAINCOLOUR}`, `{ALTCOLOUR}${toUpperCase(getKeyNameFromId(getPlayerKeyBindForCommand(client, "lock").key))}{MAINCOLOUR}`));
|
||||||
} else {
|
} else {
|
||||||
messagePlayerNormal(client, `🔒 This ${getVehicleName(vehicle)} is locked. Use /lock to unlock it`);
|
messagePlayerTip(client, getLocaleString(client, "VehicleLockedCommandTip", `{vehiclePurple}${getVehicleName(vehicle)}{MAINCOLOUR}`, `{ALTCOLOUR}/lock{MAINCOLOUR}`));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
messagePlayerNormal(client, `🔒 This ${getVehicleName(vehicle)} is locked and you don't have the keys to unlock it`);
|
messagePlayerNormal(client, messagePlayerTip(client, getLocaleString(client, "VehicleLockedCantUnlock", `{vehiclePurple}${getVehicleName(vehicle)}{MAINCOLOUR}`)));
|
||||||
}
|
}
|
||||||
|
|
||||||
//getPlayerData(client).enteringVehicle = null;
|
//getPlayerData(client).enteringVehicle = null;
|
||||||
@@ -287,38 +287,38 @@ async function onPlayerEnteredVehicle(client, clientVehicle, seat) {
|
|||||||
messagePlayerAlert(client, getLocaleString(client, "VehicleForRent", getVehicleName(vehicle), `{ALTCOLOUR}$${makeLargeNumberReadable(getVehicleData(vehicle).rentPrice)}{MAINCOLOUR}`, `{ALTCOLOUR}/vehrent{MAINCOLOUR}`));
|
messagePlayerAlert(client, getLocaleString(client, "VehicleForRent", getVehicleName(vehicle), `{ALTCOLOUR}$${makeLargeNumberReadable(getVehicleData(vehicle).rentPrice)}{MAINCOLOUR}`, `{ALTCOLOUR}/vehrent{MAINCOLOUR}`));
|
||||||
resetVehiclePosition(vehicle);
|
resetVehiclePosition(vehicle);
|
||||||
} else {
|
} else {
|
||||||
messagePlayerAlert(client, `You are renting this ${getVehicleName(vehicle)} for {ALTCOLOUR}$${makeLargeNumberReadable(getVehicleData(vehicle).rentPrice)} per minute. {MAINCOLOUR}Use {ALTCOLOUR}/stoprent {MAINCOLOUR}if you want to stop renting it.`);
|
messagePlayerAlert(client, getLocaleString(client, "CurrentlyRentingThisVehicle", `{vehiclePurple}${getVehicleName(vehicle)}{MAINCOLOUR}`, `{ALTCOLOUR}$${makeLargeNumberReadable(getVehicleData(vehicle).rentPrice)}`, `{ALTCOLOUR}/stoprent{MAINCOLOUR}`));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let ownerName = "Nobody";
|
let ownerName = "Nobody";
|
||||||
let ownerType = "None";
|
let ownerType = getLocaleString(client, "NotOwned");
|
||||||
ownerType = toLowerCase(getVehicleOwnerTypeText(getVehicleData(vehicle).ownerType));
|
ownerType = toLowerCase(getVehicleOwnerTypeText(getVehicleData(vehicle).ownerType));
|
||||||
switch (getVehicleData(vehicle).ownerType) {
|
switch (getVehicleData(vehicle).ownerType) {
|
||||||
case VRR_VEHOWNER_CLAN:
|
case VRR_VEHOWNER_CLAN:
|
||||||
ownerName = getClanData(getClanIdFromDatabaseId(getVehicleData(vehicle).ownerId)).name;
|
ownerName = getClanData(getClanIdFromDatabaseId(getVehicleData(vehicle).ownerId)).name;
|
||||||
ownerType = "clan";
|
ownerType = getLocaleString(client, "Clan");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VRR_VEHOWNER_JOB:
|
case VRR_VEHOWNER_JOB:
|
||||||
ownerName = getJobData(getJobIdFromDatabaseId(getVehicleData(vehicle).ownerId)).name;
|
ownerName = getJobData(getJobIdFromDatabaseId(getVehicleData(vehicle).ownerId)).name;
|
||||||
ownerType = "job";
|
ownerType = getLocaleString(client, "Job");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VRR_VEHOWNER_PLAYER:
|
case VRR_VEHOWNER_PLAYER:
|
||||||
let subAccountData = loadSubAccountFromId(getVehicleData(vehicle).ownerId);
|
let subAccountData = loadSubAccountFromId(getVehicleData(vehicle).ownerId);
|
||||||
ownerName = `${subAccountData.firstName} ${subAccountData.lastName}`;
|
ownerName = `${subAccountData.firstName} ${subAccountData.lastName}`;
|
||||||
ownerType = "player";
|
ownerType = getLocaleString(client, "Player");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VRR_VEHOWNER_BIZ:
|
case VRR_VEHOWNER_BIZ:
|
||||||
ownerName = getBusinessData(getVehicleData(vehicle).ownerId).name;
|
ownerName = getBusinessData(getVehicleData(vehicle).ownerId).name;
|
||||||
ownerType = "business";
|
ownerType = getLocaleString(client, "Business");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
messagePlayerAlert(client, `This ${getVehicleName(vehicle)} belongs to {ALTCOLOUR}${ownerName} (${ownerType})`);
|
messagePlayerAlert(client, getLocaleString(client, "VehicleBelongsTo", `{vehiclePurple}${getVehicleName(vehicle)}{MAINCOLOUR}`, `{ALTCOLOUR}${ownerName}{MAINCOLOUR}`, `{ALTCOLOUR}${ownerType}{MAINCOLOUR}`));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!getVehicleData(vehicle).engine) {
|
if (!getVehicleData(vehicle).engine) {
|
||||||
@@ -513,12 +513,6 @@ async function onPlayerSpawn(client) {
|
|||||||
|
|
||||||
logToConsole(LOG_DEBUG, `[VRR.Event] ${getPlayerDisplayForConsole(client)}'s player data is valid. Continuing spawn processing ...`);
|
logToConsole(LOG_DEBUG, `[VRR.Event] ${getPlayerDisplayForConsole(client)}'s player data is valid. Continuing spawn processing ...`);
|
||||||
|
|
||||||
if (getGame() == VRR_GAME_GTA_IV) {
|
|
||||||
logToConsole(LOG_DEBUG, `[VRR.Event] Setting ${getPlayerDisplayForConsole(client)}'s ped body parts and props`);
|
|
||||||
setEntityData(getPlayerPed(client), "vrr.bodyParts", getPlayerCurrentSubAccount(client).bodyParts, true);
|
|
||||||
setEntityData(getPlayerPed(client), "vrr.bodyProps", getPlayerCurrentSubAccount(client).bodyProps, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
logToConsole(LOG_DEBUG, `[VRR.Event] Setting ${getPlayerDisplayForConsole(client)}'s ped scale (${getPlayerCurrentSubAccount(client).pedScale})`);
|
logToConsole(LOG_DEBUG, `[VRR.Event] Setting ${getPlayerDisplayForConsole(client)}'s ped scale (${getPlayerCurrentSubAccount(client).pedScale})`);
|
||||||
setEntityData(getPlayerPed(client), "vrr.scale", getPlayerCurrentSubAccount(client).pedScale, true);
|
setEntityData(getPlayerPed(client), "vrr.scale", getPlayerCurrentSubAccount(client).pedScale, true);
|
||||||
|
|
||||||
@@ -527,7 +521,7 @@ async function onPlayerSpawn(client) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isCustomCameraSupported()) {
|
if (isCustomCameraSupported() && getGame() != VRR_GAME_GTA_IV && getGame() != VRR_GAME_GTA_IV_EFLC) {
|
||||||
restorePlayerCamera(client);
|
restorePlayerCamera(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -53,8 +53,6 @@ function helpCommand(command, params, client) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
let splitParams = params.split(" ");
|
|
||||||
|
|
||||||
switch (toLowerCase(getParam(params, " ", 1))) {
|
switch (toLowerCase(getParam(params, " ", 1))) {
|
||||||
case "account":
|
case "account":
|
||||||
showAccountHelpMessage(client);
|
showAccountHelpMessage(client);
|
||||||
|
|||||||
@@ -328,8 +328,6 @@ function createGroundItemObject(itemId) {
|
|||||||
//setEntityData(getItemData(itemId).object, "vrr.scale", getItemTypeData(getItemData(itemId).itemTypeIndex).dropScale, true);
|
//setEntityData(getItemData(itemId).object, "vrr.scale", getItemTypeData(getItemData(itemId).itemTypeIndex).dropScale, true);
|
||||||
addToWorld(getItemData(itemId).object);
|
addToWorld(getItemData(itemId).object);
|
||||||
}
|
}
|
||||||
|
|
||||||
getServerData().groundItemCache.push(itemId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
@@ -519,26 +517,26 @@ function pickupItemCommand(command, params, client) {
|
|||||||
|
|
||||||
if (!getItemData(itemId)) {
|
if (!getItemData(itemId)) {
|
||||||
//messagePlayerError(client, `The item you're trying to pick up is bugged. A bug report has been sent to the server developers.`);
|
//messagePlayerError(client, `The item you're trying to pick up is bugged. A bug report has been sent to the server developers.`);
|
||||||
messagePlayerError(client, getPlayerLocale(client, "NoItemCloseEnough"));
|
messagePlayerError(client, getLocaleString(client, "NoItemCloseEnough"));
|
||||||
submitBugReport(client, `(AUTOMATED REPORT) Pickup Item: Getting item data for item ${itemId} on ground returned false.`);
|
submitBugReport(client, `(AUTOMATED REPORT) Pickup Item: Getting item data for item ${itemId} on ground returned false.`);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!getItemTypeData(getItemData(itemId).itemTypeIndex)) {
|
if (!getItemTypeData(getItemData(itemId).itemTypeIndex)) {
|
||||||
//messagePlayerError(client, `The item you're trying to pick up is bugged. A bug report has been sent to the server developers.`);
|
//messagePlayerError(client, `The item you're trying to pick up is bugged. A bug report has been sent to the server developers.`);
|
||||||
messagePlayerError(client, getPlayerLocale(client, "NoItemCloseEnough"));
|
messagePlayerError(client, getLocaleString(client, "NoItemCloseEnough"));
|
||||||
submitBugReport(client, `(AUTOMATED REPORT) Pickup Item: Getting item type ${getItemData(itemId).itemType} data for item ${itemId}/${getItemData(itemId).databaseId} on ground returned false.`);
|
submitBugReport(client, `(AUTOMATED REPORT) Pickup Item: Getting item type ${getItemData(itemId).itemType} data for item ${itemId}/${getItemData(itemId).databaseId} on ground returned false.`);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getDistance(getPlayerPosition(client), getItemData(itemId).position) > getGlobalConfig().droppedItemPickupRange) {
|
if (getDistance(getPlayerPosition(client), getItemData(itemId).position) > getGlobalConfig().droppedItemPickupRange) {
|
||||||
messagePlayerError(client, getPlayerLocale(client, "NoItemCloseEnough"));
|
messagePlayerError(client, getLocaleString(client, "NoItemCloseEnough"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
let firstSlot = getPlayerFirstEmptyHotBarSlot(client);
|
let firstSlot = getPlayerFirstEmptyHotBarSlot(client);
|
||||||
if (firstSlot == -1) {
|
if (firstSlot == -1) {
|
||||||
messagePlayerError(client, getPlayerLocale(client, "NoSpaceSelfInventory"));
|
messagePlayerError(client, getLocaleString(client, "NoSpaceSelfInventory"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -682,8 +680,8 @@ function putItemCommand(command, params, client) {
|
|||||||
forcePlayerPlayAnimation(client, getItemTypeData(getItemData(itemId).itemTypeIndex).putAnimationIndex, 0.0);
|
forcePlayerPlayAnimation(client, getItemTypeData(getItemData(itemId).itemTypeIndex).putAnimationIndex, 0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
getPlayerData(client).itemActionItem = hotBarSlot;
|
|
||||||
getPlayerData(client).itemActionState = VRR_ITEM_ACTION_PUT;
|
getPlayerData(client).itemActionState = VRR_ITEM_ACTION_PUT;
|
||||||
|
getPlayerData(client).itemActionItem = hotBarSlot;
|
||||||
showPlayerItemPutDelay(client, hotBarSlot);
|
showPlayerItemPutDelay(client, hotBarSlot);
|
||||||
|
|
||||||
//clearPlayerItemActionStateAfterDelay(client, getGlobalConfig().itemActionStateReset);
|
//clearPlayerItemActionStateAfterDelay(client, getGlobalConfig().itemActionStateReset);
|
||||||
@@ -1013,7 +1011,7 @@ function playerUseItem(client, hotBarSlot) {
|
|||||||
case VRR_ITEM_USETYPE_FOOD: {
|
case VRR_ITEM_USETYPE_FOOD: {
|
||||||
meActionToNearbyPlayers(client, `eats some of their ${itemTypeData.name}`);
|
meActionToNearbyPlayers(client, `eats some of their ${itemTypeData.name}`);
|
||||||
givePlayerHealth(client, itemTypeData.useValue);
|
givePlayerHealth(client, itemTypeData.useValue);
|
||||||
itemData.value = itemData.value - tempItemTypeData.useValue;
|
itemData.value = itemData.value - itemTypeData.useValue;
|
||||||
if (getItemData(itemIndex).value <= 0) {
|
if (getItemData(itemIndex).value <= 0) {
|
||||||
deleteItem(itemIndex);
|
deleteItem(itemIndex);
|
||||||
switchPlayerActiveHotBarSlot(client, -1);
|
switchPlayerActiveHotBarSlot(client, -1);
|
||||||
@@ -1338,10 +1336,12 @@ function playerDropItem(client, hotBarSlot) {
|
|||||||
|
|
||||||
getItemData(itemId).ownerType = VRR_ITEM_OWNER_GROUND;
|
getItemData(itemId).ownerType = VRR_ITEM_OWNER_GROUND;
|
||||||
getItemData(itemId).ownerId = 0;
|
getItemData(itemId).ownerId = 0;
|
||||||
getItemData(itemId).position = getPlayerPosition(client);
|
getItemData(itemId).position = getPosInFrontOfPos(getPlayerPosition(client), getPlayerHeading(client), getItemTypeData(getItemData(itemId).itemTypeIndex).dropFrontDistance);
|
||||||
getItemData(itemId).dimension = getPlayerDimension(client);
|
getItemData(itemId).dimension = getPlayerDimension(client);
|
||||||
|
//getItemData(itemId).interior = getPlayerInterior(client);
|
||||||
createGroundItemObject(itemId);
|
createGroundItemObject(itemId);
|
||||||
getItemData(itemId).needsSaved = true;
|
getItemData(itemId).needsSaved = true;
|
||||||
|
getServerData().groundItemCache.push(itemId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1352,9 +1352,12 @@ function playerPutItem(client, hotBarSlot) {
|
|||||||
|
|
||||||
let bestNewOwner = getBestNewOwnerToPutItem(client);
|
let bestNewOwner = getBestNewOwnerToPutItem(client);
|
||||||
|
|
||||||
|
if (bestNewOwner[0] == VRR_ITEM_OWNER_NONE) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
getItemData(itemId).ownerType = bestNewOwner[0];
|
getItemData(itemId).ownerType = bestNewOwner[0];
|
||||||
getItemData(itemId).ownerId = bestNewOwner[1];
|
getItemData(itemId).position = toVector3(0.0, 0.0, 0.0);
|
||||||
getItemData(itemId).position = toVector(0.0, 0.0, 0.0);
|
|
||||||
getItemData(itemId).dimension = 0;
|
getItemData(itemId).dimension = 0;
|
||||||
getItemData(itemId).needsSaved = true;
|
getItemData(itemId).needsSaved = true;
|
||||||
|
|
||||||
@@ -1366,19 +1369,33 @@ function playerPutItem(client, hotBarSlot) {
|
|||||||
|
|
||||||
switch (bestNewOwner[0]) {
|
switch (bestNewOwner[0]) {
|
||||||
case VRR_ITEM_OWNER_HOUSE:
|
case VRR_ITEM_OWNER_HOUSE:
|
||||||
meActionToNearbyPlayers(client, `places ${getProperDeterminerForName(getItemName(itemId))} ${getItemName(itemId)} in the house`);
|
getItemData(itemId).ownerId = getHouseData(bestNewOwner[1]).databaseId;
|
||||||
|
meActionToNearbyPlayers(client, `puts ${getProperDeterminerForName(getItemName(itemId))} ${getItemName(itemId)} in the house`);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VRR_ITEM_OWNER_BIZFLOOR:
|
case VRR_ITEM_OWNER_BIZFLOOR:
|
||||||
meActionToNearbyPlayers(client, `places ${getProperDeterminerForName(getItemName(itemId))} ${getItemName(itemId)} for sale in the business`);
|
getItemData(itemId).ownerId = getBusinessData(bestNewOwner[1]).databaseId;
|
||||||
|
meActionToNearbyPlayers(client, `puts ${getProperDeterminerForName(getItemName(itemId))} ${getItemName(itemId)} for sale in the business`);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VRR_ITEM_OWNER_BIZSTORAGE:
|
case VRR_ITEM_OWNER_BIZSTORAGE:
|
||||||
meActionToNearbyPlayers(client, `places ${getProperDeterminerForName(getItemName(itemId))} ${getItemName(itemId)} in the business storage room`);
|
getItemData(itemId).ownerId = getBusinessData(bestNewOwner[1]).databaseId;
|
||||||
|
meActionToNearbyPlayers(client, `puts ${getProperDeterminerForName(getItemName(itemId))} ${getItemName(itemId)} in the business storage room`);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VRR_ITEM_OWNER_VEHTRUNK:
|
case VRR_ITEM_OWNER_VEHTRUNK:
|
||||||
meActionToNearbyPlayers(client, `places ${getProperDeterminerForName(getItemName(itemId))} ${getItemName(itemId)} in the ${getVehicleName(getVehicleFromDatabaseId(bestNewOwner[1]))}'s trunk`);
|
getItemData(itemId).ownerId = getVehicleData(bestNewOwner[1]).databaseId;
|
||||||
|
meActionToNearbyPlayers(client, `puts ${getProperDeterminerForName(getItemName(itemId))} ${getItemName(itemId)} in the ${getVehicleName(getVehicleFromDatabaseId(bestNewOwner[1]))}'s trunk`);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VRR_ITEM_OWNER_VEHDASH:
|
||||||
|
getItemData(itemId).ownerId = getVehicleData(bestNewOwner[1]).databaseId;
|
||||||
|
meActionToNearbyPlayers(client, `puts ${getProperDeterminerForName(getItemName(itemId))} ${getItemName(itemId)} in the ${getVehicleName(getVehicleFromDatabaseId(bestNewOwner[1]))}'s dash compartment`);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VRR_ITEM_OWNER_ITEM:
|
||||||
|
getItemData(itemId).ownerId = getItemData(bestNewOwner[1]).databaseId;
|
||||||
|
meActionToNearbyPlayers(client, `puts ${getProperDeterminerForName(getItemName(itemId))} ${getItemName(itemId)} in the ${getItemName(bestNewOwner[1])}`);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1587,15 +1604,19 @@ function playerSwitchHotBarSlotCommand(command, params, client) {
|
|||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|
||||||
function getClosestItemOnGround(position) {
|
function getClosestItemOnGround(position) {
|
||||||
let items = getServerData().groundItemCache;
|
let groundItems = getServerData().groundItemCache;
|
||||||
|
if (groundItems.length != 0) {
|
||||||
let closest = 0;
|
let closest = 0;
|
||||||
for (let i in items) {
|
for (let i in groundItems) {
|
||||||
if (getDistance(getItemData(items[i]).position, position) <= getDistance(getItemData(items[closest]).position, position)) {
|
if (getDistance(getItemData(groundItems[i]).position, position) <= getDistance(getItemData(groundItems[closest]).position, position)) {
|
||||||
closest = i;
|
closest = i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return items[closest];
|
return groundItems[closest];
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
@@ -1768,23 +1789,35 @@ function deleteItem(itemId, whoDeleted = -1) {
|
|||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|
||||||
function getBestNewOwnerToPutItem(client) {
|
function getBestNewOwnerToPutItem(client) {
|
||||||
let closestDistance = 100.0;
|
|
||||||
let position = getPlayerPosition(client);
|
let position = getPlayerPosition(client);
|
||||||
|
|
||||||
let possibleHouse = getPlayerHouse(client);
|
let possibleHouse = getPlayerHouse(client);
|
||||||
if (getHouseData(possibleHouse)) {
|
if (possibleHouse != -1) {
|
||||||
|
if (getHouseData(possibleHouse) != false) {
|
||||||
return [VRR_ITEM_OWNER_HOUSE, possibleHouse];
|
return [VRR_ITEM_OWNER_HOUSE, possibleHouse];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let possibleBusiness = getPlayerBusiness(client);
|
let possibleBusiness = getPlayerBusiness(client);
|
||||||
if (getBusinessData(possibleBusiness)) {
|
if (possibleBusiness != -1) {
|
||||||
|
if (getBusinessData(possibleBusiness) != false) {
|
||||||
return [VRR_ITEM_OWNER_BIZSTORAGE, possibleBusiness];
|
return [VRR_ITEM_OWNER_BIZSTORAGE, possibleBusiness];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let possibleVehicle = getClosestVehicle(position);
|
let possibleVehicle = getClosestVehicle(position);
|
||||||
if (getDistance(getVehicleTrunkPosition(possibleVehicle), position) <= closestDistance) {
|
if (possibleVehicle != false) {
|
||||||
|
if (getVehicleData(possibleVehicle) != false && getDistance(getVehicleTrunkPosition(possibleVehicle), position) <= getGlobalConfig().vehicleTrunkDistance) {
|
||||||
return [VRR_ITEM_OWNER_VEHTRUNK, possibleVehicle];
|
return [VRR_ITEM_OWNER_VEHTRUNK, possibleVehicle];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let possibleItem = getClosestItemOnGround(position);
|
||||||
|
if (possibleItem != -1) {
|
||||||
|
if (getDistance(getItemPosition(possibleItem), position) <= getGlobalConfig().itemContainerDistance) {
|
||||||
|
return [VRR_ITEM_OWNER_ITEM, possibleItem];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return [VRR_ITEM_OWNER_NONE, 0];
|
return [VRR_ITEM_OWNER_NONE, 0];
|
||||||
}
|
}
|
||||||
@@ -2036,6 +2069,8 @@ function saveItemToDatabase(itemId) {
|
|||||||
|
|
||||||
logToConsole(LOG_VERBOSE, `[VRR.Item]: Saving item '${itemData.index}' to database ...`);
|
logToConsole(LOG_VERBOSE, `[VRR.Item]: Saving item '${itemData.index}' to database ...`);
|
||||||
|
|
||||||
|
let position = getItemPosition(itemId);
|
||||||
|
|
||||||
let dbConnection = connectToDatabase();
|
let dbConnection = connectToDatabase();
|
||||||
if (dbConnection) {
|
if (dbConnection) {
|
||||||
let data = [
|
let data = [
|
||||||
@@ -2044,9 +2079,9 @@ function saveItemToDatabase(itemId) {
|
|||||||
["item_owner_type", itemData.ownerType],
|
["item_owner_type", itemData.ownerType],
|
||||||
["item_owner_id", itemData.ownerId],
|
["item_owner_id", itemData.ownerId],
|
||||||
["item_amount", itemData.amount],
|
["item_amount", itemData.amount],
|
||||||
["item_pos_x", itemData.position.x],
|
["item_pos_x", position.x],
|
||||||
["item_pos_y", itemData.position.y],
|
["item_pos_y", position.y],
|
||||||
["item_pos_z", itemData.position.z],
|
["item_pos_z", position.z],
|
||||||
["item_int", itemData.interior],
|
["item_int", itemData.interior],
|
||||||
["item_vw", itemData.dimension],
|
["item_vw", itemData.dimension],
|
||||||
["item_buy_price", itemData.buyPrice],
|
["item_buy_price", itemData.buyPrice],
|
||||||
@@ -2115,6 +2150,7 @@ function saveItemTypeToDatabase(itemTypeId) {
|
|||||||
["item_type_drop_rot_x", itemTypeData.dropRotation.x],
|
["item_type_drop_rot_x", itemTypeData.dropRotation.x],
|
||||||
["item_type_drop_rot_y", itemTypeData.dropRotation.y],
|
["item_type_drop_rot_y", itemTypeData.dropRotation.y],
|
||||||
["item_type_drop_rot_z", itemTypeData.dropRotation.z],
|
["item_type_drop_rot_z", itemTypeData.dropRotation.z],
|
||||||
|
["item_type_drop_front_distance", itemTypeData.dropFrontDistance],
|
||||||
["item_type_drop_scale_x", itemTypeData.dropScale.x],
|
["item_type_drop_scale_x", itemTypeData.dropScale.x],
|
||||||
["item_type_drop_scale_y", itemTypeData.dropScale.y],
|
["item_type_drop_scale_y", itemTypeData.dropScale.y],
|
||||||
["item_type_drop_scale_z", itemTypeData.dropScale.z],
|
["item_type_drop_scale_z", itemTypeData.dropScale.z],
|
||||||
@@ -2577,7 +2613,7 @@ function showItemInventoryToPlayer(client, itemId) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
messagePlayerNormal(client, makeChatBoxSectionHeader(getLocaleString(client, "HeaderItemItemsList")));
|
messagePlayerNormal(client, makeChatBoxSectionHeader(getLocaleString(client, "HeaderItemItemList", getItemName(itemId))));
|
||||||
|
|
||||||
let chunkedList = splitArrayIntoChunks(itemDisplay, 5);
|
let chunkedList = splitArrayIntoChunks(itemDisplay, 5);
|
||||||
for (let i in chunkedList) {
|
for (let i in chunkedList) {
|
||||||
@@ -2725,3 +2761,14 @@ function getPlayerFirstAmmoItemForWeapon(client, weaponId) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|
||||||
|
function getItemPosition(itemId) {
|
||||||
|
if (getItemData(itemId).ownerType == VRR_ITEM_OWNER_GROUND) {
|
||||||
|
if (getItemData(itemId).object != null) {
|
||||||
|
return getElementPosition(getItemData(itemId).object);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return getItemData(itemId).position;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
@@ -170,7 +170,8 @@ function setLocaleCommand(command, params, client) {
|
|||||||
getPlayerData(client).accountData.locale = localeId;
|
getPlayerData(client).accountData.locale = localeId;
|
||||||
getPlayerData(client).locale = localeId;
|
getPlayerData(client).locale = localeId;
|
||||||
messagePlayerSuccess(client, getLocaleString(client, "LocaleChanged1", getLocaleString(client, "LocaleNativeName")));
|
messagePlayerSuccess(client, getLocaleString(client, "LocaleChanged1", getLocaleString(client, "LocaleNativeName")));
|
||||||
sendPlayerLocaleStrings(client);
|
//sendPlayerLocaleStrings(client);
|
||||||
|
sendPlayerLocaleId(client, localeId);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|||||||
@@ -1383,3 +1383,14 @@ function createAttachedGameBlip(element, type, size, colour = toColour(255, 255,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|
||||||
|
function deletePlayerPed(client) {
|
||||||
|
if (areServerElementsSupported()) {
|
||||||
|
destroyElement(client.player);
|
||||||
|
} else {
|
||||||
|
sendNetworkEventToPlayer("vrr.deleteLocalPlayerPed", client);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
@@ -242,7 +242,7 @@ function showRandomTipToAllPlayers() {
|
|||||||
if (isClientInitialized(clients[i])) {
|
if (isClientInitialized(clients[i])) {
|
||||||
if (isPlayerLoggedIn(clients[i]) && isPlayerSpawned(clients[i])) {
|
if (isPlayerLoggedIn(clients[i]) && isPlayerSpawned(clients[i])) {
|
||||||
if (!doesPlayerHaveRandomTipsDisabled(clients[i])) {
|
if (!doesPlayerHaveRandomTipsDisabled(clients[i])) {
|
||||||
let localeId = getPlayerLocaleId(clients[i]);
|
let localeId = getPlayerData(clients[i]).locale;
|
||||||
let tipId = getRandom(0, getServerData().localeStrings[localeId]["RandomTips"].length - 1);
|
let tipId = getRandom(0, getServerData().localeStrings[localeId]["RandomTips"].length - 1);
|
||||||
messagePlayerTip(clients[i], getGroupedLocaleString(clients[i], "RandomTips", tipId));
|
messagePlayerTip(clients[i], getGroupedLocaleString(clients[i], "RandomTips", tipId));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4856,7 +4856,6 @@ let gameData = {
|
|||||||
Job: 56,
|
Job: 56,
|
||||||
Bar: 49,
|
Bar: 49,
|
||||||
Club: 48,
|
Club: 48,
|
||||||
RepairGarage: 27,
|
|
||||||
Trophy: 33,
|
Trophy: 33,
|
||||||
Race: 53,
|
Race: 53,
|
||||||
Job: 56,
|
Job: 56,
|
||||||
@@ -5751,7 +5750,8 @@ let gameData = {
|
|||||||
JailCell: [toVector3(328.40, -1093.31, 25.98), 0, false, -1],
|
JailCell: [toVector3(328.40, -1093.31, 25.98), 0, false, -1],
|
||||||
Church: [toVector3(13.87, -1122.43, 26.12), 0, false, -1],
|
Church: [toVector3(13.87, -1122.43, 26.12), 0, false, -1],
|
||||||
Mansion: [toVector3(1461.00, -173.87, 55.78), 0, false, -1],
|
Mansion: [toVector3(1461.00, -173.87, 55.78), 0, false, -1],
|
||||||
Garage: [toVector3(-420.69, 289.86, 62.96), 0, false, -1],
|
SmallGarage: [toVector3(-420.69, 289.86, 62.96), 0, false, -1],
|
||||||
|
JoeyGarage: [toVector3(1189.40, -867.69, 15.18), 0, false, -1],
|
||||||
},
|
},
|
||||||
[VRR_GAME_GTA_VC]: { // GTA VC
|
[VRR_GAME_GTA_VC]: { // GTA VC
|
||||||
Mall: [toVector3(379.62, 1007.00, 19.22), 4, false, -1],
|
Mall: [toVector3(379.62, 1007.00, 19.22), 4, false, -1],
|
||||||
|
|||||||
Reference in New Issue
Block a user