mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2026-09-21 17:04: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
@@ -22,10 +22,8 @@ return {
|
|||||||
--- GUI
|
--- GUI
|
||||||
"modules.gui.warp-list",
|
"modules.gui.warp-list",
|
||||||
"modules.gui.vlayer",
|
"modules.gui.vlayer",
|
||||||
"modules.gui._role_updates",
|
|
||||||
|
|
||||||
"modules.graftorio.require", -- graftorio
|
"modules.graftorio.require", -- graftorio
|
||||||
--- Config Files
|
--- Config Files
|
||||||
"config.expcore.permission_groups", -- loads some predefined permission groups
|
"config.expcore.permission_groups", -- loads some predefined permission groups
|
||||||
"config.expcore.roles", -- loads some predefined roles
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
local Roles = require("modules.exp_legacy.expcore.roles")
|
local Roles = require("modules/exp_roles")
|
||||||
|
|
||||||
return {
|
return {
|
||||||
admin_as_active = true, --- @setting admin_as_active When true admins will be treated as active regardless of afk time
|
admin_as_active = true, --- @setting admin_as_active When true admins will be treated as active regardless of afk time
|
||||||
@@ -8,6 +8,7 @@ return {
|
|||||||
trust_time = 3600 * 60 * 10, --- @setting trust_time The time in ticks that a player must be online for to count as trusted
|
trust_time = 3600 * 60 * 10, --- @setting trust_time The time in ticks that a player must be online for to count as trusted
|
||||||
update_time = 3600 * 30, --- @setting update_time How often in ticks the script checks for active players
|
update_time = 3600 * 30, --- @setting update_time How often in ticks the script checks for active players
|
||||||
custom_active_check = function(player)
|
custom_active_check = function(player)
|
||||||
return Roles.get_player_highest_role(player).index <= Roles.get_role_from_any("Veteran").index
|
local veteran = Roles.get_role("Veteran")
|
||||||
|
return veteran ~= nil and Roles.get_player_highest_role(player).index <= veteran.index
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ return {
|
|||||||
},
|
},
|
||||||
allow_command_prefix_for_messages = true, --- @setting allow_command_prefix_for_messages when true any message trigger will print to all player when prefixed
|
allow_command_prefix_for_messages = true, --- @setting allow_command_prefix_for_messages when true any message trigger will print to all player when prefixed
|
||||||
command_admin_only = false, --- @setting command_admin_only when true will only allow chat commands for admins
|
command_admin_only = false, --- @setting command_admin_only when true will only allow chat commands for admins
|
||||||
command_permission = "command/chat-commands", --- @setting command_permission the permission used to allow command prefixes
|
command_permission = "exp_scenario.chat.commands", --- @setting command_permission the permission used to allow command prefixes
|
||||||
command_prefix = "!", --- @setting command_prefix prefix used for commands below and to print to all players (if enabled above)
|
command_prefix = "!", --- @setting command_prefix prefix used for commands below and to print to all players (if enabled above)
|
||||||
--- @type table<string, LocalisedString | fun(player: LuaPlayer, is_command: boolean): LocalisedString>
|
--- @type table<string, LocalisedString | fun(player: LuaPlayer, is_command: boolean): LocalisedString>
|
||||||
commands = { --- @setting commands will trigger only when command prefix is given
|
commands = { --- @setting commands will trigger only when command prefix is given
|
||||||
|
|||||||
@@ -1,363 +0,0 @@
|
|||||||
--- This is the main config file for the role system; file includes defines for roles and role flags and default values
|
|
||||||
-- @config Roles
|
|
||||||
|
|
||||||
local Roles = require("modules.exp_legacy.expcore.roles") --- @dep expcore.roles
|
|
||||||
local PlayerData = require("modules.exp_legacy.expcore.player_data") --- @dep expcore.player_data
|
|
||||||
local Statistics = PlayerData.Statistics
|
|
||||||
|
|
||||||
--- Role flags that will run when a player changes roles
|
|
||||||
Roles.define_flag_trigger("is_admin", function(player, state)
|
|
||||||
player.admin = state
|
|
||||||
end)
|
|
||||||
Roles.define_flag_trigger("is_spectator", function(player, state)
|
|
||||||
player.spectator = state
|
|
||||||
end)
|
|
||||||
Roles.define_flag_trigger("is_jail", function(player, state)
|
|
||||||
if player.character then
|
|
||||||
player.character.disabled_by_script = not state
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
|
|
||||||
--- Admin Roles
|
|
||||||
Roles.new_role("System", "SYS")
|
|
||||||
:set_permission_group("Default", true)
|
|
||||||
:set_flag("is_admin")
|
|
||||||
:set_flag("is_system")
|
|
||||||
:set_flag("is_spectator")
|
|
||||||
:set_flag("report-immune")
|
|
||||||
:set_flag("instant-respawn")
|
|
||||||
:set_allow_all()
|
|
||||||
|
|
||||||
Roles.new_role("Senior Administrator", "SAdmin")
|
|
||||||
:set_permission_group("Admin")
|
|
||||||
:set_custom_color{ r = 233, g = 63, b = 233 }
|
|
||||||
:set_flag("is_admin")
|
|
||||||
:set_flag("is_system")
|
|
||||||
:set_flag("is_spectator")
|
|
||||||
:set_flag("report-immune")
|
|
||||||
:set_flag("instant-respawn")
|
|
||||||
:set_parent("Administrator")
|
|
||||||
:allow{
|
|
||||||
"command/_rcon",
|
|
||||||
"command/debug",
|
|
||||||
"command/set-cheat-mode",
|
|
||||||
"command/research-all",
|
|
||||||
}
|
|
||||||
|
|
||||||
Roles.new_role("Administrator", "Admin")
|
|
||||||
:set_permission_group("Admin")
|
|
||||||
:set_custom_color{ r = 233, g = 63, b = 233 }
|
|
||||||
:set_flag("is_admin")
|
|
||||||
:set_flag("is_spectator")
|
|
||||||
:set_flag("report-immune")
|
|
||||||
:set_flag("instant-respawn")
|
|
||||||
:set_parent("Moderator")
|
|
||||||
:allow{
|
|
||||||
"gui/warp-list/bypass-proximity",
|
|
||||||
"gui/warp-list/bypass-cooldown",
|
|
||||||
"command/connect-all",
|
|
||||||
}
|
|
||||||
|
|
||||||
Roles.new_role("Moderator", "Mod")
|
|
||||||
:set_permission_group("Admin")
|
|
||||||
:set_custom_color{ r = 0, g = 170, b = 0 }
|
|
||||||
:set_flag("is_admin")
|
|
||||||
:set_flag("is_spectator")
|
|
||||||
:set_flag("report-immune")
|
|
||||||
:set_flag("instant-respawn")
|
|
||||||
:set_parent("Trainee")
|
|
||||||
:allow{
|
|
||||||
"command/assign-role",
|
|
||||||
"command/unassign-role",
|
|
||||||
"command/repair",
|
|
||||||
"command/kill/always",
|
|
||||||
"command/clear-tag/always",
|
|
||||||
"command/spawn/always",
|
|
||||||
"command/clear-reports",
|
|
||||||
"command/clear-warnings",
|
|
||||||
"command/clear-script-warnings",
|
|
||||||
"command/clear-last-warnings",
|
|
||||||
"command/clear-inventory",
|
|
||||||
"command/kill-enemies",
|
|
||||||
"command/remove-enemies",
|
|
||||||
"command/home",
|
|
||||||
"command/set-home",
|
|
||||||
"command/get-home",
|
|
||||||
"command/return",
|
|
||||||
"command/connect-player",
|
|
||||||
"command/set-bot-queue",
|
|
||||||
"command/set-game-speed",
|
|
||||||
"command/set-friendly-fire",
|
|
||||||
"command/set-always-day",
|
|
||||||
"command/set-pollution-enabled",
|
|
||||||
"command/clear-pollution",
|
|
||||||
"gui/rocket-info/toggle-active",
|
|
||||||
"gui/rocket-info/remote_launch",
|
|
||||||
"gui/bonus",
|
|
||||||
"fast-tree-decon",
|
|
||||||
}
|
|
||||||
|
|
||||||
Roles.new_role("Trainee", "TrMod")
|
|
||||||
:set_permission_group("Admin")
|
|
||||||
:set_custom_color{ r = 0, g = 170, b = 0 }
|
|
||||||
:set_flag("is_admin")
|
|
||||||
:set_flag("is_spectator")
|
|
||||||
:set_flag("report-immune")
|
|
||||||
:set_parent("Veteran")
|
|
||||||
:allow{
|
|
||||||
"command/admin-chat",
|
|
||||||
"command/goto",
|
|
||||||
"command/teleport",
|
|
||||||
"command/bring",
|
|
||||||
"command/create-warning",
|
|
||||||
"command/get-warnings",
|
|
||||||
"command/get-reports",
|
|
||||||
"command/protect-entity",
|
|
||||||
"command/protect-area",
|
|
||||||
"command/protect-tag",
|
|
||||||
"command/jail",
|
|
||||||
"command/unjail",
|
|
||||||
"command/kick",
|
|
||||||
"command/ban",
|
|
||||||
"command/spectate",
|
|
||||||
"command/follow",
|
|
||||||
"command/search",
|
|
||||||
"command/search-online",
|
|
||||||
"command/search-amount",
|
|
||||||
"command/search-recent",
|
|
||||||
"command/clear-blueprints-surface",
|
|
||||||
"gui/playerdata",
|
|
||||||
}
|
|
||||||
|
|
||||||
--- Trusted Roles
|
|
||||||
Roles.new_role("Board Member", "Board")
|
|
||||||
:set_permission_group("Trusted")
|
|
||||||
:set_custom_color{ r = 247, g = 246, b = 54 }
|
|
||||||
:set_flag("is_spectator")
|
|
||||||
:set_flag("report-immune")
|
|
||||||
:set_flag("instant-respawn")
|
|
||||||
:set_parent("Sponsor")
|
|
||||||
:allow{
|
|
||||||
"command/goto",
|
|
||||||
"command/repair",
|
|
||||||
"command/spectate",
|
|
||||||
"command/follow",
|
|
||||||
"gui/playerdata",
|
|
||||||
}
|
|
||||||
|
|
||||||
Roles.new_role("Senior Backer", "Backer")
|
|
||||||
:set_permission_group("Trusted")
|
|
||||||
:set_custom_color{ r = 238, g = 172, b = 44 }
|
|
||||||
:set_flag("is_spectator")
|
|
||||||
:set_flag("report-immune")
|
|
||||||
:set_flag("instant-respawn")
|
|
||||||
:set_parent("Sponsor")
|
|
||||||
:allow{
|
|
||||||
}
|
|
||||||
|
|
||||||
Roles.new_role("Sponsor", "Spon")
|
|
||||||
:set_permission_group("Trusted")
|
|
||||||
:set_custom_color{ r = 238, g = 172, b = 44 }
|
|
||||||
:set_flag("is_spectator")
|
|
||||||
:set_flag("report-immune")
|
|
||||||
:set_flag("instant-respawn")
|
|
||||||
:set_parent("Supporter")
|
|
||||||
:allow{
|
|
||||||
"gui/rocket-info/toggle-active",
|
|
||||||
"gui/rocket-info/remote_launch",
|
|
||||||
"gui/bonus",
|
|
||||||
"command/home",
|
|
||||||
"command/set-home",
|
|
||||||
"command/get-home",
|
|
||||||
"command/return",
|
|
||||||
"fast-tree-decon",
|
|
||||||
}
|
|
||||||
|
|
||||||
Roles.new_role("Supporter", "Sup")
|
|
||||||
:set_permission_group("Trusted")
|
|
||||||
:set_custom_color{ r = 230, g = 99, b = 34 }
|
|
||||||
:set_flag("is_spectator")
|
|
||||||
:set_parent("Veteran")
|
|
||||||
:allow{
|
|
||||||
"command/tag-color",
|
|
||||||
"command/jail",
|
|
||||||
"command/unjail",
|
|
||||||
"command/set-join-message",
|
|
||||||
"command/remove-join-message",
|
|
||||||
}
|
|
||||||
|
|
||||||
Roles.new_role("Partner", "Part")
|
|
||||||
:set_permission_group("Trusted")
|
|
||||||
:set_custom_color{ r = 140, g = 120, b = 200 }
|
|
||||||
:set_flag("is_spectator")
|
|
||||||
:set_parent("Veteran")
|
|
||||||
:allow{
|
|
||||||
"command/jail",
|
|
||||||
"command/unjail",
|
|
||||||
}
|
|
||||||
|
|
||||||
local hours10, hours250 = 10 * 216000, 250 * 60
|
|
||||||
Roles.new_role("Veteran", "Vet")
|
|
||||||
:set_permission_group("Trusted")
|
|
||||||
:set_custom_color{ r = 140, g = 120, b = 200 }
|
|
||||||
:set_parent("Member")
|
|
||||||
:allow{
|
|
||||||
"command/chat-commands",
|
|
||||||
"command/clear-ground-items",
|
|
||||||
"command/clear-blueprints",
|
|
||||||
"command/set-trains-to-automatic",
|
|
||||||
}
|
|
||||||
:set_auto_assign_condition(function(player)
|
|
||||||
if player.online_time >= hours10 then
|
|
||||||
return true
|
|
||||||
else
|
|
||||||
local stats = Statistics:get(player, {})
|
|
||||||
local playtime, afk_time, map_count = stats.Playtime or 0, stats.AfkTime or 0, stats.MapsPlayed or 0
|
|
||||||
return playtime - afk_time >= hours250 and map_count >= 25
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
|
|
||||||
--- Standard User Roles
|
|
||||||
Roles.new_role("Member", "Mem")
|
|
||||||
:set_permission_group("Standard")
|
|
||||||
:set_custom_color{ r = 24, g = 172, b = 188 }
|
|
||||||
:set_flag("deconlog-bypass")
|
|
||||||
:set_parent("Regular")
|
|
||||||
:allow{
|
|
||||||
"gui/task-list/add",
|
|
||||||
"gui/task-list/edit",
|
|
||||||
"gui/warp-list/add",
|
|
||||||
"gui/warp-list/edit",
|
|
||||||
"gui/surveillance",
|
|
||||||
"gui/vlayer-edit",
|
|
||||||
"gui/tool",
|
|
||||||
"command/save-quickbar",
|
|
||||||
"command/vlayer-info",
|
|
||||||
"command/lawnmower",
|
|
||||||
"command/waterfill",
|
|
||||||
"command/artillery",
|
|
||||||
}
|
|
||||||
|
|
||||||
local hours3, hours15 = 3 * 216000, 15 * 60
|
|
||||||
Roles.new_role("Regular", "Reg")
|
|
||||||
:set_permission_group("Standard")
|
|
||||||
:set_custom_color{ r = 79, g = 155, b = 163 }
|
|
||||||
:set_parent("Guest")
|
|
||||||
:allow{
|
|
||||||
"command/kill",
|
|
||||||
"command/rainbow",
|
|
||||||
"command/spawn",
|
|
||||||
"command/me",
|
|
||||||
"standard-decon",
|
|
||||||
"bypass-entity-protection",
|
|
||||||
"bypass-nukeprotect",
|
|
||||||
}
|
|
||||||
:set_auto_assign_condition(function(player)
|
|
||||||
if player.online_time >= hours3 then
|
|
||||||
return true
|
|
||||||
else
|
|
||||||
local stats = Statistics:get(player, {})
|
|
||||||
local playtime, afk_time, map_count = stats.Playtime or 0, stats.AfkTime or 0, stats.MapsPlayed or 0
|
|
||||||
return playtime - afk_time >= hours15 and map_count >= 5
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
|
|
||||||
--- Guest/Default role
|
|
||||||
local default = Roles.new_role("Guest", "")
|
|
||||||
:set_permission_group("Guest")
|
|
||||||
:set_custom_color{ r = 185, g = 187, b = 160 }
|
|
||||||
:allow{
|
|
||||||
"command/tag",
|
|
||||||
"command/tag-clear",
|
|
||||||
"command/commands",
|
|
||||||
"command/get-roles",
|
|
||||||
"command/locate",
|
|
||||||
"command/create-report",
|
|
||||||
"command/ratio",
|
|
||||||
"command/server-ups",
|
|
||||||
"command/save-data",
|
|
||||||
"command/data-preference",
|
|
||||||
"command/connect",
|
|
||||||
"gui/player-list",
|
|
||||||
"gui/rocket-info",
|
|
||||||
"gui/science-info",
|
|
||||||
"gui/task-list",
|
|
||||||
"gui/warp-list",
|
|
||||||
"gui/readme",
|
|
||||||
"gui/vlayer",
|
|
||||||
"gui/research",
|
|
||||||
"gui/autofill",
|
|
||||||
"gui/module",
|
|
||||||
"gui/production",
|
|
||||||
}
|
|
||||||
|
|
||||||
--- Jail role
|
|
||||||
Roles.new_role("Jail")
|
|
||||||
:set_permission_group("Restricted")
|
|
||||||
:set_custom_color{ r = 50, g = 50, b = 50 }
|
|
||||||
:set_block_auto_assign(true)
|
|
||||||
:set_flag("defer_role_changes")
|
|
||||||
:disallow(default.allowed)
|
|
||||||
|
|
||||||
--- System defaults which are required to be set
|
|
||||||
Roles.set_root("System")
|
|
||||||
Roles.set_default("Guest")
|
|
||||||
|
|
||||||
Roles.define_role_order{
|
|
||||||
"System", -- Best to keep root at top
|
|
||||||
"Senior Administrator",
|
|
||||||
"Administrator",
|
|
||||||
"Moderator",
|
|
||||||
"Trainee",
|
|
||||||
"Board Member",
|
|
||||||
"Senior Backer",
|
|
||||||
"Sponsor",
|
|
||||||
"Supporter",
|
|
||||||
"Partner",
|
|
||||||
"Veteran",
|
|
||||||
"Member",
|
|
||||||
"Regular",
|
|
||||||
"Jail",
|
|
||||||
"Guest", -- Default must be last if you want to apply restrictions to other roles
|
|
||||||
}
|
|
||||||
|
|
||||||
Roles.override_player_roles{
|
|
||||||
["PHIDIAS0303"] = { "Moderator", "Board Member", "Member" },
|
|
||||||
["aldldl"] = { "Administrator", "Moderator", "Member" },
|
|
||||||
["arty714"] = { "Senior Administrator", "Moderator", "Member" },
|
|
||||||
["Cooldude2606"] = { "Senior Administrator", "Moderator", "Member" },
|
|
||||||
["Drahc_pro"] = { "Administrator", "Moderator", "Member" },
|
|
||||||
["mark9064"] = { "Administrator", "Moderator", "Member" },
|
|
||||||
["7h3w1z4rd"] = { "Moderator", "Member" },
|
|
||||||
["FlipHalfling90"] = { "Moderator", "Member" },
|
|
||||||
["hamsterbryan"] = { "Moderator", "Member" },
|
|
||||||
["HunterOfGames"] = { "Moderator", "Member" },
|
|
||||||
["NextIdea"] = { "Moderator", "Member" },
|
|
||||||
["TheKernel32"] = { "Moderator", "Member" },
|
|
||||||
["TheKernel64"] = { "Moderator", "Member" },
|
|
||||||
["tovernaar123"] = { "Moderator", "Member" },
|
|
||||||
["UUBlueFire"] = { "Moderator", "Member" },
|
|
||||||
["AssemblyStorm"] = { "Moderator", "Member" },
|
|
||||||
["banakeg"] = { "Moderator", "Member" },
|
|
||||||
["connormkii"] = { "Moderator", "Member" },
|
|
||||||
["cydes"] = { "Moderator", "Member" },
|
|
||||||
["darklich14"] = { "Moderator", "Member" },
|
|
||||||
["facere"] = { "Moderator", "Member" },
|
|
||||||
["freek18"] = { "Moderator", "Member" },
|
|
||||||
["Gizan"] = { "Moderator", "Member" },
|
|
||||||
["LoicB"] = { "Moderator", "Member" },
|
|
||||||
["M74132"] = { "Moderator", "Member" },
|
|
||||||
["mafisch3"] = { "Moderator", "Member" },
|
|
||||||
["maplesyrup01"] = { "Moderator", "Member" },
|
|
||||||
["ookl"] = { "Moderator", "Member" },
|
|
||||||
["Phoenix27833"] = { "Moderator", "Member" },
|
|
||||||
["porelos"] = { "Moderator", "Member" },
|
|
||||||
["Ruuyji"] = { "Moderator", "Member" },
|
|
||||||
["samy115"] = { "Moderator", "Member" },
|
|
||||||
["SilentLog"] = { "Moderator", "Member" },
|
|
||||||
["Tcheko"] = { "Moderator", "Member" },
|
|
||||||
["thadius856"] = { "Moderator", "Member" },
|
|
||||||
["whoami32"] = { "Moderator", "Member" },
|
|
||||||
["Windbomb"] = { "Moderator", "Member" },
|
|
||||||
["XenoCyber"] = { "Moderator", "Member" },
|
|
||||||
}
|
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
local ExpUtil = require("modules/exp_util")
|
local ExpUtil = require("modules/exp_util")
|
||||||
local Gui = require("modules/exp_gui")
|
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 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 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
|
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
|
-- auth that will only allow when on player's of lower roles
|
||||||
local function auth_lower_role(player, selected_player_name)
|
local function auth_lower_role(player, selected_player_name)
|
||||||
local player_highest = Roles.get_player_highest_role(player)
|
return Roles.player_outranks(player, selected_player_name)
|
||||||
local action_player_highest = Roles.get_player_highest_role(selected_player_name)
|
|
||||||
if player_highest.index < action_player_highest.index then
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- gets the action player and a coloured name for the action to be used on
|
-- 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
|
if Reports.is_reported(selected_player.name, player.name) then
|
||||||
player.print({ "exp-commands_report.already-reported" }, Colors.orange_red)
|
player.print({ "exp-commands_report.already-reported" }, Colors.orange_red)
|
||||||
else
|
else
|
||||||
set_selected_action(player, "command/report")
|
set_selected_action(player, "exp_scenario.command.create_report")
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
@@ -110,7 +106,7 @@ end
|
|||||||
-- @element warn_player
|
-- @element warn_player
|
||||||
local warn_player = new_button("utility/spawn_flag", { "exp-gui_player-list.warn-player" })
|
local warn_player = new_button("utility/spawn_flag", { "exp-gui_player-list.warn-player" })
|
||||||
:on_click(function(def, player, element)
|
:on_click(function(def, player, element)
|
||||||
set_selected_action(player, "command/give-warning")
|
set_selected_action(player, "exp_scenario.command.create_warning")
|
||||||
end)
|
end)
|
||||||
|
|
||||||
local function warn_player_callback(player, reason)
|
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
|
if Jail.is_jailed(selected_player.name) then
|
||||||
player.print({ "exp-commands_jail.already-jailed", selected_player_color }, Colors.orange_red)
|
player.print({ "exp-commands_jail.already-jailed", selected_player_color }, Colors.orange_red)
|
||||||
else
|
else
|
||||||
set_selected_action(player, "command/jail")
|
set_selected_action(player, "exp_scenario.command.jail")
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
@@ -143,7 +139,7 @@ end
|
|||||||
-- @element kick_player
|
-- @element kick_player
|
||||||
local kick_player = new_button("utility/warning_icon", { "exp-gui_player-list.kick-player" })
|
local kick_player = new_button("utility/warning_icon", { "exp-gui_player-list.kick-player" })
|
||||||
:on_click(function(def, player, element)
|
:on_click(function(def, player, element)
|
||||||
set_selected_action(player, "command/kick")
|
set_selected_action(player, "exp_scenario.gui.player_list.kick")
|
||||||
end)
|
end)
|
||||||
|
|
||||||
local function kick_player_callback(player, reason)
|
local function kick_player_callback(player, reason)
|
||||||
@@ -155,7 +151,7 @@ end
|
|||||||
-- @element ban_player
|
-- @element ban_player
|
||||||
local ban_player = new_button("utility/danger_icon", { "exp-gui_player-list.ban-player" })
|
local ban_player = new_button("utility/danger_icon", { "exp-gui_player-list.ban-player" })
|
||||||
:on_click(function(def, player, element)
|
:on_click(function(def, player, element)
|
||||||
set_selected_action(player, "command/ban")
|
set_selected_action(player, "exp_scenario.gui.player_list.ban")
|
||||||
end)
|
end)
|
||||||
|
|
||||||
local function ban_player_callback(player, reason)
|
local function ban_player_callback(player, reason)
|
||||||
@@ -166,39 +162,39 @@ end
|
|||||||
return {
|
return {
|
||||||
set_accessors = set_accessors,
|
set_accessors = set_accessors,
|
||||||
buttons = {
|
buttons = {
|
||||||
["command/teleport"] = {
|
["exp_scenario.command.teleport"] = {
|
||||||
auth = function(player, selected_player)
|
auth = function(player, selected_player)
|
||||||
return player.name ~= selected_player.name
|
return player.name ~= selected_player.name
|
||||||
end, -- cant teleport to your self
|
end, -- cant teleport to your self
|
||||||
goto_player,
|
goto_player,
|
||||||
bring_player,
|
bring_player,
|
||||||
},
|
},
|
||||||
["command/report"] = {
|
["exp_scenario.command.create_report"] = {
|
||||||
auth = function(player, selected_player)
|
auth = function(player, selected_player)
|
||||||
if player == selected_player then return false end
|
if player == selected_player then return false end
|
||||||
if not Roles.player_allowed(player, "command/give-warning") then
|
if not Roles.player_has_permission(player, "exp_scenario.command.create_warning") then
|
||||||
return not Roles.player_has_flag(selected_player, "report-immune")
|
return not Roles.player_has_permission(selected_player, "exp_scenario.bypass.reports")
|
||||||
end
|
end
|
||||||
end, -- can report any player that isn't immune and you aren't able to give warnings
|
end, -- can report any player that isn't immune and you aren't able to give warnings
|
||||||
reason_callback = report_player_callback,
|
reason_callback = report_player_callback,
|
||||||
report_player,
|
report_player,
|
||||||
},
|
},
|
||||||
["command/give-warning"] = {
|
["exp_scenario.command.create_warning"] = {
|
||||||
auth = auth_lower_role, -- warn a lower user, replaces report
|
auth = auth_lower_role, -- warn a lower user, replaces report
|
||||||
reason_callback = warn_player_callback,
|
reason_callback = warn_player_callback,
|
||||||
warn_player,
|
warn_player,
|
||||||
},
|
},
|
||||||
["command/jail"] = {
|
["exp_scenario.command.jail"] = {
|
||||||
auth = auth_lower_role,
|
auth = auth_lower_role,
|
||||||
reason_callback = jail_player_callback,
|
reason_callback = jail_player_callback,
|
||||||
jail_player,
|
jail_player,
|
||||||
},
|
},
|
||||||
["command/kick"] = {
|
["exp_scenario.gui.player_list.kick"] = {
|
||||||
auth = auth_lower_role,
|
auth = auth_lower_role,
|
||||||
reason_callback = kick_player_callback,
|
reason_callback = kick_player_callback,
|
||||||
kick_player,
|
kick_player,
|
||||||
},
|
},
|
||||||
["command/ban"] = {
|
["exp_scenario.gui.player_list.ban"] = {
|
||||||
auth = auth_lower_role,
|
auth = auth_lower_role,
|
||||||
reason_callback = ban_player_callback,
|
reason_callback = ban_player_callback,
|
||||||
ban_player,
|
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_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
|
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_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
|
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_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 {
|
return {
|
||||||
-- Adding tasks
|
-- Adding tasks
|
||||||
allow_add_task = "all", --- @setting allow_add_task dictates who is allowed to add new tasks; values: all, admin, expcore.roles, none
|
allow_add_task = "all", --- @setting allow_add_task dictates who is allowed to add new tasks; values: all, admin, exp_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
|
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
|
-- 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
|
allow_edit_task = "exp_roles", --- @setting allow_edit_task dictates who is allowed to edit existing tasks; values: all, admin, exp_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
|
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
|
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
|
default_icon = { type = "item", name = "discharge-defense-equipment" }, --- @setting default_icon the default icon that will be used for warps
|
||||||
|
|
||||||
-- Warp cooldowns
|
-- 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
|
bypass_warp_cooldown = "exp_roles", --- @setting bypass_warp_cooldown dictates who the warp cooldown is applied to; values: all, admin, exp_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
|
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
|
cooldown_duration = 60, --- @setting cooldown_duration the duration of the warp cooldown in seconds
|
||||||
|
|
||||||
-- Warp proximity
|
-- 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
|
bypass_warp_proximity = "exp_roles", --- @setting bypass_warp_proximity dictates who the warp proximity is applied to; values: all, admin, exp_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
|
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
|
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
|
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
|
-- Adding warps
|
||||||
allow_add_warp = "expcore.roles", --- @setting allow_add_warp dictates who is allowed to add warps; values: all, admin, expcore.roles, none
|
allow_add_warp = "exp_roles", --- @setting allow_add_warp dictates who is allowed to add warps; values: all, admin, exp_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
|
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
|
-- Editing warps
|
||||||
allow_edit_warp = "expcore.roles", --- @setting allow_edit_warp dictates who is allowed to edit warps; values: all, admin, expcore.roles, none
|
allow_edit_warp = "exp_roles", --- @setting allow_edit_warp dictates who is allowed to edit warps; values: all, admin, exp_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
|
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
|
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
|
-- Warp area generation
|
||||||
|
|||||||
@@ -25,6 +25,6 @@ return {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
ignore_permission = "bypass-nukeprotect", -- @setting ignore_permission The permission that nukeprotect will ignore
|
ignore_permission = "exp_scenario.bypass.nuke_protection", -- @setting ignore_permission The permission that nukeprotect will ignore
|
||||||
ignore_admins = true, -- @setting ignore_admins Ignore admins, true by default. Allows usage outside of the roles module
|
ignore_admins = true, -- @setting ignore_admins Ignore admins, true by default. Allows usage outside of the roles module
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
return {
|
return {
|
||||||
ignore_admins = true, --- @setting ignore_admins If admins are ignored by the protection filter
|
ignore_admins = true, --- @setting ignore_admins If admins are ignored by the protection filter
|
||||||
ignore_permission = "bypass-entity-protection", --- @setting ignore_permission Players with this permission will be ignored by the protection filter, leave nil if expcore.roles is not used
|
ignore_permission = "exp_scenario.bypass.entity_protection", --- @setting ignore_permission Players with this permission will be ignored by the protection filter, leave nil to protect against every player
|
||||||
repeat_count = 5, --- @setting repeat_count Number of protected entities that must be removed within repeat_lifetime in order to trigger repeated removal protection
|
repeat_count = 5, --- @setting repeat_count Number of protected entities that must be removed within repeat_lifetime in order to trigger repeated removal protection
|
||||||
repeat_lifetime = 3600 * 20, --- @setting repeat_lifetime The length of time, in ticks, that protected removals will be remembered for
|
repeat_lifetime = 3600 * 20, --- @setting repeat_lifetime The length of time, in ticks, that protected removals will be remembered for
|
||||||
refresh_rate = 3600 * 5, --- @setting refresh_rate How often the age of protected removals are checked against repeat_lifetime
|
refresh_rate = 3600 * 5, --- @setting refresh_rate How often the age of protected removals are checked against repeat_lifetime
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,11 +1,3 @@
|
|||||||
[expcore-roles]
|
|
||||||
error-log-format-flag=[ERROR] roleFlag/__1__ :: __2__
|
|
||||||
error-log-format-assign=[ERROR] rolePromote/__1__ :: __2__
|
|
||||||
game-message-assign=__1__ has been assigned to __2__ by __3__
|
|
||||||
game-message-unassign=__1__ has been unassigned from __2__ by __3__
|
|
||||||
reject-role=Invalid Role Name.
|
|
||||||
reject-player-role=Player has a higher role.
|
|
||||||
|
|
||||||
[expcore-data]
|
[expcore-data]
|
||||||
description-preference=Allows you to set/get your data saving preference.
|
description-preference=Allows you to set/get your data saving preference.
|
||||||
description-data=Writes all your player data to a file on your computer.
|
description-data=Writes all your player data to a file on your computer.
|
||||||
|
|||||||
@@ -1,11 +1,3 @@
|
|||||||
[expcore-roles]
|
|
||||||
error-log-format-flag=[ERROR] roleFlag/__1__ :: __2__
|
|
||||||
error-log-format-assign=[ERROR] rolePromote/__1__ :: __2__
|
|
||||||
game-message-assign=__1__ 已被 __3__ 指派到身分組 __2__
|
|
||||||
game-message-unassign=__1__ 已被 __3__ 取消指派到身分組 __2__
|
|
||||||
reject-role=無效的身分組。
|
|
||||||
reject-player-role=用戶已有更高的身分組。
|
|
||||||
|
|
||||||
[expcore-data]
|
[expcore-data]
|
||||||
description-preference=允許寫入資料。
|
description-preference=允許寫入資料。
|
||||||
description-data=把用戶資料寫入電腦
|
description-data=把用戶資料寫入電腦
|
||||||
|
|||||||
@@ -1,11 +1,3 @@
|
|||||||
[expcore-roles]
|
|
||||||
error-log-format-flag=[ERROR] roleFlag/__1__ :: __2__
|
|
||||||
error-log-format-assign=[ERROR] rolePromote/__1__ :: __2__
|
|
||||||
game-message-assign=__1__ 已被 __3__ 指派到身分組 __2__
|
|
||||||
game-message-unassign=__1__ 已被 __3__ 取消指派到身分組 __2__
|
|
||||||
reject-role=無效的身分組。
|
|
||||||
reject-player-role=用戶已有更高的身分組。
|
|
||||||
|
|
||||||
[expcore-data]
|
[expcore-data]
|
||||||
description-preference=允許寫入資料。
|
description-preference=允許寫入資料。
|
||||||
description-data=把用戶資料寫入電腦
|
description-data=把用戶資料寫入電腦
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"clusterio": "*",
|
"clusterio": "*",
|
||||||
"exp_util": "*",
|
"exp_util": "*",
|
||||||
|
"exp_roles": "*",
|
||||||
"exp_gui": "*"
|
"exp_gui": "*"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,25 +7,23 @@
|
|||||||
-- import the module from the control modules
|
-- import the module from the control modules
|
||||||
local Jail = require("modules.exp_legacy.modules.control.jail") --- @dep modules.control.jail
|
local Jail = require("modules.exp_legacy.modules.control.jail") --- @dep modules.control.jail
|
||||||
|
|
||||||
-- This will move 'MrBiter' to the jail role and remove all other roles from them
|
-- This will give 'MrBiter' the jail role, which suppresses all of their other roles
|
||||||
-- the player name and reason are only so they can be included in the event for user feedback
|
-- the player name and reason are only so they can be included in the event for user feedback
|
||||||
Jail.jail_player('MrBiter', 'Cooldude2606', 'Likes biters too much')
|
Jail.jail_player('MrBiter', 'Cooldude2606', 'Likes biters too much')
|
||||||
|
|
||||||
-- This will give 'MrBiter' all his roles back and remove him from jail
|
-- This will remove the jail role from 'MrBiter', restoring their other roles
|
||||||
-- again as above the player name is only used in the event for user feedback
|
-- again as above the player name is only used in the event for user feedback
|
||||||
Jail.unjail_player('MrBiter', 'Cooldude2606')
|
Jail.unjail_player('MrBiter', 'Cooldude2606')
|
||||||
]]
|
]]
|
||||||
|
|
||||||
local Roles = require("modules.exp_legacy.expcore.roles")
|
local Roles = require("modules/exp_roles")
|
||||||
|
|
||||||
local valid_player = function(p) return type(p) == "userdata" and p or game.get_player(p) end
|
local valid_player = function(p) return type(p) == "userdata" and p or game.get_player(p) end
|
||||||
local assign_roles = Roles.assign_player
|
|
||||||
local unassign_roles = Roles.unassign_player
|
--- The role which is given to jailed players, it has a higher priority than every other role
|
||||||
local has_role = Roles.player_has_role
|
local jail_role = "Jail"
|
||||||
local get_roles = Roles.get_player_roles
|
|
||||||
|
|
||||||
local Jail = {
|
local Jail = {
|
||||||
old_roles = {},
|
|
||||||
events = {
|
events = {
|
||||||
--- When a player is assigned to jail
|
--- When a player is assigned to jail
|
||||||
-- @event on_player_jailed
|
-- @event on_player_jailed
|
||||||
@@ -64,10 +62,10 @@ end
|
|||||||
-- @tparam LuaPlayer player the player to check if they are in jail
|
-- @tparam LuaPlayer player the player to check if they are in jail
|
||||||
-- @treturn boolean whether the player is currently in jail
|
-- @treturn boolean whether the player is currently in jail
|
||||||
function Jail.is_jailed(player)
|
function Jail.is_jailed(player)
|
||||||
return has_role(valid_player(player), "Jail")
|
return Roles.player_has_role(valid_player(player), jail_role)
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Moves a player to jail and removes all other roles
|
--- Moves a player to jail, which suppresses all of their other roles
|
||||||
-- @tparam LuaPlayer player the player who will be jailed
|
-- @tparam LuaPlayer player the player who will be jailed
|
||||||
-- @tparam string by_player_name the name of the player who is doing the jailing
|
-- @tparam string by_player_name the name of the player who is doing the jailing
|
||||||
-- @tparam[opt='Non given.'] string reason the reason that the player is being jailed
|
-- @tparam[opt='Non given.'] string reason the reason that the player is being jailed
|
||||||
@@ -79,8 +77,7 @@ function Jail.jail_player(player, by_player_name, reason)
|
|||||||
|
|
||||||
reason = reason or "Non given."
|
reason = reason or "Non given."
|
||||||
|
|
||||||
if has_role(player, "Jail") then return end
|
if Roles.player_has_role(player, jail_role) then return end
|
||||||
local roles = get_roles(player)
|
|
||||||
|
|
||||||
player.walking_state = { walking = false, direction = player.walking_state.direction }
|
player.walking_state = { walking = false, direction = player.walking_state.direction }
|
||||||
player.riding_state = { acceleration = defines.riding.acceleration.nothing, direction = player.riding_state.direction }
|
player.riding_state = { acceleration = defines.riding.acceleration.nothing, direction = player.riding_state.direction }
|
||||||
@@ -89,16 +86,14 @@ function Jail.jail_player(player, by_player_name, reason)
|
|||||||
player.picking_state = false
|
player.picking_state = false
|
||||||
player.repair_state = { repairing = false, position = player.repair_state.position }
|
player.repair_state = { repairing = false, position = player.repair_state.position }
|
||||||
|
|
||||||
unassign_roles(player, roles, by_player_name, nil, true)
|
Roles.assign_player(player, jail_role, by_player_name, true)
|
||||||
assign_roles(player, "Jail", by_player_name, nil, true)
|
|
||||||
assign_roles(player, roles, by_player_name, nil, true)
|
|
||||||
|
|
||||||
event_emit(Jail.events.on_player_jailed, player, by_player_name, reason)
|
event_emit(Jail.events.on_player_jailed, player, by_player_name, reason)
|
||||||
|
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Moves a player out of jail and restores all roles previously removed
|
--- Moves a player out of jail, which restores all of their other roles
|
||||||
-- @tparam LuaPlayer player the player that will be unjailed
|
-- @tparam LuaPlayer player the player that will be unjailed
|
||||||
-- @tparam string by_player_name the name of the player that is doing the unjail
|
-- @tparam string by_player_name the name of the player that is doing the unjail
|
||||||
-- @treturn boolean whether the player was unjailed successfully
|
-- @treturn boolean whether the player was unjailed successfully
|
||||||
@@ -107,9 +102,9 @@ function Jail.unjail_player(player, by_player_name)
|
|||||||
if not player then return end
|
if not player then return end
|
||||||
if not by_player_name then return end
|
if not by_player_name then return end
|
||||||
|
|
||||||
if not has_role(player, "Jail") then return end
|
if not Roles.player_has_role(player, jail_role) then return end
|
||||||
|
|
||||||
unassign_roles(player, "Jail", by_player_name, nil, true)
|
Roles.unassign_player(player, jail_role, by_player_name, true)
|
||||||
|
|
||||||
event_emit(Jail.events.on_player_unjailed, player, by_player_name)
|
event_emit(Jail.events.on_player_unjailed, player, by_player_name)
|
||||||
|
|
||||||
|
|||||||
@@ -33,11 +33,7 @@ for _, config_key in ipairs{ "always_protected_names", "always_protected_types",
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Require roles if a permission is assigned in the config
|
local Roles = require("modules/exp_roles")
|
||||||
local Roles --- @type table<string, any>
|
|
||||||
if config.ignore_permission then
|
|
||||||
Roles = require("modules.exp_legacy.expcore.roles") --- @dep expcore.roles
|
|
||||||
end
|
|
||||||
|
|
||||||
----- Storage Variables -----
|
----- Storage Variables -----
|
||||||
--- Variables stored in the global table
|
--- Variables stored in the global table
|
||||||
@@ -159,7 +155,7 @@ Event.add(defines.events.on_pre_player_mined_item, function(event)
|
|||||||
-- Check if the player should be ignored
|
-- Check if the player should be ignored
|
||||||
if config.ignore_admins and player.admin then return end
|
if config.ignore_admins and player.admin then return end
|
||||||
if entity.last_user == nil or entity.last_user.index == player.index then return end
|
if entity.last_user == nil or entity.last_user.index == player.index then return end
|
||||||
if config.ignore_permission and Roles.player_allowed(player, config.ignore_permission) then return end
|
if config.ignore_permission and Roles.player_has_permission(player, config.ignore_permission) then return end
|
||||||
|
|
||||||
-- Check if the entity is protected
|
-- Check if the entity is protected
|
||||||
if EntityProtection.is_entity_protected(entity)
|
if EntityProtection.is_entity_protected(entity)
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ local Commands = require("modules/exp_commands")
|
|||||||
local PlayerData = require("modules.exp_legacy.expcore.player_data") --- @dep expcore.player_data
|
local PlayerData = require("modules.exp_legacy.expcore.player_data") --- @dep expcore.player_data
|
||||||
local CustomMessages = PlayerData.Settings:combine("JoinMessage")
|
local CustomMessages = PlayerData.Settings:combine("JoinMessage")
|
||||||
CustomMessages:set_metadata{
|
CustomMessages:set_metadata{
|
||||||
permission = "command/join-message",
|
permission = "exp_scenario.command.set_join_message",
|
||||||
}
|
}
|
||||||
|
|
||||||
--- When a players data loads show their message
|
--- When a players data loads show their message
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ local config = require("modules.exp_legacy.config.preset_player_quickbar") --- @
|
|||||||
local PlayerData = require("modules.exp_legacy.expcore.player_data") --- @dep expcore.player_data
|
local PlayerData = require("modules.exp_legacy.expcore.player_data") --- @dep expcore.player_data
|
||||||
local PlayerFilters = PlayerData.Settings:combine("QuickbarFilters")
|
local PlayerFilters = PlayerData.Settings:combine("QuickbarFilters")
|
||||||
PlayerFilters:set_metadata{
|
PlayerFilters:set_metadata{
|
||||||
permission = "command/save-quickbar",
|
permission = "exp_scenario.command.save_quickbar",
|
||||||
stringify = function(value)
|
stringify = function(value)
|
||||||
if not value then return "No filters set" end
|
if not value then return "No filters set" end
|
||||||
local count = 0
|
local count = 0
|
||||||
|
|||||||
@@ -4,17 +4,17 @@
|
|||||||
]]
|
]]
|
||||||
|
|
||||||
local Commands = require("modules/exp_commands")
|
local Commands = require("modules/exp_commands")
|
||||||
local Roles = require("modules.exp_legacy.expcore.roles") --- @dep expcore.roles
|
local Roles = require("modules/exp_roles")
|
||||||
|
|
||||||
--- Stores the tag for a player
|
--- Stores the tag for a player
|
||||||
local PlayerData = require("modules.exp_legacy.expcore.player_data") --- @dep expcore.player_data
|
local PlayerData = require("modules.exp_legacy.expcore.player_data") --- @dep expcore.player_data
|
||||||
local PlayerTags = PlayerData.Settings:combine("Tag")
|
local PlayerTags = PlayerData.Settings:combine("Tag")
|
||||||
local PlayerTagColors = PlayerData.Settings:combine("TagColor")
|
local PlayerTagColors = PlayerData.Settings:combine("TagColor")
|
||||||
PlayerTags:set_metadata{
|
PlayerTags:set_metadata{
|
||||||
permission = "command/tag",
|
permission = "exp_scenario.command.tag",
|
||||||
}
|
}
|
||||||
PlayerTagColors:set_metadata{
|
PlayerTagColors:set_metadata{
|
||||||
permission = "command/tag-color",
|
permission = "exp_scenario.command.tag_color",
|
||||||
}
|
}
|
||||||
|
|
||||||
local set_tag = function(player, tag, color)
|
local set_tag = function(player, tag, color)
|
||||||
@@ -72,7 +72,7 @@ Commands.new("tag-clear", "Clears your tag. Or another player if you are admin."
|
|||||||
if other_player == player then
|
if other_player == player then
|
||||||
-- No player given so removes your tag
|
-- No player given so removes your tag
|
||||||
PlayerTags:remove(other_player)
|
PlayerTags:remove(other_player)
|
||||||
elseif Roles.player_allowed(player, "command/clear-tag/always") then
|
elseif Roles.player_has_permission(player, "exp_scenario.command.tag_clear.always") then
|
||||||
-- Player given and user is admin so clears that player's tag
|
-- Player given and user is admin so clears that player's tag
|
||||||
PlayerTags:remove(other_player)
|
PlayerTags:remove(other_player)
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
local Gui = require("modules/exp_gui")
|
|
||||||
local Roles = require("modules.exp_legacy.expcore.roles")
|
|
||||||
local Event = require("modules/exp_legacy/utils/event")
|
|
||||||
|
|
||||||
--- @diagnostic disable: access-invisible
|
|
||||||
Event.add(Roles.events.on_role_assigned, Gui._ensure_consistency)
|
|
||||||
Event.add(Roles.events.on_role_unassigned, Gui._ensure_consistency)
|
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
]]
|
]]
|
||||||
|
|
||||||
local Gui = require("modules/exp_gui")
|
local Gui = require("modules/exp_gui")
|
||||||
local Roles = require("modules.exp_legacy.expcore.roles") --- @dep expcore.roles
|
local Roles = require("modules/exp_roles")
|
||||||
local Event = require("modules/exp_legacy/utils/event") --- @dep utils.event
|
local Event = require("modules/exp_legacy/utils/event") --- @dep utils.event
|
||||||
local format_number = require("util").format_number --- @dep util
|
local format_number = require("util").format_number --- @dep util
|
||||||
local config = require("modules.exp_legacy.config.vlayer") --- @dep config.vlayer
|
local config = require("modules.exp_legacy.config.vlayer") --- @dep config.vlayer
|
||||||
@@ -457,7 +457,7 @@ local vlayer_control_set = Gui.define("vlayer_control_set")
|
|||||||
vlayer_gui_control_see(disp)
|
vlayer_gui_control_see(disp)
|
||||||
local b = vlayer_gui_control_build(disp)
|
local b = vlayer_gui_control_build(disp)
|
||||||
local r = vlayer_gui_control_remove(disp)
|
local r = vlayer_gui_control_remove(disp)
|
||||||
local v = Roles.player_allowed(player, "gui/vlayer-edit")
|
local v = Roles.player_has_permission(player, "exp_scenario.gui.vlayer_edit")
|
||||||
b.visible = v
|
b.visible = v
|
||||||
r.visible = v
|
r.visible = v
|
||||||
|
|
||||||
@@ -484,22 +484,21 @@ Gui.toolbar.create_button{
|
|||||||
sprite = "entity/solar-panel",
|
sprite = "entity/solar-panel",
|
||||||
tooltip = { "vlayer.main-tooltip" },
|
tooltip = { "vlayer.main-tooltip" },
|
||||||
visible = function(player, element)
|
visible = function(player, element)
|
||||||
return Roles.player_allowed(player, "gui/vlayer")
|
return Roles.player_has_permission(player, "exp_scenario.gui.vlayer")
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|
||||||
--- Update the visibly of the buttons based on a players roles
|
--- Update the visibly of the buttons based on a players roles
|
||||||
local function role_update_event(event)
|
local function role_update_event(event)
|
||||||
local player = game.players[event.player_index]
|
local player = game.players[event.player_index]
|
||||||
local visible = Roles.player_allowed(player, "gui/vlayer-edit")
|
local visible = Roles.player_has_permission(player, "exp_scenario.gui.vlayer_edit")
|
||||||
local container = Gui.get_left_element(vlayer_container, player)
|
local container = Gui.get_left_element(vlayer_container, player)
|
||||||
local disp = container.frame["vlayer_st_2"].disp.table
|
local disp = container.frame["vlayer_st_2"].disp.table
|
||||||
disp[vlayer_gui_control_build.name].visible = visible
|
disp[vlayer_gui_control_build.name].visible = visible
|
||||||
disp[vlayer_gui_control_remove.name].visible = visible
|
disp[vlayer_gui_control_remove.name].visible = visible
|
||||||
end
|
end
|
||||||
|
|
||||||
Event.add(Roles.events.on_role_assigned, role_update_event)
|
Event.add(Roles.events.on_player_roles_changed, role_update_event)
|
||||||
Event.add(Roles.events.on_role_unassigned, role_update_event)
|
|
||||||
|
|
||||||
Event.on_nth_tick(config.update_tick_gui, function(_)
|
Event.on_nth_tick(config.update_tick_gui, function(_)
|
||||||
local stats = vlayer.get_statistics()
|
local stats = vlayer.get_statistics()
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ local Gui = require("modules/exp_gui")
|
|||||||
local Datastore = require("modules.exp_legacy.expcore.datastore") --- @dep expcore.datastore
|
local Datastore = require("modules.exp_legacy.expcore.datastore") --- @dep expcore.datastore
|
||||||
local Storage = require("modules/exp_util/storage")
|
local Storage = require("modules/exp_util/storage")
|
||||||
local Event = require("modules/exp_legacy/utils/event") --- @dep utils.event
|
local Event = require("modules/exp_legacy/utils/event") --- @dep utils.event
|
||||||
local Roles = require("modules.exp_legacy.expcore.roles") --- @dep expcore.roles
|
local Roles = require("modules/exp_roles")
|
||||||
local Colors = require("modules/exp_util/include/color")
|
local Colors = require("modules/exp_util/include/color")
|
||||||
local config = require("modules.exp_legacy.config.gui.warps") --- @dep config.gui.warps
|
local config = require("modules.exp_legacy.config.gui.warps") --- @dep config.gui.warps
|
||||||
local Warps = require("modules.exp_legacy.modules.control.warps") --- @dep modules.control.warps
|
local Warps = require("modules.exp_legacy.modules.control.warps") --- @dep modules.control.warps
|
||||||
@@ -68,8 +68,8 @@ local function check_player_permissions(player, action, warp)
|
|||||||
return true
|
return true
|
||||||
elseif action_config == "admin" then
|
elseif action_config == "admin" then
|
||||||
return player.admin
|
return player.admin
|
||||||
elseif action_config == "expcore.roles" then
|
elseif action_config == "exp_roles" then
|
||||||
return Roles.player_allowed(player, config["expcore_roles_" .. action])
|
return Roles.player_has_permission(player, config["exp_roles_" .. action])
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Return false as all other conditions have not been met
|
-- Return false as all other conditions have not been met
|
||||||
@@ -708,7 +708,7 @@ Gui.toolbar.create_button{
|
|||||||
sprite = config.default_icon.type .. "/" .. config.default_icon.name,
|
sprite = config.default_icon.type .. "/" .. config.default_icon.name,
|
||||||
tooltip = { "warp-list.main-tooltip" },
|
tooltip = { "warp-list.main-tooltip" },
|
||||||
visible = function(player, element)
|
visible = function(player, element)
|
||||||
return Roles.player_allowed(player, "gui/warp-list")
|
return Roles.player_has_permission(player, "exp_scenario.gui.warp_list")
|
||||||
end
|
end
|
||||||
}:on_click(function(def, player, element)
|
}:on_click(function(def, player, element)
|
||||||
-- Set gui keep open state for player that clicked the button: true if visible, false if invisible
|
-- Set gui keep open state for player that clicked the button: true if visible, false if invisible
|
||||||
@@ -885,8 +885,7 @@ local function role_update_event(event)
|
|||||||
add_new_warp_element.visible = allow_add_warp
|
add_new_warp_element.visible = allow_add_warp
|
||||||
end
|
end
|
||||||
|
|
||||||
Event.add(Roles.events.on_role_assigned, role_update_event)
|
Event.add(Roles.events.on_player_roles_changed, role_update_event)
|
||||||
Event.add(Roles.events.on_role_unassigned, role_update_event)
|
|
||||||
|
|
||||||
--- When a chart tag is removed or edited make sure it is not one that belongs to a warp
|
--- When a chart tag is removed or edited make sure it is not one that belongs to a warp
|
||||||
local function maintain_tag(event)
|
local function maintain_tag(event)
|
||||||
|
|||||||
@@ -1,26 +1,28 @@
|
|||||||
--[[-- Command Authorities - Roles
|
--[[-- Command Authorities - Roles
|
||||||
Adds a permission authority for exp roles
|
Adds a permission authority which checks the clusterio permission for a command
|
||||||
]]
|
]]
|
||||||
|
|
||||||
local Commands = require("modules/exp_commands")
|
local Commands = require("modules/exp_commands")
|
||||||
local add, allow, deny = Commands.add_permission_authority, Commands.status.success, Commands.status.unauthorised
|
local add, allow, deny = Commands.add_permission_authority, Commands.status.success, Commands.status.unauthorised
|
||||||
|
|
||||||
local Roles = require("modules/exp_legacy/expcore/roles")
|
local Roles = require("modules/exp_roles")
|
||||||
local player_allowed = Roles.player_allowed
|
local player_has_permission = Roles.player_has_permission
|
||||||
|
|
||||||
local authorities = {}
|
local authorities = {}
|
||||||
|
|
||||||
--- If a command has the flag "character_only" then the command can only be used outside of remote view
|
--- Every command requires the permission `exp_scenario.command.<name>`, with
|
||||||
|
--- hyphens replaced by underscores, see permissions.ts for their definitions
|
||||||
authorities.exp_permission =
|
authorities.exp_permission =
|
||||||
add(function(player, command)
|
add(function(player, command)
|
||||||
if not player_allowed(player, command.flags.exp_permission or ("command/" .. command.name)) then
|
local permission = "exp_scenario.command." .. command.name:gsub("%-", "_")
|
||||||
|
if not player_has_permission(player, permission) then
|
||||||
return deny{ "exp-commands-authorities_role.deny" }
|
return deny{ "exp-commands-authorities_role.deny" }
|
||||||
else
|
else
|
||||||
return allow()
|
return allow()
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
Roles.define_flag_trigger("is_system", function(player, state)
|
Roles.define_permission_trigger("exp_scenario.player.system_commands", function(player, state)
|
||||||
if state then
|
if state then
|
||||||
Commands.unlock_system_commands(player.name)
|
Commands.unlock_system_commands(player.name)
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -8,6 +8,6 @@ local add_static, add_dynamic = Commands.add_rcon_static, Commands.add_rcon_dyna
|
|||||||
add_static("Gui", require("modules/exp_gui"))
|
add_static("Gui", require("modules/exp_gui"))
|
||||||
|
|
||||||
add_static("Group", require("modules.exp_legacy.expcore.permission_groups"))
|
add_static("Group", require("modules.exp_legacy.expcore.permission_groups"))
|
||||||
add_static("Roles", require("modules.exp_legacy.expcore.roles"))
|
add_static("Roles", require("modules/exp_roles"))
|
||||||
add_static("Datastore", require("modules.exp_legacy.expcore.datastore"))
|
add_static("Datastore", require("modules.exp_legacy.expcore.datastore"))
|
||||||
add_static("External", require("modules.exp_legacy.expcore.external"))
|
add_static("External", require("modules.exp_legacy.expcore.external"))
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
--[[-- Command Types - Roles
|
--[[-- Command Types - Roles
|
||||||
The data types that are used with exp_roles
|
The data types that are used with exp_roles
|
||||||
A lower role index indicates it is more privileged
|
A lower role index indicates it is more privileged
|
||||||
@@ -11,28 +10,42 @@ Adds parsers for:
|
|||||||
lower_role_player_alive
|
lower_role_player_alive
|
||||||
]]
|
]]
|
||||||
|
|
||||||
|
local ExpUtil = require("modules/exp_util")
|
||||||
|
local auto_complete = ExpUtil.auto_complete
|
||||||
|
|
||||||
local Commands = require("modules/exp_commands")
|
local Commands = require("modules/exp_commands")
|
||||||
local add, parse = Commands.add_data_type, Commands.parse_input
|
local add, parse = Commands.add_data_type, Commands.parse_input
|
||||||
local valid, invalid = Commands.status.success, Commands.status.invalid_input
|
local valid, invalid = Commands.status.success, Commands.status.invalid_input
|
||||||
|
|
||||||
local Roles = require("modules.exp_legacy.expcore.roles")
|
local Roles = require("modules/exp_roles")
|
||||||
local highest_role = Roles.get_player_highest_role
|
local player_outranks = Roles.player_outranks
|
||||||
|
|
||||||
local types = {} --- @class (partial) Commands.types
|
local types = {} --- @class (partial) Commands.types
|
||||||
|
|
||||||
--- A role defined by exp roles
|
--- A role known to exp roles, matched on its name
|
||||||
types.role = add("role", Commands.types.key_of(Roles.config.roles))
|
types.role =
|
||||||
|
add("role", function(input)
|
||||||
|
local names = {}
|
||||||
|
for index, role in ipairs(Roles.get_roles()) do
|
||||||
|
names[index] = role.name
|
||||||
|
end
|
||||||
|
|
||||||
|
local name = auto_complete(names, input)
|
||||||
|
if name == nil then
|
||||||
|
return invalid{ "exp-commands-parse.string-options", table.concat(names, ", ") }
|
||||||
|
else
|
||||||
|
return valid(Roles.get_role(name))
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
--- A role which is lower than the players highest role
|
--- A role which is lower than the players highest role
|
||||||
types.lower_role =
|
types.lower_role =
|
||||||
add("lower_role", function(input, player)
|
add("lower_role", function(input, player)
|
||||||
local success, status, result = parse(input, player, types.role)
|
local success, status, result = parse(input, player, types.role)
|
||||||
if not success then return status, result end
|
if not success then return status, result end
|
||||||
--- @cast result any TODO role is not a defined type
|
--- @cast result ExpRoles.Role
|
||||||
|
|
||||||
local player_highest = highest_role(player)
|
if not Roles.player_outranks_role(player, result) then
|
||||||
local is_root = Roles.config.internal.root == player_highest.name
|
|
||||||
if not is_root and player_highest.index >= result.index then
|
|
||||||
return invalid{ "exp-commands-parse_role.lower-role" }
|
return invalid{ "exp-commands-parse_role.lower-role" }
|
||||||
else
|
else
|
||||||
return valid(result)
|
return valid(result)
|
||||||
@@ -46,10 +59,7 @@ types.lower_role_player =
|
|||||||
if not success then return status, result end
|
if not success then return status, result end
|
||||||
--- @cast result LuaPlayer
|
--- @cast result LuaPlayer
|
||||||
|
|
||||||
local other_highest = highest_role(result)
|
if not player_outranks(player, result) then
|
||||||
local player_highest = highest_role(player)
|
|
||||||
local is_root = Roles.config.internal.root == player_highest.name
|
|
||||||
if not is_root and player_highest.index >= other_highest.index then
|
|
||||||
return invalid{ "exp-commands-parse_role.lower-role-player" }
|
return invalid{ "exp-commands-parse_role.lower-role-player" }
|
||||||
else
|
else
|
||||||
return valid(result)
|
return valid(result)
|
||||||
@@ -63,10 +73,7 @@ types.lower_role_player_online =
|
|||||||
if not success then return status, result end
|
if not success then return status, result end
|
||||||
--- @cast result LuaPlayer
|
--- @cast result LuaPlayer
|
||||||
|
|
||||||
local other_highest = highest_role(result)
|
if not player_outranks(player, result) then
|
||||||
local player_highest = highest_role(player)
|
|
||||||
local is_root = Roles.config.internal.root == player_highest.name
|
|
||||||
if not is_root and player_highest.index >= other_highest.index then
|
|
||||||
return invalid{ "exp-commands-parse_role.lower-role-player" }
|
return invalid{ "exp-commands-parse_role.lower-role-player" }
|
||||||
else
|
else
|
||||||
return valid(result)
|
return valid(result)
|
||||||
@@ -80,10 +87,7 @@ types.lower_role_player_alive =
|
|||||||
if not success then return status, result end
|
if not success then return status, result end
|
||||||
--- @cast result LuaPlayer
|
--- @cast result LuaPlayer
|
||||||
|
|
||||||
local other_highest = highest_role(result)
|
if not player_outranks(player, result) then
|
||||||
local player_highest = highest_role(player)
|
|
||||||
local is_root = Roles.config.internal.root == player_highest.name
|
|
||||||
if not is_root and player_highest.index >= other_highest.index then
|
|
||||||
return invalid{ "exp-commands-parse_role.lower-role-player" }
|
return invalid{ "exp-commands-parse_role.lower-role-player" }
|
||||||
else
|
else
|
||||||
return valid(result)
|
return valid(result)
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ Adds a command that allows players to kill themselves and others
|
|||||||
|
|
||||||
local Commands = require("modules/exp_commands")
|
local Commands = require("modules/exp_commands")
|
||||||
|
|
||||||
local Roles = require("modules.exp_legacy.expcore.roles") --- @dep expcore.roles
|
local Roles = require("modules/exp_roles")
|
||||||
local highest_role = Roles.get_player_highest_role
|
local player_outranks = Roles.player_outranks
|
||||||
|
|
||||||
--- Kills yourself or another player.
|
--- Kills yourself or another player.
|
||||||
Commands.new("kill", { "exp-commands_kill.description" })
|
Commands.new("kill", { "exp-commands_kill.description" })
|
||||||
@@ -20,7 +20,7 @@ Commands.new("kill", { "exp-commands_kill.description" })
|
|||||||
if other_player == nil then
|
if other_player == nil then
|
||||||
-- Can only be nil if the target is the player and they are already dead
|
-- Can only be nil if the target is the player and they are already dead
|
||||||
return Commands.status.error{ "exp-commands_kill.already-dead" }
|
return Commands.status.error{ "exp-commands_kill.already-dead" }
|
||||||
elseif (other_player == player) or (highest_role(player).index < highest_role(other_player).index) then
|
elseif other_player == player or player_outranks(player, other_player) then
|
||||||
-- You can always kill yourself or can kill lower role players
|
-- You can always kill yourself or can kill lower role players
|
||||||
if script.active_mods["space-age"] then
|
if script.active_mods["space-age"] then
|
||||||
other_player.surface.create_entity{ name = "lightning", position = { other_player.position.x, other_player.position.y - 16 }, target = other_player.character }
|
other_player.surface.create_entity{ name = "lightning", position = { other_player.position.x, other_player.position.y - 16 }, target = other_player.character }
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ local expand_area = AABB.expand
|
|||||||
local Commands = require("modules/exp_commands")
|
local Commands = require("modules/exp_commands")
|
||||||
local format_player_name = Commands.format_player_name_locale
|
local format_player_name = Commands.format_player_name_locale
|
||||||
|
|
||||||
local Roles = require("modules.exp_legacy.expcore.roles") --- @dep expcore.roles
|
local Roles = require("modules/exp_roles")
|
||||||
local EntityProtection = require("modules.exp_legacy.modules.control.protection") --- @dep modules.control.protection
|
local EntityProtection = require("modules.exp_legacy.modules.control.protection") --- @dep modules.control.protection
|
||||||
|
|
||||||
local format_string = string.format
|
local format_string = string.format
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ local Commands = require("modules/exp_commands")
|
|||||||
local format_player_name = Commands.format_player_name_locale
|
local format_player_name = Commands.format_player_name_locale
|
||||||
local parse_input = Commands.parse_input
|
local parse_input = Commands.parse_input
|
||||||
|
|
||||||
local Roles = require("modules.exp_legacy.expcore.roles")
|
local Roles = require("modules/exp_roles")
|
||||||
local player_has_flag = Roles.player_has_flag
|
local player_has_permission = Roles.player_has_permission
|
||||||
|
|
||||||
local Reports = require("modules.exp_legacy.modules.control.reports") --- @dep modules.control.reports
|
local Reports = require("modules.exp_legacy.modules.control.reports") --- @dep modules.control.reports
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ local function reportable_player(input, player)
|
|||||||
if not success then return status, result end
|
if not success then return status, result end
|
||||||
--- @cast result LuaPlayer
|
--- @cast result LuaPlayer
|
||||||
|
|
||||||
if player_has_flag(input, "report-immune") then
|
if player_has_permission(input, "exp_scenario.bypass.reports") then
|
||||||
return Commands.status.invalid_input{ "exp-commands_reports.player-immune" }
|
return Commands.status.invalid_input{ "exp-commands_reports.player-immune" }
|
||||||
elseif player == input then
|
elseif player == input then
|
||||||
return Commands.status.invalid_input{ "exp-commands_reports.self-report" }
|
return Commands.status.invalid_input{ "exp-commands_reports.self-report" }
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ local Commands = require("modules/exp_commands")
|
|||||||
local format_player_name = Commands.format_player_name_locale
|
local format_player_name = Commands.format_player_name_locale
|
||||||
local format_text = Commands.format_rich_text_color_locale
|
local format_text = Commands.format_rich_text_color_locale
|
||||||
|
|
||||||
local Roles = require("modules.exp_legacy.expcore.roles") --- @dep expcore.roles
|
local Roles = require("modules/exp_roles")
|
||||||
local get_roles_ordered = Roles.get_roles_ordered
|
local get_roles = Roles.get_roles
|
||||||
local get_player_roles = Roles.get_player_roles
|
local get_player_roles = Roles.get_player_roles
|
||||||
|
|
||||||
--- Assigns a role to a player
|
--- Assigns a role to a player
|
||||||
@@ -18,7 +18,7 @@ Commands.new("assign-role", { "exp-commands_roles.description-assign" })
|
|||||||
:add_flags{ "admin_only" }
|
:add_flags{ "admin_only" }
|
||||||
:register(function(player, other_player, role)
|
:register(function(player, other_player, role)
|
||||||
--- @cast other_player LuaPlayer
|
--- @cast other_player LuaPlayer
|
||||||
--- @cast role any -- TODO
|
--- @cast role ExpRoles.Role
|
||||||
Roles.assign_player(other_player, role, player.name)
|
Roles.assign_player(other_player, role, player.name)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ Commands.new("unassign-role", { "exp-commands_roles.description-unassign" })
|
|||||||
:add_flags{ "admin_only" }
|
:add_flags{ "admin_only" }
|
||||||
:register(function(player, other_player, role)
|
:register(function(player, other_player, role)
|
||||||
--- @cast other_player LuaPlayer
|
--- @cast other_player LuaPlayer
|
||||||
--- @cast role any -- TODO
|
--- @cast role ExpRoles.Role
|
||||||
Roles.unassign_player(other_player, role, player.name)
|
Roles.unassign_player(other_player, role, player.name)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
@@ -40,7 +40,7 @@ Commands.new("get-roles", { "exp-commands_roles.description-get" })
|
|||||||
:add_aliases{ "roles" }
|
:add_aliases{ "roles" }
|
||||||
:register(function(player, other_player)
|
:register(function(player, other_player)
|
||||||
--- @cast other_player LuaPlayer?
|
--- @cast other_player LuaPlayer?
|
||||||
local roles = get_roles_ordered()
|
local roles = get_roles()
|
||||||
local roles_formatted = { "" } --- @type LocalisedString
|
local roles_formatted = { "" } --- @type LocalisedString
|
||||||
local response = { "exp-commands_roles.list-roles", roles_formatted } --[[@as LocalisedString]]
|
local response = { "exp-commands_roles.list-roles", roles_formatted } --[[@as LocalisedString]]
|
||||||
if other_player then
|
if other_player then
|
||||||
@@ -50,7 +50,7 @@ Commands.new("get-roles", { "exp-commands_roles.description-get" })
|
|||||||
end
|
end
|
||||||
|
|
||||||
for index, role in ipairs(roles) do
|
for index, role in ipairs(roles) do
|
||||||
local role_name = format_text(role.name, role.custom_color or Commands.color.white)
|
local role_name = format_text(role.name, role.color or Commands.color.white)
|
||||||
roles_formatted[index + 1] = { "exp-commands_roles.list-element", role_name }
|
roles_formatted[index + 1] = { "exp-commands_roles.list-element", role_name }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ local teleport_player = ExpUtil.teleport_player
|
|||||||
|
|
||||||
local Commands = require("modules/exp_commands")
|
local Commands = require("modules/exp_commands")
|
||||||
|
|
||||||
local Roles = require("modules.exp_legacy.expcore.roles") --- @dep expcore.roles
|
local Roles = require("modules/exp_roles")
|
||||||
local player_allowed = Roles.player_allowed
|
local player_has_permission = Roles.player_has_permission
|
||||||
|
|
||||||
--- @class ExpCommands_Teleport.commands
|
--- @class ExpCommands_Teleport.commands
|
||||||
local commands = {}
|
local commands = {}
|
||||||
@@ -85,7 +85,7 @@ commands.spawn = Commands.new("spawn", { "exp-commands_teleport.description-spaw
|
|||||||
if not teleport_player(player, game.surfaces.nauvis, { 0, 0 }, "dismount") then
|
if not teleport_player(player, game.surfaces.nauvis, { 0, 0 }, "dismount") then
|
||||||
return Commands.status.error{ "exp-commands_teleport.unavailable" }
|
return Commands.status.error{ "exp-commands_teleport.unavailable" }
|
||||||
end
|
end
|
||||||
elseif player_allowed(player, "command/spawn/always") then
|
elseif player_has_permission(player, "exp_scenario.command.spawn.always") then
|
||||||
if not teleport_player(other_player, game.surfaces.nauvis, { 0, 0 }, "dismount") then
|
if not teleport_player(other_player, game.surfaces.nauvis, { 0, 0 }, "dismount") then
|
||||||
return Commands.status.error{ "exp-commands_teleport.unavailable" }
|
return Commands.status.error{ "exp-commands_teleport.unavailable" }
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ add(require("modules/exp_scenario/control/pollution_grading"))
|
|||||||
add(require("modules/exp_scenario/control/protection_jail"))
|
add(require("modules/exp_scenario/control/protection_jail"))
|
||||||
add(require("modules/exp_scenario/control/report_jail"))
|
add(require("modules/exp_scenario/control/report_jail"))
|
||||||
add(require("modules/exp_scenario/control/research"))
|
add(require("modules/exp_scenario/control/research"))
|
||||||
|
add(require("modules/exp_scenario/control/roles"))
|
||||||
add(require("modules/exp_scenario/control/spawn_area"))
|
add(require("modules/exp_scenario/control/spawn_area"))
|
||||||
add(require("modules/exp_scenario/control/station_auto_name"))
|
add(require("modules/exp_scenario/control/station_auto_name"))
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ Various bonus related event handlers
|
|||||||
TODO Refactor this fully, this is temp to get it out of the player bonus gui file
|
TODO Refactor this fully, this is temp to get it out of the player bonus gui file
|
||||||
]]
|
]]
|
||||||
|
|
||||||
local Roles = require("modules/exp_legacy/expcore/roles")
|
local Roles = require("modules/exp_roles")
|
||||||
local config = require("modules/exp_legacy/config/bonus")
|
local config = require("modules/exp_legacy/config/bonus")
|
||||||
|
|
||||||
--- @param event EventData.on_force_created
|
--- @param event EventData.on_force_created
|
||||||
@@ -26,7 +26,7 @@ end
|
|||||||
--- @param event EventData.on_player_died
|
--- @param event EventData.on_player_died
|
||||||
local function fast_respawn(event)
|
local function fast_respawn(event)
|
||||||
local player = assert(game.get_player(event.player_index))
|
local player = assert(game.get_player(event.player_index))
|
||||||
if Roles.player_has_flag(player, "instant-respawn") then
|
if Roles.player_has_permission(player, "exp_scenario.player.instant_respawn") then
|
||||||
player.ticks_to_respawn = 120
|
player.ticks_to_respawn = 120
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
Adds auto replies to chat messages, as well as chat commands
|
Adds auto replies to chat messages, as well as chat commands
|
||||||
]]
|
]]
|
||||||
|
|
||||||
local Roles = require("modules.exp_legacy.expcore.roles")
|
local Roles = require("modules/exp_roles")
|
||||||
local config = require("modules.exp_legacy.config.chat_reply")
|
local config = require("modules.exp_legacy.config.chat_reply")
|
||||||
local prefix = config.command_prefix
|
local prefix = config.command_prefix
|
||||||
local prefix_len = string.len(prefix)
|
local prefix_len = string.len(prefix)
|
||||||
@@ -20,7 +20,7 @@ local function on_console_chat(event)
|
|||||||
-- Check if the player can chat commands
|
-- Check if the player can chat commands
|
||||||
local commands_allowed = true
|
local commands_allowed = true
|
||||||
if config.command_admin_only and not player.admin then commands_allowed = false end
|
if config.command_admin_only and not player.admin then commands_allowed = false end
|
||||||
if config.command_permission and not Roles.player_allowed(player, config.command_permission) then commands_allowed = false end
|
if config.command_permission and not Roles.player_has_permission(player, config.command_permission) then commands_allowed = false end
|
||||||
|
|
||||||
-- Check if a key word appears in the message
|
-- Check if a key word appears in the message
|
||||||
for key_word, reply in pairs(config.messages) do
|
for key_word, reply in pairs(config.messages) do
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ Log certain actions into a file when events are triggered
|
|||||||
]]
|
]]
|
||||||
|
|
||||||
local ExpUtil = require("modules/exp_util")
|
local ExpUtil = require("modules/exp_util")
|
||||||
local Roles = require("modules.exp_legacy.expcore.roles")
|
local Roles = require("modules/exp_roles")
|
||||||
local config = require("modules.exp_legacy.config.deconlog")
|
local config = require("modules.exp_legacy.config.deconlog")
|
||||||
|
|
||||||
local seconds_time_format = ExpUtil.format_time_factory{ format = "short", hours = true, minutes = true, seconds = true }
|
local seconds_time_format = ExpUtil.format_time_factory{ format = "short", hours = true, minutes = true, seconds = true }
|
||||||
@@ -79,7 +79,7 @@ end
|
|||||||
local function get_log_player(event)
|
local function get_log_player(event)
|
||||||
local player = assert(game.get_player(event.player_index))
|
local player = assert(game.get_player(event.player_index))
|
||||||
|
|
||||||
if Roles.player_has_flag(player, "deconlog-bypass") then
|
if Roles.player_has_permission(player, "exp_scenario.bypass.deconstruction_log") then
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ Makes trees which are marked for decon "decay" quickly to allow faster building
|
|||||||
|
|
||||||
local Gui = require("modules/exp_gui")
|
local Gui = require("modules/exp_gui")
|
||||||
local Async = require("modules/exp_util/async")
|
local Async = require("modules/exp_util/async")
|
||||||
local Roles = require("modules.exp_legacy.expcore.roles")
|
local Roles = require("modules/exp_roles")
|
||||||
|
|
||||||
local PlayerData = require("modules.exp_legacy.expcore.player_data")
|
local PlayerData = require("modules.exp_legacy.expcore.player_data")
|
||||||
local HasEnabledDecon = PlayerData.Settings:combine("HasEnabledDecon")
|
local HasEnabledDecon = PlayerData.Settings:combine("HasEnabledDecon")
|
||||||
@@ -57,9 +57,9 @@ local remove_trees_async =
|
|||||||
--- @param player LuaPlayer
|
--- @param player LuaPlayer
|
||||||
--- @return "fast" | "allow" | "disallow"
|
--- @return "fast" | "allow" | "disallow"
|
||||||
local function get_permission(player)
|
local function get_permission(player)
|
||||||
if Roles.player_allowed(player, "fast-tree-decon") then
|
if Roles.player_has_permission(player, "exp_scenario.decon.fast_trees") then
|
||||||
return HasEnabledDecon:get(player) and "fast" or "allow"
|
return HasEnabledDecon:get(player) and "fast" or "allow"
|
||||||
elseif Roles.player_allowed(player, "standard-decon") then
|
elseif Roles.player_has_permission(player, "exp_scenario.decon.standard") then
|
||||||
return "allow"
|
return "allow"
|
||||||
else
|
else
|
||||||
return "disallow"
|
return "disallow"
|
||||||
@@ -101,7 +101,7 @@ Gui.toolbar.create_button{
|
|||||||
tooltip = { "exp_fast-decon.tooltip-main" },
|
tooltip = { "exp_fast-decon.tooltip-main" },
|
||||||
auto_toggle = true,
|
auto_toggle = true,
|
||||||
visible = function(player, _)
|
visible = function(player, _)
|
||||||
return Roles.player_allowed(player, "fast-tree-decon")
|
return Roles.player_has_permission(player, "exp_scenario.decon.fast_trees")
|
||||||
end
|
end
|
||||||
}:on_click(function(def, player, element)
|
}:on_click(function(def, player, element)
|
||||||
local state = Gui.toolbar.get_button_toggled_state(def, player)
|
local state = Gui.toolbar.get_button_toggled_state(def, player)
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ Disable new players from having certain items in their inventory, most commonly
|
|||||||
]]
|
]]
|
||||||
|
|
||||||
local ExpUtil = require("modules/exp_util")
|
local ExpUtil = require("modules/exp_util")
|
||||||
local Roles = require("modules.exp_legacy.expcore.roles")
|
local Roles = require("modules/exp_roles")
|
||||||
local config = require("modules.exp_legacy.config.nukeprotect")
|
local config = require("modules.exp_legacy.config.nukeprotect")
|
||||||
|
|
||||||
--- Check all items in the given inventory
|
--- Check all items in the given inventory
|
||||||
@@ -12,7 +12,7 @@ local config = require("modules.exp_legacy.config.nukeprotect")
|
|||||||
--- @param banned_items string[]
|
--- @param banned_items string[]
|
||||||
local function check_items(player, type, banned_items)
|
local function check_items(player, type, banned_items)
|
||||||
-- If the player has perms to be ignored, then they should be
|
-- If the player has perms to be ignored, then they should be
|
||||||
if config.ignore_permission and Roles.player_allowed(player, config.ignore_permission) then return end
|
if config.ignore_permission and Roles.player_has_permission(player, config.ignore_permission) then return end
|
||||||
if config.ignore_admins and player.admin then return end
|
if config.ignore_admins and player.admin then return end
|
||||||
|
|
||||||
local items = {} --- @type LuaItemStack[]
|
local items = {} --- @type LuaItemStack[]
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
--[[-- Control - Roles
|
||||||
|
Applies the in game effects of the player permissions defined by the scenario
|
||||||
|
]]
|
||||||
|
|
||||||
|
local Gui = require("modules/exp_gui")
|
||||||
|
local Roles = require("modules/exp_roles")
|
||||||
|
|
||||||
|
Roles.define_permission_trigger("exp_scenario.player.admin", function(player, state)
|
||||||
|
player.admin = state
|
||||||
|
end)
|
||||||
|
|
||||||
|
Roles.define_permission_trigger("exp_scenario.player.spectator", function(player, state)
|
||||||
|
player.spectator = state
|
||||||
|
end)
|
||||||
|
|
||||||
|
return {
|
||||||
|
events = {
|
||||||
|
--- @diagnostic disable-next-line: access-invisible
|
||||||
|
[Roles.events.on_player_roles_changed] = Gui._ensure_consistency,
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,7 +3,7 @@ Adds a config menu for setting autofill of placed entities
|
|||||||
]]
|
]]
|
||||||
|
|
||||||
local Gui = require("modules/exp_gui")
|
local Gui = require("modules/exp_gui")
|
||||||
local Roles = require("modules.exp_legacy.expcore.roles")
|
local Roles = require("modules/exp_roles")
|
||||||
local config = require("modules.exp_legacy.config.gui.autofill")
|
local config = require("modules.exp_legacy.config.gui.autofill")
|
||||||
local FlyingText = require("modules/exp_util/flying_text")
|
local FlyingText = require("modules/exp_util/flying_text")
|
||||||
|
|
||||||
@@ -330,7 +330,7 @@ Gui.toolbar.create_button{
|
|||||||
sprite = config.icon,
|
sprite = config.icon,
|
||||||
tooltip = { "exp-gui_autofill.tooltip-main" },
|
tooltip = { "exp-gui_autofill.tooltip-main" },
|
||||||
visible = function(player, element)
|
visible = function(player, element)
|
||||||
return Roles.player_allowed(player, "gui/autofill")
|
return Roles.player_has_permission(player, "exp_scenario.gui.autofill")
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ Adds a Gui which creates an selection planner to insert modules into buildings
|
|||||||
|
|
||||||
local Gui = require("modules/exp_gui")
|
local Gui = require("modules/exp_gui")
|
||||||
local AABB = require("modules/exp_util/aabb")
|
local AABB = require("modules/exp_util/aabb")
|
||||||
local Roles = require("modules/exp_legacy/expcore/roles")
|
local Roles = require("modules/exp_roles")
|
||||||
|
|
||||||
local Selection = require("modules/exp_util/selection")
|
local Selection = require("modules/exp_util/selection")
|
||||||
local SelectArea = Selection.connect("ModuleArea")
|
local SelectArea = Selection.connect("ModuleArea")
|
||||||
@@ -259,7 +259,7 @@ Gui.toolbar.create_button{
|
|||||||
sprite = "item/productivity-module-3",
|
sprite = "item/productivity-module-3",
|
||||||
tooltip = { "exp-gui_module-inserter.tooltip-main" },
|
tooltip = { "exp-gui_module-inserter.tooltip-main" },
|
||||||
visible = function(player, element)
|
visible = function(player, element)
|
||||||
return Roles.player_allowed(player, "gui/module")
|
return Roles.player_has_permission(player, "exp_scenario.gui.module")
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ Adds a gui that allows players to apply various bonuses
|
|||||||
]]
|
]]
|
||||||
|
|
||||||
local Gui = require("modules/exp_gui")
|
local Gui = require("modules/exp_gui")
|
||||||
local Roles = require("modules/exp_legacy/expcore/roles")
|
local Roles = require("modules/exp_roles")
|
||||||
local config = require("modules/exp_legacy/config/bonus")
|
local config = require("modules/exp_legacy/config/bonus")
|
||||||
local vlayer = require("modules/exp_legacy/modules/control/vlayer")
|
local vlayer = require("modules/exp_legacy/modules/control/vlayer")
|
||||||
local format_number = require("util").format_number
|
local format_number = require("util").format_number
|
||||||
@@ -68,7 +68,8 @@ do local _points_limit = {} --- @type table<number, number>
|
|||||||
--- @param player LuaPlayer
|
--- @param player LuaPlayer
|
||||||
--- @return number
|
--- @return number
|
||||||
function Elements.bonus_used._calculate_points_limit(player)
|
function Elements.bonus_used._calculate_points_limit(player)
|
||||||
local role_diff = Roles.get_role_by_name(config.points.role_name).index - Roles.get_player_highest_role(player).index
|
local role = assert(Roles.get_role(config.points.role_name), "Bonus points role does not exist")
|
||||||
|
local role_diff = role.index - Roles.get_player_highest_role(player).index
|
||||||
local points_limit = math.floor(config.points.base * (1 + config.points.increase_percentage_per_role_level * role_diff))
|
local points_limit = math.floor(config.points.base * (1 + config.points.increase_percentage_per_role_level * role_diff))
|
||||||
_points_limit[player.index] = points_limit
|
_points_limit[player.index] = points_limit
|
||||||
return points_limit
|
return points_limit
|
||||||
@@ -458,19 +459,19 @@ Gui.toolbar.create_button{
|
|||||||
sprite = "item/exoskeleton-equipment",
|
sprite = "item/exoskeleton-equipment",
|
||||||
tooltip = { "exp-gui_player-bonus.tooltip-main" },
|
tooltip = { "exp-gui_player-bonus.tooltip-main" },
|
||||||
visible = function(player, element)
|
visible = function(player, element)
|
||||||
return Roles.player_allowed(player, "gui/bonus")
|
return Roles.player_has_permission(player, "exp_scenario.gui.bonus")
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|
||||||
--- Recalculate and apply the bonus for a player
|
--- Recalculate and apply the bonus for a player
|
||||||
local function recalculate_bonus(event)
|
local function recalculate_bonus(event)
|
||||||
local player = Gui.get_player(event)
|
local player = Gui.get_player(event)
|
||||||
if event.name == Roles.events.on_role_assigned or event.name == Roles.events.on_role_unassigned then
|
if event.name == Roles.events.on_player_roles_changed then
|
||||||
-- If the player's roles changed then we will need to recalculate their limit
|
-- If the player's roles changed then we will need to recalculate their limit
|
||||||
Elements.bonus_used._clear_points_limit_cache(player)
|
Elements.bonus_used._clear_points_limit_cache(player)
|
||||||
local bonus_cost = Elements.container.calculate_cost(player)
|
local bonus_cost = Elements.container.calculate_cost(player)
|
||||||
local within_limit = Elements.bonus_used.refresh_player(player, bonus_cost)
|
local within_limit = Elements.bonus_used.refresh_player(player, bonus_cost)
|
||||||
if not within_limit or not Roles.player_allowed(player, "gui/bonus") then
|
if not within_limit or not Roles.player_has_permission(player, "exp_scenario.gui.bonus") then
|
||||||
Elements.container.clear_player_bonus(player)
|
Elements.container.clear_player_bonus(player)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
@@ -512,7 +513,7 @@ end
|
|||||||
--- Apply the periodic bonus to all players
|
--- Apply the periodic bonus to all players
|
||||||
local function apply_periodic_bonus_online()
|
local function apply_periodic_bonus_online()
|
||||||
for _, player in pairs(game.connected_players) do
|
for _, player in pairs(game.connected_players) do
|
||||||
if player.character and Roles.player_allowed(player, "gui/bonus") then
|
if player.character and Roles.player_has_permission(player, "exp_scenario.gui.bonus") then
|
||||||
apply_personal_battery_recharge(player)
|
apply_personal_battery_recharge(player)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -524,8 +525,7 @@ return {
|
|||||||
elements = Elements,
|
elements = Elements,
|
||||||
events = {
|
events = {
|
||||||
[e.on_player_respawned] = recalculate_bonus,
|
[e.on_player_respawned] = recalculate_bonus,
|
||||||
[Roles.events.on_role_assigned] = recalculate_bonus,
|
[Roles.events.on_player_roles_changed] = recalculate_bonus,
|
||||||
[Roles.events.on_role_unassigned] = recalculate_bonus,
|
|
||||||
},
|
},
|
||||||
on_nth_tick = {
|
on_nth_tick = {
|
||||||
[config.periodic_bonus_rate] = apply_periodic_bonus_online,
|
[config.periodic_bonus_rate] = apply_periodic_bonus_online,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ Adds a player list to show names and play time; also includes action buttons whi
|
|||||||
|
|
||||||
local ExpUtil = require("modules/exp_util")
|
local ExpUtil = require("modules/exp_util")
|
||||||
local Gui = require("modules/exp_gui")
|
local Gui = require("modules/exp_gui")
|
||||||
local Roles = require("modules/exp_legacy/expcore/roles")
|
local Roles = require("modules/exp_roles")
|
||||||
local config = require("modules/exp_legacy/config/gui/player_list_actions")
|
local config = require("modules/exp_legacy/config/gui/player_list_actions")
|
||||||
|
|
||||||
--- @class ExpGui_PlayerList.elements
|
--- @class ExpGui_PlayerList.elements
|
||||||
@@ -203,7 +203,8 @@ function Elements.player_table.calculate_row_data()
|
|||||||
-- Flatten the roles into a single ordered list
|
-- Flatten the roles into a single ordered list
|
||||||
local count = 0
|
local count = 0
|
||||||
local row_data = {}
|
local row_data = {}
|
||||||
for _, role_name in pairs(Roles.config.order) do
|
for _, role in ipairs(Roles.get_roles()) do
|
||||||
|
local role_name = role.name
|
||||||
if players[role_name] then
|
if players[role_name] then
|
||||||
for _, player in pairs(players[role_name]) do
|
for _, player in pairs(players[role_name]) do
|
||||||
count = count + 1
|
count = count + 1
|
||||||
@@ -360,7 +361,7 @@ function Elements.action_bar.refresh(action_bar, player, selected_player)
|
|||||||
if buttons.auth and not buttons.auth(player, selected_player) then
|
if buttons.auth and not buttons.auth(player, selected_player) then
|
||||||
flow.visible = false
|
flow.visible = false
|
||||||
else
|
else
|
||||||
flow.visible = Roles.player_allowed(player, action_name)
|
flow.visible = Roles.player_has_permission(player, action_name)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -492,7 +493,7 @@ Gui.toolbar.create_button{
|
|||||||
sprite = "entity/character",
|
sprite = "entity/character",
|
||||||
tooltip = { "exp-gui_player-list.main-tooltip" },
|
tooltip = { "exp-gui_player-list.main-tooltip" },
|
||||||
visible = function(player, element)
|
visible = function(player, element)
|
||||||
return Roles.player_allowed(player, "gui/player-list")
|
return Roles.player_has_permission(player, "exp_scenario.gui.player_list")
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -534,8 +535,7 @@ return {
|
|||||||
events = {
|
events = {
|
||||||
[e.on_player_joined_game] = redraw_player_list,
|
[e.on_player_joined_game] = redraw_player_list,
|
||||||
[e.on_player_left_game] = on_player_left_game,
|
[e.on_player_left_game] = on_player_left_game,
|
||||||
[Roles.events.on_role_assigned] = redraw_player_list,
|
[Roles.events.on_player_roles_changed] = redraw_player_list,
|
||||||
[Roles.events.on_role_unassigned] = redraw_player_list,
|
|
||||||
},
|
},
|
||||||
on_nth_tick = {
|
on_nth_tick = {
|
||||||
[1800] = refresh_player_times,
|
[1800] = refresh_player_times,
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ Displays the player data for a player
|
|||||||
local ExpUtil = require("modules/exp_util")
|
local ExpUtil = require("modules/exp_util")
|
||||||
local Gui = require("modules/exp_gui")
|
local Gui = require("modules/exp_gui")
|
||||||
local ElementsExtra = require("modules/exp_scenario/gui/elements")
|
local ElementsExtra = require("modules/exp_scenario/gui/elements")
|
||||||
local Roles = require("modules/exp_legacy/expcore/roles")
|
local Roles = require("modules/exp_roles")
|
||||||
|
|
||||||
require("modules/exp_legacy/modules/data/statistics")
|
require("modules/exp_legacy/modules/data/statistics")
|
||||||
local PlayerData = require("modules/exp_legacy/expcore/player_data")
|
local PlayerData = require("modules/exp_legacy/expcore/player_data")
|
||||||
@@ -214,7 +214,7 @@ Gui.toolbar.create_button{
|
|||||||
tooltip = { "exp-gui_player-stats.tooltip-main" },
|
tooltip = { "exp-gui_player-stats.tooltip-main" },
|
||||||
left_element = Elements.container,
|
left_element = Elements.container,
|
||||||
visible = function(player, element)
|
visible = function(player, element)
|
||||||
return Roles.player_allowed(player, "gui/playerdata")
|
return Roles.player_has_permission(player, "exp_scenario.gui.playerdata")
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ Adds a Gui for displaying item production stats
|
|||||||
]]
|
]]
|
||||||
|
|
||||||
local Gui = require("modules/exp_gui")
|
local Gui = require("modules/exp_gui")
|
||||||
local Roles = require("modules/exp_legacy/expcore/roles")
|
local Roles = require("modules/exp_roles")
|
||||||
|
|
||||||
--- @class ExpGui_ProductionStats.elements
|
--- @class ExpGui_ProductionStats.elements
|
||||||
local Elements = {}
|
local Elements = {}
|
||||||
@@ -250,7 +250,7 @@ Gui.toolbar.create_button{
|
|||||||
sprite = "entity/assembling-machine-3",
|
sprite = "entity/assembling-machine-3",
|
||||||
tooltip = { "exp-gui_production-stats.tooltip-main" },
|
tooltip = { "exp-gui_production-stats.tooltip-main" },
|
||||||
visible = function(player, element)
|
visible = function(player, element)
|
||||||
return Roles.player_allowed(player, "gui/production")
|
return Roles.player_has_permission(player, "exp_scenario.gui.production")
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ Adds a few buttons for common actions
|
|||||||
|
|
||||||
local Gui = require("modules/exp_gui")
|
local Gui = require("modules/exp_gui")
|
||||||
local Commands = require("modules/exp_commands")
|
local Commands = require("modules/exp_commands")
|
||||||
local Roles = require("modules/exp_legacy/expcore/roles")
|
local Roles = require("modules/exp_roles")
|
||||||
|
|
||||||
local addon_artillery = require("modules/exp_scenario/commands/artillery")
|
local addon_artillery = require("modules/exp_scenario/commands/artillery")
|
||||||
local addon_trains = require("modules/exp_scenario/commands/trains")
|
local addon_trains = require("modules/exp_scenario/commands/trains")
|
||||||
@@ -116,7 +116,7 @@ Gui.toolbar.create_button{
|
|||||||
sprite = "item/repair-pack",
|
sprite = "item/repair-pack",
|
||||||
tooltip = { "exp-gui_quick-actions.tooltip-main" },
|
tooltip = { "exp-gui_quick-actions.tooltip-main" },
|
||||||
visible = function(player, element)
|
visible = function(player, element)
|
||||||
return Roles.player_allowed(player, "gui/tool")
|
return Roles.player_has_permission(player, "exp_scenario.gui.tool")
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -129,7 +129,6 @@ end
|
|||||||
return {
|
return {
|
||||||
elements = Elements,
|
elements = Elements,
|
||||||
events = {
|
events = {
|
||||||
[Roles.events.on_role_assigned] = on_role_changed,
|
[Roles.events.on_player_roles_changed] = on_role_changed,
|
||||||
[Roles.events.on_role_unassigned] = on_role_changed,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ Adds a main gui that contains important information about the server.
|
|||||||
|
|
||||||
local ExpUtil = require("modules/exp_util")
|
local ExpUtil = require("modules/exp_util")
|
||||||
local Gui = require("modules/exp_gui")
|
local Gui = require("modules/exp_gui")
|
||||||
local Roles = require("modules.exp_legacy.expcore.roles")
|
local Roles = require("modules/exp_roles")
|
||||||
local Commands = require("modules/exp_commands")
|
local Commands = require("modules/exp_commands")
|
||||||
local PlayerData = require("modules.exp_legacy.expcore.player_data")
|
local PlayerData = require("modules.exp_legacy.expcore.player_data")
|
||||||
local External = require("modules.exp_legacy.expcore.external")
|
local External = require("modules.exp_legacy.expcore.external")
|
||||||
@@ -392,14 +392,16 @@ define_tab(
|
|||||||
|
|
||||||
local done = {}
|
local done = {}
|
||||||
|
|
||||||
-- Fill groups from configured roles
|
-- Fill groups from the players who hold the roles, a player can be in more than one group
|
||||||
for player_name, player_roles in pairs(Roles.config.players) do
|
|
||||||
for _, group in ipairs(groups) do
|
for _, group in ipairs(groups) do
|
||||||
|
local seen = {}
|
||||||
for _, role_name in ipairs(group.roles) do
|
for _, role_name in ipairs(group.roles) do
|
||||||
if table.contains(player_roles, role_name) then
|
local role = Roles.get_role(role_name)
|
||||||
|
for _, player_name in ipairs(role and role:get_player_names() or {}) do
|
||||||
|
if not seen[player_name] then
|
||||||
|
seen[player_name] = true
|
||||||
done[player_name] = true
|
done[player_name] = true
|
||||||
group.players[#group.players + 1] = player_name
|
group.players[#group.players + 1] = player_name
|
||||||
break
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -463,7 +465,7 @@ local function render_data_category(opts)
|
|||||||
for name, child in pairs(opts.children) do
|
for name, child in pairs(opts.children) do
|
||||||
local metadata = child.metadata
|
local metadata = child.metadata
|
||||||
|
|
||||||
if not metadata.permission or Roles.player_allowed(opts.player, metadata.permission) then
|
if not metadata.permission or Roles.player_has_permission(opts.player, metadata.permission) then
|
||||||
local value = child:get(opts.player_name)
|
local value = child:get(opts.player_name)
|
||||||
|
|
||||||
if value ~= nil or metadata.show_always then
|
if value ~= nil or metadata.show_always then
|
||||||
@@ -663,7 +665,7 @@ Elements.toggle_button = Gui.toolbar.create_button{
|
|||||||
sprite = "virtual-signal/signal-info",
|
sprite = "virtual-signal/signal-info",
|
||||||
tooltip = { "exp-gui_readme.main-tooltip" },
|
tooltip = { "exp-gui_readme.main-tooltip" },
|
||||||
visible = function(player)
|
visible = function(player)
|
||||||
return Roles.player_allowed(player, "gui/readme")
|
return Roles.player_has_permission(player, "exp_scenario.gui.readme")
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
:on_click(function(_, player)
|
:on_click(function(_, player)
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ Adds a gui for tracking research milestones
|
|||||||
|
|
||||||
local ExpUtil = require("modules/exp_util")
|
local ExpUtil = require("modules/exp_util")
|
||||||
local Gui = require("modules/exp_gui")
|
local Gui = require("modules/exp_gui")
|
||||||
local Roles = require("modules/exp_legacy/expcore/roles")
|
local Roles = require("modules/exp_roles")
|
||||||
local config = require("modules/exp_legacy/config/research")
|
local config = require("modules/exp_legacy/config/research")
|
||||||
|
|
||||||
local table_to_json = helpers.table_to_json
|
local table_to_json = helpers.table_to_json
|
||||||
@@ -339,7 +339,7 @@ Gui.toolbar.create_button{
|
|||||||
sprite = "item/space-science-pack",
|
sprite = "item/space-science-pack",
|
||||||
tooltip = { "exp-gui_research-milestones.tooltip-main" },
|
tooltip = { "exp-gui_research-milestones.tooltip-main" },
|
||||||
visible = function(player, element)
|
visible = function(player, element)
|
||||||
return Roles.player_allowed(player, "gui/research")
|
return Roles.player_has_permission(player, "exp_scenario.gui.research")
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ Adds a rocket information gui which shows general stats, milestones and build pr
|
|||||||
|
|
||||||
local ExpUtil = require("modules/exp_util")
|
local ExpUtil = require("modules/exp_util")
|
||||||
local Gui = require("modules/exp_gui")
|
local Gui = require("modules/exp_gui")
|
||||||
local Roles = require("modules/exp_legacy/expcore/roles")
|
local Roles = require("modules/exp_roles")
|
||||||
local config = require("modules/exp_legacy/config/gui/rockets")
|
local config = require("modules/exp_legacy/config/gui/rockets")
|
||||||
|
|
||||||
--- @class ExpGui_RocketInfo.elements
|
--- @class ExpGui_RocketInfo.elements
|
||||||
@@ -651,7 +651,7 @@ Gui.toolbar.create_button{
|
|||||||
sprite = "item/rocket-silo",
|
sprite = "item/rocket-silo",
|
||||||
tooltip = { "exp-gui_rocket-info.tooltip-main" },
|
tooltip = { "exp-gui_rocket-info.tooltip-main" },
|
||||||
visible = function(player, element)
|
visible = function(player, element)
|
||||||
return Roles.player_allowed(player, "gui/rocket-info")
|
return Roles.player_has_permission(player, "exp_scenario.gui.rocket_info")
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ Adds a science info gui that shows production usage and net for the different sc
|
|||||||
local ExpUtil = require("modules/exp_util")
|
local ExpUtil = require("modules/exp_util")
|
||||||
local Gui = require("modules/exp_gui")
|
local Gui = require("modules/exp_gui")
|
||||||
local Colors = require("modules/exp_util/include/color")
|
local Colors = require("modules/exp_util/include/color")
|
||||||
local Roles = require("modules/exp_legacy/expcore/roles")
|
local Roles = require("modules/exp_roles")
|
||||||
local config = require("modules/exp_legacy/config/gui/science")
|
local config = require("modules/exp_legacy/config/gui/science")
|
||||||
local _format_number = require("util").format_number
|
local _format_number = require("util").format_number
|
||||||
|
|
||||||
@@ -571,7 +571,7 @@ Gui.toolbar.create_button{
|
|||||||
sprite = "entity/lab",
|
sprite = "entity/lab",
|
||||||
tooltip = { "exp-gui_science-production.tooltip-main" },
|
tooltip = { "exp-gui_science-production.tooltip-main" },
|
||||||
visible = function(player, element)
|
visible = function(player, element)
|
||||||
return Roles.player_allowed(player, "gui/science-info")
|
return Roles.player_has_permission(player, "exp_scenario.gui.science_info")
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ Adds cameras which can be used to view players and locations
|
|||||||
|
|
||||||
local Gui = require("modules/exp_gui")
|
local Gui = require("modules/exp_gui")
|
||||||
local ElementsExtra = require("modules/exp_scenario/gui/elements")
|
local ElementsExtra = require("modules/exp_scenario/gui/elements")
|
||||||
local Roles = require("modules/exp_legacy/expcore/roles")
|
local Roles = require("modules/exp_roles")
|
||||||
|
|
||||||
--- @class ExpGui_Surveillance.elements
|
--- @class ExpGui_Surveillance.elements
|
||||||
local Elements = {}
|
local Elements = {}
|
||||||
@@ -234,7 +234,7 @@ Gui.toolbar.create_button{
|
|||||||
sprite = "entity/radar",
|
sprite = "entity/radar",
|
||||||
tooltip = { "exp-gui_surveillance.tooltip-main" },
|
tooltip = { "exp-gui_surveillance.tooltip-main" },
|
||||||
visible = function(player, element)
|
visible = function(player, element)
|
||||||
return Roles.player_allowed(player, "gui/surveillance")
|
return Roles.player_has_permission(player, "exp_scenario.gui.surveillance")
|
||||||
end
|
end
|
||||||
}:on_click(function(def, player, element, event)
|
}:on_click(function(def, player, element, event)
|
||||||
Elements.container(player.gui.screen)
|
Elements.container(player.gui.screen)
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ Adds a task list to the game which players can add, remove and edit items on
|
|||||||
]]
|
]]
|
||||||
|
|
||||||
local Gui = require("modules/exp_gui")
|
local Gui = require("modules/exp_gui")
|
||||||
local Roles = require("modules.exp_legacy.expcore.roles")
|
local Roles = require("modules/exp_roles")
|
||||||
local config = require("modules.exp_legacy.config.gui.tasks")
|
local config = require("modules.exp_legacy.config.gui.tasks")
|
||||||
|
|
||||||
local ExpUtil = require("modules/exp_util")
|
local ExpUtil = require("modules/exp_util")
|
||||||
@@ -43,8 +43,8 @@ local function has_permission_create_task(player)
|
|||||||
return true
|
return true
|
||||||
elseif allow_add_task == "admin" then
|
elseif allow_add_task == "admin" then
|
||||||
return player.admin
|
return player.admin
|
||||||
elseif allow_add_task == "expcore.roles" then
|
elseif allow_add_task == "exp_roles" then
|
||||||
return Roles.player_allowed(player, config.expcore_roles_allow_add_task)
|
return Roles.player_has_permission(player, config.exp_roles_allow_add_task)
|
||||||
end
|
end
|
||||||
|
|
||||||
return false
|
return false
|
||||||
@@ -67,8 +67,8 @@ local function has_permission_edit_task(player, task)
|
|||||||
return true
|
return true
|
||||||
elseif allow_edit_task == "admin" then
|
elseif allow_edit_task == "admin" then
|
||||||
return player.admin
|
return player.admin
|
||||||
elseif allow_edit_task == "expcore.roles" then
|
elseif allow_edit_task == "exp_roles" then
|
||||||
return Roles.player_allowed(player, config.expcore_roles_allow_edit_task)
|
return Roles.player_has_permission(player, config.exp_roles_allow_edit_task)
|
||||||
end
|
end
|
||||||
|
|
||||||
return false
|
return false
|
||||||
@@ -922,7 +922,7 @@ Gui.toolbar.create_button{
|
|||||||
sprite = "utility/not_enough_repair_packs_icon",
|
sprite = "utility/not_enough_repair_packs_icon",
|
||||||
tooltip = { "exp-gui_task-list.tooltip-main" },
|
tooltip = { "exp-gui_task-list.tooltip-main" },
|
||||||
visible = function(player, element)
|
visible = function(player, element)
|
||||||
return Roles.player_allowed(player, "gui/task-list")
|
return Roles.player_has_permission(player, "exp_scenario.gui.task_list")
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -950,7 +950,6 @@ return {
|
|||||||
events = {
|
events = {
|
||||||
[e.on_player_joined_game] = refresh_player_tasks,
|
[e.on_player_joined_game] = refresh_player_tasks,
|
||||||
[e.on_player_changed_force] = refresh_player_tasks,
|
[e.on_player_changed_force] = refresh_player_tasks,
|
||||||
[Roles.events.on_role_assigned] = refresh_player_permissions,
|
[Roles.events.on_player_roles_changed] = refresh_player_permissions,
|
||||||
[Roles.events.on_role_unassigned] = refresh_player_permissions,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"clusterio": "*",
|
"clusterio": "*",
|
||||||
"exp_util": "*",
|
"exp_util": "*",
|
||||||
|
"exp_roles": "*",
|
||||||
"exp_gui": "*",
|
"exp_gui": "*",
|
||||||
"exp_commands": "*"
|
"exp_commands": "*"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ local PlayerData = require("modules/exp_legacy/expcore/player_data")
|
|||||||
local UsesServerUps = PlayerData.Settings:combine("UsesServerUps")
|
local UsesServerUps = PlayerData.Settings:combine("UsesServerUps")
|
||||||
UsesServerUps:set_default(false)
|
UsesServerUps:set_default(false)
|
||||||
UsesServerUps:set_metadata{
|
UsesServerUps:set_metadata{
|
||||||
permission = "command/server-ups",
|
permission = "exp_scenario.command.server_ups",
|
||||||
stringify = function(value) return value and "Visible" or "Hidden" end,
|
stringify = function(value) return value and "Visible" or "Hidden" end,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user