Skip to content

Commit ea700be

Browse files
committed
make rpc events shared
1 parent b3be5c9 commit ea700be

File tree

28 files changed

+514
-322
lines changed

28 files changed

+514
-322
lines changed

api/AltV.Net.CApi/Events/ClientEvents.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,8 @@ public delegate void PlayerBulletHitModuleDelegate(uint weapon, IntPtr victimPoi
8686

8787
public delegate void VoiceConnectionModuleDelegate(VoiceConnectionState state);
8888

89-
public delegate void ServerScriptRPCAnswerModuleDelegate(ushort answerId, IntPtr answer,
89+
public delegate void ScriptRPCModuleDelegate(IntPtr eventPointer, string name, IntPtr args, ulong size, ushort answerId);
90+
91+
public delegate void ScriptRPCAnswerModuleDelegate(ushort answerId, IntPtr answer,
9092
string answerError);
9193
}

api/AltV.Net.CApi/Libraries/ClientLibrary.cs

Lines changed: 21 additions & 11 deletions
Large diffs are not rendered by default.

api/AltV.Net.CApi/Libraries/ServerLibrary.cs

Lines changed: 53 additions & 63 deletions
Large diffs are not rendered by default.

api/AltV.Net.CApi/Libraries/SharedLibrary.cs

Lines changed: 47 additions & 32 deletions
Large diffs are not rendered by default.

api/AltV.Net.CApi/Native/AltV.Resource.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,9 @@ internal delegate void PedHealDelegate(IntPtr pedPointer, ushort oldHealth, usho
137137
internal delegate void PlayerStartTalkingDelegate(IntPtr playerPointer);
138138

139139
internal delegate void PlayerStopTalkingDelegate(IntPtr playerPointer);
140-
internal delegate void ClientScriptRPCDelegate(IntPtr eventPointer, IntPtr targetPointer, string name, IntPtr args, ulong size, ushort answerId);
140+
internal delegate void ScriptRPCDelegate(IntPtr eventPointer, IntPtr targetPointer, string name, IntPtr args, ulong size, ushort answerId);
141+
internal delegate void ScriptRPCAnswerDelegate(IntPtr targetPointer, ushort answerId, IntPtr answer,
142+
string answerError);
141143

142144

143145
[DllImport(DllName, CallingConvention = NativeCallingConvention)]
@@ -361,8 +363,12 @@ internal static extern void CSharpResourceImpl_SetPlayerStopTalkingDelegate(IntP
361363
PlayerStopTalkingDelegate @delegate);
362364

363365
[DllImport(DllName, CallingConvention = NativeCallingConvention)]
364-
internal static extern void CSharpResourceImpl_SetClientScriptRPCDelegate(IntPtr resource,
365-
ClientScriptRPCDelegate @delegate);
366+
internal static extern void CSharpResourceImpl_SetScriptRPCDelegate(IntPtr resource,
367+
ScriptRPCDelegate @delegate);
368+
369+
[DllImport(DllName, CallingConvention = NativeCallingConvention)]
370+
internal static extern void CSharpResourceImpl_SetScriptRPCAnswerDelegate(IntPtr resource,
371+
ScriptRPCAnswerDelegate @delegate);
366372
}
367373
}
368374
}

api/AltV.Net.Client/Alt.Events.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -246,10 +246,16 @@ public static event VoiceConnectionDelegate OnVoiceConnection
246246
remove => CoreImpl.VoiceConnectionEventHandler.Remove(value);
247247
}
248248

249-
public static event ServerScriptRPCAnswerDelegate OnServerScriptRPCAnswer
249+
public static event ScriptRPCAnswerDelegate OnScriptRPCAnswer
250250
{
251-
add => CoreImpl.ServerScriptRPCAnswerHandler.Add(value);
252-
remove => CoreImpl.ServerScriptRPCAnswerHandler.Remove(value);
251+
add => CoreImpl.ScriptRPCAnswerHandler.Add(value);
252+
remove => CoreImpl.ScriptRPCAnswerHandler.Remove(value);
253+
}
254+
255+
public static event ScriptRPCDelegate OnScriptRPC
256+
{
257+
add => CoreImpl.ScriptRPCHandler.Add(value);
258+
remove => CoreImpl.ScriptRPCHandler.Remove(value);
253259
}
254260

255261
public static void OnServer(string eventName, Function function) => CoreImpl.AddServerEventListener(eventName, function);

