예제 #1
0
 public Module(int id, string name, ModuleType moduleType, Level.Zone zone)
 {
     this.id         = id;
     this.name       = name;
     this.moduleType = moduleType;
     this.zone       = zone;
 }
예제 #2
0
 public Module()
 {
     id         = 0;
     name       = "";
     moduleType = ModuleType.Clear;
     zone       = Level.Zone.None;
 }
예제 #3
0
        internal static void ZoneAll(Level lvl, string owner)
        {
            Level.Zone zn = default(Level.Zone);
            zn.bigX  = (ushort)(lvl.Width - 1);
            zn.bigY  = (ushort)(lvl.Height - 1);
            zn.bigZ  = (ushort)(lvl.Length - 1);
            zn.Owner = owner;

            lvl.ZoneList.Add(zn);
            LevelDB.CreateZone(lvl.name, zn);
        }
예제 #4
0
        protected internal override void OnBuyCommand(Player p, string message, string[] args)
        {
            if (args.Length < 3)
            {
                OnStoreCommand(p); return;
            }
            LevelPreset preset = FindPreset(args[1]);

            if (preset == null)
            {
                Player.Message(p, "%cThat isn't a level preset"); return;
            }

            if (p.money < preset.price)
            {
                Player.Message(p, "%cYou don't have enough %3" + Server.moneys + "%c to buy that map"); return;
            }
            string name = p.name + "_" + args[2];

            try {
                Command.all.Find("newlvl").Use(null, name + " " + preset.x + " " + preset.y + " " + preset.z + " " + preset.type);
                Player.Message(p, "%aCreating level: '%f" + name + "%a' . . .");

                CmdLoad.LoadLevel(null, name);
                Level level = LevelInfo.FindExact(name);
                if (level.permissionbuild > p.Rank)
                {
                    level.permissionbuild = p.Rank;
                }
                if (level.permissionvisit > p.Rank)
                {
                    level.permissionvisit = p.Rank;
                }
                PlayerActions.ChangeMap(p, name);

                Player.Message(p, "%aSuccessfully created your map: '%f" + name + "%a'");
                try {
                    Level.Zone zn = default(Level.Zone);
                    zn.bigX  = (ushort)(level.Width - 1);
                    zn.bigY  = (ushort)(level.Height - 1);
                    zn.bigZ  = (ushort)(level.Length - 1);
                    zn.Owner = p.name;
                    level.ZoneList.Add(zn);
                    LevelDB.CreateZone(level.name, zn);
                    Player.Message(p, "%aZoning Succesful");
                } catch { Player.Message(p, "%cZoning Failed"); }
            } catch {
                Player.Message(p, "%cSomething went wrong, Money untouched"); return;
            }
            Economy.MakePurchase(p, preset.price, "%3Map: %f" + preset.name);
        }
예제 #5
0
        bool DeleteZone(Player p, Vec3S32[] marks, object state, byte type, byte extType)
        {
            Level   lvl      = p.level;
            bool    foundDel = false;
            Vec3S32 P        = marks[0];

            for (int i = 0; i < lvl.ZoneList.Count; i++)
            {
                Level.Zone zn = lvl.ZoneList[i];
                if (P.X < zn.smallX || P.X > zn.bigX || P.Y < zn.smallY || P.Y > zn.bigY || P.Z < zn.smallZ || P.Z > zn.bigZ)
                {
                    continue;
                }

                if (zn.Owner.Length >= 3 && zn.Owner.StartsWith("grp"))
                {
                    string grpName = zn.Owner.Substring(3);
                    if (p.Rank < Group.Find(grpName).Permission)
                    {
                        continue;
                    }
                }
                else if (zn.Owner != "" && !zn.Owner.CaselessEq(p.name))
                {
                    Group group = Group.findPlayerGroup(zn.Owner);
                    if (p.Rank < group.Permission)
                    {
                        continue;
                    }
                }

                LevelDB.DeleteZone(lvl.name, zn);
                lvl.ZoneList.RemoveAt(i); i--;
                Player.Message(p, "Zone deleted for &b" + zn.Owner);
                foundDel = true;
            }

            if (!foundDel)
            {
                Player.Message(p, "No zones found to delete.");
            }
            return(false);
        }
예제 #6
0
        internal static void DeleteWhere(Player p, Predicate <Level.Zone> filter)
        {
            int count = p.level.ZoneList.Count, removed = 0;

            for (int i = count - 1; i >= 0; i--)
            {
                Level.Zone zone = p.level.ZoneList[i];
                if (!filter(zone))
                {
                    continue;
                }
                LevelDB.DeleteZone(p.level.name, zone);

                removed++;
                Player.Message(p, "Zone deleted for &b" + zone.Owner);
                p.level.ZoneList.Remove(p.level.ZoneList[i]);
            }
            Player.Message(p, "Removed {0} zone{1}.", removed, count == 1 ? "s" : "");
        }
 public void ChangeLevel()
 {
     Level.Zone nextZone = levels[currentLevel].nextZone;
     if (nextZone == Level.Zone.None)
     {
         Debug.Log("Victoria");
     }
     else
     {
         currentLevel++;
         if (currentLevel >= levels.Count)
         {
             currentLevel = 0;
             while (levels[currentLevel].zone != nextZone)
             {
                 currentLevel = Random.Range(0, levels.Count);
             }
         }
     }
     endLevel = false;
     LoadLevel();
 }
