Esempio n. 1
0
 public void Use(Player p, string[] args)
 {
     if (args.Length < 1)
     {
         p.SendMessage("You must specify a name!");
         return;
     }
     Random Random = new Random();
     string margs = ArrayToString(args);
     margs = margs.Replace('%', '&');
     Bot TemporaryPlayer = new Bot(margs, p.Pos, p.Rot, p.Level, true, true, true);
     TemporaryPlayer.Player.Level.ExtraData.Add("Bot" + Random.Next(0, 9999999), margs + " " + TemporaryPlayer.FollowPlayers +  //TODO - Random INT so the dictionary doesnt clash - this should be fixed
         " " + TemporaryPlayer.Player.Pos.x + " " + TemporaryPlayer.Player.Pos.y + " " + TemporaryPlayer.Player.Pos.z + " "
         + TemporaryPlayer.Player.Rot[0] + " " + TemporaryPlayer.Player.Rot[1]); //Add bot to level metadata
                                                                                 //This enables cross server bot transfer
                                                                                 //And returns when level is loaded
     p.SendMessage("Spawned " + ArrayToString(args) + Server.DefaultColor + "!");
 }
Esempio n. 2
0
        public void Use(Player p, string[] args)
        {
            if (args.Length < 2)
            {
                p.SendMessage("You must specify an option and a name!");
                return;
            }
            Random Random = new Random();
            if (args[0].ToLower() == "add")
            {
                List<string> fargs = new List<string>();
                int l = 0;
                foreach (string s in args) {
                    if (l > 0)
                        fargs.Add(s);
                    l++;
                }
                string margs = ArrayToString(fargs.ToArray());
                margs = margs.Replace('%', '&');
                Bot TemporaryPlayer = new Bot(margs, p.Pos, new byte[2] { (byte)p.Rot.x, (byte)p.Rot.z }, p.Level, false, false, false);
                TemporaryPlayer.Player.Level.ExtraData.Add("Bot" + Random.Next(0, 9999999), margs + " " + TemporaryPlayer.FollowPlayers + " " + TemporaryPlayer.BreakBlocks + " " + TemporaryPlayer.Jumping +
                    " " + TemporaryPlayer.Player.Pos.x + " " + TemporaryPlayer.Player.Pos.y + " " + TemporaryPlayer.Player.Pos.z + " "
                    + TemporaryPlayer.Player.Rot.x + " " + TemporaryPlayer.Player.Rot.z); //Add bot to level metadata
                                                                                            //This enables cross server bot transfer
                                                                                            //And returns when level is loaded
                p.SendMessage("Spawned " + ArrayToString(fargs.ToArray()) + Server.DefaultColor + "!");
            }
            else if (args[0].ToLower() == "remove")
            {
                List<string> fargs = new List<string>();
                int l = 0;
                foreach (string s in args)
                {
                    if (l > 0)
                        fargs.Add(s);
                    l++;
                }
                string margs = ArrayToString(fargs.ToArray());
                margs = margs.Replace('%', '&');
                bool hitBot = false;
                foreach (Bot b in Server.Bots.ToArray())
                {
                    if (b.Player.Username.ToLower() == margs.ToLower() &&
                        b.Player.Level == p.Level)
                    {
                        hitBot = true;
                        b.Player.GlobalDie();
                        Server.Bots.Remove(b);
                    }
                }
                List<string> tempArray = new List<string>();
                foreach (var b in p.Level.ExtraData)
                {
                    if (b.Value.ToString().ToLower().Split(' ')[0].Equals(margs.ToLower()))
                    {
                        tempArray.Add(b.Key.ToString());
                    }
                }
                foreach (string s in tempArray)
                {
                    hitBot = true;
                    p.Level.ExtraData.Remove(s);
                }
                if (hitBot)
                    p.SendMessage("Removed " + ArrayToString(fargs.ToArray()) + Server.DefaultColor + "!");
                else
                    p.SendMessage("Could not find " + ArrayToString(fargs.ToArray()) + Server.DefaultColor + "!");
            }
            else if (args[0].ToLower() == "summon")
            {
                List<string> fargs = new List<string>();
                int l = 0;
                foreach (string s in args)
                {
                    if (l > 0)
                        fargs.Add(s);
                    l++;
                }
                string margs = ArrayToString(fargs.ToArray());
                margs = margs.Replace('%', '&');
                bool hitBot = false;
                foreach (Bot b in Server.Bots.ToArray())
                {
                    if (b.Player.Username.ToLower() == margs.ToLower() &&
                        b.Player.Level == p.Level)
                    {
                        hitBot = true;
                        b.Player.Pos = p.Pos;
                    }
                }
                if (hitBot)
                    p.SendMessage("Summoned " + ArrayToString(fargs.ToArray()) + Server.DefaultColor + "!");
                else
                    p.SendMessage("Could not find " + ArrayToString(fargs.ToArray()) + Server.DefaultColor + "!");
            }
            else if (args[0].ToLower() == "ai")
            {
                List<string> fargs = new List<string>();
                int l = 0;
                foreach (string s in args)
                {
                    if (l > 0)
                        fargs.Add(s);
                    l++;
                }
                string margs = ArrayToString(fargs.ToArray());
                margs = margs.Replace('%', '&');
                string[] blargs = margs.Split('"');
                if (blargs.Length != 3)
                {
                    p.SendMessage("You need to use \"'s in your command!");
                    return;
                }
                foreach (string s in blargs) {
                    s.Replace("\"", "");
                }
                string FoundPlayer = blargs[1];
                string AI = "";
                try
                {
                    AI = blargs[2].Remove(0, 1);
                }
                catch {
                    p.SendMessage("You need to fill out the entire command!");
                    return;
                }
                bool HitBot = false;

                Bot Bot = null;

                foreach (Bot b in Server.Bots.ToArray())
                {
                    if (b.Player.Username.ToLower() == FoundPlayer.ToLower())
                    {
                        switch (AI)
                        {
                            case "follow":
                                b.FollowPlayers = !b.FollowPlayers;
                                HitBot = true;
                                Bot = b;
                                break;
                            case "break":
                                b.BreakBlocks = !b.BreakBlocks;
                                HitBot = true;
                                Bot = b;
                                break;
                            case "jump":
                                b.Jumping = !b.Jumping;
                                HitBot = true;
                                Bot = b;
                                break;
                        }
                    }
                }

                if (HitBot)
                    p.SendMessage("Changed " + FoundPlayer + "'s AI!");
                else
                {
                    p.SendMessage("Couldn't find " + FoundPlayer + " or change the AI!");
                    return;
                }

                List<string> tempArray = new List<string>();
                foreach (var b in p.Level.ExtraData)
                {
                    if (b.Value.ToString().ToLower().Split(' ')[0].Equals(margs.ToLower()))
                    {
                        tempArray.Add(b.Key.ToString());
                    }
                }
                foreach (string s in tempArray)
                {
                    p.Level.ExtraData.Remove(s);
                }

                Bot.Player.Level.ExtraData.Add("Bot" + Random.Next(0, 9999999), margs + " " + Bot.FollowPlayers + " " + Bot.BreakBlocks +
                    " " + Bot.Player.Pos.x + " " + Bot.Player.Pos.y + " " + Bot.Player.Pos.z + " "
                    + Bot.Player.Rot.x + " " + Bot.Player.Rot.z);
            }
        }
