Bom consegui o que queria, kkkkk... transformei em tutorial....
Essas modificações fará com que fique assim:
Vá em: "iologindata.h" e procure por isto:
uint32_t getAccountIdByName(const std::string& name) const;
Na linha de baixo, cole isto:
std::string getCheckPlayerLevel(const std::string& name) const;
Vá em: "iologindata.cpp" e no fim do arquivo, na ultima linha, cole o que esta logo abaixo:
std::string IOLoginData::getCheckPlayerLevel(const std::string& name) const
{
Database* db = Database::getInstance();
DBQuery query;
query << "SELECT `level`, `vocation`, `promotion` FROM `players` WHERE `name` " << db->getStringComparer() << db->escapeString(name) << ";";
DBResult* result;
if(!(result = db->storeQuery(query.str())))
return false;
const uint32_t pLevel = result->getDataInt("level");
const uint32_t pVoc = result->getDataInt("vocation");
const uint32_t prom = result->getDataInt("promotion");
std::string voc;
if (prom == 0)
{
switch (pVoc)
{
case 0: voc = "Rookie";
break;
case 1: voc = "S";
break;
case 2: voc = "D";
break;
case 3: voc = "P";
break;
case 4: voc = "K";
break;
default: voc = "Uknown";
}
}
else if (prom == 1)
{
switch (pVoc)
{
case 0: voc = "Rookie";
break;
case 1: voc = "MS";
break;
case 2: voc = "ED";
break;
case 3: voc = "RP";
break;
case 4: voc = "EK";
break;
default: voc = "Uknown";
}
}
else if (prom == 2)
{
switch (pVoc)
{
case 0: voc = "Rookie";
break;
case 1: voc = "VIP MS";
break;
case 2: voc = "VIP ED";
break;
case 3: voc = "VIP RP";
break;
case 4: voc = "VIP EK";
break;
default: voc = "Uknown";
}
}
std::stringstream ret;
ret << "Level: "<< pLevel << " Voc: " << voc;
result->free();
return ret.str();
}
Vá em "protocollogin.cpp" e procure isto:
output->putString(g_config.getString(ConfigManager::SERVE R_NAME));
Troque por isto, ou então adicione // antes do inicio da linha:
//output->putString(g_config.getString(ConfigManager::SERVE R_NAME));
Mais a baixo, onde estiver este código, selecione:
#ifndef __LOGIN_SERVER__
output->putString((*it));
if(g_config.getBool(ConfigManager::ON_OR_OFF_CHARLIST))
{
if(g_game.getPlayerByName((*it)))
output->putString("Online");
else
output->putString("Offline");
}
else
output->putString(g_config.getString(ConfigManager::SERVER_NAME));
output->put<uint32_t>(serverIp);
output->put<uint16_t>(g_config.getNumber(ConfigManager::GAME_PORT));
#else
E altere por esse a baixo:
#ifndef __LOGIN_SERVER__
output->putString((*it));
if(g_config.getBool(ConfigManager::ON_OR_OFF_CHARLIST))
{
if(g_game.getPlayerByName((*it)))
output->putString("Online");
else
output->putString("Offline");
}
else
{
std::stringstream str;
Player *player = g_game.getPlayerByName((*it));
bool v = false;
if(!player)
{
v = true;
player = g_game.getPlayerByNameEx((*it));
}
str << player->getVocation()->getName();
str << ", ";
str << player->getLevel();
output->putString(str.str());
if(v)
delete player;
}
output->put<uint32_t>(serverIp);
output->put<uint16_t>(g_config.getNumber(ConfigManager::GAME_PORT));
#else
Lembrando que para funcionar precisa estar assim no seu config.lua.
displayOnOrOffAtCharlist = false
Créditos:
EvulMastah(otland) >> Corrigiu o erro que dava.
Jetro(otland) >> Postou os códigos.
Eu, por trazer ao XTibia, rs.