예제 #8
0
        public override void Use(Player p, string message)
        {
            if (message == "")
            {
                message = "list";
            }

            string[] parameters = message.Split(' ');

            if (parameters[0].ToLower() == "list")
            {
                if (parameters.Length > 1)
                {
                    int pageNum, currentNum;
                    try
                    {
                        pageNum = int.Parse(parameters[1]) * 10; currentNum = pageNum - 10;
                    }
                    catch { Help(p); return; }

                    if (currentNum < 0)
                    {
                        Player.SendMessage(p, "Must be greater than 0"); return;
                    }
                    if (pageNum > p.level.ZoneList.Count)
                    {
                        pageNum = p.level.ZoneList.Count;
                    }
                    if (currentNum > p.level.ZoneList.Count)
                    {
                        Player.SendMessage(p, "No Zones beyond number " + (p.level.ZoneList.Count - 1)); return;
                    }

                    Player.SendMessage(p, "Zones (" + currentNum + " to " + (pageNum - 1) + "):");
                    for (int i = currentNum; i < pageNum; i++)
                    {
                        Level.Zone zone = p.level.ZoneList[i];
                        Player.SendMessage(p, "&c" + i + " &b(" +
                                           zone.smallX + "-" + zone.bigX + ", " +
                                           zone.smallY + "-" + zone.bigY + ", " +
                                           zone.smallZ + "-" + zone.bigZ + ") &f" +
                                           zone.Owner);
                    }
                }
                else
                {
                    for (int i = 0; i < p.level.ZoneList.Count; i++)
                    {
                        Level.Zone zone = p.level.ZoneList[i];
                        Player.SendMessage(p, "&c" + i + " &b(" +
                                           zone.smallX + "-" + zone.bigX + ", " +
                                           zone.smallY + "-" + zone.bigY + ", " +
                                           zone.smallZ + "-" + zone.bigZ + ") &f" +
                                           zone.Owner);
                    }
                    Player.SendMessage(p, "For a more structured list, use /tpzone list <1/2/3/..>");
                }
            }
            else
            {
                int zoneID;
                try
                {
                    zoneID = int.Parse(message);
                }
                catch { Help(p); return; }

                if (zoneID < 0 || zoneID > p.level.ZoneList.Count)
                {
                    Player.SendMessage(p, "This zone doesn't exist");
                    return;
                }

                Level.Zone zone = p.level.ZoneList[zoneID];
                unchecked { p.SendPos((byte)-1, (ushort)(zone.bigX * 32 + 16), (ushort)(zone.bigY * 32 + 32), (ushort)(zone.bigZ * 32 + 16), p.rot[0], p.rot[1]); }

                Player.SendMessage(p, "Teleported to zone &c" + zoneID + " &b(" +
                                   zone.bigX + ", " + zone.bigY + ", " + zone.bigZ + ") &f" +
                                   zone.Owner);
            }
        }
예제 #9
0
파일: CmdZone.cs 프로젝트: Rekkeh/MCDeamon
        public override void Use(Player p, string message)
        {
            CatchPos cpos;

            if (message == "")
            {
                p.ZoneCheck = true;
                Player.SendMessage(p, "Place a block where you would like to check for zones.");
                return;
            }
            else if (p.group.Permission < LevelPermission.Operator)
            {
                Player.SendMessage(p, "Reserved for OP+");
                return;
            }

            if (message.IndexOf(' ') == -1)
            {
                switch (message.ToLower())
                {
                case "del":
                    p.zoneDel = true;
                    Player.SendMessage(p, "Place a block where you would like to delete a zone.");
                    return;

                default:
                    Help(p);
                    return;
                }
            }


            if (message.ToLower() == "del all")
            {
                if (p.group.Permission < LevelPermission.Admin)
                {
                    Player.SendMessage(p, "Only a SuperOP may delete all zones at once");
                    return;
                }
                else
                {
                    for (int i = 0; i < p.level.ZoneList.Count; i++)
                    {
                        Level.Zone Zn = p.level.ZoneList[i];
                        MySQL.executeQuery("DELETE FROM `Zone" + p.level.name + "` WHERE Owner='" + Zn.Owner + "' AND SmallX='" + Zn.smallX + "' AND SMALLY='" + Zn.smallY + "' AND SMALLZ='" + Zn.smallZ + "' AND BIGX='" + Zn.bigX + "' AND BIGY='" + Zn.bigY + "' AND BIGZ='" + Zn.bigZ + "'");

                        Player.SendMessage(p, "Zone deleted for &b" + Zn.Owner);
                        p.level.ZoneList.Remove(p.level.ZoneList[i]);
                        if (i == p.level.ZoneList.Count)
                        {
                            Player.SendMessage(p, "Finished removing all zones"); return;
                        }
                        i--;
                    }
                }
            }


            if (p.group.Permission < LevelPermission.Operator)
            {
                Player.SendMessage(p, "Setting zones is reserved for OP+"); return;
            }

            if (Group.Find(message.Split(' ')[1]) != null)
            {
                message = message.Split(' ')[0] + " grp" + Group.Find(message.Split(' ')[1]).name;
            }

            if (message.Split(' ')[0].ToLower() == "add")
            {
                Player foundPlayer = Player.Find(message.Split(' ')[1]);
                if (foundPlayer == null)
                {
                    cpos.Owner = message.Split(' ')[1].ToString();
                }
                else
                {
                    cpos.Owner = foundPlayer.name;
                }
            }
            else
            {
                Help(p); return;
            }

            if (!Player.ValidName(cpos.Owner))
            {
                Player.SendMessage(p, "INVALID NAME."); return;
            }

            cpos.x = 0; cpos.y = 0; cpos.z = 0; p.blockchangeObject = cpos;

            Player.SendMessage(p, "Place two blocks to determine the edges.");
            Player.SendMessage(p, "Zone for: &b" + cpos.Owner + ".");
            p.ClearBlockchange();
            p.Blockchange += new Player.BlockchangeEventHandler(Blockchange1);
        }
