Esempio n. 1
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);
         }
     }
 }
Esempio n. 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);
                }
            }
        }
Esempio n. 3
0
        public override void Execute(GameClient Client, byte *pPacket)
        {
            Chat *Packet = (Chat *)pPacket;

            string[] Parameters = PacketHelper.ParseChat(Packet);

            CommandAction Action = CommandAction.None;

            if ((Action = CommandProcessor.Process(Client, Parameters)) != CommandAction.None)
            {
                if (Action == CommandAction.Processed)
                {
                }
                else if (Action == CommandAction.ClearNpcScripts)
                {
                    NpcScriptEngine.Clear();
                }
                return;
            }

            switch (Packet->ChatType)
            {
            case ChatType.Talk:
                Client.SendScreen(Packet, Packet->Size);
                break;

            case ChatType.Whisper:
                GameClient Receiver = EntityManager.FindByName(Parameters[1]);
                if (Receiver != null)
                {
                    Receiver.Send(Packet, Packet->Size);
                }
                else
                {
                    Client.Message("It appears that " + Parameters[1] + " is offline", ChatType.Top, Color.White);
                }
                break;
            }
        }
Esempio n. 4
0
 public override void Execute(GameClient Client, byte* pPacket)
 {
     EntityMovement* Packet = (EntityMovement*)pPacket;
     if (Packet->UID == Client.Entity.UID)
     {
         ConquerAngle Direction = (ConquerAngle)(Packet->Direction % 8);
         Client.Entity.Walk(Direction);
         if (!Kernel.IsWalkable(Client.Entity.Location.MapID,
                 Client.Entity.Location.X, Client.Entity.Location.Y))
         {
             Client.Disconnect();
         }
         else
         {
             Client.SendScreen(Packet, Packet->Size, true);
             Kernel.GetScreen(Client, null);
         }
     }
     else
     {
         Client.Disconnect();
     }
 }
Esempio n. 5
0
        public override void Execute(GameClient Client, byte* pPacket)
        {
            Chat* Packet = (Chat*)pPacket;
            string[] Parameters = PacketHelper.ParseChat(Packet);

            CommandAction Action = CommandAction.None;
            if ((Action = CommandProcessor.Process(Client, Parameters)) != CommandAction.None)
            {
                if (Action == CommandAction.Processed)
                {

                }
                else if (Action == CommandAction.ClearNpcScripts)
                {
                    NpcScriptEngine.Clear();
                }
                return;
            }

            switch (Packet->ChatType)
            {
                case ChatType.Talk:
                    Client.SendScreen(Packet, Packet->Size);
                    break;
                case ChatType.Whisper:
                    GameClient Receiver = EntityManager.FindByName(Parameters[1]);
                    if (Receiver != null)
                    {
                        Receiver.Send(Packet, Packet->Size);
                    }
                    else
                    {
                        Client.Message("It appears that " + Parameters[1] + " is offline", ChatType.Top, Color.White);
                    }
                    break;
            }
        }
Esempio n. 6
0
        private void HandleJumping(GameClient Client, GeneralData *Packet)
        {
            ushort X1 = Packet->ValueA;
            ushort Y1 = Packet->ValueB;

            if ((X1 != Client.Entity.Location.X) || (Y1 != Client.Entity.Location.Y))
            {
                Client.Disconnect();
            }
            else
            {
                ushort X2 = Packet->ValueD_High;
                ushort Y2 = Packet->ValueD_Low;

                Client.Entity.Angle = ConquerMath.GetAngle(Client.Entity.Location, new Location()
                {
                    X = X2, Y = Y2
                });

                Client.Entity.Location.X = X2;
                Client.Entity.Location.Y = Y2;

                if (!Kernel.IsWalkable(Client.Entity.Location.MapID,
                                       Client.Entity.Location.X, Client.Entity.Location.Y))
                {
                    Client.Disconnect();
                }
                else
                {
                    Client.Send(Packet, Packet->Size);

                    Client.SendScreen(Packet, Packet->Size);
                    Kernel.GetScreen(Client, ConquerCallbackKernel.GetScreenReply);
                }
            }
        }
Esempio n. 7
0
        public override void Execute(GameClient Client, byte *pPacket)
        {
            EntityMovement *Packet = (EntityMovement *)pPacket;

            if (Packet->UID == Client.Entity.UID)
            {
                ConquerAngle Direction = (ConquerAngle)(Packet->Direction % 8);
                Client.Entity.Walk(Direction);
                if (!Kernel.IsWalkable(Client.Entity.Location.MapID,
                                       Client.Entity.Location.X, Client.Entity.Location.Y))
                {
                    Client.Disconnect();
                }
                else
                {
                    Client.SendScreen(Packet, Packet->Size, true);
                    Kernel.GetScreen(Client, null);
                }
            }
            else
            {
                Client.Disconnect();
            }
        }
Esempio n. 8
0
        private void HandleJumping(GameClient Client, GeneralData* Packet)
        {
            ushort X1 = Packet->ValueA;
            ushort Y1 = Packet->ValueB;

            if ((X1 != Client.Entity.Location.X) || (Y1 != Client.Entity.Location.Y))
            {
                Client.Disconnect();
            }
            else
            {
                ushort X2 = Packet->ValueD_High;
                ushort Y2 = Packet->ValueD_Low;

                Client.Entity.Angle = ConquerMath.GetAngle(Client.Entity.Location, new Location() { X = X2, Y = Y2 });

                Client.Entity.Location.X = X2;
                Client.Entity.Location.Y = Y2;

                if (!Kernel.IsWalkable(Client.Entity.Location.MapID,
                    Client.Entity.Location.X, Client.Entity.Location.Y))
                {
                    Client.Disconnect();
                }
                else
                {

                    Client.Send(Packet, Packet->Size);

                    Client.SendScreen(Packet, Packet->Size);
                    Kernel.GetScreen(Client, ConquerCallbackKernel.GetScreenReply);
                }
            }
        }
Esempio n. 9
0
 private void HandleChangeAngle(GameClient Client, GeneralData* Packet)
 {
     Client.Entity.Angle = (ConquerAngle)Packet->ValueC;
     Client.SendScreen(Packet, Packet->Size);
 }
Esempio n. 10
0
 private void HandleChangeAction(GameClient Client, GeneralData* Packet)
 {
     Client.Entity.Action = (ConquerAction)Packet->ValueD_High;
     Client.SendScreen(Packet, Packet->Size);
 }
Esempio n. 11
0
 private void HandleChangeAction(GameClient Client, GeneralData *Packet)
 {
     Client.Entity.Action = (ConquerAction)Packet->ValueD_High;
     Client.SendScreen(Packet, Packet->Size);
 }
Esempio n. 12
0
 private void HandleChangeAngle(GameClient Client, GeneralData *Packet)
 {
     Client.Entity.Angle = (ConquerAngle)Packet->ValueC;
     Client.SendScreen(Packet, Packet->Size);
 }