Postado Agosto 18, 2015 10 anos Como titulo já diz tudo! Quero que apareça o Level e Vocação do char na tela de login. Creio que seja na "soucers" só necessito do código! Ajude ME!
Postado Agosto 19, 2015 10 anos Vá em iologindata.cpp e lá no final adicione isso: std::string IOLoginData::getPlayerLevelAndVocation(const std::string& name) const { Database* db = Database::getInstance(); DBQuery query; query << "SELECT `level`, `vocation` FROM `players` WHERE `name` " << db->getStringComparer() << db->escapeString(name) << ";"; DBResult* result; if(!(result = db->storeQuery(query.str()))) return false; const uint32_t playerLevel = result->getDataInt("level"); const uint32_t playerVocation = result->getDataInt("vocation"); std::stringstream ret; ret << "Lvl: " << playerLevel; Vocation* voc = Vocations::getInstance()->getVocation(playerVocation); if(!voc | playerVocation == 0) return ret.str(); ret << ", " << voc->getName().c_str(); result->free(); return ret.str(); } Agora em iologindata.h procure por: bool getGuidByNameEx(uint32_t& guid, bool& specialVip, std::string& name); E adicione logo abaixo: std::string getPlayerLevelAndVocation(const std::string& name) const; Em protocollogin.cpp procure por: 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)); E substitua por: if(g_config.getBool(ConfigManager::ON_OR_OFF_CHARLIST)) { if(g_game.getPlayerByName((*it))) output->putString("Online"); else output->putString("Offline"); } else { if((*it) != "Account Manager") { output->putString(IOLoginData::getInstance()->getPlayerLevelAndVocation((*it))); } else output->putString(g_config.getString(ConfigManager::SERVER_NAME)); } Compile e pronto. Lembrando que em config.lua a opção displayOnOrOffAtCharlist precisa estar false.
Postado Agosto 19, 2015 10 anos Autor ´Funcionou só que tem um erro. Nao Mostra as vocation Royal Paladin,Master Sorcerer,Elite Knight,Elder druid. tem como por siglas nas vocation tipo: K, P, S, D - EK, RP, MS, ED?? Editado Agosto 19, 2015 10 anos por williamcgv (veja o histórico de edições)
Postado Agosto 19, 2015 10 anos Solução ´Funcionou só que tem um erro. Nao Mostra as vocation Royal Paladin,Master Sorcerer,Elite Knight,Elder druid. tem como por siglas nas vocation tipo: K, P, S, D - EK, RP, MS, ED?? std::string IOLoginData::getPlayerLevelAndVocation(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 playerLevel = result->getDataInt("level"); const uint32_t playerVocation = result->getDataInt("vocation"); const uint32_t playerPromotion = result->getDataInt("promotion"); std::stringstream ret; std::string voc; if(playerPromotion == 0) { switch(playerVocation) { 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(playerPromotion == 1) { switch(playerVocation) { 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"; } } ret << "Lvl: " << playerLevel << ", " << voc; result->free(); return ret.str(); } Editado Agosto 19, 2015 10 anos por MaTTch (veja o histórico de edições)
Postado Agosto 19, 2015 10 anos Autor Funcionou Valeu! Editado Agosto 19, 2015 10 anos por williamcgv (veja o histórico de edições)
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.