From 44f106fd0cf31b03e29abe5d9e2713352337be29 Mon Sep 17 00:00:00 2001 From: Sardelka Date: Mon, 4 Jul 2022 09:54:43 +0800 Subject: [PATCH] Add ServerBlip.Handle handle --- RageCoop.Client/Networking/Receive.cs | 32 +++++++++++++++------------ RageCoop.Server/ServerObject.cs | 14 +++++++++++- 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/RageCoop.Client/Networking/Receive.cs b/RageCoop.Client/Networking/Receive.cs index 16e8fc6..9828df9 100644 --- a/RageCoop.Client/Networking/Receive.cs +++ b/RageCoop.Client/Networking/Receive.cs @@ -10,6 +10,23 @@ namespace RageCoop.Client { internal static partial class Networking { + private static Func _resolveHandle = (t, reader) => + { + switch (t) + { + case 50: + return EntityPool.ServerProps[reader.ReadInt()].MainProp?.Handle; + case 51: + return EntityPool.GetPedByID(reader.ReadInt())?.MainPed?.Handle; + case 52: + return EntityPool.GetVehicleByID(reader.ReadInt())?.MainVehicle?.Handle; + case 60: + return EntityPool.ServerBlips[reader.ReadInt()].Handle; + default: + throw new ArgumentException("Cannot resolve server side argument: "+t); + + } + }; private static AutoResetEvent PublicKeyReceived=new AutoResetEvent(false); private static Dictionary> PendingResponses = new Dictionary>(); @@ -248,20 +265,7 @@ namespace RageCoop.Client break; case PacketType.CustomEvent: { - Packets.CustomEvent packet = new Packets.CustomEvent((t, reader) => - { - switch (t) - { - case 50: - return EntityPool.ServerProps[reader.ReadInt()].MainProp?.Handle; - case 51: - return EntityPool.GetPedByID(reader.ReadInt())?.MainPed?.Handle; - case 52: - return EntityPool.GetVehicleByID(reader.ReadInt())?.MainVehicle?.Handle; - default: - throw new ArgumentException("Cannot resolve server side argument: "+t); - } - }); + Packets.CustomEvent packet = new Packets.CustomEvent(_resolveHandle); packet.Unpack(data); Scripting.API.Events.InvokeCustomEventReceived(packet); } diff --git a/RageCoop.Server/ServerObject.cs b/RageCoop.Server/ServerObject.cs index 6a12ada..10e6840 100644 --- a/RageCoop.Server/ServerObject.cs +++ b/RageCoop.Server/ServerObject.cs @@ -126,7 +126,6 @@ namespace RageCoop.Server internal ServerProp(Server server) : base(server) { } - /// /// Delete this prop /// @@ -219,6 +218,18 @@ namespace RageCoop.Server Server = server; } + + /// + /// Pass this as an argument in CustomEvent or NativeCall to convert this object to handle at client side. + /// + public Tuple Handle + { + get + { + return new(60, BitConverter.GetBytes(ID)); + } + } + /// /// Network ID (not handle!) /// @@ -292,6 +303,7 @@ namespace RageCoop.Server Server.Entities.RemoveServerBlip(ID); } + private bool _bouncing=false; internal void Update() {