C#:
using Newtonsoft.Json;
using System;
using Oxide.Core.Plugins;
namespace Oxide.Plugins
{
[Info("RustyBanLite", "MikeHawke", "1.0.2")]
[Description("RustyBan.com Community Ban Project")]
class RustyBanLite : RustPlugin
{
[PluginReference]
private Plugin DiscordMessages;
private ConfigData configData;
class ConfigData
{
[JsonProperty(PropertyName = "Allow Players But Warn Admin")]
public bool warn = false;
[JsonProperty(PropertyName = "Warn To Discord")]
public bool Discord = false;
[JsonProperty(PropertyName = "Discord webhook")]
public string webhook = "http://webhookURL.com";
}
void Init()
{
if (!LoadConfigVariables())
{
Puts("Config file issue detected. Please delete file, or check syntax and fix.");
return;
}
}
private bool LoadConfigVariables()
{
try
{
configData = Config.ReadObject<ConfigData>();
}
catch
{
return false;
}
SaveConfig(configData);
return true;
}
protected override void LoadDefaultConfig()
{
Puts("Creating new config file.");
configData = new ConfigData(); SaveConfig(configData);
}
void SaveConfig(ConfigData config)
{
Config.WriteObject(config, true);
}
private class BanData
{
[JsonProperty("SteamID")]
public string SteamID { get; set; }
[JsonProperty("Name")]
public string Name { get; set; }
[JsonProperty("Reason")]
public string Reason { get; set; }
public class Get : BanData
{ }
public string ToJson()
{ return JsonConvert.SerializeObject(this); }
}
void OnPlayerConnected(BasePlayer player)
{
var trial = player.userID.ToString();
webrequest.Enqueue(GetUrl(trial), null, (code, response) =>
{
if (code == 200 && !string.IsNullOrEmpty(response))
{
if (response != "{\"Name\":null}")
{
if (configData.warn == false)
{
Network.Net.sv.Kick(player.net.connection, rust.QuoteSafe("This Server Is Protected By RustyBan, Your Details Have Appeared On Our Database, You Cannot Access This Server. Appeal Your Ban At RustyBan.com"));
PrintWarning($"Player {player.displayName} is on the RustyBans Database and has been kicked");
string OutBound = $"Alert Player {player.displayName} is on the RustyBans Database and has been blocked from entering";
warn(player, OutBound);
return;
}
else
{
PrintWarning($"Warning The Player {player.displayName} is on the RustyBans Database");
string OutBound = $"Warning Player {player.displayName} is on the RustyBans Database";
warn(player, OutBound);
return;
}
}
return;
}
else
{
PrintError($"API RESPONDED WITH CODE {0}\n{1}", code, response);
}
}, this, Core.Libraries.RequestMethod.GET);
}
private string GetUrl(string steamid)
{
string url = $"http://api.rustyban.com/plugcheck.php?SteamID={steamid}";
return string.Format(url, steamid);
}
void warn(BasePlayer player, string Outbound)
{
if (configData.Discord == false) return;
if (DiscordMessages == null)
{
PrintWarning("Discord Messages is required to use this feature");
return;
}
else
{
DiscordMessages?.Call("API_SendTextMessage", configData.webhook, Outbound);
}
}
}
}