/// <summary> /// Read and send back Player name lookup packet /// </summary> /// <param name="client"> /// Client sending /// </param> /// <param name="packet"> /// Packet data /// </param> public static void Read(Client client, byte[] packet) { PacketReader reader = new PacketReader(ref packet); reader.ReadUInt16(); // packet ID reader.ReadUInt16(); // data length uint playerId = uint.MaxValue; string playerName = reader.ReadString(); client.Server.Debug( client, "{0} >> PlayerNameLookup: PlayerName: {1}", client.Character.characterName, playerName); reader.Finish(); SqlWrapper ms = new SqlWrapper(); string sqlQuery = "SELECT `ID` FROM `characters` WHERE `Name` = " + "'" + playerName + "'"; DataTable dt = ms.ReadDatatable(sqlQuery); if (dt.Rows.Count > 0) { // Yes, this double cast is correct playerId = (uint)(int)dt.Rows[0][0]; } byte[] namelookup = NameLookupResult.Create(playerId, playerName); client.Send(namelookup); client.KnownClients.Add(playerId); }