Пример #1
0
 // Constructor
 public Group(string name, string color, GroupEnum g, bool chat, LevelPermission permission, Int32 _cuboidLimit)
 {
     blnChat = chat;
     groupLevel = g;
     lvlPermission = permission;
     strColor = color;
     strName = name;
     mCuboidLimit = _cuboidLimit;
 }
Пример #2
0
 public Group(LevelPermission Perm, int maxB, string fullName, char newColor, string file)
 {
     Permission = Perm;
     maxBlocks = maxB;
     trueName = fullName;
     name = trueName.ToLower();
     color = "&" + newColor;
     fileName = file;
     if (name != "nobody")
         playerList = PlayerList.Load(fileName, this);
     else
         playerList = new PlayerList();
 }
Пример #3
0
 /// <summary>
 /// Create a new group object
 /// </summary>
 /// <param name="Perm">The permission of the group</param>
 /// <param name="maxB">The maxblocks this group can cuboid</param>
 /// <param name="maxUn">The max undo this group can do</param>
 /// <param name="fullName">The group full name</param>
 /// <param name="newColor">The color of the group (Not including the &)</param>
 /// <param name="motd">the custom MOTD for the group</param>
 /// <param name="file">The file path where the current players of this group are stored</param>
 public Group(LevelPermission Perm, int maxB, long maxUn, string fullName, char newColor, string motd, string file) {
     Permission = Perm;
     maxBlocks = maxB;
     maxUndo = maxUn;
     trueName = fullName;
     name = trueName.ToLower();
     color = "&" + newColor;
     MOTD = motd;
     fileName = file;
     //playerList = name != "nobody" ? PlayerList.Load(fileName, this) : new PlayerList();
     //if(OnGroupLoaded != null)
     //OnGroupLoaded(this);
     //OnGroupLoadedEvent.Call(this);
 }
Пример #4
0
        // Constructors
        public LavaSurvival()
        {
            maps = new List<string>();
            voted = new List<string>();
            votes = new Dictionary<string, int>();
            announceTimer = new Timer(60000);
            announceTimer.AutoReset = true;
            announceTimer.Elapsed += new ElapsedEventHandler(delegate
            {
                AnnounceTimeLeft(true, false);
            });

            startOnStartup = false;
            sendAfkMain = true;
            voteCount = 2;
            voteTime = 2;
            setupRank = LevelPermission.Operator;
            LoadSettings();
        }
Пример #5
0
        // Constructors
        public LavaSurvival()
        {
            maps = new List<string>();
            voted = new List<string>();
            votes = new Dictionary<string, int>();
            deaths = new Dictionary<string, int>();
            announceTimer = new Timer(60000);
            announceTimer.AutoReset = true;
            announceTimer.Elapsed += delegate
            {
                if (!flooded) AnnounceTimeLeft(true, false);
            };

            startOnStartup = false;
            sendAfkMain = true;
            voteCount = 2;
            voteTime = 2;
            lifeNum = 3;
            setupRank = LevelPermission.Admin;
            controlRank = LevelPermission.Operator;
            LoadSettings();
        }
Пример #6
0
 public ConfigPermAttribute(string name, string section, string desc,
                            LevelPermission defValue, bool serialiseName = false)
     : base(name, section, desc, defValue)
 {
     SerialiseName = serialiseName;
 }
Пример #7
0
 public ConfigPermAttribute(string name, string section, LevelPermission def)
     : base(name, section)
 {
     defPerm = def;
 }
Пример #8
0
 protected bool HasExtraPerm(Player p, LevelPermission plRank, int num)
 {
     return(CommandExtraPerms.Find(name, num).UsableBy(plRank));
 }
