Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- uint32_t CreatureEvent::executeOnMove(Player* player, Item* item, const Position& fromPosition, const Position& toPosition,
- Item* fromItem, Item* toItem, std::vector<int> status)
- {
- //onMoveItem(cid, item, formPosition, toPosition, fromItem, toItem, status)
- if(m_interface->reserveEnv())
- {
- ScriptEnviroment* env = m_interface->getEnv();
- if(m_scripted == EVENT_SCRIPT_BUFFER)
- {
- env->setRealPos(player->getPosition());
- std::stringstream scriptstream;
- scriptstream << "local cid = " << env->addThing(player) << std::endl;
- env->streamThing(scriptstream, "item" item, env->addThing(item));
- env->streamPosition(scriptstream, "fromPosition", fromPosition);
- env->streamPosition(scriptstream, "toPosition", toPosition);
- env->streamThing(scriptstream, "fromItem", fromItem, env->addThing(fromItem));
- env->streamThing(scriptstream, "toItem", toItem, env->addThing(toItem));
- scriptstream << "local status = { equip = 0, hold = 0, slot = 0, depot = 0} " << std::endl;
- scriptstream << "status.equip = " << status[0] << std::endl;
- scriptstream << "status.hold = " << status[1] << std::endl;
- scriptstream << "status.slot = " << status[2] << std::endl;
- scriptstream << "status.depot = " << status[3] << std::endl;
- if(m_scriptData)
- 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", player->getName().c_str());
- env->setEvent(desc);
- #endif
- env->setScriptId(m_scriptId, m_interface);
- env->setRealPos(player->getPosition());
- lua_State* L = m_interface->getState();
- m_interface->pushFunction(m_scriptId);
- lua_pushnumber(L, env->addThing(player));
- LuaInterface::pushThing(L, item, env->addThing(item));
- LuaInterface::pushPosition(L, fromPosition);
- LuaInterface::pushPosition(L, toPosition);
- LuaInterface::pushThing(L, item, env->addThing(fromItem));
- LuaInterface::pushThing(L, item, env->addThing(toItem));
- LuaInterface::createTable(L, "status");
- LuaInterface::setField(L,"equip",status[0]);
- LuaInterface::setField(L,"hold",status[1]);
- LuaInterface::setField(L,"slot",status[2]);
- LuaInterface::setField(L,"depot",status[3]);
- bool result = m_interface->callFunction(7);
- m_interface->releaseEnv();
- return result;
- }
- }
- else
- {
- std::clog << "[Error - CreatureEvent::executeMove] Call stack overflow." << std::endl;
- return 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement