public static AttackTargetPacket *AttackPacket(params AttackTarget[] Targets)
        {
            int Size = 28 + (Targets.Length * 12);

            AttackTargetPacket *Packet = (AttackTargetPacket *)Memory.Alloc(Size);

            Packet->Size   = (ushort)Size;
            Packet->Type   = 0x451;
            Packet->Amount = (uint)Targets.Length;

            fixed(AttackTarget *target = Targets)
            {
                Memory.Copy(target, Packet->Targets, 12 * Targets.Length);
            }

            return(Packet);
        }
Beispiel #2
0
        public override void Execute(GameClient Client, byte *pPacket)
        {
            AttackRequest *Request = (AttackRequest *)pPacket;

            if (Request->AttackType == AttackTypes.Magic)
            {
                Request->Decrypt();
                if (Request->SpellID == 1045)
                {
                    AttackTargetPacket *Packet = PacketHelper.AttackPacket();
                    Packet->UID        = Client.Entity.UID;
                    Packet->SpellID    = 1045;
                    Packet->SpellLevel = 4;
                    Packet->X          = Request->TargetX;
                    Packet->Y          = Request->TargetY;
                    Client.SendScreen(Packet, Packet->Size, true);
                    Memory.Free(Packet);
                }
            }
        }