//Add char list
output->addByte(0x64);
uint8_t size = std::min<size_t>(std::numeric_limits<uint8_t>::max(), account.characters.size());
output->addByte(size); // number of worlds = number of characters
// load characters levels
std::ostringstream query;
query.str(std::string());
query << "SELECT `name`, `level`, `deletion` FROM `players` WHERE `account_id` = " << account.id << " ORDER BY `name` ASC";
DBResult_ptr result = db->storeQuery(query.str());
uint8_t fakeWorldId = 0;
if (result) {
do {
if (result->getNumber<uint64_t>("deletion") == 0) {
output->addByte(fakeWorldId); // world id
std::ostringstream description;
description.str(std::string());
// here generate description
description << "Level " << result->getNumber<uint32_t>("level");
output->addString(description.str());
output->addString(g_config.getString(ConfigManager::IP));
output->add<uint16_t>(g_config.getNumber(ConfigManager::GAME_PORT));
output->addByte(0); // idk what about that byte, is it end of list or end of list element?
++fakeWorldId;
}
} while (result->next());
}
output->addByte(size);
for (uint8_t i = 0; i < size; i++) {
output->addByte(i); // i'm almost sure it's world id, so we put there character description
output->addString(account.characters[i]);
}