Ir para conteúdo
  • 0

Ajuda com query mysql na source tfs 0.4


luangop

Pergunta

TFS 0.4 rev 3777
Estou a dias tentando fazer uma função na source e não consigo, sou leigo.

Este sistema é para um servidor exp alta, já consegui fazer o level do player aparecer no lugar da experiencia no client, pois no lugar do level buga quando chega em um número muito alto, para tal simplesmente fiz isso:
 

uint64_t experience = player->getPlayerInfo(PLAYERINFO_LEVEL);
		msg->put<uint32_t>(experience);

E como o servidor tem sistema de resets, eu queria fazer aparecer no lugar do level, o reset do player.. primeiramente meu sistema de resets era com storage, e eu consegui fazer isso da seguinte maneira:
 

std::string value;
        player->getStorage(378378, value);
		int32_t resets = atoi(value.c_str());

	msg->put<uint16_t>(resets);

Mas por motivos de praticidade para incluir informações e sistemas no site, mudei meu sistema de reset para registrar os resets na database. no caso o nome da coluna ficou 'reset'. Então tentei fazer aparecer os resets no client com uma query mysql mas como não tenho conhecimento de mysql em C++ deu errado kk

Vou postar como eu tentei:
 

Database* db = Database::getInstance();
DBQuery query;
query << "SELECT `reset` FROM `players` WHERE `id` = " << player->getGUID();
DBResult* result;
std::string resets;
resets = result->getDataInt("reset");
int32_t resetes = atoi(resets.c_str());
	msg->put<uint16_t>(resetes); 

Obs: Isso não é source de OTClient, isso é na source do servidor, eu utilizo oldclient mesmo.. esta é a parte que envia para o client a informação de experiencia e level para que o client mostre ao player..
No caso originalmente está assim na source:
 

	msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_LEVEL));

Neste msg->put.. preciso por o valor que se encontra na minha database, na tabela reset.
Eu não sei fazer corretamente a query mysql e o code pra extrair a informação como int (número) e apresentar no lugar de player->getPlayerInfo(PLAYERINFO_LEVEL)

Eu já consegui alterar a informação que o servidor envia ao client, já está aparecendo meu level no lugar da exp, e resets no lugar do level quando uso o script de resets por storage, só não consigo fazer a query correta pra puxar a informação da database.

Segue prints:
 

0353f4b9-0a9d-422b-8142-a3759c246013.jpg

58a168ef-88c4-4310-a99f-d2dd93ebfb00.jpg

5c6ce68f-12eb-4a98-83db-15a9164db31b.jpg

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Verifica na classe:

Database

as funções existentes dentro dela.. 

verifica se existe alguma como executeQuery(DBQuery query) ou qualquer função que receba DBQuery  como parâmetro e a execute no banco de dados.

 

Após encontrar, verifica dentro da classe :

DBResult

como é acessado o valor retornado do banco de dados, como alguma função do seu exemplo: result->getDataInt("reset")

 

 

Com essas duas informações em mãos, vc pode usar como no seu exemplo, adicionando apenas a linha do result = db->executeQuery(query), exemplo:

 

Database* db = Database::getInstance();

DBQuery query;
query << "SELECT `reset` FROM `players` WHERE `id` = " << player->getGUID(); 

DBResult* result;
result = db->executeQuery(query); 

std::string resets; 

resets = result->getDataInt("reset"); 
int32_t resetes = atoi(resets.c_str()); 

msg->put<uint16_t>(resetes); 

 

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...