Beispiel #1
0
        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));
            }
        }
Beispiel #2
0
        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();
                }
            }
        }