mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2026-09-21 17:04:00 +00:00
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>
46 lines
1.7 KiB
Lua
46 lines
1.7 KiB
Lua
--- Greets players on join
|
|
-- @data Greetings
|
|
|
|
local config = require("modules.exp_legacy.config.join_messages") --- @dep config.join_messages
|
|
local Commands = require("modules/exp_commands")
|
|
|
|
--- Stores the join message that the player have
|
|
local PlayerData = require("modules.exp_legacy.expcore.player_data") --- @dep expcore.player_data
|
|
local CustomMessages = PlayerData.Settings:combine("JoinMessage")
|
|
CustomMessages:set_metadata{
|
|
permission = "exp_scenario.command.set_join_message",
|
|
}
|
|
|
|
--- When a players data loads show their message
|
|
CustomMessages:on_load(function(player_name, player_message)
|
|
local player = game.players[player_name]
|
|
local custom_message = player_message or config[player_name]
|
|
if custom_message then
|
|
game.print(custom_message, { color = player.color })
|
|
else
|
|
player.print{ "join-message.greet", { "links.discord" } }
|
|
end
|
|
end)
|
|
|
|
--- Set your custom join message
|
|
Commands.new("set-join-message", { "join-message.description-add" })
|
|
:optional("message", false, Commands.types.string_max_length(255))
|
|
:enable_auto_concatenation()
|
|
:add_aliases{ "join-message" }
|
|
:register(function(player, message)
|
|
--- @cast message string?
|
|
if message then
|
|
CustomMessages:set(player, message)
|
|
return Commands.status.success{ "join-message.message-set" }
|
|
else
|
|
return Commands.status.success{ "join-message.message-get", CustomMessages:get(player) }
|
|
end
|
|
end)
|
|
|
|
--- Removes your custom join message
|
|
Commands.new("remove-join-message", { "join-message.description-remove" })
|
|
:register(function(player)
|
|
CustomMessages:remove(player)
|
|
return Commands.status.success{ "join-message.message-cleared" }
|
|
end)
|