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!










