diff --git a/Barotrauma/BarotraumaServer/ServerSource/DebugConsole.cs b/Barotrauma/BarotraumaServer/ServerSource/DebugConsole.cs index e1e4ec1a5..83d69cc3a 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/DebugConsole.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/DebugConsole.cs @@ -310,7 +310,7 @@ namespace Barotrauma return client; } - private static void AssignOnClientRequestExecute(string names, Action onClientRequestExecute) + public static void AssignOnClientRequestExecute(string names, Action onClientRequestExecute) { var matchingCommand = commands.Find(c => c.names.Intersect(names.Split('|')).Count() > 0); if (matchingCommand == null) diff --git a/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaClasses.cs b/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaClasses.cs index fb3e34419..b8d09bb4e 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaClasses.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaClasses.cs @@ -73,6 +73,8 @@ namespace Barotrauma { GameMain.Server.StartGame(); } + + public void AssignOnClientRequestExecute(string names, object onExecute) => DebugConsole.AssignOnClientRequestExecute(names, (Client a, Vector2 b, string[] c) => { env.CallFunction(onExecute, new object[] { a, b, c }); }); } diff --git a/Barotrauma/BarotraumaShared/SharedSource/DebugConsole.cs b/Barotrauma/BarotraumaShared/SharedSource/DebugConsole.cs index 372833abd..14e9e24e7 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/DebugConsole.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/DebugConsole.cs @@ -113,7 +113,7 @@ namespace Barotrauma private static readonly int messagesPerFile = 5000; public const string SavePath = "ConsoleLogs"; - private static void AssignOnExecute(string names, Action onExecute) + public static void AssignOnExecute(string names, Action onExecute) { var matchingCommand = commands.Find(c => c.names.Intersect(names.Split('|')).Count() > 0); if (matchingCommand == null) diff --git a/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaClasses.cs b/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaClasses.cs index edf0c560f..16a9e5fad 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaClasses.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaClasses.cs @@ -288,6 +288,20 @@ namespace Barotrauma } return enabledPackages; } + + public void AddCommand(string name, string help, object onExecute, object getValidArgs = null, bool isCheat = false) + { + DebugConsole.Commands.Add(new DebugConsole.Command(name, help, (string[] arg1) => { env.CallFunction(onExecute, new object[] { arg1 }); }, + () => { + var result = env.CallFunction(getValidArgs, new object[] { }); + if (result == null || !(result is string[][])) { return null; } + return (string[][])result; + + }, isCheat = false)); + } + + public void AssignOnExecute(string names, object onExecute) => DebugConsole.AssignOnExecute(names, (string[] a) => { env.CallFunction(onExecute, new object[] { a }); }); + } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaSetup.cs b/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaSetup.cs index 675b7beb5..0e58eecf1 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaSetup.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaSetup.cs @@ -408,7 +408,7 @@ namespace Barotrauma lua.Globals["DeliveryMethod"] = UserData.CreateStatic(); lua.Globals["ClientPacketHeader"] = UserData.CreateStatic(); lua.Globals["ServerPacketHeader"] = UserData.CreateStatic(); - + #if SERVER #elif CLIENT