Ir para conteúdo

Posts Recomendados

Oi gente... Tava sem nada pra faze e resolvi cria um code.. É assim.. De tantos em tantos minutos, o server da um cleanmap (comando /clean )

otserv.cpp

Emcima disso:

 

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

 

Coloque isso:

 

// ZorZin clean mapif (g_config.getGlobalNumber("cleanmap") > 0){    g_game.addEvent(makeTask(g_config.getGlobalNumber("cleanmap")*60000-60000, std::mem_fun(&Game::msgAntesdeCleanup)));    g_game.addEvent(makeTask(g_config.getGlobalNumber("cleanmap")*60000, std::mem_fun(&Game::cleanMap2)));}elsestd::cout << ":: Clean Map Disabled!" << std::endl;// ZorZin clean map

 

Game.cpp

acima de:

 

void Game::creatureBroadcastMessage(Creature *creature, const std::string &text)

 

coloque:

 

void Game::msgAntesdeCleanup(){for(AutoList<Player>::listiterator it = Player::listPlayer.list.begin(); it != Player::listPlayer.list.end(); ++it){std::string name;name = (*it).second->getName();extern Game g_game;Creature* creature = g_game.getCreatureByName(name);(*it).second->onCreatureSay(creature, SPEAK_BROADCAST, "O mapa será limpo daqui a exatamente 1 minuto. Por favor, retire os equipamentos do chão ou de cima da caixa do dp e deixe com seu char.");}}

 

agora procure por:

 

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

 

abaixo adicione:

 

long Game::cleanMap2(){    addEvent(makeTask(g_config.getGlobalNumber("cleanmap")*60000-60000, std::mem_fun(&Game::msgAntesdeCleanup)));    addEvent(makeTask(g_config.getGlobalNumber("cleanmap")*60000, std::mem_fun(&Game::cleanMap2)));return map->clean();}

 

Game.h

procure por:

 

long cleanMap();

 

adicione logo abaixo:

 

long cleanMap2();

 

agora procure por:

 

void creatureBroadcastMessage(Creature *creature, const std::string &text);

 

acima adicione:

 

void msgAntesdeCleanup();

 

Agora vá no config.lua e coloque:

 

--Auto Clean Map -- de quanto em quanto tempo ira dar clean (em minutos) 60 = 1 horacleanmap = 60

 

Se der algum erro, pode ser porque no seu ot num tem o CleanMap(comando /clean)

Espero que esse code ajude vocês...

É bem simples mas com items no chão, dá muito lag..

Ai você num precisa ficar entrando no ot e dar /clean

Com o code da clean sozinho

Crédits: Zorzin & Frerety

Zorzin

Link para o comentário
https://xtibia.com/forum/topic/15824-76-auto-clean-map/
Compartilhar em outros sites

Cara muito massa esse code.

O meu server so vivia dando lag por que a galera ficava pegando e clonando itens :confused: e jogava no chão ai varias pessoas ficavam reclamando.

Agora graças a você eu não vou ter mais esse problema.

ps: E deixa o server com muito lag

Flws

Link para o comentário
https://xtibia.com/forum/topic/15824-76-auto-clean-map/#findComment-73511
Compartilhar em outros sites

Oi,

muito bom esse code.

Mas tipo no mapa global ele trava o serv por uns minutos, se o PC do kara nao for bom vai ser ruim pra caramba a hora q de o autclean.

E tipo nao e so para o mapa global, mapas grandes tb dao esse tipo de lag.

Fora isso is very perfect !!! xD

vlw

//kamimura

Link para o comentário
https://xtibia.com/forum/topic/15824-76-auto-clean-map/#findComment-73533
Compartilhar em outros sites

Oi,

muito bom esse code.

Mas tipo no mapa global ele trava o serv por uns minutos, se o PC do kara nao for bom vai ser ruim pra caramba a hora q de o autclean.

E tipo nao e so para o mapa global, mapas grandes tb dao esse tipo de lag.

Fora isso is very perfect !!! xD

vlw

//kamimura

 

 

 

claro.. isso depende do pc.. mas, para pcs ruins,

é só colocar de 3 em 3 horas por exemplo... ou seja, 180 minutos..

no meu ot que o mapa eh pequeno prefiro de 2 em 2 horas...

ai deixo como 120 min...

Zorzin

Link para o comentário
https://xtibia.com/forum/topic/15824-76-auto-clean-map/#findComment-73545
Compartilhar em outros sites

