Fixes for some vehicle data ID issues

This commit is contained in:
Vortrex
2023-02-26 20:07:43 -06:00
parent 12f9a66349
commit 84a55d76fb
4 changed files with 67 additions and 39 deletions

View File

@@ -9,7 +9,7 @@
let scriptVersion = "1.3"; let scriptVersion = "1.3";
let serverStartTime = 0; let serverStartTime = 0;
let logLevel = LOG_INFO | LOG_DEBUG | LOG_VERBOSE; let logLevel = LOG_INFO | LOG_DEBUG;
let playerResourceReady = new Array(server.maxClients).fill(false); let playerResourceReady = new Array(server.maxClients).fill(false);
let playerResourceStarted = new Array(server.maxClients).fill(false); let playerResourceStarted = new Array(server.maxClients).fill(false);

View File

@@ -747,7 +747,7 @@ function onPedExitedVehicle(event, ped, vehicle, seat) {
getVehicleData(vehicle).lastActiveTime = getCurrentUnixTimestamp(); getVehicleData(vehicle).lastActiveTime = getCurrentUnixTimestamp();
logToConsole(LOG_DEBUG, `[V.RP.Event] ${getPlayerDisplayForConsole(client)} exited a ${getVehicleName(vehicle)} (ID: ${vehicle.getData("v.rp.dataSlot")}, Database ID: ${getVehicleData(vehicle).databaseId})`); logToConsole(LOG_DEBUG, `[V.RP.Event] ${getPlayerDisplayForConsole(client)} exited a ${getVehicleName(vehicle)} (ID: ${getVehicleDataIndexFromVehicle(vehicle)}, Database ID: ${getVehicleData(vehicle).databaseId})`);
} }
} }
} }
@@ -782,7 +782,7 @@ function onPedEnteredVehicle(event, ped, vehicle, seat) {
return false; return false;
} }
logToConsole(LOG_DEBUG, `[V.RP.Event] ${getPlayerDisplayForConsole(client)} entered a ${getVehicleName(vehicle)} (ID: ${vehicle.getData("v.rp.dataSlot")}, Database ID: ${getVehicleData(vehicle).databaseId})`); logToConsole(LOG_DEBUG, `[V.RP.Event] ${getPlayerDisplayForConsole(client)} entered a ${getVehicleName(vehicle)} (ID: ${getVehicleDataIndexFromVehicle(vehicle)}, Database ID: ${getVehicleData(vehicle).databaseId})`);
getPlayerData(client).lastVehicle = vehicle; getPlayerData(client).lastVehicle = vehicle;
getVehicleData(vehicle).lastActiveTime = getCurrentUnixTimestamp(); getVehicleData(vehicle).lastActiveTime = getCurrentUnixTimestamp();

View File

