- Code: Select all
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<ChatOtherEventArgs>(ChatOE);
Player.Joined += new EventHandler<PlayerEventArgs>(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;
}
}
}
}