diff --git a/Barotrauma/BarotraumaShared/LocalMods/LuaCsForBarotrauma/Lua/LuaSetup.lua b/Barotrauma/BarotraumaShared/LocalMods/LuaCsForBarotrauma/Lua/LuaSetup.lua index d8c531649..8b83b4fd5 100644 --- a/Barotrauma/BarotraumaShared/LocalMods/LuaCsForBarotrauma/Lua/LuaSetup.lua +++ b/Barotrauma/BarotraumaShared/LocalMods/LuaCsForBarotrauma/Lua/LuaSetup.lua @@ -2,10 +2,6 @@ LuaSetup = {} local path = ... -package.path = {path .. "/Lua/?.lua"} - -setmodulepaths(package.path) - local function AddTableToGlobal(tbl) for k, v in pairs(tbl) do _G[k] = v @@ -13,22 +9,22 @@ local function AddTableToGlobal(tbl) end if SERVER then - AddTableToGlobal(require("DefaultLib/LibServer")) + AddTableToGlobal(dofile(path .. "/Lua/DefaultLib/LibServer.lua")) else - AddTableToGlobal(require("DefaultLib/LibClient")) + AddTableToGlobal(dofile(path .. "/Lua/DefaultLib/LibClient.lua")) end -AddTableToGlobal(require("DefaultLib/LibShared")) +AddTableToGlobal(dofile(path .. "/Lua/DefaultLib/LibShared.lua")) -AddTableToGlobal(require("CompatibilityLib")) +AddTableToGlobal(dofile(path .. "/Lua/CompatibilityLib.lua")) -require("DefaultHook") +dofile(path .. "/Lua/DefaultHook.lua") Descriptors = LuaSetup.LuaUserData -require("DefaultLib/Utils/Math") -require("DefaultLib/Utils/String") -require("DefaultLib/Utils/Util") -require("DefaultLib/Utils/SteamApi") +dofile(path .. "/Lua/DefaultLib/Utils/Math.lua") +dofile(path .. "/Lua/DefaultLib/Utils/String.lua") +dofile(path .. "/Lua/DefaultLib/Utils/Util.lua") +dofile(path .. "/Lua/DefaultLib/Utils/SteamApi.lua") LuaSetup = nil \ No newline at end of file diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaScriptManagementService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaScriptManagementService.cs index cf2f53eb1..ed67f6525 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaScriptManagementService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaScriptManagementService.cs @@ -268,10 +268,21 @@ class LuaScriptManagementService : ILuaScriptManagementService, ILuaDataService SetupEnvironment(enableSandbox); + if (_script == null) { return FluentResults.Result.Ok(); } // never happens + var result = FluentResults.Result.Ok(); _isRunning = true; + var packages = executionOrder.Select(r => r.OwnerPackage) + .Distinct() + .Select(p => $"{p.Dir}/Lua/?.lua") + .ToArray(); + + ((LuaScriptLoader)_luaScriptLoader).ModulePaths = packages; + Table package = (Table)_script.Globals["package"]; + package.Set("path", DynValue.FromObject(_script, packages)); + foreach (ILuaScriptResourceInfo resource in executionOrder.Where(l => l.IsAutorun)) { foreach (ContentPath filePath in resource.FilePaths) @@ -279,7 +290,7 @@ class LuaScriptManagementService : ILuaScriptManagementService, ILuaDataService try { _loggerService.LogMessage($"Run {filePath.Value}"); - _script?.Call(_script.LoadFile(filePath.FullPath), Path.GetDirectoryName(resource.OwnerPackage.Path)); + _script.Call(_script.LoadFile(filePath.FullPath), resource.OwnerPackage.Dir); } catch(Exception e) { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaScriptLoader.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaScriptLoader.cs index 7c5b0445e..e8a3ffc75 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaScriptLoader.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaScriptLoader.cs @@ -77,7 +77,7 @@ namespace Barotrauma.LuaCs return false; } - return true; + return result.Value; } private void UnsafeLogErrors(string message, FluentResults.Result result = null)