cacaa 114 #1 Oluşturuldu: Eylül 14, 2022 Yardımcı olursanız çok sevinirim. bool CLuaEngine::ExecuteScript(CUser * pUser, CNpc * pNpc, int32 nEventID, int8 bSelectedReward, const char * filename) { try { ScriptBytecodeMap::iterator itr; bool result = false; m_lock->AcquireReadLock(); itr = m_scriptMap.find(filename); if (itr == m_scriptMap.end()) { // Build full path to script std::string szPath = LUA_SCRIPT_DIRECTORY; szPath += filename; // Release the read lock (we're not reading anymore) m_lock->ReleaseReadLock(); // Attempt to compile BytecodeBuffer bytecode; bytecode.reserve(LUA_SCRIPT_BUFFER_SIZE); if (!SelectAvailableScript()->CompileScript(szPath.c_str(), bytecode)) { printf("ERROR: Could not compile Lua script.\n"); printf("FILE: %s\n", szPath.c_str()); printf("USER: %s\n", pUser->GetName().c_str()); printf("ZONE: %d\n", pUser->GetZoneID()); printf("NPC ID: %d\n", pNpc->m_sSid); printf("-\n"); return false; } // Acquire the write lock (we're adding the compiled script) m_lock->AcquireWriteLock(); #if !defined(LUA_SCRIPT_CACHE_DISABLED) // Add the script to our map m_scriptMap[filename] = bytecode; #endif // Now that we have the bytecode, we can use it. result = SelectAvailableScript()->ExecuteScript(pUser, pNpc, nEventID, bSelectedReward, filename, bytecode); // Done using the lock. m_lock->ReleaseWriteLock(); } else { // Already have the bytecode, so now we need to use it. result = SelectAvailableScript()->ExecuteScript(pUser, pNpc, nEventID, bSelectedReward, filename, itr->second); // Done using the lock. m_lock->ReleaseReadLock(); } return result; } catch (...) { GlobalError(__FILE__, __LINE__); return false; } } Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
cacaa 114 #2 Konu Sahibi Eylül 21, 2022 tarihinde gönderildi Çözüldü. Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş