diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/IEvents.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/IEvents.cs index c12c5669f..d7fa5761b 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/IEvents.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/IEvents.cs @@ -7,6 +7,7 @@ using MoonSharp.Interpreter; using Steamworks.Ugc; using System; using System.Collections.Generic; +using System.Linq; using System.Reflection; namespace Barotrauma.LuaCs.Events; @@ -917,7 +918,28 @@ interface IEventInventoryItemSwap : IEvent #if SERVER public interface IEventClientRawNetMessageReceived : IEvent { - void OnReceivedClientNetMessage(IReadMessage netMessage, ClientPacketHeader serverPacketHeader, NetworkConnection sender); + void OnReceivedClientNetMessage(IReadMessage netMessage, ClientPacketHeader clientPacketHeader, NetworkConnection sender); + + static IEventClientRawNetMessageReceived IEvent.GetLuaRunner(IDictionary luaFunc) + => new LuaWrapper(luaFunc); + + public sealed class LuaWrapper : LuaWrapperBase, IEventClientRawNetMessageReceived + { + public LuaWrapper(IDictionary luaFuncs) : base(luaFuncs) + { + } + + public void OnReceivedClientNetMessage(IReadMessage netMessage, ClientPacketHeader clientPacketHeader, NetworkConnection sender) + { + if (GameMain.Server == null) { return; } + + Client client = GameMain.Server.ConnectedClients.FirstOrDefault(c => c.Connection == sender); + + if (client == null) { return; } + + LuaFuncs[nameof(OnReceivedClientNetMessage)](netMessage, clientPacketHeader, client); + } + } } /// @@ -1007,6 +1029,21 @@ interface IEventJobsAssigned : IEvent public interface IEventServerRawNetMessageReceived : IEvent { void OnReceivedServerNetMessage(IReadMessage netMessage, ServerPacketHeader serverPacketHeader); + + static IEventServerRawNetMessageReceived IEvent.GetLuaRunner(IDictionary luaFunc) + => new LuaWrapper(luaFunc); + + public sealed class LuaWrapper : LuaWrapperBase, IEventServerRawNetMessageReceived + { + public LuaWrapper(IDictionary luaFuncs) : base(luaFuncs) + { + } + + public void OnReceivedServerNetMessage(IReadMessage netMessage, ServerPacketHeader serverPacketHeader) + { + LuaFuncs[nameof(OnReceivedServerNetMessage)](netMessage, serverPacketHeader); + } + } } /// diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaScriptManagementService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaScriptManagementService.cs index 5bb2d4bc8..b2d3c5db2 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaScriptManagementService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaScriptManagementService.cs @@ -243,6 +243,10 @@ class LuaScriptManagementService : ILuaScriptManagementService, ILuaDataService _eventService.RegisterLuaEventAlias("client.connected", nameof(IEventClientConnected.OnClientConnected)); _eventService.RegisterLuaEventAlias("client.disconnected", nameof(IEventClientDisconnected.OnClientDisconnected)); _eventService.RegisterLuaEventAlias("jobsAssigned", nameof(IEventJobsAssigned.OnJobsAssigned)); + + _eventService.RegisterLuaEventAlias("netMessageReceived", nameof(IEventClientRawNetMessageReceived.OnReceivedClientNetMessage)); +#elif CLIENT + _eventService.RegisterLuaEventAlias("netMessageReceived", nameof(IEventServerRawNetMessageReceived.OnReceivedServerNetMessage)); #endif }