mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2026-09-23 09:44:00 +00:00
Move the scenario onto exp_roles and remove the legacy role system
Every call site of expcore.roles now uses exp_roles, and the legacy module, its config, and the glue which refreshed guis on role events are deleted. Where a file only renamed the require and the permission strings the change is mechanical; the rest: - Jail is now "give the Jail role" and unjail "take it away". The role has a higher priority than every other so holding it suppresses them, which is what stashing and restoring the roles was for. - The command role authority derives exp_scenario.command.<name> from the command name, and the role parsers use player_outranks rather than comparing indexes with their own root check. - The admin and spectator triggers, and the gui refresh on role changes, live in exp_scenario/control/roles.lua; the system commands trigger stays with the command authority. - The player list warn button is keyed on create_warning, the permission the command behind it already required, and report on create_report. Both were keyed on names no role held, so only root ever saw them. - The warps and tasks configs say exp_roles where they said expcore.roles. - The role tables the readme and player list read are replaced by get_player_names and get_roles. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
eb715cc176
commit
7034f17b5d
@@ -7,7 +7,7 @@
|
||||
|
||||
local ExpUtil = require("modules/exp_util")
|
||||
local Gui = require("modules/exp_gui")
|
||||
local Roles = require("modules.exp_legacy.expcore.roles") --- @dep expcore.roles
|
||||
local Roles = require("modules/exp_roles")
|
||||
local Reports = require("modules.exp_legacy.modules.control.reports") --- @dep modules.control.reports
|
||||
local Warnings = require("modules.exp_legacy.modules.control.warnings") --- @dep modules.control.warnings
|
||||
local Jail = require("modules.exp_legacy.modules.control.jail") --- @dep modules.control.jail
|
||||
@@ -23,11 +23,7 @@ end
|
||||
|
||||
-- auth that will only allow when on player's of lower roles
|
||||
local function auth_lower_role(player, selected_player_name)
|
||||
local player_highest = Roles.get_player_highest_role(player)
|
||||
local action_player_highest = Roles.get_player_highest_role(selected_player_name)
|
||||
if player_highest.index < action_player_highest.index then
|
||||
return true
|
||||
end
|
||||
return Roles.player_outranks(player, selected_player_name)
|
||||
end
|
||||
|
||||
-- gets the action player and a coloured name for the action to be used on
|
||||
@@ -94,7 +90,7 @@ local report_player = new_button("utility/spawn_flag", { "exp-gui_player-list.re
|
||||
if Reports.is_reported(selected_player.name, player.name) then
|
||||
player.print({ "exp-commands_report.already-reported" }, Colors.orange_red)
|
||||
else
|
||||
set_selected_action(player, "command/report")
|
||||
set_selected_action(player, "exp_scenario.command.create_report")
|
||||
end
|
||||
end)
|
||||
|
||||
@@ -110,7 +106,7 @@ end
|
||||
-- @element warn_player
|
||||
local warn_player = new_button("utility/spawn_flag", { "exp-gui_player-list.warn-player" })
|
||||
:on_click(function(def, player, element)
|
||||
set_selected_action(player, "command/give-warning")
|
||||
set_selected_action(player, "exp_scenario.command.create_warning")
|
||||
end)
|
||||
|
||||
local function warn_player_callback(player, reason)
|
||||
@@ -128,7 +124,7 @@ local jail_player = new_button("utility/multiplayer_waiting_icon", { "exp-gui_pl
|
||||
if Jail.is_jailed(selected_player.name) then
|
||||
player.print({ "exp-commands_jail.already-jailed", selected_player_color }, Colors.orange_red)
|
||||
else
|
||||
set_selected_action(player, "command/jail")
|
||||
set_selected_action(player, "exp_scenario.command.jail")
|
||||
end
|
||||
end)
|
||||
|
||||
@@ -143,7 +139,7 @@ end
|
||||
-- @element kick_player
|
||||
local kick_player = new_button("utility/warning_icon", { "exp-gui_player-list.kick-player" })
|
||||
:on_click(function(def, player, element)
|
||||
set_selected_action(player, "command/kick")
|
||||
set_selected_action(player, "exp_scenario.gui.player_list.kick")
|
||||
end)
|
||||
|
||||
local function kick_player_callback(player, reason)
|
||||
@@ -155,7 +151,7 @@ end
|
||||
-- @element ban_player
|
||||
local ban_player = new_button("utility/danger_icon", { "exp-gui_player-list.ban-player" })
|
||||
:on_click(function(def, player, element)
|
||||
set_selected_action(player, "command/ban")
|
||||
set_selected_action(player, "exp_scenario.gui.player_list.ban")
|
||||
end)
|
||||
|
||||
local function ban_player_callback(player, reason)
|
||||
@@ -166,39 +162,39 @@ end
|
||||
return {
|
||||
set_accessors = set_accessors,
|
||||
buttons = {
|
||||
["command/teleport"] = {
|
||||
["exp_scenario.command.teleport"] = {
|
||||
auth = function(player, selected_player)
|
||||
return player.name ~= selected_player.name
|
||||
end, -- cant teleport to your self
|
||||
goto_player,
|
||||
bring_player,
|
||||
},
|
||||
["command/report"] = {
|
||||
["exp_scenario.command.create_report"] = {
|
||||
auth = function(player, selected_player)
|
||||
if player == selected_player then return false end
|
||||
if not Roles.player_allowed(player, "command/give-warning") then
|
||||
return not Roles.player_has_flag(selected_player, "report-immune")
|
||||
if not Roles.player_has_permission(player, "exp_scenario.command.create_warning") then
|
||||
return not Roles.player_has_permission(selected_player, "exp_scenario.bypass.reports")
|
||||
end
|
||||
end, -- can report any player that isn't immune and you aren't able to give warnings
|
||||
reason_callback = report_player_callback,
|
||||
report_player,
|
||||
},
|
||||
["command/give-warning"] = {
|
||||
["exp_scenario.command.create_warning"] = {
|
||||
auth = auth_lower_role, -- warn a lower user, replaces report
|
||||
reason_callback = warn_player_callback,
|
||||
warn_player,
|
||||
},
|
||||
["command/jail"] = {
|
||||
["exp_scenario.command.jail"] = {
|
||||
auth = auth_lower_role,
|
||||
reason_callback = jail_player_callback,
|
||||
jail_player,
|
||||
},
|
||||
["command/kick"] = {
|
||||
["exp_scenario.gui.player_list.kick"] = {
|
||||
auth = auth_lower_role,
|
||||
reason_callback = kick_player_callback,
|
||||
kick_player,
|
||||
},
|
||||
["command/ban"] = {
|
||||
["exp_scenario.gui.player_list.ban"] = {
|
||||
auth = auth_lower_role,
|
||||
reason_callback = ban_player_callback,
|
||||
ban_player,
|
||||
|
||||
@@ -39,9 +39,9 @@ return {
|
||||
allow_zoom_to_map = true, --- @setting allow_zoom_to_map false will disable the zoom to map feature
|
||||
allow_remote_launch = true, --- @setting allow_remote_launch false removes the remote launch button for all players
|
||||
remote_launch_admins_only = false, --- @setting remote_launch_admins_only true will remove the remote launch button for all non (game) admins
|
||||
remote_launch_role_permission = "gui/rocket-info/remote_launch", --- @setting remote_launch_role_permission value used by custom permission system to allow or disallow the button
|
||||
remote_launch_role_permission = "exp_scenario.gui.rocket_info.remote_launch", --- @setting remote_launch_role_permission value used by custom permission system to allow or disallow the button
|
||||
allow_toggle_active = true, --- @setting allow_toggle_active false removes the remote toggle auto launch button for all players
|
||||
toggle_active_admins_only = false, --- @setting toggle_active_admins_only true will remove the toggle auto launch button for all non (game) admins
|
||||
toggle_active_role_permission = "gui/rocket-info/toggle-active", --- @setting toggle_active_role_permission value used by custom permission system to allow or disallow the button
|
||||
toggle_active_role_permission = "exp_scenario.gui.rocket_info.toggle_active", --- @setting toggle_active_role_permission value used by custom permission system to allow or disallow the button
|
||||
},
|
||||
}
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
|
||||
return {
|
||||
-- Adding tasks
|
||||
allow_add_task = "all", --- @setting allow_add_task dictates who is allowed to add new tasks; values: all, admin, expcore.roles, none
|
||||
expcore_roles_allow_add_task = "gui/task-list/add", --- @setting expcore_roles_allow_add_task if expcore.roles is used then this is the required permission
|
||||
allow_add_task = "all", --- @setting allow_add_task dictates who is allowed to add new tasks; values: all, admin, exp_roles, none
|
||||
exp_roles_allow_add_task = "exp_scenario.gui.task_list.add", --- @setting exp_roles_allow_add_task if exp_roles is used then this is the required permission
|
||||
|
||||
-- Editing tasks
|
||||
allow_edit_task = "expcore.roles", --- @setting allow_edit_task dictates who is allowed to edit existing tasks; values: all, admin, expcore.roles, none
|
||||
expcore_roles_allow_edit_task = "gui/task-list/edit", --- @setting expcore_roles_allow_edit_task if expcore.roles is used then this is the required permission
|
||||
allow_edit_task = "exp_roles", --- @setting allow_edit_task dictates who is allowed to edit existing tasks; values: all, admin, exp_roles, none
|
||||
exp_roles_allow_edit_task = "exp_scenario.gui.task_list.edit", --- @setting exp_roles_allow_edit_task if exp_roles is used then this is the required permission
|
||||
user_can_edit_own_tasks = true, --- @settings if true then the user who made the task can edit it regardless of the allow_edit_task setting
|
||||
}
|
||||
|
||||
@@ -8,23 +8,23 @@ return {
|
||||
default_icon = { type = "item", name = "discharge-defense-equipment" }, --- @setting default_icon the default icon that will be used for warps
|
||||
|
||||
-- Warp cooldowns
|
||||
bypass_warp_cooldown = "expcore.roles", --- @setting bypass_warp_cooldown dictates who the warp cooldown is applied to; values: all, admin, expcore.roles, none
|
||||
expcore_roles_bypass_warp_cooldown = "gui/warp-list/bypass-cooldown", --- @setting expcore_roles_bypass_warp_cooldown if expcore.roles is used then this is the required permission
|
||||
bypass_warp_cooldown = "exp_roles", --- @setting bypass_warp_cooldown dictates who the warp cooldown is applied to; values: all, admin, exp_roles, none
|
||||
exp_roles_bypass_warp_cooldown = "exp_scenario.gui.warp_list.bypass_cooldown", --- @setting exp_roles_bypass_warp_cooldown if exp_roles is used then this is the required permission
|
||||
cooldown_duration = 60, --- @setting cooldown_duration the duration of the warp cooldown in seconds
|
||||
|
||||
-- Warp proximity
|
||||
bypass_warp_proximity = "expcore.roles", --- @setting bypass_warp_proximity dictates who the warp proximity is applied to; values: all, admin, expcore.roles, none
|
||||
expcore_roles_bypass_warp_proximity = "gui/warp-list/bypass-proximity", --- @setting expcore_roles_bypass_warp_proximity if expcore.roles is used then this is the required permission
|
||||
bypass_warp_proximity = "exp_roles", --- @setting bypass_warp_proximity dictates who the warp proximity is applied to; values: all, admin, exp_roles, none
|
||||
exp_roles_bypass_warp_proximity = "exp_scenario.gui.warp_list.bypass_proximity", --- @setting exp_roles_bypass_warp_proximity if exp_roles is used then this is the required permission
|
||||
standard_proximity_radius = 4, --- @setting standard_proximity_radius the minimum distance a player is allowed to be to a warp in order to use it
|
||||
spawn_proximity_radius = 20, --- @setting spawn_proximity_radius the minimum distance a player is allowed to be from they spawn point to use warps
|
||||
|
||||
-- Adding warps
|
||||
allow_add_warp = "expcore.roles", --- @setting allow_add_warp dictates who is allowed to add warps; values: all, admin, expcore.roles, none
|
||||
expcore_roles_allow_add_warp = "gui/warp-list/add", --- @setting expcore_roles_allow_add_warp if expcore.roles is used then this is the required permission
|
||||
allow_add_warp = "exp_roles", --- @setting allow_add_warp dictates who is allowed to add warps; values: all, admin, exp_roles, none
|
||||
exp_roles_allow_add_warp = "exp_scenario.gui.warp_list.add", --- @setting exp_roles_allow_add_warp if exp_roles is used then this is the required permission
|
||||
|
||||
-- Editing warps
|
||||
allow_edit_warp = "expcore.roles", --- @setting allow_edit_warp dictates who is allowed to edit warps; values: all, admin, expcore.roles, none
|
||||
expcore_roles_allow_edit_warp = "gui/warp-list/edit", --- @setting expcore_roles_allow_edit_warp if expcore.roles is used then this is the required permission
|
||||
allow_edit_warp = "exp_roles", --- @setting allow_edit_warp dictates who is allowed to edit warps; values: all, admin, exp_roles, none
|
||||
exp_roles_allow_edit_warp = "exp_scenario.gui.warp_list.edit", --- @setting exp_roles_allow_edit_warp if exp_roles is used then this is the required permission
|
||||
user_can_edit_own_warps = false, --- @settings user_can_edit_own_warps if true then the user who made the warp can edit it regardless of the allow_edit_warp setting
|
||||
|
||||
-- Warp area generation
|
||||
|
||||
Reference in New Issue
Block a user