Пример #9
0
        public void LoadSettings()
        {
            if (!File.Exists("properties/lavasurvival.properties"))
            {
                SaveSettings();
                return;
            }

            foreach (string line in File.ReadAllLines("properties/lavasurvival.properties"))
            {
                try
                {
                    if (line[0] != '#')
                    {
                        string value = line.Substring(line.IndexOf(" = ") + 3);
                        switch (line.Substring(0, line.IndexOf(" = ")).ToLower())
                        {
                            case "start-on-startup":
                                startOnStartup = bool.Parse(value);
                                break;
                            case "send-afk-to-main":
                                sendAfkMain = bool.Parse(value);
                                break;
                            case "vote-count":
                                voteCount = (byte)MathHelper.Clamp(decimal.Parse(value), 2, 10);
                                break;
                            case "vote-time":
                                voteTime = double.Parse(value);
                                break;
                            case "lives":
                                lifeNum = int.Parse(value);
                                break;
                            case "setup-rank":
                                if (Group.Find(value.ToLower()) != null)
                                    setupRank = Group.Find(value.ToLower()).Permission;
                                break;
                            case "control-rank":
                                if (Group.Find(value.ToLower()) != null)
                                    controlRank = Group.Find(value.ToLower()).Permission;
                                break;
                            case "maps":
                                foreach (string mapname in value.Split(','))
                                    if(!String.IsNullOrEmpty(mapname) && !maps.Contains(mapname)) maps.Add(mapname);
                                break;
                        }
                    }
                }
                catch (Exception e) { Server.ErrorLog(e); }
            }
        }
Пример #10
0
 public ItemPerms(LevelPermission min, List <LevelPermission> allowed,
                  List <LevelPermission> disallowed)
 {
     Init(min, allowed, disallowed);
 }
Пример #11
0
 public static string PermissionToName(LevelPermission perm)
 {
     Group foundGroup = Group.findPerm(perm);
     if (foundGroup != null)
         return foundGroup.name;
     else
         return ((int)perm).ToString();
 }
Пример #12
0
 public static void MessageNeedMinPerm(Player p, string action, LevelPermission perm)
 {
     p.Message("Only {0}%S{1}", Group.GetColoredName(perm), action);
 }
Пример #13
0
        public void LoadSettings()
        {
            if (!File.Exists("properties/lavasurvival.properties"))
            {
                SaveSettings();
                return;
            }

            foreach (string line in File.ReadAllLines("properties/lavasurvival.properties"))
            {
                try
                {
                    if (line[0] != '#')
                    {
                        string value = line.Substring(line.IndexOf(" = ") + 3);
                        switch (line.Substring(0, line.IndexOf(" = ")).ToLower())
                        {
                            case "start-on-startup":
                                startOnStartup = bool.Parse(value);
                                break;
                            case "send-afk-to-main":
                                sendAfkMain = bool.Parse(value);
                                break;
                            case "vote-count":
                                voteCount = (byte)NumberClamp(decimal.Parse(value), 2, 10);
                                break;
                            case "vote-time":
                                voteTime = double.Parse(value);
                                break;
                            case "setup-rank":
                                setupRank = Level.PermissionFromName(value.ToLower());
                                break;
                            case "maps":
                                foreach (string mapname in value.Split(','))
                                    if(!maps.Contains(mapname)) maps.Add(mapname);
                                break;
                        }
                    }
                }
                catch (Exception e) { Server.ErrorLog(e); }
            }
        }
Пример #14
0
        public static string PermissionToName(LevelPermission perm)
        {
            Group foundGroup = Group.findPerm(perm);

            return(foundGroup != null ? foundGroup.name : ((int)perm).ToString());
        }
