KMission.cpp
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:1k
源码类别:

模拟服务器

开发平台:

C/C++

  1. #include "KCore.h"
  2. #include "KMission.h"
  3. #ifdef _SERVER
  4. BOOL KMission::Activate()
  5. {
  6. m_cTimerTaskSet.Activate();
  7. return TRUE;
  8. }
  9. BOOL KMission::ExecuteScript(char * ScriptFileName, char * szFunName, int nParam)
  10. {
  11. if (!ScriptFileName || !ScriptFileName[0] || !szFunName  || !szFunName[0]) return FALSE;
  12. return ExecuteScript(g_FileName2Id(ScriptFileName), szFunName, nParam);
  13. }
  14. BOOL KMission::ExecuteScript(DWORD dwScriptId,  char * szFunName, int nParam)
  15. {
  16. try
  17. {
  18. KLuaScript * pScript = (KLuaScript* )g_GetScript(dwScriptId);
  19. if (pScript)
  20. {
  21. KSubWorld * pSubWorld = (KSubWorld*)GetOwner();
  22. if (pSubWorld)
  23. {
  24. Lua_PushNumber(pScript->m_LuaState, pSubWorld->m_nIndex);
  25. pScript->SetGlobalName(SCRIPT_SUBWORLDINDEX);
  26. }
  27. int nTopIndex = 0;
  28. pScript->SafeCallBegin(&nTopIndex);
  29. pScript->CallFunction(szFunName,0, "d", nParam);
  30. pScript->SafeCallEnd(nTopIndex);
  31. }
  32. return TRUE;
  33. }
  34. catch(...)
  35. {
  36. printf("Exception Have Caught When Execute Script[%d]!!!!!", dwScriptId);
  37. g_DebugLog("Exception Have Caught When Execute Script[%d]!!!!!", dwScriptId);
  38. return FALSE;
  39. }
  40. return TRUE;
  41. }
  42. int g_MissionTimerCallBackFun(void * pOwner, char * szScriptFile)
  43. {
  44. if (!pOwner) return FALSE;
  45. KMission *pMission = (KMission*)pOwner;
  46. pMission->ExecuteScript(szScriptFile, "OnTimer", 0);
  47. if (szScriptFile)
  48. printf("timer %sn", szScriptFile);
  49. return 1;
  50. }
  51. #endif