Exemplo n.º 1
0
        internal void Read(PacketReader p)
        {
            m_Content.Clear();

            p.Seek(5, System.IO.SeekOrigin.Begin); // seek to packet data

            p.ReadUInt32();                        // serial
            p.ReadByte();                          // 0
            p.ReadByte();                          // 0
            m_Hash = p.ReadInt32();

            m_StringNums.Clear();
            m_StringNums.AddRange(m_DefaultStringNums);

            while (p.Position < p.Length)
            {
                int num = p.ReadInt32();
                if (num == 0)
                {
                    break;
                }

                m_StringNums.Remove(num);

                short  bytes = p.ReadInt16();
                string args  = string.Empty;
                if (bytes > 0)
                {
                    args = p.ReadUnicodeStringBE(bytes >> 1);
                }

                if (m_Content.Any(e => e.Number == num))
                {
                    continue;
                }
                else
                {
                    m_Content.Add(new OPLEntry(num, args));
                }
            }

            foreach (OPLEntry ent in m_CustomContent)
            {
                if (m_StringNums.Contains(ent.Number))
                {
                    m_StringNums.Remove(ent.Number);
                }
                else
                {
                    foreach (int t in m_DefaultStringNums)
                    {
                        if (ent.Number == t)
                        {
                            ent.Number = GetStringNumber();
                            break;
                        }
                    }
                }
            }
        }
Exemplo n.º 2
0
        public void Read(PacketReader p)
        {
            m_Content.Clear();

            p.Seek(5, System.IO.SeekOrigin.Begin); // seek to packet data

            p.ReadUInt32();                        // serial
            p.ReadByte();                          // 0
            p.ReadByte();                          // 0
            m_Hash = p.ReadInt32();

            m_StringNums.Clear();
            m_StringNums.AddRange(m_DefaultStringNums);

            while (p.Position < p.Length)
            {
                int num = p.ReadInt32();
                if (num == 0)
                {
                    break;
                }

                m_StringNums.Remove(num);

                short  bytes = p.ReadInt16();
                string args  = null;
                if (bytes > 0)
                {
                    args = p.ReadUnicodeStringBE(bytes >> 1);
                }

                m_Content.Add(new OPLEntry(num, args));
            }

            for (int i = 0; i < m_CustomContent.Count; i++)
            {
                OPLEntry ent = (OPLEntry)m_CustomContent[i];
                if (m_StringNums.Contains(ent.Number))
                {
                    m_StringNums.Remove(ent.Number);
                }
                else
                {
                    for (int s = 0; s < m_DefaultStringNums.Length; s++)
                    {
                        if (ent.Number == m_DefaultStringNums[s])
                        {
                            ent.Number = GetStringNumber();
                            break;
                        }
                    }
                }
            }
        }
Exemplo n.º 3
0
        internal void Read(PacketReader p)
        {
            var property_list = new List <OPLEntry>();


            p.Seek(5, System.IO.SeekOrigin.Begin); // seek to packet data

            p.ReadUInt32();                        // serial
            p.ReadByte();                          // 0
            p.ReadByte();                          // 0
            m_Hash = p.ReadInt32();

            m_StringNums.Clear();
            m_StringNums.AddRange(m_DefaultStringNums);

            while (p.Position < p.Length)
            {
                int num = p.ReadInt32();
                if (num == 0)
                {
                    break;
                }

                m_StringNums.Remove(num);

                short  bytes = p.ReadInt16();
                string args  = string.Empty;
                if (bytes > 0)
                {
                    args = p.ReadUnicodeStringBE(bytes >> 1);
                }

                if (property_list.Any(e => e.Number == num))
                {
                    continue;
                }
                else
                {
                    property_list.Add(new OPLEntry(num, args));
                }
            }

            m_Content = property_list;
        }