JA

[7.92] Auto Clean Map!

Por Jackson Zani, 18 de mar. de 2007 em Linguagens de Programação

otserv
14
4.5k
18 de março de 2007 às 21:23

COMENTS PLEASE!

 

Bom esse code é para quem já tem o code /clean em commands.cpp :)

No caso eu usei a versão do Evolutions 0.7.7 pra criar ele, e lá tem tudo certinho. Intão irei passar pra vocês o code.

 

Em configmanager.cpp adicione:

#ifdef __AUTOCLEAN_JACK__
m_confInteger[AUTO_CLEAN] = getGlobalNumber(L, "autoclean", 30)*60*1000;
#endif

 

Em configmanager.h adicione:

#ifdef __AUTOCLEAN_JACK__
	AUTO_CLEAN,
	#endif

 

No final de game adicione:

#ifdef __AUTOCLEAN_JACK__
long Game::cleanMap()
{
OTSYS_THREAD_LOCK_CLASS lockClass(gameLock, "Game::cleanMap()");
return map->clean();
}

long Game::autocleanMap()
{	
	OTSYS_THREAD_LOCK_CLASS lockClass(gameLock, "Game::autocleanMap()");
	std::cout << ":: auto clean... ";
	timer();
	long count = cleanMap();
	double sec = timer();

	std::stringstream msg;
	msg << "Next map clean you be in " << g_config.getNumber(ConfigManager::AUTO_CLEAN) << " minutes." << std::ends;
	for(AutoList<Player>::listiterator it = Player::listPlayer.list.begin(); it != Player::listPlayer.list.end(); ++it){
			if(dynamic_cast<Player*>(it->second))
					(*it).second->sendTextMessage(MSG_STATUS_WARNING, msg.str().c_str());
	}

	std::cout << "ok (" << timer() << "s)" << std::endl;
	addEvent(makeTask(g_config.getNumber(ConfigManager::AUTO_CLEAN), std::mem_fun(&Game::beforeClean)));
}

long Game::beforeClean()
{
	for(AutoList<Player>::listiterator it = Player::listPlayer.list.begin(); it != Player::listPlayer.list.end(); ++it) {
			it->second->sendTextMessage(MSG_STATUS_WARNING, "1 minute to clean. Get your things from floor now!");
	}

	addEvent(makeTask(60000, std::mem_fun(&Game::autocleanMap)));
}
#endif

 

Em games.h abaixo de:

void changeLight(const Creature* creature);

 

Adicione:

#ifdef __AUTOCLEAN_JACK__
long autocleanMap();
long beforeClean();
long cleanMap();
#endif

 

Em otserv.cpp abaixo de:

// Call to WSA Startup on Windows Systems...

 

Adicione:

#ifdef __AUTOCLEAN_JACK__   
if(g_config.getNumber(ConfigManager::AUTO_CLEAN) > 0)
	g_game.addEvent(makeTask(g_config.getNumber(ConfigManager::AUTO_CLEAN), std::mem_fun(&Game::autocleanMap)));
else
	std::cout << ":: Auto clean disabled!" << std::endl;
#endif //__AUTOCLEAN_JACK__

 

Em paramenters adicione:

 -D__AUTOCLEAN_JACK__

 

Agora no config.lua adicione

--Auto clean(0 - off, 1 - um minuto, 60 - uma hora!)
autoclean = 5

 

Crédits: 80% Jackson Zani, 20% Bido

Editado Março 21 por Jackson Zani

tgk4evertmT
19 de março de 2007 às 23:40

muito bom cara é realmente oq eu estava precisando me add no msn ae tenho uma proposta para vc ...

 

MSN= tgk@tgkhoster.com

 

 

WEB= www.tgkhoster.com

 

 

falow!

VenturaV
20 de março de 2007 às 23:08

Jackson Zani, você faz ótimos códigos...

Parabéns esta é ótimo pena que eu não sei mexer com compiler ^.-

 

Atenciosamente;

Ventura

21 de março de 2007 às 23:07

Pessoal tinha um bug, já arrumei :D

 

Abraços!, bug fixed

1 mês depois...
30 de abril de 2007 às 23:55

Aew cara otimo codigo.

 

 

ow esse code nun funciona nu evolutions0.07.8?

 

teria como vc adaptar un code pra eli?

 

vlw

Editado Maio 1 por God Anthyrax

ClicC
05 de maio de 2007 às 13:50

Eu nao axei 2 arkivo q vc flo ae!!

o game e o parameters!!! ajude

MustorzeM
05 de maio de 2007 às 17:51

ée! onde fica paramiters é isso ai!??

06 de maio de 2007 às 00:11

Bom, galerinha

 

O paramenters ele fica no

 

Project(projeto)>Project Options>Paramenters

 

Ou se não só use alt+p que abre direto no paramenters ;}

 

Abraços.

 

PS: Pega em todas as versões.

3 semanas depois...
dyegodbD
22 de maio de 2007 às 03:46

eu não tenho o clean... tm omo posta pra nós n? ;D

22 de maio de 2007 às 12:13
eu não tenho o clean... tm omo posta pra nós n? ;D

 

Hmm, este code não funciona na nova SVN

Porque agora estão usando outro tipo de class QTreeNode, dai tenho que aprimorar hehehe

Tem um code do novo /clean no otfans. feito pelo Xidaozu e pelo Jiddo, mas lembrando que esse code não pegará com o novo /clean, a não ser que tu pode esse code na versão 0.7.8 do xidaozu, lá ainda está com svn velha, (class velha). mas já já tem a nova versão 0.7.9 :D

 

Abraços

1 mês depois...
GM VolcanoG
17 de junho de 2007 às 23:26

Pow cara Mto rox, compilei td certinho rodou bem + tem um probleminha...

Quando vc da /clean some ateh items q vc pois no mapeditor o0, no meu serv existem muitos npcs que mostram o q vende apenas pelo item q fika na mesinha atras...dai fika um pouco complicado..quando eu do /clean some! Impossivel arrumar esse "bug" no seu code???

---------------------Quando voce fizer o code e editar ae, ou postar um novo tópico manda uma mp p/ mim ok?-------------------

Editado Junho 18 por GM Volcano

18 de junho de 2007 às 00:14
Pow cara Mto rox, compilei td certinho rodou bem + tem um probleminha...

Quando vc da /clean some ateh items q vc pois no mapeditor o0, no meu serv existem muitos npcs que mostram o q vende apenas pelo item q fika na mesinha atras...dai fika um pouco complicado..quando eu do /clean some! Impossivel arrumar esse "bug" no seu code???

 

Bom, primeiramente isso não é bug hehehe, é porque eu não botei um if(container) ou seja, daqui alguns dias irei fazer um novo com a nova CLASS, esse code ai é muito velho hehehe, e já arrumarei esse problema.

 

Abraços!

MustorzeM
19 de junho de 2007 às 12:41

Rox Funfando A 100% :D!!

Mais Nao apareceu o 1 minute to clean. Get your things from floor now!

 

xP Mais ta legal :D

Raphael LionR
22 de junho de 2007 às 09:32

Code super útil para servidores grandes !

Parabéns.