Skip to content

Commit a82d526

Browse files
committed
add new core methods and add playerhealevent
1 parent a81998b commit a82d526

File tree

22 files changed

+348
-20
lines changed

22 files changed

+348
-20
lines changed

api/AltV.Net.Async/AltAsync.RegisterEvents.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,23 @@ public static void RegisterEvents(object target)
9797
};
9898
break;
9999
}
100+
case ScriptEventType.PlayerHeal:
101+
{
102+
scriptFunction = ScriptFunction.Create(eventMethodDelegate,
103+
new[] { typeof(IPlayer), typeof(ushort), typeof(ushort), typeof(ushort), typeof(ushort) }, isAsync: true);
104+
if (scriptFunction == null) return;
105+
OnPlayerHeal += (player, oldHealth, newHealth, oldArmour, newArmour) =>
106+
{
107+
var currScriptFunction = scriptFunction.Clone();
108+
currScriptFunction.Set(player);
109+
currScriptFunction.Set(oldHealth);
110+
currScriptFunction.Set(newHealth);
111+
currScriptFunction.Set(oldArmour);
112+
currScriptFunction.Set(newArmour);
113+
return currScriptFunction.CallAsync();
114+
};
115+
break;
116+
}
100117
case ScriptEventType.PlayerDisconnect:
101118
{
102119
scriptFunction = ScriptFunction.Create(eventMethodDelegate,

api/AltV.Net.Async/AltAsync.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@ public static event PlayerDeadAsyncDelegate OnPlayerDead
4040
remove => Core.PlayerDeadAsyncEventHandler.Remove(value);
4141
}
4242

43+
public static event PlayerHealAsyncDelegate OnPlayerHeal
44+
{
45+
add => Core.PlayerHealAsyncEventHandler.Add(value);
46+
remove => Core.PlayerHealAsyncEventHandler.Remove(value);
47+
}
48+
4349
public static event ExplosionAsyncDelegate OnExplosion
4450
{
4551
add => Core.ExplosionAsyncEventHandler.Add(value);

api/AltV.Net.Async/AsyncCore.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@ public override IEnumerable<string> GetRegisteredServerEvents()
4747
internal readonly AsyncEventHandler<PlayerDeadAsyncDelegate> PlayerDeadAsyncEventHandler =
4848
new(EventType.PLAYER_DEATH);
4949

50+
internal readonly AsyncEventHandler<PlayerHealAsyncDelegate> PlayerHealAsyncEventHandler =
51+
new(EventType.PLAYER_HEAL);
52+
5053
internal readonly AsyncEventHandler<ExplosionAsyncDelegate> ExplosionAsyncEventHandler =
5154
new(EventType.EXPLOSION_EVENT);
5255

@@ -197,6 +200,17 @@ await PlayerDeadAsyncEventHandler.CallAsync(@delegate =>
197200
});
198201
}
199202