Пример #15
0
        public override void Use(Player p, string message)
        {
            try
            {
                if (message == "")
                {
                    Player.SendMessage(p, "Basic blocks: ");
                    for (byte i = 0; i < 50; i++)
                    {
                        message += ", " + Block.Name(i);
                    }
                    Player.SendMessage(p, message.Remove(0, 2));
                    Player.SendMessage(p, "&d/blocks all <0/1/2/3/4> " + Server.DefaultColor + "will show the rest.");
                }
                else if (message.ToLower() == "all")
                {
                    Player.SendMessage(p, "Complex blocks: ");
                    for (byte i = 50; i < 255; i++)
                    {
                        if (Block.Name(i).ToLower() != "unknown")
                        {
                            message += ", " + Block.Name(i);
                        }
                    }
                    Player.SendMessage(p, message.Remove(0, 2));
                    Player.SendMessage(p, "Use &d/blocks all <0/1/2/3/4> " + Server.DefaultColor + "for a readable list.");
                }
                else if (message.ToLower().IndexOf(' ') != -1 && message.Split(' ')[0] == "all")
                {
                    int foundRange = 0;
                    try { foundRange = int.Parse(message.Split(' ')[1]); }
                    catch { Player.SendMessage(p, "Incorrect syntax"); return; }

                    if (foundRange >= 5 || foundRange < 0)
                    {
                        Player.SendMessage(p, "Number must be between 0 and 4"); return;
                    }

                    message = "";
                    Player.SendMessage(p, "Blocks between " + foundRange * 51 + " and " + (foundRange + 1) * 51);
                    for (byte i = (byte)(foundRange * 51); i < (byte)((foundRange + 1) * 51); i++)
                    {
                        if (Block.Name(i).ToLower() != "unknown")
                        {
                            message += ", " + Block.Name(i);
                        }
                    }
                    Player.SendMessage(p, message.Remove(0, 2));
                }
                else
                {
                    string printMessage = ">>>&b";

                    if (Block.Byte(message) != Block.Zero)
                    {
                        byte b = Block.Byte(message);
                        if (b < 51)
                        {
                            for (byte i = 51; i < 255; i++)
                            {
                                if (Block.Convert(i) == b)
                                {
                                    printMessage += Block.Name(i) + ", ";
                                }
                            }

                            if (printMessage != ">>>&b")
                            {
                                Player.SendMessage(p, "Blocks which look like \"" + message + "\":");
                                Player.SendMessage(p, printMessage.Remove(printMessage.Length - 2));
                            }
                            else
                            {
                                Player.SendMessage(p, "No Complex Blocks look like \"" + message + "\"");
                            }
                        }
                        else
                        {
                            Player.SendMessage(p, "&bComplex information for \"" + message + "\":");
                            Player.SendMessage(p, "&cBlock will appear as a \"" + Block.Name(Block.Convert(b)) + "\" block");

                            if (Block.LightPass(b))
                            {
                                Player.SendMessage(p, "Block will allow light through");
                            }
                            if (Block.Physics(b))
                            {
                                Player.SendMessage(p, "Block affects physics in some way");                   //AFFECT!
                            }
                            else
                            {
                                Player.SendMessage(p, "Block will not affect physics in any way");  //It's AFFECT!
                            }
                            if (Block.NeedRestart(b))
                            {
                                Player.SendMessage(p, "The block's physics will auto-start");
                            }

                            if (Block.OPBlocks(b))
                            {
                                Player.SendMessage(p, "Block is unaffected by explosions");
                            }

                            if (Block.AllowBreak(b))
                            {
                                Player.SendMessage(p, "Anybody can activate the block");
                            }
                            if (Block.Walkthrough(b))
                            {
                                Player.SendMessage(p, "Block can be walked through");
                            }
                            if (Block.Death(b))
                            {
                                Player.SendMessage(p, "Walking through block will kill you");
                            }

                            if (Block.DoorAirs(b) != (byte)0)
                            {
                                Player.SendMessage(p, "Block is an ordinary door");
                            }
                            if (Block.tDoor(b))
                            {
                                Player.SendMessage(p, "Block is a tdoor, which allows other blocks through when open");
                            }
                            if (Block.odoor(b) != Block.Zero)
                            {
                                Player.SendMessage(p, "Block is an odoor, which toggles (GLITCHY)");
                            }

                            if (Block.Mover(b))
                            {
                                Player.SendMessage(p, "Block can be activated by walking through it");
                            }
                        }
                    }
                    else if (Group.Find(message) != null)
                    {
                        LevelPermission Perm = Group.Find(message).Permission;
                        foreach (Block.Blocks bL in Block.BlockList)
                        {
                            if (Block.canPlace(Perm, bL.type) && Block.Name(bL.type).ToLower() != "unknown")
                            {
                                printMessage += Block.Name(bL.type) + ", ";
                            }
                        }

                        if (printMessage != ">>>&b")
                        {
                            Player.SendMessage(p, "Blocks which " + Group.Find(message).color + Group.Find(message).name + Server.DefaultColor + " can place: ");
                            Player.SendMessage(p, printMessage.Remove(printMessage.Length - 2));
                        }
                        else
                        {
                            Player.SendMessage(p, "No blocks are specific to this rank");
                        }
                    }
                    else if (message.IndexOf(' ') == -1)
                    {
                        if (message.ToLower() == "count")
                        {
                            Player.SendMessage(p, "Blocks in this map: " + p.level.blocks.Length);
                        }
                        else
                        {
                            Help(p);
                        }
                    }
                    else if (message.Split(' ')[0].ToLower() == "count")
                    {
                        int foundNum = 0; byte foundBlock = Block.Byte(message.Split(' ')[1]);
                        if (foundBlock == Block.Zero)
                        {
                            Player.SendMessage(p, "Could not find block specified"); return;
                        }

                        for (int i = 0; i < p.level.blocks.Length; i++)
                        {
                            if (foundBlock == p.level.blocks[i])
                            {
                                foundNum++;
                            }
                        }

                        if (foundNum == 0)
                        {
                            Player.SendMessage(p, "No blocks were of type \"" + message.Split(' ')[1] + "\"");
                        }
                        else if (foundNum == 1)
                        {
                            Player.SendMessage(p, "1 block was of type \"" + message.Split(' ')[1] + "\"");
                        }
                        else
                        {
                            Player.SendMessage(p, foundNum.ToString() + " blocks were of type \"" + message.Split(' ')[1] + "\"");
                        }
                    }
                    else
                    {
                        Player.SendMessage(p, "Unable to find block or rank");
                    }
                }
            }
            catch (Exception e) { Server.ErrorLog(e); Help(p); }
        }