@@ -395,15 +395,15 @@ function getVehicleCommand(command, params, client) {
let vehicleIndex = toInteger(params); let vehicleIndex = toInteger(params);
if (getVehicleData(vehicleIndex)) { if (typeof getServerData().vehicles[vehicleIndex] == "undefined") {
messagePlayerError(client, "That vehicle ID doesn't exist!"); messagePlayerError(client, "That vehicle ID doesn't exist!");
} }
destroyGameElement(getVehicleData(vehicleIndex).vehicle); destroyGameElement(getServerData().vehicles[vehicleIndex]);
getVehicleData(vehicleIndex).vehicle = null; getServerData().vehicles[vehicleIndex].vehicle = null;
getVehicleData(vehicleIndex).spawnPosition = getPlayerPosition(client); getServerData().vehicles[vehicleIndex].spawnPosition = getPlayerPosition(client);
getVehicleData(vehicleIndex).spawnRotation = getPlayerHeading(client); getServerData().vehicles[vehicleIndex].spawnRotation = getPlayerHeading(client);
//let oldStreamInDistance = getElementStreamInDistance(vehicle); //let oldStreamInDistance = getElementStreamInDistance(vehicle);
//let oldStreamOutDistance = getElementStreamOutDistance(vehicle); //let oldStreamOutDistance = getElementStreamOutDistance(vehicle);
@@ -418,9 +418,9 @@ function getVehicleCommand(command, params, client) {
//setElementStreamInDistance(vehicle, oldStreamInDistance); //setElementStreamInDistance(vehicle, oldStreamInDistance);
//setElementStreamOutDistance(vehicle, oldStreamOutDistance); //setElementStreamOutDistance(vehicle, oldStreamOutDistance);
spawnVehicle(getVehicleData(vehicleIndex)); let vehicle = spawnVehicle(getServerData().vehicles[vehicleIndex]);
if (getVehicleData(vehicleIndex).vehicle == null) { if (getServerData().vehicles[vehicleIndex].vehicle == null) {
messagePlayerError(client, "Vehicle could not be retrieved!"); messagePlayerError(client, "Vehicle could not be retrieved!");
return false; return false;
} }

View File

@@ -317,7 +317,6 @@ function spawnAllVehicles() {
if (getServerData().vehicles[i].vehicle == false) { if (getServerData().vehicles[i].vehicle == false) {
let vehicle = spawnVehicle(getServerData().vehicles[i]); let vehicle = spawnVehicle(getServerData().vehicles[i]);
getServerData().vehicles[i].vehicle = vehicle; getServerData().vehicles[i].vehicle = vehicle;
setEntityData(vehicle, "v.rp.dataSlot", i, false);
} }
} }
setAllVehicleIndexes(); setAllVehicleIndexes();
@@ -331,9 +330,10 @@ function spawnAllVehicles() {
*/ */
function getVehicleData(vehicle) { function getVehicleData(vehicle) {
if (isVehicleObject(vehicle)) { if (isVehicleObject(vehicle)) {
let dataIndex = getEntityData(vehicle, "v.rp.dataSlot"); for (let i in getServerData().vehicles) {
if (typeof getServerData().vehicles[dataIndex] != "undefined") { if (getServerData().vehicles[i].vehicle == vehicle) {
return getServerData().vehicles[dataIndex]; return getServerData().vehicles[i];
}
} }
} }
@@ -490,15 +490,17 @@ function deleteVehicleCommand(command, params, client) {
vehicle = getPlayerVehicle(client); vehicle = getPlayerVehicle(client);
} }
let dataIndex = getEntityData(vehicle, "v.rp.dataSlot"); let vehicleIndex = getVehicleData(vehicle).index;
let vehicleName = getVehicleName(vehicle); let vehicleName = getVehicleName(vehicle);
quickDatabaseQuery(`DELETE FROM veh_main WHERE veh_id = ${getVehicleData(vehicle).databaseId}`); quickDatabaseQuery(`DELETE FROM veh_main WHERE veh_id = ${getVehicleData(vehicle).databaseId}`);
getServerData().vehicles.splice(dataIndex, 1); getServerData().vehicles.splice(vehicleIndex, 1);
destroyGameElement(vehicle); destroyGameElement(vehicle);
setAllVehicleIndexes();
messagePlayerSuccess(client, `The ${vehicleName} has been deleted!`); messagePlayerSuccess(client, `The ${vehicleName} has been deleted!`);
} }
@@ -1317,6 +1319,7 @@ function reloadAllVehiclesCommand(command, params, client) {
despawnAllVehicles(); despawnAllVehicles();
clearArray(getServerData().vehicles); clearArray(getServerData().vehicles);
getServerData().vehicles = loadVehiclesFromDatabase(); getServerData().vehicles = loadVehiclesFromDatabase();
setAllVehicleIndexes();
spawnAllVehicles(); spawnAllVehicles();
announceAdminAction(`AllVehiclesReloaded`); announceAdminAction(`AllVehiclesReloaded`);
@@ -1349,10 +1352,10 @@ function respawnAllVehiclesCommand(command, params, client) {
respawnVehicle(getServerData().vehicles[i].vehicle); respawnVehicle(getServerData().vehicles[i].vehicle);
} }
let randomVehicles = getElementsByType(ELEMENT_VEHICLE).filter(v => getVehicleData(v) == false); //let randomVehicles = getElementsByType(ELEMENT_VEHICLE).filter(v => getVehicleData(v) == false);
for (let i in randomVehicles) { //for (let i in randomVehicles) {
destroyElement(randomVehicles[i]); // destroyElement(randomVehicles[i]);
} //}
setAllVehicleIndexes(); setAllVehicleIndexes();
@@ -1368,12 +1371,14 @@ function respawnEmptyVehiclesCommand(command, params, client) {
} }
} }
let clientVehicles = getElementsByType(ELEMENT_VEHICLE).filter(v => getVehicleData(v) == false); //let clientVehicles = getElementsByType(ELEMENT_VEHICLE).filter(v => getVehicleData(v) == false);
for (let i in clientVehicles) { //for (let i in clientVehicles) {
if (!isVehicleUnoccupied(clientVehicles[i])) { // if (!isVehicleUnoccupied(clientVehicles[i])) {
destroyElement(clientVehicles[i]); // destroyElement(clientVehicles[i]);
} // }
} //}
setAllVehicleIndexes();
announceAdminAction(`EmptyVehiclesRespawned`); announceAdminAction(`EmptyVehiclesRespawned`);
} }
@@ -1387,6 +1392,8 @@ function respawnJobVehiclesCommand(command, params, client) {
} }
} }
setAllVehicleIndexes();
announceAdminAction(`JobVehiclesRespawned`); announceAdminAction(`JobVehiclesRespawned`);
} }
@@ -1399,6 +1406,8 @@ function respawnClanVehiclesCommand(command, params, client) {
} }
} }
setAllVehicleIndexes();
announceAdminAction(`ClanVehiclesRespawned`); announceAdminAction(`ClanVehiclesRespawned`);
} }
@@ -1411,6 +1420,8 @@ function respawnPlayerVehiclesCommand(command, params, client) {
} }
} }
setAllVehicleIndexes();
announceAdminAction(`PlayerVehiclesRespawned`); announceAdminAction(`PlayerVehiclesRespawned`);
} }
@@ -1423,6 +1434,8 @@ function respawnPublicVehiclesCommand(command, params, client) {
} }
} }
setAllVehicleIndexes();
announceAdminAction(`PublicVehiclesRespawned`); announceAdminAction(`PublicVehiclesRespawned`);
} }
@@ -1435,6 +1448,8 @@ function respawnBusinessVehiclesCommand(command, params, client) {
} }
} }
setAllVehicleIndexes();
announceAdminAction(`BusinessVehiclesRespawned`); announceAdminAction(`BusinessVehiclesRespawned`);
} }
@@ -1469,7 +1484,6 @@ function respawnVehicle(vehicle) {
let newVehicle = spawnVehicle(getServerData().vehicles[i]); let newVehicle = spawnVehicle(getServerData().vehicles[i]);
getServerData().vehicles[i].vehicle = newVehicle; getServerData().vehicles[i].vehicle = newVehicle;
setEntityData(newVehicle, "v.rp.dataSlot", i, false);
} }
} }
@@ -1600,8 +1614,14 @@ function createNewDealershipVehicle(modelIndex, spawnPosition, spawnRotation, pr
tempVehicleData.interior = interior; tempVehicleData.interior = interior;
tempVehicleData.dimension = dimension; tempVehicleData.dimension = dimension;
let slot = getServerData().vehicles.push(tempVehicleData); if (!isGameFeatureSupported("vehicleColour")) {
setEntityData(vehicle, "v.rp.dataSlot", slot - 1, false); tempVehicleData.colour1 = 0;
tempVehicleData.colour2 = 0;
tempVehicleData.colour3 = 0;
tempVehicleData.colour4 = 0;
}
setAllVehicleIndexes();
} }
// =========================================================================== // ===========================================================================
@@ -1618,6 +1638,7 @@ function createTemporaryVehicle(modelIndex, position, heading, interior = 0, dim
tempVehicleData.databaseId = -1; tempVehicleData.databaseId = -1;
tempVehicleData.interior = interior; tempVehicleData.interior = interior;
tempVehicleData.dimension = dimension; tempVehicleData.dimension = dimension;
if (!isGameFeatureSupported("vehicleColour")) { if (!isGameFeatureSupported("vehicleColour")) {
tempVehicleData.colour1 = 0; tempVehicleData.colour1 = 0;
tempVehicleData.colour2 = 0; tempVehicleData.colour2 = 0;
@@ -1625,13 +1646,8 @@ function createTemporaryVehicle(modelIndex, position, heading, interior = 0, dim
tempVehicleData.colour4 = 0; tempVehicleData.colour4 = 0;
} }
let slot = getServerData().vehicles.push(tempVehicleData);
setAllVehicleIndexes(); setAllVehicleIndexes();
if (areServerElementsSupported()) {
setEntityData(vehicle, "v.rp.dataSlot", slot - 1, false);
}
return vehicle; return vehicle;
} }
@@ -1648,6 +1664,7 @@ function createPermanentVehicle(modelIndex, position, heading, interior = 0, dim
tempVehicleData.model = modelIndex; tempVehicleData.model = modelIndex;
tempVehicleData.interior = interior; tempVehicleData.interior = interior;
tempVehicleData.dimension = dimension; tempVehicleData.dimension = dimension;
if (!isGameFeatureSupported("vehicleColour")) { if (!isGameFeatureSupported("vehicleColour")) {
tempVehicleData.colour1 = 0; tempVehicleData.colour1 = 0;
tempVehicleData.colour2 = 0; tempVehicleData.colour2 = 0;
@@ -1655,13 +1672,8 @@ function createPermanentVehicle(modelIndex, position, heading, interior = 0, dim
tempVehicleData.colour4 = 0; tempVehicleData.colour4 = 0;
} }
let slot = getServerData().vehicles.push(tempVehicleData);
setAllVehicleIndexes(); setAllVehicleIndexes();
if (areServerElementsSupported()) {
setEntityData(vehicle, "v.rp.dataSlot", slot - 1, false);
}
return vehicle; return vehicle;
} }
@@ -1914,6 +1926,8 @@ function despawnAllVehicles() {
getServerData().vehicles[i].vehicle = false; getServerData().vehicles[i].vehicle = false;
} }
} }
setAllVehicleIndexes();
} }
// =========================================================================== // ===========================================================================
@@ -1927,4 +1941,18 @@ function updateVehicleSavedPositions() {
} }
} }
// ===========================================================================
function getVehicleDataIndexFromVehicle(vehicle) {
if (isVehicleObject(vehicle)) {
for (let i in getServerData().vehicles) {
if (getServerData().vehicles[i].vehicle == vehicle) {
return i;
}
}
}
return -1;
}
// =========================================================================== // ===========================================================================