diff --git a/scripts/server/core.js b/scripts/server/core.js index abc3584d..bb80124e 100644 --- a/scripts/server/core.js +++ b/scripts/server/core.js @@ -9,7 +9,7 @@ let scriptVersion = "1.3"; 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 playerResourceStarted = new Array(server.maxClients).fill(false); diff --git a/scripts/server/event.js b/scripts/server/event.js index 7bf7a066..b1947f0c 100644 --- a/scripts/server/event.js +++ b/scripts/server/event.js @@ -747,7 +747,7 @@ function onPedExitedVehicle(event, ped, vehicle, seat) { 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; } - 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; getVehicleData(vehicle).lastActiveTime = getCurrentUnixTimestamp(); diff --git a/scripts/server/staff.js b/scripts/server/staff.js index d41835ff..e2e7410e 100644 --- a/scripts/server/staff.js +++ b/scripts/server/staff.js @@ -395,15 +395,15 @@ function getVehicleCommand(command, params, client) { let vehicleIndex = toInteger(params); - if (getVehicleData(vehicleIndex)) { + if (typeof getServerData().vehicles[vehicleIndex] == "undefined") { messagePlayerError(client, "That vehicle ID doesn't exist!"); } - destroyGameElement(getVehicleData(vehicleIndex).vehicle); - getVehicleData(vehicleIndex).vehicle = null; + destroyGameElement(getServerData().vehicles[vehicleIndex]); + getServerData().vehicles[vehicleIndex].vehicle = null; - getVehicleData(vehicleIndex).spawnPosition = getPlayerPosition(client); - getVehicleData(vehicleIndex).spawnRotation = getPlayerHeading(client); + getServerData().vehicles[vehicleIndex].spawnPosition = getPlayerPosition(client); + getServerData().vehicles[vehicleIndex].spawnRotation = getPlayerHeading(client); //let oldStreamInDistance = getElementStreamInDistance(vehicle); //let oldStreamOutDistance = getElementStreamOutDistance(vehicle); @@ -418,9 +418,9 @@ function getVehicleCommand(command, params, client) { //setElementStreamInDistance(vehicle, oldStreamInDistance); //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!"); return false; } diff --git a/scripts/server/vehicle.js b/scripts/server/vehicle.js index c52cd41f..f4a2162a 100644 --- a/scripts/server/vehicle.js +++ b/scripts/server/vehicle.js @@ -317,7 +317,6 @@ function spawnAllVehicles() { if (getServerData().vehicles[i].vehicle == false) { let vehicle = spawnVehicle(getServerData().vehicles[i]); getServerData().vehicles[i].vehicle = vehicle; - setEntityData(vehicle, "v.rp.dataSlot", i, false); } } setAllVehicleIndexes(); @@ -331,9 +330,10 @@ function spawnAllVehicles() { */ function getVehicleData(vehicle) { if (isVehicleObject(vehicle)) { - let dataIndex = getEntityData(vehicle, "v.rp.dataSlot"); - if (typeof getServerData().vehicles[dataIndex] != "undefined") { - return getServerData().vehicles[dataIndex]; + for (let i in getServerData().vehicles) { + if (getServerData().vehicles[i].vehicle == vehicle) { + return getServerData().vehicles[i]; + } } } @@ -490,15 +490,17 @@ function deleteVehicleCommand(command, params, client) { vehicle = getPlayerVehicle(client); } - let dataIndex = getEntityData(vehicle, "v.rp.dataSlot"); + let vehicleIndex = getVehicleData(vehicle).index; let vehicleName = getVehicleName(vehicle); quickDatabaseQuery(`DELETE FROM veh_main WHERE veh_id = ${getVehicleData(vehicle).databaseId}`); - getServerData().vehicles.splice(dataIndex, 1); + getServerData().vehicles.splice(vehicleIndex, 1); destroyGameElement(vehicle); + setAllVehicleIndexes(); + messagePlayerSuccess(client, `The ${vehicleName} has been deleted!`); } @@ -1317,6 +1319,7 @@ function reloadAllVehiclesCommand(command, params, client) { despawnAllVehicles(); clearArray(getServerData().vehicles); getServerData().vehicles = loadVehiclesFromDatabase(); + setAllVehicleIndexes(); spawnAllVehicles(); announceAdminAction(`AllVehiclesReloaded`); @@ -1349,10 +1352,10 @@ function respawnAllVehiclesCommand(command, params, client) { respawnVehicle(getServerData().vehicles[i].vehicle); } - let randomVehicles = getElementsByType(ELEMENT_VEHICLE).filter(v => getVehicleData(v) == false); - for (let i in randomVehicles) { - destroyElement(randomVehicles[i]); - } + //let randomVehicles = getElementsByType(ELEMENT_VEHICLE).filter(v => getVehicleData(v) == false); + //for (let i in randomVehicles) { + // destroyElement(randomVehicles[i]); + //} setAllVehicleIndexes(); @@ -1368,12 +1371,14 @@ function respawnEmptyVehiclesCommand(command, params, client) { } } - let clientVehicles = getElementsByType(ELEMENT_VEHICLE).filter(v => getVehicleData(v) == false); - for (let i in clientVehicles) { - if (!isVehicleUnoccupied(clientVehicles[i])) { - destroyElement(clientVehicles[i]); - } - } + //let clientVehicles = getElementsByType(ELEMENT_VEHICLE).filter(v => getVehicleData(v) == false); + //for (let i in clientVehicles) { + // if (!isVehicleUnoccupied(clientVehicles[i])) { + // destroyElement(clientVehicles[i]); + // } + //} + + setAllVehicleIndexes(); announceAdminAction(`EmptyVehiclesRespawned`); } @@ -1387,6 +1392,8 @@ function respawnJobVehiclesCommand(command, params, client) { } } + setAllVehicleIndexes(); + announceAdminAction(`JobVehiclesRespawned`); } @@ -1399,6 +1406,8 @@ function respawnClanVehiclesCommand(command, params, client) { } } + setAllVehicleIndexes(); + announceAdminAction(`ClanVehiclesRespawned`); } @@ -1411,6 +1420,8 @@ function respawnPlayerVehiclesCommand(command, params, client) { } } + setAllVehicleIndexes(); + announceAdminAction(`PlayerVehiclesRespawned`); } @@ -1423,6 +1434,8 @@ function respawnPublicVehiclesCommand(command, params, client) { } } + setAllVehicleIndexes(); + announceAdminAction(`PublicVehiclesRespawned`); } @@ -1435,6 +1448,8 @@ function respawnBusinessVehiclesCommand(command, params, client) { } } + setAllVehicleIndexes(); + announceAdminAction(`BusinessVehiclesRespawned`); } @@ -1469,7 +1484,6 @@ function respawnVehicle(vehicle) { let newVehicle = spawnVehicle(getServerData().vehicles[i]); 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.dimension = dimension; - let slot = getServerData().vehicles.push(tempVehicleData); - setEntityData(vehicle, "v.rp.dataSlot", slot - 1, false); + if (!isGameFeatureSupported("vehicleColour")) { + 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.interior = interior; tempVehicleData.dimension = dimension; + if (!isGameFeatureSupported("vehicleColour")) { tempVehicleData.colour1 = 0; tempVehicleData.colour2 = 0; @@ -1625,13 +1646,8 @@ function createTemporaryVehicle(modelIndex, position, heading, interior = 0, dim tempVehicleData.colour4 = 0; } - let slot = getServerData().vehicles.push(tempVehicleData); setAllVehicleIndexes(); - if (areServerElementsSupported()) { - setEntityData(vehicle, "v.rp.dataSlot", slot - 1, false); - } - return vehicle; } @@ -1648,6 +1664,7 @@ function createPermanentVehicle(modelIndex, position, heading, interior = 0, dim tempVehicleData.model = modelIndex; tempVehicleData.interior = interior; tempVehicleData.dimension = dimension; + if (!isGameFeatureSupported("vehicleColour")) { tempVehicleData.colour1 = 0; tempVehicleData.colour2 = 0; @@ -1655,13 +1672,8 @@ function createPermanentVehicle(modelIndex, position, heading, interior = 0, dim tempVehicleData.colour4 = 0; } - let slot = getServerData().vehicles.push(tempVehicleData); setAllVehicleIndexes(); - if (areServerElementsSupported()) { - setEntityData(vehicle, "v.rp.dataSlot", slot - 1, false); - } - return vehicle; } @@ -1914,6 +1926,8 @@ function despawnAllVehicles() { 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; +} + // =========================================================================== \ No newline at end of file