Jump to content
  • 0
luangop

Ajuda com query mysql na source tfs 0.4

Question

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:
 

Please login or register to see this attachment.

Please login or register to see this attachment.

Please login or register to see this attachment.

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 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); 

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...