Nostradamus
Member
- Joined
- Jun 2, 2007
- Messages
- 219
- Reaction score
- 6
I saw here in this forum, one function named onAdvance by 4220niller, but i didn't like his script, so i decided to make for myself.
I did not tested the code, but i think it will work, if not, please report the problem occured here.
creatureevent.cpp
After:
Add:
After:
Add:
After:
Add:
After:
Add:
After:
Add:
After:
Add:
After:
Add:
In the end of the file, add:
creatureevent.h
After:
Add:
_____________________________________
After:
Add:
After:
Add:
After:
Add:
player.cpp
After:
Add:
After:
Add:
After:
Add:
I did not tested the code, but i think it will work, if not, please report the problem occured here.
creatureevent.cpp
After:
Code:
m_logoutEvent = NULL;
Add:
Code:
m_advanceEvent = NULL;
After:
Code:
delete m_logoutEvent;
Add:
Code:
delete m_advanceEvent;
After:
Code:
m_logoutEvent->clearEvent();
Add:
Code:
m_advanceEvent->clearEvent();
After:
Code:
case CREATURE_EVENT_LOGOUT:
delete m_logoutEvent;
m_logoutEvent = creatureEvent;
return true;
Add:
Code:
case CREATURE_EVENT_ADVANCE:
delete m_advanceEvent;
m_advanceEvent = creatureEvent;
return true;
After:
Code:
uint32_t CreatureEvents::playerLogout(Player* player)
{
if(m_logoutEvent)
return m_logoutEvent->executeOnLogout(player);
else
return 0;
}
Add:
Code:
uint32_t CreatureEvents::playerAdvance(Player* player)
{
if(m_advanceEvent)
return m_advanceEvent->executeOnAdvance(player);
else
return 0;
}
After:
Code:
else if(str == "logout")
m_type = CREATURE_EVENT_LOGOUT;
Add:
Code:
else if(str == "advance")
m_type = CREATURE_EVENT_ADVANCE;
After:
Code:
case CREATURE_EVENT_LOGOUT:
return "onLogout";
Add:
Code:
case CREATURE_EVENT_ADVANCE:
return "onAdvance";
In the end of the file, add:
Code:
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::executeOnLogout" << std::endl;
return 0;
}
}
creatureevent.h
After:
Code:
CREATURE_EVENT_LOGOUT,
Add:
Code:
CREATURE_EVENT_ADVANCE
_____________________________________
After:
Code:
uint32_t playerLogout(Player* player);
Add:
Code:
uint32_t playerAdvance(Player* player);
After:
Code:
CreatureEvent* m_logoutEvent;
Add:
Code:
CreatureEvent* m_advanceEvent;
After:
Code:
uint32_t executeOnLogout(Player* player);
Code:
uint32_t executeOnAdvance(Player* player);
player.cpp
After:
Code:
levelMsg << "You advanced from Level " << prevLevel << " to Level " << newLevel << ".";
sendTextMessage(MSG_EVENT_ADVANCE, levelMsg.str());
Add:
Code:
//scripting event - onAdvance
g_creatureEvents->playerAdvance(this);
After:
Code:
advMsg << "You advanced in " << g_game.getSkillName(skill) << ".";
client->sendTextMessage(MSG_EVENT_ADVANCE, advMsg.str());
client->sendSkills();
Add:
Code:
//scripting event - onAdvance
g_creatureEvents->playerAdvance(this);
After:
Code:
MaglvMsg << "You advanced to magic level " << magLevel << ".";
sendTextMessage(MSG_EVENT_ADVANCE, MaglvMsg.str());
sendStats();
Add:
Code:
//scripting event - onAdvance
g_creatureEvents->playerAdvance(this);
Last edited: