diff --git a/42/media/lua/client/RVReassingRoomAddon.lua b/42/media/lua/client/RVReassingRoomAddon.lua index c182a55..976d9ef 100644 --- a/42/media/lua/client/RVReassingRoomAddon.lua +++ b/42/media/lua/client/RVReassingRoomAddon.lua @@ -6,6 +6,24 @@ local SERVER_MODULE = "PROJECTRVTools" local SERVER_COMMAND_REASSIGN = "ReassignVehicleToCurrentRoom" local CLIENT_COMMAND_RESULT = "ReassignVehicleResult" +local function isDebugModeEnabled() + if type(isDebugEnabled) == "function" then + return isDebugEnabled() == true + end + return false +end + +local function isAdminPlayer(player) + if not isClient() then + return true + end + if not player or not player.getAccessLevel then + return false + end + local accessLevel = tostring(player:getAccessLevel() or ""):lower() + return accessLevel == "admin" +end + -- Get the room type based on the player's coordinates local function getRoomTypeAtPosition(x, y, z) local RV = require("RVVehicleTypes") @@ -98,6 +116,13 @@ local function reassignVehicleToCurrentRoom(player) end local function requestReassignVehicleToCurrentRoom(player) + if not isDebugModeEnabled() then + return + end + if not isAdminPlayer(player) then + return + end + if isClient() then sendClientCommand(SERVER_MODULE, SERVER_COMMAND_REASSIGN, {}) return @@ -141,6 +166,13 @@ end -- Main function that adds the context menu option local function addReassignOption(player, context) + if not isDebugModeEnabled() then + return + end + if not isAdminPlayer(player) then + return + end + local inRoom, roomType, room = isPlayerInValidRoom(player) if not inRoom then diff --git a/42/media/lua/client/remove_street_tiles_progressive.lua b/42/media/lua/client/remove_street_tiles_progressive.lua index e6ac472..b43cc79 100644 --- a/42/media/lua/client/remove_street_tiles_progressive.lua +++ b/42/media/lua/client/remove_street_tiles_progressive.lua @@ -6,6 +6,24 @@ local BLOCK_RADIUS = 6 -- radius processed each tick local TOTAL_RADIUS = 60 -- final total radius local BLOCK_STEP = (BLOCK_RADIUS * 2) + 1 -- 13 when BLOCK_RADIUS=6 +local function isDebugModeEnabled() + if type(isDebugEnabled) == "function" then + return isDebugEnabled() == true + end + return false +end + +local function isAdminPlayer(player) + if not isClient() then + return true + end + if not player or not player.getAccessLevel then + return false + end + local accessLevel = tostring(player:getAccessLevel() or ""):lower() + return accessLevel == "admin" +end + local function makeBlocksList(totalRadius, step) local blocks = {} local start = -totalRadius @@ -79,6 +97,7 @@ end local function startProgressiveRemoval(player) if not player then return end + if not isAdminPlayer(player) then return end local px = math.floor(player:getX()) local py = math.floor(player:getY()) local pz = math.floor(player:getZ() or 0) @@ -128,6 +147,8 @@ local function onFillWorldObjectContextMenu(playerOrNum, context, worldObjects, local player if type(playerOrNum) == "number" then player = getSpecificPlayer(playerOrNum) else player = playerOrNum end if not player then return end + if not isDebugModeEnabled() then return end + if not isAdminPlayer(player) then return end context:addOption("Progressively remove 'street' tiles (radius "..tostring(TOTAL_RADIUS)..")", worldObjects, function() startProgressiveRemoval(player) diff --git a/42/media/lua/server/RVReassignRoomServer.lua b/42/media/lua/server/RVReassignRoomServer.lua index e9e2398..c4324d7 100644 --- a/42/media/lua/server/RVReassignRoomServer.lua +++ b/42/media/lua/server/RVReassignRoomServer.lua @@ -4,6 +4,14 @@ local SERVER_MODULE = "PROJECTRVTools" local SERVER_COMMAND_REASSIGN = "ReassignVehicleToCurrentRoom" local CLIENT_COMMAND_RESULT = "ReassignVehicleResult" +local function isAdminPlayer(player) + if not player or not player.getAccessLevel then + return false + end + local accessLevel = tostring(player:getAccessLevel() or ""):lower() + return accessLevel == "admin" +end + local function getRoomTypeAtPosition(x, y, z) local RV = require("RVVehicleTypes") local vehicleTypes = RV.VehicleTypes @@ -112,6 +120,16 @@ local function onClientCommand(module, command, player, args) end if command == SERVER_COMMAND_REASSIGN then + if not isAdminPlayer(player) then + if player then + sendServerCommand(player, SERVER_MODULE, CLIENT_COMMAND_RESULT, { + ok = false, + message = "Only admins can use this action." + }) + end + return + end + local ok, message = reassignVehicleToCurrentRoom(player) if player then sendServerCommand(player, SERVER_MODULE, CLIENT_COMMAND_RESULT, {