diff --git a/scripts/native/opening/OpeningGridania.cpp b/scripts/native/opening/OpeningGridania.cpp index 2a9e5e6b..5e4374c1 100644 --- a/scripts/native/opening/OpeningGridania.cpp +++ b/scripts/native/opening/OpeningGridania.cpp @@ -63,6 +63,8 @@ public: Scene00030( player ); } }; + + player.eventPlay( getId(), 40, 1, 2, 1, callback ); } /////////////////////////////// diff --git a/src/servers/Server_Zone/Script/NativeScriptManager.cpp b/src/servers/Server_Zone/Script/NativeScriptManager.cpp index 5e644f67..a28a823f 100644 --- a/src/servers/Server_Zone/Script/NativeScriptManager.cpp +++ b/src/servers/Server_Zone/Script/NativeScriptManager.cpp @@ -154,14 +154,24 @@ namespace Core { void NativeScriptManager::processLoadQueue() { + std::vector< std::string > deferredLoads; + while( !m_scriptLoadQueue.empty() ) { auto item = m_scriptLoadQueue.front(); - loadScript( item ); + // if it fails, we defer the loading to the next tick + if( !loadScript( item ) ) + deferredLoads.push_back( item ); m_scriptLoadQueue.pop(); } + + if( !deferredLoads.empty() ) + { + for( auto& item : deferredLoads ) + m_scriptLoadQueue.push( item ); + } } void NativeScriptManager::findScripts( std::set< Core::Scripting::ScriptInfo* >& scripts, const std::string& search )