From 89b6ac76dfc8fcbc37e711fffd9851e308dd606b Mon Sep 17 00:00:00 2001 From: GokuWeedLord Date: Fri, 15 Dec 2017 00:19:30 +1100 Subject: [PATCH] improve script reloading and fix openinggridania --- scripts/native/opening/OpeningGridania.cpp | 2 ++ .../Server_Zone/Script/NativeScriptManager.cpp | 12 +++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) 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 )