From e965e15ad25437537f2499d803687b218f2a9f1a Mon Sep 17 00:00:00 2001 From: Vortrex <3858226+VortrexFTW@users.noreply.github.com> Date: Tue, 14 Jun 2022 09:16:02 -0500 Subject: [PATCH 01/16] Use more locale strings --- scripts/server/event.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/scripts/server/event.js b/scripts/server/event.js index ffdf3e9d..d3a112f4 100644 --- a/scripts/server/event.js +++ b/scripts/server/event.js @@ -172,12 +172,12 @@ function onPedEnteringVehicle(event, ped, vehicle, seat) { if (getVehicleData(vehicle).locked) { if (doesPlayerHaveVehicleKeys(client, vehicle)) { if (!doesPlayerHaveKeyBindsDisabled(client) && doesPlayerHaveKeyBindForCommand(client, "lock")) { - messagePlayerTip(client, `🔒 This ${getVehicleName(vehicle)} is locked. Press {ALTCOLOUR}${toUpperCase(getKeyNameFromId(getPlayerKeyBindForCommand(client, "lock").key))} {MAINCOLOUR}to unlock it.`); + messagePlayerTip(client, getLocaleString(client, "VehicleLockedCommandTip", `{vehiclePurple}${getVehicleName(vehicle)}{MAINCOLOUR}`, `{ALTCOLOUR}${toUpperCase(getKeyNameFromId(getPlayerKeyBindForCommand(client, "lock").key))}{MAINCOLOUR}`)); } else { - messagePlayerNormal(client, `🔒 This ${getVehicleName(vehicle)} is locked. Use /lock to unlock it`); + messagePlayerTip(client, getLocaleString(client, "VehicleLockedCommandTip", `{vehiclePurple}${getVehicleName(vehicle)}{MAINCOLOUR}`, `{ALTCOLOUR}/lock{MAINCOLOUR}`)); } } else { - messagePlayerNormal(client, `🔒 This ${getVehicleName(vehicle)} is locked and you don't have the keys to unlock it`); + messagePlayerNormal(client, messagePlayerTip(client, getLocaleString(client, "VehicleLockedCantUnlock", `{vehiclePurple}${getVehicleName(vehicle)}{MAINCOLOUR}`))); } //getPlayerData(client).enteringVehicle = null; @@ -287,38 +287,38 @@ async function onPlayerEnteredVehicle(client, clientVehicle, seat) { messagePlayerAlert(client, getLocaleString(client, "VehicleForRent", getVehicleName(vehicle), `{ALTCOLOUR}$${makeLargeNumberReadable(getVehicleData(vehicle).rentPrice)}{MAINCOLOUR}`, `{ALTCOLOUR}/vehrent{MAINCOLOUR}`)); resetVehiclePosition(vehicle); } else { - messagePlayerAlert(client, `You are renting this ${getVehicleName(vehicle)} for {ALTCOLOUR}$${makeLargeNumberReadable(getVehicleData(vehicle).rentPrice)} per minute. {MAINCOLOUR}Use {ALTCOLOUR}/stoprent {MAINCOLOUR}if you want to stop renting it.`); + messagePlayerAlert(client, getLocaleString(client, "CurrentlyRentingThisVehicle", `{vehiclePurple}${getVehicleName(vehicle)}{MAINCOLOUR}`, `{ALTCOLOUR}$${makeLargeNumberReadable(getVehicleData(vehicle).rentPrice)}`, `{ALTCOLOUR}/stoprent{MAINCOLOUR}`)); } } else { let ownerName = "Nobody"; - let ownerType = "None"; + let ownerType = getLocaleString(client, "NotOwned"); ownerType = toLowerCase(getVehicleOwnerTypeText(getVehicleData(vehicle).ownerType)); switch (getVehicleData(vehicle).ownerType) { case VRR_VEHOWNER_CLAN: ownerName = getClanData(getClanIdFromDatabaseId(getVehicleData(vehicle).ownerId)).name; - ownerType = "clan"; + ownerType = getLocaleString(client, "Clan"); break; case VRR_VEHOWNER_JOB: ownerName = getJobData(getJobIdFromDatabaseId(getVehicleData(vehicle).ownerId)).name; - ownerType = "job"; + ownerType = getLocaleString(client, "Job"); break; case VRR_VEHOWNER_PLAYER: let subAccountData = loadSubAccountFromId(getVehicleData(vehicle).ownerId); ownerName = `${subAccountData.firstName} ${subAccountData.lastName}`; - ownerType = "player"; + ownerType = getLocaleString(client, "Player"); break; case VRR_VEHOWNER_BIZ: ownerName = getBusinessData(getVehicleData(vehicle).ownerId).name; - ownerType = "business"; + ownerType = getLocaleString(client, "Business"); break; default: break; } - messagePlayerAlert(client, `This ${getVehicleName(vehicle)} belongs to {ALTCOLOUR}${ownerName} (${ownerType})`); + messagePlayerAlert(client, getLocaleString(client, "VehicleBelongsTo", `{vehiclePurple}${getVehicleName(vehicle)}{MAINCOLOUR}`, `{ALTCOLOUR}${ownerName}{MAINCOLOUR}`, `{ALTCOLOUR}${ownerType}{MAINCOLOUR}`)); } if (!getVehicleData(vehicle).engine) { From d6f767e3214175ec2e926e93aef197b8ea32da15 Mon Sep 17 00:00:00 2001 From: Vortrex <3858226+VortrexFTW@users.noreply.github.com> Date: Tue, 14 Jun 2022 17:32:15 -0500 Subject: [PATCH 02/16] Cleanup --- scripts/client/label.js | 118 ++++++++++++++++++++-------------------- 1 file changed, 59 insertions(+), 59 deletions(-) diff --git a/scripts/client/label.js b/scripts/client/label.js index 10a0c211..107e07fe 100644 --- a/scripts/client/label.js +++ b/scripts/client/label.js @@ -66,25 +66,25 @@ function initLabelJobHelpFont() { // =========================================================================== function renderPropertyEntranceLabel(name, position, locked, isBusiness, price, rentPrice, labelInfoType) { - if(localPlayer == null) { + if (localPlayer == null) { return false; } - if(propertyLabelNameFont == null) { + if (propertyLabelNameFont == null) { return false; } - if(propertyLabelLockedFont == null) { + if (propertyLabelLockedFont == null) { return false; } - if(getGame() == VRR_GAME_GTA_IV) { - if(!natives.doesViewportExist(natives.getGameViewportId())) { + if (getGame() == VRR_GAME_GTA_IV) { + if (!natives.doesViewportExist(natives.getGameViewportId())) { logToConsole(LOG_INFO, "[VRR.Label]: Game viewport does not exist!"); return false; } - if(!natives.isViewportActive(natives.getGameViewportId())) { + if (!natives.isViewportActive(natives.getGameViewportId())) { logToConsole(LOG_INFO, "[VRR.Label]: Game viewport is not active!"); return false; } @@ -93,45 +93,45 @@ function renderPropertyEntranceLabel(name, position, locked, isBusiness, price, let tempPosition = position; tempPosition.z = tempPosition.z + propertyLabelHeight; let screenPosition = new Vec3(0.0, 0.0, 0.0); - if(getGame() == VRR_GAME_GTA_IV) { + if (getGame() == VRR_GAME_GTA_IV) { screenPosition = natives.getViewportPositionOfCoord(tempPosition, natives.getGameViewportId()); } else { screenPosition = getScreenFromWorldPosition(tempPosition); } - if(screenPosition.x < 0 || screenPosition.x > game.width) { + if (screenPosition.x < 0 || screenPosition.x > game.width) { return false; } let text = ""; - if(price > "0") { + if (price > "0") { text = getLocaleString("PropertyForSaleLabel", price); let size = propertyLabelLockedFont.measure(text, game.width, 0.0, 0.0, propertyLabelLockedFont.size, true, true); - propertyLabelLockedFont.render(text, [screenPosition.x-size[0]/2, screenPosition.y-size[1]/2], game.width, 0.0, 0.0, propertyLabelLockedFont.size, toColour(200, 200, 200, 255), false, true, false, true); + propertyLabelLockedFont.render(text, [screenPosition.x - size[0] / 2, screenPosition.y - size[1] / 2], game.width, 0.0, 0.0, propertyLabelLockedFont.size, toColour(200, 200, 200, 255), false, true, false, true); screenPosition.y -= propertyLabelPriceOffset; } text = ""; - if(rentPrice != "0") { + if (rentPrice != "0") { text = getLocaleString("PropertyForRentLabel", rentPrice); let size = propertyLabelLockedFont.measure(text, game.width, 0.0, 0.0, propertyLabelLockedFont.size, true, true); - propertyLabelLockedFont.render(text, [screenPosition.x-size[0]/2, screenPosition.y-size[1]/2], game.width, 0.0, 0.0, propertyLabelLockedFont.size, toColour(200, 200, 200, 255), false, true, false, true); + propertyLabelLockedFont.render(text, [screenPosition.x - size[0] / 2, screenPosition.y - size[1] / 2], game.width, 0.0, 0.0, propertyLabelLockedFont.size, toColour(200, 200, 200, 255), false, true, false, true); screenPosition.y -= propertyLabelPriceOffset; } - if(isBusiness) { + if (isBusiness) { text = (locked) ? toUpperCase(getLocaleString("Closed")) : toUpperCase(getLocaleString("Open")); } else { text = (locked) ? toUpperCase(getLocaleString("Locked")) : toUpperCase(getLocaleString("Unlocked")); } - if(!locked && labelInfoType != VRR_PROPLABEL_INFO_NONE) { + if (!locked && labelInfoType != VRR_PROPLABEL_INFO_NONE) { let infoText = ""; - switch(labelInfoType) { + switch (labelInfoType) { case VRR_PROPLABEL_INFO_ENTER: { - if(enterPropertyKey) { + if (enterPropertyKey) { infoText = getLocaleString("PropertyEnterKeyPressLabel", toUpperCase(getKeyNameFromId(enterPropertyKey))); } else { infoText = getLocaleString("PropertyEnterCommandLabel", "/enter"); @@ -165,7 +165,7 @@ function renderPropertyEntranceLabel(name, position, locked, isBusiness, price, } default: { - if(enterPropertyKey) { + if (enterPropertyKey) { infoText = getLocaleString("PropertyEnterKeyPressLabel", toUpperCase(getKeyNameFromId(enterPropertyKey))); } else { infoText = getLocaleString("PropertyEnterCommandLabel", "/enter"); @@ -173,45 +173,45 @@ function renderPropertyEntranceLabel(name, position, locked, isBusiness, price, break; } } - if(getDistance(localPlayer.position, position) <= renderLabelDistance-2) { + if (getDistance(localPlayer.position, position) <= renderLabelDistance - 2) { let size = propertyLabelLockedFont.measure(infoText, game.width, 0.0, 0.0, propertyLabelLockedFont.size, true, true); - propertyLabelLockedFont.render(infoText, [screenPosition.x-size[0]/2, screenPosition.y-size[1]/2], game.width, 0.0, 0.0, propertyLabelLockedFont.size, toColour(234, 198, 126, 255), false, true, false, true); + propertyLabelLockedFont.render(infoText, [screenPosition.x - size[0] / 2, screenPosition.y - size[1] / 2], game.width, 0.0, 0.0, propertyLabelLockedFont.size, toColour(234, 198, 126, 255), false, true, false, true); screenPosition.y -= propertyLabelLockedOffset; } } let size = propertyLabelLockedFont.measure(text, game.width, 0.0, 0.0, propertyLabelLockedFont.size, true, true); - propertyLabelLockedFont.render(text, [screenPosition.x-size[0]/2, screenPosition.y-size[1]/2], game.width, 0.0, 0.0, propertyLabelLockedFont.size, (locked) ? lockedColour : unlockedColour, false, true, false, true); + propertyLabelLockedFont.render(text, [screenPosition.x - size[0] / 2, screenPosition.y - size[1] / 2], game.width, 0.0, 0.0, propertyLabelLockedFont.size, (locked) ? lockedColour : unlockedColour, false, true, false, true); screenPosition.y -= propertyLabelNameOffset; text = name || " "; size = propertyLabelNameFont.measure(text, game.width, 0.0, 0.0, propertyLabelNameFont.size, true, true); - propertyLabelNameFont.render(text, [screenPosition.x-size[0]/2, screenPosition.y-size[1]/2], game.width, 0.0, 0.0, propertyLabelNameFont.size, (isBusiness) ? toColour(0, 153, 255, 255) : toColour(17, 204, 17, 255), false, true, false, true); + propertyLabelNameFont.render(text, [screenPosition.x - size[0] / 2, screenPosition.y - size[1] / 2], game.width, 0.0, 0.0, propertyLabelNameFont.size, (isBusiness) ? toColour(0, 153, 255, 255) : toColour(17, 204, 17, 255), false, true, false, true); } // ------------------------------------------------------------------------- function renderPropertyExitLabel(position) { - if(localPlayer == null) { + if (localPlayer == null) { return false; } - if(propertyLabelNameFont == null) { + if (propertyLabelNameFont == null) { return false; } - if(propertyLabelLockedFont == null) { + if (propertyLabelLockedFont == null) { return false; } - if(getGame() == VRR_GAME_GTA_IV) { - if(!natives.doesViewportExist(natives.getGameViewportId())) { + if (getGame() == VRR_GAME_GTA_IV) { + if (!natives.doesViewportExist(natives.getGameViewportId())) { logToConsole(LOG_INFO, "[VRR.Label]: Game viewport does not exist!"); return false; } - if(!natives.isViewportActive(natives.getGameViewportId())) { + if (!natives.isViewportActive(natives.getGameViewportId())) { logToConsole(LOG_INFO, "[VRR.Label]: Game viewport is not active!"); return false; } @@ -220,43 +220,43 @@ function renderPropertyExitLabel(position) { let tempPosition = position; tempPosition.z = tempPosition.z + propertyLabelHeight; let screenPosition = new Vec3(0.0, 0.0, 0.0); - if(getGame() == VRR_GAME_GTA_IV) { + if (getGame() == VRR_GAME_GTA_IV) { screenPosition = natives.getViewportPositionOfCoord(tempPosition, natives.getGameViewportId()); } else { screenPosition = getScreenFromWorldPosition(tempPosition); } - if(screenPosition.x < 0 || screenPosition.x > game.width) { + if (screenPosition.x < 0 || screenPosition.x > game.width) { return false; } let text = "EXIT"; let size = propertyLabelNameFont.measure(text, game.width, 0.0, 0.0, propertyLabelNameFont.size, true, true); - propertyLabelNameFont.render(text, [screenPosition.x-size[0]/2, screenPosition.y-size[1]/2], game.width, 0.0, 0.0, propertyLabelNameFont.size, COLOUR_WHITE, false, true, false, true); + propertyLabelNameFont.render(text, [screenPosition.x - size[0] / 2, screenPosition.y - size[1] / 2], game.width, 0.0, 0.0, propertyLabelNameFont.size, COLOUR_WHITE, false, true, false, true); } // ------------------------------------------------------------------------- function renderJobLabel(name, position, jobType) { - if(localPlayer == null) { + if (localPlayer == null) { return false; } - if(jobNameLabelFont == null) { + if (jobNameLabelFont == null) { return false; } - if(jobHelpLabelFont == null) { + if (jobHelpLabelFont == null) { return false; } - if(getGame() == VRR_GAME_GTA_IV) { - if(!natives.doesViewportExist(natives.getGameViewportId())) { + if (getGame() == VRR_GAME_GTA_IV) { + if (!natives.doesViewportExist(natives.getGameViewportId())) { logToConsole(LOG_INFO, "[VRR.Label]: Game viewport does not exist!"); return false; } - if(!natives.isViewportActive(natives.getGameViewportId())) { + if (!natives.isViewportActive(natives.getGameViewportId())) { logToConsole(LOG_INFO, "[VRR.Label]: Game viewport is not active!"); return false; } @@ -265,25 +265,25 @@ function renderJobLabel(name, position, jobType) { let tempPosition = position; tempPosition.z = tempPosition.z + propertyLabelHeight; let screenPosition = new Vec3(0.0, 0.0, 0.0); - if(getGame() == VRR_GAME_GTA_IV) { + if (getGame() == VRR_GAME_GTA_IV) { screenPosition = natives.getViewportPositionOfCoord(tempPosition, natives.getGameViewportId()); } else { screenPosition = getScreenFromWorldPosition(tempPosition); } - if(screenPosition.x < 0 || screenPosition.x > game.width) { + if (screenPosition.x < 0 || screenPosition.x > game.width) { return false; } let text = ""; - if(jobType == localPlayerJobType) { - if(localPlayerWorking) { + if (jobType == localPlayerJobType) { + if (localPlayerWorking) { text = getLocaleString("JobEquipAndUniformLabel", "/equip", "/uniform", "/stopwork"); } else { text = getLocaleString("StartWorkLabel", "/startwork"); } } else { - if(localPlayerJobType == 0) { + if (localPlayerJobType == 0) { text = getLocaleString("TakeJobLabel", "/takejob"); } else { text = getLocaleString("NotYourJobLabel", "/quitjob"); @@ -291,37 +291,37 @@ function renderJobLabel(name, position, jobType) { } let size = jobHelpLabelFont.measure(text, game.width, 0.0, 0.0, jobHelpLabelFont.size, true, true); - jobHelpLabelFont.render(text, [screenPosition.x-size[0]/2, screenPosition.y-size[1]/2], game.width, 0.0, 0.0, jobHelpLabelFont.size, COLOUR_YELLOW, false, true, false, true); + jobHelpLabelFont.render(text, [screenPosition.x - size[0] / 2, screenPosition.y - size[1] / 2], game.width, 0.0, 0.0, jobHelpLabelFont.size, COLOUR_YELLOW, false, true, false, true); screenPosition.y -= 18; text = getLocaleString("JobLabel", name); size = jobNameLabelFont.measure(text, game.width, 0.0, 0.0, jobNameLabelFont.size, true, true); - jobNameLabelFont.render(text, [screenPosition.x-size[0]/2, screenPosition.y-size[1]/2], game.width, 0.0, 0.0, jobNameLabelFont.size, COLOUR_WHITE, false, true, false, true); + jobNameLabelFont.render(text, [screenPosition.x - size[0] / 2, screenPosition.y - size[1] / 2], game.width, 0.0, 0.0, jobNameLabelFont.size, COLOUR_WHITE, false, true, false, true); } // ------------------------------------------------------------------------- function processLabelRendering() { - if(renderLabels) { - if(!areServerElementsSupported()) { - if(localPlayer != null) { + if (renderLabels) { + if (!areServerElementsSupported()) { + if (localPlayer != null) { getServerData().businesses.forEach((business) => { - if(getDistance(localPlayer.position, business.entrancePosition) <= 75.0) { + if (getDistance(localPlayer.position, business.entrancePosition) <= 75.0) { natives.drawColouredCylinder(getPosBelowPos(business.entrancePosition, 1.0), 0.0, 0.0, 0, 153, 255, 255); //renderPropertyEntranceLabel(business.name, business.entrancePosition, business.locked, true, makeLargeNumberReadable(business.price), makeLargeNumberReadable(business.rentPrice), business.labelInfoType); } }); getServerData().houses.forEach((house) => { - if(getDistance(localPlayer.position, house.entrancePosition) <= 75.0) { + if (getDistance(localPlayer.position, house.entrancePosition) <= 75.0) { natives.drawColouredCylinder(getPosBelowPos(house.entrancePosition, 1.0), 0.0, 0.0, 0, 200, 0, 255); //renderPropertyEntranceLabel("House", house.entrancePosition, house.locked, true, makeLargeNumberReadable(house.price), makeLargeNumberReadable(house.rentPrice), 0); } }); getServerData().jobs.forEach((job) => { - if(getDistance(localPlayer.position, job.position) <= 75.0) { + if (getDistance(localPlayer.position, job.position) <= 75.0) { natives.drawColouredCylinder(getPosBelowPos(job.position, 1.0), 0.0, 0.0, 255, 255, 0, 255); //renderJobLabel(job.name, job.position, job.jobType); } @@ -329,29 +329,29 @@ function processLabelRendering() { } } - if(areWorldLabelsSupported()) { - if(localPlayer != null) { + if (areWorldLabelsSupported()) { + if (localPlayer != null) { let pickups = getElementsByType(ELEMENT_PICKUP); - for(let i in pickups) { - if(pickups[i].getData("vrr.label.type") != null) { - if(getDistance(localPlayer.position, pickups[i].position) <= renderLabelDistance) { - if(!pickups[i].isOnScreen) { + for (let i in pickups) { + if (pickups[i].getData("vrr.label.type") != null) { + if (getDistance(localPlayer.position, pickups[i].position) <= renderLabelDistance) { + if (!pickups[i].isOnScreen) { let price = "0"; let rentPrice = "0"; let labelInfoType = VRR_PROPLABEL_INFO_NONE; - if(pickups[i].getData("vrr.label.price") != null) { + if (pickups[i].getData("vrr.label.price") != null) { price = makeLargeNumberReadable(pickups[i].getData("vrr.label.price")); } - if(pickups[i].getData("vrr.label.rentprice") != null) { + if (pickups[i].getData("vrr.label.rentprice") != null) { rentPrice = makeLargeNumberReadable(pickups[i].getData("vrr.label.rentprice")); } - if(pickups[i].getData("vrr.label.help") != null) { + if (pickups[i].getData("vrr.label.help") != null) { labelInfoType = pickups[i].getData("vrr.label.help"); } - switch(pickups[i].getData("vrr.label.type")) { + switch (pickups[i].getData("vrr.label.type")) { case VRR_LABEL_BUSINESS: { renderPropertyEntranceLabel(pickups[i].getData("vrr.label.name"), pickups[i].position, pickups[i].getData("vrr.label.locked"), true, price, rentPrice, labelInfoType); break; From 8f02c5c3d8a98656c03acac7ad5ae9e42df62c34 Mon Sep 17 00:00:00 2001 From: Vortrex <3858226+VortrexFTW@users.noreply.github.com> Date: Tue, 14 Jun 2022 17:32:24 -0500 Subject: [PATCH 03/16] Add del local player ped util --- scripts/client/native/connected.js | 178 +++++++++++++++-------------- 1 file changed, 92 insertions(+), 86 deletions(-) diff --git a/scripts/client/native/connected.js b/scripts/client/native/connected.js index 1cea7b56..4c421488 100644 --- a/scripts/client/native/connected.js +++ b/scripts/client/native/connected.js @@ -37,7 +37,7 @@ function getPlayerPosition() { // =========================================================================== function setPlayerPosition(position) { - if(getGame() == VRR_GAME_GTA_IV) { + if (getGame() == VRR_GAME_GTA_IV) { natives.setCharCoordinates(localPlayer, position); } else { localPlayer.position = position; @@ -59,11 +59,11 @@ function getElementHeading(elementId) { // =========================================================================== function setElementPosition(elementId, position) { - if(getElementFromId(elementId) == null) { + if (getElementFromId(elementId) == null) { return false; } - if(!getElementFromId(elementId).isSyncer) { + if (!getElementFromId(elementId).isSyncer) { return false; } @@ -73,7 +73,7 @@ function setElementPosition(elementId, position) { // =========================================================================== function deleteGameElement(elementId, position) { - if(!getElementFromId(elementId).isOwner) { + if (!getElementFromId(elementId).isOwner) { return false; } @@ -110,8 +110,8 @@ function getElementId(element) { function getClientFromIndex(index) { let clients = getClients(); - for(let i in clients) { - if(clients[i].index == index) { + for (let i in clients) { + if (clients[i].index == index) { return clients[i]; } } @@ -170,8 +170,8 @@ function is2dPositionOnScreen(pos2d) { function getVehiclesInRange(position, range) { let vehicles = getElementsByType(ELEMENT_VEHICLE); let inRangeVehicles = []; - for(let i in vehicles) { - if(getDistance(position, vehicles[i].position) <= range) { + for (let i in vehicles) { + if (getDistance(position, vehicles[i].position) <= range) { inRangeVehicles.push(vehicles[i]); } } @@ -181,13 +181,13 @@ function getVehiclesInRange(position, range) { // =========================================================================== function createGameBlip(blipModel, position, name = "") { - if(getGame() == VRR_GAME_GTA_IV) { + if (getGame() == VRR_GAME_GTA_IV) { let blipId = natives.addBlipForCoord(position); - if(blipId) { + if (blipId) { natives.changeBlipSprite(blipId, blipModel); natives.setBlipMarkerLongDistance(blipId, false); natives.setBlipAsShortRange(blipId, true); - natives.changeBlipNameFromAscii(blipId, `${name.substr(0, 24)}${(name.length > 24) ? " ...": ""}`); + natives.changeBlipNameFromAscii(blipId, `${name.substr(0, 24)}${(name.length > 24) ? " ..." : ""}`); return blipId; } } @@ -198,7 +198,7 @@ function createGameBlip(blipModel, position, name = "") { // =========================================================================== function setEntityData(entity, dataName, dataValue, syncToClients = true) { - if(entity != null) { + if (entity != null) { return entity.setData(dataName, dataValue); } } @@ -224,64 +224,64 @@ function repairVehicle(syncId) { // =========================================================================== function syncVehicleProperties(vehicle) { - if(doesEntityDataExist(vehicle, "vrr.lights")) { + if (doesEntityDataExist(vehicle, "vrr.lights")) { let lightStatus = getEntityData(vehicle, "vrr.lights"); vehicle.lights = lightStatus; } - if(doesEntityDataExist(vehicle, "vrr.invincible")) { + if (doesEntityDataExist(vehicle, "vrr.invincible")) { let invincible = getEntityData(vehicle, "vrr.invincible"); element.setProofs(invincible, invincible, invincible, invincible, invincible); } - if(doesEntityDataExist(vehicle, "vrr.panelStatus")) { + if (doesEntityDataExist(vehicle, "vrr.panelStatus")) { let panelsStatus = getEntityData(vehicle, "vrr.panelStatus"); - for(let i in panelsStatus) { + for (let i in panelsStatus) { vehicle.setPanelStatus(i, panelsStatus[i]); } } - if(doesEntityDataExist(vehicle, "vrr.wheelStatus")) { + if (doesEntityDataExist(vehicle, "vrr.wheelStatus")) { let wheelsStatus = getEntityData(vehicle, "vrr.wheelStatus"); - for(let i in wheelsStatus) { + for (let i in wheelsStatus) { vehicle.setWheelStatus(i, wheelsStatus[i]); } } - if(doesEntityDataExist(vehicle, "vrr.lightStatus")) { + if (doesEntityDataExist(vehicle, "vrr.lightStatus")) { let lightStatus = getEntityData(vehicle, "vrr.lightStatus"); - for(let i in lightStatus) { + for (let i in lightStatus) { vehicle.setLightStatus(i, lightStatus[i]); } } - if(doesEntityDataExist(vehicle, "vrr.suspensionHeight")) { + if (doesEntityDataExist(vehicle, "vrr.suspensionHeight")) { let suspensionHeight = getEntityData(vehicle, "vrr.suspensionHeight"); vehicle.setSuspensionHeight(suspensionHeight); } - if(getGame() == VRR_GAME_GTA_SA) { + if (getGame() == VRR_GAME_GTA_SA) { let allUpgrades = getGameConfig().vehicleUpgrades[getGame()]; - for(let i in allUpgrades) { + for (let i in allUpgrades) { vehicle.removeUpgrade(i); } - if(doesEntityDataExist(vehicle, "vrr.upgrades")) { + if (doesEntityDataExist(vehicle, "vrr.upgrades")) { let upgrades = getEntityData(vehicle, "vrr.upgrades"); - for(let i in upgrades) { - if(upgrades[i] != 0) { + for (let i in upgrades) { + if (upgrades[i] != 0) { vehicle.addUpgrade(upgrades[i]); } } } } - if(getGame() == VRR_GAME_GTA_SA || getGame() == VRR_GAME_GTA_IV) { - if(doesEntityDataExist(vehicle, "vrr.livery")) { + if (getGame() == VRR_GAME_GTA_SA || getGame() == VRR_GAME_GTA_IV) { + if (doesEntityDataExist(vehicle, "vrr.livery")) { let livery = getEntityData(vehicle, "vrr.livery"); - if(getGame() == VRR_GAME_GTA_SA) { + if (getGame() == VRR_GAME_GTA_SA) { vehicle.setPaintJob(livery); - } else if(getGame() == VRR_GAME_GTA_IV) { + } else if (getGame() == VRR_GAME_GTA_IV) { vehicle.livery = livery; } } @@ -291,7 +291,7 @@ function syncVehicleProperties(vehicle) { // =========================================================================== function removeEntityData(entity, dataName) { - if(entity != null) { + if (entity != null) { return entity.removeData(dataName); } return null; @@ -300,7 +300,7 @@ function removeEntityData(entity, dataName) { // =========================================================================== function doesEntityDataExist(entity, dataName) { - if(entity != null) { + if (entity != null) { return (entity.getData(dataName) != null); } return null; @@ -309,8 +309,8 @@ function doesEntityDataExist(entity, dataName) { // =========================================================================== function syncCivilianProperties(civilian) { - if(getGame() == VRR_GAME_GTA_III) { - if(doesEntityDataExist(civilian, "vrr.scale")) { + if (getGame() == VRR_GAME_GTA_III) { + if (doesEntityDataExist(civilian, "vrr.scale")) { let scaleFactor = getEntityData(civilian, "vrr.scale"); let tempMatrix = civilian.matrix; tempMatrix.setScale(toVector3(scaleFactor.x, scaleFactor.y, scaleFactor.z)); @@ -321,78 +321,78 @@ function syncCivilianProperties(civilian) { } } - if(getGame() == VRR_GAME_GTA_SA) { - if(doesEntityDataExist(civilian, "vrr.fightStyle")) { + if (getGame() == VRR_GAME_GTA_SA) { + if (doesEntityDataExist(civilian, "vrr.fightStyle")) { let fightStyle = getEntityData(civilian, "vrr.fightStyle"); civilian.setFightStyle(fightStyle[0], fightStyle[1]); } } - if(getGame() == VRR_GAME_GTA_III) { - if(doesEntityDataExist(civilian, "vrr.walkStyle")) { + if (getGame() == VRR_GAME_GTA_III) { + if (doesEntityDataExist(civilian, "vrr.walkStyle")) { let walkStyle = getEntityData(civilian, "vrr.walkStyle"); civilian.walkStyle = walkStyle; } } - if(getGame() == VRR_GAME_GTA_IV) { - if(doesEntityDataExist(civilian, "vrr.bodyPropHair")) { + if (getGame() == VRR_GAME_GTA_IV) { + if (doesEntityDataExist(civilian, "vrr.bodyPropHair")) { let bodyPropHair = getEntityData(civilian, "vrr.bodyPropHair"); civilian.changeBodyProp(0, bodyPropHair[0], bodyPropHair[1]); } - if(doesEntityDataExist(civilian, "vrr.bodyPropHead")) { + if (doesEntityDataExist(civilian, "vrr.bodyPropHead")) { let bodyPropHead = getEntityData(civilian, "vrr.bodyPropHead"); civilian.changeBodyProp(1, bodyPropHead[0], bodyPropHead[1]); } - if(doesEntityDataExist(civilian, "vrr.bodyPropEyes")) { + if (doesEntityDataExist(civilian, "vrr.bodyPropEyes")) { let bodyPropEyes = getEntityData(civilian, "vrr.bodyPropEyes"); civilian.changeBodyProp(1, bodyPropEyes[0], bodyPropEyes[1]); } - if(doesEntityDataExist(civilian, "vrr.bodyPropLeftHand")) { + if (doesEntityDataExist(civilian, "vrr.bodyPropLeftHand")) { let bodyPropLeftHand = getEntityData(civilian, "vrr.bodyPropLeftHand"); civilian.changeBodyProp(1, bodyPropLeftHand[0], bodyPropLeftHand[1]); } - if(doesEntityDataExist(civilian, "vrr.bodyPropRightHand")) { + if (doesEntityDataExist(civilian, "vrr.bodyPropRightHand")) { let bodyPropRightHand = getEntityData(civilian, "vrr.bodyPropRightHand"); civilian.changeBodyProp(1, bodyPropRightHand[0], bodyPropRightHand[1]); } - if(doesEntityDataExist(civilian, "vrr.bodyPropLeftWrist")) { + if (doesEntityDataExist(civilian, "vrr.bodyPropLeftWrist")) { let bodyPropLeftWrist = getEntityData(civilian, "vrr.bodyPropLeftWrist"); civilian.changeBodyProp(1, bodyPropLeftWrist[0], bodyPropLeftWrist[1]); } - if(doesEntityDataExist(civilian, "vrr.bodyPropRightWrist")) { + if (doesEntityDataExist(civilian, "vrr.bodyPropRightWrist")) { let bodyPropRightWrist = getEntityData(civilian, "vrr.bodyPropRightWrist"); civilian.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]); } - if(doesEntityDataExist(civilian, "vrr.bodyPropRightWrist")) { + if (doesEntityDataExist(civilian, "vrr.bodyPropRightWrist")) { let bodyPropRightWrist = getEntityData(civilian, "vrr.bodyPropRightWrist"); civilian.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]); } - if(doesEntityDataExist(civilian, "vrr.bodyPropHip")) { + if (doesEntityDataExist(civilian, "vrr.bodyPropHip")) { let bodyPropHip = getEntityData(civilian, "vrr.bodyPropHip"); civilian.changeBodyProp(1, bodyPropHip[0], bodyPropHip[1]); } - if(doesEntityDataExist(civilian, "vrr.bodyPropLeftFoot")) { + if (doesEntityDataExist(civilian, "vrr.bodyPropLeftFoot")) { let bodyPropLeftFoot = getEntityData(civilian, "vrr.bodyPropLeftFoot"); civilian.changeBodyProp(1, bodyPropLeftFoot[0], bodyPropLeftFoot[1]); } - if(doesEntityDataExist(civilian, "vrr.bodyPropRightFoot")) { + if (doesEntityDataExist(civilian, "vrr.bodyPropRightFoot")) { let bodyPropRightFoot = getEntityData(civilian, "vrr.bodyPropRightFoot"); civilian.changeBodyProp(1, bodyPropRightFoot[0], bodyPropRightFoot[1]); } } - if(doesEntityDataExist(civilian, "vrr.anim")) { + if (doesEntityDataExist(civilian, "vrr.anim")) { let animData = getEntityData(vehicle, "vrr.anim"); civilian.addAnimation(animData[0], animData[1]); } @@ -407,8 +407,8 @@ function preventDefaultEventAction(event) { // =========================================================================== function syncPlayerProperties(player) { - if(getGame() == VRR_GAME_GTA_III) { - if(doesEntityDataExist(player, "vrr.scale")) { + if (getGame() == VRR_GAME_GTA_III) { + if (doesEntityDataExist(player, "vrr.scale")) { let scaleFactor = getEntityData(player, "vrr.scale"); let tempMatrix = player.matrix; tempMatrix.setScale(toVector3(scaleFactor.x, scaleFactor.y, scaleFactor.z)); @@ -419,8 +419,8 @@ function syncPlayerProperties(player) { } } - if(getGame() == VRR_GAME_GTA_SA) { - if(doesEntityDataExist(player, "vrr.fightStyle")) { + if (getGame() == VRR_GAME_GTA_SA) { + if (doesEntityDataExist(player, "vrr.fightStyle")) { let fightStyle = getEntityData(player, "vrr.fightStyle"); player.setFightStyle(fightStyle[0], fightStyle[1]); } @@ -433,80 +433,80 @@ function syncPlayerProperties(player) { // } //} - if(getGame() == VRR_GAME_GTA_IV) { - if(doesEntityDataExist(player, "vrr.bodyPartHair")) { + if (getGame() == VRR_GAME_GTA_IV) { + if (doesEntityDataExist(player, "vrr.bodyPartHair")) { let bodyPartHead = getEntityData(player, "vrr.bodyPartHair"); player.changeBodyPart(0, bodyPartHead[0], bodyPartHair[1]); } - if(doesEntityDataExist(player, "vrr.bodyPartHead")) { + if (doesEntityDataExist(player, "vrr.bodyPartHead")) { let bodyPartHead = getEntityData(player, "vrr.bodyPartHead"); player.changeBodyPart(1, bodyPartHead[0], bodyPartHead[1]); } - if(doesEntityDataExist(player, "vrr.bodyPartUpper")) { + if (doesEntityDataExist(player, "vrr.bodyPartUpper")) { let bodyPartUpper = getEntityData(player, "vrr.bodyPartUpper"); player.changeBodyPart(1, bodyPartUpper[0], bodyPartUpper[1]); } - if(doesEntityDataExist(player, "vrr.bodyPartLower")) { + if (doesEntityDataExist(player, "vrr.bodyPartLower")) { let bodyPartLower = getEntityData(player, "vrr.bodyPartLower"); player.changeBodyPart(1, bodyPartLower[0], bodyPartLower[1]); } } - if(getGame() == VRR_GAME_GTA_IV) { - if(doesEntityDataExist(player, "vrr.bodyPropHair")) { + if (getGame() == VRR_GAME_GTA_IV) { + if (doesEntityDataExist(player, "vrr.bodyPropHair")) { let bodyPropHair = getEntityData(player, "vrr.bodyPropHair"); player.changeBodyProp(0, bodyPropHair[0], bodyPropHair[1]); } - if(doesEntityDataExist(player, "vrr.bodyPropHead")) { + if (doesEntityDataExist(player, "vrr.bodyPropHead")) { let bodyPropHead = getEntityData(player, "vrr.bodyPropHead"); player.changeBodyProp(1, bodyPropHead[0], bodyPropHead[1]); } - if(doesEntityDataExist(player, "vrr.bodyPropEyes")) { + if (doesEntityDataExist(player, "vrr.bodyPropEyes")) { let bodyPropEyes = getEntityData(player, "vrr.bodyPropEyes"); player.changeBodyProp(1, bodyPropEyes[0], bodyPropEyes[1]); } - if(doesEntityDataExist(player, "vrr.bodyPropLeftHand")) { + if (doesEntityDataExist(player, "vrr.bodyPropLeftHand")) { let bodyPropLeftHand = getEntityData(player, "vrr.bodyPropLeftHand"); player.changeBodyProp(1, bodyPropLeftHand[0], bodyPropLeftHand[1]); } - if(doesEntityDataExist(player, "vrr.bodyPropRightHand")) { + if (doesEntityDataExist(player, "vrr.bodyPropRightHand")) { let bodyPropRightHand = getEntityData(player, "vrr.bodyPropRightHand"); player.changeBodyProp(1, bodyPropRightHand[0], bodyPropRightHand[1]); } - if(doesEntityDataExist(player, "vrr.bodyPropLeftWrist")) { + if (doesEntityDataExist(player, "vrr.bodyPropLeftWrist")) { let bodyPropLeftWrist = getEntityData(player, "vrr.bodyPropLeftWrist"); player.changeBodyProp(1, bodyPropLeftWrist[0], bodyPropLeftWrist[1]); } - if(doesEntityDataExist(player, "vrr.bodyPropRightWrist")) { + if (doesEntityDataExist(player, "vrr.bodyPropRightWrist")) { let bodyPropRightWrist = getEntityData(player, "vrr.bodyPropRightWrist"); player.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]); } - if(doesEntityDataExist(player, "vrr.bodyPropRightWrist")) { + if (doesEntityDataExist(player, "vrr.bodyPropRightWrist")) { let bodyPropRightWrist = getEntityData(player, "vrr.bodyPropRightWrist"); player.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]); } - if(doesEntityDataExist(player, "vrr.bodyPropHip")) { + if (doesEntityDataExist(player, "vrr.bodyPropHip")) { let bodyPropHip = getEntityData(player, "vrr.bodyPropHip"); player.changeBodyProp(1, bodyPropHip[0], bodyPropHip[1]); } - if(doesEntityDataExist(player, "vrr.bodyPropLeftFoot")) { + if (doesEntityDataExist(player, "vrr.bodyPropLeftFoot")) { let bodyPropLeftFoot = getEntityData(player, "vrr.bodyPropLeftFoot"); player.changeBodyProp(1, bodyPropLeftFoot[0], bodyPropLeftFoot[1]); } - if(doesEntityDataExist(player, "vrr.bodyPropRightFoot")) { + if (doesEntityDataExist(player, "vrr.bodyPropRightFoot")) { let bodyPropRightFoot = getEntityData(player, "vrr.bodyPropRightFoot"); player.changeBodyProp(1, bodyPropRightFoot[0], bodyPropRightFoot[1]); } @@ -516,8 +516,8 @@ function syncPlayerProperties(player) { // =========================================================================== function syncObjectProperties(object) { - if(getGame() == VRR_GAME_GTA_III || getGame() == VRR_GAME_GTA_VC) { - if(doesEntityDataExist(object, "vrr.scale")) { + if (getGame() == VRR_GAME_GTA_III || getGame() == VRR_GAME_GTA_VC) { + if (doesEntityDataExist(object, "vrr.scale")) { let scaleFactor = getEntityData(object, "vrr.scale"); let tempMatrix = object.matrix; tempMatrix.setScale(toVector3(scaleFactor.x, scaleFactor.y, scaleFactor.z)); @@ -568,13 +568,13 @@ function getPlayerId(client) { // =========================================================================== function syncElementProperties(element) { - if(doesEntityDataExist(element, "vrr.interior")) { - if(typeof element.interior != "undefined") { + if (doesEntityDataExist(element, "vrr.interior")) { + if (typeof element.interior != "undefined") { element.interior = getEntityData(element, "vrr.interior"); } } - switch(element.type) { + switch (element.type) { case ELEMENT_VEHICLE: syncVehicleProperties(element); break; @@ -619,23 +619,23 @@ function getScreenHeight() { // =========================================================================== function openAllGarages() { - switch(getGame()) { + switch (getGame()) { case VRR_GAME_GTA_III: - for(let i=0;i<=26;i++) { + for (let i = 0; i <= 26; i++) { openGarage(i); game.NO_SPECIAL_CAMERA_FOR_THIS_GARAGE(i); } break; case VRR_GAME_GTA_VC: - for(let i=0;i<=32;i++) { + for (let i = 0; i <= 32; i++) { openGarage(i); game.NO_SPECIAL_CAMERA_FOR_THIS_GARAGE(i); } break; case VRR_GAME_GTA_SA: - for(let i=0;i<=44;i++) { + for (let i = 0; i <= 44; i++) { openGarage(i); } break; @@ -648,23 +648,23 @@ function openAllGarages() { // =========================================================================== function closeAllGarages() { - switch(getGame()) { + switch (getGame()) { case VRR_GAME_GTA_III: - for(let i=0;i<=26;i++) { + for (let i = 0; i <= 26; i++) { closeGarage(i); game.NO_SPECIAL_CAMERA_FOR_THIS_GARAGE(i); } break; case VRR_GAME_GTA_VC: - for(let i=0;i<=32;i++) { + for (let i = 0; i <= 32; i++) { closeGarage(i); game.NO_SPECIAL_CAMERA_FOR_THIS_GARAGE(i); } break; case VRR_GAME_GTA_SA: - for(let i=0;i<=44;i++) { + for (let i = 0; i <= 44; i++) { closeGarage(i); } break; @@ -683,7 +683,7 @@ function setPedInvincible(ped, state) { // =========================================================================== function setPedLookAt(ped, position) { - if(getGame() == VRR_GAME_GTA_SA) { + if (getGame() == VRR_GAME_GTA_SA) { ped.lookAt(position, 10000); return true; } else { @@ -697,4 +697,10 @@ function setElementHeading(elementId, heading) { getElementFromId(elementId).heading = heading; } +// =========================================================================== + +function deleteLocalPlayerPed() { + destroyElement(localPlayer); +} + // =========================================================================== \ No newline at end of file From 7e7f729997c67c771326db371fa1f0fc9fc4fd02 Mon Sep 17 00:00:00 2001 From: Vortrex <3858226+VortrexFTW@users.noreply.github.com> Date: Tue, 14 Jun 2022 17:32:29 -0500 Subject: [PATCH 04/16] Add del local player ped util --- scripts/server/native/connected.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/scripts/server/native/connected.js b/scripts/server/native/connected.js index 6fd1f0d2..caa54edf 100644 --- a/scripts/server/native/connected.js +++ b/scripts/server/native/connected.js @@ -1382,4 +1382,15 @@ function createAttachedGameBlip(element, type, size, colour = toColour(255, 255, } } +// =========================================================================== + +function deletePlayerPed(client) { + if (areServerElementsSupported()) { + destroyElement(client.player); + } else { + sendNetworkEventToPlayer("vrr.deleteLocalPlayerPed", client); + } + +} + // =========================================================================== \ No newline at end of file From dbde2ed35f7201d8b6386099f10fd47ff07128e3 Mon Sep 17 00:00:00 2001 From: Vortrex <3858226+VortrexFTW@users.noreply.github.com> Date: Tue, 14 Jun 2022 17:32:37 -0500 Subject: [PATCH 05/16] Cleanup --- scripts/server/messaging.js | 46 ++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/scripts/server/messaging.js b/scripts/server/messaging.js index 94c91dee..cf985e28 100644 --- a/scripts/server/messaging.js +++ b/scripts/server/messaging.js @@ -16,7 +16,7 @@ function initMessagingScript() { function announceAdminAction(localeString, ...args) { let clients = getClients(); - for(let i in clients) { + for (let i in clients) { let argsArray = [clients[i], localeString]; argsArray = argsArray.concat(args); let messageText = getLocaleString.apply(null, argsArray); @@ -61,8 +61,8 @@ function messageAdmins(messageText, colour = getColourByName("softRed")) { //logToConsole(LOG_WARN, `đŸ›Ąī¸ ${plainMessage}`); let clients = getClients(); - for(let i in clients) { - if(doesPlayerHaveStaffPermission(clients[i], getStaffFlagValue("BasicModeration"))) { + for (let i in clients) { + if (doesPlayerHaveStaffPermission(clients[i], getStaffFlagValue("BasicModeration"))) { messagePlayerNormal(clients[i], `đŸ›Ąī¸ ${messageText}`, colour); } } @@ -74,12 +74,12 @@ function messageAdmins(messageText, colour = getColourByName("softRed")) { // =========================================================================== function messagePlayerError(client, messageText) { - if(isConsole(client)) { + if (isConsole(client)) { logToConsole(LOG_INFO, `❌ ${messageText}`); return true; } - if(!isClientFromDiscord(client)) { + if (!isClientFromDiscord(client)) { messagePlayerNormal(client, `❌ ${messageText}`, getColourByName("white")); } else { messageDiscordUser(client, `❌ ${messageText}`); @@ -89,12 +89,12 @@ function messagePlayerError(client, messageText) { // =========================================================================== function messagePlayerSyntax(client, messageText) { - if(isConsole(client)) { + if (isConsole(client)) { logToConsole(LOG_INFO, `âŒ¨ī¸ ${messageText}`); return true; } - if(!isClientFromDiscord(client)) { + if (!isClientFromDiscord(client)) { messagePlayerNormal(client, `âŒ¨ī¸ USAGE: {MAINCOLOUR} ${messageText}`, getColourByType("syntaxMessage")); } else { messageDiscordUser(client, `âŒ¨ī¸ ${messageText}`); @@ -104,12 +104,12 @@ function messagePlayerSyntax(client, messageText) { // =========================================================================== function messagePlayerAlert(client, messageText) { - if(isConsole(client)) { + if (isConsole(client)) { logToConsole(LOG_INFO, `âš ī¸ ${messageText}`); return true; } - if(!isClientFromDiscord(client)) { + if (!isClientFromDiscord(client)) { messagePlayerNormal(client, `âš ī¸ ${messageText}`, getColourByName("white")); } else { messageDiscordUser(client, `âš ī¸ ${messageText}`); @@ -119,12 +119,12 @@ function messagePlayerAlert(client, messageText) { // =========================================================================== function messagePlayerSuccess(client, messageText) { - if(isConsole(client)) { + if (isConsole(client)) { logToConsole(LOG_INFO, `âœ”ī¸ ${messageText}`); return true; } - if(!isClientFromDiscord(client)) { + if (!isClientFromDiscord(client)) { messagePlayerNormal(client, `âœ”ī¸ ${messageText}`, getColourByName("white")); } else { messageDiscordUser(client, `âœ”ī¸ ${messageText}`); @@ -134,12 +134,12 @@ function messagePlayerSuccess(client, messageText) { // =========================================================================== function messagePlayerInfo(client, messageText) { - if(isConsole(client)) { + if (isConsole(client)) { logToConsole(LOG_INFO, `â„šī¸ ${messageText}`); return true; } - if(!isClientFromDiscord(client)) { + if (!isClientFromDiscord(client)) { messagePlayerNormal(client, `â„šī¸ ${messageText}`, getColourByName("white")); } else { messageDiscordUser(client, `:information_source: ${messageText}`); @@ -149,12 +149,12 @@ function messagePlayerInfo(client, messageText) { // =========================================================================== function messagePlayerTip(client, messageText) { - if(isConsole(client)) { + if (isConsole(client)) { logToConsole(LOG_INFO, `â„šī¸ ${messageText}`); return true; } - if(!isClientFromDiscord(client)) { + if (!isClientFromDiscord(client)) { messagePlayerNormal(client, `â„šī¸ ${messageText}`, getColourByName("white")); } else { messageDiscordUser(client, `:information_source: ${messageText}`); @@ -188,7 +188,7 @@ function messagePlayerShout(client, shoutingClient, messageText) { // =========================================================================== function messagePlayerDoAction(client, doingActionClient, messageText) { - if(!isClientFromDiscord(client)) { + if (!isClientFromDiscord(client)) { messagePlayerNormal(client, `${messageText} * (${getClientSubAccountName(doingActionClient)})`, getColourByType("doActionMessage")); } } @@ -214,7 +214,7 @@ function messagePlayerAdminChat(client, adminChattingClient, messageText) { // =========================================================================== function messagePlayerNewbieTip(client, message) { - if(!hasBitFlag(getPlayerData(client).accountData.settings, getAccountSettingsFlagValue("NoActionTips"))) { + if (!hasBitFlag(getPlayerData(client).accountData.settings, getAccountSettingsFlagValue("NoActionTips"))) { messagePlayerNormal(client, `💡 ${message}`); } } @@ -222,8 +222,8 @@ function messagePlayerNewbieTip(client, message) { // =========================================================================== function messagePlayerTimedRandomTip(client, message) { - if(isPlayerLoggedIn(client) && isPlayerSpawned(client)) { - if(!hasBitFlag(getPlayerData(client).accountData.settings, getAccountSettingsFlagValue("NoRandomTips"))) { + if (isPlayerLoggedIn(client) && isPlayerSpawned(client)) { + if (!hasBitFlag(getPlayerData(client).accountData.settings, getAccountSettingsFlagValue("NoRandomTips"))) { messagePlayerNormal(client, `💡 ${message}`); } } @@ -233,7 +233,7 @@ function messagePlayerTimedRandomTip(client, message) { function makeChatBoxSectionHeader(name) { let resultString = `{clanOrange}== {jobYellow}${name} `; - let endFiller = fillStringWithCharacter("=", getGlobalConfig().chatSectionHeaderLength-resultString.length); + let endFiller = fillStringWithCharacter("=", getGlobalConfig().chatSectionHeaderLength - resultString.length); return `${resultString} {clanOrange}${endFiller}`; } @@ -241,7 +241,7 @@ function makeChatBoxSectionHeader(name) { function clearChatBox(client) { //game.messages.clear(); - for(let i = 0; i <= 20; i++) { + for (let i = 0; i <= 20; i++) { messageClient(" ", client, COLOUR_WHITE); } } @@ -255,8 +255,8 @@ function messagePlayerHelpContent(client, messageString) { // =========================================================================== function messagePlayersInRace(raceId, message) { - for(let i in clients) { - if(getPlayerRace(clients[i]) == raceId) { + for (let i in clients) { + if (getPlayerRace(clients[i]) == raceId) { messagePlayerNormal(clients[i], message); } } From 7a90cbb8671965867b46852d7dee2675483e44c7 Mon Sep 17 00:00:00 2001 From: Vortrex <3858226+VortrexFTW@users.noreply.github.com> Date: Tue, 14 Jun 2022 17:32:58 -0500 Subject: [PATCH 06/16] Echo actions (/me, /do) to discord --- scripts/server/chat.js | 106 +++++++++++++++++++++-------------------- 1 file changed, 54 insertions(+), 52 deletions(-) diff --git a/scripts/server/chat.js b/scripts/server/chat.js index 06a3f921..b1cf4425 100644 --- a/scripts/server/chat.js +++ b/scripts/server/chat.js @@ -16,23 +16,23 @@ function initChatScript() { // =========================================================================== function processPlayerChat(client, messageText) { - if(!isConsole(client)) { - if(!getPlayerData(client)) { + if (!isConsole(client)) { + if (!getPlayerData(client)) { messagePlayerError(client, getLocaleString(client, "MustBeLoggedInAndSpawnedToChat")); return false; } - if(!isPlayerLoggedIn(client)) { + if (!isPlayerLoggedIn(client)) { messagePlayerError(client, getLocaleString(client, "MustBeLoggedInAndSpawnedToChat")); return false; } - if(!isPlayerSpawned(client)) { + if (!isPlayerSpawned(client)) { messagePlayerError(client, getLocaleString(client, "MustBeLoggedInAndSpawnedToChat")); return false; } - if(isPlayerMuted(client)) { + if (isPlayerMuted(client)) { messagePlayerError(client, getLocaleString(client, "MutedCantChat")); return false; } @@ -61,7 +61,7 @@ function processPlayerChat(client, messageText) { // =========================================================================== function meActionCommand(command, params, client) { - if(areParamsEmpty(params)) { + if (areParamsEmpty(params)) { messagePlayerSyntax(client, getCommandSyntaxText(command)); return false; } @@ -73,12 +73,12 @@ function meActionCommand(command, params, client) { // =========================================================================== function doActionCommand(command, params, client) { - if(isPlayerMuted(client)) { + if (isPlayerMuted(client)) { messagePlayerError(client, getLocaleString(client, "MutedCantChat")); return false; } - if(areParamsEmpty(params)) { + if (areParamsEmpty(params)) { messagePlayerSyntax(client, getCommandSyntaxText(command)); return false; } @@ -90,12 +90,12 @@ function doActionCommand(command, params, client) { // =========================================================================== function shoutCommand(command, params, client) { - if(isPlayerMuted(client)) { + if (isPlayerMuted(client)) { messagePlayerError(client, getLocaleString(client, "MutedCantChat")); return false; } - if(areParamsEmpty(params)) { + if (areParamsEmpty(params)) { messagePlayerSyntax(client, getCommandSyntaxText(command)); return false; } @@ -107,17 +107,17 @@ function shoutCommand(command, params, client) { // =========================================================================== function megaphoneChatCommand(command, params, client) { - if(isPlayerMuted(client)) { + if (isPlayerMuted(client)) { messagePlayerError(client, getLocaleString(client, "MutedCantChat")); return false; } - if(areParamsEmpty(params)) { + if (areParamsEmpty(params)) { messagePlayerSyntax(client, getCommandSyntaxText(command)); return false; } - if(!canPlayerUseMegaphone(client)) { + if (!canPlayerUseMegaphone(client)) { messagePlayerError(client, getLocaleString(client, "CantUseMegaphone")); return false; } @@ -129,12 +129,12 @@ function megaphoneChatCommand(command, params, client) { // =========================================================================== function talkCommand(command, params, client) { - if(isPlayerMuted(client)) { + if (isPlayerMuted(client)) { messagePlayerError(client, getLocaleString(client, "MutedCantChat")); return false; } - if(areParamsEmpty(params)) { + if (areParamsEmpty(params)) { messagePlayerSyntax(client, getCommandSyntaxText(command)); return false; } @@ -146,12 +146,12 @@ function talkCommand(command, params, client) { // =========================================================================== function whisperCommand(command, params, client) { - if(isPlayerMuted(client)) { + if (isPlayerMuted(client)) { messagePlayerError(client, getLocaleString(client, "MutedCantChat")); return false; } - if(areParamsEmpty(params)) { + if (areParamsEmpty(params)) { messagePlayerSyntax(client, getCommandSyntaxText(command)); return false; } @@ -163,12 +163,12 @@ function whisperCommand(command, params, client) { // =========================================================================== function adminChatCommand(command, params, client) { - if(isPlayerMuted(client)) { + if (isPlayerMuted(client)) { messagePlayerError(client, getLocaleString(client, "MutedCantChat")); return false; } - if(areParamsEmpty(params)) { + if (areParamsEmpty(params)) { messagePlayerSyntax(client, getCommandSyntaxText(command)); return false; } @@ -179,12 +179,12 @@ function adminChatCommand(command, params, client) { // =========================================================================== function clanChatCommand(command, params, client) { - if(isPlayerMuted(client)) { + if (isPlayerMuted(client)) { messagePlayerError(client, getLocaleString(client, "MutedCantChat")); return false; } - if(areParamsEmpty(params)) { + if (areParamsEmpty(params)) { messagePlayerSyntax(client, getCommandSyntaxText(command)); return false; } @@ -196,9 +196,9 @@ function clanChatCommand(command, params, client) { function talkToNearbyPlayers(client, messageText) { let clients = getClients(); - for(let i in clients) { - if(isPlayerSpawned(clients[i])) { - if(hasBitFlag(getPlayerData(clients[i]).accountData.flags.moderation, getModerationFlagValue("CanHearEverything")) || (getDistance(getPlayerPosition(client), getPlayerPosition(clients[i])) <= getGlobalConfig().talkDistance && getPlayerDimension(client) == getPlayerDimension(clients[i]))) { + for (let i in clients) { + if (isPlayerSpawned(clients[i])) { + if (hasBitFlag(getPlayerData(clients[i]).accountData.flags.moderation, getModerationFlagValue("CanHearEverything")) || (getDistance(getPlayerPosition(client), getPlayerPosition(clients[i])) <= getGlobalConfig().talkDistance && getPlayerDimension(client) == getPlayerDimension(clients[i]))) { messagePlayerTalk(clients[i], client, messageText); } } @@ -209,9 +209,9 @@ function talkToNearbyPlayers(client, messageText) { function phoneOutgoingToNearbyPlayers(client, messageText) { let clients = getClients(); - for(let i in clients) { - if(isPlayerSpawned(clients[i])) { - if(hasBitFlag(getPlayerData(clients[i]).accountData.flags.moderation, getModerationFlagValue("CanHearEverything")) || (getDistance(getPlayerPosition(client), getPlayerPosition(clients[i])) <= getGlobalConfig().talkDistance && getPlayerDimension(client) == getPlayerDimension(clients[i]))) { + for (let i in clients) { + if (isPlayerSpawned(clients[i])) { + if (hasBitFlag(getPlayerData(clients[i]).accountData.flags.moderation, getModerationFlagValue("CanHearEverything")) || (getDistance(getPlayerPosition(client), getPlayerPosition(clients[i])) <= getGlobalConfig().talkDistance && getPlayerDimension(client) == getPlayerDimension(clients[i]))) { messagePlayerNormal(`[#CCCCCC]${getCharacterFullName(client)} {ALTCOLOUR}(to phone): {MAINCOLOUR}${messageText}`); } } @@ -222,9 +222,9 @@ function phoneOutgoingToNearbyPlayers(client, messageText) { function phoneIncomingToNearbyPlayers(client, messageText) { let clients = getClients(); - for(let i in clients) { - if(isPlayerSpawned(clients[i])) { - if(hasBitFlag(getPlayerData(clients[i]).accountData.flags.moderation, getModerationFlagValue("CanHearEverything")) || (getDistance(getPlayerPosition(client), getPlayerPosition(clients[i])) <= getGlobalConfig().phoneSpeakerDistance && getPlayerDimension(client) == getPlayerDimension(clients[i]))) { + for (let i in clients) { + if (isPlayerSpawned(clients[i])) { + if (hasBitFlag(getPlayerData(clients[i]).accountData.flags.moderation, getModerationFlagValue("CanHearEverything")) || (getDistance(getPlayerPosition(client), getPlayerPosition(clients[i])) <= getGlobalConfig().phoneSpeakerDistance && getPlayerDimension(client) == getPlayerDimension(clients[i]))) { messagePlayerNormal(`[#CCCCCC]${getCharacterFullName(client)} {ALTCOLOUR}(from phone): {MAINCOLOUR}${messageText}`); } } @@ -235,9 +235,9 @@ function phoneIncomingToNearbyPlayers(client, messageText) { function whisperToNearbyPlayers(client, messageText) { let clients = getClients(); - for(let i in clients) { - if(isPlayerSpawned(clients[i])) { - if(hasBitFlag(getPlayerData(clients[i]).accountData.flags.moderation, getModerationFlagValue("CanHearEverything")) || (getDistance(getPlayerPosition(client), getPlayerPosition(clients[i])) <= getGlobalConfig().whisperDistance && getPlayerDimension(client) == getPlayerDimension(clients[i]))) { + for (let i in clients) { + if (isPlayerSpawned(clients[i])) { + if (hasBitFlag(getPlayerData(clients[i]).accountData.flags.moderation, getModerationFlagValue("CanHearEverything")) || (getDistance(getPlayerPosition(client), getPlayerPosition(clients[i])) <= getGlobalConfig().whisperDistance && getPlayerDimension(client) == getPlayerDimension(clients[i]))) { messagePlayerWhisper(clients[i], client, messageText); } } @@ -248,9 +248,9 @@ function whisperToNearbyPlayers(client, messageText) { function shoutToNearbyPlayers(client, messageText) { let clients = getClients(); - for(let i in clients) { - if(isPlayerSpawned(clients[i])) { - if(hasBitFlag(getPlayerData(clients[i]).accountData.flags.moderation, getModerationFlagValue("CanHearEverything")) || (getDistance(getPlayerPosition(client), getPlayerPosition(clients[i])) <= getGlobalConfig().shoutDistance && getPlayerDimension(client) == getPlayerDimension(clients[i]))) { + for (let i in clients) { + if (isPlayerSpawned(clients[i])) { + if (hasBitFlag(getPlayerData(clients[i]).accountData.flags.moderation, getModerationFlagValue("CanHearEverything")) || (getDistance(getPlayerPosition(client), getPlayerPosition(clients[i])) <= getGlobalConfig().shoutDistance && getPlayerDimension(client) == getPlayerDimension(clients[i]))) { messagePlayerShout(clients[i], client, messageText); } } @@ -261,9 +261,9 @@ function shoutToNearbyPlayers(client, messageText) { function megaPhoneToNearbyPlayers(client, messageText) { let clients = getClients(); - for(let i in clients) { - if(isPlayerSpawned(clients[i])) { - if(hasBitFlag(getPlayerData(clients[i]).accountData.flags.moderation, getModerationFlagValue("CanHearEverything")) || (getDistance(getPlayerPosition(client), getPlayerPosition(clients[i])) <= getGlobalConfig().megaphoneDistance && getPlayerDimension(client) == getPlayerDimension(clients[i]))) { + for (let i in clients) { + if (isPlayerSpawned(clients[i])) { + if (hasBitFlag(getPlayerData(clients[i]).accountData.flags.moderation, getModerationFlagValue("CanHearEverything")) || (getDistance(getPlayerPosition(client), getPlayerPosition(clients[i])) <= getGlobalConfig().megaphoneDistance && getPlayerDimension(client) == getPlayerDimension(clients[i]))) { messagePlayerMegaPhone(clients[i], client, messageText); } } @@ -274,35 +274,37 @@ function megaPhoneToNearbyPlayers(client, messageText) { function doActionToNearbyPlayers(client, messageText) { let clients = getClients(); - for(let i in clients) { - if(isPlayerSpawned(clients[i])) { - if(hasBitFlag(getPlayerData(clients[i]).accountData.flags.moderation, getModerationFlagValue("CanHearEverything")) || (getDistance(getPlayerPosition(client), getPlayerPosition(clients[i])) <= getGlobalConfig().doActionDistance && getPlayerDimension(client) == getPlayerDimension(clients[i]))) { + for (let i in clients) { + if (isPlayerSpawned(clients[i])) { + if (hasBitFlag(getPlayerData(clients[i]).accountData.flags.moderation, getModerationFlagValue("CanHearEverything")) || (getDistance(getPlayerPosition(client), getPlayerPosition(clients[i])) <= getGlobalConfig().doActionDistance && getPlayerDimension(client) == getPlayerDimension(clients[i]))) { messagePlayerDoAction(clients[i], client, messageText); } } } + messageDiscordChatChannel(`🙋 *${messageText} (${getCharacterFullName(client)})*`); } // =========================================================================== function meActionToNearbyPlayers(client, messageText) { let clients = getClients(); - for(let i in clients) { - if(isPlayerSpawned(clients[i])) { - if(hasBitFlag(getPlayerData(clients[i]).accountData.flags.moderation, getModerationFlagValue("CanHearEverything")) || (getDistance(getPlayerPosition(client), getPlayerPosition(clients[i])) <= getGlobalConfig().meActionDistance && getPlayerDimension(client) == getPlayerDimension(clients[i]))) { + for (let i in clients) { + if (isPlayerSpawned(clients[i])) { + if (hasBitFlag(getPlayerData(clients[i]).accountData.flags.moderation, getModerationFlagValue("CanHearEverything")) || (getDistance(getPlayerPosition(client), getPlayerPosition(clients[i])) <= getGlobalConfig().meActionDistance && getPlayerDimension(client) == getPlayerDimension(clients[i]))) { messagePlayerMeAction(clients[i], client, messageText); } } } + messageDiscordChatChannel(`🙋 *${getCharacterFullName(client)} ${messageText}*`); } // =========================================================================== function clanChat(client, messageText) { let clients = getClients(); - for(let i in clients) { - if(isPlayerSpawned(clients[i])) { - if(hasBitFlag(getPlayerData(clients[i]).accountData.flags.moderation, getModerationFlagValue("CanHearEverything")) || arePlayersInSameClan(client, clients[i])) { + for (let i in clients) { + if (isPlayerSpawned(clients[i])) { + if (hasBitFlag(getPlayerData(clients[i]).accountData.flags.moderation, getModerationFlagValue("CanHearEverything")) || arePlayersInSameClan(client, clients[i])) { messagePlayerClanChat(clients[i], client, messageText); } } @@ -312,14 +314,14 @@ function clanChat(client, messageText) { // =========================================================================== function canPlayerUseMegaphone(client) { - if(getPlayerFirstItemSlotByUseType(client, VRR_ITEM_USETYPE_MEGAPHONE) != -1) { - if(isPlayerActiveItemEnabled(client)) { + if (getPlayerFirstItemSlotByUseType(client, VRR_ITEM_USETYPE_MEGAPHONE) != -1) { + if (isPlayerActiveItemEnabled(client)) { return true; } } - if(getPlayerVehicle(client)) { - if(doesVehicleHaveMegaphone(getPlayerVehicle(client))) { + if (getPlayerVehicle(client)) { + if (doesVehicleHaveMegaphone(getPlayerVehicle(client))) { return true; } } From e54cacd3d2988ea47d96ef273849d9fe568e6080 Mon Sep 17 00:00:00 2001 From: Vortrex <3858226+VortrexFTW@users.noreply.github.com> Date: Tue, 14 Jun 2022 17:33:19 -0500 Subject: [PATCH 07/16] Delete player ped net event --- scripts/client/server.js | 45 ++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/scripts/client/server.js b/scripts/client/server.js index 41bf72d6..74c97b37 100644 --- a/scripts/client/server.js +++ b/scripts/client/server.js @@ -41,7 +41,7 @@ function addAllNetworkHandlers() { addNetworkEventHandler("vrr.fadeCamera", fadeLocalCamera); addNetworkEventHandler("vrr.removeFromVehicle", removeLocalPlayerFromVehicle); addNetworkEventHandler("vrr.clearWeapons", clearLocalPlayerWeapons); - addNetworkEventHandler("vrr.giveWeapon", giveLocalPlayerWeapon); + addNetworkEventHandler("vrr.giveWeapon", giveLocalPlayerWeapon); addNetworkEventHandler("vrr.position", setLocalPlayerPosition); addNetworkEventHandler("vrr.heading", setLocalPlayerHeading); addNetworkEventHandler("vrr.interior", setLocalPlayerInterior); @@ -59,6 +59,7 @@ function addAllNetworkHandlers() { addNetworkEventHandler("vrr.spawn", serverRequestedLocalPlayerSpawn); addNetworkEventHandler("vrr.clearPedState", clearLocalPedState); addNetworkEventHandler("vrr.drunkEffect", setLocalPlayerDrunkEffect); + addNetworkEventHandler("vrr.deleteLocalPlayerPed", deleteLocalPlayerPed); // Vehicle addNetworkEventHandler("vrr.vehicle", receiveVehicleFromServer); @@ -166,7 +167,7 @@ function sendResourceStartedSignalToServer() { // =========================================================================== function sendResourceStoppedSignalToServer() { - if(isConnected) { + if (isConnected) { sendNetworkEventToServer("vrr.clientStopped"); } } @@ -177,14 +178,14 @@ function set2DRendering(hudState, labelState, smallGameMessageState, scoreboardS logToConsole(LOG_DEBUG, `[VRR.Main] Updating render states (HUD: ${hudState}, Labels: ${labelState}, Bottom Text: ${smallGameMessageState}, Scoreboard: ${scoreboardState}, HotBar: ${hotBarState}, Item Action Delay: ${itemActionDelayState})`); renderHUD = hudState; - if(getGame() == VRR_GAME_GTA_IV) { + if (getGame() == VRR_GAME_GTA_IV) { natives.displayCash(hudState); natives.displayAmmo(hudState); natives.displayHud(hudState); natives.displayRadar(hudState); natives.displayAreaName(hudState); } else { - if(typeof setHUDEnabled != "undefined") { + if (typeof setHUDEnabled != "undefined") { setHUDEnabled(hudState); } } @@ -202,8 +203,8 @@ function onServerSpawnedLocalPlayer(state) { logToConsole(LOG_DEBUG, `[VRR.Main] Setting spawned state to ${state}`); isSpawned = state; setUpInitialGame(); - if(state) { - setTimeout(function() { + if (state) { + setTimeout(function () { calledDeathEvent = false; }, 1000); @@ -243,7 +244,7 @@ function tellServerItemActionDelayComplete() { function sendServerClientInfo() { let clientVersion = "0.0.0.0"; - if(typeof CLIENT_VERSION_MAJOR != "undefined") { + if (typeof CLIENT_VERSION_MAJOR != "undefined") { clientVersion = `${CLIENT_VERSION_MAJOR}.${CLIENT_VERSION_MINOR}.${CLIENT_VERSION_PATCH}.${CLIENT_VERSION_BUILD}`; } sendNetworkEventToServer("vrr.clientInfo", clientVersion, game.width, game.height); @@ -282,7 +283,7 @@ function updateInteriorLightsState(state) { // =========================================================================== function forceSyncElementProperties(elementId) { - if(getElementFromId(elementId) == null) { + if (getElementFromId(elementId) == null) { return false; } @@ -292,7 +293,7 @@ function forceSyncElementProperties(elementId) { // =========================================================================== function setElementCollisionsEnabled(elementId, state) { - if(getElementFromId(elementId) == null) { + if (getElementFromId(elementId) == null) { return false; } @@ -302,7 +303,7 @@ function setElementCollisionsEnabled(elementId, state) { // =========================================================================== function setLocalPlayerArmour(armour) { - if(typeof localPlayer.armour != "undefined") { + if (typeof localPlayer.armour != "undefined") { localPlayer.armour = armour; } } @@ -322,8 +323,8 @@ function setLogLevel(level) { // =========================================================================== function setLocalPlayerInfiniteRun(state) { - if(localPlayer != null) { - if(getGame() == VRR_GAME_GTA_III || getGame() == VRR_GAME_GTA_VC) { + if (localPlayer != null) { + if (getGame() == VRR_GAME_GTA_III || getGame() == VRR_GAME_GTA_VC) { game.SET_PLAYER_NEVER_GETS_TIRED(game.GET_PLAYER_ID(), boolToInt(state)); } } @@ -333,7 +334,7 @@ function setLocalPlayerInfiniteRun(state) { function setLocalPlayerSkin(skinId) { logToConsole(LOG_INFO, `[VRR.Server] Setting locale player skin to ${skinId}`); - if(getGame() == VRR_GAME_GTA_IV) { + if (getGame() == VRR_GAME_GTA_IV) { natives.changePlayerModel(natives.getPlayerId(), skinId); } else { localPlayer.skin = skinId; @@ -343,7 +344,7 @@ function setLocalPlayerSkin(skinId) { // =========================================================================== function makePedHoldObject(pedId, modelIndex) { - if(getGame() == VRR_GAME_GTA_IV) { + if (getGame() == VRR_GAME_GTA_IV) { natives.givePedAmbientObject(natives.getPedFromNetworkId(pedId), getGameConfig().objects[getGame()][modelIndex][1]) } } @@ -357,11 +358,11 @@ function sendLocalPlayerNetworkIdToServer() { // =========================================================================== function setCutsceneInterior(cutsceneName) { - if(getGame() == VRR_GAME_GTA_IV) { - if(cutsceneName == "") { + if (getGame() == VRR_GAME_GTA_IV) { + if (cutsceneName == "") { natives.clearCutscene(); } else { - if(natives.isInteriorScene()) { + if (natives.isInteriorScene()) { natives.clearCutscene(); } natives.initCutscene(cutsceneName); @@ -372,16 +373,16 @@ function setCutsceneInterior(cutsceneName) { // =========================================================================== function makeLocalPlayerPedSpeak(speechName) { - if(getGame() == VRR_GAME_GTA_IV) { + if (getGame() == VRR_GAME_GTA_IV) { // if player is in vehicle, allow megaphone (if last arg is "1", it will cancel megaphone echo) // Only speeches with _MEGAPHONE will have the bullhorn effect // Afaik it only works on police voices anyway - if(localPlayer.vehicle != null) { + if (localPlayer.vehicle != null) { natives.sayAmbientSpeech(localPlayer, speechName, true, false, 0); } else { natives.sayAmbientSpeech(localPlayer, speechName, true, false, 1); } - } else if(getGame() == VRR_GAME_GTA_III || getGame() == VRR_GAME_GTA_VC) { + } else if (getGame() == VRR_GAME_GTA_III || getGame() == VRR_GAME_GTA_VC) { // Don't have a way to get the ped ref ID and can't use ped in arg //game.SET_CHAR_SAY(game.GET_PLAYER_ID(), int); } @@ -390,7 +391,7 @@ function makeLocalPlayerPedSpeak(speechName) { // =========================================================================== function setLocalPlayerAsCopState(state) { - if(getGame() == VRR_GAME_GTA_IV) { + if (getGame() == VRR_GAME_GTA_IV) { natives.setPlayerAsCop(natives.getPlayerId(), state); natives.setPoliceIgnorePlayer(natives.getPlayerId(), state); } @@ -399,7 +400,7 @@ function setLocalPlayerAsCopState(state) { // =========================================================================== function serverRequestedLocalPlayerSpawn(skinId, position) { - if(getGame() == VRR_GAME_GTA_IV) { + if (getGame() == VRR_GAME_GTA_IV) { natives.createPlayer(skinId, position); //if(isCustomCameraSupported()) { // game.restoreCamera(true); From 35f3d527c50a75a0c13629f70b801577ef67396f Mon Sep 17 00:00:00 2001 From: Vortrex <3858226+VortrexFTW@users.noreply.github.com> Date: Tue, 14 Jun 2022 17:33:35 -0500 Subject: [PATCH 08/16] Add front distance to item dropping --- scripts/server/class.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/server/class.js b/scripts/server/class.js index 9bb7fe04..2d02373f 100644 --- a/scripts/server/class.js +++ b/scripts/server/class.js @@ -1386,6 +1386,7 @@ class ItemTypeData { this.dropRotation = toVector3(0.0, 0.0, 0.0); this.dropScale = toVector3(0.0, 0.0, 0.0); this.dropModel = 0; + this.dropFrontDistance = 0.0; this.orderPrice = 0; this.orderValue = 0; this.demandMultiplier = 1; @@ -1426,6 +1427,7 @@ class ItemTypeData { this.dropRotation = toVector3(toFloat(dbAssoc["item_type_drop_rot_x"]), toFloat(dbAssoc["item_type_drop_rot_y"]), toFloat(dbAssoc["item_type_drop_rot_z"])); this.dropScale = toVector3(toFloat(dbAssoc["item_type_drop_scale_x"]), toFloat(dbAssoc["item_type_drop_scale_y"]), toFloat(dbAssoc["item_type_drop_scale_z"])); this.dropModel = toInteger(dbAssoc["item_type_drop_model"]); + this.dropFrontDistance = toFloat(dbAssoc["item_type_drop_front_distance"]); this.useId = toInteger(dbAssoc["item_type_use_id"]); this.useValue = toInteger(dbAssoc["item_type_use_value"]); this.maxValue = toInteger(dbAssoc["item_type_max_value"]); From a0c61c4f9c24e4846e5a16ed190b6078fd283a8e Mon Sep 17 00:00:00 2001 From: Vortrex <3858226+VortrexFTW@users.noreply.github.com> Date: Tue, 14 Jun 2022 17:33:45 -0500 Subject: [PATCH 09/16] Add vehicle trunk distance to config --- scripts/server/config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/server/config.js b/scripts/server/config.js index be9c961d..8cb59737 100644 --- a/scripts/server/config.js +++ b/scripts/server/config.js @@ -95,6 +95,7 @@ let globalConfig = { passwordRequiredSymbols: 0, minChatLines: 1, maxChatLines: 6, + vehicleTrunkDistance: 2.0, }; // =========================================================================== From eab4d6cfe8cc5a671bb4a2f9b91fa66a4b225eb7 Mon Sep 17 00:00:00 2001 From: Vortrex <3858226+VortrexFTW@users.noreply.github.com> Date: Tue, 14 Jun 2022 17:33:58 -0500 Subject: [PATCH 10/16] Check game for restoring camera --- scripts/server/event.js | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/scripts/server/event.js b/scripts/server/event.js index d3a112f4..65b94cfd 100644 --- a/scripts/server/event.js +++ b/scripts/server/event.js @@ -513,12 +513,6 @@ async function onPlayerSpawn(client) { logToConsole(LOG_DEBUG, `[VRR.Event] ${getPlayerDisplayForConsole(client)}'s player data is valid. Continuing spawn processing ...`); - if (getGame() == VRR_GAME_GTA_IV) { - logToConsole(LOG_DEBUG, `[VRR.Event] Setting ${getPlayerDisplayForConsole(client)}'s ped body parts and props`); - setEntityData(getPlayerPed(client), "vrr.bodyParts", getPlayerCurrentSubAccount(client).bodyParts, true); - setEntityData(getPlayerPed(client), "vrr.bodyProps", getPlayerCurrentSubAccount(client).bodyProps, true); - } - logToConsole(LOG_DEBUG, `[VRR.Event] Setting ${getPlayerDisplayForConsole(client)}'s ped scale (${getPlayerCurrentSubAccount(client).pedScale})`); setEntityData(getPlayerPed(client), "vrr.scale", getPlayerCurrentSubAccount(client).pedScale, true); @@ -527,7 +521,7 @@ async function onPlayerSpawn(client) { return false; } - if (isCustomCameraSupported()) { + if (isCustomCameraSupported() && getGame() != VRR_GAME_GTA_IV && getGame() != VRR_GAME_GTA_IV_EFLC) { restorePlayerCamera(client); } From 7d5d660ad9166873e2ac0a94fcb64ca1517b5cdd Mon Sep 17 00:00:00 2001 From: Vortrex <3858226+VortrexFTW@users.noreply.github.com> Date: Tue, 14 Jun 2022 17:34:08 -0500 Subject: [PATCH 11/16] Remove unused var --- scripts/server/help.js | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/scripts/server/help.js b/scripts/server/help.js index d8719b2c..a6c2d570 100644 --- a/scripts/server/help.js +++ b/scripts/server/help.js @@ -48,14 +48,12 @@ let randomTips = [ // =========================================================================== function helpCommand(command, params, client) { - if(areParamsEmpty(params)) { + if (areParamsEmpty(params)) { showMainHelpMessage(client); return false; } - let splitParams = params.split(" "); - - switch(toLowerCase(getParam(params, " ", 1))) { + switch (toLowerCase(getParam(params, " ", 1))) { case "account": showAccountHelpMessage(client); break; @@ -328,7 +326,7 @@ function showRadioHelpMessage(client) { function showWealthAndTaxHelpMessage(client) { messagePlayerInfo(client, makeChatBoxSectionHeader(getLocaleString(client, "HeaderWealthandTaxHelp"))); - messagePlayerHelpContent(client, getGroupedLocaleString(client, "WealthAndTaxHelp", 0, `{ALTCOLOUR}${100*getGlobalConfig().economy.incomeTaxRate}%{MAINCOLOUR}`)); + messagePlayerHelpContent(client, getGroupedLocaleString(client, "WealthAndTaxHelp", 0, `{ALTCOLOUR}${100 * getGlobalConfig().economy.incomeTaxRate}%{MAINCOLOUR}`)); messagePlayerHelpContent(client, getGroupedLocaleString(client, "WealthAndTaxHelp", 1)); messagePlayerHelpContent(client, getGroupedLocaleString(client, "WealthAndTaxHelp", 2, `{ALTCOLOUR}${getGlobalConfig().economy.upKeepCosts.upKeepPerVehicle}{MAINCOLOUR}`, `{ALTCOLOUR}${getGlobalConfig().economy.upKeepCosts.upKeepPerHouse}{MAINCOLOUR}`, `{ALTCOLOUR}${getGlobalConfig().economy.upKeepCosts.upKeepPerBusiness}{MAINCOLOUR}`)); messagePlayerHelpContent(client, getGroupedLocaleString(client, "WealthAndTaxHelp", 3, `{ALTCOLOUR}/wealth{MAINCOLOUR}`, `{ALTCOLOUR}/tax{MAINCOLOUR}`)); @@ -337,7 +335,7 @@ function showWealthAndTaxHelpMessage(client) { // =========================================================================== function showCommandHelpMessage(client, commandName) { - if(!commandName) { + if (!commandName) { messagePlayerSyntax(client, `${getCommandSyntaxText("help")}command `); return false; } @@ -345,7 +343,7 @@ function showCommandHelpMessage(client, commandName) { commandName = toLowerCase(commandName); commandName = commandName.trim(); - if(commandName.slice(0, 1) == "/") { + if (commandName.slice(0, 1) == "/") { commandName = commandName.slice(1); } @@ -355,7 +353,7 @@ function showCommandHelpMessage(client, commandName) { messagePlayerInfo(client, makeChatBoxSectionHeader(getLocaleString(client, "HeaderCommandInfo", commandName))); messagePlayerNormal(client, `{clanOrange}â€ĸ {MAINCOLOUR}Description: ${command.helpDescription}`); - if(aliases.length > 0) { + if (aliases.length > 0) { messagePlayerNormal(client, `{clanOrange}â€ĸ {MAINCOLOUR}Aliases: ${aliases.join(", ")}`); } else { messagePlayerNormal(client, `{clanOrange}â€ĸ {MAINCOLOUR}Aliases: (None)`); @@ -394,7 +392,7 @@ function helpGetCarCommand(command, params, client) { * @return {bool} Whether or not the command was successful * */ - function helpGetSkinCommand(command, params, client) { +function helpGetSkinCommand(command, params, client) { messagePlayerAlert(client, getLocaleString(client, "SkinCommandHelp", `{ALTCOLOUR}/info skin{MAINCOLOUR}`)); messagePlayerAlert(client, ``); } From e794976e5001287b3dc21f26374a863f9ee3b83a Mon Sep 17 00:00:00 2001 From: Vortrex <3858226+VortrexFTW@users.noreply.github.com> Date: Tue, 14 Jun 2022 17:34:43 -0500 Subject: [PATCH 12/16] Working on item containers (crate, box, veh trunk, etc) --- scripts/server/item.js | 110 +++++++++++++++++++++++++++++------------ 1 file changed, 78 insertions(+), 32 deletions(-) diff --git a/scripts/server/item.js b/scripts/server/item.js index 65471b75..2fcf14c7 100644 --- a/scripts/server/item.js +++ b/scripts/server/item.js @@ -105,8 +105,6 @@ function createGroundItemObject(itemId) { //setEntityData(getItemData(itemId).object, "vrr.scale", getItemTypeData(getItemData(itemId).itemTypeIndex).dropScale, true); addToWorld(getItemData(itemId).object); } - - getServerData().groundItemCache.push(itemId); } // =========================================================================== @@ -296,26 +294,26 @@ function pickupItemCommand(command, params, client) { if (!getItemData(itemId)) { //messagePlayerError(client, `The item you're trying to pick up is bugged. A bug report has been sent to the server developers.`); - messagePlayerError(client, getPlayerLocale(client, "NoItemCloseEnough")); + messagePlayerError(client, getLocaleString(client, "NoItemCloseEnough")); submitBugReport(client, `(AUTOMATED REPORT) Pickup Item: Getting item data for item ${itemId} on ground returned false.`); return false; } if (!getItemTypeData(getItemData(itemId).itemTypeIndex)) { //messagePlayerError(client, `The item you're trying to pick up is bugged. A bug report has been sent to the server developers.`); - messagePlayerError(client, getPlayerLocale(client, "NoItemCloseEnough")); + messagePlayerError(client, getLocaleString(client, "NoItemCloseEnough")); submitBugReport(client, `(AUTOMATED REPORT) Pickup Item: Getting item type ${getItemData(itemId).itemType} data for item ${itemId}/${getItemData(itemId).databaseId} on ground returned false.`); return false; } if (getDistance(getPlayerPosition(client), getItemData(itemId).position) > getGlobalConfig().droppedItemPickupRange) { - messagePlayerError(client, getPlayerLocale(client, "NoItemCloseEnough")); + messagePlayerError(client, getLocaleString(client, "NoItemCloseEnough")); return false; } let firstSlot = getPlayerFirstEmptyHotBarSlot(client); if (firstSlot == -1) { - messagePlayerError(client, getPlayerLocale(client, "NoSpaceSelfInventory")); + messagePlayerError(client, getLocaleString(client, "NoSpaceSelfInventory")); return false; } @@ -459,8 +457,8 @@ function putItemCommand(command, params, client) { forcePlayerPlayAnimation(client, getItemTypeData(getItemData(itemId).itemTypeIndex).putAnimationIndex, 0.0); } - getPlayerData(client).itemActionItem = hotBarSlot; getPlayerData(client).itemActionState = VRR_ITEM_ACTION_PUT; + getPlayerData(client).itemActionItem = hotBarSlot; showPlayerItemPutDelay(client, hotBarSlot); //clearPlayerItemActionStateAfterDelay(client, getGlobalConfig().itemActionStateReset); @@ -790,7 +788,7 @@ function playerUseItem(client, hotBarSlot) { case VRR_ITEM_USETYPE_FOOD: { meActionToNearbyPlayers(client, `eats some of their ${itemTypeData.name}`); givePlayerHealth(client, itemTypeData.useValue); - itemData.value = itemData.value - tempItemTypeData.useValue; + itemData.value = itemData.value - itemTypeData.useValue; if (getItemData(itemIndex).value <= 0) { deleteItem(itemIndex); switchPlayerActiveHotBarSlot(client, -1); @@ -1115,10 +1113,12 @@ function playerDropItem(client, hotBarSlot) { getItemData(itemId).ownerType = VRR_ITEM_OWNER_GROUND; getItemData(itemId).ownerId = 0; - getItemData(itemId).position = getPlayerPosition(client); + getItemData(itemId).position = getPosInFrontOfPos(getPlayerPosition(client), getPlayerHeading(client), getItemTypeData(getItemData(itemId).itemTypeIndex).dropFrontDistance); getItemData(itemId).dimension = getPlayerDimension(client); + //getItemData(itemId).interior = getPlayerInterior(client); createGroundItemObject(itemId); getItemData(itemId).needsSaved = true; + getServerData().groundItemCache.push(itemId); } } @@ -1129,9 +1129,12 @@ function playerPutItem(client, hotBarSlot) { let bestNewOwner = getBestNewOwnerToPutItem(client); + if (bestNewOwner[0] == VRR_ITEM_OWNER_NONE) { + return false; + } + getItemData(itemId).ownerType = bestNewOwner[0]; - getItemData(itemId).ownerId = bestNewOwner[1]; - getItemData(itemId).position = toVector(0.0, 0.0, 0.0); + getItemData(itemId).position = toVector3(0.0, 0.0, 0.0); getItemData(itemId).dimension = 0; getItemData(itemId).needsSaved = true; @@ -1143,19 +1146,33 @@ function playerPutItem(client, hotBarSlot) { switch (bestNewOwner[0]) { case VRR_ITEM_OWNER_HOUSE: - meActionToNearbyPlayers(client, `places ${getProperDeterminerForName(getItemName(itemId))} ${getItemName(itemId)} in the house`); + getItemData(itemId).ownerId = getHouseData(bestNewOwner[1]).databaseId; + meActionToNearbyPlayers(client, `puts ${getProperDeterminerForName(getItemName(itemId))} ${getItemName(itemId)} in the house`); break; case VRR_ITEM_OWNER_BIZFLOOR: - meActionToNearbyPlayers(client, `places ${getProperDeterminerForName(getItemName(itemId))} ${getItemName(itemId)} for sale in the business`); + getItemData(itemId).ownerId = getBusinessData(bestNewOwner[1]).databaseId; + meActionToNearbyPlayers(client, `puts ${getProperDeterminerForName(getItemName(itemId))} ${getItemName(itemId)} for sale in the business`); break; case VRR_ITEM_OWNER_BIZSTORAGE: - meActionToNearbyPlayers(client, `places ${getProperDeterminerForName(getItemName(itemId))} ${getItemName(itemId)} in the business storage room`); + getItemData(itemId).ownerId = getBusinessData(bestNewOwner[1]).databaseId; + meActionToNearbyPlayers(client, `puts ${getProperDeterminerForName(getItemName(itemId))} ${getItemName(itemId)} in the business storage room`); break; case VRR_ITEM_OWNER_VEHTRUNK: - meActionToNearbyPlayers(client, `places ${getProperDeterminerForName(getItemName(itemId))} ${getItemName(itemId)} in the ${getVehicleName(getVehicleFromDatabaseId(bestNewOwner[1]))}'s trunk`); + getItemData(itemId).ownerId = getVehicleData(bestNewOwner[1]).databaseId; + meActionToNearbyPlayers(client, `puts ${getProperDeterminerForName(getItemName(itemId))} ${getItemName(itemId)} in the ${getVehicleName(getVehicleFromDatabaseId(bestNewOwner[1]))}'s trunk`); + break; + + case VRR_ITEM_OWNER_VEHDASH: + getItemData(itemId).ownerId = getVehicleData(bestNewOwner[1]).databaseId; + meActionToNearbyPlayers(client, `puts ${getProperDeterminerForName(getItemName(itemId))} ${getItemName(itemId)} in the ${getVehicleName(getVehicleFromDatabaseId(bestNewOwner[1]))}'s dash compartment`); + break; + + case VRR_ITEM_OWNER_ITEM: + getItemData(itemId).ownerId = getItemData(bestNewOwner[1]).databaseId; + meActionToNearbyPlayers(client, `puts ${getProperDeterminerForName(getItemName(itemId))} ${getItemName(itemId)} in the ${getItemName(bestNewOwner[1])}`); break; } } @@ -1364,15 +1381,19 @@ function playerSwitchHotBarSlotCommand(command, params, client) { // =========================================================================== function getClosestItemOnGround(position) { - let items = getServerData().groundItemCache; - let closest = 0; - for (let i in items) { - if (getDistance(getItemData(items[i]).position, position) <= getDistance(getItemData(items[closest]).position, position)) { - closest = i; + let groundItems = getServerData().groundItemCache; + if (groundItems.length != 0) { + let closest = 0; + for (let i in groundItems) { + if (getDistance(getItemData(groundItems[i]).position, position) <= getDistance(getItemData(groundItems[closest]).position, position)) { + closest = i; + } } + + return groundItems[closest]; } - return items[closest]; + return -1; } // =========================================================================== @@ -1545,22 +1566,34 @@ function deleteItem(itemId, whoDeleted = -1) { // =========================================================================== function getBestNewOwnerToPutItem(client) { - let closestDistance = 100.0; let position = getPlayerPosition(client); let possibleHouse = getPlayerHouse(client); - if (getHouseData(possibleHouse)) { - return [VRR_ITEM_OWNER_HOUSE, possibleHouse]; + if (possibleHouse != -1) { + if (getHouseData(possibleHouse) != false) { + return [VRR_ITEM_OWNER_HOUSE, possibleHouse]; + } } let possibleBusiness = getPlayerBusiness(client); - if (getBusinessData(possibleBusiness)) { - return [VRR_ITEM_OWNER_BIZSTORAGE, possibleBusiness]; + if (possibleBusiness != -1) { + if (getBusinessData(possibleBusiness) != false) { + return [VRR_ITEM_OWNER_BIZSTORAGE, possibleBusiness]; + } } let possibleVehicle = getClosestVehicle(position); - if (getDistance(getVehicleTrunkPosition(possibleVehicle), position) <= closestDistance) { - return [VRR_ITEM_OWNER_VEHTRUNK, possibleVehicle]; + if (possibleVehicle != false) { + if (getVehicleData(possibleVehicle) != false && getDistance(getVehicleTrunkPosition(possibleVehicle), position) <= getGlobalConfig().vehicleTrunkDistance) { + return [VRR_ITEM_OWNER_VEHTRUNK, possibleVehicle]; + } + } + + let possibleItem = getClosestItemOnGround(position); + if (possibleItem != -1) { + if (getDistance(getItemPosition(possibleItem), position) <= getGlobalConfig().itemContainerDistance) { + return [VRR_ITEM_OWNER_ITEM, possibleItem]; + } } return [VRR_ITEM_OWNER_NONE, 0]; @@ -1813,6 +1846,8 @@ function saveItemToDatabase(itemId) { logToConsole(LOG_VERBOSE, `[VRR.Item]: Saving item '${itemData.index}' to database ...`); + let position = getItemPosition(itemId); + let dbConnection = connectToDatabase(); if (dbConnection) { let data = [ @@ -1821,9 +1856,9 @@ function saveItemToDatabase(itemId) { ["item_owner_type", itemData.ownerType], ["item_owner_id", itemData.ownerId], ["item_amount", itemData.amount], - ["item_pos_x", itemData.position.x], - ["item_pos_y", itemData.position.y], - ["item_pos_z", itemData.position.z], + ["item_pos_x", position.x], + ["item_pos_y", position.y], + ["item_pos_z", position.z], ["item_int", itemData.interior], ["item_vw", itemData.dimension], ["item_buy_price", itemData.buyPrice], @@ -2354,7 +2389,7 @@ function showItemInventoryToPlayer(client, itemId) { } } - messagePlayerNormal(client, makeChatBoxSectionHeader(getLocaleString(client, "HeaderItemItemsList"))); + messagePlayerNormal(client, makeChatBoxSectionHeader(getLocaleString(client, "HeaderItemItemList", getItemName(itemId)))); let chunkedList = splitArrayIntoChunks(itemDisplay, 5); for (let i in chunkedList) { @@ -2501,4 +2536,15 @@ function getPlayerFirstAmmoItemForWeapon(client, weaponId) { return false; } +// =========================================================================== + +function getItemPosition(itemId) { + if (getItemData(itemId).ownerType == VRR_ITEM_OWNER_GROUND) { + if (getItemData(itemId).object != null) { + return getElementPosition(getItemData(itemId).object); + } + } + return getItemData(itemId).position; +} + // =========================================================================== \ No newline at end of file From a239cd554ea6dd4a0258676c75bcec656ee61a6e Mon Sep 17 00:00:00 2001 From: Vortrex <3858226+VortrexFTW@users.noreply.github.com> Date: Tue, 14 Jun 2022 17:34:55 -0500 Subject: [PATCH 13/16] Send locale ID on change --- scripts/server/locale.js | 49 ++++++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/scripts/server/locale.js b/scripts/server/locale.js index 67ef21ff..2e8a2a96 100644 --- a/scripts/server/locale.js +++ b/scripts/server/locale.js @@ -16,14 +16,14 @@ function initLocaleScript() { function getLocaleString(client, stringName, ...args) { let tempString = getRawLocaleString(stringName, getPlayerData(client).locale); - if(tempString == "" || tempString == null || typeof tempString == "undefined") { + if (tempString == "" || tempString == null || typeof tempString == "undefined") { logToConsole(LOG_WARN, `[VRR.Locale] Locale string missing for ${stringName} on language ${getLocaleData(getPlayerData(client).locale).englishName}`); submitBugReport(client, `(AUTOMATED REPORT) Locale string "${stringName}" is missing for "${getPlayerLocaleName(client)}"`); return ""; } - for(let i = 1; i <= args.length; i++) { - tempString = tempString.replace(`{${i}}`, args[i-1]); + for (let i = 1; i <= args.length; i++) { + tempString = tempString.replace(`{${i}}`, args[i - 1]); } return tempString; @@ -33,13 +33,13 @@ function getLocaleString(client, stringName, ...args) { function getLanguageLocaleString(localeId, stringName, ...args) { let tempString = getRawLocaleString(stringName, localeId); - if(tempString == "" || tempString == null || typeof tempString == "undefined") { + if (tempString == "" || tempString == null || typeof tempString == "undefined") { logToConsole(LOG_WARN, `[VRR.Locale] Locale string missing for ${stringName} on language ${getLocaleData(getPlayerData(client).locale).englishName}`); submitBugReport(client, `(AUTOMATED REPORT) Locale string "${stringName}" is missing for "${getPlayerLocaleName(client)}"`); } - for(let i = 1; i <= args.length; i++) { - tempString = tempString.replace(`{${i}}`, args[i-1]); + for (let i = 1; i <= args.length; i++) { + tempString = tempString.replace(`{${i}}`, args[i - 1]); } return tempString; @@ -50,8 +50,8 @@ function getLanguageLocaleString(localeId, stringName, ...args) { function getGroupedLocaleString(client, stringName, index, ...args) { let tempString = getRawGroupedLocaleString(stringName, getPlayerData(client).locale, index); - for(let i = 1; i <= args.length; i++) { - tempString = tempString.replace(`{${i}}`, args[i-1]); + for (let i = 1; i <= args.length; i++) { + tempString = tempString.replace(`{${i}}`, args[i - 1]); } return tempString; @@ -100,7 +100,7 @@ function loadAllLocaleStrings() { let tempLocaleStrings = {}; let locales = getGlobalConfig().locale.locales; - for(let i in locales) { + for (let i in locales) { let localeData = locales[i]; let localeFile = JSON.parse(loadTextFile(`locale/${localeData.stringsFile}`)); tempLocaleStrings[i] = localeFile; @@ -119,13 +119,13 @@ function getLocaleStrings() { function getLocaleFromParams(params) { let locales = getLocales(); - if(isNaN(params)) { - for(let i in locales) { - if(toLowerCase(locales[i].isoCode).indexOf(toLowerCase(params)) != -1) { + if (isNaN(params)) { + for (let i in locales) { + if (toLowerCase(locales[i].isoCode).indexOf(toLowerCase(params)) != -1) { return i; } - if(toLowerCase(locales[i].englishName).indexOf(toLowerCase(params)) != -1) { + if (toLowerCase(locales[i].englishName).indexOf(toLowerCase(params)) != -1) { return i; } } @@ -143,11 +143,11 @@ function getLocales() { // =========================================================================== function showLocaleListCommand(command, params, client) { - let localeList = getLocales().map(function(x) { return x[0]; }); + let localeList = getLocales().map(function (x) { return x[0]; }); let chunkedList = splitArrayIntoChunks(localeList, 10); messagePlayerInfo(client, getLocaleString(client, "HeaderLocaleList")); - for(let i in chunkedList) { + for (let i in chunkedList) { messagePlayerInfo(client, chunkedList[i].join(", ")); } } @@ -155,14 +155,14 @@ function showLocaleListCommand(command, params, client) { // =========================================================================== function setLocaleCommand(command, params, client) { - if(areParamsEmpty(params)) { + if (areParamsEmpty(params)) { messagePlayerSyntax(client, getCommandSyntaxText(command)); return false; } let localeId = getLocaleFromParams(params); - if(!getLocaleData(localeId)) { + if (!getLocaleData(localeId)) { messagePlayerInfo(client, getLocaleString(client, "InvalidLocale")); return false; } @@ -170,13 +170,14 @@ function setLocaleCommand(command, params, client) { getPlayerData(client).accountData.locale = localeId; getPlayerData(client).locale = localeId; messagePlayerSuccess(client, getLocaleString(client, "LocaleChanged1", getLocaleString(client, "LocaleNativeName"))); - sendPlayerLocaleStrings(client); + //sendPlayerLocaleStrings(client); + sendPlayerLocaleId(client, localeId); } // =========================================================================== function getLocaleData(localeId) { - if(typeof getLocales()[localeId] != "undefined") { + if (typeof getLocales()[localeId] != "undefined") { return getLocales()[localeId]; } @@ -204,12 +205,12 @@ function reloadLocaleConfigurationCommand(command, params, client) { async function translateMessage(messageText, translateFrom = getGlobalConfig().locale.defaultLanguageId, translateTo = getGlobalConfig().locale.defaultLanguageId) { return new Promise(resolve => { - if(translateFrom == translateTo) { + if (translateFrom == translateTo) { resolve(messageText); } - for(let i in cachedTranslations[translateFrom][translateTo]) { - if(cachedTranslations[translateFrom][translateTo][i][0] == messageText) { + for (let i in cachedTranslations[translateFrom][translateTo]) { + if (cachedTranslations[translateFrom][translateTo][i][0] == messageText) { logToConsole(LOG_DEBUG, `[Translate]: Using existing translation for ${getGlobalConfig().locale.locales[translateFrom].englishName} to ${getGlobalConfig().locale.locales[translateTo].englishName} - (${messageText}), (${cachedTranslations[translateFrom][translateTo][i][1]})`); resolve(cachedTranslations[translateFrom][translateTo][i][1]); return true; @@ -220,13 +221,13 @@ async function translateMessage(messageText, translateFrom = getGlobalConfig().l httpGet( thisTranslationURL, "", - function(data) { + function (data) { data = ArrayBufferToString(data); let translationData = JSON.parse(data); cachedTranslations[translateFrom][translateTo].push([messageText, translationData.responseData.translatedText]); resolve(translationData.responseData.translatedText); }, - function(data) { + function (data) { } ); }); From 673942e94576817364b3da8c9837c5f98d38a4c3 Mon Sep 17 00:00:00 2001 From: Vortrex <3858226+VortrexFTW@users.noreply.github.com> Date: Tue, 14 Jun 2022 17:35:18 -0500 Subject: [PATCH 14/16] Use player data to get locale ID --- scripts/server/timers.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/server/timers.js b/scripts/server/timers.js index 49d08e07..0436d923 100644 --- a/scripts/server/timers.js +++ b/scripts/server/timers.js @@ -242,7 +242,7 @@ function showRandomTipToAllPlayers() { if (isClientInitialized(clients[i])) { if (isPlayerLoggedIn(clients[i]) && isPlayerSpawned(clients[i])) { if (!doesPlayerHaveRandomTipsDisabled(clients[i])) { - let localeId = getPlayerLocaleId(clients[i]); + let localeId = getPlayerData(clients[i]).locale; let tipId = getRandom(0, getServerData().localeStrings[localeId]["RandomTips"].length - 1); messagePlayerTip(clients[i], getGroupedLocaleString(clients[i], "RandomTips", tipId)); } From 116865a2d94dec84a4c741891145f1db45dd72b4 Mon Sep 17 00:00:00 2001 From: Vortrex <3858226+VortrexFTW@users.noreply.github.com> Date: Wed, 15 Jun 2022 14:02:34 -0500 Subject: [PATCH 15/16] Rename Garage int type and add Joey's --- scripts/shared/gamedata.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/shared/gamedata.js b/scripts/shared/gamedata.js index c987c6b3..728d8cd0 100644 --- a/scripts/shared/gamedata.js +++ b/scripts/shared/gamedata.js @@ -4856,7 +4856,6 @@ let gameData = { Job: 56, Bar: 49, Club: 48, - RepairGarage: 27, Trophy: 33, Race: 53, Job: 56, @@ -5751,7 +5750,8 @@ let gameData = { JailCell: [toVector3(328.40, -1093.31, 25.98), 0, false, -1], Church: [toVector3(13.87, -1122.43, 26.12), 0, false, -1], Mansion: [toVector3(1461.00, -173.87, 55.78), 0, false, -1], - Garage: [toVector3(-420.69, 289.86, 62.96), 0, false, -1], + SmallGarage: [toVector3(-420.69, 289.86, 62.96), 0, false, -1], + JoeyGarage: [toVector3(1189.40, -867.69, 15.18), 0, false, -1], }, [VRR_GAME_GTA_VC]: { // GTA VC Mall: [toVector3(379.62, 1007.00, 19.22), 4, false, -1], From facd9cf97f07b1e4b6321fb473343514b0b9775d Mon Sep 17 00:00:00 2001 From: Vortrex <3858226+VortrexFTW@users.noreply.github.com> Date: Thu, 16 Jun 2022 13:04:42 -0500 Subject: [PATCH 16/16] Save item type drop front distance --- scripts/server/item.js | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/server/item.js b/scripts/server/item.js index 2fcf14c7..e9244a8b 100644 --- a/scripts/server/item.js +++ b/scripts/server/item.js @@ -1927,6 +1927,7 @@ function saveItemTypeToDatabase(itemTypeId) { ["item_type_drop_rot_x", itemTypeData.dropRotation.x], ["item_type_drop_rot_y", itemTypeData.dropRotation.y], ["item_type_drop_rot_z", itemTypeData.dropRotation.z], + ["item_type_drop_front_distance", itemTypeData.dropFrontDistance], ["item_type_drop_scale_x", itemTypeData.dropScale.x], ["item_type_drop_scale_y", itemTypeData.dropScale.y], ["item_type_drop_scale_z", itemTypeData.dropScale.z],