203+
public override void OnPlayerHealEvent(IPlayer player, ushort oldHealth, ushort newHealth, ushort oldArmour, ushort newArmour)
204+
{
205+
base.OnPlayerHealEvent(player, oldHealth, newHealth, oldArmour, newArmour);
206+
if (!PlayerHealAsyncEventHandler.HasEvents()) return;
207+
Task.Run(async () =>
208+
{
209+
await PlayerHealAsyncEventHandler.CallAsync(@delegate =>
210+
@delegate(player, oldHealth, newHealth, oldArmour, newArmour));
211+
});
212+
}
213+
200214
public override void OnPlayerConnectEvent(IPlayer player, string reason)
201215
{
202216
base.OnPlayerConnectEvent(player, reason);

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ public delegate Task PlayerDamageAsyncDelegate(IPlayer player, IEntity attacker,
1717

1818
public delegate Task PlayerDeadAsyncDelegate(IPlayer player, IEntity killer, uint weapon);
1919

20+
public delegate Task PlayerHealAsyncDelegate(IPlayer target, ushort oldHealth, ushort newHealth, ushort oldArmour,
21+
ushort newArmour);
22+
2023
public delegate Task PlayerDisconnectAsyncDelegate(IPlayer player, string reason);
2124

2225
public delegate Task PlayerRemoveAsyncDelegate(IPlayer player);

api/AltV.Net.CApi.Generator/TypeRegistry.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ public static class TypeRegistry
108108
{ "vector3_t&", "Vector3*" },
109109
{ "rgba_t", "Rgba" },
110110
{ "rgba_t&", "Rgba*" },
111-
{ "alt::Array<uint32_t>", "UIntArray*" },
111+
{ "std::vector<uint32_t>", "UIntArray*" },
112112

113113
{ "alt::Quaternion", "Quaternion" },
114114
{ "alt::Quaternion&", "Quaternion*" },
@@ -134,8 +134,8 @@ public static class TypeRegistry
134134
{ "const char*&", "nint*" },
135135
{ "char**", "nint" },
136136
{ "char**&", "nint*" },
137-
{ "alt::Array<uint32_t>&", "UIntArray*" },
138-
{ "alt::Array<uint32_t>*", "UIntArray*" },
137+
{ "std::vector<uint32_t>&", "UIntArray*" },
138+
{ "std::vector<uint32_t>*", "UIntArray*" },
139139
{ "void*", "nint" },
140140
{ "alt::IBaseObject::Type&", "BaseObjectType*" },
141141
{ "player_struct_t*", "ReadOnlyPlayer*" },
@@ -146,7 +146,7 @@ public static class TypeRegistry
146146
{ "alt::IVoiceChannel*", "nint" },
147147
{ "alt::IBlip*", "nint" },
148148
{ "alt::IBlip**", "nint" },
149-
{ "alt::Array<alt::String>&", "StringArray*" },
149+
{ "std::vector<alt::String>&", "StringArray*" },
150150
//{ "alt::MValue::List&", "MValueWriter2.MValueArray*" },
151151
{ "const alt::MValue&", "MValue*" },
152152
{ "const char**", "string[]" },
@@ -167,13 +167,13 @@ public static class TypeRegistry
167167
{ "alt::EventCallback", "EventCallback" },
168168
{ "alt::TickCallback", "TickCallback" },
169169
{ "alt::CommandCallback", "CommandCallback" },
170-
{ "alt::Array<alt::IPlayer*>*", "PlayerPointerArray*" },
171-
{ "alt::Array<alt::IVehicle*>*", "VehiclePointerArray*" },
172-
{ "alt::Array<alt::IPlayer*>&", "PlayerPointerArray*" },
173-
{ "alt::Array<alt::IVehicle*>&", "VehiclePointerArray*" },
174-
{ "alt::Array<alt::StringView>*", "StringViewArray*" },
175-
{ "alt::Array<alt::String>*", "StringArray*" },
176-
{ "alt::Array<alt::MValue>*", "MValueWriter2.MValueArray*" },
170+
{ "std::vector<alt::IPlayer*>*", "PlayerPointerArray*" },
171+
{ "std::vector<alt::IVehicle*>*", "VehiclePointerArray*" },
172+
{ "std::vector<alt::IPlayer*>&", "PlayerPointerArray*" },
173+
{ "std::vector<alt::IVehicle*>&", "VehiclePointerArray*" },
174+
{ "std::vector<alt::StringView>*", "StringViewArray*" },
175+
{ "std::vector<alt::String>*", "StringArray*" },
176+
{ "std::vector<alt::MValue>*", "MValueWriter2.MValueArray*" },
177177
{ "alt::MValue*[]", "nint[]" },
178178
{ "alt::IPlayer*[]", "nint[]" },
179179
{ "alt::IVehicle*[]", "nint[]" },
@@ -201,7 +201,7 @@ public static class TypeRegistry
201201
{ "head_overlay_t", "HeadOverlay" },
202202
{ "head_overlay_t&", "HeadOverlay*" },
203203
{ "weapon_t*[]", "WeaponData[]" },
204-
{ "alt::Array<weapon_t>&", "WeaponArray*" },
204+
{ "std::vector<weapon_t>&", "WeaponArray*" },
205205
{ "vector2_t[]", "Vector2[]" },
206206
{ "alt::IConnectionInfo*", "IntPtr" },
207207
{ "ClrVehicleModelInfo*", "nint" },

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -876,7 +876,7 @@ public unsafe interface IClientLibrary
876876

877877
public unsafe class ClientLibrary : IClientLibrary
878878
{
879-
public readonly uint Methods = 1649;
879+
public readonly uint Methods = 1661;
880880
public delegate* unmanaged[Cdecl]<nint, nint, void> Audio_AddOutput { get; }
881881
public delegate* unmanaged[Cdecl]<nint, nint> Audio_GetBaseObject { get; }
882882
public delegate* unmanaged[Cdecl]<nint, double> Audio_GetCurrentTime { get; }
@@ -3472,7 +3472,7 @@ private IntPtr GetUnmanagedPtr<T>(IDictionary<ulong, IntPtr> funcTable, ulong ha
34723472
public ClientLibrary(Dictionary<ulong, IntPtr> funcTable)
34733473
{
34743474
if (!funcTable.TryGetValue(0, out var capiHash)) Outdated = true;
3475-
else if (capiHash == IntPtr.Zero || *(ulong*)capiHash != 5645779348269713775UL) Outdated = true;
3475+
else if (capiHash == IntPtr.Zero || *(ulong*)capiHash != 11511328496285563025UL) Outdated = true;
34763476
Audio_AddOutput = (delegate* unmanaged[Cdecl]<nint, nint, void>) GetUnmanagedPtr<Audio_AddOutputDelegate>(funcTable, 9914412815391408844UL, Audio_AddOutputFallback);
34773477
Audio_GetBaseObject = (delegate* unmanaged[Cdecl]<nint, nint>) GetUnmanagedPtr<Audio_GetBaseObjectDelegate>(funcTable, 6330360502401226894UL, Audio_GetBaseObjectFallback);
34783478
Audio_GetCurrentTime = (delegate* unmanaged[Cdecl]<nint, double>) GetUnmanagedPtr<Audio_GetCurrentTimeDelegate>(funcTable, 2944324482134975819UL, Audio_GetCurrentTimeFallback);

0 commit comments

Comments
 (0)