Skip to content

Commit a365e7b

Browse files
committed
Merge branch 'dev' into rc
2 parents 5da4d5b + 2a99821 commit a365e7b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+1436
-196
lines changed

api/AltV.Net.Async/AsyncCore.cs

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,24 @@ internal readonly AsyncEventHandler<PlayerChangeVehicleSeatAsyncDelegate>
147147
internal readonly AsyncEventHandler<PlayerSpawnAsyncDelegate> PlayerSpawnAsyncEventHandler =
148148
new(EventType.PLAYER_SPAWN);
149149

150+
internal readonly AsyncEventHandler<RequestSyncedSceneAsyncEventDelegate> RequestSyncedSceneAsyncEventHandler =
151+
new(EventType.REQUEST_SYNCED_SCENE);
152+
153+
internal readonly AsyncEventHandler<StartSyncedSceneAsyncEventDelegate> StartSyncedSceneAsyncEventHandler =
154+
new(EventType.START_SYNCED_SCENE);
155+
156+
internal readonly AsyncEventHandler<StopSyncedSceneAsyncEventDelegate> StopSyncedSceneAsyncEventHandler =
157+
new(EventType.STOP_SYNCED_SCENE);
158+
159+
internal readonly AsyncEventHandler<UpdateSyncedSceneAsyncEventDelegate> UpdateSyncedSceneAsyncEventHandler =
160+
new(EventType.UPDATE_SYNCED_SCENE);
161+
162+
internal readonly AsyncEventHandler<ClientRequestObjectAsyncEventDelegate> ClientRequestObjectAsyncEventHandler =
163+
new(EventType.CLIENT_REQUEST_OBJECT_EVENT);
164+
165+
internal readonly AsyncEventHandler<ClientDeleteObjectAsyncEventDelegate> ClientDeleteObjectAsyncEventHandler =
166+
new(EventType.CLIENT_DELETE_OBJECT_EVENT);
167+
150168
public AsyncCore(IntPtr nativePointer, IntPtr resourcePointer, AssemblyLoadContext assemblyLoadContext, ILibrary library, IPoolManager poolManager,
151169
INativeResourcePool nativeResourcePool) : base(nativePointer, resourcePointer, assemblyLoadContext, library, poolManager, nativeResourcePool)
152170
{
@@ -723,6 +741,73 @@ public override void OnPlayerSpawnEvent(IPlayer player)
723741
});
724742
}
725743