예제 #10
0
        public override void Use(Player p, string message)
        {
            CatchPos cpos;

            if (message == "")
            {
                p.ZoneCheck = true;
                Player.SendMessage(p, "Place a block where you would like to check for zones.");
                return;
            }
            else if ((int)p.group.Permission < CommandOtherPerms.GetPerm(this, 1))
            {
                Player.SendMessage(p, "Reserved for " + Group.findPermInt(CommandOtherPerms.GetPerm(this, 1)).name + "+");
                return;
            }

            if (message.IndexOf(' ') == -1)
            {
                if (p.canBuild == true)        //Checks if player can build there
                {
                    switch (message.ToLower()) //If true - they can delete the zone
                    {
                    case "del":
                        p.zoneDel = true;
                        Player.SendMessage(p, "Place a block where you would like to delete a zone.");
                        return;

                    default:
                        Help(p);
                        return;
                    }
                }
                else //if they cant, it warns them, the ops and logs it on the server!
                {
                    Player.SendMessage(p, "You can't delete a zone which is above your rank!");
                    Player.GlobalMessageOps(p.name + " tried to delete a zone that is above their rank!");
                    Server.s.Log(p.name + " tried to delete a zone that is above their rank!");
                    return;
                }
            }


            if (message.ToLower() == "del all")
            {
                if ((int)p.group.Permission < CommandOtherPerms.GetPerm(this, 2))
                {
                    Player.SendMessage(p, "Only a " + Group.findPermInt(CommandOtherPerms.GetPerm(this, 2)).name + "+ may delete all zones at once");
                    return;
                }
                else
                {
                    for (int i = 0; i < p.level.ZoneList.Count; i++)
                    {
                        Level.Zone Zn = p.level.ZoneList[i];
                        Database.AddParams("@Owner", Zn.Owner);
                        Database.executeQuery("DELETE FROM `Zone" + p.level.name + "` WHERE Owner=@Owner AND SmallX='" + Zn.smallX + "' AND SMALLY='" + Zn.smallY + "' AND SMALLZ='" + Zn.smallZ + "' AND BIGX='" + Zn.bigX + "' AND BIGY='" + Zn.bigY + "' AND BIGZ='" + Zn.bigZ + "'");

                        Player.SendMessage(p, "Zone deleted for &b" + Zn.Owner);
                        p.level.ZoneList.Remove(p.level.ZoneList[i]);
                        if (i == p.level.ZoneList.Count)
                        {
                            Player.SendMessage(p, "Finished removing all zones"); return;
                        }
                        i--;
                    }
                }
            }


            if ((int)p.group.Permission < CommandOtherPerms.GetPerm(this, 3))
            {
                Player.SendMessage(p, "Setting zones is reserved for " + Group.findPermInt(CommandOtherPerms.GetPerm(this, 3)).name); return;
            }

            if (Group.Find(message.Split(' ')[1]) != null)
            {
                message = message.Split(' ')[0] + " grp" + Group.Find(message.Split(' ')[1]).name;
            }

            if (message.Split(' ')[0].ToLower() == "add")
            {
                Player foundPlayer = Player.Find(message.Split(' ')[1]);
                if (foundPlayer == null)
                {
                    cpos.Owner = message.Split(' ')[1].ToString();
                }
                else
                {
                    cpos.Owner = foundPlayer.name;
                }
            }
            else
            {
                Help(p); return;
            }

            if (!Player.ValidName(cpos.Owner))
            {
                Player.SendMessage(p, "INVALID NAME."); return;
            }

            cpos.x = 0; cpos.y = 0; cpos.z = 0; p.blockchangeObject = cpos;

            Player.SendMessage(p, "Place two blocks to determine the edges.");
            Player.SendMessage(p, "Zone for: &b" + cpos.Owner + ".");
            p.ClearBlockchange();
            p.Blockchange += new Player.BlockchangeEventHandler(Blockchange1);
        }