diff --git a/Barotrauma/BarotraumaShared/Lua/DefaultLib/LibShared.lua b/Barotrauma/BarotraumaShared/Lua/DefaultLib/LibShared.lua index 1b440b092..60d534a13 100644 --- a/Barotrauma/BarotraumaShared/Lua/DefaultLib/LibShared.lua +++ b/Barotrauma/BarotraumaShared/Lua/DefaultLib/LibShared.lua @@ -4,9 +4,6 @@ local AddCallMetaTable = LuaSetup.LuaUserData.AddCallMetaTable local CreateStatic = LuaSetup.LuaUserData.CreateStatic local CreateEnum = LuaSetup.LuaUserData.CreateEnumTable -require("DefaultLib/Utils/Math") -require("DefaultLib/Utils/SteamApi") - defaultLib["SByte"] = CreateStatic("Barotrauma.LuaSByte", true) defaultLib["Byte"] = CreateStatic("Barotrauma.LuaByte", true) defaultLib["Int16"] = CreateStatic("Barotrauma.LuaInt16", true) diff --git a/Barotrauma/BarotraumaShared/Lua/DefaultLib/Utils/String.lua b/Barotrauma/BarotraumaShared/Lua/DefaultLib/Utils/String.lua new file mode 100644 index 000000000..3215602a2 --- /dev/null +++ b/Barotrauma/BarotraumaShared/Lua/DefaultLib/Utils/String.lua @@ -0,0 +1,7 @@ +string.startsWith = function(str, start) + return string.sub(str, 1, string.len(start)) == start +end + +string.endsWith = function(str, ending) + return ending == "" or string.sub(str, -string.len(ending)) == ending +end \ No newline at end of file diff --git a/Barotrauma/BarotraumaShared/Lua/DefaultLib/Utils/Util.lua b/Barotrauma/BarotraumaShared/Lua/DefaultLib/Utils/Util.lua new file mode 100644 index 000000000..897f2445c --- /dev/null +++ b/Barotrauma/BarotraumaShared/Lua/DefaultLib/Utils/Util.lua @@ -0,0 +1,38 @@ +Util = {} + +local itemDictionary = {} + +local function AddItem(item) + local id = item.Prefab.Identifier.Value + if itemDictionary[id] == nil then + itemDictionary[id] = {} + end + + table.insert(itemDictionary[id], item) +end + +Hook.Add("item.created", "luaSetup.util.itemDictionary", function (item) + AddItem(item) +end) + +Hook.Add("roundEnd", "luaSetup.util.itemDictionary", function (item) + itemDictionary = {} +end) + +for _, item in pairs(Item.ItemList) do + AddItem(item) +end + +Util.GetItemsById = function(id) + return itemDictionary[id] +end + +Util.FindClientCharacter = function(character) + if CLIENT and Game.IsSingleplayer then return nil end + + for _, client in pairs(Client.ClientList) do + if client.Character == character then + return client + end + end +end \ No newline at end of file diff --git a/Barotrauma/BarotraumaShared/Lua/LuaSetup.lua b/Barotrauma/BarotraumaShared/Lua/LuaSetup.lua index f29a0997f..22c17ea8d 100644 --- a/Barotrauma/BarotraumaShared/Lua/LuaSetup.lua +++ b/Barotrauma/BarotraumaShared/Lua/LuaSetup.lua @@ -61,6 +61,11 @@ if false then end end +require("DefaultLib/Utils/Math") +require("DefaultLib/Utils/String") +require("DefaultLib/Utils/Util") +require("DefaultLib/Utils/SteamApi") + LuaSetup = nil require("ModLoader") \ No newline at end of file diff --git a/README.md b/README.md index b6e4a37d0..1ababb972 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ -# LuaForBarotrauma -This is a Barotrauma modification that adds Lua modding support. +# LuaCsForBarotrauma +This is a Barotrauma modification that adds Lua and Cs modding support. ### Online Documentation: https://evilfactory.github.io/LuaCsForBarotrauma ### VS Code Documentation: https://gitee.com/zhurengong/btlua-docs ### Discord: https://discord.gg/f9zvNNuxu9 -### This project uses a forked version of Moonsharp: https://github.com/evilfactory/moonsharp +### This project uses a fork of Moonsharp: https://github.com/evilfactory/moonsharp # Barotrauma