Use new db query string utils

This commit is contained in:
Vortrex
2021-08-11 09:39:41 -05:00
parent 066c60bcae
commit 9a2ff52d45
4 changed files with 270 additions and 187 deletions

View File

@@ -894,98 +894,45 @@ function saveBusinessToDatabase(businessId) {
let dbConnection = connectToDatabase();
if(dbConnection) {
let safeBusinessName = escapeDatabaseString(dbConnection, tempBusinessData.name);
if(tempBusinessData.databaseId == 0) {
let dbQueryString = `INSERT INTO biz_main (
biz_server,
biz_name,
biz_owner_type,
biz_owner_id,
biz_locked,
biz_entrance_fee,
biz_till,
biz_entrance_pos_x,
biz_entrance_pos_y,
biz_entrance_pos_z,
biz_entrance_rot_z,
biz_entrance_int,
biz_entrance_vw,
biz_entrance_pickup,
biz_entrance_blip,
biz_exit_pos_x,
biz_exit_pos_y,
biz_exit_pos_z,
biz_exit_rot_z,
biz_exit_int,
biz_exit_vw,
biz_exit_pickup,
biz_exit_blip,
biz_has_interior
) VALUES (
${getServerId()},
'${safeBusinessName}',
${tempBusinessData.ownerType},
${tempBusinessData.ownerId},
${boolToInt(tempBusinessData.locked)},
${tempBusinessData.entranceFee},
${tempBusinessData.till},
${tempBusinessData.entrancePosition.x},
${tempBusinessData.entrancePosition.y},
${tempBusinessData.entrancePosition.z},
${tempBusinessData.entranceRotation},
${tempBusinessData.entranceInterior},
${tempBusinessData.entranceDimension},
${tempBusinessData.entrancePickupModel},
${tempBusinessData.entranceBlipModel},
${tempBusinessData.exitPosition.x},
${tempBusinessData.exitPosition.y},
${tempBusinessData.exitPosition.z},
${tempBusinessData.exitRotation},
${tempBusinessData.exitInterior},
${tempBusinessData.databaseId+getGlobalConfig().businessDimensionStart},
${tempBusinessData.exitPickupModel},
${tempBusinessData.exitBlipModel},
${boolToInt(tempBusinessData.hasInterior)}
)`;
dbQueryString = dbQueryString.replace(/(?:\r\n|\r|\n|\t)/g, "");
queryDatabase(dbConnection, dbQueryString);
let data = [
["biz_server", getServerId()],
["biz_name", safeBusinessName],
["biz_owner_type", tempBusinessData.ownerType],
["biz_owner_id", tempBusinessData.ownerId],
["biz_locked", boolToInt(tempBusinessData.locked)],
["biz_entrance_fee", tempBusinessData.entranceFee],
["biz_till", tempBusinessData.till],
["biz_entrance_pos_x", tempBusinessData.entrancePosition.x],
["biz_entrance_pos_y", tempBusinessData.entrancePosition.x],
["biz_entrance_pos_z", tempBusinessData.entrancePosition.z],
["biz_entrance_rot_z", tempBusinessData.entranceRotation],
["biz_entrance_int", tempBusinessData.entranceInterior],
["biz_entrance_vw", tempBusinessData.entranceDimension],
["biz_entrance_pickup", tempBusinessData.entrancePickupModel],
["biz_entrance_blip", tempBusinessData.entranceBlipModel],
["biz_exit_pos_x", tempBusinessData.exitPosition.x],
["biz_exit_pos_y", tempBusinessData.exitPosition.y],
["biz_exit_pos_z", tempBusinessData.exitPosition.z],
["biz_exit_rot_z", tempBusinessData.exitRotation],
["biz_exit_int", tempBusinessData.exitInterior],
["biz_exit_vw", tempBusinessData.databaseId+getGlobalConfig().businessDimensionStart],
["biz_exit_pickup", tempBusinessData.exitPickupModel],
["biz_exit_blip", tempBusinessData.exitBlipModel],
["biz_has_interior", boolToInt(tempBusinessData.hasInterior)],
];
let dbQuery = null;
if(tempBusinessData.databaseId == 0) {
let queryString = createDatabaseInsertQuery("biz_main", data);
dbQuery = queryDatabase(dbConnection, queryString);
getServerData().businesses[businessId].databaseId = getDatabaseInsertId(dbConnection);
} else {
let dbQueryString =
`UPDATE biz_main SET
biz_name='${safeBusinessName}',
biz_owner_type=${tempBusinessData.ownerType},
biz_owner_id=${tempBusinessData.ownerId},
biz_locked=${boolToInt(tempBusinessData.locked)},
biz_entrance_fee=${tempBusinessData.entranceFee},
biz_till=${tempBusinessData.till},
biz_entrance_pos_x=${tempBusinessData.entrancePosition.x},
biz_entrance_pos_y=${tempBusinessData.entrancePosition.y},
biz_entrance_pos_z=${tempBusinessData.entrancePosition.z},
biz_entrance_rot_z=${tempBusinessData.entranceRotation},
biz_entrance_int=${tempBusinessData.entranceInterior},
biz_entrance_vw=${tempBusinessData.entranceDimension},
biz_entrance_pickup=${tempBusinessData.entrancePickupModel},
biz_entrance_blip=${tempBusinessData.entranceBlipModel},
biz_exit_pos_x=${tempBusinessData.exitPosition.x},
biz_exit_pos_y=${tempBusinessData.exitPosition.y},
biz_exit_pos_z=${tempBusinessData.exitPosition.z},
biz_exit_rot_z=${tempBusinessData.exitRotation},
biz_exit_int=${tempBusinessData.exitInterior},
biz_exit_vw=${tempBusinessData.exitDimension},
biz_exit_pickup=${tempBusinessData.exitPickupModel},
biz_exit_blip=${tempBusinessData.exitBlipModel},
biz_has_interior=${boolToInt(tempBusinessData.hasInterior)},
biz_buy_price=${tempBusinessData.buyPrice}
WHERE biz_id=${tempBusinessData.databaseId}`;
dbQueryString = dbQueryString.replace(/(?:\r\n|\r|\n|\t)/g, "");
let dbQuery = queryDatabase(dbConnection, dbQueryString);
freeDatabaseQuery(dbQuery);
disconnectFromDatabase(dbConnection);
let queryString = createDatabaseUpdateQuery("biz_main", data, `WHERE biz_id=${tempBusinessData.databaseId}`);
dbQuery = queryDatabase(dbConnection, queryString);
}
freeDatabaseQuery(dbQuery);
disconnectFromDatabase(dbConnection);
return true;
}

View File

@@ -188,4 +188,43 @@ function setConstantsAsGlobalVariablesInDatabase() {
function loadDatabaseConfiguration() {
let databaseConfigFile = loadTextFile("config/database.json");
return JSON.parse(databaseConfigFile);
}
}
// ===========================================================================
function createDatabaseInsertQuery(tableName, data) {
let fields = [];
let values = [];
for(let i in data) {
fields.push(data[i][0]);
if(typeof values[i][1] == "string") {
values.push(`'${data[i][1]}'`);
} else {
values.push(data[i][1]);
}
}
let queryString = `INSERT INTO ${tableName} (${fields.join(", ")}) VALUES (${fields.join(", ")})`;
return queryString;
}
// ===========================================================================
function createDatabaseUpdateQuery(tableName, data, whereClause) {
let values = [];
for(let i in data) {
if(typeof values[i][1] == "string") {
values.push(`${data[i][0]}='${data[i][1]}'`);
} else {
values.push(`${data[i][0]}=${data[i][1]}`);
}
}
let queryString = `INSERT INTO ${tableName} SET ${values.join(", ")} WHERE ${whereClause}`;
return queryString;
}
// ===========================================================================

View File

@@ -435,43 +435,46 @@ function saveHouseToDatabase(houseId) {
let dbConnection = connectToDatabase();
if(dbConnection) {
let safeHouseDescription = escapeDatabaseString(dbConnection, tempHouseData.description);
if(tempHouseData.databaseId == 0) {
let dbQueryString = `INSERT INTO house_main (house_server, house_description, house_owner_type, house_owner_id, house_locked, house_entrance_pos_x, house_entrance_pos_y, house_entrance_pos_z, house_entrance_rot_z, house_entrance_int, house_entrance_vw, house_exit_pos_x, house_exit_pos_y, house_exit_pos_z, house_exit_rot_z, house_exit_int, house_exit_vw, house_has_interior) VALUES (${getServerId()}, '${safeHouseDescription}', ${tempHouseData.ownerType}, ${tempHouseData.ownerId}, ${boolToInt(tempHouseData.locked)}, ${tempHouseData.entrancePosition.x}, ${tempHouseData.entrancePosition.y}, ${tempHouseData.entrancePosition.z}, ${tempHouseData.entranceRotation}, ${tempHouseData.entranceInterior}, ${tempHouseData.entranceDimension}, ${tempHouseData.exitPosition.x}, ${tempHouseData.exitPosition.y}, ${tempHouseData.exitPosition.z}, ${tempHouseData.exitRotation}, ${tempHouseData.exitInterior}, ${tempHouseData.exitDimension}, ${boolToInt(tempHouseData.hasInterior)})`;
queryDatabase(dbConnection, dbQueryString);
let data = [
["house_server", getServerId()],
["house_description", safeHouseDescription],
["house_owner_type", tempHouseData.ownerType],
["house_owner_id", tempHouseData.ownerId],
["house_locked", boolToInt(tempHouseData.locked)],
["house_entrance_fee", tempHouseData.entranceFee],
["house_entrance_pos_x", tempHouseData.entrancePosition.x],
["house_entrance_pos_y", tempHouseData.entrancePosition.x],
["house_entrance_pos_z", tempHouseData.entrancePosition.z],
["house_entrance_rot_z", tempHouseData.entranceRotation],
["house_entrance_int", tempHouseData.entranceInterior],
["house_entrance_vw", tempHouseData.entranceDimension],
["house_entrance_pickup", tempHouseData.entrancePickupModel],
["house_entrance_blip", tempHouseData.entranceBlipModel],
["house_exit_pos_x", tempHouseData.exitPosition.x],
["house_exit_pos_y", tempHouseData.exitPosition.y],
["house_exit_pos_z", tempHouseData.exitPosition.z],
["house_exit_rot_z", tempHouseData.exitRotation],
["house_exit_int", tempHouseData.exitInterior],
["house_exit_vw", tempHouseData.databaseId+getGlobalConfig().houseDimensionStart],
["house_exit_pickup", tempHouseData.exitPickupModel],
["house_exit_blip", tempHouseData.exitBlipModel],
["house_has_interior", boolToInt(tempHouseData.hasInterior)],
["house_buy_price", tempHouseData.buyPrice],
["house_rent_price", tempHouseData.rentPrice],
];
let dbQuery = null;
if(tempHouseData.databaseId == 0) {
let queryString = createDatabaseInsertQuery("house_main", data);
dbQuery = queryDatabase(dbConnection, queryString);
getServerData().houses[houseId].databaseId = getDatabaseInsertId(dbConnection);
} else {
let dbQueryString =
`UPDATE house_main SET
house_description='${safeHouseDescription}',
house_owner_type=${tempHouseData.ownerType},
house_owner_id=${tempHouseData.ownerId},
house_locked=${boolToInt(tempHouseData.locked)},
house_entrance_pos_x=${tempHouseData.entrancePosition.x},
house_entrance_pos_y=${tempHouseData.entrancePosition.y},
house_entrance_pos_z=${tempHouseData.entrancePosition.z},
house_entrance_rot_z=${tempHouseData.entranceRotation},
house_entrance_int=${tempHouseData.entranceInterior},
house_entrance_vw=${tempHouseData.entranceDimension},
house_exit_pos_x=${tempHouseData.exitPosition.x},
house_exit_pos_y=${tempHouseData.exitPosition.y},
house_exit_pos_z=${tempHouseData.exitPosition.z},
house_exit_rot_z=${tempHouseData.exitRotation},
house_exit_int=${tempHouseData.exitInterior},
house_exit_vw=${tempHouseData.exitDimension},
house_buy_price=${tempHouseData.buyPrice},
house_rent_price=${tempHouseData.rentPrice},
house_has_interior=${boolToInt(tempHouseData.hasInterior)}
WHERE house_id=${tempHouseData.databaseId}`;
//dbQueryString = dbQueryString.trim();
dbQueryString = dbQueryString.replace(/(?:\r\n|\r|\n|\t)/g, "");
let dbQuery = queryDatabase(dbConnection, dbQueryString);
freeDatabaseQuery(dbQuery);
disconnectFromDatabase(dbConnection);
let queryString = createDatabaseUpdateQuery("house_main", data, `WHERE house_id=${tempHouseData.databaseId}`);
dbQuery = queryDatabase(dbConnection, queryString);
}
freeDatabaseQuery(dbQuery);
disconnectFromDatabase(dbConnection);
return true;
}

View File

@@ -45,7 +45,9 @@ function saveAllVehiclesToDatabase() {
logToConsole(LOG_INFO, "[VRR.Vehicle]: Saving all vehicles to database ...");
let vehicles = getServerData().vehicles;
for(let i in vehicles) {
saveVehicleToDatabase(vehicles[i]);
if(vehicles[i].needsSaved) {
saveVehicleToDatabase(vehicles[i]);
}
}
logToConsole(LOG_INFO, "[VRR.Vehicle]: Saved all vehicles to database!");
@@ -54,43 +56,118 @@ function saveAllVehiclesToDatabase() {
// ===========================================================================
function saveVehicleToDatabase(vehicleData) {
if(vehicleData == null) {
function saveVehicleToDatabase(vehicleDataId) {
if(getVehicleData(vehicleDataId) == null) {
// Invalid vehicle data
return false;
}
if(vehicleData.databaseId == -1) {
let tempVehicleData = getServerData().vehicles[vehicleDataId];
if(tempVehicleData.databaseId == -1) {
// Temp vehicle, no need to save
return false;
}
logToConsole(LOG_VERBOSE, `[VRR.Vehicle]: Saving vehicle ${vehicleData.databaseId} to database ...`);
if(!tempVehicleData.needsSaved) {
// Vehicle hasn't changed. No need to save.
return false;
}
logToConsole(LOG_VERBOSE, `[VRR.Vehicle]: Saving vehicle ${tempVehicleData.databaseId} to database ...`);
let dbConnection = connectToDatabase();
if(dbConnection) {
if(!vehicleData.spawnLocked) {
if(!isGTAIV()) {
vehicleData.spawnPosition = vehicleData.vehicle.position;
vehicleData.spawnRotation = vehicleData.vehicle.heading;
if(!tempVehicleData.spawnLocked) {
if(doesGameHaveServerElements()) {
tempVehicleData.spawnPosition = tempVehicleData.vehicle.position;
tempVehicleData.spawnRotation = tempVehicleData.vehicle.heading;
} else {
vehicleData.spawnPosition = vehicleData.syncPosition;
vehicleData.spawnRotation = vehicleData.syncHeading;
tempVehicleData.spawnPosition = tempVehicleData.syncPosition;
tempVehicleData.spawnRotation = tempVehicleData.syncHeading;
}
}
// If vehicle hasn't been added to database, ID will be 0
if(vehicleData.databaseId == 0) {
let dbQueryString = `INSERT INTO veh_main (veh_model, veh_pos_x, veh_pos_y, veh_pos_z, veh_rot_z, veh_owner_type, veh_owner_id, veh_col1, veh_col2, veh_col3, veh_col4, veh_server, veh_spawn_lock, veh_buy_price, veh_rent_price, veh_livery) VALUES (${vehicleData.model}, ${vehicleData.spawnPosition.x}, ${vehicleData.spawnPosition.y}, ${vehicleData.spawnPosition.z}, ${vehicleData.spawnRotation}, ${vehicleData.ownerType}, ${vehicleData.ownerId}, ${vehicleData.colour1}, ${vehicleData.colour2}, ${vehicleData.colour3}, ${vehicleData.colour4}, ${getServerId()}, ${boolToInt(vehicleData.spawnLocked)}, ${vehicleData.buyPrice}, ${vehicleData.rentPrice}, ${vehicleData.livery})`;
queryDatabase(dbConnection, dbQueryString);
getVehicleData(vehicleData.vehicle).databaseId = getDatabaseInsertId(dbConnection);
let colour1RGBA = rgbaArrayFromToColour(vehicleData.colour1RGBA);
let colour2RGBA = rgbaArrayFromToColour(vehicleData.colour2RGBA);
let colour3RGBA = rgbaArrayFromToColour(vehicleData.colour3RGBA);
let colour4RGBA = rgbaArrayFromToColour(vehicleData.colour4RGBA);
let data = [
["veh_server", getServerId()],
["veh_model", tempVehicleData.model],
["veh_owner_type", tempVehicleData.ownerType],
["veh_owner_id", tempVehicleData.ownerId],
["veh_locked", boolToInt(tempVehicleData.locked)],
["veh_spawn_lock", boolToInt(tempVehicleData.spawnLocked)],
["veh_buy_price", boolToInt(tempVehicleData.buyPrice)],
["veh_rent_price", boolToInt(tempVehicleData.rentPrice)],
["veh_pos_x", tempVehicleData.spawnPosition.x],
["veh_pos_y", tempVehicleData.spawnPosition.x],
["veh_pos_z", tempVehicleData.spawnPosition.z],
["veh_rot_z", tempVehicleData.spawnRotation],
["veh_col1", tempVehicleData.spawnRotation],
["veh_col2", tempVehicleData.spawnRotation],
["veh_col3", tempVehicleData.spawnRotation],
["veh_col4", tempVehicleData.spawnRotation],
["veh_col1_isrgba", tempVehicleData.colour1IsRGBA],
["veh_col2_isrgba", tempVehicleData.colour1IsRGBA],
["veh_col3_isrgba", tempVehicleData.colour1IsRGBA],
["veh_col4_isrgba", tempVehicleData.colour1IsRGBA],
["veh_col1_r", colour1RGBA[0]],
["veh_col1_g", colour1RGBA[1]],
["veh_col1_b", colour1RGBA[2]],
["veh_col1_a", colour1RGBA[3]],
["veh_col2_r", colour2RGBA[0]],
["veh_col2_g", colour2RGBA[1]],
["veh_col2_b", colour2RGBA[2]],
["veh_col2_a", colour2RGBA[3]],
["veh_col3_r", colour3RGBA[0]],
["veh_col3_g", colour3RGBA[1]],
["veh_col3_b", colour3RGBA[2]],
["veh_col3_a", colour3RGBA[3]],
["veh_col4_r", colour4RGBA[0]],
["veh_col4_g", colour4RGBA[1]],
["veh_col4_b", colour4RGBA[2]],
["veh_col4_a", colour4RGBA[3]],
["veh_extra1", tempVehicleData.extras[0]],
["veh_extra2", tempVehicleData.extras[1]],
["veh_extra3", tempVehicleData.extras[2]],
["veh_extra4", tempVehicleData.extras[3]],
["veh_extra5", tempVehicleData.extras[4]],
["veh_extra6", tempVehicleData.extras[5]],
["veh_extra7", tempVehicleData.extras[6]],
["veh_extra8", tempVehicleData.extras[7]],
["veh_extra9", tempVehicleData.extras[8]],
["veh_extra10", tempVehicleData.extras[9]],
["veh_extra11", tempVehicleData.extras[10]],
["veh_extra12", tempVehicleData.extras[11]],
["veh_extra13", tempVehicleData.extras[12]],
["veh_locked", intToBool(tempVehicleData.locked)],
["veh_engine", intToBool(tempVehicleData.engine)],
["veh_lights", intToBool(tempVehicleData.lights)],
["veh_health", toInteger(tempVehicleData.health)],
["veh_damage_engine", toInteger(tempVehicleData.engineDamage)],
["veh_damage_visual", toInteger(tempVehicleData.visualDamage)],
["veh_dirt_level", toInteger(tempVehicleData.dirtLevel)],
];
let dbQuery = null;
if(tempVehicleData.databaseId == 0) {
let queryString = createDatabaseInsertQuery("veh_main", data);
dbQuery = queryDatabase(dbConnection, queryString);
getServerData().vehicles[vehicleDataId].databaseId = getDatabaseInsertId(dbConnection);
getServerData().vehicles[vehicleDataId].needsSaved = false;
} else {
let dbQueryString = `UPDATE veh_main SET veh_model=${vehicleData.model}, veh_pos_x=${vehicleData.spawnPosition.x}, veh_pos_y=${vehicleData.spawnPosition.y}, veh_pos_z=${vehicleData.spawnPosition.z}, veh_rot_z=${vehicleData.spawnRotation}, veh_owner_type=${vehicleData.ownerType}, veh_owner_id=${vehicleData.ownerId}, veh_col1=${vehicleData.colour1}, veh_col2=${vehicleData.colour2}, veh_col3=${vehicleData.colour3}, veh_col4=${vehicleData.colour4}, veh_buy_price=${vehicleData.buyPrice}, veh_rent_price=${vehicleData.rentPrice}, veh_livery=${vehicleData.livery} WHERE veh_id=${vehicleData.databaseId}`;
queryDatabase(dbConnection, dbQueryString);
let queryString = createDatabaseUpdateQuery("veh_main", data, `WHERE veh_id=${tempVehicleData.databaseId}`);
dbQuery = queryDatabase(dbConnection, queryString);
getServerData().vehicles[vehicleDataId].needsSaved = false;
}
freeDatabaseQuery(dbQuery);
disconnectFromDatabase(dbConnection);
return true;
}
logToConsole(LOG_VERBOSE, `[VRR.Vehicle]: Saved vehicle ${vehicleData.vehicle.id} to database!`);
logToConsole(LOG_VERBOSE, `[VRR.Vehicle]: Saved vehicle ${vehicleDataId} to database!`);
return false;
}
@@ -108,10 +185,15 @@ function spawnAllVehicles() {
// ===========================================================================
function getVehicleData(vehicle) {
let dataIndex = getEntityData(vehicle, "vrr.dataSlot");
if(typeof getServerData().vehicles[dataIndex] != "undefined") {
return getServerData().vehicles[dataIndex];
if(isVehicleObject(vehicle)) {
let dataIndex = getEntityData(vehicle, "vrr.dataSlot");
if(typeof getServerData().vehicles[dataIndex] != "undefined") {
return getServerData().vehicles[dataIndex];
}
} else {
}
return false;
}
@@ -188,6 +270,8 @@ function vehicleLockCommand(command, params, client) {
getVehicleData(vehicle).locked = !getVehicleData(vehicle).locked;
vehicle.locked = getVehicleData(vehicle).locked;
getVehicleData(vehicle).needsSaved = true;
meActionToNearbyPlayers(client, `${toLowerCase(getLockedUnlockedFromBool(getVehicleData(vehicle).locked))} the ${getVehicleName(vehicle)}`);
}
@@ -214,6 +298,8 @@ function vehicleTrunkCommand(command, params, client) {
getVehicleData(vehicle).trunk = !getVehicleData(vehicle).trunk;
getVehicleData(vehicle).needsSaved = true;
meActionToNearbyPlayers(client, `${toLowerCase(getOpenedClosedFromBool(getVehicleData(vehicle).trunk))} the ${getVehicleName(vehicle)}'s trunk.`);
}
@@ -241,6 +327,8 @@ function vehicleLightsCommand(command, params, client) {
setEntityData(vehicle, "vrr.lights", getVehicleData(vehicle).lights);
setVehicleLightsState(vehicle, getVehicleData(vehicle).lights);
getVehicleData(vehicle).needsSaved = true;
meActionToNearbyPlayers(client, `turned the ${getVehicleName(vehicle)}'s lights ${toLowerCase(getOnOffFromBool(getVehicleData(vehicle).lights))}`);
}
@@ -267,6 +355,8 @@ function deleteVehicleCommand(command, params, client) {
getServerData().vehicles[dataIndex] = null;
destroyElement(vehicle);
getVehicleData(vehicle).needsSaved = true;
messagePlayerSuccess(client, `The ${vehicleName} has been deleted!`);
}
@@ -298,6 +388,8 @@ function vehicleEngineCommand(command, params, client) {
getVehicleData(vehicle).engine = !getVehicleData(vehicle).engine;
vehicle.engine = getVehicleData(vehicle).engine;
getVehicleData(vehicle).needsSaved = true;
meActionToNearbyPlayers(client, `turned the ${getVehicleName(vehicle)}'s engine ${toLowerCase(getOnOffFromBool(getVehicleData(vehicle).engine))}`);
}
@@ -329,6 +421,8 @@ function vehicleSirenCommand(command, params, client) {
getVehicleData(vehicle).siren = !getVehicleData(vehicle).siren;
vehicle.siren = getVehicleData(vehicle).siren;
getVehicleData(vehicle).needsSaved = true;
meActionToNearbyPlayers(client, `turns the ${getVehicleName(vehicle)}'s siren ${toLowerCase(getOnOffFromBool(getVehicleData(vehicle).siren))}`);
}
@@ -375,6 +469,8 @@ function setVehicleColourCommand(command, params, client) {
getVehicleData(vehicle).colour1 = colour1;
getVehicleData(vehicle).colour2 = colour2;
getVehicleData(vehicle).needsSaved = true;
meActionToNearbyPlayers(client, `resprays the ${getVehicleName(vehicle)}'s colours`);
}
@@ -408,6 +504,8 @@ function vehicleRepairCommand(command, params, client) {
takePlayerCash(client, getGlobalConfig().repairVehicleCost);
repairVehicle(vehicle);
getVehicleData(vehicle).needsSaved = true;
meActionToNearbyPlayers(client, `repairs the ${getVehicleName(vehicle)}!`);
}
@@ -444,6 +542,8 @@ function buyVehicleCommand(command, params, client) {
getVehicleData(vehicle).engine = true;
vehicle.engine = true;
getVehicleData(vehicle).needsSaved = true;
meActionToNearbyPlayers(client, `receives a set of keys to test drive the ${getVehicleName(vehicle)} and starts the engine`);
messagePlayerInfo(client, `Drive the vehicle away from the dealership to buy it, or get out to cancel.`);
}
@@ -488,6 +588,8 @@ function rentVehicleCommand(command, params, client) {
getPlayerData(client).rentingVehicle = vehicle;
getVehicleData(vehicle).rentStart = getCurrentUnixTimestamp();
getVehicleData(vehicle).needsSaved = true;
meActionToNearbyPlayers(client, `rents the ${getVehicleName(vehicle)} and receives a set of vehicle keys!`);
messagePlayerAlert(client, `You will be charged ${getVehicleData(vehicle).rentPrice} per minute to use this vehicle. To stop renting this vehicle, use /vehrent again.`);
}
@@ -509,6 +611,8 @@ function stopRentingVehicleCommand(command, params, client) {
let vehicle = getPlayerData(client).rentingVehicle;
messagePlayerAlert(client, `You are no longer renting the ${getVehicleName(vehicle)}`);
stopRentingVehicle(client);
getVehicleData(vehicle).needsSaved = true;
}
// ===========================================================================
@@ -617,6 +721,8 @@ function setVehicleJobCommand(command, params, client) {
getVehicleData(vehicle).ownerType = VRR_VEHOWNER_JOB;
getVehicleData(vehicle).ownerId = jobId;
getVehicleData(vehicle).needsSaved = true;
messageAdmins(`${getInlineChatColourByName("lightGrey")}${getPlayerName(client)} ${getInlineChatColourByName("white")}set their ${getInlineChatColourByType("vehiclePurple")}${getVehicleName(vehicle)} ${getInlineChatColourByName("white")}owner to the ${getInlineChatColourByType("jobYellow")}${getJobData(jobId).name} ${getInlineChatColourByName("white")}job! (Job ID ${jobId})`);
}
@@ -649,6 +755,8 @@ function setVehicleRankCommand(command, params, client) {
getVehicleData(vehicle).rank = rankId;
messageAdmins(`${getInlineChatColourByName("lightGrey")}${getPlayerName(client)} ${getInlineChatColourByName("white")}set their ${getInlineChatColourByType("vehiclePurple")}${getVehicleName(vehicle)} ${getInlineChatColourByName("white")}rank to ${getInlineChatColourByName("lightGrey")}${rankId} ${getInlineChatColourByName("white")}of the ${getInlineChatColourByType("jobYellow")}${getJobData(getVehicleData(vehicle).ownerId).name} ${getInlineChatColourByName("white")}job!`);
}
getVehicleData(vehicle).needsSaved = true;
}
// ===========================================================================
@@ -671,6 +779,8 @@ function setVehicleClanCommand(command, params, client) {
getVehicleData(vehicle).ownerId = getClanData(clanId).databaseId;
messageAdmins(`${getInlineChatColourByName("lightGrey")}${getPlayerName(client)} ${getInlineChatColourByName("white")}set their ${getInlineChatColourByType("vehiclePurple")}${getVehicleName(vehicle)} ${getInlineChatColourByName("white")}owner to the ${getInlineChatColourByType("clanOrange")}${getClanData(clanId).name} ${getInlineChatColourByName("white")}clan`);
getVehicleData(vehicle).needsSaved = true;
}
// ===========================================================================
@@ -688,6 +798,8 @@ function setVehicleToBusinessCommand(command, params, client) {
getVehicleData(vehicle).ownerId = getBusinessData(businessId).databaseId;
messageAdmins(`${getInlineChatColourByName("lightGrey")}${getPlayerName(client)} ${getInlineChatColourByName("white")}set their ${getInlineChatColourByType("vehiclePurple")}${getVehicleName(vehicle)} ${getInlineChatColourByName("white")}owner to the ${getInlineChatColourByType("businessBlue")}${getBusinessData(businessId).name} ${getInlineChatColourByName("white")}business`);
getVehicleData(vehicle).needsSaved = true;
}
// ===========================================================================
@@ -710,6 +822,8 @@ function setVehicleOwnerCommand(command, params, client) {
getVehicleData(vehicle).ownerId = getPlayerCurrentSubAccount(targetClient).databaseId;
messageAdmins(`${getInlineChatColourByName("lightGrey")}${getPlayerName(client)} ${getInlineChatColourByName("white")}set their ${getInlineChatColourByType("vehiclePurple")}${getVehicleName(vehicle)} ${getInlineChatColourByName("white")}owner to ${getInlineChatColourByName("lightGrey")}${getClientSubAccountName(targetClient)}`);
getVehicleData(vehicle).needsSaved = true;
}
// ===========================================================================
@@ -733,6 +847,8 @@ function setVehicleRentPriceCommand(command, params, client) {
getVehicleData(vehicle).rentPrice = amount;
messageAdmins(`${getInlineChatColourByName("lightGrey")}${getPlayerName(client)} ${getInlineChatColourByName("white")}set their ${getInlineChatColourByType("vehiclePurple")}${getVehicleName(vehicle)} ${getInlineChatColourByName("white")}rent price to ${getInlineChatColourByName("lightGrey")}$${amount}`);
getVehicleData(vehicle).needsSaved = true;
}
// ===========================================================================
@@ -756,6 +872,8 @@ function setVehicleBuyPriceCommand(command, params, client) {
getVehicleData(vehicle).buyPrice = amount;
messageAdmins(`${getInlineChatColourByName("lightGrey")}${getPlayerName(client)} ${getInlineChatColourByName("white")}set their ${getInlineChatColourByType("vehiclePurple")}${getVehicleName(vehicle)}'s ${getInlineChatColourByName("white")}buy price to ${getInlineChatColourByName("lightGrey")}$${amount}`);
getVehicleData(vehicle).needsSaved = true;
}
// ===========================================================================
@@ -896,6 +1014,8 @@ function toggleVehicleSpawnLockCommand(command, params, client) {
}
messageAdmins(`${getInlineChatColourByName("lightGrey")}${getPlayerName(client)} ${getInlineChatColourByName("white")}set their ${getInlineChatColourByType("vehiclePurple")}${getVehicleName(vehicle)} ${getInlineChatColourByName("white")}to spawn ${getInlineChatColourByName("lightGrey")}${(getVehicleData(vehicle).spawnLocked) ? "at it's current location" : "wherever a player leaves it."}`);
getVehicleData(vehicle).needsSaved = true;
}
// ===========================================================================
@@ -912,6 +1032,8 @@ function reloadAllVehiclesCommand(command, params, client) {
spawnAllVehicles();
messageAdminAction(`All server vehicles have been reloaded by an admin!`);
getVehicleData(vehicle).needsSaved = true;
}
// ===========================================================================
@@ -936,6 +1058,8 @@ function stopRentingVehicle(client) {
getPlayerData(client).rentingVehicle = false;
getVehicleData(vehicle).rentedBy = false;
respawnVehicle(vehicle);
getVehicleData(vehicle).needsSaved = true;
}
// ===========================================================================
@@ -950,6 +1074,8 @@ function respawnVehicle(vehicle) {
setEntityData(newVehicle, "vrr.dataSlot", i, false);
}
}
getVehicleData(vehicle).needsSaved = true;
}
// ===========================================================================
@@ -996,37 +1122,6 @@ function isVehicleAtPayAndSpray(vehicle) {
// ===========================================================================
function repairVehicle(vehicle) {
vehicle.fix();
}
// ===========================================================================
function setVehicleColours(vehicle, colour1, colour2) {
vehicle.colour1 = colour1;
vehicle.colour2 = colour2;
}
// ===========================================================================
function setVehicleLights(vehicle, lights) {
vehicle.lights = lights;
}
// ===========================================================================
function setVehicleEngine(vehicle, engine) {
vehicle.engine = engine;
}
// ===========================================================================
function setVehicleLocked(vehicle, locked) {
vehicle.locked = locked;
}
// ===========================================================================
function getVehicleOwnerTypeText(ownerType) {
switch(ownerType) {
case VRR_VEHOWNER_CLAN:
@@ -1059,8 +1154,8 @@ function isVehicleOwnedByJob(vehicle, jobId) {
async function getPlayerNewVehicle(client) {
while(true) {
if(client.player.vehicle != null) {
return client.player.vehicle;
if(isPlayerInAnyVehicle(client)) {
return getPlayerVehicle(client);
}
await null;
}
@@ -1069,13 +1164,11 @@ async function getPlayerNewVehicle(client) {
// ===========================================================================
function createNewDealershipVehicle(model, spawnPosition, spawnRotation, price, dealershipId) {
let vehicleDataSlot = getServerData().vehicles.length;
let vehicle = gta.createVehicle(model, spawnPosition, spawnRotation);
let vehicle = createGameVehicle(model, spawnPosition, spawnRotation);
if(!vehicle) {
return false;
}
vehicle.heading = spawnRotation;
setVehicleHeading(spawnRotation);
addToWorld(vehicle);
let tempVehicleData = new serverClasses.vehicleData(false, vehicle);
@@ -1086,17 +1179,18 @@ function createNewDealershipVehicle(model, spawnPosition, spawnRotation, price,
tempVehicleData.spawnRotation = spawnRotation;
tempVehicleData.ownerType = VRR_VEHOWNER_BIZ;
tempVehicleData.ownerId = dealershipId;
tempVehicleData.needsSaved = true;
setEntityData(vehicle, "vrr.dataSlot", vehicleDataSlot, true);
let slot = getServerData().vehicles.push(tempVehicleData);
getServerData().vehicles.push(tempVehicleData);
setEntityData(vehicle, "vrr.dataSlot", slot, true);
}
// ===========================================================================
function createTemporaryVehicle(modelId, position, heading) {
let vehicle = gta.createVehicle(modelId, position, heading);
vehicle.heading = heading;
let vehicle = createGameVehicle(modelId, position, heading);
setVehicleHeading(heading);
addToWorld(vehicle);
let tempVehicleData = new serverClasses.vehicleData(false, vehicle);
@@ -1110,8 +1204,8 @@ function createTemporaryVehicle(modelId, position, heading) {
// ===========================================================================
function createPermanentVehicle(modelId, position, heading) {
let vehicle = gta.createVehicle(modelId, position, heading);
vehicle.heading = heading;
let vehicle = createGameVehicle(modelId, position, heading);
setVehicleHeading(vehicle, heading);
addToWorld(vehicle);
let tempVehicleData = new serverClasses.vehicleData(false, vehicle);