Пример #16
0
            static LevelPermission GetPerm(string value)
            {
                LevelPermission perm = Level.PermissionFromName(value);

                return(perm != LevelPermission.Null ? perm : LevelPermission.Guest);
            }
Пример #17
0
            void ParseProperty(string key, string value)
            {
                switch (key.ToLower())
                {
                case "physics": Physics = int.Parse(value); break;

                case "guns": Guns = bool.Parse(value); break;

                case "useblockdb": blockDB = bool.Parse(value); break;

                case "realmowner": RealmOwner = value; break;

                case "perbuild": build = GetPerm(value); break;

                case "pervisit": visit = GetPerm(value); break;

                case "perbuildmax": buildmax = GetPerm(value); break;

                case "pervisitmax": visitmax = GetPerm(value); break;

                case "visitwhitelist": VisitWhitelist = Parse(value); break;

                case "visitblacklist": VisitBlacklist = Parse(value); break;

                case "buildwhitelist": BuildWhitelist = Parse(value); break;

                case "buildblacklist": BuildBlacklist = Parse(value); break;

                case "authors": Authors = value; break;

                case "roundsplayed": TotalRounds = int.Parse(value); break;

                case "roundshumanwon": HumanRounds = int.Parse(value); break;

                case "likes": Likes = int.Parse(value); break;

                case "dislikes": Dislikes = int.Parse(value); break;

                case "cloudcolor": Clouds = value; break;

                case "fogcolor": Fog = value; break;

                case "skycolor": Sky = value; break;

                case "shadowcolor": Shadow = value; break;

                case "lightcolor": Light = value; break;

                case "edgeblock": EdgeBlock = byte.Parse(value); break;

                case "edgelevel": EdgeLevel = short.Parse(value); break;

                case "horizonblock": HorizonBlock = byte.Parse(value); break;

                case "cloudsheight": CloudsHeight = short.Parse(value); break;

                case "maxfog": MaxFog = short.Parse(value); break;

                case "texture": TerrainUrl = value; break;

                case "texturepack": TextureUrl = value; break;

                case "clouds-speed": CloudsSpeed = int.Parse(value); break;

                case "weather-speed": WeatherSpeed = int.Parse(value); break;

                case "weather-fade": WeatherFade = int.Parse(value); break;
                }
            }