744+
public override void OnRequestSyncedSceneEvent(IntPtr eventPointer, IPlayer sourcePlayer, int sceneid)
745+
{
746+
base.OnRequestSyncedSceneEvent(eventPointer, sourcePlayer, sceneid);
747+
748+
if (!RequestSyncedSceneAsyncEventHandler.HasEvents()) return;
749+
Task.Run(async () =>
750+
{
751+
await RequestSyncedSceneAsyncEventHandler.CallAsync(@delegate => @delegate(sourcePlayer, sceneid));
752+
});
753+
}
754+
755+
public override void OnStartSyncedSceneEvent(IPlayer sourcePlayer, int sceneid, Position position,
756+
Rotation rotation, uint animDictHash, Dictionary<IEntity, uint> entityAndAnimHash)
757+
{
758+
base.OnStartSyncedSceneEvent(sourcePlayer, sceneid, position, rotation, animDictHash, entityAndAnimHash);
759+
760+
if (!StartSyncedSceneAsyncEventHandler.HasEvents()) return;
761+
Task.Run(async () =>
762+
{
763+
await StartSyncedSceneAsyncEventHandler.CallAsync(@delegate => @delegate(sourcePlayer, sceneid, position, rotation, animDictHash, entityAndAnimHash));
764+
});
765+
}
766+
767+
public override void OnStopSyncedSceneEvent(IPlayer sourcePlayer, int sceneid)
768+
{
769+
base.OnStopSyncedSceneEvent(sourcePlayer, sceneid);
770+
771+
if (!StopSyncedSceneAsyncEventHandler.HasEvents()) return;
772+
Task.Run(async () =>
773+
{
774+
await StopSyncedSceneAsyncEventHandler.CallAsync(@delegate => @delegate(sourcePlayer, sceneid));
775+
});
776+
}
777+
778+
public override void OnUpdateSyncedSceneEvent(IPlayer sourcePlayer, float startRate, int sceneid)
779+
{
780+
base.OnUpdateSyncedSceneEvent(sourcePlayer, startRate, sceneid);
781+
782+
if (!UpdateSyncedSceneAsyncEventHandler.HasEvents()) return;
783+
Task.Run(async () =>
784+
{
785+
await UpdateSyncedSceneAsyncEventHandler.CallAsync(@delegate => @delegate(sourcePlayer, startRate, sceneid));
786+
});
787+
}
788+
789+
public override void OnClientRequestObjectEvent(IntPtr eventPointer, IPlayer sourcePlayer, uint model, Position position)
790+
{
791+
base.OnClientRequestObjectEvent(eventPointer, sourcePlayer, model, position);
792+
793+
if (!ClientRequestObjectAsyncEventHandler.HasEvents()) return;
794+
Task.Run(async () =>
795+
{
796+
await ClientRequestObjectAsyncEventHandler.CallAsync(@delegate => @delegate(sourcePlayer, model, position));
797+
});
798+
}
799+
800+
public override void OnClientDeleteObjectEvent(IntPtr eventPointer, IPlayer sourcePlayer)
801+
{
802+
base.OnClientDeleteObjectEvent(eventPointer, sourcePlayer);
803+
804+
if (!ClientDeleteObjectAsyncEventHandler.HasEvents()) return;
805+
Task.Run(async () =>
806+
{
807+
await ClientDeleteObjectAsyncEventHandler.CallAsync(@delegate => @delegate(sourcePlayer));
808+
});
809+
}
810+
726811
public new Function OnClient(string eventName, Function function)
727812
{
728813
if (function == null)

api/AltV.Net.Async/Elements/Entities/AsyncConnectionInfo.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,26 @@ public string CloudAuthHash
172172
}
173173
}
174174

175+
public string Text
176+
{
177+
get
178+
{
179+
lock (ConnectionInfo)
180+
{
181+
if (!AsyncContext.CheckIfExistsOrCachedNullable(ConnectionInfo)) return default;
182+
return ConnectionInfo.Text;
183+
}
184+
}
185+
set
186+
{
187+
lock (ConnectionInfo)
188+
{
189+
if (!AsyncContext.CheckIfExistsOrCachedNullable(ConnectionInfo)) return;
190+
ConnectionInfo.Text = value;
191+
}
192+
}
193+
}
194+
175195
public bool IsAccepted
176196
{
177197
get

api/AltV.Net.Async/Elements/Entities/AsyncPlayer.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -735,6 +735,18 @@ public void GetCurrentWeaponComponents(out uint[] weaponComponents)
735735
}
736736
}
737737

738+
public bool IsParachuting
739+
{
740+
get
741+
{
742+
lock (Player)
743+
{
744+
if (!AsyncContext.CheckIfExistsOrCachedNullable(Player)) return default;
745+
return Player.IsParachuting;
746+
}
747+
}
748+
}
749+
738750
public void SetWeaponTintIndex(uint weapon, byte tintIndex)
739751
{
740752
lock (Player)

api/AltV.Net.Async/Elements/Entities/AsyncVehicle.cs

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Collections.Generic;
23
using System.Diagnostics.CodeAnalysis;
34
using System.Numerics;
45
using AltV.Net.Data;
@@ -579,7 +580,8 @@ public AsyncVehicle(IVehicle vehicle, IAsyncContext asyncContext) : base(vehicle
579580
Vehicle = vehicle;
580581
}
581582

582-
public AsyncVehicle(ICore core, IntPtr nativePointer, uint id) : this(new Vehicle(core, nativePointer, id), null)
583+
public AsyncVehicle(ICore core, IntPtr nativePointer, uint id) : this(new Vehicle(core, nativePointer, id),
584+
null)
583585
{
584586
}
585587

@@ -778,7 +780,7 @@ public uint TimedExplosionTime
778780
}
779781
}
780782

781-
public bool SirenActive
783+
public bool SirenActive
782784
{
783785
get
784786
{
@@ -990,7 +992,8 @@ public int PetrolTankHealth
990992
}
991993
}
992994

