BOOL KScriptServer::Accept(KPlayer* pPlayer, const char cszFunction[], BYTE* pbyData, size_t uDataLen) { BOOL bResult = false; BOOL bRetCode = false; int nRetCode = 0; int nIndex = 0; ILuaScriptEx* piScript = NULL; Lua_State* L = NULL; BYTE* pbyNext = NULL; BYTE* pbyTail = NULL; size_t uSrcLen = sizeof(m_byOriginalBuffer); assert(pPlayer); assert(pPlayer->m_pScene); g_pSO3World->m_ScriptCenter.SafeCallBegin(&nIndex); nRetCode = lzo1x_decompress(pbyData, (lzo_uint)uDataLen, m_byOriginalBuffer, (lzo_uint*)&uSrcLen, NULL); KGLOG_PROCESS_ERROR(nRetCode == LZO_E_OK); pbyNext = m_byOriginalBuffer; pbyTail = m_byOriginalBuffer + uSrcLen; bRetCode = g_pSO3World->m_ScriptCenter.IsScriptExist(m_dwScript); KG_PROCESS_ERROR(bRetCode); bRetCode = g_pSO3World->m_ScriptCenter.IsFuncExist(m_dwScript, cszFunction); KG_PROCESS_ERROR(bRetCode); piScript = g_pSO3World->m_ScriptCenter.GetScriptHolder(); KGLOG_PROCESS_ERROR(piScript); L = piScript->GetLuaState(); KGLOG_PROCESS_ERROR(L); pPlayer->LuaGetObj(L); piScript->AddParamCount(); while (pbyNext < pbyTail) { pbyNext = LuaUnpack(L, pbyNext, (size_t)(pbyTail - pbyNext)); KGLOG_PROCESS_ERROR(pbyNext); piScript->AddParamCount(); } g_pSO3World->m_ScriptCenter.CallFunction(m_dwScript, cszFunction, 0); bResult = true; Exit0: g_pSO3World->m_ScriptCenter.SafeCallEnd(nIndex); return bResult; }
BOOL KScriptClient::Accept(const char cszFunction[], BYTE* pbyData, size_t uDataLen) { BOOL bResult = false; BOOL bRetCode = false; int nIndex = 0; ILuaScriptEx* piScript = NULL; Lua_State* L = NULL; BYTE* pbyNext = pbyData; BYTE* pbyTail = pbyData + uDataLen; g_pSO3World->m_ScriptCenter.SafeCallBegin(&nIndex); bRetCode = g_pSO3World->m_ScriptCenter.IsScriptExist(m_dwScript); KG_PROCESS_ERROR(bRetCode); bRetCode = g_pSO3World->m_ScriptCenter.IsFuncExist(m_dwScript, cszFunction); KG_PROCESS_ERROR(bRetCode); piScript = g_pSO3World->m_ScriptCenter.GetScriptHolder(); KGLOG_PROCESS_ERROR(piScript); L = piScript->GetLuaState(); KGLOG_PROCESS_ERROR(L); while (pbyNext < pbyTail) { pbyNext = LuaUnpack(L, pbyNext, (size_t)(pbyTail - pbyNext)); KGLOG_PROCESS_ERROR(pbyNext); piScript->AddParamCount(); } g_pSO3World->m_ScriptCenter.CallFunction(m_dwScript, cszFunction, 0); bResult = true; Exit0: g_pSO3World->m_ScriptCenter.SafeCallEnd(nIndex); return bResult; }