Ir para conteúdo

[7.6] Auto Clean Map


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
Compartilhar em outros sites

Olá,

Maneiro o Code,

Vai ser Bem útil,

Vai Reduzir o Lag de Certo modo e ajudar os GMs, para dar Clean, e vai poupar muito tempo, vou user no meu OT.

Brigadão Zorzin,

Abraços,

Zen

Link para o comentário
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
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
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
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
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
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
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
Compartilhar em outros sites

legal frerefty... vlw ai

eu desobri que só tava dando isso só uma vez só agorinha..

na hora que eu ia arruma vc arrumo.. ehuaehuehue

Obrigado,

Zorzin

Link para o comentário
Compartilhar em outros sites

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