From 0c859c228b7bd3fb50b02053e2899b0f91e611de Mon Sep 17 00:00:00 2001 From: Cooldude2606 Date: Mon, 5 Apr 2021 22:21:46 +0100 Subject: [PATCH] Added report jail --- config/_file_loader.lua | 1 + locale/en/addons.cfg | 5 ++++- modules/addons/report-jail.lua | 25 +++++++++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 modules/addons/report-jail.lua diff --git a/config/_file_loader.lua b/config/_file_loader.lua index 16a135af..c09715d1 100644 --- a/config/_file_loader.lua +++ b/config/_file_loader.lua @@ -43,6 +43,7 @@ return { 'modules.addons.discord-alerts', 'modules.addons.chat-reply', 'modules.addons.tree-decon', + 'modules.addons.report-jail', --- Data 'modules.data.statistics', diff --git a/locale/en/addons.cfg b/locale/en/addons.cfg index 95defd53..9acd4abc 100644 --- a/locale/en/addons.cfg +++ b/locale/en/addons.cfg @@ -75,4 +75,7 @@ get-mead-1= Filling the drinking horn get-mead-2= Skål! get-beer-1= 🍺 Pouring A Glass 🍺 get-beer-2= 🍻 Chears Mate 🍻 -verify=Please return to our discord and type r!verify __1__ \ No newline at end of file +verify=Please return to our discord and type r!verify __1__ + +[report-jail] +jail=__1__ was jailed because they have been reported too many times. \ No newline at end of file diff --git a/modules/addons/report-jail.lua b/modules/addons/report-jail.lua new file mode 100644 index 00000000..b98c3ce0 --- /dev/null +++ b/modules/addons/report-jail.lua @@ -0,0 +1,25 @@ +--- When a player is reported by players with a greater combined delta playtime, the player is automatically jailed +-- @addon report-jail + +local Event = require 'utils.event' ---@dep utils.event +local Jail = require 'modules.control.jail' ---@dep modules.control.jail +local Reports = require 'modules.control.reports' --- @dep modules.control.reports +local format_chat_player_name = _C.format_chat_player_name --- @dep expcore.common + +--- Returns the playtime of the reporter, used to sum the playtime of all reporters +local function reporter_playtime(_, by_player_name, _) + local player = game.get_player(by_player_name) + if player == nil then return 0 end + return player.online_time +end + +--- Tests the combined playtime of all reporters against the reported player +Event.add(Reports.events.on_player_reported, function(event) + local player = game.get_player(event.player_index) + local total_playtime = Reports.count_reports(player, reporter_playtime) + if total_playtime < player.online_time*1.5 then return end + -- Combined playtime is greater than 150% of the reported's playtime + local player_name_color = format_chat_player_name(player) + Jail.jail_player(player, '', 'Reported by too many players, please wait for a moderator.') + game.print{'report-jail.jail', player_name_color} +end) \ No newline at end of file