diff --git a/exp_legacy/module/config/discord_alerts.lua b/exp_legacy/module/config/discord_alerts.lua index 11dfb6a8..bb93294e 100644 --- a/exp_legacy/module/config/discord_alerts.lua +++ b/exp_legacy/module/config/discord_alerts.lua @@ -5,7 +5,6 @@ return { show_playtime = true, entity_protection = true, player_reports = true, - player_warnings = true, player_bans = true, player_mutes = true, player_kicks = true, diff --git a/exp_legacy/module/config/gui/player_list_actions.lua b/exp_legacy/module/config/gui/player_list_actions.lua index 146338aa..736aa2b2 100644 --- a/exp_legacy/module/config/gui/player_list_actions.lua +++ b/exp_legacy/module/config/gui/player_list_actions.lua @@ -9,7 +9,6 @@ local ExpUtil = require("modules/exp_util") local Gui = require("modules/exp_gui") local Roles = require("modules/exp_roles") local Reports = require("modules.exp_legacy.modules.control.reports") --- @dep modules.control.reports -local Warnings = require("modules.exp_legacy.modules.control.warnings") --- @dep modules.control.warnings local Jail = require("modules.exp_legacy.modules.control.jail") --- @dep modules.control.jail local Colors = require("modules/exp_util/include/color") local format_player_name = ExpUtil.format_player_name_locale @@ -100,20 +99,6 @@ local function report_player_callback(player, reason) Reports.report_player(selected_player.name, player.name, reason) end ---- Gives the action player a warning, requires a reason --- @element warn_player -local warn_player = new_button("utility/spawn_flag", { "exp-gui_player-list.warn-player" }) - :on_click(function(def, player, element) - set_selected_action(player, "exp_scenario.command.create_warning") - end) - -local function warn_player_callback(player, reason) - local selected_player, selected_player_color = get_action_player(player) - local by_player_name_color = format_player_name(player) - game.print{ "exp-commands_warnings.create", selected_player_color, by_player_name_color, reason } - Warnings.add_warning(selected_player.name, player.name, reason) -end - --- Jails the action player, requires a reason -- @element jail_player local jail_player = new_button("utility/multiplayer_waiting_icon", { "exp-gui_player-list.jail-player" }) @@ -170,18 +155,11 @@ return { ["exp_scenario.command.create_report"] = { auth = function(player, selected_player) if player == selected_player then return false end - if not Roles.player_has_permission(player, "exp_scenario.command.create_warning") then - return not Roles.player_has_permission(selected_player, "exp_scenario.bypass.reports") - end - end, -- can report any player that isn't immune and you aren't able to give warnings + return not Roles.player_has_permission(selected_player, "exp_scenario.bypass.reports") + end, -- can report any player that isn't immune reason_callback = report_player_callback, report_player, }, - ["exp_scenario.command.create_warning"] = { - auth = Roles.player_outranks, -- warn a lower user, replaces report - reason_callback = warn_player_callback, - warn_player, - }, ["exp_scenario.command.jail"] = { auth = Roles.player_outranks, reason_callback = jail_player_callback, diff --git a/exp_legacy/module/config/warnings.lua b/exp_legacy/module/config/warnings.lua deleted file mode 100644 index b60e003b..00000000 --- a/exp_legacy/module/config/warnings.lua +++ /dev/null @@ -1,38 +0,0 @@ ---- Config file for the warning system, this is very similar to reports but is for the use of moderators rather than normal users. --- @config Warnings - -return { - --- @type (LocalisedString[] | fun(player: LuaPlayer, by_player_name: string, number_of_warnings: number))[] - actions = { --- @setting actions what actions are taking at number of warnings - -- if a localized string is used then __1__ will by_player_name and __2__ will be the current warning count (auto inserted) - { "warnings.received", "" }, - { "warnings.received", "" }, - { "warnings.received", { "warnings.pre-kick" } }, - function(player, by_player_name, number_of_warnings) - local str = { - "You received a warning from ", - by_player_name, - ". You have ", - number_of_warnings, - " warnings. You were kicked for having too many warnings; you may rejoin if you wish.", - } - game.kick_player(player, table.concat(str, "")) -- Does not support locale strings - -- game.kick_player(player, { "warnings.received", by_player_name, number_of_warnings, { "warnings.kick" } }) - end, - { "warnings.received", { "warnings.pre-pre-ban" } }, - { "warnings.received", { "warnings.pre-ban" } }, - function(player, by_player_name, number_of_warnings) - local str = { - "You received a warning from ", - by_player_name, - ". You have ", - number_of_warnings, - " warnings. You were banned for having too many warnings; visit https://www.explosivegaming.nl to request a ban appeal.", - } - game.kick_player(player, table.concat(str, "")) -- Does not support locale strings - -- game.ban_player(player, { "warnings.received", by_player_name, number_of_warnings, { "warnings.ban", { "links.website" } } }) - end, - }, - script_warning_cool_down = 30, --- @setting script_warning_cool_down time for a script warning (given by script) to be removed (in minutes) - script_warning_limit = 5, --- @setting script_warning_limit the number of script warnings (given by script) that are allowed before full warnings are given -} diff --git a/exp_legacy/module/locale/en/addons.cfg b/exp_legacy/module/locale/en/addons.cfg index 0cf56506..5807e65b 100644 --- a/exp_legacy/module/locale/en/addons.cfg +++ b/exp_legacy/module/locale/en/addons.cfg @@ -18,14 +18,3 @@ read-readme=Make sure you have read the information gui (It can be found through softmod=We run a softmod on our servers. A softmod is a custom scenario that runs on this server, an example is the player list. redmew=We don't talk about redmew here; they beat us to 1000 members ;-; lhd=All trains must be LHD! This is a long standing rule on our servers, please respect this. - -[warnings] -received=You received a warning from __1__. You have __2__ warnings. __3__ -pre-kick=This is your last warning before you are kicked. -kick=You were kicked for having too many warnings; you may rejoin if you wish. -pre-pre-ban=You are close to receiving a ban; successful ban appeals are unlikely. -pre-ban=This your LAST warning before you are BANNED! Successful ban appeals are unlikely. -ban=You were banned for having too many warnings; visit __1__ to request a ban appeal. -script-warning=You are receiving script warnings; if you recive too many you will receive a permanent warning (__1__/__2__) -script-warning-removed=A script warning has expired (__1__/__2__) -script-warning-limit=__1__ has received a permanent warning from the script. diff --git a/exp_legacy/module/locale/en/data.cfg b/exp_legacy/module/locale/en/data.cfg index 529e7852..8fc02534 100644 --- a/exp_legacy/module/locale/en/data.cfg +++ b/exp_legacy/module/locale/en/data.cfg @@ -10,11 +10,6 @@ message-cleared=Your join message has been cleared. [quickbar] saved=Your quickbar filters have been saved. -[exp-required] -Warnings=Warnings -Warnings-tooltip=The total number of warnings you have received from staff -Warnings-value-tooltip=The total number of warnings you have received from staff - [exp-settings] Colour=Colour Colour-tooltip=Your player colour diff --git a/exp_legacy/module/locale/en/gui.cfg b/exp_legacy/module/locale/en/gui.cfg index c83514fc..5e6bb78a 100644 --- a/exp_legacy/module/locale/en/gui.cfg +++ b/exp_legacy/module/locale/en/gui.cfg @@ -7,7 +7,6 @@ reason-entry=Enter Reason goto-player=Goto player bring-player=Bring player report-player=Report player -warn-player=Warn player jail-player=Jail player kick-player=Kick player ban-player=Ban player diff --git a/exp_legacy/module/locale/zh-CN/addons.cfg b/exp_legacy/module/locale/zh-CN/addons.cfg index f586a2ac..ba29b829 100644 --- a/exp_legacy/module/locale/zh-CN/addons.cfg +++ b/exp_legacy/module/locale/zh-CN/addons.cfg @@ -18,14 +18,3 @@ read-readme=確保你已閱讀相關資訊。按左上 i 圖標可再次查看 softmod=這裹用了自設情境,是一種軟裝模組。 redmew= lhd=列車必須是左則通行。這是本服務器長久以來的規則。 - -[warnings] -received=你已被 __1__ 警告了,現在共有 __2__ 個警告。 __3__ -pre-kick=這是在被踢離之前的最後警告。 -kick=你已因為被警告太多次而被請離,不過你之後還是可以回來的。 -pre-pre-ban=按照你的行為,你有可能會被封禁。 -pre-ban=這是在被封禁之前的最後警告。 -ban=你已因為被警告太多次而被封禁; 可以到 __1__ 申訴. -script-warning=這是系統發出的自動警告 (__1__/__2__) -script-warning-removed=系統發出的自動警告已失效 (__1__/__2__) -script-warning-limit=__1__ 已被系統發出了一則自動警告。 diff --git a/exp_legacy/module/locale/zh-CN/data.cfg b/exp_legacy/module/locale/zh-CN/data.cfg index 96a1b4b1..d8ce31ea 100644 --- a/exp_legacy/module/locale/zh-CN/data.cfg +++ b/exp_legacy/module/locale/zh-CN/data.cfg @@ -10,11 +10,6 @@ message-cleared=你的加入信息已清除。 [quickbar] saved=你的工具列已儲存。 -[exp-required] -Warnings=警告 -Warnings-tooltip=你所有收到的警告 -Warnings-value-tooltip=你所有收到的警告 - [exp-settings] Colour=顏色 Colour-tooltip=你的人物顏色 diff --git a/exp_legacy/module/locale/zh-CN/gui.cfg b/exp_legacy/module/locale/zh-CN/gui.cfg index fbadf609..fbcdd618 100644 --- a/exp_legacy/module/locale/zh-CN/gui.cfg +++ b/exp_legacy/module/locale/zh-CN/gui.cfg @@ -7,7 +7,6 @@ reason-entry=輸入原因 goto-player=傳送到用戶 bring-player=傳送用戶到自己 report-player=舉報用戶 -warn-player=警告用戶 jail-player=監禁用戶 kick-player=踢除用戶 ban-player=封禁用戶 diff --git a/exp_legacy/module/locale/zh-TW/addons.cfg b/exp_legacy/module/locale/zh-TW/addons.cfg index f586a2ac..ba29b829 100644 --- a/exp_legacy/module/locale/zh-TW/addons.cfg +++ b/exp_legacy/module/locale/zh-TW/addons.cfg @@ -18,14 +18,3 @@ read-readme=確保你已閱讀相關資訊。按左上 i 圖標可再次查看 softmod=這裹用了自設情境,是一種軟裝模組。 redmew= lhd=列車必須是左則通行。這是本服務器長久以來的規則。 - -[warnings] -received=你已被 __1__ 警告了,現在共有 __2__ 個警告。 __3__ -pre-kick=這是在被踢離之前的最後警告。 -kick=你已因為被警告太多次而被請離,不過你之後還是可以回來的。 -pre-pre-ban=按照你的行為,你有可能會被封禁。 -pre-ban=這是在被封禁之前的最後警告。 -ban=你已因為被警告太多次而被封禁; 可以到 __1__ 申訴. -script-warning=這是系統發出的自動警告 (__1__/__2__) -script-warning-removed=系統發出的自動警告已失效 (__1__/__2__) -script-warning-limit=__1__ 已被系統發出了一則自動警告。 diff --git a/exp_legacy/module/locale/zh-TW/data.cfg b/exp_legacy/module/locale/zh-TW/data.cfg index 96a1b4b1..d8ce31ea 100644 --- a/exp_legacy/module/locale/zh-TW/data.cfg +++ b/exp_legacy/module/locale/zh-TW/data.cfg @@ -10,11 +10,6 @@ message-cleared=你的加入信息已清除。 [quickbar] saved=你的工具列已儲存。 -[exp-required] -Warnings=警告 -Warnings-tooltip=你所有收到的警告 -Warnings-value-tooltip=你所有收到的警告 - [exp-settings] Colour=顏色 Colour-tooltip=你的人物顏色 diff --git a/exp_legacy/module/locale/zh-TW/gui.cfg b/exp_legacy/module/locale/zh-TW/gui.cfg index fbadf609..fbcdd618 100644 --- a/exp_legacy/module/locale/zh-TW/gui.cfg +++ b/exp_legacy/module/locale/zh-TW/gui.cfg @@ -7,7 +7,6 @@ reason-entry=輸入原因 goto-player=傳送到用戶 bring-player=傳送用戶到自己 report-player=舉報用戶 -warn-player=警告用戶 jail-player=監禁用戶 kick-player=踢除用戶 ban-player=封禁用戶 diff --git a/exp_legacy/module/modules/control/warnings.lua b/exp_legacy/module/modules/control/warnings.lua deleted file mode 100644 index 6a0fa116..00000000 --- a/exp_legacy/module/modules/control/warnings.lua +++ /dev/null @@ -1,331 +0,0 @@ ---[[-- Control Module - Warnings - - Adds a way to give and remove warnings to players. - @control Warnings - @alias Warnings - - @usage - -- import the module from the control modules - local Warnings = require("modules.exp_legacy.modules.control.warnings") --- @dep modules.control.warnings - - -- This will add a warning to the player - Warnings.add_warning('MrBiter', 'Cooldude2606', 'Killed too many biters') - - -- This will remove a warning from a player, second name is just who is doing the action - Warnings.remove_warning('MrBiter', 'Cooldude2606') - - -- Script warning as similar to normal warning but are designed to have no effect for a short amount of time - -- this is so it can be used for greifer protection without being too agressive - Warnings.add_script_warning('MrBiter', 'Killed too many biters') - - -- Both normal and script warnings can also be cleared, this will remove all warnings - Warnings.clear_warnings('MrBiter', 'Cooldude2606') -]] - -local Event = require("modules/exp_legacy/utils/event") -local Storage = require("modules/exp_util/storage") -local config = require("modules.exp_legacy.config.warnings") - -local valid_player = function(p) return type(p) == "userdata" and p or game.get_player(p) end - ---- Stores the quickbar filters for a player -local PlayerData = require("modules.exp_legacy.expcore.player_data") --- @dep expcore.player_data -local PlayerWarnings = PlayerData.Required:combine("Warnings") -PlayerWarnings:set_metadata{ - stringify = function(value) - if not value then return "You have no warnings" end - local count = 0 - for _ in pairs(value) do count = count + 1 end - - return "You have " .. count .. " warnings" - end, -} - -local Warnings = { - user_warnings = PlayerWarnings, - user_script_warnings = {}, - events = { - --- When a warning is added to a player - -- @event on_warning_added - -- @tparam number player_index the index of the player who recived the warning - -- @tparam string by_player_name the name of the player who gave the warning - -- @tparam string reason the reason that the player was given a warning - -- @tparam number warning_count the new number of warnings that the player has - on_warning_added = script.generate_event_name(), - --- When a warning is removed from a player - -- @event on_warning_removed - -- @tparam number player_index the index of the player who is having the warning removed - -- @tparam string warning_by_name the name of the player who gave the warning - -- @tparam string removed_by_name the name of the player who is removing the warning - -- @tparam number warning_count the new number of warnings that the player has - -- @tparam number batch_count the number of warnings removed in this batch, always one when not a batch - -- @tparam number batch the index of this event in a batch, always one when not a batch - on_warning_removed = script.generate_event_name(), - --- When a warning is added to a player, by the script - -- @event on_script_warning_added - -- @tparam number player_index the index of the player who recived the warning - -- @tparam string reason the reason that the player was given a warning - -- @tparam number warning_count the new number of warnings that the player has - on_script_warning_added = script.generate_event_name(), - --- When a warning is removed from a player, by the script - -- @event on_script_warning_removed - -- @tparam number player_index the index of the player who is having the warning removed - -- @tparam number warning_count the new number of warnings that the player has - on_script_warning_removed = script.generate_event_name(), - }, -} - -local user_script_warnings = Warnings.user_script_warnings -Storage.register(user_script_warnings, function(tbl) - Warnings.user_script_warnings = tbl - user_script_warnings = tbl -end) - ---- Gets an array of warnings that the player has, always returns a list even if empty --- @tparam LuaPlayer player the player to get the warning for --- @treturn table an array of all the warnings on this player, contains tick, by_player_name and reason -function Warnings.get_warnings(player) - return PlayerWarnings:get(player.name, {}) -end - ---- Gets the number of warnings that a player has on them --- @tparam LuaPlayer player the player to count the warnings for --- @treturn number the number of warnings that the player has -function Warnings.count_warnings(player) - local warnings = PlayerWarnings:get(player.name, {}) - return #warnings -end - ---- Adds a warning to a player, when a warning is added a set action is done based on the number of warnings and the config file --- @tparam LuaPlayer player the player to add a warning to --- @tparam string by_player_name the name of the player who is doing the action --- @tparam[opt='Non given.'] string reason the reason that the player is being warned --- @treturn number the number of warnings that the player has -function Warnings.add_warning(player, by_player_name, reason) - player = valid_player(player) - if not player then return end - if not by_player_name then return end - - reason = reason or "None given." - - local warning_count --- @type number - PlayerWarnings:update(player.name, function(_, warnings) - local warning = { - by_player_name = by_player_name, - reason = reason, - } - - if not warnings then - warning_count = 1 - return { warning } - else - table.insert(warnings, warning) - warning_count = #warnings - end - end) - - script.raise_event(Warnings.events.on_warning_added, { - name = Warnings.events.on_warning_added, - tick = game.tick, - player_index = player.index, - warning_count = warning_count, - by_player_name = by_player_name, - reason = reason, - }) - - local action = config.actions[warning_count] - if action then - local _type = type(action) - if _type == "function" then - action(player, by_player_name, warning_count) - elseif _type == "table" then - local current = table.deepcopy(action) - table.insert(current, 2, by_player_name) - table.insert(current, 3, warning_count) - player.print(current) - elseif type(action) == "string" then - player.print(action) - end - end - - return warning_count -end - ---- Event trigger for removing a waring due to it being looped in clear warnings --- @tparam LuaPlayer player the player who is having a warning removed --- @tparam string warning_by_name the name of the player who made the warning --- @tparam string removed_by_name the name of the player who is doing the action --- @tparam number warning_count the number of warnings that the player how has --- @tparam number batch the index of this event in a batch, always one when not a batch --- @tparam number batch_count the number of reports removed in this batch, always one when not a batch -local function warning_removed_event(player, warning_by_name, removed_by_name, warning_count, batch, batch_count) - script.raise_event(Warnings.events.on_warning_removed, { - name = Warnings.events.on_warning_removed, - tick = game.tick, - player_index = player.index, - warning_count = warning_count, - warning_by_name = warning_by_name, - removed_by_name = removed_by_name, - batch_count = batch_count or 1, - batch = batch or 1, - }) -end - ---- Removes a warning from a player, always removes the earliest warning, fifo --- @tparam LuaPlayer player the player to remove a warning from --- @tparam string by_player_name the name of the player who is doing the action --- @treturn number the number of warnings that the player has -function Warnings.remove_warning(player, by_player_name) - player = valid_player(player) - if not player then return end - if not by_player_name then return end - - local warning, warning_count - PlayerWarnings:update(player.name, function(_, warnings) - if not warnings then return end - warning = table.remove(warnings, 1) - warning_count = #warnings - end) - - if not warning then return end - warning_removed_event(player, warning.by_player_name, by_player_name, warning_count) - - return warning_count -end - ---- Removes all warnings from a player, will trigger remove event for each warning --- @tparam LuaPlayer player the player to clear the warnings from --- @tparam string by_player_name the name of the player who is doing the action --- @treturn boolean true when warnings were cleared succesfully -function Warnings.clear_warnings(player, by_player_name) - player = valid_player(player) - if not player then return end - if not by_player_name then return end - - local warnings = PlayerWarnings:get(player) - if not warnings then return end - - local warning_count = #warnings - for n, warning in pairs(warnings) do - warning_removed_event(player, warning.by_player_name, by_player_name, warning_count - n, n, warning_count) - end - - PlayerWarnings:remove(player) - return true -end - ---- Gets an array of all the script warnings that a player has --- @tparam LuaPlayer player the player to get the script warnings of --- @treturn table a table of all the script warnings a player has, contains tick and reason -function Warnings.get_script_warnings(player) - return user_script_warnings[player.name] or {} -end - ---- Gets the number of script warnings that a player has on them --- @tparam LuaPlayer player the player to count the script warnings of --- @treturn number the number of script warnings that the player has -function Warnings.count_script_warnings(player) - local warnings = user_script_warnings[player.name] or {} - return #warnings -end - ---- Adds a script warning to a player, this may add a full warning if max script warnings is met --- @tparam LuaPlayer player the player to add a script warning to --- @tparam[opt='Non given.'] string reason the reason that the player is being warned --- @treturn number the number of script warnings that the player has -function Warnings.add_script_warning(player, reason) - player = valid_player(player) - if not player then return end - - reason = reason or "Non given." - - local warnings = user_script_warnings[player.name] - if not warnings then - warnings = {} - user_script_warnings[player.name] = warnings - end - - table.insert(warnings, { - tick = game.tick, - reason = reason, - }) - - local warning_count = #warnings - - script.raise_event(Warnings.events.on_script_warning_added, { - name = Warnings.events.on_script_warning_added, - tick = game.tick, - player_index = player.index, - warning_count = warning_count, - reason = reason, - }) - - if warning_count > config.script_warning_limit then - Warnings.add_warning(player, "", reason) - end - - return warning_count -end - ---- Script warning removed event trigger due to it being looped in clear script warnings --- @tparam LuaPlayer player the player who is having a script warning removed --- @tparam number warning_count the number of warnings that the player has -local function script_warning_removed_event(player, warning_count) - script.raise_event(Warnings.events.on_script_warning_removed, { - name = Warnings.events.on_script_warning_removed, - tick = game.tick, - player_index = player.index, - warning_count = warning_count, - }) -end - ---- Removes a script warning from a player --- @tparam LuaPlayer player the player to remove a script warning from --- @treturn number the number of script warnings that the player has -function Warnings.remove_script_warning(player) - player = valid_player(player) - if not player then return end - - local warnings = user_script_warnings[player.name] - if not warnings then return end - - table.remove(warnings, 1) - - script_warning_removed_event(player) - - return #warnings -end - ---- Removes all script warnings from a player, emits event for each warning removed --- @tparam LuaPlayer player the player to clear the script warnings from -function Warnings.clear_script_warnings(player) - player = valid_player(player) - if not player then return end - - local warnings = user_script_warnings[player.name] - if not warnings then return end - - local warning_count = #warnings - for n, _ in pairs(warnings) do - script_warning_removed_event(player, warning_count - n) - end - - user_script_warnings[player.name] = nil - return true -end - --- script warnings are removed after a certain amount of time to make them even more lienient -local script_warning_cool_down = config.script_warning_cool_down * 3600 -Event.on_nth_tick(script_warning_cool_down / 4, function() - local cutoff = game.tick - script_warning_cool_down - for player_name, script_warnings in pairs(user_script_warnings) do - if #script_warnings > 0 then - for _, warning in pairs(script_warnings) do - if warning.tick < cutoff then - Warnings.remove_script_warning(player_name) - end - end - end - end -end) - -return Warnings diff --git a/exp_roles/seed.ts b/exp_roles/seed.ts index 97325245..b028314a 100644 --- a/exp_roles/seed.ts +++ b/exp_roles/seed.ts @@ -67,9 +67,6 @@ export const seedRoles: SeedRole[] = [ "exp_scenario.command.tag_clear.always", "exp_scenario.command.spawn.always", "exp_scenario.command.clear_reports", - "exp_scenario.command.clear_warnings", - "exp_scenario.command.clear_script_warnings", - "exp_scenario.command.clear_last_warnings", "exp_scenario.command.clear_inventory", "exp_scenario.command.kill_enemies", "exp_scenario.command.remove_enemies", @@ -103,8 +100,6 @@ export const seedRoles: SeedRole[] = [ "exp_scenario.command.goto", "exp_scenario.command.teleport", "exp_scenario.command.bring", - "exp_scenario.command.create_warning", - "exp_scenario.command.get_warnings", "exp_scenario.command.get_reports", "exp_scenario.command.protect_entity", "exp_scenario.command.protect_area", diff --git a/exp_scenario/module/commands/warnings.lua b/exp_scenario/module/commands/warnings.lua deleted file mode 100644 index 14be9aad..00000000 --- a/exp_scenario/module/commands/warnings.lua +++ /dev/null @@ -1,96 +0,0 @@ ---[[-- 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.script_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.script_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.script_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) diff --git a/exp_scenario/module/control.lua b/exp_scenario/module/control.lua index 2e04e552..31e34fa7 100644 --- a/exp_scenario/module/control.lua +++ b/exp_scenario/module/control.lua @@ -38,7 +38,6 @@ require("modules/exp_scenario/commands/surface") require("modules/exp_scenario/commands/teleport") require("modules/exp_scenario/commands/trains") require("modules/exp_scenario/commands/vlayer") -require("modules/exp_scenario/commands/warnings") require("modules/exp_scenario/commands/waterfill") --- Control diff --git a/exp_scenario/module/control/discord_alerts.lua b/exp_scenario/module/control/discord_alerts.lua index c4675140..9d55687c 100644 --- a/exp_scenario/module/control/discord_alerts.lua +++ b/exp_scenario/module/control/discord_alerts.lua @@ -131,40 +131,6 @@ if config.player_reports then end end ---- Warnings added and removed -if config.player_warnings then - local Warnings = require("modules.exp_legacy.modules.control.warnings") - events[Warnings.events.on_warning_added] = function(event) - local player_name, by_player_name = get_player_name(event) - local player = assert(game.get_player(player_name)) - emit_event{ - title = "Warning", - description = "A player has been given a warning", - color = Colors.yellow, - fields = { - { name = "Player", inline = true, value = append_playtime(player_name) }, - { name = "By", inline = true, value = append_playtime(by_player_name) }, - { name = "Report Count", inline = true, value = Warnings.count_warnings(player) }, - { name = "Reason", value = event.reason }, - }, - } - end - events[Warnings.events.on_warning_removed] = function(event) - if event.batch ~= 1 then return end - local player_name = get_player_name(event) - emit_event{ - title = "Warnings Removed", - description = "A player has a warning removed", - color = Colors.green, - fields = { - { name = "Player", inline = true, value = append_playtime(player_name) }, - { name = "By", inline = true, value = append_playtime(event.removed_by_name) }, - { name = "Report Count", inline = true, value = tostring(event.batch_count) }, - }, - } - end -end - --- When a player is jailed or unjailed if config.player_jail then local Jail = require("modules.exp_legacy.modules.control.jail") diff --git a/exp_scenario/module/locale/en.cfg b/exp_scenario/module/locale/en.cfg index 80e8a1ec..707ed8c1 100644 --- a/exp_scenario/module/locale/en.cfg +++ b/exp_scenario/module/locale/en.cfg @@ -249,25 +249,6 @@ description=Print all vlayer information. title=VLayer Information: result=__1__: __2__ -[exp-commands_warnings] -description-create=Gives a warning to a player; may lead to automatic script action. -description-get=Gets the number of warnings a player has. If no player then lists all players and the number of warnings they have. -description-clear=Clears all warnings (and script warnings) from a player. -description-clear-script=Clears all script warnings from a player. -description-clear-last=Clears the last warning from a player. -arg-player-create=Player to give the warning to. -arg-player-get=Player to get the warning of, if not given all players are returned. -arg-player-clear=Player to clear the warnings of. -arg-reason=Reason the user is receiving a warning. -create=__1__ received a warning from __2__ for __3__. -player-title=__1__ has __2__ warnings and __3__/__4__ script warnings. -list-element-player=__1__: __2__ -warnings-title=The following players have warnings aginst them (and script warnings): -list-element=__1__: __2__ (__3__/__4__) -cleared=__1__ had all their warnings cleared by __2__. -cleared-script=__1__ had all their script warnings cleared by __2__. -cleared-last=__1__ had their last warning cleared by __2__. - [exp-commands_waterfill] description=Replace tiles with shallow water. requires-explosives=__ITEM__cliff-explosives__ are required to create water. @@ -326,7 +307,6 @@ reason-entry=Enter Reason goto-player=Goto player bring-player=Bring player report-player=Report player -warn-player=Warn player jail-player=Jail player kick-player=Kick player ban-player=Ban player diff --git a/exp_scenario/module/locale/zh-CN.cfg b/exp_scenario/module/locale/zh-CN.cfg index bf65db42..b7399f07 100644 --- a/exp_scenario/module/locale/zh-CN.cfg +++ b/exp_scenario/module/locale/zh-CN.cfg @@ -246,25 +246,6 @@ description=vlayer 資訊 title=vlayer 資訊: result=__1__: __2__ -[exp-commands_warnings] -description-create=給用戶一個警告; 可能會導致系統的自動行動。 -description-get=取得用戶收到的警告次數。如果沒有用戶,則列出所有用戶以及他們受到警告的次數。 -description-clear=清除用戶的所有警告(和系統警告)。 -description-clear-script=清除用戶的系統警告。 -description-clear-last=清除用戶的最後警告。 -arg-player-create=要警告的用戶。 -arg-player-get=要取得的用戶, 若沒有則返回所有用戶。 -arg-player-clear=要清除的用戶。 -arg-reason=原因。 -create=__1__ 被 __2__ 因 __3__ 作出警告。 -player-title=__1__ 有 __2__ 個警告和 __3__/__4__ 的系統警告。 -list-element-player=__1__: __2__ -warnings-title=該用戶警告如下: -list-element=__1__: __2__ (__3__/__4__) -cleared=__1__ 的警告己被 __2__ 清除。 -cleared-script=__1__ 的系統警告己被 __2__ 清除。 -cleared-last=__1__ 的最後警告己被 __2__ 清除。 - [exp-commands_waterfill] description=把地換為淺水。 requires-explosives=沒有足夠的 __ITEM__cliff-explosives__ 。 diff --git a/exp_scenario/module/locale/zh-TW.cfg b/exp_scenario/module/locale/zh-TW.cfg index bf65db42..b7399f07 100644 --- a/exp_scenario/module/locale/zh-TW.cfg +++ b/exp_scenario/module/locale/zh-TW.cfg @@ -246,25 +246,6 @@ description=vlayer 資訊 title=vlayer 資訊: result=__1__: __2__ -[exp-commands_warnings] -description-create=給用戶一個警告; 可能會導致系統的自動行動。 -description-get=取得用戶收到的警告次數。如果沒有用戶,則列出所有用戶以及他們受到警告的次數。 -description-clear=清除用戶的所有警告(和系統警告)。 -description-clear-script=清除用戶的系統警告。 -description-clear-last=清除用戶的最後警告。 -arg-player-create=要警告的用戶。 -arg-player-get=要取得的用戶, 若沒有則返回所有用戶。 -arg-player-clear=要清除的用戶。 -arg-reason=原因。 -create=__1__ 被 __2__ 因 __3__ 作出警告。 -player-title=__1__ 有 __2__ 個警告和 __3__/__4__ 的系統警告。 -list-element-player=__1__: __2__ -warnings-title=該用戶警告如下: -list-element=__1__: __2__ (__3__/__4__) -cleared=__1__ 的警告己被 __2__ 清除。 -cleared-script=__1__ 的系統警告己被 __2__ 清除。 -cleared-last=__1__ 的最後警告己被 __2__ 清除。 - [exp-commands_waterfill] description=把地換為淺水。 requires-explosives=沒有足夠的 __ITEM__cliff-explosives__ 。 diff --git a/exp_scenario/permissions.ts b/exp_scenario/permissions.ts index 9d604b58..bbaafacd 100644 --- a/exp_scenario/permissions.ts +++ b/exp_scenario/permissions.ts @@ -26,25 +26,20 @@ const definitions: Definition[] = [ ["exp_scenario.command.clear_blueprints_surface", "/clear-blueprints-surface", "Clear all blueprints on the current surface."], ["exp_scenario.command.clear_ground_items", "/clear-ground-items", "Clear all items on the ground."], ["exp_scenario.command.clear_inventory", "/clear-inventory", "Clear a player's inventory, moving all items to spawn."], - ["exp_scenario.command.clear_last_warnings", "/clear-last-warnings", "Clears the last warning from a player."], ["exp_scenario.command.clear_pollution", "/clear-pollution", "Clear pollution from your current surface, or another surface."], ["exp_scenario.command.clear_reports", "/clear-reports", "Clears all reports from a player or just the report from one player."], - ["exp_scenario.command.clear_script_warnings", "/clear-script-warnings", "Clears all script warnings from a player."], - ["exp_scenario.command.clear_warnings", "/clear-warnings", "Clears all warnings (and script warnings) from a player."], ["exp_scenario.command.collectdata", "/collectdata", "Collect data for RCON usage."], ["exp_scenario.command.commands", "/commands", "List and search all commands for a keyword.", true], ["exp_scenario.command.connect", "/connect", "Connect to another server.", true], ["exp_scenario.command.connect_all", "/connect-all", "Connect all players to another server."], ["exp_scenario.command.connect_player", "/connect-player", "Connect a player to a different server."], ["exp_scenario.command.create_report", "/create-report", "Reports a player and notifies moderators.", true], - ["exp_scenario.command.create_warning", "/create-warning", "Gives a warning to a player; may lead to automatic script action."], ["exp_scenario.command.data_preference", "/data-preference", "Allows you to set/get your data saving preference.", true], ["exp_scenario.command.debug", "/debug", "Opens the debug gui."], ["exp_scenario.command.follow", "/follow", "Start following a player in spectator."], ["exp_scenario.command.get_home", "/get-home", "Returns your current home location."], ["exp_scenario.command.get_reports", "/get-reports", "List the reports against a player, or against every player."], ["exp_scenario.command.get_roles", "/get-roles", "Get all roles that a player has, if no player provided it lists all roles.", true], - ["exp_scenario.command.get_warnings", "/get-warnings", "List the warnings against a player, or against every player."], ["exp_scenario.command.goto", "/goto", "Teleports you to a player."], ["exp_scenario.command.home", "/home", "Teleports you to your home location."], ["exp_scenario.command.jail", "/jail", "Puts a player into jail, which suppresses all of their other roles."],