993-
public float SteeringAngle {
995+
public float SteeringAngle
996+
{
994997
get
995998
{
996999
lock (Vehicle)
@@ -999,7 +1002,6 @@ public float SteeringAngle {
9991002
return Vehicle.SteeringAngle;
10001003
}
10011004
}
1002-
10031005
}
10041006

10051007
public byte WheelsCount
@@ -1950,7 +1952,8 @@ public Quaternion Quaternion
19501952
}
19511953
}
19521954

1953-
public bool IsHornActive {
1955+
public bool IsHornActive
1956+
{
19541957
get
19551958
{
19561959
lock (Vehicle)
@@ -1961,7 +1964,8 @@ public bool IsHornActive {
19611964
}
19621965
}
19631966

1964-
public float AccelerationLevel {
1967+
public float AccelerationLevel
1968+
{
19651969
get
19661970
{
19671971
lock (Vehicle)
@@ -1972,7 +1976,8 @@ public float AccelerationLevel {
19721976
}
19731977
}
19741978

1975-
public float BrakeLevel {
1979+
public float BrakeLevel
1980+
{
19761981
get
19771982
{
19781983
lock (Vehicle)
@@ -1983,6 +1988,18 @@ public float BrakeLevel {
19831988
}
19841989
}
19851990

1991+
public List<PlayerSeat> Passengers
1992+
{
1993+
get
1994+
{
1995+
lock (Vehicle)
1996+
{
1997+
if (!AsyncContext.CheckIfExistsOrCachedNullable(Vehicle)) return default;
1998+
return Vehicle.Passengers;
1999+
}
2000+
}
2001+
}
2002+
19862003
[Obsolete("Use new async API instead")]
19872004
public IVehicle ToAsync(IAsyncContext asyncContext)
19882005
{

api/AltV.Net.Async/Elements/Entities/AsyncVoiceChannel.cs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Collections.Generic;
23
using System.Diagnostics.CodeAnalysis;
34
using AltV.Net.Elements.Entities;
45

@@ -75,6 +76,30 @@ public int Priority
7576
}
7677
}
7778

79+
public IReadOnlyCollection<IPlayer> Players
80+
{
81+
get
82+
{
83+
lock (VoiceChannel)
84+
{
85+
if (!AsyncContext.CheckIfExistsNullable(VoiceChannel)) return default;
86+
return VoiceChannel.Players;
87+
}
88+
}
89+
}
90+
91+
public ulong PlayerCount
92+
{
93+
get
94+
{
95+
lock (VoiceChannel)
96+
{
97+
if (!AsyncContext.CheckIfExistsNullable(VoiceChannel)) return default;
98+
return VoiceChannel.PlayerCount;
99+
}
100+
}
101+
}
102+
78103
public AsyncVoiceChannel(IVoiceChannel voiceChannel, IAsyncContext asyncContext) : base(voiceChannel,
79104
asyncContext)
80105
{

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System.Collections.Generic;
12
using System.Threading.Tasks;
23
using AltV.Net.Data;
34
using AltV.Net.Elements.Entities;
@@ -84,4 +85,12 @@ public delegate Task WeaponDamageAsyncDelegate(IPlayer player, IEntity target, u
8485
public delegate Task VehicleSirenAsyncDelegate(IVehicle vehicle, bool state);
8586

8687
public delegate Task PlayerSpawnAsyncDelegate(IPlayer player);
88+
89+
public delegate Task RequestSyncedSceneAsyncEventDelegate(IPlayer source, int sceneId);
90+
91+
public delegate Task StartSyncedSceneAsyncEventDelegate(IPlayer source, int sceneId, Position position, Rotation rotation, uint animDictHash, Dictionary<IEntity, uint> entityAndAnimHash);
92+
public delegate Task StopSyncedSceneAsyncEventDelegate(IPlayer source, int sceneId);
93+
public delegate Task UpdateSyncedSceneAsyncEventDelegate(IPlayer source, float startRate, int sceneId);
94+
public delegate Task ClientRequestObjectAsyncEventDelegate(IPlayer target, uint model, Position position);
95+
public delegate Task ClientDeleteObjectAsyncEventDelegate(IPlayer target);
8796
}

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ public unsafe interface IClientLibrary
205205
public delegate* unmanaged[Cdecl]<nint, nint, byte> Core_LoadYtyp { get; }
206206
public delegate* unmanaged[Cdecl]<nint, nint, void> Core_OverrideFocusEntity { get; }
207207
public delegate* unmanaged[Cdecl]<nint, Vector3, Vector3, void> Core_OverrideFocusPosition { get; }
208-
public delegate* unmanaged[Cdecl]<nint, nint, nint, nint, uint*, nint> Core_RegisterFont { get; }
208+
public delegate* unmanaged[Cdecl]<nint, nint, nint, uint*, nint> Core_RegisterFont { get; }
209209
public delegate* unmanaged[Cdecl]<nint, nint, uint, void> Core_RemoveGXTText { get; }
210210
public delegate* unmanaged[Cdecl]<nint, nint, void> Core_RemoveIpl { get; }
211211
public delegate* unmanaged[Cdecl]<nint, nint, void> Core_RequestIpl { get; }
@@ -875,7 +875,7 @@ public unsafe interface IClientLibrary
875875

876876
public unsafe class ClientLibrary : IClientLibrary
877877
{
878-
public readonly uint Methods = 1647;
878+
public readonly uint Methods = 1648;
879879
public delegate* unmanaged[Cdecl]<nint, nint, void> Audio_AddOutput { get; }
880880
public delegate* unmanaged[Cdecl]<nint, nint> Audio_GetBaseObject { get; }
881881
public delegate* unmanaged[Cdecl]<nint, double> Audio_GetCurrentTime { get; }
@@ -1071,7 +1071,7 @@ public unsafe class ClientLibrary : IClientLibrary
10711071
public delegate* unmanaged[Cdecl]<nint, nint, byte> Core_LoadYtyp { get; }
10721072
public delegate* unmanaged[Cdecl]<nint, nint, void> Core_OverrideFocusEntity { get; }
10731073
public delegate* unmanaged[Cdecl]<nint, Vector3, Vector3, void> Core_OverrideFocusPosition { get; }
1074-
public delegate* unmanaged[Cdecl]<nint, nint, nint, nint, uint*, nint> Core_RegisterFont { get; }
1074+
public delegate* unmanaged[Cdecl]<nint, nint, nint, uint*, nint> Core_RegisterFont { get; }
10751075
public delegate* unmanaged[Cdecl]<nint, nint, uint, void> Core_RemoveGXTText { get; }
10761076
public delegate* unmanaged[Cdecl]<nint, nint, void> Core_RemoveIpl { get; }
10771077
public delegate* unmanaged[Cdecl]<nint, nint, void> Core_RequestIpl { get; }
@@ -2127,8 +2127,8 @@ public unsafe class ClientLibrary : IClientLibrary
21272127
private static void Core_OverrideFocusEntityFallback(nint _core, nint _entity) => throw new Exceptions.OutdatedSdkException("Core_OverrideFocusEntity", "Core_OverrideFocusEntity SDK method is outdated. Please update your module nuget");
21282128
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void Core_OverrideFocusPositionDelegate(nint _core, Vector3 _pos, Vector3 _offset);
21292129
private static void Core_OverrideFocusPositionFallback(nint _core, Vector3 _pos, Vector3 _offset) => throw new Exceptions.OutdatedSdkException("Core_OverrideFocusPosition", "Core_OverrideFocusPosition SDK method is outdated. Please update your module nuget");
2130-
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate nint Core_RegisterFontDelegate(nint _core, nint _resource, nint _path, nint _currentPath, uint* _id);
2131-
private static nint Core_RegisterFontFallback(nint _core, nint _resource, nint _path, nint _currentPath, uint* _id) => throw new Exceptions.OutdatedSdkException("Core_RegisterFont", "Core_RegisterFont SDK method is outdated. Please update your module nuget");
2130+
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate nint Core_RegisterFontDelegate(nint _core, nint _resource, nint _path, uint* _id);
2131+
private static nint Core_RegisterFontFallback(nint _core, nint _resource, nint _path, uint* _id) => throw new Exceptions.OutdatedSdkException("Core_RegisterFont", "Core_RegisterFont SDK method is outdated. Please update your module nuget");
21322132
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void Core_RemoveGXTTextDelegate(nint _core, nint _resource, uint _key);
21332133
private static void Core_RemoveGXTTextFallback(nint _core, nint _resource, uint _key) => throw new Exceptions.OutdatedSdkException("Core_RemoveGXTText", "Core_RemoveGXTText SDK method is outdated. Please update your module nuget");
21342134
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void Core_RemoveIplDelegate(nint _core, nint _path);
@@ -3468,7 +3468,7 @@ private IntPtr GetUnmanagedPtr<T>(IDictionary<ulong, IntPtr> funcTable, ulong ha
34683468
public ClientLibrary(Dictionary<ulong, IntPtr> funcTable)
34693469
{
34703470
if (!funcTable.TryGetValue(0, out var capiHash)) Outdated = true;
3471-
else if (capiHash == IntPtr.Zero || *(ulong*)capiHash != 4271963963690998474UL) Outdated = true;
3471+
else if (capiHash == IntPtr.Zero || *(ulong*)capiHash != 10156954479038056230UL) Outdated = true;
34723472
Audio_AddOutput = (delegate* unmanaged[Cdecl]<nint, nint, void>) GetUnmanagedPtr<Audio_AddOutputDelegate>(funcTable, 9914412815391408844UL, Audio_AddOutputFallback);
34733473
Audio_GetBaseObject = (delegate* unmanaged[Cdecl]<nint, nint>) GetUnmanagedPtr<Audio_GetBaseObjectDelegate>(funcTable, 6330360502401226894UL, Audio_GetBaseObjectFallback);
34743474
Audio_GetCurrentTime = (delegate* unmanaged[Cdecl]<nint, double>) GetUnmanagedPtr<Audio_GetCurrentTimeDelegate>(funcTable, 2944324482134975819UL, Audio_GetCurrentTimeFallback);
@@ -3664,7 +3664,7 @@ public ClientLibrary(Dictionary<ulong, IntPtr> funcTable)
36643664
Core_LoadYtyp = (delegate* unmanaged[Cdecl]<nint, nint, byte>) GetUnmanagedPtr<Core_LoadYtypDelegate>(funcTable, 9006970651286241104UL, Core_LoadYtypFallback);
36653665
Core_OverrideFocusEntity = (delegate* unmanaged[Cdecl]<nint, nint, void>) GetUnmanagedPtr<Core_OverrideFocusEntityDelegate>(funcTable, 11543552066785919265UL, Core_OverrideFocusEntityFallback);
36663666
Core_OverrideFocusPosition = (delegate* unmanaged[Cdecl]<nint, Vector3, Vector3, void>) GetUnmanagedPtr<Core_OverrideFocusPositionDelegate>(funcTable, 15255809094076439747UL, Core_OverrideFocusPositionFallback);
3667-
Core_RegisterFont = (delegate* unmanaged[Cdecl]<nint, nint, nint, nint, uint*, nint>) GetUnmanagedPtr<Core_RegisterFontDelegate>(funcTable, 9606250554276774505UL, Core_RegisterFontFallback);
3667+
Core_RegisterFont = (delegate* unmanaged[Cdecl]<nint, nint, nint, uint*, nint>) GetUnmanagedPtr<Core_RegisterFontDelegate>(funcTable, 84574382701044016UL, Core_RegisterFontFallback);
36683668
Core_RemoveGXTText = (delegate* unmanaged[Cdecl]<nint, nint, uint, void>) GetUnmanagedPtr<Core_RemoveGXTTextDelegate>(funcTable, 2950682702415179672UL, Core_RemoveGXTTextFallback);
36693669
Core_RemoveIpl = (delegate* unmanaged[Cdecl]<nint, nint, void>) GetUnmanagedPtr<Core_RemoveIplDelegate>(funcTable, 3186817815537256556UL, Core_RemoveIplFallback);
36703670
Core_RequestIpl = (delegate* unmanaged[Cdecl]<nint, nint, void>) GetUnmanagedPtr<Core_RequestIplDelegate>(funcTable, 6993510006268976715UL, Core_RequestIplFallback);

0 commit comments

Comments
 (0)