api/AltV.Net.Client/Alt.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,8 @@ public static bool GetBaseObjectById(BaseObjectType type, uint id, [MaybeNullWhe
7272
public static void EmitServerUnreliable(string eventName, params object[] args) => Core.TriggerServerEventUnreliable(eventName, args);
7373
public static void EmitClient(string eventName, params object[] args) => Core.TriggerLocalEvent(eventName, args);
7474

75-
public static ushort EmitRPCEvent(string name, params object[] args) => Core.TriggerServerRPCEvent(name, args);
75+
public static ushort EmitRPC(string name, params object[] args) => Core.TriggerServerRPCEvent(name, args);
76+
public static void EmitRPCAnswer(ushort answerId, object answer, string error) => Core.TriggerServerRPCAnswer(answerId, answer, error);
7677

7778
public static bool HasResource(string name) => Core.HasResource(name);
7879
public static INativeResource GetResource(string name) => Core.GetResource(name);

api/AltV.Net.Client/Core.Events.cs

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using AltV.Net.Data;
99
using AltV.Net.Elements.Args;
1010
using AltV.Net.Elements.Entities;
11+
using AltV.Net.Shared.Elements.Entities;
1112
using AltV.Net.Shared.Events;
1213

1314
namespace AltV.Net.Client
@@ -155,8 +156,11 @@ public virtual IEnumerable<string> GetRegisteredServerEvents()
155156
internal readonly IEventHandler<VoiceConnectionDelegate> VoiceConnectionEventHandler =
156157
new HashSetEventHandler<VoiceConnectionDelegate>(EventType.VOICE_CONNECTION_EVENT);
157158

158-
internal readonly IEventHandler<ServerScriptRPCAnswerDelegate> ServerScriptRPCAnswerHandler =
159-
new HashSetEventHandler<ServerScriptRPCAnswerDelegate>(EventType.SERVER_SCRIPT_RPC_ANSWER_EVENT);
159+
internal readonly IEventHandler<ScriptRPCDelegate> ScriptRPCHandler =
160+
new HashSetEventHandler<ScriptRPCDelegate>(EventType.SCRIPT_RPC_EVENT);
161+
162+
internal readonly IEventHandler<ScriptRPCAnswerDelegate> ScriptRPCAnswerHandler =
163+
new HashSetEventHandler<ScriptRPCAnswerDelegate>(EventType.SCRIPT_RPC_ANSWER_EVENT);
160164

161165

162166
public void OnServerEvent(string name, IntPtr[] args)
@@ -693,10 +697,17 @@ public void OnAudioEvent(IntPtr audioPtr, string name, IntPtr[] args)
693697
}
694698
}
695699

696-
public void OnServerScriptRPCAnswer(ushort answerid, IntPtr answer, string answerError)
700+
public void OnScriptRPCAnswer(ushort answerid, IntPtr answer, string answerError)
697701
{
698702
var mValue = new MValueConst(this, answer);
699-
ServerScriptRPCAnswerHandler.GetEvents().ForEachCatching(fn => fn(answerid, mValue, answerError), $"event {nameof(OnServerScriptRPCAnswer)}");
703+
ScriptRPCAnswerHandler.GetEvents().ForEachCatching(fn => fn(answerid, mValue, answerError), $"event {nameof(OnScriptRPCAnswer)}");
704+
}
705+
706+
public void OnScriptRPC(IntPtr eventpointer, string name, IntPtr[] args, ushort answerid)
707+
{
708+
var mValues = MValueConst.CreateFrom(this, args);
709+
var clientScriptRPCEvent = new ScriptRpcEvent(this, eventpointer);
710+
ScriptRPCHandler.GetEvents().ForEachCatching(fn => fn(clientScriptRPCEvent, name, mValues.Select(x => x.ToObject()).ToArray(), answerid), $"event {nameof(OnScriptRPC)}");
700711
}
701712
}
702713
}

api/AltV.Net.Client/Core.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -813,6 +813,32 @@ public ushort TriggerServerRPCEvent(IntPtr eventNamePtr, IntPtr[] args)
813813
}
814814
}
815815

816+
public void TriggerServerRPCAnswer(ushort answerId, object answer, string error)
817+
{
818+
CreateMValue(out var mValue, answer);
819+
TriggerServerRPCAnswer(answerId, mValue, error);
820+
mValue.Dispose();
821+
}
822+
823+
public void TriggerServerRPCAnswer(ushort answerId, MValueConst answer, string error)
824+
{
825+
unsafe
826+
{
827+
var errorPtr = AltNative.StringUtils.StringToHGlobalUtf8(error);
828+
Library.Client.Core_TriggerServerRPCAnswer(NativePointer, answerId, answer.nativePointer, errorPtr);
829+
Marshal.FreeHGlobal(errorPtr);
830+
}
831+
}
832+
833+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
834+
public ushort TriggerServerRPCAnswerEvent(IntPtr eventNamePtr, IntPtr[] args)
835+
{
836+
unsafe
837+
{
838+
return Library.Client.Core_TriggerServerRPCEvent(NativePointer, eventNamePtr, args, args.Length);
839+
}
840+
}
841+
816842
public void TriggerServerEventUnreliable(string eventName, MValueConst[] args)
817843
{
818844
var eventNamePtr = AltNative.StringUtils.StringToHGlobalUtf8(eventName);

api/AltV.Net.Client/Events/Events.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using AltV.Net.Data;
66
using AltV.Net.Elements.Args;
77
using AltV.Net.Elements.Entities;
8+
using AltV.Net.Shared.Elements.Entities;
89

910
namespace AltV.Net.Client.Events
1011
{
@@ -63,7 +64,8 @@ public delegate bool WeaponDamageDelegate(IEntity target, uint weapon, ushort da
6364
public delegate void PlayerBulletHitDelegate(uint weapon, IEntity victim, Position position);
6465
public delegate void VoiceConnectionDelegate(VoiceConnectionState state);
6566

66-
public delegate void ServerScriptRPCAnswerDelegate(ushort answerId, object answer, string answerError);
67+
public delegate void ScriptRPCDelegate(IScriptRPCEvent scriptRpcEvent, string name, object[] args, ushort answerId);
68+
public delegate void ScriptRPCAnswerDelegate(ushort answerId, object answer, string answerError);
6769

6870

6971

0 commit comments

Comments
 (0)