Пример #18
0
        void eco_cbItemRank_SelectedIndexChanged(object sender, EventArgs e)
        {
            const LevelPermission perm = LevelPermission.Guest;

            eco_curItem.PurchaseRank = GuiPerms.GetPermission(eco_cbItemRank, perm);
        }
Пример #19
0
 static string GetName(LevelPermission perm) {
     string permName = Level.PermissionToName(perm).ToLower();
     return Group.Exists(permName) ? permName :
         Level.PermissionToName(LevelPermission.Nobody);
 }
Пример #20
0
 public Group()
 {
     Permission = LevelPermission.Null;
 }
Пример #21
0
        public static string PermissionToName(LevelPermission perm)
        {
            string strPermission = "Null";
            switch (perm)
            {
                case LevelPermission.Guest:
                    strPermission = "Guest";
                    break;
                case LevelPermission.Builder:
                    strPermission = "Builder";
                    break;
                case LevelPermission.AdvBuilder:
                    strPermission = "AdvBuilder";
                    break;
                case LevelPermission.Moderator:
                    strPermission = "Moderator";
                    break;
                case LevelPermission.Operator:
                    strPermission = "Operator";
                    break;
                case LevelPermission.Admin:
                    strPermission = "Admin";
                    break;
            }

            return strPermission;
        }
Пример #22
0
        public static bool canPlace(LevelPermission givenPerm, byte givenBlock)
        {
            foreach (Blocks b in BlockList)
            {
                if (givenBlock == b.type)
                {
                    if ((b.lowestRank <= givenPerm && !b.disallow.Contains(givenPerm)) || b.allow.Contains(givenPerm)) return true;
                    return false;
                }
            }

            return false;
        }
Пример #23
0
 protected void Init(LevelPermission min, List <LevelPermission> allowed,
                     List <LevelPermission> disallowed)
 {
     MinRank = min; Allowed = allowed; Disallowed = disallowed;
 }
Пример #24
0
 public static Group findPerm(LevelPermission Perm)
 {
     foreach (Group grp in GroupList)
     {
         if (grp.Permission == Perm) return grp;
     }
     return null;
 }
Пример #25
0
 public ItemPerms(LevelPermission min)
 {
     Init(min, null, null);
 }
Пример #26
0
 public Group()
 {
     Permission = LevelPermission.Null;
 }
Пример #27
0
 public bool Remove(LevelPermission perm)
 {
     return(Ranks.Remove(Find(perm)));
 }
Пример #28
0
 public bool UsableBy(LevelPermission perm)
 {
     return((perm >= MinRank || (Allowed != null && Allowed.Contains(perm))) &&
            (Disallowed == null || !Disallowed.Contains(perm)));
 }
Пример #29
0
 /// <summary>
 /// Find the group with the permission /Perm/
 /// </summary>
 /// <param name="Perm">The level permission to search for</param>
 /// <returns>The group object with that level permission</returns>
 public static Group findPerm(LevelPermission Perm)
 {
     return GroupList.FirstOrDefault(grp => grp.Permission == Perm);
 }
Пример #30
0
 public static Group Find(LevelPermission perm)
 {
     return(GroupList.Find(grp => grp.Permission == perm));
 }
Пример #31
0
        public static void AddCommands(out CommandList commands, LevelPermission perm)
        {
            commands = new CommandList();

            foreach (rankAllowance aV in allowedCommands)
                if ((aV.lowestRank <= perm && !aV.disallow.Contains(perm)) || aV.allow.Contains(perm)) commands.Add(Command.all.Find(aV.commandName));
        }
