Example #1
0
        /// Parses a player name.
        int ParseName(int index, Packet _packet, Player player)
        {
            string s = "";
            int i = 0;

            for (i = index; i < _packet.data.Length; i++)
            {
                if (_packet.data[i] == 0)
                {
                    if (_packet.data[i + 1] == 0) // player has no clan
                    {
                        i += 8; // advance index by 8 bytes
                        break;
                    }
                }
                else if (_packet.data[i] == 2 || _packet.data[i] == 3) // clan tag found (tag length is revealed 2 bytes before the tag (either a 2 or 3))
                {
                    if (_packet.data[i + 1] == 0)
                    {
                        i = ParseClan(i, _packet, player); // parse clan name and return index for the next player
                        break;
                    }
                }
                else // continue building name
                {
                    char c = Convert.ToChar(_packet.data[i]);
                    s += c;
                }
            }

            player.SetName(s);
            return i;
        }