using System; using System.Collections.Generic; using InfinityScript; using System.IO; using Utility; namespace BlockChat { public class BlockChat : BaseScript { int BanTime; string blockmessage; string ServerSaying; bool end; string language; string ImmunePlayers; private string path_ChatBlock = "scripts\\ChatBlock\\ChatBlock.txt"; private List Immunes = new List(); private List BannedChatPlayers = new List(); public BlockChat() { Log.Info("Script BlockChat by frst_ loaded. v1.0.0.4 | Mordekai74.3dn.ru"); CheckForFile(); blockmessage = UL.GET.GetServerCFG("BlockChat", "MessageTo", string.Empty); ServerSaying = UL.GET.GetServerCFG("BlockChat", "ServerSay", string.Empty); language = UL.GET.GetServerCFG("BlockChat", "Language", "rus"); ImmunePlayers = UL.GET.GetServerCFG("BlockChat", "Immune", ""); BannedChatPlayers = new List(File.ReadAllLines(path_ChatBlock)); //read ban file if (!ImmunePlayers.Equals("")) { Immunes = new List(ImmunePlayers.Split(',')); } OnInterval(1000 * 60, () => { BannedChatPlayers = new List(File.ReadAllLines(path_ChatBlock)); return true; }); end = true; OnNotify("game_over", () => { end = false; }); OnInterval(5000, () => { foreach (Entity player in Players) { if (!player.Name.Equals("")) { Check_BlockChat(player); } } return end; }); } public override EventEat OnSay2(Entity player, string name, string Message) { string[] parsed = Message.Split(null as char[], StringSplitOptions.RemoveEmptyEntries); if (IsBlocked_inChat(player)) { player.Call("playlocalsound", "disable_activeperk"); return EventEat.EatGame; } if (Message.ToLower().StartsWith("!block", StringComparison.InvariantCultureIgnoreCase) || Message.ToLower().StartsWith("!bl", StringComparison.InvariantCultureIgnoreCase)) { if (parsed.Length > 2) { Entity target = UL.GET.GetClient(parsed[1]); if (target != null) { if (IsImmune(target)) { if (language == "rus") UL.TellClient("Игрок ^1" + target.Name + "^7 имеет иммунитет.", player); else UL.TellClient("Player ^1" + target.Name + "^7 is immune.", player); return EventEat.EatGame; } else { string banTime = parsed[3]; bool isNumber = int.TryParse(banTime, out BanTime); if (!isNumber && banTime.ToLower() != "infinity") { if (language == "rus") UL.TellClient("^1Неверное значение. ^7Используйте: ^2!block ^7| ^2!bt ^7