bunch of fixes that include fixing lua networking, script loading and client side lua installation

This commit is contained in:
Evil Factory
2022-04-09 21:44:18 -03:00
parent 454a0a22d1
commit dc7a7bd74d
7 changed files with 92 additions and 28 deletions
@@ -690,6 +690,8 @@ namespace Barotrauma.Networking
{ {
ServerPacketHeader header = (ServerPacketHeader)inc.ReadByte(); ServerPacketHeader header = (ServerPacketHeader)inc.ReadByte();
GameMain.Lua.networking.NetMessageReceived(inc, header);
if (roundInitStatus != RoundInitStatus.Started && if (roundInitStatus != RoundInitStatus.Started &&
roundInitStatus != RoundInitStatus.NotStarted && roundInitStatus != RoundInitStatus.NotStarted &&
roundInitStatus != RoundInitStatus.Error && roundInitStatus != RoundInitStatus.Error &&
@@ -1277,24 +1277,25 @@ namespace Barotrauma
{ {
"Barotrauma.dll", "Barotrauma.deps.json", "Barotrauma.dll", "Barotrauma.deps.json",
"0harmony.dll", "Mono.Cecil.dll", "0harmony.dll", "Mono.Cecil.dll",
"Mono.Cecil.Mdb.dll", "Mono.Cecil.Pdb", "Mono.Cecil.Mdb.dll", "Mono.Cecil.Pdb.dll",
"Mono.Cecil.Rocks", "MonoMod.Common.dll", "Mono.Cecil.Rocks.dll", "MonoMod.Common.dll",
"MoonSharp.Interpreter.dll", "MoonSharp.Interpreter.dll",
"mscordaccore_amd64_amd64_4.700.22.11601", "mscordaccore_amd64_amd64_4.700.22.11601.dll",
}; };
File.Move("Barotrauma.dll", "Barotrauma.dll.old", true); File.Move("Barotrauma.dll", "Barotrauma.dll.old", true);
File.Move("Barotrauma.deps.json", "Barotrauma.deps.json.old", true); File.Move("Barotrauma.deps.json", "Barotrauma.deps.json.old", true);
foreach (string file in filesToMove) foreach (string file in filesToMove)
{ {
File.Move(Path.Combine(path, "Binary", file), file, true); File.Copy(Path.Combine(path, "Binary", file), file, true);
} }
} }
catch (Exception e) catch (Exception e)
{ {
GameMain.Lua.PrintError("You seem to already have Client Side Lua installed, if you are trying to reinstall, make sure uninstall it first (mainmenu button located top left)."); // GameMain.Lua.PrintError("You seem to already have Client Side Lua installed, if you are trying to reinstall, make sure uninstall it first (mainmenu button located top left).");
GameMain.Lua.HandleLuaException(e);
return; return;
} }
+11 -1
View File
@@ -8,7 +8,13 @@ local CreateStatic = function (typeName, addCallMethod)
if addCallMethod then if addCallMethod then
debug.setmetatable(staticUserdata, { debug.setmetatable(staticUserdata, {
__call = function(obj, ...) __call = function(obj, ...)
return staticUserdata.__new(...) local success, result = pcall(staticUserdata.__new, ...)
if not success then
error(result, 2)
end
return result
end end
}) })
end end
@@ -50,13 +56,16 @@ defaultLib["InputType"] = CreateStatic("Barotrauma.InputType")
defaultLib["ContentPackageManager"] = CreateStatic("Barotrauma.ContentPackageManager") defaultLib["ContentPackageManager"] = CreateStatic("Barotrauma.ContentPackageManager")
defaultLib["GameSettings"] = CreateStatic("Barotrauma.GameSettings") defaultLib["GameSettings"] = CreateStatic("Barotrauma.GameSettings")
defaultLib["RichString"] = CreateStatic("Barotrauma.RichString", true)
defaultLib["Identifier"] = CreateStatic("Barotrauma.Identifier", true) defaultLib["Identifier"] = CreateStatic("Barotrauma.Identifier", true)
defaultLib["ContentPackage"] = CreateStatic("Barotrauma.ContentPackage", true) defaultLib["ContentPackage"] = CreateStatic("Barotrauma.ContentPackage", true)
defaultLib["WayPoint"] = CreateStatic("Barotrauma.WayPoint", true) defaultLib["WayPoint"] = CreateStatic("Barotrauma.WayPoint", true)
defaultLib["Submarine"] = CreateStatic("Barotrauma.Submarine", true) defaultLib["Submarine"] = CreateStatic("Barotrauma.Submarine", true)
defaultLib["Client"] = CreateStatic("Barotrauma.Networking.Client", true) defaultLib["Client"] = CreateStatic("Barotrauma.Networking.Client", true)
defaultLib["Character"] = CreateStatic("Barotrauma.Character") defaultLib["Character"] = CreateStatic("Barotrauma.Character")
defaultLib["CharacterPrefab"] = CreateStatic("Barotrauma.CharacterPrefab")
defaultLib["CharacterInfo"] = CreateStatic("Barotrauma.CharacterInfo", true) defaultLib["CharacterInfo"] = CreateStatic("Barotrauma.CharacterInfo", true)
defaultLib["CharacterInfoPrefab"] = CreateStatic("Barotrauma.CharacterInfoPrefab")
defaultLib["Item"] = CreateStatic("Barotrauma.Item", true) defaultLib["Item"] = CreateStatic("Barotrauma.Item", true)
defaultLib["ItemPrefab"] = CreateStatic("Barotrauma.ItemPrefab", true) defaultLib["ItemPrefab"] = CreateStatic("Barotrauma.ItemPrefab", true)
defaultLib["FactionPrefab"] = CreateStatic("Barotrauma.FactionPrefab", true) defaultLib["FactionPrefab"] = CreateStatic("Barotrauma.FactionPrefab", true)
@@ -131,6 +140,7 @@ elseif CLIENT then
defaultLib["GUI"] = { defaultLib["GUI"] = {
GUI = CreateStatic("Barotrauma.GUI", true), GUI = CreateStatic("Barotrauma.GUI", true),
GUIStyle = CreateStatic("Barotrauma.GUIStyle", true),
RectTransform = CreateStatic("Barotrauma.RectTransform", true), RectTransform = CreateStatic("Barotrauma.RectTransform", true),
LayoutGroup = CreateStatic("Barotrauma.GUILayoutGroup", true), LayoutGroup = CreateStatic("Barotrauma.GUILayoutGroup", true),
Button = CreateStatic("Barotrauma.GUIButton", true), Button = CreateStatic("Barotrauma.GUIButton", true),
@@ -25,11 +25,24 @@ RegisterBarotrauma("LuaFloat")
RegisterBarotrauma("Level+InterestingPosition") RegisterBarotrauma("Level+InterestingPosition")
RegisterBarotrauma("Identifier") RegisterBarotrauma("Identifier")
RegisterBarotrauma("LocalizedString")
RegisterBarotrauma("TagLString")
RegisterBarotrauma("RichString")
RegisterBarotrauma("Job") RegisterBarotrauma("Job")
RegisterBarotrauma("JobPrefab") RegisterBarotrauma("JobPrefab")
RegisterBarotrauma("Level") RegisterBarotrauma("Level")
RegisterBarotrauma("WayPoint") RegisterBarotrauma("WayPoint")
RegisterBarotrauma("Character") RegisterBarotrauma("Character")
RegisterBarotrauma("CharacterPrefab")
RegisterBarotrauma("CharacterInfo")
RegisterBarotrauma("CharacterInfoPrefab")
RegisterBarotrauma("CharacterHealth")
RegisterBarotrauma("CharacterHealth+LimbHealth")
RegisterBarotrauma("CharacterInventory")
RegisterBarotrauma("Item") RegisterBarotrauma("Item")
RegisterBarotrauma("Submarine") RegisterBarotrauma("Submarine")
RegisterBarotrauma("Networking.Client") RegisterBarotrauma("Networking.Client")
@@ -38,12 +51,10 @@ RegisterBarotrauma("Networking.LidgrenConnection")
RegisterBarotrauma("Networking.SteamP2PConnection") RegisterBarotrauma("Networking.SteamP2PConnection")
RegisterBarotrauma("AfflictionPrefab") RegisterBarotrauma("AfflictionPrefab")
RegisterBarotrauma("Affliction") RegisterBarotrauma("Affliction")
RegisterBarotrauma("CharacterHealth")
RegisterBarotrauma("AnimController") RegisterBarotrauma("AnimController")
RegisterBarotrauma("Limb") RegisterBarotrauma("Limb")
RegisterBarotrauma("Ragdoll") RegisterBarotrauma("Ragdoll")
RegisterBarotrauma("Networking.ChatMessage") RegisterBarotrauma("Networking.ChatMessage")
RegisterBarotrauma("CharacterHealth+LimbHealth")
RegisterBarotrauma("AttackResult") RegisterBarotrauma("AttackResult")
RegisterBarotrauma("Attack") RegisterBarotrauma("Attack")
RegisterBarotrauma("Entity") RegisterBarotrauma("Entity")
@@ -73,7 +84,6 @@ RegisterBarotrauma("Networking.ServerSettings")
RegisterBarotrauma("Networking.ServerSettings+SavedClientPermission") RegisterBarotrauma("Networking.ServerSettings+SavedClientPermission")
RegisterBarotrauma("Inventory") RegisterBarotrauma("Inventory")
RegisterBarotrauma("ItemInventory") RegisterBarotrauma("ItemInventory")
RegisterBarotrauma("CharacterInventory")
RegisterBarotrauma("Inventory+ItemSlot") RegisterBarotrauma("Inventory+ItemSlot")
RegisterBarotrauma("FireSource") RegisterBarotrauma("FireSource")
@@ -199,7 +209,6 @@ RegisterBarotrauma("Pair`2[[Barotrauma.JobPrefab],[System.Int32]]")
RegisterBarotrauma("Range`1[System.Single]") RegisterBarotrauma("Range`1[System.Single]")
RegisterBarotrauma("CharacterInfo")
RegisterBarotrauma("Items.Components.Signal") RegisterBarotrauma("Items.Components.Signal")
RegisterBarotrauma("SubmarineInfo") RegisterBarotrauma("SubmarineInfo")
@@ -241,6 +250,7 @@ Register("Microsoft.Xna.Framework.Input.KeyboardState")
RegisterBarotrauma("Sprite") RegisterBarotrauma("Sprite")
RegisterBarotrauma("GUI") RegisterBarotrauma("GUI")
RegisterBarotrauma("GUIStyle")
RegisterBarotrauma("GUILayoutGroup") RegisterBarotrauma("GUILayoutGroup")
RegisterBarotrauma("GUITextBox") RegisterBarotrauma("GUITextBox")
RegisterBarotrauma("GUITextBlock") RegisterBarotrauma("GUITextBlock")
+57 -16
View File
@@ -23,46 +23,87 @@ require("DefaultHook")
-- Execute Mods -- Execute Mods
local allPackages = ContentPackageManager.AllPackages
local localPackages = ContentPackageManager.LocalPackages
local enabledPackages = ContentPackageManager.EnabledPackages.All local enabledPackages = ContentPackageManager.EnabledPackages.All
local function endsWith(str, suffix) local function endsWith(str, suffix)
return str:sub(-string.len(suffix)) == suffix return str:sub(-string.len(suffix)) == suffix
end end
local function executeProtected(s) local function getFileName(file)
print(s) return file:match("^.+/(.+)$")
dofile(s)
end end
local function runFolder(folder) local function getPath(str)
local sep = "/"
return str:match("(.*"..sep..")")
end
local function executeProtected(s, folder)
loadfile(s)(folder)
end
local function runFolder(folder, rootFolder, package)
local search = File.DirSearch(folder) local search = File.DirSearch(folder)
for i = 1, #search, 1 do for i = 1, #search, 1 do
local s = search[i]:gsub("\\", "/") local s = search[i]:gsub("\\", "/")
if endsWith(s, ".lua") then if endsWith(s, ".lua") then
executeProtected(s) executeProtected(s, rootFolder)
print(string.format("%s: Executing %s", package.Name, getFileName(s)))
end end
end end
end end
if SERVER then
for package in enabledPackages do
if package then
local d = package.Path:gsub("\\", "/")
d = d:gsub("/filelist.xml", "")
table.insert(modulePaths, (d .. "/Lua/?.lua")) for package in enabledPackages do
if package then
local d = package.Path:gsub("\\", "/")
d = d:gsub("/filelist.xml", "")
if File.DirectoryExists(d .. "/Lua/Autorun") then table.insert(modulePaths, (d .. "/Lua/?.lua"))
runFolder(d .. "/Lua/Autorun")
end if File.DirectoryExists(d .. "/Lua/Autorun") then
runFolder(d .. "/Lua/Autorun", d, package)
end end
end end
end end
-- we don't want to execute workshop ForcedAutorun if we have a local Package
local executedLocalPackages = {}
for package in localPackages do
if package then
local d = package.Path:gsub("\\", "/")
d = d:gsub("/filelist.xml", "")
table.insert(modulePaths, (d .. "/Lua/?.lua"))
if File.DirectoryExists(d .. "/Lua/ForcedAutorun") then
runFolder(d .. "/Lua/ForcedAutorun", d, package)
executedLocalPackages[package.Name] = true
end
end
end
for package in allPackages do
if package and executedLocalPackages[package.Name] == nil then
local d = package.Path:gsub("\\", "/")
d = d:gsub("/filelist.xml", "")
table.insert(modulePaths, (d .. "/Lua/?.lua"))
if File.DirectoryExists(d .. "/Lua/ForcedAutorun") then
runFolder(d .. "/Lua/ForcedAutorun", d, package)
end
end
end
setmodulepaths(modulePaths) setmodulepaths(modulePaths)
Hook.Add("stop", "luaSetup.stop", function () Hook.Add("stop", "luaSetup.stop", function ()
@@ -85,8 +85,8 @@ namespace Barotrauma.Networking
EVENTACTION, EVENTACTION,
CREW, //anything related to managing bots in multiplayer CREW, //anything related to managing bots in multiplayer
MEDICAL, //medical clinic MEDICAL, //medical clinic
READY_CHECK, //start, end and update a ready check
MONEY, MONEY,
READY_CHECK, //start, end and update a ready check
LUA_NET_MESSAGE LUA_NET_MESSAGE
} }
Binary file not shown.