Пример #32
0
 public CommandPerm(LevelPermission perm, string desc)
 {
     Perm = perm; Description = desc;
 }
        public override void Use(Player p, string message)
        {
            if (message == "")
            {
                Help(p); return;
            }
            int number = message.Split(' ').Length;

            if (number > 2 || number < 1)
            {
                Help(p); return;
            }
            if (number == 1)
            {
                LevelPermission Perm = Level.PermissionFromName(message);
                if (Perm == LevelPermission.Null)
                {
                    Player.SendMessage(p, "Not a valid rank"); return;
                }
                if (p.level.perbuildmax > p.group.Permission)
                {
                    if (p.level.perbuildmax != LevelPermission.Nobody)
                    {
                        Player.SendMessage(p, "You cannot change the perbuildmax of a level with a perbuildmax higher than your rank.");
                        return;
                    }
                }
                p.level.perbuildmax = Perm;
                Level.SaveSettings(p.level);
                Server.s.Log(p.level.name + " buildmax permission changed to " + message + ".");
                Player.GlobalMessageLevel(p.level, "buildmax permission changed to " + message + ".");
            }
            else
            {
                int             pos  = message.IndexOf(' ');
                string          t    = message.Substring(0, pos).ToLower();
                string          s    = message.Substring(pos + 1).ToLower();
                LevelPermission Perm = Level.PermissionFromName(s);
                if (Perm == LevelPermission.Null)
                {
                    Player.SendMessage(p, "Not a valid rank"); return;
                }

                Level level = Level.FindExact(t);
                if (level.perbuildmax > p.group.Permission)
                {
                    if (level.perbuildmax != LevelPermission.Nobody)
                    {
                        Player.SendMessage(p, "You cannot change the perbuildmax of a level with a perbuildmax higher than your rank.");
                        return;
                    }
                }
                if (level != null)
                {
                    level.perbuildmax = Perm;
                    Level.SaveSettings(level);
                    Server.s.Log(level.name + " buildmax permission changed to " + s + ".");
                    Player.GlobalMessageLevel(level, "buildmax permission changed to " + s + ".");
                    if (p != null)
                    {
                        if (p.level != level)
                        {
                            Player.SendMessage(p, "buildmax permission changed to " + s + " on " + level.name + ".");
                        }
                    }
                    return;
                }
                else
                {
                    Player.SendMessage(p, "There is no level \"" + s + "\" loaded.");
                }
            }
        }
Пример #34
0
        internal static LevelPermission GetPermission(ComboBox box, LevelPermission defPerm)
        {
            Group grp = Group.Find(box.SelectedItem.ToString());

            return(grp == null ? defPerm : grp.Permission);
        }
Пример #35
0
        private void fillLowest(ref TextBox txtBox, ref LevelPermission toChange)
        {
            if (txtBox.Text != "")
            {
                txtBox.Text = txtBox.Text.Trim().ToLower();
                int foundPerm = -100;
                try
                {
                    foundPerm = int.Parse(txtBox.Text);
                }
                catch
                {
                    Group foundGroup = Group.Find(txtBox.Text);
                    if (foundGroup != null) foundPerm = (int)foundGroup.Permission;
                    else { Server.s.Log("Could not find " + txtBox.Text); }
                }

                txtBox.Text = "";
                if (foundPerm < -99) txtBox.Text = (int)toChange + "";
                else txtBox.Text = foundPerm + "";

                toChange = (LevelPermission)Convert.ToInt16(txtBox.Text);
            }
        }
Пример #36
0
 /// <summary>
 /// Find the group with the permission /Perm/
 /// </summary>
 /// <param name="Perm">The level permission to search for</param>
 /// <returns>The group object with that level permission</returns>
 public static Group findPerm(LevelPermission Perm)
 {
     return(GroupList.FirstOrDefault(grp => grp.Permission == Perm));
 }