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