Convert more strings to locale
This commit is contained in:
@@ -416,7 +416,7 @@ function takeJobCommand(command, params, client) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(getPlayerCurrentSubAccount(client).job > VRR_JOB_NONE) {
|
if(getPlayerCurrentSubAccount(client).job > VRR_JOB_NONE) {
|
||||||
messagePlayerError(client, `{MAINCOLOUR}You already have a job! Use {ALTCOLOUR}/quitjob {MAINCOLOUR}to quit your current job.`);
|
messagePlayerInfo(client, getLocaleString(client, "QuitJobToTakeAnother", "{ALTCOLOUR}/quitjob{MAINCOLOUR}"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -442,18 +442,18 @@ function startWorkingCommand(command, params, client) {
|
|||||||
|
|
||||||
if(closestJobLocation.position.distance(getPlayerPosition(client)) > getGlobalConfig().startWorkingDistance) {
|
if(closestJobLocation.position.distance(getPlayerPosition(client)) > getGlobalConfig().startWorkingDistance) {
|
||||||
let closestVehicle = getClosestVehicle(getPlayerPosition(client));
|
let closestVehicle = getClosestVehicle(getPlayerPosition(client));
|
||||||
if(getDistance(getVehiclePosition(closestVehicle), getPlayerPosition(client)) < getGlobalConfig().startWorkingDistance) {
|
if(getDistance(getVehiclePosition(closestVehicle), getPlayerPosition(client)) > getGlobalConfig().startWorkingDistance) {
|
||||||
messagePlayerError(client, "You need to be near your job site or vehicle that belongs to your job!");
|
messagePlayerError(client, "You need to be near your job site or vehicle that belongs to your job!");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(getVehicleData(closestVehicle).ownerType == VRR_VEHOWNER_JOB) {
|
if(getVehicleData(closestVehicle).ownerType != VRR_VEHOWNER_JOB) {
|
||||||
messagePlayerError(client, "This is not a job vehicle!");
|
messagePlayerError(client, getLocaleString(client, "NotAJobVehicle"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(getPlayerCurrentSubAccount(client).job != getVehicleData(closestVehicle).ownerId) {
|
if(getPlayerCurrentSubAccount(client).job != getVehicleData(closestVehicle).ownerId) {
|
||||||
messagePlayerError(client, "This is not your job vehicle!");
|
messagePlayerError(client, getLocaleString(client, "NotYourJobVehicle"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -465,15 +465,20 @@ function startWorkingCommand(command, params, client) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(getPlayerCurrentSubAccount(client).job != closestJobLocation.job) {
|
if(getPlayerCurrentSubAccount(client).job != closestJobLocation.jobId) {
|
||||||
messagePlayerError(client, "This is not your job!");
|
messagePlayerError(client, "This is not your job!");
|
||||||
messagePlayerInfo(client, `If you want this job, use {ALTCOLOUR}/quitjob {MAINCOLOUR}to quit your current job.`);
|
messagePlayerInfo(client, getLocaleString(client, "QuitJobToTakeAnother", "{ALTCOLOUR}/quitjob{MAINCOLOUR}"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
jobData = getJobData(closestJobLocation.jobIndex);
|
jobData = getJobData(closestJobLocation.jobIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!jobData.enabled) {
|
||||||
|
messagePlayerError(client, getLocaleString(client, "JobDisabled", jobData.name));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
messagePlayerSuccess(client, `You are now working for the {jobYellow}${jobData.name} {MAINCOLOUR}job`);
|
messagePlayerSuccess(client, `You are now working for the {jobYellow}${jobData.name} {MAINCOLOUR}job`);
|
||||||
startWorking(client);
|
startWorking(client);
|
||||||
//messagePlayerNewbieTip(client, `Enter a job vehicle to get started!`);
|
//messagePlayerNewbieTip(client, `Enter a job vehicle to get started!`);
|
||||||
@@ -696,41 +701,50 @@ function jobUniformCommand(command, params, client) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(getPlayerCurrentSubAccount(client).job != getVehicleData(closestVehicle).ownerId) {
|
if(getPlayerCurrentSubAccount(client).job != getVehicleData(closestVehicle).ownerId) {
|
||||||
messagePlayerError(client, "This is not your job vehicle!");
|
messagePlayerError(client, getLocaleString(client, "NotYourJob"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
jobData = getJobData(getJobIdFromDatabaseId(getVehicleData(closestVehicle).ownerId));
|
jobData = getJobData(getJobIdFromDatabaseId(getVehicleData(closestVehicle).ownerId));
|
||||||
} else {
|
} else {
|
||||||
if(getPlayerCurrentSubAccount(client).job == VRR_JOB_NONE) {
|
if(getPlayerCurrentSubAccount(client).job == VRR_JOB_NONE) {
|
||||||
messagePlayerError(client, "You don't have a job!");
|
messagePlayerError(client, getLocaleString(client, "NotYourJob"));
|
||||||
messagePlayerInfo(client, "You can get a job by going the yellow points on the map.");
|
messagePlayerInfo(client, getLocaleString(client, "JobPoints"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(getPlayerCurrentSubAccount(client).job != closestJobLocation.job) {
|
if(getPlayerCurrentSubAccount(client).job != closestJobLocation.jobId) {
|
||||||
messagePlayerError(client, "This is not your job!");
|
messagePlayerError(client, getLocaleString(client, "NotYourJob"));
|
||||||
messagePlayerInfo(client, `If you want this job, use /quitjob to quit your current job.`);
|
messagePlayerInfo(client, getLocaleString(client, "QuitJobToTakeAnother", "{ALTCOLOUR}/quitjob{MAINCOLOUR}"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
jobData = getJobData(closestJobLocation.jobIndex);
|
jobData = getJobData(closestJobLocation.jobIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!jobData.enabled) {
|
||||||
|
messagePlayerError(client, getLocaleString(client, "JobDisabled", jobData.name));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
let uniforms = jobData.uniforms;
|
let uniforms = jobData.uniforms;
|
||||||
|
|
||||||
if(areParamsEmpty(params)) {
|
if(areParamsEmpty(params)) {
|
||||||
messagePlayerSyntax(client, getCommandSyntaxText(command));
|
messagePlayerSyntax(client, getCommandSyntaxText(command));
|
||||||
|
|
||||||
for(let i in uniforms) {
|
let uniformList = jobData.uniforms.map(function(x) { return `{MAINCOLOUR}${toInteger(x.index)+1}: {ALTCOLOUR}${x.name}`});
|
||||||
messagePlayerNormal(client, `${toInteger(i)+1}: ${uniforms[i].name} (Requires rank ${uniforms[i].requiredRank})`);
|
let chunkedList = splitArrayIntoChunks(uniformList, 4);
|
||||||
|
|
||||||
|
messagePlayerNormal(client, makeChatBoxSectionHeader(getLocaleString(client, "HeaderJobUniformList")));
|
||||||
|
for(let i in chunkedList) {
|
||||||
|
messagePlayerInfo(client, chunkedList[i].join(", "));
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
let uniformId = toInteger(params) || 1;
|
let uniformId = toInteger(params) || 1;
|
||||||
if(uniformId < 1 || uniformId > uniforms.length) {
|
if(uniformId < 1 || uniformId > uniforms.length) {
|
||||||
messagePlayerError(client, "That uniform ID is invalid!");
|
messagePlayerError(client, getLocaleString(client, "InvalidJobUniform"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -786,15 +800,20 @@ function jobEquipmentCommand(command, params, client) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(getPlayerCurrentSubAccount(client).job != closestJobLocation.job) {
|
if(getPlayerCurrentSubAccount(client).job != closestJobLocation.jobId) {
|
||||||
messagePlayerError(client, "This is not your job!");
|
messagePlayerError(client, "This is not your job!");
|
||||||
messagePlayerInfo(client, `If you want this job, use /quitjob to quit your current job.`);
|
messagePlayerInfo(client, getLocaleString(client, "QuitJobToTakeAnother", "{ALTCOLOUR}/quitjob{MAINCOLOUR}"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
jobData = getJobData(closestJobLocation.jobIndex);
|
jobData = getJobData(closestJobLocation.jobIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!jobData.enabled) {
|
||||||
|
messagePlayerError(client, getLocaleString(client, "JobDisabled", jobData.name));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
let equipments = jobData.equipment;
|
let equipments = jobData.equipment;
|
||||||
|
|
||||||
if(areParamsEmpty(params)) {
|
if(areParamsEmpty(params)) {
|
||||||
@@ -823,7 +842,7 @@ function jobEquipmentCommand(command, params, client) {
|
|||||||
//messagePlayerSuccess(client, `You have been given the ${equipments[equipmentId-1].name} equipment`);
|
//messagePlayerSuccess(client, `You have been given the ${equipments[equipmentId-1].name} equipment`);
|
||||||
meActionToNearbyPlayers(client, `grabs the ${jobData.equipment[equipmentId-1].name} equipment from the locker`);
|
meActionToNearbyPlayers(client, `grabs the ${jobData.equipment[equipmentId-1].name} equipment from the locker`);
|
||||||
if(doesPlayerHaveKeyBindForCommand(client, "inv")) {
|
if(doesPlayerHaveKeyBindForCommand(client, "inv")) {
|
||||||
messagePlayerTip(client, getLocaleString(client, "JobEquipmentInventoryKeyBindTip"), getKeyNameFromId(getPlayerKeyBindForCommand(client, "inv")));
|
messagePlayerTip(client, getLocaleString(client, "JobEquipmentInventoryKeyBindTip"), getKeyNameFromId(getPlayerKeyBindForCommand(client, "inv").key));
|
||||||
} else {
|
} else {
|
||||||
messagePlayerTip(client, getLocaleString(client, "JobEquipmentInventoryCommandTip"), "/inv");
|
messagePlayerTip(client, getLocaleString(client, "JobEquipmentInventoryCommandTip"), "/inv");
|
||||||
}
|
}
|
||||||
@@ -921,6 +940,29 @@ function reloadAllJobsCommand(command, params, client) {
|
|||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|
||||||
|
function createJobCommand(command, params, client) {
|
||||||
|
createJob(params);
|
||||||
|
|
||||||
|
messagePlayerSuccess(client, `Job {jobYellow}${params} {MAINCOLOUR}created!`);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
|
|
||||||
|
function createJob(name) {
|
||||||
|
let tempJobData = new JobData(false);
|
||||||
|
tempJobData.serverId = getServerId();
|
||||||
|
tempJobData.name = name;
|
||||||
|
tempJobData.enabled = true;
|
||||||
|
tempJobData.needsSaved = true;
|
||||||
|
tempJobData.blipModel = getGameData().blipSprites[getGame()].job;
|
||||||
|
tempJobData.pickupModel = getGameData().pickupModels[getGame()].job;
|
||||||
|
|
||||||
|
getServerData().jobs.push(tempJobData);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
|
|
||||||
function createJobLocationCommand(command, params, client) {
|
function createJobLocationCommand(command, params, client) {
|
||||||
if(areParamsEmpty(params)) {
|
if(areParamsEmpty(params)) {
|
||||||
messagePlayerSyntax(client, getCommandSyntaxText(command));
|
messagePlayerSyntax(client, getCommandSyntaxText(command));
|
||||||
@@ -935,7 +977,7 @@ function createJobLocationCommand(command, params, client) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
createJobLocation(jobId, getPlayerPosition(client), getPlayerInterior(client), getPlayerDimension(client));
|
createJobLocation(jobId, getPlayerPosition(client), getPlayerInterior(client), getPlayerDimension(client));
|
||||||
messageAdmins(`{ALTCOLOUR}${getPlayerName(client)} {MAINCOLOUR}created a location for the {ALTCOLOUR}${getJobData(jobId).name} {MAINCOLOUR}job`);
|
messageAdmins(`{ALTCOLOUR}${getPlayerName(client)} {MAINCOLOUR}created a location for the {jobYellow}${getJobData(jobId).name} {MAINCOLOUR}job`);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -944,9 +986,12 @@ function createJobLocationCommand(command, params, client) {
|
|||||||
function deleteJobLocationCommand(command, params, client) {
|
function deleteJobLocationCommand(command, params, client) {
|
||||||
let closestJobLocation = getClosestJobLocation(getPlayerPosition(client));
|
let closestJobLocation = getClosestJobLocation(getPlayerPosition(client));
|
||||||
|
|
||||||
messageAdmins(`{ALTCOLOUR}${getPlayerName(client)} {MAINCOLOUR}deleted location {ALTCOLOUR}${closestJobLocation.databaseId} {MAINCOLOUR}for the {ALTCOLOUR}${getJobData(closestJobLocation.jobIndex).name} {MAINCOLOUR}job`);
|
messageAdmins(`{ALTCOLOUR}${getPlayerName(client)} {MAINCOLOUR}deleted location {ALTCOLOUR}${closestJobLocation.index} (DB ID ${closestJobLocation.databaseId}) {MAINCOLOUR}for the {jobYellow}${getJobData(closestJobLocation.jobIndex).name} {MAINCOLOUR}job`);
|
||||||
|
|
||||||
|
if(closestJobLocation.databaseId > 0) {
|
||||||
|
quickDatabaseQuery(`DELETE FROM job_loc WHERE job_loc_id = ${closestJobLocation.databaseId}`);
|
||||||
|
}
|
||||||
|
|
||||||
quickDatabaseQuery(`DELETE FROM job_loc WHERE job_loc_id = ${closestJobLocation.databaseId}`);
|
|
||||||
|
|
||||||
let tempIndex = closestJobLocation.index;
|
let tempIndex = closestJobLocation.index;
|
||||||
let tempJob = closestJobLocation.job;
|
let tempJob = closestJobLocation.job;
|
||||||
@@ -965,7 +1010,7 @@ function toggleJobLocationEnabledCommand(command, params, client) {
|
|||||||
let closestJobLocation = getClosestJobLocation(getPlayerPosition(client));
|
let closestJobLocation = getClosestJobLocation(getPlayerPosition(client));
|
||||||
|
|
||||||
closestJobLocation.enabled = !closestJobLocation.enabled;
|
closestJobLocation.enabled = !closestJobLocation.enabled;
|
||||||
messageAdmins(`{ALTCOLOUR}${getPlayerName(client)} {MAINCOLOUR}${getEnabledDisabledFromBool(closestJobLocation.enabled)} location {ALTCOLOUR}${closestJobLocation.databaseId} {MAINCOLOUR}for the {ALTCOLOUR}${getJobData(closestJobLocation.jobIndex).name} {MAINCOLOUR}job`);
|
messageAdmins(`{ALTCOLOUR}${getPlayerName(client)} {MAINCOLOUR}${getEnabledDisabledFromBool(closestJobLocation.enabled)} location {ALTCOLOUR}${closestJobLocation.databaseId} {MAINCOLOUR}for the {jobYellow}${getJobData(closestJobLocation.jobIndex).name} {MAINCOLOUR}job`);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
@@ -979,7 +1024,235 @@ function toggleJobEnabledCommand(command, params, client) {
|
|||||||
let jobId = getJobFromParams(params) || getClosestJobLocation(getPlayerPosition(client)).jobIndex;
|
let jobId = getJobFromParams(params) || getClosestJobLocation(getPlayerPosition(client)).jobIndex;
|
||||||
|
|
||||||
getJobData(jobId).enabled = !getJobData(jobId).enabled;
|
getJobData(jobId).enabled = !getJobData(jobId).enabled;
|
||||||
messageAdmins(`{ALTCOLOUR}${getPlayerName(client)} {MAINCOLOUR}${getEnabledDisabledFromBool(getJobData(jobId).enabled)} {MAINCOLOUR}the {ALTCOLOUR}${getJobData(jobId).name} {MAINCOLOUR}job`);
|
messageAdmins(`${getPlayerName(client)} {MAINCOLOUR}${getEnabledDisabledFromBool(getJobData(jobId).enabled)}{MAINCOLOUR} the {jobYellow}${getJobData(jobId).name} {MAINCOLOUR}job`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
|
|
||||||
|
function toggleJobRouteEnabledCommand(command, params, client) {
|
||||||
|
let jobId = getPlayerJobRoute(client);
|
||||||
|
let jobRoute = getPlayerJobRoute(client);
|
||||||
|
|
||||||
|
let clients = getClients();
|
||||||
|
for(let i in clients) {
|
||||||
|
if(isPlayerWorking(clients[i])) {
|
||||||
|
if(isPlayerOnJobRoute(clients[i])) {
|
||||||
|
if(getPlayerJob(clients[i]) == jobId && getPlayerJobRoute(clients[i]) == jobRoute) {
|
||||||
|
stopJobRoute(clients[i], true, false);
|
||||||
|
messagePlayerAlert(clients[i], "The job route you were on has been disabled by an admin");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getJobData(jobId).routes[jobRoute].enabled = !getJobData(jobId).routes[jobRoute].enabled;
|
||||||
|
messageAdmins(`${getPlayerName(client)} {MAINCOLOUR}${getEnabledDisabledFromBool(getJobData(jobId).enabled)}{MAINCOLOUR} route {ALTCOLOUR}${getJobRouteData(jobId, jobRoute).name}{MAINCOLOUR} for the {jobYellow}${getJobData(jobId).name}{MAINCOLOUR} job`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
|
|
||||||
|
function setJobRouteNameCommand(command, params, client) {
|
||||||
|
if(!isPlayerWorking(client)) {
|
||||||
|
messagePlayerError(client, getLocaleString(client, "NeedToBeWorking", "{ALTCOLOUR}/startwork{MAINCOLOUR}"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!isPlayerOnJobRoute(client)) {
|
||||||
|
messagePlayerError(client, getLocaleString(client, "NeedToBeOnJobRoute", "{ALTCOLOUR}/startroute{MAINCOLOUR}"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(areParamsEmpty(params)) {
|
||||||
|
messagePlayerSyntax(client, getCommandSyntaxText(command));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
let jobId = getPlayerJobRoute(client);
|
||||||
|
let jobRoute = getPlayerJobRoute(client);
|
||||||
|
|
||||||
|
let oldName = getJobData(jobId).routes[jobRoute].name;
|
||||||
|
getJobData(jobId).routes[jobRoute].name = params;
|
||||||
|
messageAdmins(`${getPlayerName(client)} {MAINCOLOUR}${getEnabledDisabledFromBool(getJobData(jobId).enabled)}{MAINCOLOUR} set route {ALTCOLOUR}${oldName}{MAINCOLOUR} to {ALTCOLOUR}${getJobRouteData(jobId, jobRoute).name}{MAINCOLOUR} for the {jobYellow}${getJobData(jobId).name}{MAINCOLOUR} job`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
|
|
||||||
|
function setJobRouteVehicleColoursCommand(command, params, client) {
|
||||||
|
if(!isPlayerWorking(client)) {
|
||||||
|
messagePlayerError(client, getLocaleString(client, "NeedToBeWorking", "{ALTCOLOUR}/startwork{MAINCOLOUR}"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!isPlayerOnJobRoute(client)) {
|
||||||
|
messagePlayerError(client, getLocaleString(client, "NeedToBeOnJobRoute", "{ALTCOLOUR}/startroute{MAINCOLOUR}"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(areParamsEmpty(params)) {
|
||||||
|
messagePlayerSyntax(client, getCommandSyntaxText(command));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
let jobId = getPlayerJobRoute(client);
|
||||||
|
let jobRoute = getPlayerJobRoute(client);
|
||||||
|
|
||||||
|
let colour1 = getParam(params, " ", 1);
|
||||||
|
let colour2 = getParam(params, " ", 2);
|
||||||
|
|
||||||
|
getJobData(jobId).routes[jobRoute].vehicleColour1 = colour1;
|
||||||
|
getJobData(jobId).routes[jobRoute].vehicleColour1 = colour2;
|
||||||
|
getJobData(jobId).routes[jobRoute].needsSaved = true;
|
||||||
|
|
||||||
|
let clients = getClients();
|
||||||
|
for(let i in clients) {
|
||||||
|
if(isPlayerWorking(clients[i])) {
|
||||||
|
if(isPlayerOnJobRoute(clients[i])) {
|
||||||
|
if(getPlayerJob(clients[i]) == jobId && getPlayerJobRoute(clients[i]) == jobRoute) {
|
||||||
|
setVehicleColours(getPlayerJobVehicle(clients[i]), getJobRouteData(getPlayerJob(clients[i], getPlayerJobRoute(clients[i])).vehicleColour1, getJobRouteData(getPlayerJob(clients[i], getPlayerJobRoute(clients[i])).vehicleColour2, 1, 1)));
|
||||||
|
messagePlayerAlert(clients[i], );
|
||||||
|
messagePlayerAlert(clients[i], getLocaleString(client, "CurrentJobRouteVehicleColoursChanged"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
messageAdmins(`${getPlayerName(client)} {MAINCOLOUR}${getEnabledDisabledFromBool(getJobData(jobId).enabled)}{MAINCOLOUR} set the vehicle colours to {ALTCOLOUR}${colour1}, ${colour2}{MAINCOLOUR} for route {ALTCOLOUR}${getJobRouteData(jobId, jobRoute).name}{MAINCOLOUR} of the {jobYellow}${getJobData(jobId).name}{MAINCOLOUR} job`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
|
|
||||||
|
function setJobRouteFinishMessageCommand(command, params, client) {
|
||||||
|
if(!isPlayerWorking(client)) {
|
||||||
|
messagePlayerError(client, getLocaleString(client, "NeedToBeWorking", "{ALTCOLOUR}/startwork{MAINCOLOUR}"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!isPlayerOnJobRoute(client)) {
|
||||||
|
messagePlayerError(client, getLocaleString(client, "NeedToBeOnJobRoute", "{ALTCOLOUR}/startroute{MAINCOLOUR}"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(areParamsEmpty(params)) {
|
||||||
|
messagePlayerSyntax(client, getCommandSyntaxText(command));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
let jobId = getPlayerJobRoute(client);
|
||||||
|
let jobRoute = getPlayerJobRoute(client);
|
||||||
|
|
||||||
|
getJobData(jobId).routes[jobRoute].finishMessage = params;
|
||||||
|
getJobData(jobId).routes[jobRoute].needsSaved = true;
|
||||||
|
messageAdmins(`${getPlayerName(client)} {MAINCOLOUR}${getEnabledDisabledFromBool(getJobData(jobId).enabled)}{MAINCOLOUR} set the finish message to {ALTCOLOUR}"${params}"{MAINCOLOUR} for route {ALTCOLOUR}${getJobRouteData(jobId, jobRoute).name}{MAINCOLOUR} of the {jobYellow}${getJobData(jobId).name}{MAINCOLOUR} job`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
|
|
||||||
|
function setJobRouteStartMessageCommand(command, params, client) {
|
||||||
|
if(!isPlayerWorking(client)) {
|
||||||
|
messagePlayerError(client, getLocaleString(client, "NeedToBeWorking", "{ALTCOLOUR}/startwork{MAINCOLOUR}"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!isPlayerOnJobRoute(client)) {
|
||||||
|
messagePlayerError(client, getLocaleString(client, "NeedToBeOnJobRoute", "{ALTCOLOUR}/startroute{MAINCOLOUR}"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(areParamsEmpty(params)) {
|
||||||
|
messagePlayerSyntax(client, getCommandSyntaxText(command));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
let jobId = getPlayerJobRoute(client);
|
||||||
|
let jobRoute = getPlayerJobRoute(client);
|
||||||
|
|
||||||
|
getJobData(jobId).routes[jobRoute].startMessage = params;
|
||||||
|
getJobData(jobId).routes[jobRoute].needsSaved = true;
|
||||||
|
messageAdmins(`${getPlayerName(client)} {MAINCOLOUR}${getEnabledDisabledFromBool(getJobData(jobId).enabled)}{MAINCOLOUR} set the start message to {ALTCOLOUR}"${params}"{MAINCOLOUR} for route {ALTCOLOUR}${getJobRouteData(jobId, jobRoute).name}{MAINCOLOUR} of the {jobYellow}${getJobData(jobId).name}{MAINCOLOUR} job`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
|
|
||||||
|
function setJobRouteLocationArriveMessageCommand(command, params, client) {
|
||||||
|
if(!isPlayerWorking(client)) {
|
||||||
|
messagePlayerError(client, getLocaleString(client, "NeedToBeWorking", "{ALTCOLOUR}/startwork{MAINCOLOUR}"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!isPlayerOnJobRoute(client)) {
|
||||||
|
messagePlayerError(client, getLocaleString(client, "NeedToBeOnJobRoute", "{ALTCOLOUR}/startroute{MAINCOLOUR}"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(areParamsEmpty(params)) {
|
||||||
|
messagePlayerSyntax(client, getCommandSyntaxText(command));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
let jobId = getPlayerJobRoute(client);
|
||||||
|
let jobRoute = getPlayerJobRoute(client);
|
||||||
|
|
||||||
|
getJobData(jobId).routes[jobRoute].locationArriveMessage = params;
|
||||||
|
getJobData(jobId).routes[jobRoute].needsSaved = true;
|
||||||
|
messageAdmins(`${getPlayerName(client)} {MAINCOLOUR}${getEnabledDisabledFromBool(getJobData(jobId).enabled)}{MAINCOLOUR} set the location arrival message to {ALTCOLOUR}"${params}"{MAINCOLOUR} for route {ALTCOLOUR}${getJobRouteData(jobId, jobRoute).name}{MAINCOLOUR} of the {jobYellow}${getJobData(jobId).name}{MAINCOLOUR} job`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
|
|
||||||
|
function setJobRouteLocationNextMessageCommand(command, params, client) {
|
||||||
|
if(!isPlayerWorking(client)) {
|
||||||
|
messagePlayerError(client, getLocaleString(client, "NeedToBeWorking", "{ALTCOLOUR}/startwork{MAINCOLOUR}"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!isPlayerOnJobRoute(client)) {
|
||||||
|
messagePlayerError(client, getLocaleString(client, "NeedToBeOnJobRoute", "{ALTCOLOUR}/startroute{MAINCOLOUR}"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(areParamsEmpty(params)) {
|
||||||
|
messagePlayerSyntax(client, getCommandSyntaxText(command));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
let jobId = getPlayerJobRoute(client);
|
||||||
|
let jobRoute = getPlayerJobRoute(client);
|
||||||
|
|
||||||
|
getJobData(jobId).routes[jobRoute].locationNextMessage = params;
|
||||||
|
getJobData(jobId).routes[jobRoute].needsSaved = true;
|
||||||
|
messageAdmins(`${getPlayerName(client)} {MAINCOLOUR}${getEnabledDisabledFromBool(getJobData(jobId).enabled)}{MAINCOLOUR} set the location next message to {ALTCOLOUR}"${params}"{MAINCOLOUR} for route {ALTCOLOUR}${getJobRouteData(jobId, jobRoute).name}{MAINCOLOUR} of the {jobYellow}${getJobData(jobId).name}{MAINCOLOUR} job`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
|
|
||||||
|
function setJobRoutePayCommand(command, params, client) {
|
||||||
|
if(!isPlayerWorking(client)) {
|
||||||
|
messagePlayerError(client, getLocaleString(client, "NeedToBeWorking", "{ALTCOLOUR}/startwork{MAINCOLOUR}"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!isPlayerOnJobRoute(client)) {
|
||||||
|
messagePlayerError(client, getLocaleString(client, "NeedToBeOnJobRoute", "{ALTCOLOUR}/startroute{MAINCOLOUR}"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(areParamsEmpty(params)) {
|
||||||
|
messagePlayerSyntax(client, getCommandSyntaxText(command));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
let jobId = getPlayerJobRoute(client);
|
||||||
|
let jobRoute = getPlayerJobRoute(client);
|
||||||
|
|
||||||
|
let amount = getParam(params, " ", 1);
|
||||||
|
|
||||||
|
if(isNaN(amount)) {
|
||||||
|
getLocaleString(client, "MustBeNumber", "amount");
|
||||||
|
}
|
||||||
|
|
||||||
|
getJobData(jobId).routes[jobRoute].pay = amount;
|
||||||
|
getJobData(jobId).routes[jobRoute].needsSaved = true;
|
||||||
|
messageAdmins(`${getPlayerName(client)} {MAINCOLOUR}${getEnabledDisabledFromBool(getJobData(jobId).enabled)}{MAINCOLOUR} set the start message to {ALTCOLOUR}"${params}"{MAINCOLOUR} for route {ALTCOLOUR}${getJobRouteData(jobId, jobRoute).name}{MAINCOLOUR} of the {jobYellow}${getJobData(jobId).name}{MAINCOLOUR} job`);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
@@ -1153,8 +1426,8 @@ function jobStartRouteCommand(command, params, client) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!doesPlayerHaveJobType(client, VRR_JOB_BUS) && !doesPlayerHaveJobType(client, VRR_JOB_GARBAGE)) {
|
if(getJobData(getPlayerJob(client)).routes.length == 0) {
|
||||||
messagePlayerError(client, "Your job doesn't use a route!");
|
messagePlayerError(client, "Your job doesn't have any routes!");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1164,7 +1437,6 @@ function jobStartRouteCommand(command, params, client) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
startJobRoute(client);
|
startJobRoute(client);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1220,27 +1492,16 @@ function isPlayerWorking(client) {
|
|||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|
||||||
function startJobRoute(client) {
|
function startJobRoute(client) {
|
||||||
if(doesPlayerHaveJobType(client, VRR_JOB_BUS)) {
|
let jobRoute = getRandomJobRoute(getClosestJobLocationForJob(getPlayerPosition(client), getPlayerJob(client)));
|
||||||
let busRoute = getRandomBusRoute(getPlayerIsland(client));
|
getPlayerData(client).jobRoute = jobRoute;
|
||||||
getPlayerData(client).jobRoute = busRoute;
|
getPlayerData(client).jobRouteStop = 0;
|
||||||
getPlayerData(client).jobRouteStop = 0;
|
getPlayerData(client).jobRouteVehicle = getPlayerVehicle(client);
|
||||||
getPlayerData(client).jobRouteIsland = getPlayerIsland(client);
|
getPlayerVehicle(client).colour1 = getJobRouteData(getPlayerJob(client), jobRoute).vehicleColour1;
|
||||||
getPlayerData(client).jobRouteVehicle = getPlayerVehicle(client);
|
getPlayerVehicle(client).colour2 = getJobRouteData(getPlayerJob(client), jobRoute).vehicleColour2;
|
||||||
getPlayerVehicle(client).colour1 = getBusRouteData(getPlayerIsland(client), busRoute).busColour;
|
if(getJobRouteData(getPlayerJob(client), jobRoute).locations.length > 0) {
|
||||||
getPlayerVehicle(client).colour2 = 1;
|
showCurrentJobStop(client);
|
||||||
showCurrentBusStop(client);
|
|
||||||
messagePlayerNormal(client, `🚌 You are now driving the {ALTCOLOUR}${getBusRouteData(getPlayerIsland(client), busRoute).name} {MAINCOLOUR}bus route! Drive to the green checkpoint.`);
|
|
||||||
} else if(doesPlayerHaveJobType(client, VRR_JOB_GARBAGE)) {
|
|
||||||
let garbageRoute = getRandomBusRoute(getPlayerIsland(client));
|
|
||||||
getPlayerData(client).jobRoute = garbageRoute;
|
|
||||||
getPlayerData(client).jobRouteStop = 0;
|
|
||||||
getPlayerData(client).jobRouteIsland = getPlayerIsland(client);
|
|
||||||
getPlayerData(client).jobRouteVehicle = getPlayerVehicle(client);
|
|
||||||
getPlayerVehicle(client).colour1 = getGarbageRouteData(getPlayerIsland(client), garbageRoute).garbageTruckColour;
|
|
||||||
getPlayerVehicle(client).colour2 = 1;
|
|
||||||
showCurrentGarbageStop(client);
|
|
||||||
messagePlayerNormal(client, `🚌 You are now driving the {ALTCOLOUR}${getGarbageRouteData(getPlayerIsland(client), garbageRoute).name} {MAINCOLOUR}garbage route! Drive to the grey checkpoint.`);
|
|
||||||
}
|
}
|
||||||
|
messagePlayerNormal(client, getJobRouteData(getPlayerJob(client), jobRoute).startMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
@@ -1248,44 +1509,20 @@ function startJobRoute(client) {
|
|||||||
function stopJobRoute(client, successful = false, alertPlayer = true) {
|
function stopJobRoute(client, successful = false, alertPlayer = true) {
|
||||||
stopReturnToJobVehicleCountdown(client);
|
stopReturnToJobVehicleCountdown(client);
|
||||||
sendPlayerStopJobRoute(client);
|
sendPlayerStopJobRoute(client);
|
||||||
|
respawnVehicle(getPlayerData(client).jobRouteVehicle);
|
||||||
|
getPlayerData(client).jobRouteVehicle = false;
|
||||||
|
getPlayerData(client).jobRoute = false;
|
||||||
|
getPlayerData(client).jobRouteStop = false;
|
||||||
|
|
||||||
if(doesPlayerHaveJobType(client, VRR_JOB_BUS)) {
|
if(alertPlayer) {
|
||||||
respawnVehicle(getPlayerData(client).jobRouteVehicle);
|
messagePlayerAlert(client, getJobRouteData(getPlayerJob(client), jobRoute).finishMessage);
|
||||||
getPlayerData(client).jobRouteVehicle = false;
|
|
||||||
getPlayerData(client).jobRoute = false;
|
|
||||||
getPlayerData(client).jobRouteStop = false;
|
|
||||||
getPlayerData(client).jobRouteIsland = false;
|
|
||||||
|
|
||||||
if(alertPlayer) {
|
|
||||||
messagePlayerAlert(client, `You stopped the ${getBusRouteData(getPlayerData(client).jobRouteIsland, getPlayerData(client).jobRoute).name} bus route! Your bus has been returned to the bus depot.`, getColourByName("yellow"));
|
|
||||||
}
|
|
||||||
} else if(doesPlayerHaveJobType(client, VRR_JOB_GARBAGE)) {
|
|
||||||
respawnVehicle(getPlayerData(client).jobRouteVehicle);
|
|
||||||
getPlayerData(client).jobRouteVehicle = false;
|
|
||||||
getPlayerData(client).jobRoute = false;
|
|
||||||
getPlayerData(client).jobRouteStop = false;
|
|
||||||
getPlayerData(client).jobRouteIsland = false;
|
|
||||||
|
|
||||||
if(alertPlayer) {
|
|
||||||
messagePlayerAlert(client, `You stopped the ${getGarbageRouteData(getPlayerData(client).jobRouteIsland, getPlayerData(client).jobRoute).name} garbage route! Your trashmaster has been returned to the bus depot.`, getColourByName("yellow"));
|
|
||||||
}
|
|
||||||
} else if(doesPlayerHaveJobType(client, VRR_JOB_POLICE)) {
|
|
||||||
respawnVehicle(getPlayerData(client).jobRouteVehicle);
|
|
||||||
getPlayerData(client).jobRouteVehicle = false;
|
|
||||||
getPlayerData(client).jobRoute = false;
|
|
||||||
getPlayerData(client).jobRouteStop = false;
|
|
||||||
getPlayerData(client).jobRouteIsland = false;
|
|
||||||
|
|
||||||
if(alertPlayer) {
|
|
||||||
messagePlayerAlert(client, `You stopped the ${getPolicePatrolRouteData(getPlayerData(client).jobRouteIsland, getPlayerData(client).jobRoute).name} patrol route! Your police car has been returned to the station.`, getColourByName("yellow"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|
||||||
function isPlayerOnJobRoute(client) {
|
function isPlayerOnJobRoute(client) {
|
||||||
if(typeof getPlayerData(client).jobRoute == "number") {
|
if(getPlayerData(client).jobRoute != false) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1399,6 +1636,12 @@ function setAllJobDataIndexes() {
|
|||||||
for(let j in getServerData().jobs[i].locations) {
|
for(let j in getServerData().jobs[i].locations) {
|
||||||
getServerData().jobs[i].locations[j].index = j;
|
getServerData().jobs[i].locations[j].index = j;
|
||||||
getServerData().jobs[i].locations[j].jobIndex = i;
|
getServerData().jobs[i].locations[j].jobIndex = i;
|
||||||
|
|
||||||
|
for(let u in getServerData().jobs[i].routes) {
|
||||||
|
if(getServerData().jobs[i].routes[u].locationId == getServerData().jobs[i].locations[j].databaseId) {
|
||||||
|
getServerData().jobs[i].locations[j].routeCache.push(u);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for(let k in getServerData().jobs[i].uniforms) {
|
for(let k in getServerData().jobs[i].uniforms) {
|
||||||
@@ -1425,6 +1668,11 @@ function setAllJobDataIndexes() {
|
|||||||
getServerData().jobs[i].blackList[v].index = v;
|
getServerData().jobs[i].blackList[v].index = v;
|
||||||
getServerData().jobs[i].blackList[v].jobIndex = i;
|
getServerData().jobs[i].blackList[v].jobIndex = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for(let t in getServerData().jobs[i].routes) {
|
||||||
|
getServerData().jobs[i].routes[t].index = t;
|
||||||
|
getServerData().jobs[i].routes[t].jobIndex = i;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1433,11 +1681,12 @@ function setAllJobDataIndexes() {
|
|||||||
function createJobLocation(jobId, position, interior, dimension) {
|
function createJobLocation(jobId, position, interior, dimension) {
|
||||||
let jobLocationData = new JobLocationData(false);
|
let jobLocationData = new JobLocationData(false);
|
||||||
jobLocationData.position = position;
|
jobLocationData.position = position;
|
||||||
jobLocationData.job = getJobData(jobId).databaseId;
|
jobLocationData.jobId = getJobData(jobId).databaseId;
|
||||||
jobLocationData.interior = interior;
|
jobLocationData.interior = interior;
|
||||||
jobLocationData.dimension = dimension;
|
jobLocationData.dimension = dimension;
|
||||||
jobLocationData.enabled = true;
|
jobLocationData.enabled = true;
|
||||||
jobLocationData.jobIndex = jobId;
|
jobLocationData.jobIndex = jobId;
|
||||||
|
jobLocationData.needsSaved = true;
|
||||||
|
|
||||||
getServerData().jobs[jobId].locations.push(jobLocationData);
|
getServerData().jobs[jobId].locations.push(jobLocationData);
|
||||||
let newSlot = getServerData().jobs[jobId].locations.length-1;
|
let newSlot = getServerData().jobs[jobId].locations.length-1;
|
||||||
@@ -1463,22 +1712,24 @@ function saveJobToDatabase(jobData) {
|
|||||||
let dbConnection = connectToDatabase();
|
let dbConnection = connectToDatabase();
|
||||||
if(dbConnection) {
|
if(dbConnection) {
|
||||||
let safeName = escapeDatabaseString(dbConnection, jobData.name);
|
let safeName = escapeDatabaseString(dbConnection, jobData.name);
|
||||||
|
let colour = rgbaArrayFromToColour(jobData.colour);
|
||||||
let data = [
|
let data = [
|
||||||
["job_name", safeName],
|
["job_name", safeName],
|
||||||
|
["job_server", jobData.serverId],
|
||||||
["job_enabled", boolToInt(jobData.enabled)],
|
["job_enabled", boolToInt(jobData.enabled)],
|
||||||
["job_pickup", jobData.pickupModel],
|
["job_pickup", jobData.pickupModel],
|
||||||
["job_blip", jobData.blipModel],
|
["job_blip", jobData.blipModel],
|
||||||
["job_type", jobData.type],
|
["job_type", jobData.type],
|
||||||
["job_colour_r", jobData.colourArray[0]],
|
["job_colour_r", colour[0]],
|
||||||
["job_colour_g", jobData.colourArray[1]],
|
["job_colour_g", colour[1]],
|
||||||
["job_colour_b", jobData.colourArray[2]],
|
["job_colour_b", colour[2]],
|
||||||
["job_walkietalkiefreq", jobData.walkieTalkieFrequency],
|
["job_walkietalkiefreq", jobData.walkieTalkieFrequency],
|
||||||
["job_wl", jobData.whiteListEnabled],
|
["job_wl", jobData.whiteListEnabled],
|
||||||
["job_bl", jobData.blackListEnabled],
|
["job_bl", jobData.blackListEnabled],
|
||||||
];
|
];
|
||||||
|
|
||||||
let dbQuery = null;
|
let dbQuery = null;
|
||||||
if(tempJobRouteData.databaseId == 0) {
|
if(jobData.databaseId == 0) {
|
||||||
let queryString = createDatabaseInsertQuery("job_main", data);
|
let queryString = createDatabaseInsertQuery("job_main", data);
|
||||||
dbQuery = queryDatabase(dbConnection, queryString);
|
dbQuery = queryDatabase(dbConnection, queryString);
|
||||||
jobData.databaseId = getDatabaseInsertId(dbConnection);
|
jobData.databaseId = getDatabaseInsertId(dbConnection);
|
||||||
@@ -1514,14 +1765,22 @@ function saveJobRouteToDatabase(jobRouteData) {
|
|||||||
let dbConnection = connectToDatabase();
|
let dbConnection = connectToDatabase();
|
||||||
if(dbConnection) {
|
if(dbConnection) {
|
||||||
let safeName = escapeDatabaseString(dbConnection, jobRouteData.name);
|
let safeName = escapeDatabaseString(dbConnection, jobRouteData.name);
|
||||||
|
let safeStartMessage = escapeDatabaseString(dbConnection, jobRouteData.startMessage);
|
||||||
|
let safeFinishMessage = escapeDatabaseString(dbConnection, jobRouteData.finishMessage);
|
||||||
|
let safeLocationArriveMessage = escapeDatabaseString(dbConnection, jobRouteData.locationArriveMessage);
|
||||||
|
let safeLocationNextMessage = escapeDatabaseString(dbConnection, jobRouteData.locationNextMessage);
|
||||||
|
|
||||||
let data = [
|
let data = [
|
||||||
["job_route_job", jobRouteData.jobId],
|
["job_route_job", jobRouteData.jobId],
|
||||||
|
["job_route_job_loc", jobRouteData.locationId],
|
||||||
["job_route_enabled", boolToInt(jobRouteData.enabled)],
|
["job_route_enabled", boolToInt(jobRouteData.enabled)],
|
||||||
["job_route_name", safeName],
|
["job_route_name", safeName],
|
||||||
["job_route_col1_r", jobRouteData.vehicleColour1],
|
["job_route_col1_r", jobRouteData.vehicleColour1],
|
||||||
["job_route_col2_r", jobRouteData.vehicleColour2],
|
["job_route_col2_r", jobRouteData.vehicleColour2],
|
||||||
["job_route_start_msg", jobRouteData.startMessage],
|
["job_route_start_msg", safeStartMessage],
|
||||||
["job_route_finish_msg", jobRouteData.finishMessage],
|
["job_route_finish_msg", safeFinishMessage],
|
||||||
|
["job_route_loc_arrive_msg", safeLocationArriveMessage],
|
||||||
|
["job_route_loc_next_msg", safeLocationNextMessage],
|
||||||
["job_route_pay", jobRouteData.pay],
|
["job_route_pay", jobRouteData.pay],
|
||||||
["job_route_detail", jobRouteData.detail],
|
["job_route_detail", jobRouteData.detail],
|
||||||
];
|
];
|
||||||
@@ -1612,7 +1871,7 @@ function saveJobLocationToDatabase(jobLocationData) {
|
|||||||
let dbConnection = connectToDatabase();
|
let dbConnection = connectToDatabase();
|
||||||
if(dbConnection) {
|
if(dbConnection) {
|
||||||
let data = [
|
let data = [
|
||||||
["job_loc_job", jobLocationData.job],
|
["job_loc_job", jobLocationData.jobId],
|
||||||
["job_loc_enabled", boolToInt(jobLocationData.enabled)],
|
["job_loc_enabled", boolToInt(jobLocationData.enabled)],
|
||||||
["job_loc_pos_x", jobLocationData.position.x],
|
["job_loc_pos_x", jobLocationData.position.x],
|
||||||
["job_loc_pos_y", jobLocationData.position.y],
|
["job_loc_pos_y", jobLocationData.position.y],
|
||||||
@@ -1622,7 +1881,7 @@ function saveJobLocationToDatabase(jobLocationData) {
|
|||||||
];
|
];
|
||||||
|
|
||||||
let dbQuery = null;
|
let dbQuery = null;
|
||||||
if(tempJobRouteData.databaseId == 0) {
|
if(jobLocationData.databaseId == 0) {
|
||||||
let queryString = createDatabaseInsertQuery("job_loc", data);
|
let queryString = createDatabaseInsertQuery("job_loc", data);
|
||||||
dbQuery = queryDatabase(dbConnection, queryString);
|
dbQuery = queryDatabase(dbConnection, queryString);
|
||||||
jobLocationData.databaseId = getDatabaseInsertId(dbConnection);
|
jobLocationData.databaseId = getDatabaseInsertId(dbConnection);
|
||||||
@@ -1948,13 +2207,7 @@ function playerArrivedAtJobRouteStop(client) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(doesPlayerHaveJobType(client, VRR_JOB_BUS)) {
|
playerArrivedAtJobRouteLocationStop(client);
|
||||||
playerArrivedAtBusStop(client);
|
|
||||||
} else if(doesPlayerHaveJobType(client, VRR_JOB_GARBAGE)) {
|
|
||||||
playerArrivedAtGarbageStop(client);
|
|
||||||
} else if(doesPlayerHaveJobType(client, VRR_JOB_POLICE)) {
|
|
||||||
playerArrivedAtPolicePatrolPoint(client);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
@@ -2033,6 +2286,7 @@ function deleteJobPickups(jobId) {
|
|||||||
|
|
||||||
function createJobRouteCommand(command, params, client) {
|
function createJobRouteCommand(command, params, client) {
|
||||||
let jobId = getPlayerJob(client);
|
let jobId = getPlayerJob(client);
|
||||||
|
let closestJobLocation = getClosestJobLocation(getPlayerPosition(client));
|
||||||
|
|
||||||
if(!getJobData(jobId)) {
|
if(!getJobData(jobId)) {
|
||||||
messagePlayerError(client, `You need to take the job that you want to make a route for.`);
|
messagePlayerError(client, `You need to take the job that you want to make a route for.`);
|
||||||
@@ -2040,16 +2294,124 @@ function createJobRouteCommand(command, params, client) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(!isPlayerWorking(client)) {
|
if(!isPlayerWorking(client)) {
|
||||||
messagePlayerError(client, `You need to be working! Use /startwork at a job site.`);
|
messagePlayerError(client, getLocaleString(client, "NeedToBeWorking", "{ALTCOLOUR}/startwork{MAINCOLOUR}"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//messagePlayerSuccess(client, `{MAINCOLOUR}You now have the {jobYellow}${jobData.name} {MAINCOLOUR}job`);
|
createJobRoute(params, closestJobLocation);
|
||||||
|
messageAdmins(`${getPlayerName(client)}{MAINCOLOUR} created route {ALTCOLOUR}${params}{MAINCOLOUR} for job {jobYellow}${getJobData(jobId).name}`);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|
||||||
|
function createJobRouteLocationCommand(command, params, client) {
|
||||||
|
let jobId = getPlayerJob(client);
|
||||||
|
|
||||||
|
if(!getJobData(jobId)) {
|
||||||
|
messagePlayerError(client, `You need to take the job that you want to make a route location for.`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!isPlayerWorking(client)) {
|
||||||
|
messagePlayerError(client, getLocaleString(client, "NeedToBeWorking", "{ALTCOLOUR}/startwork{MAINCOLOUR}"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!getPlayerData(client).jobRoute) {
|
||||||
|
messagePlayerError(client, getLocaleString(client, "NeedToBeOnJobRoute", "{ALTCOLOUR}/startroute{MAINCOLOUR}"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
let routeId = getPlayerData(client).jobRoute;
|
||||||
|
let jobRouteData = getServerData().jobs[jobId].routes[routeId];
|
||||||
|
let routeLocationName = getParam(params, " ", 1);
|
||||||
|
|
||||||
|
createJobRouteLocation(routeLocationName, getPlayerPosition(client), jobRouteData);
|
||||||
|
messageAdmins(`${getPlayerName(client)}{MAINCOLOUR} created location {ALTCOLOUR}${routeLocationName}{MAINCOLOUR} for route {ALTCOLOUR}${jobRouteData.name}{MAINCOLOUR} for job {jobYellow}${getJobData(jobId).name}`);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
|
|
||||||
|
function createJobRoute(routeName, closestJobLocation) {
|
||||||
|
let tempJobRouteData = new JobRouteData(false);
|
||||||
|
tempJobRouteData.name = routeName;
|
||||||
|
tempJobRouteData.jobId = closestJobLocation.jobId;
|
||||||
|
tempJobRouteData.locationId = closestJobLocation.databaseId;
|
||||||
|
tempJobRouteData.enabled = true;
|
||||||
|
tempJobRouteData.needsSaved = true;
|
||||||
|
|
||||||
|
getJobData(closestJobLocation.jobIndex).routes.push(tempJobRouteData);
|
||||||
|
setAllJobDataIndexes();
|
||||||
|
}
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
|
|
||||||
|
function createJobRouteLocation(routeLocationName, position, jobRouteData) {
|
||||||
|
let tempJobRouteData = new JobRouteData(false);
|
||||||
|
tempJobRouteLocationData.name = routeLocationName;
|
||||||
|
tempJobRouteLocationData.jobRoute = jobRouteData.databaseId;
|
||||||
|
tempJobRouteLocationData.enabled = true;
|
||||||
|
tempJobRouteLocationData.needsSaved = true;
|
||||||
|
tempJobRouteLocationData.position = position;
|
||||||
|
|
||||||
|
getJobData(jobRouteData.jobIndex).routes[jobRouteData.index].push(tempJobRouteLocationData);
|
||||||
|
setAllJobDataIndexes();
|
||||||
|
}
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
|
|
||||||
|
function deleteJobRouteLocationCommand(command, params, client) {
|
||||||
|
let closestJobRouteLocation = getClosestJobRouteLocation(getPlayerPosition(client));
|
||||||
|
|
||||||
|
messageAdmins(`{ALTCOLOUR}${getPlayerName(client)} {MAINCOLOUR}deleted route location {ALTCOLOUR}${closestJobRouteLocation.index} (DB ID ${closestJobRouteLocation.databaseId}) {MAINCOLOUR}for the {ALTCOLOUR}${closestJobRouteLocation.name}{jobYellow} route of the ${getJobData(closestJobLocation.jobIndex).name} {MAINCOLOUR}job`);
|
||||||
|
|
||||||
|
if(closestJobRouteLocation.databaseId > 0) {
|
||||||
|
quickDatabaseQuery(`DELETE FROM job_route_loc WHERE job_route_loc_id = ${closestJobRouteLocation.databaseId}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
let tempIndex = closestJobRouteLocation.index;
|
||||||
|
let tempJobRoute = closestJobRouteLocation.routeIndex;
|
||||||
|
|
||||||
|
getJobData(getJobIdFromDatabaseId(tempJob)).routes[tempJobRoute].locations.splice(tempIndex, 1);
|
||||||
|
setAllJobDataIndexes();
|
||||||
|
}
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
|
|
||||||
|
function deleteJobRouteCommand(command, params, client) {
|
||||||
|
let jobId = getPlayerJob(client);
|
||||||
|
let jobRoute = getPlayerData(client).jobRoute;
|
||||||
|
|
||||||
|
let jobRouteData = getServerData().jobs[jobId].routes[jobRoute];
|
||||||
|
|
||||||
|
let clients = getClients();
|
||||||
|
for(let i in clients) {
|
||||||
|
if(isPlayerWorking(clients[i])) {
|
||||||
|
if(isPlayerOnJobRoute(clients[i])) {
|
||||||
|
if(getPlayerJob(clients[i]) == jobId && getPlayerData(clients[i]).jobRoute == jobRoute) {
|
||||||
|
stopJobRoute(clients[i], true, false);
|
||||||
|
messagePlayerAlert(clients[i], getLocaleString(client, "CurrentJobRouteDeleted"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
messageAdmins(`{ALTCOLOUR}${getPlayerName(client)} {MAINCOLOUR}deleted route {ALTCOLOUR}${jobRouteData.name} (DB ID ${jobRouteData.databaseId}) {MAINCOLOUR}for the ${getJobData(jobId).name} {MAINCOLOUR}job`);
|
||||||
|
|
||||||
|
quickDatabaseQuery(`DELETE FROM job_route_loc WHERE job_route_loc_route = ${jobRouteData.databaseId}`);
|
||||||
|
quickDatabaseQuery(`DELETE FROM job_route WHERE job_route_id = ${jobRouteData.databaseId}`);
|
||||||
|
|
||||||
|
clearArray(getServerData().jobs[jobId].routes[jobRoute].locations);
|
||||||
|
getServerData().jobs[jobId].routes.splice(jobRoute, 1);
|
||||||
|
|
||||||
|
setAllJobDataIndexes();
|
||||||
|
collectAllGarbage();
|
||||||
|
}
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
|
|
||||||
function setAllJobIndexes() {
|
function setAllJobIndexes() {
|
||||||
for(let i in getServerData().jobs) {
|
for(let i in getServerData().jobs) {
|
||||||
getServerData().jobs[i].index = i;
|
getServerData().jobs[i].index = i;
|
||||||
@@ -2120,6 +2482,22 @@ function getClosestJobLocation(position) {
|
|||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|
||||||
|
function getClosestJobRouteLocation(position) {
|
||||||
|
let closestJobRouteLocation = false;
|
||||||
|
for(let i in getServerData().jobs) {
|
||||||
|
for(let j in getServerData().jobs[i].routes) {
|
||||||
|
for(let k in getServerData().jobs[i].routes[j].locations) {
|
||||||
|
if(!closestJobRouteLocation || getServerData().jobs[i].routes[j].locations[k].position.distance(position) < closestJobRouteLocation.position.distance(position)) {
|
||||||
|
closestJobRouteLocation = getServerData().jobs[i].routes[j].locations[k];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return closestJobRouteLocation;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
|
|
||||||
function getJobPointsInRange(position, distance) {
|
function getJobPointsInRange(position, distance) {
|
||||||
return getServerData().jobs[getServerGame()].filter(x => x.position.distance(position) <= distance);
|
return getServerData().jobs[getServerGame()].filter(x => x.position.distance(position) <= distance);
|
||||||
}
|
}
|
||||||
@@ -2127,7 +2505,36 @@ function getJobPointsInRange(position, distance) {
|
|||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|
||||||
function respawnJobVehicle(client) {
|
function respawnJobVehicle(client) {
|
||||||
respawnVehicle(getPlayerData(client).lastJobVehicle);
|
respawnVehicle(getPlayerJobVehicle(client));
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|
||||||
|
function getPlayerJobVehicle(client) {
|
||||||
|
return getPlayerData(client).lastJobVehicle;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
|
|
||||||
|
function getRandomJobRoute(closestJobLocation) {
|
||||||
|
let randomRoute = getRandom(0, closestJobLocation.routeCache.length-1);
|
||||||
|
return getJobData(closestJobLocation.jobIndex).routes[randomRoute].index;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
|
|
||||||
|
function getJobRouteData(jobId, routeId) {
|
||||||
|
return getServerData().jobs[jobId].routes[routeId];
|
||||||
|
}
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
|
|
||||||
|
function getClosestJobLocationForJob(position, jobId) {
|
||||||
|
let closestJobLocation = false;
|
||||||
|
for(let i in getServerData().jobs[jobId].locations) {
|
||||||
|
if(!closestJobLocation || getServerData().jobs[jobId].locations[i].position.distance(position) < closestJobLocation.position.distance(position)) {
|
||||||
|
closestJobLocation = getServerData().jobs[jobId].locations[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return closestJobLocation;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user