mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2025-12-27 03:25:23 +09:00
97 lines
5.2 KiB
Lua
97 lines
5.2 KiB
Lua
--[[-- Commands - Warnings
|
|
Adds a commands that allow admins to warn other players
|
|
]]
|
|
|
|
local Commands = require("modules/exp_commands")
|
|
local format_player_name = Commands.format_player_name_locale
|
|
|
|
local Warnings = require("modules.exp_legacy.modules.control.warnings") --- @dep modules.control.warnings
|
|
local config = require("modules.exp_legacy.config.warnings") --- @dep config.warnings
|
|
|
|
--- Gives a warning to a player; may lead to automatic script action.
|
|
Commands.new("create-warning", { "exp-commands_warnings.description-create" })
|
|
:argument("player", { "exp-commands_warnings.arg-player-create" }, Commands.types.lower_role_player)
|
|
:argument("reason", { "exp-commands_warnings.arg-reason" }, Commands.types.string)
|
|
:enable_auto_concatenation()
|
|
:add_aliases{ "warn" }
|
|
:add_flags{ "admin_only" }
|
|
:register(function(player, other_player, reason)
|
|
--- @cast other_player LuaPlayer
|
|
--- @cast reason string
|
|
Warnings.add_warning(other_player, player.name, reason)
|
|
local player_name = format_player_name(player)
|
|
local other_player_name = format_player_name(other_player)
|
|
game.print{ "exp-commands_warnings.create", other_player_name, player_name, reason }
|
|
end)
|
|
|
|
--- Gets a list of all warnings that a player has on them. If no player then lists all players and the number of warnings on them.
|
|
Commands.new("get-warnings", { "exp-commands_warnings.description-get" })
|
|
:optional("player", { "exp-commands_warnings.arg-player-get" }, Commands.types.player)
|
|
:add_aliases{ "warnings" }
|
|
:add_flags{ "admin_only" }
|
|
:register(function(player, other_player)
|
|
--- @cast other_player LuaPlayer?
|
|
if other_player then
|
|
local warnings = Warnings.get_warnings(player)
|
|
local script_warnings = Warnings.get_script_warnings(player)
|
|
local other_player_name = format_player_name(other_player)
|
|
Commands.print{ "exp-commands_warnings.player-title", other_player_name, #warnings, #script_warnings, config.temp_warning_limit }
|
|
for _, warning in pairs(warnings) do
|
|
local by_player_name_formatted = format_player_name(warning.by_player_name)
|
|
Commands.print{ "exp-commands_warnings.list-element-player", by_player_name_formatted, warning.reason }
|
|
end
|
|
else
|
|
local warnings = Warnings.user_warnings:get_all()
|
|
local script_warnings = Warnings.user_script_warnings
|
|
Commands.print{ "exp-commands_warnings.warnings-title" }
|
|
for player_name, player_warnings in pairs(warnings) do
|
|
local player_name_formatted = format_player_name(player_name)
|
|
local script_warning_count = script_warnings[player_name] and #script_warnings[player_name] or 0
|
|
Commands.print{ "exp-commands_warnings.list-element", player_name_formatted, #player_warnings, script_warning_count, config.temp_warning_limit }
|
|
end
|
|
for player_name, player_warnings in pairs(script_warnings) do
|
|
if not warnings[player_name] then
|
|
local player_name_formatted = format_player_name(player_name)
|
|
Commands.print{ "exp-commands_warnings.list-element", player_name_formatted, 0, #player_warnings, config.temp_warning_limit }
|
|
end
|
|
end
|
|
end
|
|
end)
|
|
|
|
--- Clears all warnings from a player
|
|
Commands.new("clear-warnings", { "exp-commands_warnings.description-clear" })
|
|
:argument("player", { "exp-commands_warnings.arg-player-clear" }, Commands.types.player)
|
|
:add_flags{ "admin_only" }
|
|
:register(function(player, other_player)
|
|
--- @cast other_player LuaPlayer
|
|
Warnings.clear_warnings(other_player, player.name)
|
|
Warnings.clear_script_warnings(other_player)
|
|
local player_name = format_player_name(player)
|
|
local other_player_name = format_player_name(other_player)
|
|
game.print{ "exp-commands_warnings.cleared", other_player_name, player_name }
|
|
end)
|
|
|
|
--- Clears all script warnings from a player
|
|
Commands.new("clear-script-warnings", { "exp-commands_warnings.description-clear-script" })
|
|
:argument("player", { "exp-commands_warnings.arg-player-clear" }, Commands.types.player)
|
|
:add_flags{ "admin_only" }
|
|
:register(function(player, other_player)
|
|
--- @cast other_player LuaPlayer
|
|
Warnings.clear_script_warnings(other_player)
|
|
local player_name = format_player_name(player)
|
|
local other_player_name = format_player_name(other_player)
|
|
game.print{ "exp-commands_warnings.cleared-script", other_player_name, player_name }
|
|
end)
|
|
|
|
--- Clears the last warning that was given to a player
|
|
Commands.new("clear-last-warnings", { "exp-commands_warnings.description-clear-last" })
|
|
:argument("player", { "exp-commands_warnings.arg-player-clear" }, Commands.types.player)
|
|
:add_flags{ "admin_only" }
|
|
:register(function(player, other_player)
|
|
--- @cast other_player LuaPlayer
|
|
Warnings.remove_warning(other_player, player.name)
|
|
local player_name = format_player_name(player)
|
|
local other_player_name = format_player_name(other_player)
|
|
game.print{ "exp-commands_warnings.cleared-last", other_player_name, player_name }
|
|
end)
|