Пример #1
0
 public override void Write(ByteArray by)
 {
     base.Write(by);
     by.WriteUInt(packet_idx);
     by.WriteUShort(data_verify);
     client_uid.Write(by);
 }
Пример #2
0
 public void Set(ClientUID client_uid, ushort header, ByteArray by)
 {
     data.WriteUShort(header);  //必须填入id
     client_uid.Write(data);
     by.Skip(ClientUID.Size()); //由于by是C2S消息,带ClientUID,所以跳过
     by.Read(data, by.Available);
 }
Пример #3
0
 public void Write(ByteArray by)
 {
     by.WriteLong(char_idx);
     by.WriteUShort(spid);
     by.WriteString(char_name);
     by.WriteByte(char_type);
     by.WriteUShort(ws_id);
     by.WriteUInt(flags);
     by.WriteUInt(model_idx);
     by.WriteByte(job);
     by.WriteUShort(level);
     by.WriteUInt(exp);
     by.WriteUInt(gold);
     by.WriteUInt(coin);
     by.WriteUInt(vip_grade);
 }
Пример #4
0
 public void Write(ByteArray by)
 {
     by.WriteLong(char_idx);
     by.WriteString(char_name);
     by.WriteByte(char_type);
     by.WriteUShort(level);
 }
        /// <summary>
        /// 发包
        /// </summary>
        /// <param name="conn_idx"></param>
        /// <param name="packet"></param>
        public void Send(long conn_idx, PacketBase packet)
        {
            if (m_sockets.Contains(conn_idx))
            {
                //包索引
                uint packet_idx = 0;
                if (packet is PackBaseC2S)
                {
                    packet_idx = PacketEncrypt.GetPacketIndex();
                    (packet as PackBaseC2S).packet_idx = PacketEncrypt.EncrpytPacketIndex(packet_idx, GlobalID.ENCRYPT_KEY);
                }

                m_send_by.Clear();
                m_send_by.WriteUShort(0);//先写入长度占位
                packet.Write(m_send_by);
                int data_len = m_send_by.Available - NetID.PacketHeadSize;
                m_send_by.ModifyUShort((ushort)data_len, 0);

                //数据有效性
                if (packet is PackBaseC2S)
                {
                    //包长2 + 协议头2 + 包索引id4 + 有效性校验2 = 10
                    ushort data_verify = PacketEncrypt.CalcPacketDataVerify(m_send_by.Buffer, 10, m_send_by.Available - 10, packet_idx, GlobalID.ENCRYPT_KEY);
                    m_send_by.ModifyUShort((ushort)data_verify, 8);
                }

                int size = NetConnectManager.Instance.Send(conn_idx, m_send_by);
                m_send_msg_count++;
                m_send_msg_size += size;
            }

            PacketPools.Recover(packet);
        }
Пример #6
0
        /// <summary>
        /// 发包
        /// </summary>
        /// <param name="conn_idx"></param>
        /// <param name="packet"></param>
        public void Send(PacketBase packet)
        {
            if (m_cur_conn_idx > 0)
            {
                //包索引
                uint packet_idx = 0;
                if (packet is PackBaseC2S)
                {
                    packet_idx = PacketEncrypt.GetPacketIndex();
                    (packet as PackBaseC2S).packet_idx = PacketEncrypt.EncrpytPacketIndex(packet_idx, GlobalID.ENCRYPT_KEY);
                }

                //数据写入stream
                m_send_by.Clear();
                m_send_by.WriteUShort(0);                                  //先写入长度占位
                packet.Write(m_send_by);
                int data_len = m_send_by.Available - NetID.PacketHeadSize; //总长度
                m_send_by.ModifyUShort((ushort)data_len, 0);

                //数据有效性
                if (packet is PackBaseC2S)
                {
                    //包长2 + 协议头2 + 包索引id4 + 有效性校验2 = 10
                    ushort data_verify = PacketEncrypt.CalcPacketDataVerify(m_send_by.Buffer, 10, m_send_by.Available - 10, packet_idx, GlobalID.ENCRYPT_KEY);
                    m_send_by.ModifyUShort((ushort)data_verify, 8);
                }

                NetConnectManager.Instance.Send(m_cur_conn_idx, m_send_by);
            }

            PacketPools.Recover(packet);
        }
Пример #7
0
        public void Write(ByteArray by)
        {
            int start_pos = by.Tail;

            by.WriteLong(char_idx);
            by.WriteUShort(spid);
            by.WriteString(char_name);
            by.WriteByte(char_type);
            by.WriteUShort(ws_id);
            by.WriteByte((byte)flags);
            by.WriteUInt(model_idx);
            by.WriteByte(job);
            by.WriteUShort(level);
            by.WriteUInt(exp);
            by.WriteUInt(gold);
            by.WriteUInt(coin);
            by.WriteUInt(vip_grade);
            by.WriteEmpty(200 - (by.Tail - start_pos));
        }
