maybe something like this would work
MiscHandler.cpp
@@ void WorldSession::HandleWhoOpcode( WorldPacket & recv_data )
QueryResult *result = CharacterDatabase.PQuery("SELECT guid,name,race,class,gender,level,zone,guild FROM fake_characters WHERE online!=0 order by level");
Field *fields = result->Fetch();
uint32 level_min = fields[5].GetUInt32();
uint32 level_max = fields[5].GetUInt32();
uint32 racemask = fields[2].GetUInt32();
uint32 classmask = fields[3].GetUInt32();
uint32 zones_count = fields[6].GetUInt32();
std::string player_name = fields[1].GetCppString();
if(player_name.empty())
player_name = "Unknown";
std::string guild_name = fields[7].GetCppString();
if(guild_name.empty())
guild_name = "Unknown";
std::string wplayer_name = fields[1].GetCppString();
if(wplayer_name.empty())
wplayer_name = "Unknown";
std::string wguild_name = fields[7].GetCppString();
if(wguild_name.empty())
wguild_name = "Unknown";
std::string pname = fields[1].GetCppString();
if(pname.empty())
pname = "Unknown";
std::string gname = fields[7].GetCppString();
if(gname.empty())
gname = "Unknown";
std::string wpname = fields[1].GetCppString();
if(wpname.empty())
wpname = "Unknown";
std::string wgname = fields[7].GetCppString();
if(wgname.empty())
wgname = "Unknown";
std::string aname = fields[6].GetCppString();
if(aname.empty())
aname = "Unknown";
uint32 race = fields[2].GetUInt32();
uint32 class_ = fields[3].GetUInt32();
uint32 lvl = fields[5].GetUInt32();
uint32 pzoneid = fields[6].GetUInt32();
data << pname; // player name
data << gname; // guild name
data << uint32( lvl ); // player level
data << uint32( class_ ); // player class
data << uint32( race ); // player race
data << uint8(0); // new 2.4.0
data << uint32( pzoneid ); // player zone id
ofc this is not complete patch