Ir para conteúdo

Onadvance


Posts Recomendados

Vi em um fórum uma função chamada onAdvance feita pelo 4220niller, mas eu não gostei nada do código, então resolvi fazer por eu mesmo.

 

Não cheguei a testar o código, mas tenho quase certeza de que irá funcionar.

 

creatureevent.cpp

 

Depois de:

 

m_logoutEvent = NULL;

 

Adicione:

 

m_advanceEvent = NULL;

 

Depois de:

 

delete m_logoutEvent;

 

Adicione:

 

delete m_advanceEvent;

 

Depois de:

 

m_logoutEvent->clearEvent();

 

Adicione:

 

m_advanceEvent->clearEvent();

 

Depois de::

 

case CREATURE_EVENT_LOGOUT:
delete m_logoutEvent;
m_logoutEvent = creatureEvent;
return true;

 

Adicione:

 

case CREATURE_EVENT_ADVANCE:
delete m_advanceEvent;
m_advanceEvent = creatureEvent;
return true;

 

Depois de:

 

uint32_t CreatureEvents::playerLogout(Player* player)
{
if(m_logoutEvent)
	return m_logoutEvent->executeOnLogout(player);
else
	return 0;
}

 

Adicione:

 

uint32_t CreatureEvents::playerAdvance(Player* player)
{
if(m_advanceEvent)
	return m_advanceEvent->executeOnAdvance(player);
else
	return 0;
}

 

Depois de:

 

else if(str == "logout")
m_type = CREATURE_EVENT_LOGOUT;

 

Adicione:

 

else if(str == "advance")
m_type = CREATURE_EVENT_ADVANCE;

 

Depois de:

 

case CREATURE_EVENT_LOGOUT:
return "onLogout";

 

Adicione:

 

case CREATURE_EVENT_ADVANCE:
return "onAdvance";

 

No final do arquivo, Adicione:

 

uint32_t CreatureEvent::executeOnAdvance(Player* player)
{
//onAdvance(cid)
if(m_scriptInterface->reserveScriptEnv())
{
	ScriptEnviroment* env = m_scriptInterface->getScriptEnv();

	#ifdef __DEBUG_LUASCRIPTS__
		char desc[30];
		sprintf(desc, "%s", player->getName().c_str());
		env->setEventDesc(desc);
	#endif

	env->setScriptId(m_scriptId, m_scriptInterface);
	env->setRealPos(player->getPosition());

	uint32_t cid = env->addThing(player);

	lua_State* L = m_scriptInterface->getLuaState();

	m_scriptInterface->pushFunction(m_scriptId);
	lua_pushnumber(L, cid);

	int32_t result = m_scriptInterface->callFunction(1);
	m_scriptInterface->releaseScriptEnv();

	return (result == LUA_TRUE);
}
else
{
	std::cout << "[Error] Call stack overflow. CreatureEvent::executeOnAdvance" << std::endl;
	return 0;
}
}

 

creatureevent.h

 

Depois de::

 

CREATURE_EVENT_LOGOUT,

 

Adicione:

 

CREATURE_EVENT_ADVANCE

 

Depois de:

 

uint32_t playerLogout(Player* player);

 

Adicione:

 

uint32_t playerAdvance(Player* player);

 

Depois de::

 

CreatureEvent* m_logoutEvent;

 

Adicione:

 

CreatureEvent* m_advanceEvent;

 

Depois de::

 

uint32_t executeOnLogout(Player* player);

Adicione:

 

uint32_t executeOnAdvance(Player* player);

 

player.cpp

 

Depois de:

 

levelMsg << "You advanced from Level " << prevLevel << " to Level " << newLevel << ".";
sendTextMessage(MSG_EVENT_ADVANCE, levelMsg.str());

 

Adicione:

 

//scripting event - onAdvance
g_creatureEvents->playerAdvance(this);

 

Depois de:

 

advMsg << "You advanced in " << g_game.getSkillName(skill) << ".";
client->sendTextMessage(MSG_EVENT_ADVANCE, advMsg.str());
client->sendSkills();

 

Adicione:

 

//scripting event - onAdvance
g_creatureEvents->playerAdvance(this);

 

Depois de:

 

MaglvMsg << "You advanced to magic level " << magLevel << ".";
sendTextMessage(MSG_EVENT_ADVANCE, MaglvMsg.str());
sendStats();

 

Adicione:

 

//scripting event - onAdvance
g_creatureEvents->playerAdvance(this);

Editado por Nostradamus
Link para o comentário
Compartilhar em outros sites

Parece ter dado um trabalhinho ^^

Eu não entendi direito pra que serve, mas já que é um trabalho seu deve ter ficado bom xP

(B.O plz o.O)

 

-------editad------------

 

Agora entendi!

Ficou legal, parabens ;*

 

Abraços.

Editado por Magodasabedoria
Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...

Nostradamus (:

olá (:

 

ótimo trabalho... tem uma coisinha que pode dar dor de cabeça para alguns... Nem é erro, só pra consertar a msg o/

 

em

uint32_t CreatureEvent::executeOnAdvance(Player* player)

else

{

std::cout << "[Error] Call stack overflow. CreatureEvent::executeOnLogout" << std::endl;

return 0;

}

o/

 

Te vejo por aí (:

Link para o comentário
Compartilhar em outros sites

  • 1 month later...
  • 11 months later...
×
×
  • Criar Novo...