internal static void LoadZones(Level level, string name) { if (!Database.TableExists("Zone" + name)) { return; } int id = 0; bool changedPerbuild = false; using (DataTable table = Database.Backend.GetRows("Zone" + name, "*")) { foreach (DataRow row in table.Rows) { Zone z = new Zone(level); z.MinX = ushort.Parse(row["SmallX"].ToString()); z.MinY = ushort.Parse(row["SmallY"].ToString()); z.MinZ = ushort.Parse(row["SmallZ"].ToString()); z.MaxX = ushort.Parse(row["BigX"].ToString()); z.MaxY = ushort.Parse(row["BigY"].ToString()); z.MaxZ = ushort.Parse(row["BigZ"].ToString()); string owner = row["Owner"].ToString(); if (owner.StartsWith("grp")) { Group grp = Group.Find(owner.Substring(3)); if (grp != null) { z.Access.Min = grp.Permission; } } else if (z.CoversMap(level)) { level.BuildAccess.Whitelisted.Add(owner); changedPerbuild = true; continue; } else { z.Access.Whitelisted.Add(owner); z.Access.Min = LevelPermission.Admin; } z.Config.Name = "Zone" + id; id++; z.AddTo(level); } } if (changedPerbuild) { Level.SaveSettings(level); } if (level.Zones.Count > 0 && !level.Save(true)) { return; } Database.Backend.DeleteTable("Zone" + name); Logger.Log(LogType.SystemActivity, "Upgraded zones for map " + name); }
internal static void LoadZones(Level level, string map) { if (!Database.TableExists("Zone" + map)) { return; } List <Zone> zones = new List <Zone>(); Database.Backend.ReadRows("Zone" + map, "*", zones, ListZones); bool changedPerbuild = false; for (int i = 0; i < zones.Count; i++) { Zone z = zones[i]; string owner = z.Config.Name; if (owner.StartsWith("grp")) { Group grp = Group.Find(owner.Substring(3)); if (grp != null) { z.Access.Min = grp.Permission; } } else if (z.CoversMap(level)) { level.BuildAccess.Whitelisted.Add(owner); changedPerbuild = true; continue; } else { z.Access.Whitelisted.Add(owner); z.Access.Min = LevelPermission.Admin; } z.Config.Name = "Zone" + i; z.AddTo(level); } if (changedPerbuild) { level.SaveSettings(); } if (level.Zones.Count > 0 && !level.Save(true)) { return; } Database.Backend.DeleteTable("Zone" + map); Logger.Log(LogType.SystemActivity, "Upgraded zones for map " + map); }
void Update() { Level.SaveSettings(lvl); UpdateAllowBuild(); UpdateAllowVisit(); }