Ir para conteúdo

Nível e vocation em vez do nome do mundo em character login


kaleudd

Posts Recomendados

img:

 

 

LK3SG.jpg

 

 

 

em iologindata.h

procure:

uint32_t getAccountIdByName(const std::string& name) const;

e substituia por:

std::string getCheckPlayerLevel(const std::string& name) const;

iologindata.cpp

para tfs 0.3.6

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->getStringComparison() << 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";
         }
    }   

    std::stringstream ret;
    ret << "Level: "<< pLevel << " Voc: " << voc;
    result->free();
    return ret.str();
}

para tfs 0.4:

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";
         }
    }   

    std::stringstream ret;
    ret << "Level: "<< pLevel << " Voc: " << voc;
    result->free();
    return ret.str();
}

agora em protocollogin.cpp

procure:

output->putString(g_config.getString(ConfigManager::SERVE R_NAME));

e em baixo adicione:

output->putString(IOLoginData::getInstance()->getCheckPlayerLevel((*it)));

testado em 0.3.6 e 0.4 tfs.

 

créditos:

jetros

Editado por kaleudd
Link para o comentário
Compartilhar em outros sites

  • 2 months later...

Só uma correção para o tfs 0.3.6:

 

Em:

output->putString(g_config.getString(ConfigManager::SERVE R_NAME));

vai estar assim:

output->AddString(g_config.getString(ConfigManager::SERVER_NAME));

Ai substitui por:

//output->AddString(g_config.getString(ConfigManager::SERVER_NAME));
output->AddString(IOLoginData::getInstance()->getCheckPlayerLevel((*it)));

e quando tu fala para substituir em:

uint32_t getAccountIdByName(const std::string& name) const;

Na verdade é para adicionar em baixo dele:

std::string getCheckPlayerLevel(const std::string& name) const;

Testado no 0.3.6 com essas modificações e está 100%.

Link para o comentário
Compartilhar em outros sites

  • 1 month later...

Olá ira funcionar sim. contando que você entenda de programação. oque acontece ali é que é mostrado informações de uma tabela, ou seja do banco de dados, então qualquer dado pode ser mostrado ali, acredito que basta você achar a configuração lua que faz isso e alterar seus dados pelo quais você deseja.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...