Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- uint32_t CreatureEvent::executeWalk(Creature* creature, const Position& fromPosition, const Position& toPosition)
- {
- //onWalk(cid, fromPosition, toPosition)
- if(m_interface->reserveEnv())
- {
- ScriptEnviroment* env = m_interface->getEnv();
- if(m_scripted == EVENT_SCRIPT_BUFFER)
- {
- env->setRealPos(creature->getPosition());
- std::stringstream scriptstream;
- scriptstream << "local cid = " << env->addThing(creature) << std::endl;
- env->streamPosition(scriptstream, "fromPosition", fromPosition);
- env->streamPosition(scriptstream, "toPosition", toPosition);
- scriptstream << m_scriptData;
- bool result = true;
- if(m_interface->loadBuffer(scriptstream.str()))
- {
- lua_State* L = m_interface->getState();
- result = m_interface->getGlobalBool(L, "_result", true);
- }
- m_interface->releaseEnv();
- return result;
- }
- else
- {
- #ifdef __DEBUG_LUASCRIPTS__
- char desc[30];
- sprintf(desc, "%s", creature->getName().c_str());
- env->setEvent(desc);
- #endif
- env->setScriptId(m_scriptId, m_interface);
- env->setRealPos(creature->getPosition());
- lua_State* L = m_interface->getState();
- m_interface->pushFunction(m_scriptId);
- lua_pushnumber(L, env->addThing(creature));
- LuaInterface::pushPosition(L, fromPosition);
- LuaInterface::pushPosition(L, toPosition);
- bool result = m_interface->callFunction(3);
- m_interface->releaseEnv();
- return result;
- }
- }
- else
- {
- std::cout << "[Error - CreatureEvent::executeWalk] Call stack overflow." << std::endl;
- return 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment