From 3514e8d5f50c2ed88ccd6eb338811b26d77103b0 Mon Sep 17 00:00:00 2001 From: Vortrex <3858226+VortrexFTW@users.noreply.github.com> Date: Sun, 13 Feb 2022 19:38:42 -0600 Subject: [PATCH] Add respawnveh cmd for single vehicle respawn --- scripts/server/command.js | 1 + scripts/server/vehicle.js | 150 +++++++++++++++++++++++--------------- 2 files changed, 93 insertions(+), 58 deletions(-) diff --git a/scripts/server/command.js b/scripts/server/command.js index 7e2ba6e0..44b3ae5b 100644 --- a/scripts/server/command.js +++ b/scripts/server/command.js @@ -506,6 +506,7 @@ function loadCommands() { commandData("vehrespawnpublic", respawnPublicVehiclesCommand, "", getStaffFlagValue("ManageVehicles"), true, true), commandData("vehrespawnbiz", respawnBusinessVehiclesCommand, "", getStaffFlagValue("ManageVehicles"), true, true), commandData("vehreloadall", reloadAllVehiclesCommand, "", getStaffFlagValue("ManageVehicles"), true, true), + commandData("vehreload", respawnVehicleCommand, "", getStaffFlagValue("ManageVehicles"), true, true), commandData("vehrent", rentVehicleCommand, "", getStaffFlagValue("None"), true, true), commandData("vehrentprice", setVehicleRentPriceCommand, "", getStaffFlagValue("None"), true, true), diff --git a/scripts/server/vehicle.js b/scripts/server/vehicle.js index fe90ca94..a222665c 100644 --- a/scripts/server/vehicle.js +++ b/scripts/server/vehicle.js @@ -1076,6 +1076,20 @@ function reloadAllVehiclesCommand(command, params, client) { getVehicleData(vehicle).needsSaved = true; } +// =========================================================================== + +function respawnVehicleCommand(command, params, client) { + if(isPlayerInAnyVehicle(client)) { + removeAllOccupantsFromVehicle(getPlayerVehicle(client)); + respawnVehicle(getPlayerVehicle(client)); + } + + setAllVehicleIndexes(); + + messagePlayerSuccess(client, `Your vehicle has been respawned`); +} + + // =========================================================================== function respawnAllVehiclesCommand(command, params, client) { @@ -1396,69 +1410,77 @@ function createPermanentVehicle(modelIndex, position, heading, interior = 0, dim // =========================================================================== -function checkVehicleBuying(client) { - if(!isPlayerLoggedIn(client)) { - setPlayerBuyingVehicleState(client, VRR_VEHBUYSTATE_NONE, null, null); - return false; - } +function processVehiclePurchasing() { + if(!getGlobalConfig().useServerSideVehiclePurchaseCheck) { + return false; + } - if(!isPlayerSpawned(client)) { - setPlayerBuyingVehicleState(client, VRR_VEHBUYSTATE_NONE, null, null); - return false; - } + getClients().forEach((client) => { + if(!isPlayerLoggedIn(client)) { + setPlayerBuyingVehicleState(client, VRR_VEHBUYSTATE_NONE, null, null); + return false; + } - if(!getPlayerData(client)) { - setPlayerBuyingVehicleState(client, VRR_VEHBUYSTATE_NONE, null, null); - return false; - } + if(!isPlayerSpawned(client)) { + setPlayerBuyingVehicleState(client, VRR_VEHBUYSTATE_NONE, null, null); + return false; + } - if(!getPlayerData(client).buyingVehicle) { - setPlayerBuyingVehicleState(client, VRR_VEHBUYSTATE_NONE, null, null); - return false; - } + if(!getPlayerData(client)) { + setPlayerBuyingVehicleState(client, VRR_VEHBUYSTATE_NONE, null, null); + return false; + } - if(!isPlayerInAnyVehicle(client)) { - if(getPlayerData(client).buyingVehicle != false) { - messagePlayerError(client, getLocaleString(client, "DealershipPurchaseExitedVehicle")); - respawnVehicle(getPlayerData(client).buyingVehicle); - getPlayerData(client).buyingVehicle = false; - setPlayerBuyingVehicleState(client, VRR_VEHBUYSTATE_NONE, null, null); - } - return false; - } + if(!getPlayerData(client).buyingVehicle) { + setPlayerBuyingVehicleState(client, VRR_VEHBUYSTATE_NONE, null, null); + return false; + } - if(getDistance(getVehiclePosition(getPlayerData(client).buyingVehicle), getVehicleData(getPlayerData(client).buyingVehicle).spawnPosition) > getGlobalConfig().buyVehicleDriveAwayDistance) { - if(getPlayerCurrentSubAccount(client).cash < getVehicleData(getPlayerData(client).buyingVehicle).buyPrice) { - messagePlayerError(client, getLocaleString(client, "VehiclePurchaseNotEnoughMoney")); - respawnVehicle(getPlayerData(client).buyingVehicle); - getPlayerData(client).buyingVehicle = false; - setPlayerBuyingVehicleState(client, VRR_VEHBUYSTATE_NONE, null, null); - return false; - } + if(!isPlayerInAnyVehicle(client)) { + if(getPlayerData(client).buyingVehicle != false) { + messagePlayerError(client, getLocaleString(client, "DealershipPurchaseExitedVehicle")); + respawnVehicle(getPlayerData(client).buyingVehicle); + getPlayerData(client).buyingVehicle = false; + setPlayerBuyingVehicleState(client, VRR_VEHBUYSTATE_NONE, null, null); + } + return false; + } - createNewDealershipVehicle(getVehicleData(getPlayerData(client).buyingVehicle).model, getVehicleData(getPlayerData(client).buyingVehicle).spawnPosition, getVehicleData(getPlayerData(client).buyingVehicle).spawnRotation, getVehicleData(getPlayerData(client).buyingVehicle).buyPrice, getVehicleData(getPlayerData(client).buyingVehicle).ownerId); - takePlayerCash(client, getVehicleData(getPlayerData(client).buyingVehicle).buyPrice); - updatePlayerCash(client); - getVehicleData(getPlayerData(client).buyingVehicle).ownerId = getPlayerCurrentSubAccount(client).databaseId; - getVehicleData(getPlayerData(client).buyingVehicle).ownerType = VRR_VEHOWNER_PLAYER; - getVehicleData(getPlayerData(client).buyingVehicle).buyPrice = 0; - getVehicleData(getPlayerData(client).buyingVehicle).rentPrice = 0; - getVehicleData(getPlayerData(client).buyingVehicle).spawnLocked = false; - getPlayerData(client).buyingVehicle = false; - messagePlayerSuccess(client, getLocaleString(client, "VehiclePurchaseComplete")); - setPlayerBuyingVehicleState(client, VRR_VEHBUYSTATE_NONE, null, null); - return true; - } + if(getDistance(getVehiclePosition(getPlayerData(client).buyingVehicle), getVehicleData(getPlayerData(client).buyingVehicle).spawnPosition) > getGlobalConfig().buyVehicleDriveAwayDistance) { + if(getPlayerCurrentSubAccount(client).cash < getVehicleData(getPlayerData(client).buyingVehicle).buyPrice) { + messagePlayerError(client, getLocaleString(client, "VehiclePurchaseNotEnoughMoney")); + respawnVehicle(getPlayerData(client).buyingVehicle); + getPlayerData(client).buyingVehicle = false; + setPlayerBuyingVehicleState(client, VRR_VEHBUYSTATE_NONE, null, null); + return false; + } + + createNewDealershipVehicle(getVehicleData(getPlayerData(client).buyingVehicle).model, getVehicleData(getPlayerData(client).buyingVehicle).spawnPosition, getVehicleData(getPlayerData(client).buyingVehicle).spawnRotation, getVehicleData(getPlayerData(client).buyingVehicle).buyPrice, getVehicleData(getPlayerData(client).buyingVehicle).ownerId); + takePlayerCash(client, getVehicleData(getPlayerData(client).buyingVehicle).buyPrice); + updatePlayerCash(client); + getVehicleData(getPlayerData(client).buyingVehicle).ownerId = getPlayerCurrentSubAccount(client).databaseId; + getVehicleData(getPlayerData(client).buyingVehicle).ownerType = VRR_VEHOWNER_PLAYER; + getVehicleData(getPlayerData(client).buyingVehicle).buyPrice = 0; + getVehicleData(getPlayerData(client).buyingVehicle).rentPrice = 0; + getVehicleData(getPlayerData(client).buyingVehicle).spawnLocked = false; + getPlayerData(client).buyingVehicle = false; + messagePlayerSuccess(client, getLocaleString(client, "VehiclePurchaseComplete")); + setPlayerBuyingVehicleState(client, VRR_VEHBUYSTATE_NONE, null, null); + return true; + } + }); return false; } // =========================================================================== -function checkVehicleBurning() { +function processVehicleBurning() { let vehicles = getElementsByType(ELEMENT_VEHICLE); for(let i in vehicles) { - + if(vehicles[i].health <= 250) { + return false; + } } } @@ -1496,17 +1518,19 @@ function setAllVehicleIndexes() { // =========================================================================== function doesVehicleHaveMegaphone(vehicle) { - if(getJobType(getJobIdFromDatabaseId(getVehicleData(vehicle).job)) == VRR_JOB_POLICE) { - return true; - } + if(getVehicleData(vehicle).ownerType == VRR_VEHOWNER_JOB) { + if(getJobType(getJobIdFromDatabaseId(getVehicleData(vehicle).ownerId)) == VRR_JOB_POLICE) { + return true; + } - if(getJobType(getJobIdFromDatabaseId(getVehicleData(vehicle).job)) == VRR_JOB_FIRE) { - return true; - } + if(getJobType(getJobIdFromDatabaseId(getVehicleData(vehicle).ownerId)) == VRR_JOB_FIRE) { + return true; + } - if(getJobType(getJobIdFromDatabaseId(getVehicleData(vehicle).job)) == VRR_JOB_MEDICAL) { - return true; - } + if(getJobType(getJobIdFromDatabaseId(getVehicleData(vehicle).ownerId)) == VRR_JOB_MEDICAL) { + return true; + } + } return false; } @@ -1548,4 +1572,14 @@ function getVehicleTrunkPosition(vehicle) { return getPosBehindPos(getVehiclePosition(vehicle), getVehicleHeading(vehicle), getGlobalConfig().vehicleTrunkRearDistance); } +// =========================================================================== + +function removeAllOccupantsFromVehicle(vehicle) { + for(let i = 0 ; i <= 16 ; i++) { + if(vehicle.getOccupant(i) != null) { + removePlayerFromVehicle(vehicle.getOccupant(i)); + } + } +} + // =========================================================================== \ No newline at end of file