Esempio n. 3
0
 /// <summary>
 /// Handles the extra data for the level
 /// </summary>
 public void HandleMetaData()
 {
     if (ExtraData.Count > 0)
     {
         try
         {
             foreach (var pair in ExtraData)
             {
                 if (pair.Key.ToString().StartsWith("Bot")) //Load bots
                 {
                     string[] StringSplit = pair.Value.ToString().Split(' ');
                     if (StringSplit.Length == 9)
                     {
                         ushort x = Convert.ToUInt16(StringSplit[4]);
                         ushort y = Convert.ToUInt16(StringSplit[5]);
                         ushort z = Convert.ToUInt16(StringSplit[6]);
                         Bot TemporaryBot = new Bot(StringSplit[0],
                             new Vector3S(x, z, y),
                             new byte[] { Convert.ToByte(StringSplit[7]), Convert.ToByte(StringSplit[8]) }, this,
                             Convert.ToBoolean(StringSplit[1]), Convert.ToBoolean(StringSplit[2]), Convert.ToBoolean(StringSplit[3]));
                     }
                 }
             }
         }
         catch (Exception e) { Logger.LogError(e); }
     }
 }
 public static void RainBots(Level Level)
 {
     for (int i = 0; i < Random.Next(5,9); i++)
     {
         short x = (short)Random.Next(32, Level.CWMap.Size.x * 32);
         short y = (short)((Level.CWMap.Size.y - 4) * 32);
         short z = (short)Random.Next(32, Level.CWMap.Size.z * 32);
         Bot ZombieBot = new Bot("UndeaadBot" + i, new Vector3S(x, z, y), new byte[] { 0, 0 }, Level, false, false, false);
         ZombieBot.Player.DisplayName = "";
         ZombieBot.Player.IsHeadFlipped = true;
         ZombieBot.FollowPlayers = true;
         ZombieBot.BreakBlocks = true;
         ZombieBot.Jumping = true;
     }
 }
Esempio n. 5
0
 protected void SpawnThisBotToOtherPlayers(Bot z)
 {
     Server.ForeachPlayer(delegate(Player p)
     {
         if (p != z.Player && p.Level == z.Player.Level)
             p.SendSpawn(z.Player);
     });
 }
Esempio n. 6
0
 public static BreadCrumb Pathfind(Bot Bot, Vector3S ClosestLocation)
 {
     return PathFinder.FindPath(Bot.Player.Level, Bot.LevelMap, new Point3D((Bot.Player.Pos.x / 32), (Bot.Player.Pos.y / 32), (Bot.Player.Pos.z / 32)),
         new Point3D((ClosestLocation.x / 32), (ClosestLocation.y / 32), (ClosestLocation.z / 32)));
 }
Esempio n. 7
0
 public static BreadCrumb Pathfind(Bot Bot, Vector3S ClosestLocation)
 {
     return(PathFinder.FindPath(Bot.Player.Level, Bot.LevelMap, new Point3D((Bot.Player.Pos.x / 32), (Bot.Player.Pos.y / 32), (Bot.Player.Pos.z / 32)),
                                new Point3D((ClosestLocation.x / 32), (ClosestLocation.y / 32), (ClosestLocation.z / 32))));
 }