/// 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; }