Пример #8
0
        public void Write(ByteArray by)
        {
            ushort count = (ushort)recv_mails.Count;

            by.WriteUShort(count);
            for (int i = 0; i < count; ++i)
            {
                by.WriteLong(recv_mails[i]);
            }
        }
Пример #9
0
        public int Send(long conn_idx, PacketBase packet)
        {
            m_send_by.Clear();
            m_send_by.WriteUShort(0);//先写入长度占位
            packet.Write(m_send_by);
            int len = NetConnectManager.Instance.Send(conn_idx, m_send_by);

            PacketPools.Recover(packet);
            return(len);
        }
Пример #10
0
 public void Write(ByteArray by)
 {
     by.WriteLong(item_idx);
     by.WriteLong(char_idx);
     by.WriteUInt((uint)type);
     by.WriteUShort((ushort)type);
     by.WriteUInt(ui_pos);
     by.WriteUInt(number);
     by.WriteLong(create_time);
     bin_content.Write(by);
 }
Пример #11
0
        public void Write(ByteArray by)
        {
            ushort count = (ushort)mods.Count;

            by.WriteUShort(count);
            for (int i = 0; i < count; ++i)
            {
                ModInfo obj = mods[i];
                obj.Write(by);
            }
        }
Пример #12
0
        public void Write(ByteArray by)
        {
            by.WriteString(subject);
            by.WriteString(content);
            ushort count = (ushort)items.Count;

            by.WriteUShort(count);
            for (int i = 0; i < count; ++i)
            {
                ItemID obj = items[i];
                obj.Write(by);
            }
        }
Пример #13
0
        public int Send(long conn_idx, PacketBase packet)
        {
            int size = 0;

            if (m_net_socket != null)
            {
                m_send_by.Clear();
                m_send_by.WriteUShort(0);//先写入长度占位
                packet.Write(m_send_by);
                size = m_net_socket.Send(conn_idx, m_send_by);
            }
            PacketPools.Recover(packet);
            return(size);
        }
Пример #14
0
            public void Write(ByteArray by)
            {
                by.WriteUShort((ushort)type);
                switch (type)
                {
                case eUnitModType.UMT_char_name:
                    by.WriteString(value_str);
                    break;

                default:
                    by.WriteLong(value_i);
                    break;
                }
            }
Пример #15
0
 public void Write(ByteArray by)
 {
     by.WriteLong(mail_idx);
     by.WriteByte((byte)mail_type);
     by.WriteUShort(spid);
     by.WriteLong(receiver_idx);
     by.WriteLong(sender_idx);
     by.WriteString(sender_name);
     by.WriteLong(send_time);
     by.WriteInt(expire_time);
     by.WriteInt(delivery_time);
     by.WriteUInt(flags);
     by.WriteString(subject);
     bin_mail_content.Write(by);
 }
Пример #16
0
 public void Write(ByteArray by)
 {
     by.WriteLong(char_idx);
     by.WriteString(char_name);
     by.WriteByte(char_type);
     by.WriteUInt(flags);
     by.WriteUInt(model_idx);
     by.WriteByte(job);
     by.WriteUShort(level);
     by.WriteUInt(exp);
     by.WriteUInt(energy);
     by.WriteUInt(gold);
     by.WriteUInt(coin);
     by.WriteUInt(hp);
     by.WriteUInt(hp_max);
     by.WriteUInt(hurt);
     by.WriteUInt(range);
     by.WriteUInt(run_speed);
     by.WriteUInt(vip_grade);
     by.WriteUInt(vip_flags);
 }
Пример #17
0
 public void Write(ByteArray by)
 {
     by.WriteUShort((ushort)type);
     by.WriteUInt(obj_type);
     by.WriteLong(obj_idx);
 }
Пример #18
0
 public void Write(ByteArray by)
 {
     by.WriteUShort((ushort)type);
     by.WriteUShort(count);
     by.WriteLong(cd_time);
 }
Пример #19
0
 public virtual void Write(ByteArray by)
 {
     by.WriteUShort(header);
 }
Пример #20
0
 public void Write(ByteArray by)
 {
     by.WriteUShort(srv_uid);
     by.WriteLong(conn_idx);
 }
Пример #21
0
 public void Write(ByteArray by)
 {
     by.WriteUInt(ip);
     by.WriteUShort(port);
 }
Пример #22
0
 public static ByteArray AllocSendPacket()
 {
     tmpSendBy.Clear();
     tmpSendBy.WriteUShort(0);//协议头,包长度
     return(tmpSendBy);
 }