예제 #1
0
        public static LoginPacket Parse(NetworkMessage message)
        {
            LoginPacket packet = new LoginPacket();
            packet.Os = message.GetUInt16(); // OS
            packet.Version = message.GetUInt16(); // version

            message.RSADecrypt();

            message.GetByte(); // should be zero

            packet.XteaKey = new uint[4];
            packet.XteaKey[0] = message.GetUInt32();
            packet.XteaKey[1] = message.GetUInt32();
            packet.XteaKey[2] = message.GetUInt32();
            packet.XteaKey[3] = message.GetUInt32();

            packet.GmMode = message.GetByte();
            packet.AccountName = message.GetString();
            packet.CharacterName = message.GetString();
            packet.Password = message.GetString();

            message.SkipBytes(6); // 841 specific (according to OT)

            return packet;
        }
예제 #2
0
        public static ItemUseOnPacket Parse(NetworkMessage message)
        {
            ItemUseOnPacket packet = new ItemUseOnPacket();

            packet.FromLocation = message.GetLocation();
            packet.FromSpriteId = message.GetUInt16();
            packet.FromStackPosition = message.GetByte();
            packet.ToLocation = message.GetLocation();
            packet.ToSpriteId = message.GetUInt16();
            packet.ToStackPosition = message.GetByte();

            return packet;
        }
예제 #3
0
        public static PlayerSpeechPacket Parse(NetworkMessage message)
        {
            PlayerSpeechPacket packet = new PlayerSpeechPacket();
            packet.Speech = new Speech();
            packet.Speech.Type = (SpeechType)message.GetByte();

            switch (packet.Speech.Type)
            {
                case SpeechType.Private:
                case SpeechType.PrivateRed:
                case SpeechType.RuleViolationAnswer:
                    packet.Speech.Receiver = message.GetString();
                    break;
                case SpeechType.ChannelYellow:
                case SpeechType.ChannelRed:
                case SpeechType.ChannelRedAnonymous:
                case SpeechType.ChannelWhite:
                    packet.Speech.ChannelId = (ChatChannel)message.GetUInt16();
                    break;
                default:
                    break;
            }

            packet.Speech.Message = message.GetString();

            return packet;
        }
예제 #4
0
        public static LookAtPacket Parse(NetworkMessage message)
        {
            LookAtPacket packet = new LookAtPacket();

            packet.Location      = message.GetLocation();
            packet.Id            = message.GetUInt16();
            packet.StackPosition = message.GetByte();

            return(packet);
        }
예제 #5
0
        public static LookAtPacket Parse(NetworkMessage message)
        {
            LookAtPacket packet = new LookAtPacket();

            packet.Location = message.GetLocation();
            packet.Id = message.GetUInt16();
            packet.StackPosition = message.GetByte();

            return packet;
        }
예제 #6
0
        public static ItemUseBattlelistPacket Parse(NetworkMessage message)
        {
            ItemUseBattlelistPacket packet = new ItemUseBattlelistPacket();

            packet.FromLocation      = message.GetLocation();
            packet.SpriteId          = message.GetUInt16();
            packet.FromStackPosition = message.GetByte();
            packet.CreatureId        = message.GetUInt32();

            return(packet);
        }
        public static ItemUseBattlelistPacket Parse(NetworkMessage message)
        {
            ItemUseBattlelistPacket packet = new ItemUseBattlelistPacket();

            packet.FromLocation = message.GetLocation();
            packet.SpriteId = message.GetUInt16();
            packet.FromStackPosition = message.GetByte();
            packet.CreatureId = message.GetUInt32();

            return packet;
        }
예제 #8
0
        public static ItemMovePacket Parse(NetworkMessage message)
        {
            ItemMovePacket packet = new ItemMovePacket();

            packet.FromLocation      = message.GetLocation();
            packet.SpriteId          = message.GetUInt16();
            packet.FromStackPosition = message.GetByte();
            packet.ToLocation        = message.GetLocation();
            packet.Count             = message.GetByte();

            return(packet);
        }
예제 #9
0
 public static ChannelClosePacket Parse(NetworkMessage message)
 {
     ChannelClosePacket p = new ChannelClosePacket();
     p.Channel = (ChatChannel)message.GetUInt16();
     return p;
 }
 public static ClientChannelOpenPacket Parse(NetworkMessage message)
 {
     ClientChannelOpenPacket p = new ClientChannelOpenPacket();
     p.Channel = (ChatChannel)message.GetUInt16();
     return p;
 }