mas mapa global em pc ruim deve ser um lag tremendo mesmu sem clean map xD

mas eu até axu melhor u clean map de 4 em 4 horas, 8 em 8 horas

e axo ke ficava melhor 1 minuto antes du clean um aviso prévio

"1 minute left to clean map" para as pessoas naum perderem items

cya~~

Link para o comentário
https://xtibia.com/forum/topic/15824-76-auto-clean-map/#findComment-73578
Compartilhar em outros sites

wow!

great code!!!

haUhAUha...

mt bem bolado... parabéns...

soh teim um probleminha, o mapa soh eh limpo 1 vez...

estou trabalhando com uma função que faça isso funcionar i faça mandar uma mensagem 1 minuto antes de dar clean... agora a msm toh postanu aki como vai fikar...

FlW

CyA!

----- EDITED -----

olhe mais pra baixo pra ver uma versão complementar

Link para o comentário
https://xtibia.com/forum/topic/15824-76-auto-clean-map/#findComment-73861
Compartilhar em outros sites

r0x

e eu concordo com o colex

é bom ter um aviso prévio de qunado ira ter clean no mapa

pra ngm correr risco de perder nd

e issu tem utilidade para todos tipos de server do enforced até o up lvl

;] vlw abraços

Atenciosamente,

Sir Picaralhos.

Link para o comentário
https://xtibia.com/forum/topic/15824-76-auto-clean-map/#findComment-73878
Compartilhar em outros sites

@Zorzin

adorei seu comando i sua criatividade... dei uma "melhorada" no seu code...

si vc kizer edite seu post e coloque assim:

otserv.cpp

Em cima disso:

Call to WSA Startup on Windows Systems...

Coloque isso:

// ZorZin clean map

if (g_config.getGlobalNumber("cleanmap") > 0)

{

    g_game.addEvent(makeTask(g_config.getGlobalNumber("cleanmap")*60000-60000, std::mem_fun(&Game::msgAntesdeCleanup)));

    g_game.addEvent(makeTask(g_config.getGlobalNumber("cleanmap")*60000, std::mem_fun(&Game::cleanMap2)));

}

else

std::cout << ":: Clean Map Disabled!" << std::endl;

// ZorZin clean map

Game.cpp

acima de:

void Game::creatureBroadcastMessage(Creature *creature, const std::string &text)

adicione:

void Game::msgAntesdeCleanup()

{

for(AutoList<Player>::listiterator it = Player::listPlayer.list.begin(); it != Player::listPlayer.list.end(); ++it)

{

std::string name;

name = (*it).second->getName();

extern Game g_game;

Creature* creature = g_game.getCreatureByName(name);

(*it).second->onCreatureSay(creature, SPEAK_BROADCAST, "O mapa será limpo daqui a exatamente 1 minuto. Por favor, retire os equipamentos do chão ou de cima da caixa do dp e deixe com seu char.");

}

}

agora procure por:

long Game::cleanMap()

{

OTSYS_THREAD_LOCK_CLASS lockClass(gameLock, "Game::cleanMap()");

return map->clean();

}

abaixo adicione:

long Game::cleanMap2()

{

    addEvent(makeTask(g_config.getGlobalNumber("cleanmap")*60000-60000, std::mem_fun(&Game::msgAntesdeCleanup)));

    addEvent(makeTask(g_config.getGlobalNumber("cleanmap")*60000, std::mem_fun(&Game::cleanMap2)));

return map->clean();

}

Game.h

procure por:

long cleanMap();

adicione logo abaixo:

long cleanMap2();

agora procure por:

void creatureBroadcastMessage(Creature *creature, const std::string &text);

acima adicione:

void msgAntesdeCleanup();

Config.lua

adicione no final:

 

--Auto Clean Map -- de quanto em quanto tempo ira dar clean (em minutos) 60 = 1 horacleanmap = 60

 

.: ALTERAÇÕES:

.:

.: Agora manda uma mensagem 1 minuto antes de dar clean;

.: Não funciona apenas uma vez por reset server, funciona agora periodicamente (de x em x minutos, pq estava dando só uma vez por server ligado);

FlW

CyA!

Link para o comentário
https://xtibia.com/forum/topic/15824-76-auto-clean-map/#findComment-73915
Compartilhar em outros sites

  • 1 year later...
×
×
  • Criar Novo...