public override void Use(Player p, string message) { if (message.ToLower() != "force" && message.ToLower() != "help") { if (p == null || p.group.Permission > defaultRank) { MCForge_.Gui.Program.UpdateCheck(false, p); } else { Player.SendMessage(p, "Ask an " + Group.findPerm(defaultRank).name + "+ to do it!"); } } else if (message.ToLower() == "help") { Help(p); return; } else { if (p == null || p.group.Permission > defaultRank) { MCForge_.Gui.Program.PerformUpdate(); } else { Player.SendMessage(p, "Ask an " + Group.findPerm(defaultRank).name + "+ to do it!"); } } }
public override void Use(Player p, string message) { Level foundLevel; if (message == "") { foundLevel = p.level; } else { foundLevel = Level.Find(message); } if (foundLevel == null) { Player.SendMessage(p, "Could not find specified level."); return; } Player.SendMessage(p, "&b" + foundLevel.name + Server.DefaultColor + ": Width=" + foundLevel.width.ToString() + " Height=" + foundLevel.depth.ToString() + " Depth=" + foundLevel.height.ToString()); switch (foundLevel.physics) { case 0: Player.SendMessage(p, "Physics are &cOFF" + Server.DefaultColor + " on &b" + foundLevel.name); break; case 1: Player.SendMessage(p, "Physics are &aNormal" + Server.DefaultColor + " on &b" + foundLevel.name); break; case 2: Player.SendMessage(p, "Physics are &aAdvanced" + Server.DefaultColor + " on &b" + foundLevel.name); break; case 3: Player.SendMessage(p, "Physics are &aHardcore" + Server.DefaultColor + " on &b" + foundLevel.name); break; case 4: Player.SendMessage(p, "Physics are &aInstant" + Server.DefaultColor + " on &b" + foundLevel.name); break; } try { Player.SendMessage(p, "Build rank = " + Group.findPerm(foundLevel.permissionbuild).color + Group.findPerm(foundLevel.permissionbuild).trueName + Server.DefaultColor + " : Visit rank = " + Group.findPerm(foundLevel.permissionvisit).color + Group.findPerm(foundLevel.permissionvisit).trueName); } catch (Exception e) { Server.ErrorLog(e); } Player.SendMessage(p, "BuildMax Rank = " + Group.findPerm(foundLevel.perbuildmax).color + Group.findPerm(foundLevel.perbuildmax).trueName + Server.DefaultColor + " : VisitMax Rank = " + Group.findPerm(foundLevel.pervisitmax).color + Group.findPerm(foundLevel.pervisitmax).trueName); if (foundLevel.guns == true) { Player.SendMessage(p, "&cGuns &eare &aonline &eon " + foundLevel.name + "."); } else { Player.SendMessage(p, "&cGuns &eare &coffline &eon " + foundLevel.name + "."); } if (Directory.Exists(@Server.backupLocation + "/" + foundLevel.name)) { int latestBackup = Directory.GetDirectories(@Server.backupLocation + "/" + foundLevel.name).Length; Player.SendMessage(p, "Latest backup: &a" + latestBackup + Server.DefaultColor + " at &a" + Directory.GetCreationTime(@Server.backupLocation + "/" + foundLevel.name + "/" + latestBackup).ToString("yyyy-MM-dd HH:mm:ss")); // + Directory.GetCreationTime(@Server.backupLocation + "/" + latestBackup + "/").ToString("yyyy-MM-dd HH:mm:ss")); } else { Player.SendMessage(p, "No backups for this map exist yet."); } }
private string getColor(string commName) { foreach (GrpCommands.rankAllowance aV in GrpCommands.allowedCommands) { if (aV.commandName == commName) { if (Group.findPerm(aV.lowestRank) != null) { return(Group.findPerm(aV.lowestRank).color); } } } return("&f"); }
public override void Use(Player p, string message) { int bancount = Group.findPerm(LevelPermission.Banned).playerList.All().Count; DataTable count = MySQL.fillData("SELECT COUNT(id) FROM Players"); Player.SendMessage(p, "A total of " + count.Rows[0]["COUNT(id)"] + " unique players have visited this server."); Player.SendMessage(p, "Of these players, " + bancount + " have been banned."); count.Dispose(); int playerCount = 0; int hiddenCount = 0; foreach (Player pl in Player.players) { if (!pl.hidden || p.group.Permission > LevelPermission.AdvBuilder || Server.devs.Contains(p.name.ToLower())) { playerCount++; if (pl.hidden && (p.group.Permission > LevelPermission.AdvBuilder || Server.devs.Contains(p.name.ToLower()))) { hiddenCount++; } } } if (playerCount == 1) { if (hiddenCount == 0) { Player.SendMessage(p, "There is 1 player currently online."); } else { Player.SendMessage(p, "There is 1 player currently online (" + hiddenCount + " hidden)."); } } else { if (hiddenCount == 0) { Player.SendMessage(p, "There are " + playerCount + " players online."); } else { Player.SendMessage(p, "There are " + playerCount + " players online (" + hiddenCount + " hidden)."); } } }
public override void Use(Player p, string message) { string[] data; if (message == "") { Help(p); return; } if (message.Length <= 3) { Help(p); } else { if (Ban.Isbanned(message)) { data = Ban.Getbandata(message); // string[] end = { bannedby, reason, timedate, oldrank, stealth }; // usefull to know :-) string reason = data[1].Replace("%20", " "); string datetime = data[2].Replace("%20", " "); Player.SendMessage(p, "&9User: &e" + message); Player.SendMessage(p, "&9Banned by: &e" + data[0]); Player.SendMessage(p, "&9Reason: &e" + reason); Player.SendMessage(p, "&9Date and time: &e" + datetime); Player.SendMessage(p, "&9Old rank: &e" + data[3]); string stealth; if (data[4] == "true") { stealth = "&aYes"; } else { stealth = "&cNo"; } Player.SendMessage(p, "&9Stealth banned: " + stealth); } else if (!Group.findPerm(LevelPermission.Banned).playerList.Contains(message)) { Player.SendMessage(p, "That player isn't banned"); } else if (!Ban.Isbanned(message)) { Player.SendMessage(p, "Couldn't find ban info about " + message + "."); } } }
public override void Use(Player p, string message) { if (message.ToLower() == "superops" || message.ToLower() == "ops" || message.ToLower() == "advbuilders" || message.ToLower() == "builders") { p.SendMessage("You cannot try to promote yourself with /text! You have been reported to all Ops!"); Player.GlobalMessageOps(p.color + p.name + Server.DefaultColor + " tried to promote theirself by using /text!!"); Server.s.Log(p.name + " tried to promote themselves using /text!!"); return; } // Create the directory if it doesn't exist if (!Directory.Exists("extra/text/")) { Directory.CreateDirectory("extra/text"); } // Show the help if the message doesn't contain enough parameters if (message.IndexOf(' ') == -1) { Help(p); return; } string[] param = message.Split(' '); try { if (param[0].ToLower() == "delete") { string filename = SanitizeFileName(param[1]) + ".txt"; if (File.Exists("extra/text/" + filename)) { File.Delete("extra/text/" + filename); p.SendMessage("Deleted file: " + filename); return; } else { p.SendMessage("Could not find file: " + filename); return; } } else { bool again = false; string filename = SanitizeFileName(param[0]) + ".txt"; string path = "extra/text/" + filename; // See if we match the group string group = Group.findPerm(LevelPermission.Guest).name; if (Group.Find(param[1]) != null) { group = Group.Find(param[1]).name; again = true; } message = message.Substring(message.IndexOf(' ') + 1); if (again) { message = message.Substring(message.IndexOf(' ') + 1); } string contents = message; if (contents == "") { Help(p); return; } if (!File.Exists(path)) { contents = "#" + group + System.Environment.NewLine + contents; } else { contents = " " + contents; } File.AppendAllText(path, contents); p.SendMessage("Added text to: " + filename); } } catch { Help(p); } }
public override void Use(Player p, string message) { // TODO try { if (message != "") { Help(p); return; } message = ""; string message2 = ""; bool Once = false; Server.levels.ForEach(delegate(Level level) { if (p != null && level.permissionvisit <= p.group.Permission) { if (Group.findPerm(level.permissionbuild) != null) { message += ", " + Group.findPerm(level.permissionbuild).color + level.name + " &b[" + level.physics + "]"; } else { message += ", " + level.name + " &b[" + level.physics + "]"; } } else { if (!Once) { Once = true; if (Group.findPerm(level.permissionvisit) != null) { message2 += Group.findPerm(level.permissionvisit).color + level.name + " &b[" + level.physics + "]"; } else { message2 += level.name + " &b[" + level.physics + "]"; } } else { if (Group.findPerm(level.permissionvisit) != null) { message2 += ", " + Group.findPerm(level.permissionvisit).color + level.name + " &b[" + level.physics + "]"; } else { message2 += ", " + level.name + " &b[" + level.physics + "]"; } } } }); Player.SendMessage(p, "Loaded: " + message.Remove(0, 2)); if (message2 != "") { Player.SendMessage(p, "Can't Goto: " + message2); } Player.SendMessage(p, "Use &4/unloaded for unloaded levels."); } catch (Exception e) { Server.ErrorLog(e); } }
public override void Use(Player p, string message) { if (String.IsNullOrEmpty(message)) { Help(p); return; } string[] s = message.ToLower().Split(' '); if (p == null && (s[0] == "go" || s[0] == "setup")) { Player.SendMessage(p, "The \"" + s[0] + "\" command can only be used in-game!"); return; } if (s[0] == "go") { if (!Server.lava.active) { Player.SendMessage(p, "There is no Lava Survival game right now."); return; } Command.all.Find("goto").Use(p, Server.lava.map.name); return; } if (s[0] == "info") { if (!Server.lava.active) { Player.SendMessage(p, "There is no Lava Survival game right now."); return; } if (!Server.lava.roundActive) { Player.SendMessage(p, "The round of Lava Survival hasn't started yet."); return; } Server.lava.AnnounceRoundInfo(p, p == null); Server.lava.AnnounceTimeLeft(!Server.lava.flooded, true, p, p == null); return; } if (p == null || p.group.Permission >= Server.lava.controlRank) { if (s[0] == "start") { switch (Server.lava.Start(s.Length > 1 ? s[1] : "")) { case 0: Player.GlobalMessage("Lava Survival has started! Join the fun with /ls go"); return; case 1: Player.SendMessage(p, "There is already an active Lava Survival game."); return; case 2: Player.SendMessage(p, "You must have at least 3 configured maps to play Lava Survival."); return; case 3: Player.SendMessage(p, "The specified map doesn't exist."); return; default: Player.SendMessage(p, "An unknown error occurred."); return; } } if (s[0] == "stop") { switch (Server.lava.Stop()) { case 0: Player.GlobalMessage("Lava Survival has ended! We hope you had fun!"); return; case 1: Player.SendMessage(p, "There isn't an active Lava Survival game."); return; default: Player.SendMessage(p, "An unknown error occurred."); return; } } if (s[0] == "end") { if (!Server.lava.active) { Player.SendMessage(p, "There isn't an active Lava Survival game."); return; } if (Server.lava.roundActive) { Server.lava.EndRound(); } else if (Server.lava.voteActive) { Server.lava.EndVote(); } else { Player.SendMessage(p, "There isn't an active round or vote to end."); } return; } } if (p == null || p.group.Permission >= Server.lava.setupRank) { if (s[0] == "setup") { if (s.Length < 2) { SetupHelp(p); return; } if (Server.lava.active) { Player.SendMessage(p, "You cannot configure Lava Survival while a game is active."); return; } if (s[1] == "map") { if (s.Length < 3) { SetupHelp(p, "map"); return; } Level foundLevel = Level.Find(s[2]); if (foundLevel == null) { Player.SendMessage(p, "The level must be loaded to add/remove it."); return; } else { if (foundLevel == Server.mainLevel) { Player.SendMessage(p, "You cannot use the main map for Lava Survival."); return; } if (Server.lava.HasMap(foundLevel.name)) { Server.lava.RemoveMap(foundLevel.name); foundLevel.motd = "ignore"; foundLevel.overload = 1500; foundLevel.unload = true; foundLevel.loadOnGoto = true; Level.SaveSettings(foundLevel); Player.SendMessage(p, "Map \"" + foundLevel.name + "\" has been removed."); return; } else { Server.lava.AddMap(foundLevel.name); LavaSurvival.MapSettings settings = Server.lava.LoadMapSettings(foundLevel.name); settings.blockFlood = new LavaSurvival.Pos((ushort)(foundLevel.width / 2), (ushort)(foundLevel.depth - 1), (ushort)(foundLevel.height / 2)); settings.blockLayer = new LavaSurvival.Pos(0, (ushort)(foundLevel.depth / 2), 0); ushort x = (ushort)(foundLevel.width / 2), y = (ushort)(foundLevel.depth / 2), z = (ushort)(foundLevel.height / 2); settings.safeZone = new LavaSurvival.Pos[] { new LavaSurvival.Pos((ushort)(x - 3), y, (ushort)(z - 3)), new LavaSurvival.Pos((ushort)(x + 3), (ushort)(y + 4), (ushort)(z + 3)) }; Server.lava.SaveMapSettings(settings); foundLevel.motd = "Lava Survival: " + foundLevel.name.Capitalize(); foundLevel.overload = 1000000; foundLevel.unload = false; foundLevel.loadOnGoto = false; Level.SaveSettings(foundLevel); Player.SendMessage(p, "Map \"" + foundLevel.name + "\" has been added."); return; } } } if (s[1] == "block") { if (!Server.lava.HasMap(p.level.name)) { Player.SendMessage(p, "Add the map before configuring it."); return; } if (s.Length < 3) { SetupHelp(p, "block"); return; } if (s[2] == "flood") { Player.SendMessage(p, "Place or destroy the block you want to be the total flood block spawn point."); CatchPos cpos; cpos.mode = 0; cpos.x = 0; cpos.y = 0; cpos.z = 0; p.blockchangeObject = cpos; p.ClearBlockchange(); p.Blockchange += new Player.BlockchangeEventHandler(Blockchange1); return; } if (s[2] == "layer") { Player.SendMessage(p, "Place or destroy the block you want to be the layer flood base spawn point."); CatchPos cpos; cpos.mode = 1; cpos.x = 0; cpos.y = 0; cpos.z = 0; p.blockchangeObject = cpos; p.ClearBlockchange(); p.Blockchange += new Player.BlockchangeEventHandler(Blockchange1); return; } SetupHelp(p, "block"); return; } if (s[1] == "safezone" || s[1] == "safe") { Player.SendMessage(p, "Place two blocks to determine the edges."); CatchPos cpos; cpos.mode = 2; cpos.x = 0; cpos.y = 0; cpos.z = 0; p.blockchangeObject = cpos; p.ClearBlockchange(); p.Blockchange += new Player.BlockchangeEventHandler(Blockchange1); return; } if (s[1] == "settings") { if (s.Length < 3) { Player.SendMessage(p, "Maps: &b" + Server.lava.Maps.Concatenate(", ")); Player.SendMessage(p, "Setup rank: " + Group.findPerm(Server.lava.setupRank).color + Group.findPerm(Server.lava.setupRank).trueName); Player.SendMessage(p, "Control rank: " + Group.findPerm(Server.lava.controlRank).color + Group.findPerm(Server.lava.controlRank).trueName); Player.SendMessage(p, "Start on server startup: " + (Server.lava.startOnStartup ? "&aON" : "&cOFF")); Player.SendMessage(p, "Send AFK to main: " + (Server.lava.sendAfkMain ? "&aON" : "&cOFF")); Player.SendMessage(p, "Vote count: &b" + Server.lava.voteCount); Player.SendMessage(p, "Vote time: &b" + Server.lava.voteTime + " minute" + (Server.lava.voteTime == 1 ? "" : "s")); return; } try { switch (s[2]) { case "sendafkmain": Server.lava.sendAfkMain = !Server.lava.sendAfkMain; Player.SendMessage(p, "Send AFK to main: " + (Server.lava.sendAfkMain ? "&aON" : "&cOFF")); break; case "votecount": Server.lava.voteCount = (byte)MathHelper.Clamp(decimal.Parse(s[3]), 2, 10); Player.SendMessage(p, "Vote count: &b" + Server.lava.voteCount); break; case "votetime": Server.lava.voteTime = double.Parse(s[3]); Player.SendMessage(p, "Vote time: &b" + Server.lava.voteTime + "minute" + (Server.lava.voteTime == 1 ? "" : "s")); break; default: SetupHelp(p, "settings"); return; } Server.lava.SaveSettings(); return; } catch { Player.SendMessage(p, "INVALID INPUT"); return; } } if (s[1] == "mapsettings") { if (!Server.lava.HasMap(p.level.name)) { Player.SendMessage(p, "Add the map before configuring it."); return; } LavaSurvival.MapSettings settings = Server.lava.LoadMapSettings(p.level.name); if (s.Length < 4) { Player.SendMessage(p, "Fast lava chance: &b" + settings.fast + "%"); Player.SendMessage(p, "Killer lava/water chance: &b" + settings.killer + "%"); Player.SendMessage(p, "Destroy blocks chance: &b" + settings.destroy + "%"); Player.SendMessage(p, "Water flood chance: &b" + settings.water + "%"); Player.SendMessage(p, "Layer flood chance: &b" + settings.layer + "%"); Player.SendMessage(p, "Layer height: &b" + settings.layerHeight + " block" + (settings.layerHeight == 1 ? "" : "s")); Player.SendMessage(p, "Layer count: &b" + settings.layerCount); Player.SendMessage(p, "Layer time: &b" + settings.layerInterval + " minute" + (settings.layerInterval == 1 ? "" : "s")); Player.SendMessage(p, "Round time: &b" + settings.roundTime + " minute" + (settings.roundTime == 1 ? "" : "s")); Player.SendMessage(p, "Flood time: &b" + settings.floodTime + " minute" + (settings.floodTime == 1 ? "" : "s")); Player.SendMessage(p, "Flood position: &b" + settings.blockFlood.ToString(", ")); Player.SendMessage(p, "Layer position: &b" + settings.blockLayer.ToString(", ")); Player.SendMessage(p, String.Format("Safe zone: &b({0}) ({1})", settings.safeZone[0].ToString(", "), settings.safeZone[1].ToString(", "))); return; } try { switch (s[2]) { case "fast": settings.fast = (byte)MathHelper.Clamp(decimal.Parse(s[3]), 0, 100); Player.SendMessage(p, "Fast lava chance: &b" + settings.fast + "%"); break; case "killer": settings.killer = (byte)MathHelper.Clamp(decimal.Parse(s[3]), 0, 100); Player.SendMessage(p, "Killer lava/water chance: &b" + settings.killer + "%"); break; case "destroy": settings.destroy = (byte)MathHelper.Clamp(decimal.Parse(s[3]), 0, 100); Player.SendMessage(p, "Destroy blocks chance: &b" + settings.destroy + "%"); break; case "water": settings.water = (byte)MathHelper.Clamp(decimal.Parse(s[3]), 0, 100); Player.SendMessage(p, "Water flood chance: &b" + settings.water + "%"); break; case "layer": settings.layer = (byte)MathHelper.Clamp(decimal.Parse(s[3]), 0, 100); Player.SendMessage(p, "Layer flood chance: &b" + settings.layer + "%"); break; case "layerheight": settings.layerHeight = int.Parse(s[3]); Player.SendMessage(p, "Layer height: &b" + settings.layerHeight + " block" + (settings.layerHeight == 1 ? "" : "s")); break; case "layercount": settings.layerCount = int.Parse(s[3]); Player.SendMessage(p, "Layer count: &b" + settings.layerCount); break; case "layertime": settings.layerInterval = double.Parse(s[3]); Player.SendMessage(p, "Layer time: &b" + settings.layerInterval + " minute" + (settings.layerInterval == 1 ? "" : "s")); break; case "roundtime": settings.roundTime = double.Parse(s[3]); Player.SendMessage(p, "Round time: &b" + settings.roundTime + " minute" + (settings.roundTime == 1 ? "" : "s")); break; case "floodtime": settings.floodTime = double.Parse(s[3]); Player.SendMessage(p, "Flood time: &b" + settings.floodTime + " minute" + (settings.floodTime == 1 ? "" : "s")); break; default: SetupHelp(p, "mapsettings"); return; } } catch { Player.SendMessage(p, "INVALID INPUT"); return; } Server.lava.SaveMapSettings(settings); return; } } } Help(p); }
public override void Use(Player p, string message) { try { if (message == "") { Help(p); return; } bool stealth = false; bool totalBan = false; if (message[0] == '#') { if (p == null) { message = message.Remove(0, 1).Trim(); stealth = true; Server.s.Log("Stealth Ban Attempted by Console"); } else { message = message.Remove(0, 1).Trim(); stealth = true; Server.s.Log("Stealth Ban Attempted by " + p.name); } } else if (message[0] == '@') { if (p == null) { message = message.Remove(0, 1).Trim(); stealth = true; Server.s.Log("Total Ban Attempted by Console"); } else { totalBan = true; message = message.Remove(0, 1).Trim(); Server.s.Log("Total Ban Attempted by " + p.name); } } string reason = "-"; if (message.Split(' ').Length > 1) { reason = message; string newreason = reason.Remove(0, reason.Split(' ')[0].Length + 1); int removetrim = newreason.Length + 1; string newmessage = message.Remove(message.Length - removetrim, removetrim); reason = newreason; message = newmessage; } if (reason == "-") { reason = "&c-"; } reason = reason.Replace(" ", "%20"); Player who = Player.Find(message); if (who == null) { if (!Player.ValidName(message)) { Player.SendMessage(p, "Invalid name \"" + message + "\"."); return; } if (Server.devs.Contains(message.ToLower())) { Player.SendMessage(p, "You can't ban a MCForge Developer!"); if (p != null) { Player.GlobalMessage(p.color + p.name + Server.DefaultColor + " attempted to ban a MCForge Developer!"); } else { Player.GlobalMessage(Server.DefaultColor + "The Console attempted to ban a MCForge Developer!"); } return; } Group foundGroup = Group.findPlayerGroup(message); if ((int)foundGroup.Permission >= CommandOtherPerms.GetPerm(this)) { Player.SendMessage(p, "You can't ban a " + foundGroup.name + "!"); return; } if (foundGroup.Permission == LevelPermission.Banned) { Player.SendMessage(p, message + " is already banned."); return; } if (p != null && foundGroup.Permission >= p.group.Permission) { Player.SendMessage(p, "You cannot ban a person ranked equal or higher than you."); return; } string oldgroup = foundGroup.name.ToString(); foundGroup.playerList.Remove(message); foundGroup.playerList.Save(); if (p != null) { Player.GlobalMessage(message + " &f(offline)" + Server.DefaultColor + " was &8banned" + Server.DefaultColor + " by " + p.color + p.name + Server.DefaultColor + "."); } else { Player.GlobalMessage(message + " &f(offline)" + Server.DefaultColor + " was &8banned" + Server.DefaultColor + " by console."); } Group.findPerm(LevelPermission.Banned).playerList.Add(message); Ban.Banplayer(p, message, reason, stealth, oldgroup); } else { if (!Player.ValidName(who.name)) { Player.SendMessage(p, "Invalid name \"" + who.name + "\"."); return; } if (Server.devs.Contains(who.name.ToLower())) { Player.SendMessage(p, "You can't ban an MCForge Developer!"); if (p != null) { Player.GlobalMessage(p.color + p.name + Server.DefaultColor + " attempted to ban an MCForge Developer!"); } else { Player.GlobalMessage(Server.DefaultColor + "The Console attempted to ban an MCForge Developer!"); } return; } if ((int)who.group.Permission >= CommandOtherPerms.GetPerm(this)) { Player.SendMessage(p, "You can't ban a " + who.group.name + "!"); return; } if (who.group.Permission == LevelPermission.Banned) { Player.SendMessage(p, message + " is already banned."); return; } if (p != null && who.group.Permission >= p.group.Permission) { Player.SendMessage(p, "You cannot ban a person ranked equal or higher than you."); return; } string oldgroup = who.group.name.ToString(); who.group.playerList.Remove(message); who.group.playerList.Save(); if (p != null) { if (stealth) { Player.GlobalMessageOps(who.color + who.name + Server.DefaultColor + " was STEALTH &8banned" + Server.DefaultColor + " by " + p.color + p.name + Server.DefaultColor + "!"); } else { Player.GlobalMessage(who.color + who.name + Server.DefaultColor + " was &8banned" + Server.DefaultColor + " by " + p.color + p.name + Server.DefaultColor + "!"); } } else { if (stealth) { Player.GlobalMessageOps(who.color + who.name + Server.DefaultColor + " was STEALTH &8banned" + Server.DefaultColor + " by console."); } else { Player.GlobalMessage(who.color + who.name + Server.DefaultColor + " was &8banned" + Server.DefaultColor + " by console."); } } who.group = Group.findPerm(LevelPermission.Banned); who.color = who.group.color; Player.GlobalDie(who, false); Player.GlobalSpawn(who, who.pos[0], who.pos[1], who.pos[2], who.rot[0], who.rot[1], false); Group.findPerm(LevelPermission.Banned).playerList.Add(who.name); Ban.Banplayer(p, who.name, reason, stealth, oldgroup); } Group.findPerm(LevelPermission.Banned).playerList.Save(); if (p != null) { Server.IRC.Say(message + " was banned by " + p.name + "."); Server.s.Log("BANNED: " + message.ToLower() + " by " + p.name); } else { Server.IRC.Say(message + " was banned by console."); Server.s.Log("BANNED: " + message.ToLower() + " by console."); } if (totalBan == true) { Command.all.Find("undo").Use(p, message + " 0"); Command.all.Find("banip").Use(p, "@ " + message); } } catch (Exception e) { Server.ErrorLog(e); } }
public override void Use(Player p, string message) { if (message.Split(' ').Length < 2) { Help(p); return; } Player who = Player.Find(message.Split(' ')[0]); Group newRank = Group.Find(message.Split(' ')[1]); string msgGave; if (message.Split(' ').Length > 2) { msgGave = message.Substring(message.IndexOf(' ', message.IndexOf(' ') + 1)); } else { msgGave = "Congratulations!"; } if (newRank == null) { Player.SendMessage(p, "Could not find specified rank."); return; } Group bannedGroup = Group.findPerm(LevelPermission.Banned); if (who == null) { string foundName = message.Split(' ')[0]; if (Group.findPlayerGroup(foundName) == bannedGroup || newRank == bannedGroup) { Player.SendMessage(p, "Cannot change the rank to or from \"" + bannedGroup.name + "\"."); return; } if (p != null) { if (Group.findPlayerGroup(foundName).Permission >= p.group.Permission || newRank.Permission >= p.group.Permission) { Player.SendMessage(p, "Cannot change the rank of someone equal or higher than you"); return; } } Group oldGroup = Group.findPlayerGroup(foundName); oldGroup.playerList.Remove(foundName); oldGroup.playerList.Save(); newRank.playerList.Add(foundName); newRank.playerList.Save(); Player.GlobalMessage(foundName + " &f(offline)" + Server.DefaultColor + "'s rank was set to " + newRank.color + newRank.name); } else if (who == p) { Player.SendMessage(p, "Cannot change your own rank."); return; } else { if (p != null) { if (who.group == bannedGroup || newRank == bannedGroup) { Player.SendMessage(p, "Cannot change the rank to or from \"" + bannedGroup.name + "\"."); return; } if (who.group.Permission >= p.group.Permission || newRank.Permission >= p.group.Permission) { Player.SendMessage(p, "Cannot change the rank of someone equal or higher to yourself."); return; } } who.group.playerList.Remove(who.name); who.group.playerList.Save(); newRank.playerList.Add(who.name); newRank.playerList.Save(); Player.GlobalChat(who, who.color + who.name + Server.DefaultColor + "'s rank was set to " + newRank.color + newRank.name, false); Player.GlobalChat(null, "&6" + msgGave, false); who.group = newRank; who.color = who.group.color; Player.GlobalDie(who, false); who.SendMessage("You are now ranked " + newRank.color + newRank.name + Server.DefaultColor + ", type /help for your new set of commands."); Player.GlobalSpawn(who, who.pos[0], who.pos[1], who.pos[2], who.rot[0], who.rot[1], false); } }
public override void Use(Player p, string message) { if (p != null && message == "") { message = "enter"; } switch (message.ToLower()) { case "enter": if (p == null) { Player.SendMessage(p, "You can't execute this command as Console!"); return; } if (p.canusereview) { Group gre = Group.findPerm(Server.reviewenter); LevelPermission lpe = gre.Permission; if (p.group.Permission >= lpe) { foreach (string testwho in Server.reviewlist) { if (testwho == p.name) { Player.SendMessage(p, "You already entered the review queue!"); return; } } bool isopson = false; try { foreach (Player pl in Player.players) { if (pl.group.Permission >= Server.opchatperm && !pl.hidden) { isopson = true; break; // We're done, break out of this loop } } } catch /* (Exception e)*/ { isopson = true; } if (isopson == true) { Server.reviewlist.Add(p.name); int reviewlistpos = Server.reviewlist.IndexOf(p.name); if (reviewlistpos > 1) { Player.SendMessage(p, "You entered the &creview " + Server.DefaultColor + "queue. You have &c" + reviewlistpos.ToString() + Server.DefaultColor + " people in front of you in the queue"); } if (reviewlistpos == 1) { Player.SendMessage(p, "You entered the &creview " + Server.DefaultColor + "queue. There is &c1 " + Server.DefaultColor + "person in front of you in the queue"); } if ((reviewlistpos + 1) == 1) { Player.SendMessage(p, "You entered the &creview " + Server.DefaultColor + "queue. You are &cfirst " + Server.DefaultColor + "in line!"); } Player.SendMessage(p, "The Online Operators have been notified. Someone should be with you shortly."); Player.GlobalMessageOps(p.color + " - " + p.name + " - " + Server.DefaultColor + "entered the review queue"); if ((reviewlistpos + 1) > 1) { Player.GlobalMessageOps("There are now &c" + (reviewlistpos + 1) + Server.DefaultColor + " people waiting for &creview!"); } else { Player.GlobalMessageOps("There is now &c1 " + Server.DefaultColor + "person waiting for &creview!"); } p.ReviewTimer(); } else { Player.SendMessage(p, "&cThere are no operators on to review your build. Please wait for one to come on and try again."); } } } else { Player.SendMessage(p, "You have to wait " + Server.reviewcooldown + " seconds everytime you use this command"); } break; case "list": case "view": if (p == null) { if (Server.reviewlist.Count != 0) { Player.SendMessage(p, "Players in the review queue:"); int viewnumb = 1; foreach (string golist in Server.reviewlist) { string FoundRank = Group.findPlayer(golist.ToLower()); Player.SendMessage(p, viewnumb.ToString() + ". " + golist + " - Current Rank: " + FoundRank); viewnumb++; } } else { Player.SendMessage(p, "There are no players in the review queue!"); } return; } Group grv = Group.findPerm(Server.reviewview); LevelPermission lpv = grv.Permission; if (p.group.Permission >= lpv && p != null) { if (Server.reviewlist.Count != 0) { Player.SendMessage(p, "&9Players in the review queue:"); int viewnumb = 1; foreach (string golist in Server.reviewlist) { string FoundRank = Group.findPlayer(golist.ToLower()); Player.SendMessage(p, "&a" + viewnumb.ToString() + ". &f" + golist + "&a - Current Rank: " + Group.Find(FoundRank).color + FoundRank); viewnumb++; } } else { Player.SendMessage(p, "There are no players in the review queue!"); } } break; case "leave": if (p == null) { Player.SendMessage(p, "You can't execute this command as Console!"); return; } Group grl = Group.findPerm(Server.reviewleave); LevelPermission lpl = grl.Permission; if (p.group.Permission >= lpl) { bool leavetest = false; foreach (string testwho2 in Server.reviewlist) { if (testwho2 == p.name) { leavetest = true; } } if (!leavetest) { Player.SendMessage(p, "You aren't in the review queue so you can't leave it!"); return; } Server.reviewlist.Remove(p.name); int toallplayerscount = 1; foreach (string toallplayers in Server.reviewlist) { Player tosend = Player.Find(toallplayers); Player.SendMessage(tosend, "The review queue has changed. Your now on spot " + toallplayerscount.ToString() + "."); toallplayerscount++; } Player.SendMessage(p, "You have left the review queue!"); return; } break; case "next": if (p == null) { Player.SendMessage(p, "You can't execute this command as Console!"); return; } Group grn = Group.findPerm(Server.reviewnext); LevelPermission lpn = grn.Permission; if (p.group.Permission >= lpn) { if (Server.reviewlist.Count == 0) { Player.SendMessage(p, "There are no players in the review queue!"); return; } string[] user = Server.reviewlist.ToArray(); Player who = Player.Find(user[0]); if (who == null) { Player.SendMessage(p, "Player " + user[0] + " doesn't exist or is offline. " + user[0] + " has been removed from the review queue"); Server.reviewlist.Remove(user[0]); return; } if (who == p) { Player.SendMessage(p, "You can't teleport to yourself! You have been removed from the review queue."); Server.reviewlist.Remove(user[0]); return; } Server.reviewlist.Remove(user[0]); Command.all.Find("tp").Use(p, who.name); Player.SendMessage(p, "You have been teleported to " + user[0]); Player.SendMessage(who, "Your request has been answered by " + p.name + "."); int toallplayerscount = 0; foreach (string toallplayers in Server.reviewlist) { Player who2 = Player.Find(toallplayers); Player.SendMessage(who2, "The review queue has been rotated. you now have " + toallplayerscount.ToString() + " players waiting in front of you"); toallplayerscount++; } } else { Player.SendMessage(p, "&cYou have no permission to use the review queue!"); } break; case "clear": if (p == null) { Server.reviewlist.Clear(); Player.SendMessage(p, "The review queue has been cleared"); return; } Group grc = Group.findPerm(Server.reviewclear); LevelPermission lpc = grc.Permission; if (p.group.Permission >= lpc) { Server.reviewlist.Clear(); Player.SendMessage(p, "The review queue has been cleared"); return; } else { Player.SendMessage(p, "&cYou have no permission to clear the Review Queue!"); } break; default: Help(p); return; } }
public static void InitAll() { GroupList = new List <Group>(); if (File.Exists("properties/ranks.properties")) { string[] lines = File.ReadAllLines("properties/ranks.properties"); Group thisGroup = new Group(); int gots = 0; foreach (string s in lines) { try { if (s != "" && s[0] != '#') { if (s.Split('=').Length == 2) { string property = s.Split('=')[0].Trim(); string value = s.Split('=')[1].Trim(); if (thisGroup.name == "" && property.ToLower() != "rankname") { Server.s.Log("Hitting an error at " + s + " of ranks.properties"); } else { switch (property.ToLower()) { case "rankname": gots = 0; thisGroup = new Group(); if (value.ToLower() == "developers" || value.ToLower() == "devs") { Server.s.Log("You are not a developer. Stop pretending you are."); } else if (GroupList.Find(grp => grp.name == value.ToLower()) == null) { thisGroup.trueName = value; } else { Server.s.Log("Cannot add the rank " + value + " twice"); } break; case "permission": int foundPermission; try { foundPermission = int.Parse(value); } catch { Server.s.Log("Invalid permission on " + s); break; } if (thisGroup.Permission != LevelPermission.Null) { Server.s.Log("Setting permission again on " + s); gots--; } bool allowed = true; if (GroupList.Find(grp => grp.Permission == (LevelPermission)foundPermission) != null) { allowed = false; } if (foundPermission > 119 || foundPermission < -50) { Server.s.Log("Permission must be between -50 and 119 for ranks"); break; } if (allowed) { gots++; thisGroup.Permission = (LevelPermission)foundPermission; } else { Server.s.Log("Cannot have 2 ranks set at permission level " + value); } break; case "limit": int foundLimit; try { foundLimit = int.Parse(value); } catch { Server.s.Log("Invalid limit on " + s); break; } gots++; thisGroup.maxBlocks = foundLimit; break; case "color": char foundChar; try { foundChar = char.Parse(value); } catch { Server.s.Log("Incorrect color on " + s); break; } if ((foundChar >= '0' && foundChar <= '9') || (foundChar >= 'a' && foundChar <= 'f')) { gots++; thisGroup.color = foundChar.ToString(); } else { Server.s.Log("Invalid color code at " + s); } break; case "filename": if (value.Contains("\\") || value.Contains("/")) { Server.s.Log("Invalid filename on " + s); break; } gots++; thisGroup.fileName = value; break; } if (gots >= 4) { GroupList.Add(new Group(thisGroup.Permission, thisGroup.maxBlocks, thisGroup.trueName, thisGroup.color[0], thisGroup.fileName)); } } } else { Server.s.Log("In ranks.properties, the line " + s + " is wrongly formatted"); } } } catch { } } } if (GroupList.Find(grp => grp.Permission == LevelPermission.Banned) == null) { GroupList.Add(new Group(LevelPermission.Banned, 1, "Banned", '8', "banned.txt")); } if (GroupList.Find(grp => grp.Permission == LevelPermission.Guest) == null) { GroupList.Add(new Group(LevelPermission.Guest, 1, "Guest", '7', "guest.txt")); } if (GroupList.Find(grp => grp.Permission == LevelPermission.Builder) == null) { GroupList.Add(new Group(LevelPermission.Builder, 400, "Builder", '2', "builders.txt")); } if (GroupList.Find(grp => grp.Permission == LevelPermission.AdvBuilder) == null) { GroupList.Add(new Group(LevelPermission.AdvBuilder, 1200, "AdvBuilder", '3', "advbuilders.txt")); } if (GroupList.Find(grp => grp.Permission == LevelPermission.Operator) == null) { GroupList.Add(new Group(LevelPermission.Operator, 2500, "Operator", 'c', "operators.txt")); } if (GroupList.Find(grp => grp.Permission == LevelPermission.Admin) == null) { GroupList.Add(new Group(LevelPermission.Admin, 65536, "SuperOP", 'e', "uberOps.txt")); } GroupList.Add(new Group(LevelPermission.Nobody, 65536, "Nobody", '0', "nobody.txt")); bool swap = true; Group storedGroup; while (swap) { swap = false; for (int i = 0; i < GroupList.Count - 1; i++) { if (GroupList[i].Permission > GroupList[i + 1].Permission) { swap = true; storedGroup = GroupList[i]; GroupList[i] = GroupList[i + 1]; GroupList[i + 1] = storedGroup; } } } if (Group.Find(Server.defaultRank) != null) { standard = Group.Find(Server.defaultRank); } else { standard = Group.findPerm(LevelPermission.Guest); } foreach (Player pl in Player.players) { pl.group = GroupList.Find(g => g.name == pl.group.name); } saveGroups(GroupList); }
public override void Use(Player p, string message) { if (message == "") { Help(p); return; } bool totalUnban = false; if (message[0] == '@') { totalUnban = true; message = message.Remove(0, 1).Trim(); } Player who = Player.Find(message); if (who == null) { if (Group.findPlayerGroup(message) != Group.findPerm(LevelPermission.Banned)) { foreach (Server.TempBan tban in Server.tempBans) { if (tban.name.ToLower() == message.ToLower()) { Server.tempBans.Remove(tban); Player.GlobalMessage(message + " has had their temporary ban lifted."); return; } } Player.SendMessage(p, "Player is not banned."); return; } Player.GlobalMessage(message + " &8(banned)" + Server.DefaultColor + " is now " + Group.standard.color + Group.standard.name + Server.DefaultColor + "!"); Group.findPerm(LevelPermission.Banned).playerList.Remove(message); } else { if (Group.findPlayerGroup(message) != Group.findPerm(LevelPermission.Banned)) { foreach (Server.TempBan tban in Server.tempBans) { if (tban.name == who.name) { Server.tempBans.Remove(tban); Player.GlobalMessage(who.color + who.prefix + who.name + Server.DefaultColor + "has had their temporary ban lifted."); return; } } Player.SendMessage(p, "Player is not banned."); return; } Player.GlobalChat(who, who.color + who.prefix + who.name + Server.DefaultColor + " is now " + Group.standard.color + Group.standard.name + Server.DefaultColor + "!", false); who.group = Group.standard; who.color = who.group.color; Player.GlobalDie(who, false); Player.GlobalSpawn(who, who.pos[0], who.pos[1], who.pos[2], who.rot[0], who.rot[1], false); Group.findPerm(LevelPermission.Banned).playerList.Remove(message); } Group.findPerm(LevelPermission.Banned).playerList.Save(); if (totalUnban) { Command.all.Find("unbanip").Use(p, "@" + message); } }
public override void Use(Player p, string message) { try { if (message == "") { Help(p); return; } bool stealth = false; bool totalBan = false; if (message[0] == '#') { message = message.Remove(0, 1).Trim(); stealth = true; Server.s.Log("Stealth Ban Attempted"); } else if (message[0] == '@') { totalBan = true; message = message.Remove(0, 1).Trim(); } Player who = Player.Find(message); if (who == null) { if (!Player.ValidName(message)) { Player.SendMessage(p, "Invalid name \"" + message + "\"."); return; } if (Server.devs.Contains(message.ToLower())) { Player.SendMessage(p, "You can't ban a MCForge Developer!"); if (p != null) { Player.GlobalMessage(p.color + p.name + Server.DefaultColor + " attempted to ban a MCForge Developer!"); } else { Player.GlobalMessage(Server.DefaultColor + "The Console attempted to ban a MCForge Developer!"); } return; } Group foundGroup = Group.findPlayerGroup(message); if (foundGroup.Permission >= LevelPermission.Operator) { Player.SendMessage(p, "You can't ban a " + foundGroup.name + "!"); return; } if (foundGroup.Permission == LevelPermission.Banned) { Player.SendMessage(p, message + " is already banned."); return; } foundGroup.playerList.Remove(message); foundGroup.playerList.Save(); Player.GlobalMessage(message + " &f(offline)" + Server.DefaultColor + " is now &8banned" + Server.DefaultColor + "!"); Group.findPerm(LevelPermission.Banned).playerList.Add(message); } else { if (!Player.ValidName(who.name)) { Player.SendMessage(p, "Invalid name \"" + who.name + "\"."); return; } if (Server.devs.Contains(who.name.ToLower())) { Player.SendMessage(p, "You can't ban a MCForge Developer!"); if (p != null) { Player.GlobalMessage(p.color + p.name + Server.DefaultColor + " attempted to ban a MCForge Developer!"); } else { Player.GlobalMessage(Server.DefaultColor + "The Console attempted to ban a MCForge Developer!"); } return; } if (who.group.Permission >= LevelPermission.Operator) { Player.SendMessage(p, "You can't ban a " + who.group.name + "!"); return; } if (who.group.Permission == LevelPermission.Banned) { Player.SendMessage(p, message + " is already banned."); return; } who.group.playerList.Remove(message); who.group.playerList.Save(); if (stealth) { Player.GlobalMessageOps(who.color + who.name + Server.DefaultColor + " is now STEALTH &8banned" + Server.DefaultColor + "!"); } else { Player.GlobalChat(who, who.color + who.name + Server.DefaultColor + " is now &8banned" + Server.DefaultColor + "!", false); } who.group = Group.findPerm(LevelPermission.Banned); who.color = who.group.color; Player.GlobalDie(who, false); Player.GlobalSpawn(who, who.pos[0], who.pos[1], who.pos[2], who.rot[0], who.rot[1], false); Group.findPerm(LevelPermission.Banned).playerList.Add(who.name); } Group.findPerm(LevelPermission.Banned).playerList.Save(); IRCBot.Say(message + " was banned."); Server.s.Log("BANNED: " + message.ToLower()); if (totalBan == true) { Command.all.Find("undo").Use(p, message + " 0"); Command.all.Find("banip").Use(p, "@ " + message); } } catch (Exception e) { Server.ErrorLog(e); } }
/// <summary> /// Load up all server groups /// </summary> public static void InitAll() { GroupList = new List <Group>(); if (File.Exists("properties/ranks.properties")) { string[] lines = File.ReadAllLines("properties/ranks.properties"); Group thisGroup = new Group(); int gots = 0, version = 1; if (lines.Length > 0 && lines[0].StartsWith("#Version ")) { try { version = int.Parse(lines[0].Remove(0, 9)); } catch { Server.s.Log("The ranks.properties version header is invalid! Ranks may fail to load!"); } } foreach (string s in lines) { try { if (s == "" || s[0] == '#') { continue; } if (s.Split('=').Length == 2) { string property = s.Split('=')[0].Trim(); string value = s.Split('=')[1].Trim(); if (thisGroup.name == "" && property.ToLower() != "rankname") { Server.s.Log("Hitting an error at " + s + " of ranks.properties"); } else { switch (property.ToLower()) { case "rankname": gots = 0; thisGroup = new Group(); if (value.ToLower() == "developer" || value.ToLower() == "dev" || value.ToLower() == "developers" || value.ToLower() == "devs") { Server.s.Log("You are not a developer. Stop pretending you are."); } if (value.ToLower() == "adv" || value.ToLower() == "op" || value.ToLower() == "super" || value.ToLower() == "nobody" || value.ToLower() == "noone") { Server.s.Log("Cannot have a rank named \"" + value.ToLower() + "\", this rank is hard-coded."); } else if (GroupList.Find(grp => grp.name == value.ToLower()) == null) { thisGroup.trueName = value; } else { Server.s.Log("Cannot add the rank " + value + " twice"); } break; case "permission": int foundPermission; try { foundPermission = int.Parse(value); } catch { Server.s.Log("Invalid permission on " + s); break; } if (thisGroup.Permission != LevelPermission.Null) { Server.s.Log("Setting permission again on " + s); gots--; } bool allowed = GroupList.Find(grp => grp.Permission == (LevelPermission)foundPermission) == null; if (foundPermission > 119 || foundPermission < -50) { Server.s.Log("Permission must be between -50 and 119 for ranks"); break; } if (allowed) { gots++; thisGroup.Permission = (LevelPermission)foundPermission; } else { Server.s.Log("Cannot have 2 ranks set at permission level " + value); } break; case "limit": int foundLimit; try { foundLimit = int.Parse(value); } catch { Server.s.Log("Invalid limit on " + s); break; } gots++; thisGroup.maxBlocks = foundLimit; break; case "maxundo": int foundMax; try { foundMax = int.Parse(value); } catch { Server.s.Log("Invalid maximum on " + s); break; } gots++; thisGroup.maxUndo = foundMax; break; case "color": char foundChar; try { foundChar = char.Parse(value); } catch { Server.s.Log("Incorrect color on " + s); break; } if ((foundChar >= '0' && foundChar <= '9') || (foundChar >= 'a' && foundChar <= 'f')) { gots++; thisGroup.color = foundChar.ToString(CultureInfo.InvariantCulture); } else { Server.s.Log("Invalid color code at " + s); } break; case "filename": if (value.Contains("\\") || value.Contains("/")) { Server.s.Log("Invalid filename on " + s); break; } gots++; thisGroup.fileName = value; break; case "motd": if (!String.IsNullOrEmpty(value)) { thisGroup.MOTD = value; } gots++; break; } if ((gots >= 4 && version < 2) || (gots >= 5 && version < 3) || gots >= 6) { if (version < 2) { if ((int)thisGroup.Permission >= 100) { thisGroup.maxUndo = int.MaxValue; } else if ((int)thisGroup.Permission >= 80) { thisGroup.maxUndo = 5400; } } GroupList.Add(new Group(thisGroup.Permission, thisGroup.maxBlocks, thisGroup.maxUndo, thisGroup.trueName, thisGroup.color[0], thisGroup.MOTD, thisGroup.fileName)); } } } else { Server.s.Log("In ranks.properties, the line " + s + " is wrongly formatted"); } } catch (Exception e) { Server.s.Log("Encountered an error at line \"" + s + "\" in ranks.properties"); Server.ErrorLog(e); } } } if (GroupList.Find(grp => grp.Permission == LevelPermission.Banned) == null) { GroupList.Add(new Group(LevelPermission.Banned, 1, 1, "Banned", '8', String.Empty, "banned.txt")); } if (GroupList.Find(grp => grp.Permission == LevelPermission.Guest) == null) { GroupList.Add(new Group(LevelPermission.Guest, 1, 120, "Guest", '7', String.Empty, "guest.txt")); } if (GroupList.Find(grp => grp.Permission == LevelPermission.Builder) == null) { GroupList.Add(new Group(LevelPermission.Builder, 400, 300, "Builder", '2', String.Empty, "builders.txt")); } if (GroupList.Find(grp => grp.Permission == LevelPermission.AdvBuilder) == null) { GroupList.Add(new Group(LevelPermission.AdvBuilder, 1200, 900, "AdvBuilder", '3', String.Empty, "advbuilders.txt")); } if (GroupList.Find(grp => grp.Permission == LevelPermission.Operator) == null) { GroupList.Add(new Group(LevelPermission.Operator, 2500, 5400, "Operator", 'c', String.Empty, "operators.txt")); } if (GroupList.Find(grp => grp.Permission == LevelPermission.Admin) == null) { GroupList.Add(new Group(LevelPermission.Admin, 65536, int.MaxValue, "SuperOP", 'e', String.Empty, "uberOps.txt")); } GroupList.Add(new Group(LevelPermission.Nobody, 65536, -1, "Nobody", '0', String.Empty, "nobody.txt")); bool swap = true; Group storedGroup; while (swap) { swap = false; for (int i = 0; i < GroupList.Count - 1; i++) { if (GroupList[i].Permission > GroupList[i + 1].Permission) { swap = true; storedGroup = GroupList[i]; GroupList[i] = GroupList[i + 1]; GroupList[i + 1] = storedGroup; } } } if (Group.Find(Server.defaultRank) != null) { standard = Group.Find(Server.defaultRank); } else { standard = Group.findPerm(LevelPermission.Guest); } foreach (Player pl in Player.players) { pl.group = GroupList.Find(g => g.name == pl.group.name); } if (OnGroupLoad != null) { OnGroupLoad(); } OnGroupLoadEvent.Call(); saveGroups(GroupList); }
public override void Use(Player p, string message) { try { message.ToLower(); switch (message) { case "": if (Server.oldHelp) { goto case "old"; } else { Player.SendMessage(p, "Use &b/help ranks" + Server.DefaultColor + " for a list of ranks."); Player.SendMessage(p, "Use &b/help build" + Server.DefaultColor + " for a list of building commands."); Player.SendMessage(p, "Use &b/help mod" + Server.DefaultColor + " for a list of moderation commands."); Player.SendMessage(p, "Use &b/help information" + Server.DefaultColor + " for a list of information commands."); Player.SendMessage(p, "Use &b/help games" + Server.DefaultColor + " for a list of game commands."); Player.SendMessage(p, "Use &b/help other" + Server.DefaultColor + " for a list of other commands."); Player.SendMessage(p, "Use &b/help colors" + Server.DefaultColor + " to view the color codes."); Player.SendMessage(p, "Use &b/help short" + Server.DefaultColor + " for a list of shortcuts."); Player.SendMessage(p, "Use &b/help old" + Server.DefaultColor + " to view the Old help menu."); Player.SendMessage(p, "Use &b/help [command] or /help [block] " + Server.DefaultColor + "to view more info."); } break; case "ranks": message = ""; foreach (Group grp in Group.GroupList) { if (grp.name != "nobody") // Note that -1 means max undo. Undo anything and everything. { Player.SendMessage(p, grp.color + grp.name + " - &bCmd: " + grp.maxBlocks + " - &2Undo: " + ((grp.maxUndo != -1) ? grp.maxUndo.ToString() : "max") + " - &cPerm: " + (int)grp.Permission); } } break; case "build": message = ""; foreach (Command comm in Command.all.commands) { if (p == null || p.group.commands.All().Contains(comm)) { if (comm.type.Contains("build")) { message += ", " + getColor(comm.name) + comm.name; } } } if (message == "") { Player.SendMessage(p, "No commands of this type are available to you."); break; } Player.SendMessage(p, "Building commands you may use:"); Player.SendMessage(p, message.Remove(0, 2) + "."); break; case "mod": case "moderation": message = ""; foreach (Command comm in Command.all.commands) { if (p == null || p.group.commands.All().Contains(comm)) { if (comm.type.Contains("mod")) { message += ", " + getColor(comm.name) + comm.name; } } } if (message == "") { Player.SendMessage(p, "No commands of this type are available to you."); break; } Player.SendMessage(p, "Moderation commands you may use:"); Player.SendMessage(p, message.Remove(0, 2) + "."); break; case "information": message = ""; foreach (Command comm in Command.all.commands) { if (p == null || p.group.commands.All().Contains(comm)) { if (comm.type.Contains("info")) { message += ", " + getColor(comm.name) + comm.name; } } } if (message == "") { Player.SendMessage(p, "No commands of this type are available to you."); break; } Player.SendMessage(p, "Information commands you may use:"); Player.SendMessage(p, message.Remove(0, 2) + "."); break; case "games": case "game": message = ""; foreach (Command comm in Command.all.commands) { if (p == null || p.group.commands.All().Contains(comm)) { if (comm.type.Contains("game")) { message += ", " + getColor(comm.name) + comm.name; } } } if (message == "") { Player.SendMessage(p, "No commands of this type are available to you."); break; } Player.SendMessage(p, "Game commands you may use:"); Player.SendMessage(p, message.Remove(0, 2) + "."); break; case "other": message = ""; foreach (Command comm in Command.all.commands) { if (p == null || p.group.commands.All().Contains(comm)) { if (comm.type.Contains("other")) { message += ", " + getColor(comm.name) + comm.name; } } } if (message == "") { Player.SendMessage(p, "No commands of this type are available to you."); break; } Player.SendMessage(p, "Other commands you may use:"); Player.SendMessage(p, message.Remove(0, 2) + "."); break; case "short": message = ""; foreach (Command comm in Command.all.commands) { if (p == null || p.group.commands.All().Contains(comm)) { if (comm.shortcut != "") { message += ", &b" + comm.shortcut + " " + Server.DefaultColor + "[" + comm.name + "]"; } } } Player.SendMessage(p, "Available shortcuts:"); Player.SendMessage(p, message.Remove(0, 2) + "."); break; case "colours": case "colors": Player.SendMessage(p, "&fTo use a color simply put a '%' sign symbol before you put the color code."); Player.SendMessage(p, "Colors Available:"); Player.SendMessage(p, "0 - &0Black " + Server.DefaultColor + "| 8 - &8Gray"); Player.SendMessage(p, "1 - &1Navy " + Server.DefaultColor + "| 9 - &9Blue"); Player.SendMessage(p, "2 - &2Green " + Server.DefaultColor + "| a - &aLime"); Player.SendMessage(p, "3 - &3Teal " + Server.DefaultColor + "| b - &bAqua"); Player.SendMessage(p, "4 - &4Maroon " + Server.DefaultColor + "| c - &cRed"); Player.SendMessage(p, "5 - &5Purple " + Server.DefaultColor + "| d - &dPink"); Player.SendMessage(p, "6 - &6Gold " + Server.DefaultColor + "| e - &eYellow"); Player.SendMessage(p, "7 - &7Silver " + Server.DefaultColor + "| f - &fWhite"); break; case "old": string commandsFound = ""; foreach (Command comm in Command.all.commands) { if (p == null || p.group.commands.All().Contains(comm)) { try { commandsFound += ", " + comm.name; } catch { } } } Player.SendMessage(p, "Available commands:"); Player.SendMessage(p, commandsFound.Remove(0, 2)); Player.SendMessage(p, "Type \"/help <command>\" for more help."); Player.SendMessage(p, "Type \"/help shortcuts\" for shortcuts."); break; default: Command cmd = Command.all.Find(message); if (cmd != null) { cmd.Help(p); string foundRank = Level.PermissionToName(GrpCommands.allowedCommands.Find(grpComm => grpComm.commandName == cmd.name).lowestRank); Player.SendMessage(p, "Rank needed: " + getColor(cmd.name) + foundRank); return; } byte b = Block.Byte(message); if (b != Block.Zero) { Player.SendMessage(p, "Block \"" + message + "\" appears as &b" + Block.Name(Block.Convert(b))); Group foundRank = Group.findPerm(Block.BlockList.Find(bs => bs.type == b).lowestRank); Player.SendMessage(p, "Rank needed: " + foundRank.color + foundRank.name); return; } Plugin plugin = null; foreach (Plugin p1 in Plugin.all) { if (p1.name.ToLower() == message.ToLower()) { plugin = p1; break; } } if (plugin != null) { plugin.Help(p); } Player.SendMessage(p, "Could not find command, plugin or block specified."); break; } } catch (Exception e) { Server.ErrorLog(e); Player.SendMessage(p, "An error occured"); } }
public override void Use(Player p, string message) { var split = message.Split(' '); if (split.Length < 2) { Help(p); return; } Player who = Player.Find(split[0]); Group newRank = Group.Find(split[1]); string msgGave = ""; string oldgroupstr = ""; if (who != null) { oldgroupstr = who.group.name; } else { Group hey = Group.findPlayerGroup(split[0]); oldgroupstr = hey.name; } if (message.Split(' ').Length > 2) { msgGave = message.Substring(message.IndexOf(' ', message.IndexOf(' ') + 1)); } else { msgGave = "Congratulations!"; } if (newRank == null) { Player.SendMessage(p, "Could not find specified rank."); return; } Group bannedGroup = Group.findPerm(LevelPermission.Banned); if (who == null) { string foundName = split[0]; if (Group.findPlayerGroup(foundName) == bannedGroup || newRank == bannedGroup) { Player.SendMessage(p, "Cannot change the rank to or from \"" + bannedGroup.name + "\"."); return; } if (p != null) { if (Group.findPlayerGroup(foundName).Permission >= p.group.Permission || newRank.Permission >= p.group.Permission) { Player.SendMessage(p, "Cannot change the rank of someone equal or higher than you"); return; } } Group oldGroup = Group.findPlayerGroup(foundName); oldGroup.playerList.Remove(foundName); oldGroup.playerList.Save(); newRank.playerList.Add(foundName); newRank.playerList.Save(); Player.GlobalMessage(foundName + " &f(offline)" + Server.DefaultColor + "'s rank was set to " + newRank.color + newRank.name); } else if (who == p) { Player.SendMessage(p, "Cannot change your own rank."); return; } else { if (p != null) { if (who.group == bannedGroup || newRank == bannedGroup) { Player.SendMessage(p, "Cannot change the rank to or from \"" + bannedGroup.name + "\"."); return; } if (who.group.Permission >= p.group.Permission || newRank.Permission >= p.group.Permission) { Player.SendMessage(p, "Cannot change the rank of someone equal or higher to yourself."); return; } } Group.because(who, newRank); if (Group.cancelrank) { Group.cancelrank = false; return; } who.group.playerList.Remove(who.name); who.group.playerList.Save(); newRank.playerList.Add(who.name); newRank.playerList.Save(); Player.GlobalChat(who, who.color + who.name + Server.DefaultColor + "'s rank was set to " + newRank.color + newRank.name, false); Player.GlobalChat(who, "&6" + msgGave, false); who.group = newRank; who.color = who.group.color; Player.GlobalDie(who, false); who.SendMessage("You are now ranked " + newRank.color + newRank.name + Server.DefaultColor + ", type /help for your new set of commands."); who.SendUserType(Block.canPlace(who.group.Permission, Block.blackrock)); Boolean tryer = true; string year = DateTime.Now.Year.ToString(); string month = DateTime.Now.Month.ToString(); string day = DateTime.Now.Day.ToString(); string hour = DateTime.Now.Hour.ToString(); string minute = DateTime.Now.Minute.ToString(); string assigner; if (p == null) { assigner = "Console"; } else { assigner = p.name; } string allrankinfos = ""; foreach (string line in File.ReadAllLines("text/rankinfo.txt")) { if (!line.Contains(split[0])) { allrankinfos = allrankinfos + line + "\r\n"; } } File.WriteAllText("text/rankinfo.txt", allrankinfos); try { StreamWriter sw; sw = File.AppendText("text/rankinfo.txt"); sw.WriteLine(who.name + " " + assigner + " " + minute + " " + hour + " " + day + " " + month + " " + year + " " + split[1] + " " + oldgroupstr); sw.Close(); } catch { tryer = false; } if (!tryer) { Player.SendMessage(p, "&cAn error occurred!"); } Player.GlobalSpawn(who, who.pos[0], who.pos[1], who.pos[2], who.rot[0], who.rot[1], false); } }
public override void Use(Player p, string message) { if (message == "") { Help(p); return; } bool totalUnban = false; if (message[0] == '@') { totalUnban = true; message = message.Remove(0, 1).Trim(); } Player who = Player.Find(message); if (who == null) { if (Group.findPlayerGroup(message) != Group.findPerm(LevelPermission.Banned)) { foreach (Server.TempBan tban in Server.tempBans) { if (tban.name.ToLower() == message.ToLower()) { if (p != null) { Server.tempBans.Remove(tban); Player.GlobalMessage(message + " has had their temporary ban lifted by " + p.color + p.name + Server.DefaultColor + "."); Server.s.Log("UNBANNED: by " + p.name); Server.IRC.Say(message + " was unbanned by " + p.name + "."); return; } else { Server.tempBans.Remove(tban); Player.GlobalMessage(message + " has had their temporary ban lifted by console."); Server.s.Log("UNBANNED: by console"); Server.IRC.Say(message + " was unbanned by console."); return; } } } Player.SendMessage(p, "Player is not banned."); return; } if (Group.findPlayerGroup(message) == Group.findPerm(LevelPermission.Banned)) { if (p != null) { Player.GlobalMessage(message + " was &8(unbanned)" + Server.DefaultColor + " by " + p.color + p.name + Server.DefaultColor + "."); Server.s.Log("UNBANNED: by " + p.name); Server.IRC.Say(message + " was unbanned by " + p.name + "."); } else { Player.GlobalMessage(message + " was &8(unbanned)" + Server.DefaultColor + " by console."); Server.s.Log("UNBANNED: by console"); Server.IRC.Say(message + " was unbanned by console."); } Group.findPerm(LevelPermission.Banned).playerList.Remove(message); if (Ban.Deleteban(message)) { Player.SendMessage(p, "deleted ban information about " + message + "."); } else { Player.SendMessage(p, "no info found about " + message + "."); } } } else { if (Group.findPlayerGroup(message) != Group.findPerm(LevelPermission.Banned)) { foreach (Server.TempBan tban in Server.tempBans) { if (tban.name == who.name) { if (p != null) { Server.tempBans.Remove(tban); Player.GlobalMessage(message + " has had their temporary ban lifted by " + p.color + p.name + Server.DefaultColor + "."); Server.s.Log("UNBANNED: by " + p.name); Server.IRC.Say(message + " was unbanned by " + p.name + "."); return; } else { Server.tempBans.Remove(tban); Player.GlobalMessage(message + " has had their temporary ban lifted by console."); Server.s.Log("UNBANNED: by console"); Server.IRC.Say(message + " was unbanned by console."); return; } } } Player.SendMessage(p, "Player is not banned."); return; } if (Group.findPlayerGroup(message) == Group.findPerm(LevelPermission.Banned)) { if (p != null) { Player.GlobalMessage(message + " was &8(unbanned)" + Server.DefaultColor + " by " + p.color + p.name + Server.DefaultColor + "."); Server.s.Log("UNBANNED: by " + p.name); Server.IRC.Say(message + " was unbanned by " + p.name + "."); } else { Player.GlobalMessage(message + " was &8(unbanned)" + Server.DefaultColor + " by console."); Server.s.Log("UNBANNED: by console"); Server.IRC.Say(message + " was unbanned by console."); } who.group = Group.standard; who.color = who.group.color; Player.GlobalDie(who, false); Player.GlobalSpawn(who, who.pos[0], who.pos[1], who.pos[2], who.rot[0], who.rot[1], false); Group.findPerm(LevelPermission.Banned).playerList.Remove(message); } } Group.findPerm(LevelPermission.Banned).playerList.Save(); if (totalUnban) { Command.all.Find("unbanip").Use(p, "@" + message); } }