Fixes for some vehicle data ID issues
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
Reference in New Issue
Block a user