public static bool MoveWait(int x, int y) { Move(x, y); PacketConfirmation myDel = delegate(object packet) { if ((packet as GameServer.WalkVerify).X == x && (packet as GameServer.WalkVerify).Y == y) return true; else return false; }; if (!WaitForPacket(GameServerPacket.WalkVerify, myDel, 5000)) return false; return true; } public static bool WaitForPacket(GameServerPacket packet, PacketConfirmation confirmation, int timeOut) { Packet.Instance.Sniffer.AddAsyncListener(packet, delegate(object sender, PacketEventArgs args) { if(confirmation(args.Packet)) Hero.Instance.State = HeroState.Idle; }); DateTime start = DateTime.Now; while (Hero.Instance.State != HeroState.Idle) { if (((TimeSpan)DateTime.Now.Subtract(start)).TotalMilliseconds > timeOut) return false; System.Threading.Thread.Sleep(10); } return true; }