diff --git a/scripts/server/vehicle.js b/scripts/server/vehicle.js index 6e026798..5310fff9 100644 --- a/scripts/server/vehicle.js +++ b/scripts/server/vehicle.js @@ -694,7 +694,7 @@ function buyVehicleCommand(command, params, client) { return false; } - if (canPlayerManageVehicle(client, vehicle)) { + if (doesPlayerOwnVehicle(client, vehicle)) { messagePlayerError(client, getLocaleString(client, "AlreadyOwnVehicle")); return false; } @@ -878,6 +878,34 @@ function canPlayerManageVehicle(client, vehicle) { // =========================================================================== +function doesPlayerOwnVehicle(client, vehicle) { + let vehicleData = getVehicleData(vehicle); + + if (vehicleData.ownerType == AGRP_VEHOWNER_PLAYER) { + if (vehicleData.ownerId == getPlayerData(client).accountData.databaseId) { + return true; + } + } + + if (vehicleData.ownerType == AGRP_VEHOWNER_CLAN) { + if (vehicleData.ownerId == getPlayerCurrentSubAccount(client).clan) { + if (doesPlayerHaveClanPermission(client, "ManageVehicles") || doesPlayerHaveClanPermission(client, "owner")) { + return true; + } + } + } + + if (vehicleData.ownerType == AGRP_VEHOWNER_BIZ) { + if (canPlayerManageBusiness(client, getBusinessIdFromDatabaseId(vehicleData.ownerId))) { + return true; + } + } + + return false; +} + +// =========================================================================== + function setVehicleJobCommand(command, params, client) { if (!isPlayerInAnyVehicle(client)) { messagePlayerError(client, getLocaleString(client, "MustBeInAVehicle"));