JA

[7.92]!online [tabela]

Por Jackson Zani, 25 de mai. de 2007 em Linguagens de Programação

otserv
tibia
11
2.9k
25 de maio de 2007 às 19:05

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 &param)

 

Por esse:

bool Commands::whoIsOnline(Creature* creature, const std::string &cmd, const std::string &param)
{
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:



imagemrq5.jpg

 

Qualquer dúvida, ou dicas. Poste aqui.

 

Abraços!

Editado Maio 25 por Jackson Zani

ToninT
25 de maio de 2007 às 19:09

Parabens veio teus codes sao muito bons mesmo hehe, c sabe que c e brother boa sorta la no mirage, jaja testo o code e edito aki. xD

dyegodbD
25 de maio de 2007 às 21:26

ah blz ! ;D não tem uma screen pra eu ve como eh? ;D

Editado Maio 25 por dyegodb

25 de maio de 2007 às 22:11
ah blz ! ;D não tem uma screen pra eu ve como eh? ;D

 

 

Hehehe, tem uma screnn ali no topic! O_O

E você verá os players online asim:



imagemrq5.jpg

 

Ta ae, Abraços.

LordfireL
25 de maio de 2007 às 22:49

Uia, que organizadinho...

Code muito bom Jackson, está de parabéns

1 mês depois...
Fusion32F
13 de junho de 2007 às 16:59

Pra fica mais organizado nao pode por assim oh

 

bool Commands::whoIsOnline(Creature* creature, const std::string &cmd, const std::string &param)
{
if(Player* player = creature->getPlayer()){
	AutoList<Player>::listiterator iter = Player::listPlayer.list.begin();
	std::string info = "Players online: \n-" + (*iter).second->getName();
	++iter;

	while(iter != Player::listPlayer.list.end()){
		if((*iter).second->getAccessLevel() < ACCESS_PROTECT){
			info += "\n- ";
			info += (*iter).second->getName();
		}

		++iter;
	}

	player->sendTextWindow(1949, info.c_str());
}

return true;
}

14 de junho de 2007 às 03:11

Creio que pular uma linha, não seja nada organizado ;b

Vai ficar que nem o comando /getonline dai, hehehe.

Vai do gosto da pessoa.

 

Abraços!

Felipe MoraesF
14 de junho de 2007 às 10:51

nossa kra,vc realmente é um otimo programador de c++

vc sempre faz umas paradas incriveis,sempre novidades...

continue assim kra...

Fusion32F
14 de junho de 2007 às 22:50

disso vc tem razao jackson gosto nao se discute shaIUshaIUsaui

MustorzeM
15 de junho de 2007 às 18:54

aki na hora de compila falha xP

8 anos depois...
28 de outubro de 2015 às 10:35

Alguem Me Ajuda eu tave precizado de

 

!rank

 

so q ele em

\/

player->sendTextWindow(1949, info.c_str());