Advertisement
BeniS

creatureevent.cpp

Feb 10th, 2013
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 1.98 KB | None | 0 0
  1. 2145,32145,57
  2.         return 0;
  3.     }
  4. }
  5. +
  6. +uint32_t CreatureEvent::executeExtendedOpcode(Creature* creature, uint8_t opcode, const std::string& buffer)
  7. +{
  8. +    //onExtendedOpcode(cid, opcode, buffer)
  9. +    if(m_interface->reserveEnv())
  10. +    {
  11. +        ScriptEnviroment* env = m_interface->getEnv();
  12. +        if(m_scripted == EVENT_SCRIPT_BUFFER)
  13. +        {
  14. +            env->setRealPos(creature->getPosition());
  15. +            std::stringstream scriptstream;
  16. +            scriptstream << "local cid = " << env->addThing(creature) << std::endl;
  17. +            scriptstream << "local opcode = " << (int)opcode << std::endl;
  18. +            scriptstream << "local buffer = " << buffer.c_str() << std::endl;
  19. +
  20. +            scriptstream << m_scriptData;
  21. +            bool result = true;
  22. +            if(m_interface->loadBuffer(scriptstream.str()))
  23. +            {
  24. +                lua_State* L = m_interface->getState();
  25. +                result = m_interface->getGlobalBool(L, "_result", true);
  26. +            }
  27. +
  28. +            m_interface->releaseEnv();
  29. +            return result;
  30. +        }
  31. +        else
  32. +        {
  33. +            #ifdef __DEBUG_LUASCRIPTS__
  34. +            char desc[35];
  35. +            sprintf(desc, "%s", player->getName().c_str());
  36. +            env->setEvent(desc);
  37. +            #endif
  38. +
  39. +            env->setScriptId(m_scriptId, m_interface);
  40. +            env->setRealPos(creature->getPosition());
  41. +    
  42. +            lua_State* L = m_interface->getState();
  43. +            m_interface->pushFunction(m_scriptId);
  44. +            lua_pushnumber(L, env->addThing(creature));
  45. +            lua_pushnumber(L, opcode);
  46. +            lua_pushlstring(L, buffer.c_str(), buffer.length());
  47. +
  48. +            bool result = m_interface->callFunction(3);
  49. +            m_interface->releaseEnv();
  50. +            return result;
  51. +        }
  52. +    }
  53. +    else
  54. +    {
  55. +        std::cout << "[Error - CreatureEvent::executeRemoved] Call stack overflow." << std::endl;
  56. +    return 0;
  57. +    }
  58. +}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement