Change job weps to items
This commit is contained in:
@@ -90,7 +90,7 @@ function loadJobEquipmentsFromDatabase(jobDatabaseId) {
|
||||
if(dbQuery.numRows > 0) {
|
||||
while(dbAssoc = fetchQueryAssoc(dbQuery)) {
|
||||
let tempJobEquipmentData = new serverClasses.jobEquipmentData(dbAssoc);
|
||||
tempJobEquipmentData.weapons = loadJobEquipmentWeaponsFromDatabase(tempJobEquipmentData.databaseId);
|
||||
tempJobEquipmentData.items = loadJobEquipmentItemsFromDatabase(tempJobEquipmentData.databaseId);
|
||||
tempJobEquipments.push(tempJobEquipmentData);
|
||||
logToConsole(LOG_DEBUG, `[Asshat.Job]: Job equipment '${tempJobEquipmentData.name}' loaded from database successfully!`);
|
||||
}
|
||||
@@ -150,7 +150,7 @@ function loadJobUniformsFromDatabase(jobDatabaseId) {
|
||||
while(dbAssoc = fetchQueryAssoc(dbQuery)) {
|
||||
let tempJobUniformData = new serverClasses.jobUniformData(dbAssoc);
|
||||
tempJobUniforms.push(tempJobUniformData);
|
||||
logToConsole(LOG_DEBUG, `[Asshat.Job]: Job uniform '${tempJobUniformData.name}' loaded from database successfully!`);
|
||||
logToConsole(LOG_DEBUG, `[Asshat.Job]: Job uniform '${tempJobUniformData.databaseId}' loaded from database successfully!`);
|
||||
}
|
||||
}
|
||||
freeDatabaseQuery(dbQuery);
|
||||
@@ -164,22 +164,22 @@ function loadJobUniformsFromDatabase(jobDatabaseId) {
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
function loadJobEquipmentWeaponsFromDatabase(jobEquipmentDatabaseId) {
|
||||
logToConsole(LOG_DEBUG, `[Asshat.Job]: Loading job equipment weapons for job equipment ${jobEquipmentDatabaseId} from database ...`);
|
||||
function loadJobEquipmentItemsFromDatabase(jobEquipmentDatabaseId) {
|
||||
logToConsole(LOG_DEBUG, `[Asshat.Job]: Loading job equipment items for job equipment ${jobEquipmentDatabaseId} from database ...`);
|
||||
|
||||
let tempJobEquipmentWeapons = [];
|
||||
let tempJobEquipmentItems = [];
|
||||
let dbConnection = connectToDatabase();
|
||||
let dbQuery = null;
|
||||
let dbAssoc;
|
||||
|
||||
if(dbConnection) {
|
||||
dbQuery = queryDatabase(dbConnection, "SELECT * FROM `job_equip_wep` WHERE `job_equip_wep_enabled` = 1 AND `job_equip_wep_equip` = " + toString(jobEquipmentDatabaseId));
|
||||
dbQuery = queryDatabase(dbConnection, "SELECT * FROM `job_equip_item` WHERE `job_equip_item_enabled` = 1 AND `job_equip_item_equip` = " + toString(jobEquipmentDatabaseId));
|
||||
if(dbQuery) {
|
||||
if(dbQuery.numRows > 0) {
|
||||
while(dbAssoc = fetchQueryAssoc(dbQuery)) {
|
||||
let tempJobEquipmentWeaponsData = new serverClasses.jobEquipmentWeaponData(dbAssoc);
|
||||
tempJobEquipmentWeapons.push(tempJobEquipmentWeaponsData);
|
||||
logToConsole(LOG_DEBUG, `[Asshat.Job]: Job equipment weapon '${tempJobEquipmentWeaponsData.name}' loaded from database successfully!`);
|
||||
let tempJobEquipmentItemData = new serverClasses.jobEquipmentItemData(dbAssoc);
|
||||
tempJobEquipmentItems.push(tempJobEquipmentItemData);
|
||||
logToConsole(LOG_DEBUG, `[Asshat.Job]: Job equipment item '${tempJobEquipmentItemData.databaseId}' loaded from database successfully!`);
|
||||
}
|
||||
}
|
||||
freeDatabaseQuery(dbQuery);
|
||||
@@ -187,8 +187,8 @@ function loadJobEquipmentWeaponsFromDatabase(jobEquipmentDatabaseId) {
|
||||
disconnectFromDatabase(dbConnection);
|
||||
}
|
||||
|
||||
logToConsole(LOG_DEBUG, `[Asshat.Job]: ${tempJobEquipmentWeapons.length} job equipment weapons for equipment ${jobEquipmentDatabaseId} loaded from database successfully!`);
|
||||
return tempJobEquipmentWeapons;
|
||||
logToConsole(LOG_DEBUG, `[Asshat.Job]: ${tempJobEquipmentItems.length} job equipment items for equipment ${jobEquipmentDatabaseId} loaded from database successfully!`);
|
||||
return tempJobEquipmentItems;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -328,7 +328,7 @@ function takeJobCommand(command, params, client) {
|
||||
}
|
||||
|
||||
let closestJobLocation = getClosestJobLocation(getPlayerPosition(client));
|
||||
let jobData = getJobData(closestJobLocation.job);
|
||||
let jobData = getJobData(closestJobLocation.jobIndex);
|
||||
|
||||
if(closestJobLocation.position.distance(getPlayerPosition(client)) > getGlobalConfig().takeJobDistance) {
|
||||
messagePlayerError(client, "There are no job points close enough!");
|
||||
@@ -340,12 +340,12 @@ function takeJobCommand(command, params, client) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!canPlayerUseJob(client, closestJobLocation.job)) {
|
||||
if(!canPlayerUseJob(client, closestJobLocation.jobIndex)) {
|
||||
messagePlayerError(client, "You can't use this job!");
|
||||
return false;
|
||||
}
|
||||
|
||||
takeJob(client, closestJobLocation.job);
|
||||
takeJob(client, closestJobLocation.jobIndex);
|
||||
messagePlayerSuccess(client, "You now have the " + toString(jobData.name) + " job");
|
||||
return true;
|
||||
}
|
||||
@@ -358,7 +358,7 @@ function startWorkingCommand(command, params, client) {
|
||||
}
|
||||
|
||||
let closestJobLocation = getClosestJobLocation(getPlayerPosition(client));
|
||||
let jobData = getJobData(closestJobLocation.job);
|
||||
let jobData = getJobData(closestJobLocation.jobIndex);
|
||||
|
||||
if(closestJobLocation.position.distance(getPlayerPosition(client)) > getGlobalConfig().startWorkingDistance) {
|
||||
messagePlayerError(client, "There are no job points close enough!");
|
||||
@@ -371,7 +371,7 @@ function startWorkingCommand(command, params, client) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(getPlayerCurrentSubAccount(client).job != closestJobLocation.job) {
|
||||
if(getPlayerCurrentSubAccount(client).job != closestJobLocation.jobIndex) {
|
||||
messagePlayerError(client, "This is not your job!");
|
||||
messagePlayerInfo(client, `If you want this job, use /quitjob to quit your current job.`);
|
||||
return false;
|
||||
@@ -414,10 +414,13 @@ function startWorking(client) {
|
||||
return false;
|
||||
}
|
||||
|
||||
storePlayerItemsInJobLocker(client);
|
||||
messagePlayerInfo(client, "Your personal items have been stored in your locker while you work");
|
||||
|
||||
getPlayerCurrentSubAccount(client).isWorking = true;
|
||||
|
||||
let jobId = getPlayerCurrentSubAccount(client).job;
|
||||
switch(getJobType(jobId)) {
|
||||
switch(getJobIndexFromDatabaseId(jobId)) {
|
||||
case AG_JOB_POLICE:
|
||||
messagePlayerInfo(client, "Use /uniform and /equip to get your equipment.");
|
||||
break;
|
||||
@@ -486,10 +489,11 @@ function givePlayerJobEquipment(client, equipmentId) {
|
||||
}
|
||||
|
||||
let jobId = getPlayerJob(client);
|
||||
let equipments = getJobData(jobId).equipment;
|
||||
|
||||
for(let i in equipments[equipmentId].weapons) {
|
||||
triggerNetworkEvent("ag.giveWeapon", client, equipments[equipmentId].weapons[i].weaponId, equipments[equipmentId].weapons[i].ammo, false);
|
||||
for(let i in equipments[equipmentId].items) {
|
||||
let itemId = createItem(getJobData(jobId).equipment[equipmentId].items[i].itemType, getJobData(jobId).equipment[equipmentId].items[i].value, AG_ITEM_OWNER_PLAYER, getPlayerCurrentSubAccount(client).databaseId);
|
||||
let freeSlot = getPlayerFirstEmptyHotBarSlot(client);
|
||||
getPlayerData(client).jobEquipmentCache.push(itemId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -506,7 +510,7 @@ function stopWorking(client) {
|
||||
|
||||
getPlayerCurrentSubAccount(client).isWorking = false;
|
||||
|
||||
triggerNetworkEvent("ag.skin", client, getPlayerCurrentSubAccount(client).skin);
|
||||
setPlayerSkin(client, getPlayerCurrentSubAccount(client).skin);
|
||||
|
||||
let jobVehicle = getPlayerCurrentSubAccount(client).lastJobVehicle;
|
||||
if(jobVehicle) {
|
||||
@@ -520,14 +524,14 @@ function stopWorking(client) {
|
||||
jobVehicle.position = vehicleData.spawnPosition;
|
||||
jobVehicle.heading = vehicleData.spawnRotation;
|
||||
jobVehicle.locked = true;
|
||||
setEntityData(jobVehicle, "ag.lights", false, true);
|
||||
setEntityData(jobVehicle, "ag.engine", false, true);
|
||||
setEntityData(jobVehicle, "ag.siren", false, true);
|
||||
jobVehicle.engine = false;
|
||||
jobVehicle.lights = false;
|
||||
jobVehicle.siren = true;
|
||||
|
||||
getPlayerCurrentSubAccount(client).lastJobVehicle = false;
|
||||
}
|
||||
|
||||
triggerNetworkEvent("ag.clearWeapons", client);
|
||||
restorePlayerJobLockerItems(client);
|
||||
|
||||
let jobId = getPlayerCurrentSubAccount(client).job;
|
||||
switch(getJobType(jobId)) {
|
||||
@@ -587,7 +591,6 @@ function jobUniformCommand(command, params, client) {
|
||||
|
||||
if(areParamsEmpty(params)) {
|
||||
messagePlayerSyntax(client, getCommandSyntaxText(command));
|
||||
messagePlayerNormal(client, `0: No uniform (sets you back to your main skin)`);
|
||||
|
||||
for(let i in uniforms) {
|
||||
messagePlayerNormal(client, `${toInteger(i)+1}: ${uniforms[i].name} (Requires rank ${uniforms[i].requiredRank})`);
|
||||
@@ -596,19 +599,16 @@ function jobUniformCommand(command, params, client) {
|
||||
}
|
||||
|
||||
let uniformId = toInteger(params) || 1;
|
||||
if(uniformId == 0) {
|
||||
triggerNetworkEvent("ag.pedSkin", client, getPlayerCurrentSubAccount(client).skin);
|
||||
messagePlayerSuccess(client, "You changed your uniform to (none)");
|
||||
return true;
|
||||
}
|
||||
|
||||
if(uniformId < 1 || uniformId > uniforms.length) {
|
||||
messagePlayerError(client, "That uniform ID is invalid!");
|
||||
return false;
|
||||
}
|
||||
|
||||
messagePlayerSuccess(client, `You put on the [#AAAAAA]${uniforms[uniformId-1].name} [#FFFFFF]uniform`);
|
||||
setPlayerSkin(client, uniforms[uniformId-1].skin);
|
||||
messagePlayerSuccess(client, `You have been given a [#AAAAAA]${uniforms[uniformId-1].name} [#FFFFFF]uniform and you can put it on from your inventory.`);
|
||||
|
||||
let itemId = createItem(getItemTypeFromParams("Uniform"), getJobData(jobId).uniforms[uniformId].skin, AG_ITEM_OWNER_PLAYER, getPlayerCurrentSubAccount(client).databaseId);
|
||||
let freeSlot = getPlayerFirstEmptyHotBarSlot(client);
|
||||
getPlayerData(client).jobEquipmentCache.push(itemId);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -757,7 +757,7 @@ function createJobLocationCommand(command, params, client) {
|
||||
return false;
|
||||
}
|
||||
|
||||
createJobLocation(jobId, getPlayerPosition(client), getPlayerInterior(client), getPlayerVirtualWorld(client));
|
||||
createJobLocation(jobId, getPlayerPosition(client), getPlayerInterior(client), getPlayerDimension(client));
|
||||
messageAdmins(`[#AAAAAA]${client.name} [#FFFFFF]created a location for the [#AAAAAA]${getJobData(jobId).name} [#FFFFFF]job`);
|
||||
return true;
|
||||
}
|
||||
@@ -1249,10 +1249,10 @@ function setAllJobDataIndexes() {
|
||||
for(let m in getServerData().jobs[i].equipment) {
|
||||
getServerData().jobs[i].equipment[m].index = m;
|
||||
getServerData().jobs[i].equipment[m].jobIndex = i;
|
||||
for(let n in getServerData().jobs[i].equipment[m].weapons) {
|
||||
getServerData().jobs[i].equipment[m].weapons[n].index = n;
|
||||
getServerData().jobs[i].equipment[m].weapons[n].jobIndex = i;
|
||||
getServerData().jobs[i].equipment[m].weapons[n].equipmentIndex = m;
|
||||
for(let n in getServerData().jobs[i].equipment[m].items) {
|
||||
getServerData().jobs[i].equipment[m].items[n].index = n;
|
||||
getServerData().jobs[i].equipment[m].items[n].jobIndex = i;
|
||||
getServerData().jobs[i].equipment[m].items[n].equipmentIndex = m;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1375,28 +1375,28 @@ function saveJobEquipmentToDatabase(jobEquipmentData) {
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
function saveJobEquipmentWeaponToDatabase(jobEquipmentWeaponData) {
|
||||
if(jobEquipmentWeaponData == null) {
|
||||
function saveJobEquipmentItemToDatabase(jobEquipmentItemData) {
|
||||
if(jobEquipmentItemData == null) {
|
||||
// Invalid job equipment weapon data
|
||||
return false;
|
||||
}
|
||||
|
||||
logToConsole(LOG_DEBUG, `[Asshat.Job]: Saving job equipment weapon ${jobEquipmentWeaponData.databaseId} to database ...`);
|
||||
logToConsole(LOG_DEBUG, `[Asshat.Job]: Saving job equipment weapon ${jobEquipmentItemData.databaseId} to database ...`);
|
||||
let dbConnection = connectToDatabase();
|
||||
if(dbConnection) {
|
||||
// If job equipment weapon hasn't been added to database, ID will be 0
|
||||
if(jobEquipmentWeaponData.databaseId == 0) {
|
||||
let dbQueryString = `INSERT INTO job_equip_wep (job_equip_wep_equip, job_equip_wep_enabled, job_equip_wep_wep, job_equip_wep_ammo) VALUES (${jobEquipmentWeaponData.equipmentId}, ${boolToInt(jobEquipmentWeaponData.enabled)}, ${jobEquipmentWeaponData.weaponId}, ${jobEquipmentWeaponData.ammo})`;
|
||||
// If job equipment item hasn't been added to database, ID will be 0
|
||||
if(jobEquipmentItemData.databaseId == 0) {
|
||||
let dbQueryString = `INSERT INTO job_equip_item (job_equip_item_equip, job_equip_item_enabled, job_equip_item_type, job_equip_item_value) VALUES (${jobEquipmentItemData.equipmentId}, ${boolToInt(jobEquipmentItemData.enabled)}, ${jobEquipmentItemData.itemType}, ${jobEquipmentItemData.value})`;
|
||||
queryDatabase(dbConnection, dbQueryString);
|
||||
jobEquipmentWeaponData.databaseId = getDatabaseInsertId(dbConnection);
|
||||
jobEquipmentItemData.databaseId = getDatabaseInsertId(dbConnection);
|
||||
} else {
|
||||
let dbQueryString = `UPDATE job_equip_wep SET job_equip_wep_equip=${jobEquipmentWeaponData.equipmentId}, job_equip_wep_enabled=${boolToInt(jobEquipmentWeaponData.enabled)}, job_equip_wep_wep=${jobEquipmentWeaponData.weaponId}, job_equip_wep_ammo=${jobEquipmentWeaponData.ammo} WHERE job_equip_wep_id=${jobEquipmentWeaponData.databaseId}`;
|
||||
let dbQueryString = `UPDATE job_equip_item SET job_equip_item_equip=${jobEquipmentItemData.equipmentId}, job_equip_item_enabled=${boolToInt(jobEquipmentItemData.enabled)}, job_equip_item_type=${jobEquipmentItemData.itemType}, job_equip_item_value=${jobEquipmentItemData.value} WHERE job_equip_item_id=${jobEquipmentItemData.databaseId}`;
|
||||
queryDatabase(dbConnection, dbQueryString);
|
||||
}
|
||||
disconnectFromDatabase(dbConnection);
|
||||
return true;
|
||||
}
|
||||
logToConsole(LOG_DEBUG, `[Asshat.Job]: Saved job equipment weapon ${jobEquipmentWeaponData.databaseId} to database`);
|
||||
logToConsole(LOG_DEBUG, `[Asshat.Job]: Saved job equipment weapon ${jobEquipmentItemData.databaseId} to database`);
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -1447,8 +1447,8 @@ function saveAllJobsToDatabase() {
|
||||
for(let m in getServerData().jobs[i].equipment) {
|
||||
saveJobEquipmentToDatabase(getServerData().jobs[i].equipment[m]);
|
||||
|
||||
for(let n in getServerData().jobs[i].equipment[m].weapons) {
|
||||
saveJobEquipmentWeaponToDatabase(getServerData().jobs[i].equipment[m].weapons[n]);
|
||||
for(let n in getServerData().jobs[i].equipment[m].items) {
|
||||
saveJobEquipmentItemToDatabase(getServerData().jobs[i].equipment[m].items[n]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1523,4 +1523,25 @@ function getPlayerJob(client) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
function canPlayerUseJobs(client) {
|
||||
if(hasBitFlag(getPlayerData(client).accountData.flags.moderation, getServerBitFlags().moderationFlags.jobBanned)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
function getJobIndexFromDatabaseId(databaseId) {
|
||||
for(let i in getServerData().jobs) {
|
||||
if(getServerData().jobs[i].databaseId == databaseId) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
Reference in New Issue
Block a user