From 3284769fef95d6eebd3e77b6371267ffb3212f99 Mon Sep 17 00:00:00 2001 From: David Cernat Date: Sat, 23 Sep 2017 13:52:51 +0300 Subject: [PATCH] [Server] Add getModFolder() script function and Config environment --- apps/openmw-mp/Script/LuaState.cpp | 7 +++++++ apps/openmw-mp/Script/LuaState.hpp | 1 + 2 files changed, 8 insertions(+) diff --git a/apps/openmw-mp/Script/LuaState.cpp b/apps/openmw-mp/Script/LuaState.cpp index 644fc258b..74dae7b36 100644 --- a/apps/openmw-mp/Script/LuaState.cpp +++ b/apps/openmw-mp/Script/LuaState.cpp @@ -75,6 +75,9 @@ LuaState::LuaState() coreTable["PROTOCOL"] = TES3MP_PROTO_VERSION; coreTable["loadedMods"] = coreTable.create(); + configEnv = sol::environment(*lua, sol::create, lua->globals()); + lua->set("Config", configEnv); // plain global environment for mod configuration + // errors in sol::functions catches only in debug build for better performance #ifdef SOL_SAFE_FUNCTIONS lua->set_function("ErrorHandler", [](sol::object error_msg) { @@ -236,6 +239,10 @@ sol::environment LuaState::openScript(std::string homePath, std::string modname) return homePath + "/data/" + modname + '/'; }); + lua->set_function("getModFolder", [homePath, modname]() -> const string{ + return homePath + "/mods/" + modname + '/'; + }); + lua->script_file(homePath + "/mods/" + modname + "/main.lua", env); sol::table modinfo = env["ModInfo"]; diff --git a/apps/openmw-mp/Script/LuaState.hpp b/apps/openmw-mp/Script/LuaState.hpp index 9b6321c1b..a35fbb005 100644 --- a/apps/openmw-mp/Script/LuaState.hpp +++ b/apps/openmw-mp/Script/LuaState.hpp @@ -40,6 +40,7 @@ private: private: std::shared_ptr lua; sol::environment dataEnv; + sol::environment configEnv; std::unique_ptr cmdCtrl; std::unique_ptr eventCtrl; std::unique_ptr timerCtrl;