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

kaleudd
em Linguagens de Programação

kaleudd

avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 15/06/15Posts: 729

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

SamueLGuedes

Coordenador *-*
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 18/05/11Posts: 1069Gênero: MasculinoChar no Tibia: Kyuzen

Nossa... muito legal, parabéns pelo script xD. só uma dúvida, funcionaria para OTC?

 

 

My Show-OFF

Beeki

Ex-Coordenador XDev
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 12/03/11Posts: 1900Gênero: MasculinoChar no Tibia: Nokte

Coloque os créditos.

Fabio Augustus - Infraestrutura

Skype: guhsvasc

kaleudd

avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 15/06/15Posts: 729

Nossa... muito legal, parabéns pelo script xD. só uma dúvida, funcionaria para OTC?

 

cara não cheguei a testar no otc,mais creio que sim.

 

SamueLGuedes

Coordenador *-*
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 18/05/11Posts: 1069Gênero: MasculinoChar no Tibia: Kyuzen

beleza, quando eu tiver tempo, irei testar xD. parabéns.

 

 

My Show-OFF

kaleudd

avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 15/06/15Posts: 729

beleza, quando eu tiver tempo, irei testar xD. parabéns.

 

blz,tamo ai

saviomu

Sir Psycho Sexy Yeah!!
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 17/06/12Posts: 72

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%.

Luga03

Gabriel Lucena :D
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 14/04/15Posts: 956Gênero: Masculino

Se eu tenta-se enviar outra informação, tipo o id da outfit em que o player está usando, iria funcionar?

Hello! How are you? It's fine? 

 

Okay, so you like my helps? if yes, then do you can like my post, give-me a reputation, you can't?

 

Good morning for everyone! And have a good day!

kenyokipney

AlOnEiNtHeDaRk
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 02/07/11Posts: 37Gênero: Masculino

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.

Luga03

Gabriel Lucena :D
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 14/04/15Posts: 956Gênero: Masculino

Sim, eu vi que era pelo banco de dados, por isso fiquei em dúvida já que tenho pouco conhecimento de programação em  C++

Hello! How are you? It's fine? 

 

Okay, so you like my helps? if yes, then do you can like my post, give-me a reputation, you can't?

 

Good morning for everyone! And have a good day!