156 lines
4.4 KiB
JavaScript
156 lines
4.4 KiB
JavaScript
let ReturnedFuelValues = undefined;
|
|
|
|
async function WaitUntilFuelDataComes() {
|
|
return new Promise(async (resolve, reject) => {
|
|
let tried = 0;
|
|
let finished = false;
|
|
let response = false;
|
|
while (finished === false) {
|
|
await Wait(500);
|
|
if (tried > 3) {
|
|
finished = true;
|
|
response = false;
|
|
break;
|
|
}
|
|
|
|
if (ReturnedFuelValues) {
|
|
finished = true;
|
|
response = true;
|
|
break;
|
|
} else {
|
|
tried++;
|
|
continue;
|
|
}
|
|
}
|
|
return resolve(response);
|
|
});
|
|
}
|
|
|
|
/**
|
|
* @param {string} key
|
|
* @returns {Array}
|
|
*/
|
|
|
|
app.use("/getAllVehicleCoordsAndCredentials.lvorex", express.json());
|
|
app.post("/getAllVehicleCoordsAndCredentials.lvorex", async (req, res) => {
|
|
const postBody = req.body;
|
|
const { keyFound } = await controlKey(req, postBody.key);
|
|
|
|
if (keyFound === false)
|
|
return res.json({ code: 404, message: "Not authorized." });
|
|
|
|
const allVehicles = GetAllVehicles();
|
|
const toInsertVehicles = [];
|
|
|
|
if (config.Framework.includes("qb")) {
|
|
for await (const vehicle of allVehicles) {
|
|
const isExists = DoesEntityExist(vehicle);
|
|
if (!isExists) continue;
|
|
const plate = GetVehicleNumberPlateText(vehicle);
|
|
let result = await query(`
|
|
SELECT * FROM \`player_vehicles\`
|
|
WHERE \`plate\` = '${plate.trim()}'
|
|
`);
|
|
if (result === false)
|
|
return res.json({ code: 404, message: "SQL Error Appeared." });
|
|
if (result.length === 0) continue;
|
|
const vehicleCredentials =
|
|
FrameworkObject.Shared.Vehicles[result[0].vehicle];
|
|
const { fuel } = result[0];
|
|
|
|
result = await query(`
|
|
SELECT * FROM \`players\`
|
|
WHERE \`citizenid\` = '${result[0].citizenid}'
|
|
`);
|
|
if (result === false)
|
|
return res.json({ code: 404, message: "SQL Error Appeared." });
|
|
const ownerCharInfo = JSON.parse(result[0].charinfo);
|
|
|
|
toInsertVehicles.push({
|
|
plate: plate.trim(),
|
|
coords: GetEntityCoords(vehicle),
|
|
label: vehicleCredentials.name,
|
|
owner: ownerCharInfo.firstname + " " + ownerCharInfo.lastname,
|
|
owneruid: result[0].citizenid,
|
|
fuel: fuel,
|
|
vehicleId: vehicle,
|
|
});
|
|
}
|
|
} else if (config.Framework.includes("esx")) {
|
|
for await (const vehicle of allVehicles) {
|
|
const isExists = DoesEntityExist(vehicle);
|
|
if (!isExists) continue;
|
|
const plate = GetVehicleNumberPlateText(vehicle);
|
|
let result = await query(`
|
|
select * from \`owned_vehicles\`
|
|
where \`plate\` = '${plate.trim()}'
|
|
`);
|
|
if (result === false)
|
|
return res.json({ code: 404, message: "SQL Error Appeared." });
|
|
if (result.length === 0) continue;
|
|
const { owner, vehicle: vehicleData } = result[0];
|
|
const vehicleDataJSON = JSON.parse(vehicleData);
|
|
|
|
let vehicleCredentials = JSON.parse(result[0].vehicle);
|
|
let expectingVehicle = undefined;
|
|
result = await LV.GetAllServerVehicles();
|
|
result.forEach((vdatabase) => {
|
|
if (expectingVehicle) return;
|
|
if (vehicleCredentials.model === GetHashKey(vdatabase.model)) {
|
|
expectingVehicle = vdatabase;
|
|
}
|
|
});
|
|
|
|
result = await query(`
|
|
SELECT * FROM \`users\`
|
|
WHERE \`identifier\` = '${owner}'
|
|
`);
|
|
if (result === false)
|
|
return res.json({ code: 404, message: "SQL Error Appeared." });
|
|
|
|
// Check if user exists before accessing properties
|
|
if (result.length === 0) {
|
|
console.log(
|
|
`User with identifier ${owner} not found for vehicle ${plate}`
|
|
);
|
|
continue;
|
|
}
|
|
|
|
result = result[0];
|
|
|
|
toInsertVehicles.push({
|
|
plate: plate.trim(),
|
|
coords: GetEntityCoords(vehicle),
|
|
label: expectingVehicle ? expectingVehicle.name : "Unknown Vehicle",
|
|
owner: result.firstname + " " + result.lastname,
|
|
owneruid: owner,
|
|
fuel: vehicleDataJSON.fuelLevel
|
|
? parseInt(vehicleDataJSON.fuelLevel)
|
|
: 100,
|
|
vehicleId: vehicle,
|
|
});
|
|
}
|
|
}
|
|
|
|
// Fuel
|
|
if (toInsertVehicles.length > 0) {
|
|
emitNet(
|
|
"mAdmin:client:getvehiclesfuels",
|
|
-1,
|
|
JSON.stringify(toInsertVehicles)
|
|
);
|
|
const datastatus = await WaitUntilFuelDataComes();
|
|
if (datastatus) {
|
|
toInsertVehicles.forEach((veh) => {
|
|
veh.fuel = parseInt(String(ReturnedFuelValues[veh.plate]));
|
|
});
|
|
}
|
|
}
|
|
|
|
res.json({ code: 200, message: toInsertVehicles });
|
|
});
|
|
|
|
RegisterNetEvent("mAdmin:server:setvehiclesfuels");
|
|
on("mAdmin:server:setvehiclesfuels", function (ReturnedData) {
|
|
ReturnedFuelValues = JSON.parse(ReturnedData);
|
|
}); |