#pragma once #include "LuaStateManager.h" #if defined( _GAMESERVER ) #include "DNGameRoom.h" #endif // #if defined( _GAMESERVER ) class CStringSet; // °¢ ¾²·¹µå º°·Î lua_state ¸¦ »ý¼º/°ü¸® Çϱâ À§ÇÑ Å¬·¡½º ÀÌ´Ù. // ¸¸¾à ¾²·¹µå¿Í º°°³·Î lua_state ¸¦ »ý¼º ÇÏ°í ½Í´Ù¸é // DnScriptManager ÀÇ ÀνºÅϽº¸¦ º°°³·Î »ý¼ºÇÏ¿© »ç¿ë Çϵµ·Ï ÇÑ´Ù. class DnScriptManager : public LuaStateManager { public: DnScriptManager(); virtual ~DnScriptManager(); bool LoadScript( const char* szLuaFile, bool bIsCheckServer, int nLuaIndex, bool bQuestScript ); #if defined( _GAMESERVER ) template RVal call(lua_State* L, const char* name, T1 arg1, T2 arg2, T3 arg3) { #if defined( PRE_QUESTSCRIPT_LOG ) CScopeScriptLog Log( arg1->m_iMapIdx, name ); #endif // #if defined( PRE_QUESTSCRIPT_LOG ) lua_tinker::call( L, name, arg1, arg2, arg3 ); } template RVal call(lua_State* L, const char* name, T1 arg1, T2 arg2, T3 arg3, T4 arg4) { #if defined( PRE_QUESTSCRIPT_LOG ) CScopeScriptLog Log( arg1->m_iMapIdx, name ); #endif // #if defined( PRE_QUESTSCRIPT_LOG ) return lua_tinker::call( L, name, arg1, arg2, arg3, arg4 ); } template RVal call(lua_State* L, const char* name, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) { #if defined( PRE_QUESTSCRIPT_LOG ) CScopeScriptLog Log( arg1->m_iMapIdx, name ); #endif // #if defined( PRE_QUESTSCRIPT_LOG ) lua_tinker::call( L, name, arg1, arg2, arg3, arg4, arg5 ); } template RVal call(lua_State* L, const char* name, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6) { #if defined( PRE_QUESTSCRIPT_LOG ) CScopeScriptLog Log( arg1->m_iMapIdx, name ); #endif // #if defined( PRE_QUESTSCRIPT_LOG ) lua_tinker::call( L, name, arg1, arg2, arg3, arg4, arg5, arg6 ); } template RVal call(lua_State* L, const char* name, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7) { #if defined( PRE_QUESTSCRIPT_LOG ) CScopeScriptLog Log( arg1->m_iMapIdx, name ); #endif // #if defined( PRE_QUESTSCRIPT_LOG ) lua_tinker::call( L, name, arg1, arg2, arg3, arg4, arg5, arg6, arg7 ); } #endif // #if defined( _GAMESERVER ) private: void RegistLuaAPI(); bool IsValidLuaAPI(LPCSTR pApiName); bool CheckLuaAPI(CStringSet& LuaChunkSub); void CheckRemoteComplete(const char* szLuaFile, CStringSet& LuaChunkSub); private: std::map m_mLuaAPI; }; extern DnScriptManager* g_pNpcQuestScriptManager;