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(); }
//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; } }
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; } }