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);
                }
            }
        }
        public override void Execute(GameClient Client, byte* pPacket)
        {
            CharacterCreation* Packet = (CharacterCreation*)pPacket;

            string Username = new string(Packet->Account, 0, 16).Trim('\x00');
            string Name = new string(Packet->Name, 0, 16).Trim('\x00');
            string Password = new string(Packet->Password, 0, 16).Trim('\x00');

            Database.CreateCharacter(Client, Packet->Model, Packet->Class, Name);

            Client.Disconnect();
        }
Exemple #3
0
        public override void Execute(GameClient Client, byte *pPacket)
        {
            CharacterCreation *Packet = (CharacterCreation *)pPacket;

            string Username = new string(Packet->Account, 0, 16).Trim('\x00');
            string Name     = new string(Packet->Name, 0, 16).Trim('\x00');
            string Password = new string(Packet->Password, 0, 16).Trim('\x00');

            Database.CreateCharacter(Client, Packet->Model, Packet->Class, Name);

            Client.Disconnect();
        }
 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();
     }
 }
        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);
                }
            }
        }
Exemple #6
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();
            }
        }
Exemple #7
0
        public override void Execute(GameClient Client, byte *pPacket)
        {
            AuthMessage *Message = (AuthMessage *)pPacket;
            uint         Token   = Message->AccountID | 0xAABB;

            Token = Message->AccountID << 8 | Message->AccountID;
            Token = Token ^ 0x4321;
            Token = Token << 8 | Token;

            if (Token == Message->LoginToken)
            {
                Client.UID = Message->AccountID;

                Client.GenerateKeys(Message->LoginToken, Message->AccountID);
                if (Database.GetCharacterData(Client))
                {
                    Chat *Response = PacketHelper.CreateChat("SYSTEM", "ALLUSERS", "ANSWER_OK");
                    Response->ChatType = ChatType.LoginInformation;
                    Response->ID       = Message->AccountID;
                    Client.Send(Response, Response->Size);
                    Memory.Free(Response);

                    CharacterInformation *Information = PacketHelper.CreateInformation(Client);
                    Client.Send(Information, Information->Size);
                    Memory.Free(Information);

                    EntityManager.Add(Client);
                    Client.Status = LoginStatus.Complete;
                }
                else
                {
                    Chat *Response = PacketHelper.CreateChat("SYSTEM", "ALLUSERS", "NEW_ROLE");
                    Response->ChatType = ChatType.LoginInformation;
                    Response->ID       = Message->AccountID;
                    Client.Send(Response, Response->Size);
                    Memory.Free(Response);
                }
            }
            else
            {
                Client.Disconnect();
            }
        }
        public override void Execute(GameClient Client, byte* pPacket)
        {
            AuthMessage* Message = (AuthMessage*)pPacket;
            uint Token = Message->AccountID | 0xAABB;
            Token = Message->AccountID << 8 | Message->AccountID;
            Token = Token ^ 0x4321;
            Token = Token << 8 | Token;

            if (Token == Message->LoginToken)
            {
                Client.UID = Message->AccountID;

                Client.GenerateKeys(Message->LoginToken, Message->AccountID);
                if (Database.GetCharacterData(Client))
                {
                    Chat* Response = PacketHelper.CreateChat("SYSTEM", "ALLUSERS", "ANSWER_OK");
                    Response->ChatType = ChatType.LoginInformation;
                    Response->ID = Message->AccountID;
                    Client.Send(Response, Response->Size);
                    Memory.Free(Response);

                    CharacterInformation* Information = PacketHelper.CreateInformation(Client);
                    Client.Send(Information, Information->Size);
                    Memory.Free(Information);

                    EntityManager.Add(Client);
                    Client.Status = LoginStatus.Complete;
                }
                else
                {
                    Chat* Response = PacketHelper.CreateChat("SYSTEM", "ALLUSERS", "NEW_ROLE");
                    Response->ChatType = ChatType.LoginInformation;
                    Response->ID = Message->AccountID;
                    Client.Send(Response, Response->Size);
                    Memory.Free(Response);
                }

            }
            else
            {
                Client.Disconnect();
            }
        }