public static bool Prefix(CheaterReport __instance, GameConsoleTransmission reporter, string reporterSteamId, string reportedSteamId, string reportedAuth, string reportedIp, string reporterAuth, string reporterIp, ref string reason, ref byte[] signature, string reporterPublicKey, int reportedId) { if (EventPlugin.CheaterReportPatchDisable) { return(true); } try { if (reportedSteamId == reporterSteamId) { reporter.SendToClient(__instance.connectionToClient, "You can't report yourself!" + Environment.NewLine, "yellow"); } int serverId = ServerConsole.Port; bool allow = true; Events.InvokeCheaterReport(reporterSteamId, reportedSteamId, reportedIp, reason, serverId, ref allow); return(allow); } catch (Exception e) { Log.Error($"Cheater Report Patch error: {e}"); return(true); } }
private static bool Prefix( CheaterReport __instance, GameConsoleTransmission reporter, string reporterUserId, string reportedUserId, ref string reason) { if (reportedUserId == reporterUserId) { reporter.SendToClient(__instance.connectionToClient, "You can't report yourself!" + Environment.NewLine, "yellow"); } var ev = new ReportingCheaterEventArgs(API.Features.Player.Get(reporterUserId), API.Features.Player.Get(reportedUserId), ServerConsole.Port, reason); Server.OnReportingCheater(ev); reason = ev.Reason; return(ev.IsAllowed); }
public void OpenReportWindow(string text) => GameConsoleTransmission.SendToClient(Connection, "[REPORTING] " + text, "white");
public void LogReport(GameConsoleTransmission reporter, string reporterUserId, string reportedUserId, ref string reason, int reportedId, bool notifyGm) { if (string.IsNullOrEmpty(_serverAddress) && !_hasLoaded) { reportedPlayers = typeof(CheaterReport).GetField("reportedPlayers", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).GetValue(PlayerManager.localPlayer.GetComponent <CheaterReport>()) as HashSet <int> ?? new HashSet <int>(); _serverAddress = $"{ServerConsole.Ip}:{ServerConsole.Port}"; _hasLoaded = true; } try { GameObject reporterGO = PlayerManager.players.Find(p => p.GetComponent <CharacterClassManager>().UserId == reporterUserId); GameObject reportedGO = PlayerManager.players.Find(p => p.GetComponent <CharacterClassManager>().UserId == reportedUserId); if (reportedGO != null && reporterGO != null) { string json = JsonSerializer.ToJsonString(new DiscordWebhook($"{PMConfigFile.webhookMessage}", PMConfigFile.webhookName, PMConfigFile.webhookAvatar, tts: false, new DiscordEmbed[1] { new DiscordEmbed("Ingame player report", "rich", "Player has just been reported.", PMConfigFile.webhookColour, new DiscordEmbedField[5] { new DiscordEmbedField("Reported User", $"{reportedGO.GetComponent<NicknameSync>().MyNick} ({reportedUserId})", inline: false), new DiscordEmbedField("Reporter", $"{reporterGO.GetComponent<NicknameSync>().MyNick} ({reporterUserId})", inline: false), new DiscordEmbedField("Reason", reason, inline: false), new DiscordEmbedField("Server", _serverAddress, inline: false), new DiscordEmbedField("Reported ID", reportedId.ToString(), inline: false) }) })); HttpClient _client; _client = new HttpClient(); _client.DefaultRequestHeaders.Add("User-Agent", "SCP SL"); _client.DefaultRequestHeaders.Add("Game-Version", CustomNetworkManager.CompatibleVersions[0]); _client.Timeout = TimeSpan.FromSeconds(20.0); _client.PostAsync(PMConfigFile.webhookUrl, new StringContent(json, Encoding.UTF8, "application/json")); try { Base.Debug("Triggering PlayerReportEvent"); PluginManager.TriggerEvent <IEventHandlerPlayerReport>(new PlayerReportEvent(new PheggPlayer(reporterGO), new PheggPlayer(reportedGO), reason)); } catch (Exception e) { Base.Error($"Error triggering PlayerReportEvent {e.InnerException.ToString()}"); } if (!notifyGm) { reportedPlayers.Add(reportedId); reporter.SendToClient(base.connectionToClient, "[REPORTING] Player report successfully sent to local administrators by webhooks.", "green"); } } } catch (Exception ex) { ServerConsole.AddLog("Failed to send report by webhook: " + ex.Message); Debug.LogException(ex); reporter.SendToClient(base.connectionToClient, "[REPORTING] Failed to send report to local administrators by webhooks.", "red"); } }