diff --git a/apps/openmw-mp/Script/LuaState.cpp b/apps/openmw-mp/Script/LuaState.cpp index cf8c81c86..5cf2bbcc2 100644 --- a/apps/openmw-mp/Script/LuaState.cpp +++ b/apps/openmw-mp/Script/LuaState.cpp @@ -80,6 +80,17 @@ LuaState::LuaState() configEnv = sol::environment(*lua, sol::create, lua->globals()); lua->set("Config", configEnv); // plain global environment for mod configuration + // Enable a special Sol error handler for Windows, because exceptions aren't caught properly + // in main.cpp for it +#if defined(SOL_SAFE_FUNCTIONS) && defined(WIN32) + lua->set_function("ErrorHandler", [](sol::object error_msg) { + LOG_MESSAGE_SIMPLE(Log::LOG_ERROR, ("Lua: " + error_msg.as()).c_str()); + }); + + sol::reference errHandler = (*lua)["ErrorHandler"]; + sol::protected_function::set_default_handler(errHandler); +#endif + sol::table Constants = lua->create_named_table("Constants"); Constants.set_function("getAttributeCount", []() {