- Code: Select all
using System;
namespace MCDzienny
{
public class CmdZombiechat : Command
{
public override string name { get { return "zombiechat"; } }
public override string shortcut { get { return "zchat"; } }
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 :)
{
SendZombie(p, null, message);
stopIt = true;
}
}
void SendZombie(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 Zombies %f-" + p.color + p.PublicName + "%f- " + message);
});
}
else
{
who.SendMessage("%eTo Zombies %f-" + p.color + p.PublicName + "%f- " + message);
}
}
string zombie()
{
string builder = "zombie: ";
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 "zombie":
Player.SendMessage(p, zombie());
break;
case "remove":
Player.ChatOther -= ChatOE;
Player.Joined -= PlayerJE;
Player.PlayerChatEvent -= AddStuff;
Player.SendMessage(p, "Events removed");
break;
default:
p.ExtraData["zchat"] = !(bool)p.ExtraData["zchat"];
Player.SendMessage(p, "Zombie chat has been set to " + p.ExtraData["zchat"].ToString() + ".");
break;
}
}
public override void Help(Player p)
{
Player.SendMessage(p, "/%azombiechat" + Server.DefaultColor + " -- turns zombie chat on/off");
Player.SendMessage(p, "Shortcut: /zchat or use - as first letter in message");
}
public void AddVars(Player p)
{
if (!p.ExtraData.ContainsKey("zchat"))
p.ExtraData.Add("zchat", false);
}
public void PlayerJE(object sender, PlayerEventArgs e)
{
AddVars(e.Player);
}
public void ChatOE(object sender, ChatOtherEventArgs e)
{
if ((bool)e.From.ExtraData["zchat"] == true)
{
Player.players.ForEach(delegate(Player pl)
{
if (pl.isZombie)
{
string message = e.Message.Substring(e.Message.IndexOf(':') + 1);
SendZombie(e.From, e.To, message);
}
});
e.Handled = true;
}
}
}
}