// 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; }
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(); }
/// <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); }
// 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(); }
// 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(); }
public ConfigPermAttribute(string name, string section, string desc, LevelPermission defValue, bool serialiseName = false) : base(name, section, desc, defValue) { SerialiseName = serialiseName; }
public ConfigPermAttribute(string name, string section, LevelPermission def) : base(name, section) { defPerm = def; }
protected bool HasExtraPerm(Player p, LevelPermission plRank, int num) { return(CommandExtraPerms.Find(name, num).UsableBy(plRank)); }
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); } } }
public ItemPerms(LevelPermission min, List <LevelPermission> allowed, List <LevelPermission> disallowed) { Init(min, allowed, disallowed); }
public static string PermissionToName(LevelPermission perm) { Group foundGroup = Group.findPerm(perm); if (foundGroup != null) return foundGroup.name; else return ((int)perm).ToString(); }
public static void MessageNeedMinPerm(Player p, string action, LevelPermission perm) { p.Message("Only {0}%S{1}", Group.GetColoredName(perm), action); }
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); } } }
public static string PermissionToName(LevelPermission perm) { Group foundGroup = Group.findPerm(perm); return(foundGroup != null ? foundGroup.name : ((int)perm).ToString()); }
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); } }
static LevelPermission GetPerm(string value) { LevelPermission perm = Level.PermissionFromName(value); return(perm != LevelPermission.Null ? perm : LevelPermission.Guest); }
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; } }
void eco_cbItemRank_SelectedIndexChanged(object sender, EventArgs e) { const LevelPermission perm = LevelPermission.Guest; eco_curItem.PurchaseRank = GuiPerms.GetPermission(eco_cbItemRank, perm); }
static string GetName(LevelPermission perm) { string permName = Level.PermissionToName(perm).ToLower(); return Group.Exists(permName) ? permName : Level.PermissionToName(LevelPermission.Nobody); }
public Group() { Permission = LevelPermission.Null; }
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; }
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; }
protected void Init(LevelPermission min, List <LevelPermission> allowed, List <LevelPermission> disallowed) { MinRank = min; Allowed = allowed; Disallowed = disallowed; }
public static Group findPerm(LevelPermission Perm) { foreach (Group grp in GroupList) { if (grp.Permission == Perm) return grp; } return null; }
public ItemPerms(LevelPermission min) { Init(min, null, null); }
public bool Remove(LevelPermission perm) { return(Ranks.Remove(Find(perm))); }
public bool UsableBy(LevelPermission perm) { return((perm >= MinRank || (Allowed != null && Allowed.Contains(perm))) && (Disallowed == null || !Disallowed.Contains(perm))); }
/// <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); }
public static Group Find(LevelPermission perm) { return(GroupList.Find(grp => grp.Permission == perm)); }
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)); }
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."); } } }
internal static LevelPermission GetPermission(ComboBox box, LevelPermission defPerm) { Group grp = Group.Find(box.SelectedItem.ToString()); return(grp == null ? defPerm : grp.Permission); }
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); } }
/// <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)); }