Ir para conteúdo
Entre para seguir isso  
biel061

SQL Player ID List

Recommended Posts

biel061    0
biel061

Atenção, antes de começar só falo uma coisa, NÃO ADIANTA, SÓ FUNCIONA COM SERVIDORES MySQL

 

1º Code meu que eu libero XD

Testado apenas no evolutions 0.7.7

 

Vamos la!

 

No final do arquivo ioplayersql.cpp adicione:

#ifdef __BIEL_SQLLIST__

bool IOPlayerSQL::eraseList()

{

Database* db = Database::instance();

DBQuery query;

DBResult result;



if(!db->connect()){

 return false;

}





query <<"DELETE FROM ponline";

if(!db->executeQuery(query)) { return false; } else { return true; }



}

bool IOPlayerSQL::addPlayerToList(int playerid)

{

Database* db = Database::instance();

DBQuery query;

DBResult result;



if(!db->connect()){

 return false;

}



   DBSplitInsert query_insert(db);



          query_insert.setQuery("INSERT INTO `ponline` ( `id` , `player` ) VALUES ");

          std::stringstream tolist;

          tolist <<"('', '"<< playerid <<"')";

          if(query_insert.addRow(tolist.str())){ return true; } else { return true; }



}

#endif //__BIEL_SQLLIST__

 

Agora no arquivo ioplayersql.h acima de:

	IOPlayerSQL();

~IOPlayerSQL(){};

 

Coloque:

#ifdef __BIEL_SQLLIST__

virtual bool eraseList();

virtual bool addPlayerToList(int playerid);

#endif //__BIEL_SQLLIST__

 

Agora no arquivo ioplayer.cpp coloque:

#ifdef __BIEL_SQLLIST__

bool IOPlayer::addPlayerToList(int playerid)

{

return false;

}

bool IOPlayer::eraseList()

{

return false;

}

#endif //__BIEL_SQLLIST__

 

Agora no arquivo ioplayer.h acima de:

protected:

 

Coloque:

#ifdef __BIEL_SQLLIST__

virtual bool addPlayerToList(int playerid);

virtual bool eraseList();

#endif //__BIEL_SQLLIST__

 

Agora no arquivo game.cpp em baixo de:

 

void Game::saveServer()

{

std::cout << ":: server save.. ";

 

Coloque:

#ifdef __BIEL_SQLLIST__

   if(!IOPlayer::instance()->eraseList()){

       std::cout << ":: Error while erasing SQL list" << std::endl;

   }

#endif //__BIEL_SQLLIST__

 

Agora ainda na função saveServer() e no arquivo game.cpp, em baixo de:

 

  (it->second)->loginPosition = (it->second)->getPosition();

 IOPlayer::instance()->savePlayer(it->second);

 

Coloque:

 

#ifdef __BIEL_SQLLIST__

       std::string info;

     info = (*it).second->getName();

       Player* plo = getPlayerByName(info);

 IOPlayer::instance()->addPlayerToList(plo->getGUID());

#endif //__BIEL_SQLLIST__

 

Agora no seu C++ Compiler adicione:

 

-D__BIEL_SQLLIST__

 

Quase me esqueci, executem a seguinte query na sua db:

CREATE TABLE `ponline` (

 `id` int(11) NOT NULL auto_increment,

 `player` bigint(36) NOT NULL default '0'

);

 

Pelo que eu me lembre é só isso, comments, bugs, advertencias, ou idéias, postem aqui...

Compartilhar este post


Link para o post
Zen    0
Zen

Olá,

 

Muito Bom Biel!!!

 

Sempre você inovando no Mundo dos OTServers ;)

 

Esse code vai ajudar a muitos com botando essa lista em seus Sites :D

 

//Zen

Compartilhar este post


Link para o post
Jackson Zani    1
Jackson Zani

Boa cara ótimo Code

Agora vai ficar muito mais faicl :D

 

Abraços!

Compartilhar este post


Link para o post
Fusion    0
Fusion

ow mano tipo

to la adicionando na boa no mysql mais ta dando problema quando eu ponho auto_increment do 'id' mais quando eu tiro ele ai ele vai firme tipo se pode me ajuda ae? olha u erro ake

 

Erro

 

consulta SQL:

 

ALTER TABLE `ponline` CHANGE `id` `id` INT( 11 ) NOT NULL AUTO_INCREMENT

 

Mensagens do MySQL : Documentação

#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key[/b]

 

.:Edited:.

 

Ae velho consegui ae nen precisa mais responde nao biggrin.gif(to pegando u jeito xD)

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×