Fiz uma pequena modificação e achei interessante compartilhar com vocês membros do Xtibia. ;D!
É o comando normal do !online, mas invês de ser MSG_STATUS_CONSOLE_BLUE eu coloquei sendTextWindow
Vamos lá.
Em game.cpp no final add:
void Game::sendWindow(const std::string& text) { for(AutoList<Creature>::listiterator it = listCreature.list.begin(); it != listCreature.list.end(); ++it){ Player* player = dynamic_cast<Player*>((*it).second); if (player){ player->sendTextWindow(4990, text); } } }
Em game.h abaix de:
void changeLight(const Creature* creature);
Adicione:
void sendWindow(const std::string& text);
Agora em commands.cpp troque todo o comando:
bool Commands::whoIsOnline(Creature* creature, const std::string &cmd, const std::string ¶m)
Por esse:
bool Commands::whoIsOnline(Creature* creature, const std::string &cmd, const std::string ¶m) { if(Player* player = creature->getPlayer()){ AutoList<Player>::listiterator iter = Player::listPlayer.list.begin(); std::string info = "Players online: " + (*iter).second->getName(); ++iter; while(iter != Player::listPlayer.list.end()){ if((*iter).second->getAccessLevel() < ACCESS_PROTECT){ info += ", "; info += (*iter).second->getName(); } ++iter; } player->sendTextWindow(1949, info.c_str()); } return true; }
Agora dê Rebuild All. Ctrl+f11
E você verá os players online asim:

Qualquer dúvida, ou dicas. Poste aqui.
Abraços!