コード例 #1
0
        public bool Read(byte[] data)
        {
            BinaryReader br = new BinaryReader(new MemoryStream(data));

            int serverCount = (data.Length - 43) / 32;

            LoginID1  = br.ReadInt32();
            AccountID = br.ReadInt32();
            LoginID2  = br.ReadInt32();

            br.ReadBytes(30);

            Sex = br.ReadByte();

            Servers = new CharServerInfo[serverCount];
            for (int i = 0; i < serverCount; i++)
            {
                CharServerInfo csi = new CharServerInfo();

                csi.IP    = new IPAddress(br.ReadBytes(4));
                csi.Port  = br.ReadInt16();
                csi.Name  = br.ReadCString(20);
                csi.Users = br.ReadInt32();
                csi.Type  = br.ReadByte();
                csi.New   = br.ReadByte();

                Servers[i] = csi;
            }

            return(true);
        }
コード例 #2
0
        void window_ServerSelected(CharServerInfo obj)
        {
            ROClient.Singleton.NetworkState.SelectedCharServer = obj;

            if (ROClient.Singleton.CurrentConnection != null && ROClient.Singleton.CurrentConnection.Client.Connected)
            {
                ROClient.Singleton.CurrentConnection.Disconnect();
            }

            ROClient.Singleton.CurrentConnection = new Network.Connection();
            ROClient.Singleton.CurrentConnection.PacketSerializer.PacketHooks[0x6B] = new Action<ushort, int, HC_Accept_Enter>(packetLoginAccepted);
            ROClient.Singleton.CurrentConnection.PacketSerializer.PacketHooks[0x6C] = new Action<ushort, int, HC_Refuse_Enter>(packetLoginRejected);

            try
            {
                ROClient.Singleton.CurrentConnection.Connect(obj.IP.ToString(), obj.Port);
            }
            catch
            {
                CloseWait();
                MessageBox.ShowOk("Could not connect to server.", ReenterScreen);
            }

            ROClient.Singleton.CurrentConnection.PacketSerializer.BytesToSkip = 4; // Skip AID
            ROClient.Singleton.CurrentConnection.Start();

            new CH_Enter(
                ROClient.Singleton.NetworkState.LoginAccept.AccountID,
                ROClient.Singleton.NetworkState.LoginAccept.LoginID1,
                ROClient.Singleton.NetworkState.LoginAccept.LoginID2,
                ROClient.Singleton.NetworkState.LoginAccept.Sex).Write(ROClient.Singleton.CurrentConnection.BinaryWriter);
        }
コード例 #3
0
        public bool Read(byte[] data)
        {
            BinaryReader br = new BinaryReader(new MemoryStream(data));

            int serverCount = (data.Length - 43) / 32;

            LoginID1 = br.ReadInt32();
            AccountID = br.ReadInt32();
            LoginID2 = br.ReadInt32();

            br.ReadBytes(30);

            Sex = br.ReadByte();

            Servers = new CharServerInfo[serverCount];
            for (int i = 0; i < serverCount; i++)
            {
                CharServerInfo csi = new CharServerInfo();

                csi.IP = new IPAddress(br.ReadBytes(4));
                csi.Port = br.ReadInt16();
                csi.Name = br.ReadCString(20);
                csi.Users = br.ReadInt32();
                csi.Type = br.ReadByte();
                csi.New = br.ReadByte();

                Servers[i] = csi;
            }

            return true;
        }