Exemplo n.º 1
0
 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!");
         }
     }
 }
Exemplo n.º 2
0
        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.");
            }
        }
Exemplo n.º 3
0
        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");
        }
Exemplo n.º 4
0
        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).");
                }
            }
        }
Exemplo n.º 5
0
 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 + ".");
         }
     }
 }
Exemplo n.º 6
0
        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); }
        }
Exemplo n.º 7
0
 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);
        }
Exemplo n.º 9
0
        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); }
        }
Exemplo n.º 10
0
        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);
            }
        }
Exemplo n.º 11
0
        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;
            }
        }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
        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);
            }
        }
Exemplo n.º 14
0
        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); }
        }
Exemplo n.º 15
0
        /// <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);
        }
Exemplo n.º 16
0
        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"); }
        }
Exemplo n.º 17
0
        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);
            }
        }
Exemplo n.º 18
0
        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);
            }
        }