From 37edef425c5d4722f3a8245b656dab567cac3098 Mon Sep 17 00:00:00 2001 From: Sardelka Date: Tue, 21 Jun 2022 19:06:50 +0800 Subject: [PATCH] Add OnPlayerUpdate --- RageCoop.Server/Scripting/API.cs | 11 +++++++++ RageCoop.Server/Server.cs | 40 +++++++------------------------- 2 files changed, 20 insertions(+), 31 deletions(-) diff --git a/RageCoop.Server/Scripting/API.cs b/RageCoop.Server/Scripting/API.cs index c2ee433..1dcab1e 100644 --- a/RageCoop.Server/Scripting/API.cs +++ b/RageCoop.Server/Scripting/API.cs @@ -26,7 +26,14 @@ namespace RageCoop.Server.Scripting public static event EventHandler OnPlayerHandshake; public static event PlayerConnect OnPlayerConnected; public static event PlayerDisconnect OnPlayerDisconnected; + /// + /// Will be invoked before registered handlers + /// public static event EventHandler OnCommandReceived; + /// + /// Invoked everytime a player's main ped has been updated + /// + public static event EventHandler OnPlayerUpdate; /// /// This will be invoked when a CustomEvent is received from one client. @@ -71,6 +78,10 @@ namespace RageCoop.Server.Scripting OnCommandReceived?.Invoke(null,args); return args.Cancel; } + internal static void InvokePlayerUpdate(Client client) + { + OnPlayerUpdate.Invoke(null,client); + } #endregion } diff --git a/RageCoop.Server/Server.cs b/RageCoop.Server/Server.cs index 796bd63..c1ff9fe 100644 --- a/RageCoop.Server/Server.cs +++ b/RageCoop.Server/Server.cs @@ -255,7 +255,7 @@ namespace RageCoop.Server Packets.PedStateSync packet = new(); packet.Unpack(data); - PedStateSync(packet, message.SenderConnection.RemoteUniqueIdentifier); + PedStateSync(packet, sender); break; } case PacketTypes.VehicleStateSync: @@ -263,7 +263,7 @@ namespace RageCoop.Server Packets.VehicleStateSync packet = new(); packet.Unpack(data); - VehicleStateSync(packet, message.SenderConnection.RemoteUniqueIdentifier); + VehicleStateSync(packet, sender); break; } @@ -273,7 +273,7 @@ namespace RageCoop.Server Packets.PedSync packet = new(); packet.Unpack(data); - PedSync(packet, message.SenderConnection.RemoteUniqueIdentifier); + PedSync(packet, sender); } break; @@ -282,7 +282,7 @@ namespace RageCoop.Server Packets.VehicleSync packet = new(); packet.Unpack(data); - VehicleSync(packet, message.SenderConnection.RemoteUniqueIdentifier); + VehicleSync(packet, sender); } break; @@ -599,16 +599,10 @@ namespace RageCoop.Server } #region SyncEntities - private static void PedStateSync(Packets.PedStateSync packet,long ClientID) + private static void PedStateSync(Packets.PedStateSync packet, Client client) { - Client client = Util.GetClientByNetID(ClientID); - if (client == null) - { - return; - } - foreach (var c in Clients.Values) @@ -619,14 +613,8 @@ namespace RageCoop.Server MainNetServer.SendMessage(outgoingMessage, c.Connection, NetDeliveryMethod.UnreliableSequenced, (byte)ConnectionChannel.PedSync); } } - private static void VehicleStateSync(Packets.VehicleStateSync packet, long ClientID) + private static void VehicleStateSync(Packets.VehicleStateSync packet, Client client) { - Client client = Util.GetClientByNetID(ClientID); - if (client == null) - { - return; - } - // Save the new data if (packet.Passengers.ContainsValue(client.ID)) { @@ -641,15 +629,10 @@ namespace RageCoop.Server MainNetServer.SendMessage(outgoingMessage, c.Connection, NetDeliveryMethod.UnreliableSequenced, (byte)ConnectionChannel.PedSync); } } - private static void PedSync(Packets.PedSync packet, long ClientID) + private static void PedSync(Packets.PedSync packet, Client client) { - Client client = Util.GetClientByNetID(ClientID); - if (client == null) - { - return; - } bool isPlayer = packet.ID==client.ID; - if (isPlayer) { client.Player.Position=packet.Position; } + if (isPlayer) { client.Player.Position=packet.Position; API.Events.InvokePlayerUpdate(client); } foreach (var c in Clients.Values) { @@ -675,13 +658,8 @@ namespace RageCoop.Server MainNetServer.SendMessage(outgoingMessage,c.Connection, NetDeliveryMethod.UnreliableSequenced, (byte)ConnectionChannel.PedSync); } } - private static void VehicleSync(Packets.VehicleSync packet, long ClientID) + private static void VehicleSync(Packets.VehicleSync packet, Client client) { - Client client = Util.GetClientByNetID(ClientID); - if (client == null) - { - return; - } bool isPlayer = packet.ID==client.Player.VehicleID; foreach (var c in Clients.Values) {