Ir para conteúdo
Entre para seguir isso  
Kemix

[8.6]Registro automatico - creatureevent

Recommended Posts

Kemix    3
Kemix

Registra monstros ou players ou todos, pelo creatureevent.xml

Apenas traendo de outro forum.

Creditos no final.

 

Como fazer ?

Você precisa adicionar "registerTo" no xml

XML Code:

 

<event type="think" name="monsterThink" registerTo ="monster" event="script" value="look.lua"/> <!-- Apenas monstros-->

 

<event type="think" name="playerThink" registerTo ="player" event="script" value="test.lua"/><!-- Apenas plyersr-->

 

<event type="think" name="bothThink" registerTo ="all" event="script" value="move.lua"/><!-- Players e monstros-->

 

Pode ser feito manualente tambem (da forma antiga).

XML Code:

 

<event type="think" name="monsterThink" registerTo ="manual" event="script" value="look.lua"/> <!-- you manually register this event-->

 

Versão : TFS 0.4

Se alguem conseguir souber passar para versão 3.6pl1, porfavor poste ou me mande.

Agradecido.

 

Instalação:

 

 

# Va para creatureevent.cpp :

 

 

Procure por

C Code:

bool CreatureEvents::playerLogin(Player* player)

e no bloco dessa função, procure por

 

C Code:

 

return result;

 

cole isto antes

C Code:

if (result)

{

for(CreatureEventList::iterator it = m_creatureEvents.begin(); it != m_creatureEvents.end(); ++it)

{

CreatureEvent* event = *it;

if(event->isLoaded() && ( event->getRegister() == "player" || event->getRegister() == "all") )

player->registerCreatureEvent(event->getName());

}

 

}

 

Depois disto

C Code:

std::string tmpStr = asLowerCaseString(str);

Cole isto

C Code:

std::string strr;

if(!readXMLString(p, "registerTo", strr) || strr.empty() ){

if((tmpStr != "login") && (tmpStr != "logout"))

std::clog << "[Warning - CreatureEvent::configureEvent] : You havn't register event '" << m_eventName <<"'"<< std::endl;

}

else

m_eventRegister = strr;

------------------------------------------------------------------------------------------------------------------------------------

 

# Va para creatureevent.h :

 

Depois disto

C Code:

CreatureEvent* getEventByName(

Cole isto

C Code:

 

std::vector<CreatureEvent*> getAllCreatureEvents(){return m_creatureEvents;}

 

Agora, no final do arquivo, depois disto

C Code:

 

std::string m_eventName;

 

Cole isto

C Code:

 

std::string m_eventRegister;

 

Depois disto

C Code:

 

const std::string& getName() const {return m_eventName;}

Cole isto

C Code:

 

const std::string getRegister() const {return m_eventRegister;}

 

-------------------------------------------------------------------------------------------------------------------------------------

 

# Va para monster.cpp

 

Abaixo disto

C Code:

 

extern Monsters g_monsters;

 

Cole isto

C Code:

 

extern CreatureEvents* g_creatureEvents;

 

Encontre isto

C Code:

// register creature events

for(StringVec::iterator it = mType->scriptList.begin(); it != mType->scriptList.end(); ++it)

{

if(!registerCreatureEvent(*it))

std::cout << "[Warning - Monster::Monster] Unknown event name - " << *it << std::endl;

}

 

e abaixo, cole isto

C Code:

// register creature events

std::vector<CreatureEvent*> allEvents = g_creatureEvents->getAllCreatureEvents();

for(std::vector<CreatureEvent*>::const_iterator it = allEvents.begin(); it != allEvents.end(); ++it)

{

CreatureEvent* event = *it;

if(event->isLoaded() && ( event->getRegister() == "monster" || event->getRegister() == "all") )

registerCreatureEvent(event->getName());

}

 

 

 

Esta feito =D.

 

By Doggynub

Compartilhar este post


Link para o post
Majesty    1755
Majesty

Obrigado pela contribuição, Aprovado.

Compartilhar este post


Link para o post
Zirun    11
Zirun

Vou testar, assim que testar edito este post.

Compartilhar este post


Link para o post
LoManoMano    7
LoManoMano

eu uso esse código no deragon server, e funciona muito bem

apesar do título estar errado, porque não se trata de um registro automático, mas sim específico

Compartilhar este post


Link para o post
Kemix    3
Kemix

Se você levar em conta que o registro normal é feito de 1 em 1 por script, pode se considerar que esse codigo torna o registro mais geral e não especifico.

Mas entendi oque vc quis dizer =D.

Compartilhar este post


Link para o post
tunirp    0
tunirp

não entendi a real intenção do code poderia explicar um poco melhor?!

Compartilhar este post


Link para o post
luishtfs    1
luishtfs

hmm, isso facilita bastante

Compartilhar este post


Link para o post
newotserv    0
newotserv

Como assim? Eu não entendi a finalidade desse código? Como assim registrar monstros? Pode explicar melhor? E depois que explicar, pode me responder se serve para a versão 9.6?

Compartilhar este post


Link para o post
newotserv    0
newotserv

Como assim? Eu não entendi a finalidade desse código? Como assim registrar monstros? Pode explicar melhor? E depois que explicar, pode me responder se serve para a versão 9.6?

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×