public static void HandleMailList(TownContext context, PacketReader packet) { int[] mailIds = new int[6] { 0, 0, 0, 0, 0, 0 }; packet.Skip(9); byte bNumMails = packet.ReadByte(); int idCounter = 0; if (bNumMails == 0) { Console.WriteLine("No mail in box."); context.Client.OpeningMail = false; context.Client.OpeningGoldPouches = true; context.Client.GoldPouchOpenThread = new Thread(new ThreadStart(context.OpenGoldPouches)); if (context.Client.GoldPouchOpenThread.ThreadState == ThreadState.Running) { return; } else { context.Client.GoldPouchOpenThread.Start(); } } for (int i = 0; i < bNumMails; i++) { mailIds[idCounter] = packet.ReadInt(); idCounter++; if (i != bNumMails) //prevent edge case crash { packet.Skip(142); } } if (context.Client.OpeningMail == true) { Thread.Sleep(500); context.Client.session.SendPacket(PacketFactory.RetrieveBatchMail(mailIds)); Thread.Sleep(500); context.Client.session.SendPacket(PacketFactory.DeleteMail(mailIds)); Thread.Sleep(500); context.Client.session.SendPacket(PacketFactory.OpenMailbox()); Thread.Sleep(500); context.Client.session.SendPacket(PacketFactory.CrashNearbyPlayers(context.Client.Magic)); } }
public static void HandleLoadedCashInv(TownContext context, PacketReader packet) { if (context.Client.OpeningMail == true) { context.Client.session.SendPacket(PacketFactory.ChangePlayerState(0x10)); context.Client.session.SendPacket(PacketFactory.OpenMailbox()); } if (context.Client.OpeningGoldPouches == true) { context.Client.GoldPouchOpenThread = new Thread(new ThreadStart(context.OpenGoldPouches)); if (context.Client.GoldPouchOpenThread.ThreadState == ThreadState.Running) { return; } else { context.Client.GoldPouchOpenThread.Start(); } } }