using System; namespace MCDzienny { public class CmdHumanchat : Command { public override string name { get { return "humanchat"; } } public override string shortcut { get { return "hchat"; } } public override string type { get { return "other"; } } public override bool museumUsable { get { return false; } } public override LevelPermission defaultRank { get { return LevelPermission.Banned; } } public override bool ConsoleAccess { get { return true; } } public override void Init() { Player.ChatOther += new EventHandler(ChatOE); Player.Joined += new EventHandler(PlayerJE); Player.PlayerChatEvent += AddStuff; Player.players.ForEach(delegate(Player pl) { AddVars(pl); }); } void AddStuff(Player p, ref string message, ref bool stopIt) { if (message[0] == '^' || message[2] == '^') //take in mind color chat people :) { SendHuman(p, null, message); stopIt = true; } } void SendHuman(Player p, Player who, string message) { if (who == null) { message = message.Substring(message.IndexOf('^') + 1); Player.players.ForEach(delegate(Player pl) { if (!pl.isZombie) pl.SendMessage("%eTo Humans Users %f-" + p.color + p.PublicName + "%f- " + message); }); } else { who.SendMessage("%eTo Humans %f-" + p.color + p.PublicName + "%f- " + message); } } string human() { string builder = "human: "; Player.players.ForEach(delegate(Player pl) { if (!pl.isZombie) builder += pl.PublicName + ", "; }); return builder; } public override void Use(Player p, string message) { switch (message) { case "human": Player.SendMessage(p, human()); break; case "remove": Player.ChatOther -= ChatOE; Player.Joined -= PlayerJE; Player.PlayerChatEvent -= AddStuff; Player.SendMessage(p, "Events removed"); break; default: p.ExtraData["hchat"] = !(bool)p.ExtraData["hchat"]; Player.SendMessage(p, "Human chat has been set to " + p.ExtraData["hchat"].ToString() + "."); break; } } public override void Help(Player p) { Player.SendMessage(p, "/%ahumanchat" + Server.DefaultColor + " -- turns admin chat on/off"); Player.SendMessage(p, "Shortcut: /hchat or use ^ as first letter in message"); } public void AddVars(Player p) { if (!p.ExtraData.ContainsKey("hchat")) p.ExtraData.Add("hchat", false); } public void PlayerJE(object sender, PlayerEventArgs e) { AddVars(e.Player); } public void ChatOE(object sender, ChatOtherEventArgs e) { if ((bool)e.From.ExtraData["hchat"] == true) { Player.players.ForEach(delegate(Player pl) { if (!pl.isZombie) { string message = e.Message.Substring(e.Message.IndexOf(':') + 1); SendHuman(e.From, e.To, message); } }); e.Handled = true; } } } }