Пример #1
0
 protected override void OnMessage(object sender, PlayerIOClient.Message m)
 {
     new System.Threading.Thread(() =>
     {
         base.OnMessage(sender, m);
         subBotHandler.onMessage(sender, m, this);
         switch (m.Type)
         {
         case "say":
             {
                 int player     = m.GetInt(0);
                 string message = m.GetString(1);
                 if (message[0] == '!')
                 {
                     message = message.TrimStart('!');
                     if (playerList.ContainsKey(player))
                     {
                         subBotHandler.onCommand(sender, message, playerList[player], this);
                     }
                 }
             }
             break;
         }
     }).Start();
 }
Пример #2
0
        //string name;

        public Player(PlayerIOClient.Message m)
            : base(m.GetInt(0), m.GetString(1).ToLower(), m.GetInt(2), m.GetFloat(3), m.GetFloat(4), m.GetBoolean(5), m.GetBoolean(6), m.GetBoolean(7), m.GetInt(8), false, false, 0)
        {
        }
        //Dictionary<int, Point> firstGodPositions = new Dictionary<int, Point>();
        public override void onMessage(object sender, PlayerIOClient.Message m, Bot bot)
        {
            switch (m.Type)
            {
            case "add":
            {
                string name = m.GetString(1);
                //bot.connection.Send("say", "/giveedit " + name);
            }
            break;

            /*case "god":
             *  {
             *      int id = m.GetInt(0);
             *      bool god = m.GetBoolean(1);
             *      if (bot.playerList.ContainsKey(id))
             *      {
             *          Player p = bot.playerList[id];
             *          if (p.name != "gustav9797" && p.name != "ostkaka")
             *          {
             *              if (god)
             *              {
             *                  if (!firstGodPositions.ContainsKey(id))
             *                      firstGodPositions.Add(id, new Point(p.blockX, p.blockY));
             *                  string name = bot.playerList[id].name;
             *                  bot.connection.Send("say", "/removeedit " + name);
             *                  bot.connection.Send("say", "/giveedit " + name);
             *              }
             *              else
             *              {
             *                  if (firstGodPositions.ContainsKey(id))
             *                  {
             *                      bot.connection.Send("say", "/teleport " + p.name + " " + firstGodPositions[id].X + " " + firstGodPositions[id].Y);
             *                      firstGodPositions.Remove(id);
             *                  }
             *              }
             *          }
             *      }
             *  }
             *  break;*/
            case "init":
                digHardness = new float[bot.room.Width, bot.room.Height];
                resetDigHardness();
                break;

            case "reset":
                digHardness = new float[bot.room.Width, bot.room.Height];
                resetDigHardness();
                break;

            case "m":
            {
                int    userId     = m.GetInt(0);
                float  playerPosX = m.GetFloat(1);
                float  playerPosY = m.GetFloat(2);
                float  speedX     = m.GetFloat(3);
                float  speedY     = m.GetFloat(4);
                float  modifierX  = m.GetFloat(5);
                float  modifierY  = m.GetFloat(6);
                float  horizontal = m.GetFloat(7);
                float  vertical   = m.GetFloat(8);
                int    Coins      = m.GetInt(9);
                int    blockX     = (int)(playerPosX / 16 + 0.5);
                int    blockY     = (int)(playerPosY / 16 + 0.5);
                int    blockId    = (bot.room.getBlock(0, blockX + (int)horizontal, blockY + (int)vertical).blockId);
                Player player;

                lock (bot.playerList)
                {
                    if (!bot.playerList.ContainsKey(userId))
                    {
                        return;
                    }
                    else
                    {
                        player = bot.playerList[userId];
                    }
                }

                if (isDigable(blockId))
                {
                    if (player.digRange > 1)
                    {
                        for (int x = (horizontal == 1) ? -1 : -player.digRange + 1; x < ((horizontal == -1) ? 2 : player.digRange); x++)
                        {
                            for (int y = (vertical == 1) ? -1 : -player.digRange + 1; y < ((vertical == -1) ? 2 : player.digRange); y++)
                            {
                                float distance = (float)Math.Sqrt(Math.Pow(x, 2) + Math.Pow(y, 2));
                                if (distance <= 1.41421357 * (player.digRange - 1) || distance < 1.4142)
                                {
                                    int cx = blockX + x + (int)Math.Ceiling(horizontal);
                                    int cy = blockY + y + (int)Math.Ceiling(vertical);
                                    if (player.hasPickaxe())
                                    {
                                        PickaxeItem pick = player.Pickaxe;
                                        if (pick.Durability >= digHardness[cx, cy])
                                        {
                                            DigBlock(
                                                cx,
                                                cy,
                                                player,
                                                (player.digRange - distance) * player.digStrength,
                                                false);
                                        }
                                    }
                                }
                            }
                        }
                        return;
                    }
                }
                if (player.hasPickaxe())
                {
                    if (horizontal == 0 || vertical == 0)
                    {
                        DigBlock(blockX + (int)horizontal, blockY + (int)vertical, player, player.digStrength, true);
                    }
                    blockId = bot.room.getBlock(0, blockX, blockY).blockId;
                    DigBlock(blockX, blockY, player, player.digStrength, true);
                }
            }
            break;

            case "b":
            {
                int layer   = m.GetInt(0);
                int x       = m.GetInt(1);
                int y       = m.GetInt(2);
                int blockId = m.GetInt(3);
                resetBlockHardness(x, y, blockId);
            }
            break;
            }
        }
Пример #4
0
        public override void onMessage(object sender, PlayerIOClient.Message m, Bot bot)
        {
            switch (m.Type)
            {
            case "init":
            {
                loadedWorld = false;
                owner       = m.GetString(0);
                name        = m.GetString(1);
                totalPlays  = m.GetInt(2);
                woots       = m.GetInt(3);
                totalWoots  = m.GetInt(4);
                key         = BotUtility.rot13(m.GetString(5));
                int    myId    = m.GetInt(6);
                int    myX     = m.GetInt(7);
                int    myY     = m.GetInt(8);
                string myName  = m.GetString(9);
                bool   hasCode = m.GetBoolean(10);
                bool   isOwner = m.GetBoolean(11);
                width  = m.GetInt(12);
                height = m.GetInt(13);
                bool isTutorialRoom = m.GetBoolean(14);

                ResetMap();
                DeSerialize(m);
                loadedWorld = true;
                if (isOwner || hasCode)
                {
                    StartDrawThread();
                }
            }
            break;

            case "reset":
            {
                loadedWorld = false;
                ResetMap();
                DeSerialize(m);
                loadedWorld = true;
            }
            break;

            case "clear":
            {
                width  = m.GetInt(0);
                height = m.GetInt(1);
                int borderId   = m.GetInt(2);
                int workareaId = m.GetInt(3);
                ResetMap();
                DrawBorder();
            }
            break;

            case "access":
                StartDrawThread();
                break;

            case "lostaccess":
                StopDrawThread();
                break;

            case "b":
            case "bc":
            case "bs":
            case "pt":
            {
                Block b = new Block(m);
                this.OnBlockDraw(b);
            }
            break;

            case "updatemeta":
            {
                owner      = m.GetString(0);
                name       = m.GetString(1);
                totalPlays = m.GetInt(2);
            }
            break;
            }
        }