Maybe a hidden command for highest rank?
I think it will be a good solution to things like sphere spam without having to separate drawing commands into different permissions.
Code: Select all
public bool StopDraw;
public bool StartDraw;
public string StopDrawBy = "";
public bool StopDrawing(string by)
{
if (by == null) throw new ArgumentNullException("by");
if (!StopDraw)
{
StopDraw = true;
StopDrawBy = by;
return true;
}
else
{
return false;
}
}
public bool StartDrawing()
{
if (StopDraw)
{
StopDraw = false;
return true;
}
else
{
return false;
}
}
Code: Select all
static readonly CommandDescriptor CdStopDraw = new CommandDescriptor
{
Name = "removedraw",
Category = CommandCategory.Moderation,
IsConsoleSafe = true,
Permissions = new[] { Permission.Disconnect },
Help = "Disables drawing commands from a seclected player. To undo, use /allowdraw PlayerName",
Usage = "/removedraw PlayerName",
Handler = StopDraw
};
internal static void StopDraw(Player player, Command cmd)
{
string name = cmd.Next();
if (name == null)
{
CdStopDraw.PrintUsage(player);
return;
}
Player target = Server.FindPlayerOrPrintMatches(player, name, false);
if (target == null) return;
if (player.Can(Permission.Disconnect, target.Info.Rank))
{
target.Info.IsHidden = false;
if (target.Info.StopDrawing(player.Name))
{
Server.Message("{0}&S had their drawing commands disabled by {1}",
target.ClassyName, player.ClassyName);
}
else
{
player.Message("{0}&s already had their drawing commands disabled", target.ClassyName);
}
}
else
{
player.Message("You can only use /removedraw on players ranked {0}&S or lower",
player.Info.Rank.GetLimit(Permission.Ban).ClassyName);
player.Message("{0}&S is ranked {1}", target.ClassyName, target.Info.Rank.ClassyName);
}
}
static readonly CommandDescriptor CdStartDraw = new CommandDescriptor
{
Name = "allowdraw",
Category = CommandCategory.Moderation,
IsConsoleSafe = true,
Permissions = new[] { Permission.Disconnect },
Usage = "/allowdraw PlayerName",
Help = "",
Handler = StartDraw
};
internal static void StartDraw(Player player, Command cmd)
{
string name = cmd.Next();
if (name == null)
{
CdUnWarn.PrintUsage(player);
return;
}
Player target = Server.FindPlayerOrPrintMatches(player, name, false);
if (target == null) return;
if (player.Can(Permission.Disconnect, target.Info.Rank))
{
if (target.Info.StartDrawing())
{
Server.Message("{0}&S had their drawing commands enabled by {1}.", target.ClassyName, player.ClassyName);
}
else
{
player.Message("{0}&S can already use drawing commands.", target.ClassyName);
}
}
else
{
player.Message("You can only use /allowdraw on players ranked {0}&S or lower",
player.Info.Rank.GetLimit(Permission.Ban).ClassyName);
player.Message("{0}&S is ranked {1}", target.ClassyName, target.Info.Rank.ClassyName);
}
}
Code: Select all
if (player.Info.StopDraw)
{
player.Message("&SYour drawing commands are disabled");
return;
}