예제 #1
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);
        }
예제 #2
0
        public static AccountPacket Parse(NetworkMessage message)
        {
            AccountPacket packet = new AccountPacket();

            packet.Os      = message.GetUInt16(); // OS
            packet.Version = message.GetUInt16(); // version

            // File checks
            message.GetUInt32();
            message.GetUInt32();
            message.GetUInt32();

            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.AccountName = message.GetString(); // account name
            packet.Password    = message.GetString(); // password

            return(packet);
        }
예제 #3
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);
        }
예제 #4
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;
        }
예제 #5
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;
        }
예제 #6
0
        public static PrivateChannelOpenPacket Parse(NetworkMessage message)
        {
            PrivateChannelOpenPacket p = new PrivateChannelOpenPacket();

            p.Receiver = message.GetString();
            return(p);
        }
예제 #7
0
        public static VipAddPacket Parse(NetworkMessage message)
        {
            VipAddPacket p = new VipAddPacket();

            p.Name = message.GetString();

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

            p.Name = message.GetString();

            return(p);
        }
 public static PrivateChannelOpenPacket Parse(NetworkMessage message)
 {
     PrivateChannelOpenPacket p = new PrivateChannelOpenPacket();
     p.Receiver = message.GetString();
     return p;
 }