Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 void Update()
 {
     Level.SaveSettings(lvl);
     UpdateAllowBuild();
     UpdateAllowVisit();
 }