Skip to content

Commit e6767ff

Browse files
authored
added give ped scripted task event (#803)
1 parent 76536ff commit e6767ff

File tree

8 files changed

+93
-0
lines changed

8 files changed

+93
-0
lines changed

api/AltV.Net.Async/AsyncCore.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,9 @@ internal readonly AsyncEventHandler<PlayerChangeVehicleSeatAsyncDelegate>
168168
internal readonly AsyncEventHandler<ClientDeleteObjectAsyncEventDelegate> ClientDeleteObjectAsyncEventHandler =
169169
new(EventType.CLIENT_DELETE_OBJECT_EVENT);
170170

171+
internal readonly AsyncEventHandler<GivePedScriptedTaskAsyncDelegate> GivePedScriptedTaskAsyncEventHandler =
172+
new(EventType.GIVE_PED_SCRIPTED_TASK);
173+
171174
public AsyncCore(IntPtr nativePointer, IntPtr resourcePointer, AssemblyLoadContext assemblyLoadContext, ILibrary library, IPoolManager poolManager,
172175
INativeResourcePool nativeResourcePool) : base(nativePointer, resourcePointer, assemblyLoadContext, library, poolManager, nativeResourcePool)
173176
{
@@ -822,6 +825,17 @@ public override void OnClientDeleteObjectEvent(IntPtr eventPointer, IPlayer sour
822825
});
823826
}
824827

828+
public override void OnGivePedScriptedTaskEvent(IntPtr eventPointer, IPlayer sourcePlayer, IPed sourcePed, int taskType)
829+
{
830+
base.OnGivePedScriptedTaskEvent(eventPointer, sourcePlayer, sourcePed, taskType);
831+
832+
if (!GivePedScriptedTaskAsyncEventHandler.HasEvents()) return;
833+
Task.Run(async () =>
834+
{
835+
await GivePedScriptedTaskAsyncEventHandler.CallAsync(@delegate => @delegate(sourcePlayer, sourcePed, taskType));
836+
});
837+
}
838+
825839
public new Function OnClient(string eventName, Function function)
826840
{
827841
if (function == null)

api/AltV.Net.Async/Events/Events.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,4 +96,6 @@ public delegate Task WeaponDamageAsyncDelegate(IPlayer player, IEntity target, u
9696
public delegate Task UpdateSyncedSceneAsyncEventDelegate(IPlayer source, float startRate, int sceneId);
9797
public delegate Task ClientRequestObjectAsyncEventDelegate(IPlayer target, uint model, Position position);
9898
public delegate Task ClientDeleteObjectAsyncEventDelegate(IPlayer target);
99+
100+
public delegate Task GivePedScriptedTaskAsyncDelegate(IPlayer source, IPed target, int taskType);
99101
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ internal delegate void VehicleHornDelegate(IntPtr eventPointer, IntPtr targetPoi
123123

124124
internal delegate void UpdateSyncedSceneDelegate(IntPtr source, float startRate, int sceneId);
125125

126+
internal delegate void GivePedScriptedTaskDelegate(IntPtr eventPointer, IntPtr source, IntPtr target, int taskType);
126127

127128
[DllImport(DllName, CallingConvention = NativeCallingConvention)]
128129
internal static extern void CSharpResourceImpl_SetMainDelegate(IntPtr resource,
@@ -319,6 +320,10 @@ internal static extern void CSharpResourceImpl_SetStopSyncedSceneDelegate(IntPtr
319320
[DllImport(DllName, CallingConvention = NativeCallingConvention)]
320321
internal static extern void CSharpResourceImpl_SetUpdateSyncedSceneDelegate(IntPtr resource,
321322
UpdateSyncedSceneDelegate @delegate);
323+
324+
[DllImport(DllName, CallingConvention = NativeCallingConvention)]
325+
internal static extern void CSharpResourceImpl_SetGivePedScriptedTaskDelegate(IntPtr resource,
326+
GivePedScriptedTaskDelegate @delegate);
322327
}
323328
}
324329
}

api/AltV.Net/Alt.Events.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,5 +340,10 @@ public static event ClientDeleteObjectDelegate OnClientDeleteObject
340340
remove => CoreImpl.ClientDeleteObjectHandler.Remove(value);
341341
}
342342

343+
public static event GivePedScriptedTaskDelegate OnGivePedScriptedTask
344+
{
345+
add => CoreImpl.GivePedScriptedTaskHandler.Add(value);
346+
remove => CoreImpl.GivePedScriptedTaskHandler.Remove(value);
347+
}
343348
}
344349
}

api/AltV.Net/CSharpResourceImpl.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,11 @@ internal void SetDelegates(AltNative.Resource.MainDelegate onStart)
224224
handles.AddFirst(GCHandle.Alloc(onUpdateSyncedSceneDelegate));
225225
AltNative.Resource.CSharpResourceImpl_SetUpdateSyncedSceneDelegate(NativePointer, onUpdateSyncedSceneDelegate);
226226

