using System; using System.IO; using System.Text; using System.Collections.Generic; using InfinityScript; using Utility; namespace TotalBan { public class TotalBan : BaseScript { List Immunes = new List(); List Admins = new List(); string Immune; string Admin; string MessReason; string ServerSay; bool SUBIP; string Command; private List BannedPlayers = new List(); private string path = "scripts\\TotalBan\\Bans.txt"; public TotalBan() : base() { try { CheckForFile(); MessReason = UL.GET.GetServerCFG("TotalBan", "MessReason", "[TotalBan]: This is banned."); ServerSay = UL.GET.GetServerCFG("TotalBan", "ServerSay", string.Empty); Admin = UL.GET.GetServerCFG("TotalBan", "Admins", ""); Immune = UL.GET.GetServerCFG("TotalBan", "Immunes", ""); SUBIP = bool.Parse(UL.GET.GetServerCFG("TotalBan", "SUBIP", "false")); Command = UL.GET.GetServerCFG("TotalBan", "ServerCommand", "dropclient"); if (!Immune.Equals("")) Immunes = new List(Immune.ToLower().Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries)); if (!Admin.Equals("")) Admins = new List(Admin.ToLower().Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries)); BannedPlayers = new List(File.ReadAllLines(path)); UL.ServerPrint("Script TotalBan by frst_ loaded. v2.0.0.0 | Mordekai74.3dn.ru"); PlayerConnected += new Action(player => { if (!IsImmune(player)) { MessReason = UL.GET.GetServerCFG("TotalBan", "MessReason", "[TotalBan]: This is banned."); //повторная загрузка из-за ранее перезаписанных Replace CheckBan(player); } }); } catch (Exception t) { UL.ServerPrint("[TotalBan] ERROR: " + t.Message); } } public override EventEat OnSay2(Entity player, string name, string message) { string[] parsed = message.Split(null as char[], StringSplitOptions.RemoveEmptyEntries); if (IsAdmin(player)) { #region name if (message.StartsWith("!banname", StringComparison.InvariantCultureIgnoreCase)) { if (parsed.Length <= 1) { Utilities.RawSayTo(player, "^2Используйте^7: !banname "); return EventEat.EatGame; } if (parsed.Length > 1) { Entity target = UL.GET.GetClient(parsed[1]); if (target != null) { BannedPlayers = new List(File.ReadAllLines(path)); bool abort = false; try { for (int i = 0; i < BannedPlayers.Count; i++) { if (!string.IsNullOrWhiteSpace(BannedPlayers[i])) { string line = BannedPlayers[i]; string NAMEBanned = line.Split(';')[1]; if (NAMEBanned == target.Name.ToLower()) { UL.TellClient("NAME ^1" + target.Name + "^7 уже есть в списке банов", player); UL.ServerPrint("NAME ^1" + target.Name + "^7 уже есть в списке банов"); abort = true; break; } } } } catch {} //NAME,NAMEBAN,GUID,XUID,IP,HWID,CLANTAG,XNADDR if (!abort) { BannedPlayers.Add(target.Name + ";" + target.Name.ToLower() + ";;;;;;;"); File.WriteAllLines(path, BannedPlayers.ToArray()); UL.TellClient("Player " + target.Name + " NAME (^2" + target.Name + "^7) успешно забанен", player); MessReason = MessReason.Replace("", "NAME").Replace("", target.Name); Utilities.ExecuteCommand(Command + " " + target.GetClientNum() + " \"" + MessReason + "\""); if (!string.IsNullOrEmpty(ServerSay)) { ServerSay = ServerSay.Replace("", target.Name); UL.ServerSay(ServerSay); } } return EventEat.EatGame; } else Utilities.RawSayTo(player, "^1Имя не найдено или принадлежит нескольким игрокам"); return EventEat.EatGame; } } #endregion #region guid if (message.StartsWith("!banguid", StringComparison.InvariantCultureIgnoreCase)) { if (parsed.Length <= 1) { Utilities.RawSayTo(player, "^2Используйте^7: !banguid "); return EventEat.EatGame; } if (parsed.Length > 1) { Entity target = UL.GET.GetClient(parsed[1]); if (target != null) { BannedPlayers = new List(File.ReadAllLines(path)); bool abort = false; try { for (int i = 0; i < BannedPlayers.Count; i++) { if (!string.IsNullOrWhiteSpace(BannedPlayers[i])) { string line = BannedPlayers[i]; string GUIDBanned = line.Split(';')[2]; if (GUIDBanned == target.GUID.ToString()) { UL.TellClient("GUID ^1" + target.GUID.ToString() + "^7 уже есть в списке банов", player); UL.ServerPrint("GUID ^1" + target.GUID.ToString() + "^7 уже есть в списке банов"); abort = true; break; } } } } catch { } //NAME,NAMEBAN,GUID,XUID,IP,HWID,CLANTAG,XNADDR if (!abort) { BannedPlayers.Add(target.Name + ";;" + target.GUID.ToString() + ";;;;;;"); File.WriteAllLines(path, BannedPlayers.ToArray()); UL.TellClient("Player " + target.Name + " GUID (^2" + target.GUID.ToString() + "^7) успешно забанен", player); MessReason = MessReason.Replace("", "GUID").Replace("", target.GUID.ToString()); Utilities.ExecuteCommand(Command + " " + target.GetClientNum() + " \"" + MessReason + "\""); if (!string.IsNullOrEmpty(ServerSay)) { ServerSay = ServerSay.Replace("", target.Name); UL.ServerSay(ServerSay); } } return EventEat.EatGame; } else Utilities.RawSayTo(player, "^1Имя не найдено или принадлежит нескольким игрокам"); return EventEat.EatGame; } } #endregion #region xuid if (message.StartsWith("!banxuid", StringComparison.InvariantCultureIgnoreCase)) { if (parsed.Length <= 1) { Utilities.RawSayTo(player, "^2Используйте^7: !banxuid "); return EventEat.EatGame; } if (parsed.Length > 1) { Entity target = UL.GET.GetClient(parsed[1]); if (target != null) { BannedPlayers = new List(File.ReadAllLines(path)); bool abort = false; try { for (int i = 0; i < BannedPlayers.Count; i++) { if (!string.IsNullOrWhiteSpace(BannedPlayers[i])) { string line = BannedPlayers[i]; string XUIDBanned = line.Split(';')[3]; if (XUIDBanned == target.GetXUID()) { UL.TellClient("XUID ^1" + target.GetXUID() + "^7 уже есть в списке банов", player); UL.ServerPrint("XUID ^1" + target.GetXUID() + "^7 уже есть в списке банов"); abort = true; break; } } } } catch { } //NAME,NAMEBAN,GUID,XUID,IP,HWID,CLANTAG,XNADDR if (!abort) { BannedPlayers.Add(target.Name + ";;;" + target.GetXUID() + ";;;;;"); File.WriteAllLines(path, BannedPlayers.ToArray()); UL.TellClient("Player " + target.Name + " XUID (^2" + target.GetXUID() + "^7) успешно забанен", player); MessReason = MessReason.Replace("", "XUID").Replace("", target.GetXUID()); Utilities.ExecuteCommand(Command + " " + target.GetClientNum() + " \"" + MessReason + "\""); if (!string.IsNullOrEmpty(ServerSay)) { ServerSay = ServerSay.Replace("", target.Name); UL.ServerSay(ServerSay); } } return EventEat.EatGame; } else Utilities.RawSayTo(player, "^1Имя не найдено или принадлежит нескольким игрокам"); return EventEat.EatGame; } } #endregion #region ip if (message.StartsWith("!banip", StringComparison.InvariantCultureIgnoreCase)) { if (parsed.Length <= 1) { Utilities.RawSayTo(player, "^2Используйте^7: !banip "); return EventEat.EatGame; } if (parsed.Length > 1) { Entity target = UL.GET.GetClient(parsed[1]); if (target != null) { BannedPlayers = new List(File.ReadAllLines(path)); string TargetIP = ""; if (SUBIP) TargetIP = string.Concat(target.IP.Address.ToString().Split('.')[0], ".", target.IP.Address.ToString().Split('.')[1], ".*.*"); else TargetIP = target.IP.Address.ToString(); bool abort = false; try { for (int i = 0; i < BannedPlayers.Count; i++) { if (!string.IsNullOrWhiteSpace(BannedPlayers[i])) { string line = BannedPlayers[i]; string IPBanned = line.Split(';')[4]; if (SUBIP) IPBanned = IPBanned.Split('.')[0] + "." + IPBanned.Split('.')[1]; if (IPBanned == TargetIP) { UL.TellClient("IP ^1" + TargetIP + "^7 уже есть в списке банов", player); UL.ServerPrint("IP ^1" + TargetIP + "^7 уже есть в списке банов"); abort = true; break; } } } } catch { } //NAME,NAMEBAN,GUID,XUID,IP,HWID,CLANTAG,XNADDR if (!abort) { BannedPlayers.Add(target.Name + ";;;;" + TargetIP + ";;;;"); File.WriteAllLines(path, BannedPlayers.ToArray()); UL.TellClient("Player " + target.Name + " IP (^2" + TargetIP + "^7) успешно забанен", player); MessReason = MessReason.Replace("", "IP").Replace("", target.IP.Address.ToString()); Utilities.ExecuteCommand(Command + " " + target.GetClientNum() + " \"" + MessReason + "\""); if (!string.IsNullOrEmpty(ServerSay)) { ServerSay = ServerSay.Replace("", target.Name); UL.ServerSay(ServerSay); } } return EventEat.EatGame; } else Utilities.RawSayTo(player, "^1Имя не найдено или принадлежит нескольким игрокам"); return EventEat.EatGame; } } #endregion #region hwid if (message.StartsWith("!banhwid", StringComparison.InvariantCultureIgnoreCase)) { if (parsed.Length <= 1) { Utilities.RawSayTo(player, "^2Используйте^7: !banhwid "); return EventEat.EatGame; } if (parsed.Length > 1) { Entity target = UL.GET.GetClient(parsed[1]); if (target != null) { BannedPlayers = new List(File.ReadAllLines(path)); bool abort = false; try { for (int i = 0; i < BannedPlayers.Count; i++) { if (!string.IsNullOrWhiteSpace(BannedPlayers[i])) { string line = BannedPlayers[i]; string HWIDBanned = line.Split(';')[5]; if (HWIDBanned == target.HWID.ToLower()) { UL.TellClient("HWID ^1" + target.HWID.ToUpper() + "^7 уже есть в списке банов", player); UL.ServerPrint("HWID ^1" + target.HWID.ToUpper() + "^7 уже есть в списке банов"); abort = true; break; } } } } catch { } //NAME,NAMEBAN,GUID,XUID,IP,HWID,CLANTAG,XNADDR if (!abort) { BannedPlayers.Add(target.Name + ";;;;;" + target.HWID.ToLower() + ";;;"); File.WriteAllLines(path, BannedPlayers.ToArray()); UL.TellClient("Player " + target.Name + " HWID (^2" + target.HWID.ToUpper() + "^7) успешно забанен", player); MessReason = MessReason.Replace("", "HWID").Replace("", target.HWID.ToUpper()); Utilities.ExecuteCommand(Command + " " + target.GetClientNum() + " \"" + MessReason + "\""); if (!string.IsNullOrEmpty(ServerSay)) { ServerSay = ServerSay.Replace("", target.Name); UL.ServerSay(ServerSay); } } return EventEat.EatGame; } else UL.TellClient("^1Имя не найдено или принадлежит нескольким игрокам", player); return EventEat.EatGame; } } #endregion #region clantag if (message.StartsWith("!banclantag", StringComparison.InvariantCultureIgnoreCase)) { if (parsed.Length <= 1) { Utilities.RawSayTo(player, "^2Используйте^7: !banclantag "); return EventEat.EatGame; } if (parsed.Length > 1) { Entity target = UL.GET.GetClient(parsed[1]); if (target != null) { BannedPlayers = new List(File.ReadAllLines(path)); bool abort = false; try { for (int i = 0; i < BannedPlayers.Count; i++) { if (!string.IsNullOrWhiteSpace(BannedPlayers[i])) { string line = BannedPlayers[i]; string ClanTagBanned = line.Split(';')[6]; if (ClanTagBanned == target.GetClantag().ToLower()) { UL.TellClient("CLANTAG ^1" + target.GetClantag().ToLower() + "^7 уже есть в списке банов", player); UL.ServerPrint("CLANTAG ^1" + target.GetClantag().ToLower() + "^7 уже есть в списке банов"); abort = true; break; } } } } catch { } //NAME,NAMEBAN,GUID,XUID,IP,HWID,CLANTAG,XNADDR if (!abort) { BannedPlayers.Add(target.Name + ";;;;;;" + target.GetClantag().ToLower() + ";;"); File.WriteAllLines(path, BannedPlayers.ToArray()); UL.TellClient("Player " + target.Name + " ClanTag (^2" + target.GetClantag().ToUpper() + "^7) успешно забанен", player); MessReason = MessReason.Replace("", "CLANTAG").Replace("", target.GetClantag()); Utilities.ExecuteCommand(Command + " " + target.GetClientNum() + " \"" + MessReason + "\""); if (!string.IsNullOrEmpty(ServerSay)) { ServerSay = ServerSay.Replace("", target.Name); UL.ServerSay(ServerSay); } } return EventEat.EatGame; } else Utilities.RawSayTo(player, "^1Имя не найдено или принадлежит нескольким игрокам"); return EventEat.EatGame; } } #endregion #region xnaddr if (message.StartsWith("!banxnaddr", StringComparison.InvariantCultureIgnoreCase)) { if (parsed.Length <= 1) { Utilities.RawSayTo(player, "^2Используйте^7: !banxnaddr "); return EventEat.EatGame; } if (parsed.Length > 1) { Entity target = UL.GET.GetClient(parsed[1]); if (target != null) { BannedPlayers = new List(File.ReadAllLines(path)); bool abort = false; try { for (int i = 0; i < BannedPlayers.Count; i++) { if (!string.IsNullOrWhiteSpace(BannedPlayers[i])) { string line = BannedPlayers[i]; string XNADDRBanned = line.Split(';')[7]; if (XNADDRBanned == target.GetXNAddr().ToLower()) { UL.TellClient("XNADDR ^1" + target.GetXNAddr().ToLower() + "^7 уже есть в списке банов", player); UL.ServerPrint("XNADDR ^1" + target.GetXNAddr().ToLower() + "^7 уже есть в списке банов"); abort = true; break; } } } } catch { } //NAME,NAMEBAN,GUID,XUID,IP,HWID,CLANTAG,XNADDR if (!abort) { BannedPlayers.Add(target.Name + ";;;;;;;" + target.GetXNAddr().ToLower() + ";"); File.WriteAllLines(path, BannedPlayers.ToArray()); UL.TellClient("Player " + target.Name + " XNADDR (^2" + target.GetXNAddr().ToUpper() + "^7) успешно забанен", player); MessReason = MessReason.Replace("", "XNADDR").Replace("", target.GetXNAddr()); Utilities.ExecuteCommand(Command + " " + target.GetClientNum() + " \"" + MessReason + "\""); if (!string.IsNullOrEmpty(ServerSay)) { ServerSay = ServerSay.Replace("", target.Name); UL.ServerSay(ServerSay); } } return EventEat.EatGame; } else Utilities.RawSayTo(player, "^1Имя не найдено или принадлежит нескольким игрокам"); return EventEat.EatGame; } } #endregion #region all if (message.StartsWith("!totalban", StringComparison.InvariantCultureIgnoreCase)) { try { if (parsed.Length <= 1) { Utilities.RawSayTo(player, "^2Используйте^7: !totalban "); return EventEat.EatGame; } if (parsed.Length > 1) { Entity target = UL.GET.GetClient(parsed[1]); if (target != null) { BannedPlayers = new List(File.ReadAllLines(path)); //NAME,NAMEBAN,GUID,XUID,IP,HWID,CLANTAG,XNADDR string TargetIP = ""; if (SUBIP) TargetIP = string.Concat(target.IP.Address.ToString().Split('.')[0], ".", target.IP.Address.ToString().Split('.')[1], ".*.*"); else TargetIP = target.IP.Address.ToString(); BannedPlayers.Add(target.Name + ";" + target.Name.ToLower() + ";" + target.GUID.ToString() + ";" + target.GetXUID() + ";" + TargetIP + ";" + target.HWID.ToLower() + ";" + target.GetClantag().ToLower() + ";" + target.GetXNAddr().ToLower() + ";"); File.WriteAllLines(path, BannedPlayers.ToArray()); UL.TellClient("Player (^2" + target.Name + "^7) был забанен по всем параметрам", player); MessReason = MessReason.Replace("", "NAME, GUID, XUID, IP, HWID, CLANTAG, XNADDR").Replace("", ""); Utilities.ExecuteCommand(Command + " " + target.GetClientNum() + " \"" + MessReason + "\""); if (!string.IsNullOrEmpty(ServerSay)) { ServerSay = ServerSay.Replace("", target.Name); UL.ServerSay(ServerSay); } } else Utilities.RawSayTo(player, "^1Имя не найдено или принадлежит нескольким игрокам"); return EventEat.EatGame; } } catch (Exception t) { UL.ServerPrint("ERROR.COMMAND(!TOTALBAN): " + t.Message); } } #endregion } #region know if (message.StartsWith("!ip", StringComparison.InvariantCultureIgnoreCase)) { if (parsed.Length > 1) { UL.TellClient("^2Use^7: !ip", player); return EventEat.EatGame; } if (parsed.Length <= 1) { UL.TellClient("^2Your IP^7: " + player.IP.Address.ToString(), player); UL.ServerPrint("Your IP: " + player.IP.Address.ToString() + " (" + player.Name + ")"); return EventEat.EatGame; } } if (message.StartsWith("!hwid", StringComparison.InvariantCultureIgnoreCase)) { if (parsed.Length > 1) { UL.TellClient("^2Use^7: !hwid", player); return EventEat.EatGame; } if (parsed.Length <= 1) { UL.TellClient("^2Your HWID^7: " + player.HWID.ToUpper(), player); UL.ServerPrint("Your HWID: " + player.HWID.ToUpper() + " (" + player.Name + ")"); return EventEat.EatGame; } } if (message.StartsWith("!xuid", StringComparison.InvariantCultureIgnoreCase)) { if (parsed.Length > 1) { UL.TellClient("^2Use^7: !xuid", player); return EventEat.EatGame; } if (parsed.Length <= 1) { UL.TellClient("^2Your XUID^7: " + player.GetXUID().ToUpper(), player); UL.ServerPrint("Your XUID: " + player.GetXUID().ToUpper() + " (" + player.Name + ")"); return EventEat.EatGame; } } if (message.StartsWith("!guid", StringComparison.InvariantCultureIgnoreCase)) { if (parsed.Length > 1) { UL.TellClient("^2Use^7: !guid", player); return EventEat.EatGame; } if (parsed.Length <= 1) { UL.TellClient("^2Your GUID^7: " + player.GUID.ToString().ToUpper(), player); UL.ServerPrint("Your GUID: " + player.GUID.ToString().ToUpper() + " (" + player.Name + ")"); return EventEat.EatGame; } } if (message.StartsWith("!clantag", StringComparison.InvariantCultureIgnoreCase)) { if (parsed.Length > 1) { UL.TellClient("^2Use^7: !clantag", player); return EventEat.EatGame; } if (parsed.Length <= 1) { UL.TellClient("^2Your CLANTAG^7: " + player.GetClantag().ToUpper(), player); UL.ServerPrint("^2Your CLANTAG^7: " + player.GetClantag().ToUpper() + " (" + player.Name + ")"); } } if (message.StartsWith("!xnaddr", StringComparison.InvariantCultureIgnoreCase)) { if (parsed.Length > 1) { UL.TellClient("^2Use^7: !xnaddr", player); return EventEat.EatGame; } if (parsed.Length <= 1) { UL.TellClient("^2Your XNADDR^7: " + player.GetXNAddr().ToUpper(), player); UL.ServerPrint("^2Your XNADDR^7: " + player.GetXNAddr().ToUpper() + " (" + player.Name + ")"); } } #endregion return EventEat.EatNone; } public void CheckBan(Entity player) { try { string IpPlayer = player.IP.Address.ToString(); if (SUBIP) IpPlayer = player.IP.Address.ToString().Split('.')[0] + "." + player.IP.Address.ToString().Split('.')[1] + ".*.*"; #region AntiNoName if (Encoding.UTF8.GetByteCount(player.Name) != player.Name.Length || Array.Exists(player.Name.ToCharArray(), c => (int)c <= 31) || Array.Exists(player.Name.ToCharArray(), c => (int)c >= 191)) { MessReason = MessReason.Replace("", "AntiNoName").Replace("", player.Name); Utilities.ExecuteCommand(Command + " " + player.GetClientNum() + " \"" + MessReason + "\""); UL.ServerPrint("[TotalBan]: Player " + player.Name + " has been kicked. AntiNoName[Detected]: " + player.Name + " (banned)"); } #endregion for (int i = 0; i < BannedPlayers.Count; i++) { if (!string.IsNullOrWhiteSpace(BannedPlayers[i])) { //NAME,NAMEBAN,GUID,XUID,IP,HWID,CLANTAG,XNADDR string line = BannedPlayers[i]; string NAMEBanned = line.Split(';')[1]; string GUIDBanned = line.Split(';')[2]; string XUIDBanned = line.Split(';')[3]; string IPBanned = line.Split(';')[4]; if (SUBIP) IPBanned = IPBanned.Split('.')[0] + "." + IPBanned.Split('.')[1] + ".*.*"; string HWIDBanned = line.Split(';')[5]; string CLANTAGBanned = line.Split(';')[6]; string XNADDRBanned = line.Split(';')[7]; if (NAMEBanned == player.Name.ToLower()) { #region NAMEs MessReason = MessReason.Replace("", "NAME").Replace("", player.Name); Utilities.ExecuteCommand(Command + " " + player.GetClientNum() + " \"" + MessReason + "\""); UL.ServerPrint("[TotalBan]: Player " + player.Name + " has been kicked. NAME (banned)"); break; #endregion } else if (GUIDBanned == player.GUID.ToString()) { #region GUIDs MessReason = MessReason.Replace("", "GUID").Replace("", player.GUID.ToString()); Utilities.ExecuteCommand(Command + " " + player.GetClientNum() + " \"" + MessReason + "\""); UL.ServerPrint("[TotalBan]: Player " + player.Name + " has been kicked. GUID: " + player.GUID.ToString() + " (banned)"); break; #endregion } else if (XUIDBanned == player.GetXUID()) { #region XUIDs MessReason = MessReason.Replace("", "XUID").Replace("", player.GetXUID()); Utilities.ExecuteCommand(Command + " " + player.GetClientNum() + " \"" + MessReason + "\""); UL.ServerPrint("[TotalBan]: Player " + player.Name + " has been kicked. XUID: " + player.GetXUID() + " (banned)"); break; #endregion } else if (IPBanned == IpPlayer) { #region IPs MessReason = MessReason.Replace("", "IP").Replace("", player.IP.Address.ToString()); Utilities.ExecuteCommand(Command + " " + player.GetClientNum() + " \"" + MessReason + "\""); UL.ServerPrint("[TotalBan]: Player " + player.Name + " has been kicked. IP: " + IpPlayer + " (banned)"); break; #endregion } else if (HWIDBanned == player.HWID.ToLower()) { #region HWIDs MessReason = MessReason.Replace("", "HWID").Replace("", player.HWID.ToUpper()); Utilities.ExecuteCommand(Command + " " + player.GetClientNum() + " \"" + MessReason + "\""); UL.ServerPrint("[TotalBan]: Player " + player.Name + " has been kicked. HWID: " + player.HWID.ToUpper() + " (banned)"); break; #endregion } else if (CLANTAGBanned == player.GetClantag().ToLower()) { #region CLANTAGs MessReason = MessReason.Replace("", "CLANTAG").Replace("", player.GetClantag()); Utilities.ExecuteCommand(Command + " " + player.GetClientNum() + " \"" + MessReason + "\""); UL.ServerPrint("[TotalBan]: Player " + player.Name + " has been kicked. CLANTAG: " + player.GetClantag().ToUpper() + " (banned)"); break; #endregion } else if (XNADDRBanned == player.GetXNAddr().ToLower()) { #region XNADDRs MessReason = MessReason.Replace("", "XNADDR").Replace("", player.GetXNAddr().ToUpper()); Utilities.ExecuteCommand(Command + " " + player.GetClientNum() + " \"" + MessReason + "\""); UL.ServerPrint("[TotalBan]: Player " + player.Name + " has been kicked. XNADDR: " + player.GetXNAddr().ToUpper() + " (banned)"); break; #endregion } } } } catch (Exception e) { //UL.ServerPrint("ERROR Totalban [CheckBan]: " + e.Message); } } private static void CheckForFile() { if (!File.Exists("scripts\\sv_config.ini")) { Log.Info("SV_CONFIG.INI HAS CREATED (SCRIPTS\\\\SV_CONFIG.INI)"); using (StreamWriter sw = new StreamWriter("scripts\\sv_config.ini", true, Encoding.UTF8)) { sw.WriteLine("[TotalBan]"); sw.WriteLine("ServerSay=^1 ^7(this player is banned)"); sw.WriteLine("MessReason=[TotalBan]: This is banned."); sw.WriteLine("ServerCommand=dropclient"); sw.WriteLine("SUBIP=false"); sw.WriteLine("Immunes=playerIP, playerHWID, playerGUID, playerXUID, playerName"); sw.WriteLine("Admins=playerIP, playerHWID, playerGUID, playerXUID, playerName"); } } if (!Directory.Exists("scripts\\TotalBan")) { Directory.CreateDirectory("scripts\\TotalBan"); } if (!File.Exists("scripts\\TotalBan\\Bans.txt")) { using (StreamWriter sw = new StreamWriter("scripts\\TotalBan\\Bans.txt", true, Encoding.UTF8)) { sw.WriteLine(""); } Log.Info("BANS.TXT HAS CREATED (SCRIPTS\\\\TOTALBAN\\\\BANS.TXT)"); } } private bool IsImmune(Entity player) { return Immunes.Contains(player.Name.ToLower()) || Immunes.Contains(player.IP.Address.ToString().ToLower()) || Immunes.Contains(player.HWID.ToLower()) || Immunes.Contains(player.GUID.ToString().ToLower()) || Immunes.Contains(player.GetXUID().ToLower()) || Immunes.Contains(player.GetClantag().ToLower()) || Immunes.Contains(player.GetXNAddr().ToLower()); } private bool IsAdmin(Entity player) { return Admins.Contains(player.Name.ToLower()) || Admins.Contains(player.IP.Address.ToString().ToLower()) || Admins.Contains(player.HWID.ToLower()) || Admins.Contains(player.GUID.ToString().ToLower()) || Admins.Contains(player.GetXUID().ToLower()) || Admins.Contains(player.GetClantag().ToLower()) || Admins.Contains(player.GetXNAddr().ToLower()); } } }