1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-25 05:57:45 +00:00

Merge pull request #285 from NotAdam/actor_rewrite

fix crash when starting the server with no scripts, fixes #284
This commit is contained in:
Mordred 2018-04-04 07:58:44 +02:00 committed by GitHub
commit 16b25ce3c5
3 changed files with 24 additions and 5 deletions

View file

@ -40,7 +40,6 @@ namespace Scripting {
ScriptInfo* getScriptInfo( std::string name );
ScriptObject** getScripts( ModuleHandle handle );
ScriptObject* getScriptObject( ModuleHandle handle );
bool isModuleLoaded( std::string name );

View file

@ -54,9 +54,15 @@ bool Core::Scripting::ScriptMgr::init()
auto pConfig = g_fw.get< XMLConfig >();
auto pLog = g_fw.get< Logger >();
loadDir( pConfig->getValue< std::string >( "Settings.General.Scripts.Path", "./compiledscripts/" ),
auto status = loadDir( pConfig->getValue< std::string >( "Settings.General.Scripts.Path", "./compiledscripts/" ),
files, m_nativeScriptMgr->getModuleExtension() );
if( !status )
{
pLog->error( std::string( __func__ ) + ": failed to load scripts, the server will not function correctly without scripts loaded." );
return false;
}
uint32_t scriptsFound = 0;
uint32_t scriptsLoaded = 0;
@ -114,11 +120,17 @@ void Core::Scripting::ScriptMgr::watchDirectories()
});
}
void Core::Scripting::ScriptMgr::loadDir( const std::string& dirname, std::set<std::string> &files, const std::string& ext )
bool Core::Scripting::ScriptMgr::loadDir( const std::string& dirname, std::set<std::string>& files, const std::string& ext )
{
auto pLog = g_fw.get< Logger >();
pLog->info( "ScriptEngine: loading scripts from " + dirname );
pLog->info( "ScriptMgr: loading scripts from " + dirname );
if( !boost::filesystem::exists( dirname ) )
{
pLog->error( "ScriptMgr: scripts directory doesn't exist" );
return false;
}
boost::filesystem::path targetDir( dirname );
@ -132,6 +144,14 @@ void Core::Scripting::ScriptMgr::loadDir( const std::string& dirname, std::set<s
files.insert( i.string() );
}
}
if( files.size() )
return true;
else
{
pLog->error( "ScriptMgr: couldn't find any script modules" );
return false;
}
}
void Core::Scripting::ScriptMgr::onPlayerFirstEnterWorld( Entity::Player& player )

View file

@ -61,7 +61,7 @@ namespace Core
bool onInstanceUpdate( InstanceContentPtr instance, uint32_t currTime );
bool onInstanceEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1, uint16_t param2 );
void loadDir( const std::string& dirname, std::set<std::string> &files, const std::string& ext );
bool loadDir( const std::string& dirname, std::set<std::string> &files, const std::string& ext );
NativeScriptMgr& getNativeScriptHandler();
};