70 lines
2.5 KiB
C#
70 lines
2.5 KiB
C#
using LabApi.Events.Arguments.PlayerEvents;
|
|
using LabApi.Events.Handlers;
|
|
using LabApi.Features;
|
|
using LabApi.Features.Console;
|
|
using LabApi.Features.Permissions;
|
|
using LabApi.Features.Wrappers;
|
|
|
|
namespace ReportNotifier;
|
|
|
|
public class Plugin: LabApi.Loader.Features.Plugins.Plugin
|
|
{
|
|
public override string Name => "ModTools";
|
|
public override string Author => "Code002Lover";
|
|
public override Version Version { get; } = new(1, 0, 0);
|
|
public override string Description => "Various tools for moderation, including report notification and extra logs.";
|
|
public override Version RequiredApiVersion { get; } = new(LabApiProperties.CompiledVersion);
|
|
|
|
public string LogFile { get; set; } = "ModTools.log";
|
|
|
|
private static FileStream _logFileHandler;
|
|
|
|
public override void Enable()
|
|
{
|
|
PlayerEvents.ReportedPlayer += OnReport;
|
|
PlayerEvents.Banned += OnBan;
|
|
PlayerEvents.Kicked += OnKick;
|
|
|
|
_logFileHandler = File.Open(LogFile, FileMode.Append);
|
|
}
|
|
|
|
public override void Disable()
|
|
{
|
|
PlayerEvents.ReportedPlayer -= OnReport;
|
|
PlayerEvents.Banned -= OnBan;
|
|
PlayerEvents.Kicked -= OnKick;
|
|
|
|
_logFileHandler = null;
|
|
}
|
|
|
|
private static void OnReport(PlayerReportedPlayerEventArgs ev)
|
|
{
|
|
Log($"Received Report from {ev.Player.Nickname} for {ev.Target.Nickname} with the reason: {ev.Reason}");
|
|
foreach (var player in Player.List)
|
|
{
|
|
Logger.Debug($"Player {player.Nickname} has permissions: {player.GetPermissions()}");
|
|
if (player.HasPermissions("AdminChat"))
|
|
{
|
|
player.SendBroadcast($"<color=#002DB3FF>{ev.Player.Nickname} reported {ev.Target.Nickname} for {ev.Reason}</color>", 3, Broadcast.BroadcastFlags.AdminChat, true);
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void Log(string message)
|
|
{
|
|
Logger.Debug(message);
|
|
var now = DateTime.Now;
|
|
var bytes = System.Text.Encoding.UTF8.GetBytes($"[{now:dd.MM.yyyy : HH:mm:ss}] - {message}");
|
|
_logFileHandler.Write(bytes, 0, bytes.Length);
|
|
}
|
|
|
|
private static void OnBan(PlayerBannedEventArgs ev)
|
|
{
|
|
Log($"Player {ev.Player?.Nickname} ({ev.PlayerId}) got banned by {ev.Issuer.Nickname} ({ev.Issuer.PlayerId}) with reason: {ev.Reason}");
|
|
}
|
|
|
|
private static void OnKick(PlayerKickedEventArgs ev)
|
|
{
|
|
Log($"Player {ev.Player.Nickname} ({ev.Player.PlayerId}) got kicked by {ev.Issuer.Nickname} ({ev.Issuer.PlayerId}) with reason: {ev.Reason}");
|
|
}
|
|
} |