227+
AltNative.Resource.GivePedScriptedTaskDelegate onGivePedScriptedTaskDelegate =
228+
ModuleWrapper.OnGivePedScriptedTask;
229+
handles.AddFirst(GCHandle.Alloc(onGivePedScriptedTaskDelegate));
230+
AltNative.Resource.CSharpResourceImpl_SetGivePedScriptedTaskDelegate(NativePointer, onGivePedScriptedTaskDelegate);
231+
227232
}
228233

229234
public void Dispose()

api/AltV.Net/Core.Events.cs

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,9 @@ public partial class Core
154154
internal readonly IEventHandler<ClientDeleteObjectDelegate> ClientDeleteObjectHandler =
155155
new HashSetEventHandler<ClientDeleteObjectDelegate>(EventType.CLIENT_DELETE_OBJECT_EVENT);
156156

157+
internal readonly IEventHandler<GivePedScriptedTaskDelegate> GivePedScriptedTaskHandler =
158+
new HashSetEventHandler<GivePedScriptedTaskDelegate>(EventType.GIVE_PED_SCRIPTED_TASK);
159+
157160
public void OnCheckpoint(IntPtr checkpointPointer, IntPtr entityPointer, BaseObjectType baseObjectType,
158161
bool state)
159162
{
@@ -2377,5 +2380,57 @@ public virtual void OnClientDeleteObjectEvent(IntPtr eventPointer, IPlayer sourc
23772380
}
23782381
}
23792382
}
2383+
2384+
public virtual void OnGivePedScriptedTask(IntPtr eventPointer, IntPtr source, IntPtr target, int taskType)
2385+
{
2386+
var sourcePlayer = PoolManager.Player.Get(source);
2387+
var targetPed = PoolManager.Ped.Get(target);
2388+
2389+
if (sourcePlayer == null)
2390+
{
2391+
Console.WriteLine("OnGivePedScriptedTask Invalid source " + source);
2392+
return;
2393+
}
2394+
2395+
if (targetPed == null)
2396+
{
2397+
Console.WriteLine("OnGivePedScriptedTask Invalid target " + target);
2398+
return;
2399+
}
2400+
2401+
OnGivePedScriptedTaskEvent(eventPointer, sourcePlayer, targetPed, taskType);
2402+
}
2403+
2404+
public virtual void OnGivePedScriptedTaskEvent(IntPtr eventPointer, IPlayer source, IPed target, int taskType)
2405+
{
2406+
if (!GivePedScriptedTaskHandler.HasEvents()) return;
2407+
var cancel = false;
2408+
foreach (var @delegate in GivePedScriptedTaskHandler.GetEvents())
2409+
{
2410+
try
2411+
{
2412+
if (!@delegate(source, target, taskType))
2413+
{
2414+
cancel = true;
2415+
}
2416+
}
2417+
catch (TargetInvocationException exception)
2418+
{
2419+
Alt.Log("exception at event:" + "OnGivePedScriptedTaskEvent" + ":" + exception.InnerException);
2420+
}
2421+
catch (Exception exception)
2422+
{
2423+
Alt.Log("exception at event:" + "OnGivePedScriptedTaskEvent" + ":" + exception);
2424+
}
2425+
}
2426+
2427+
if (cancel)
2428+
{
2429+
unsafe
2430+
{
2431+
Alt.Core.Library.Shared.Event_Cancel(eventPointer);
2432+
}
2433+
}
2434+
}
23802435
}
23812436
}

api/AltV.Net/Events/Events.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,4 +105,6 @@ public delegate WeaponDamageResponse WeaponDamageDelegate(IPlayer player, IEntit
105105
public delegate void UpdateSyncedSceneDelegate(IPlayer source, float startRate, int sceneId);
106106
public delegate bool ClientRequestObjectDelegate(IPlayer target, uint model, Position position);
107107
public delegate bool ClientDeleteObjectDelegate(IPlayer target);
108+
109+
public delegate bool GivePedScriptedTaskDelegate(IPlayer source, IPed target, int taskType);
108110
}

api/AltV.Net/ModuleWrapper.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -483,5 +483,10 @@ public static void OnRequestSyncedScene(IntPtr eventPointer, IntPtr source)
483483
{
484484
_core.OnClientDeleteObject(eventPointer, source);
485485
}
486+
487+
public static void OnGivePedScriptedTask(IntPtr eventPointer, IntPtr source, IntPtr target, int taskType)
488+
{
489+
_core.OnGivePedScriptedTask(eventPointer, source, target, taskType);
490+
}
486491
}
487492
}

0 commit comments

Comments
 (0)