Skip to content

Commit dab608c

Browse files
committed
add entity timestamp
1 parent 9f67e28 commit dab608c

File tree

7 files changed

+39
-7
lines changed

7 files changed

+39
-7
lines changed

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,19 @@ public void Detach()
256256
}
257257
}
258258

259+
public uint Timestamp
260+
{
261+
get
262+
{
263+
lock (Entity)
264+
{
265+
if (!AsyncContext.CheckIfExistsOrCachedNullable(Entity)) return default;
266+
return Entity.Timestamp;
267+
}
268+
}
269+
270+
}
271+
259272
public bool Frozen
260273
{
261274
get

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

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

815815
public unsafe class ClientLibrary : IClientLibrary
816816
{
817-
public readonly uint Methods = 1533;
817+
public readonly uint Methods = 1534;
818818
public delegate* unmanaged[Cdecl]<nint, nint, void> Audio_AddOutput_Entity { get; }
819819
public delegate* unmanaged[Cdecl]<nint, uint, void> Audio_AddOutput_ScriptId { get; }
820820
public delegate* unmanaged[Cdecl]<nint, nint> Audio_GetBaseObject { get; }
@@ -3224,7 +3224,7 @@ private IntPtr GetUnmanagedPtr<T>(IDictionary<ulong, IntPtr> funcTable, ulong ha
32243224
public ClientLibrary(Dictionary<ulong, IntPtr> funcTable)
32253225
{
32263226
if (!funcTable.TryGetValue(0, out var capiHash)) Outdated = true;
3227-
else if (capiHash == IntPtr.Zero || *(ulong*)capiHash != 9336272802985087988UL) Outdated = true;
3227+
else if (capiHash == IntPtr.Zero || *(ulong*)capiHash != 699052605656462254UL) Outdated = true;
32283228
Audio_AddOutput_Entity = (delegate* unmanaged[Cdecl]<nint, nint, void>) GetUnmanagedPtr<Audio_AddOutput_EntityDelegate>(funcTable, 9879036518735269522UL, Audio_AddOutput_EntityFallback);
32293229
Audio_AddOutput_ScriptId = (delegate* unmanaged[Cdecl]<nint, uint, void>) GetUnmanagedPtr<Audio_AddOutput_ScriptIdDelegate>(funcTable, 14116998947805478300UL, Audio_AddOutput_ScriptIdFallback);
32303230
Audio_GetBaseObject = (delegate* unmanaged[Cdecl]<nint, nint>) GetUnmanagedPtr<Audio_GetBaseObjectDelegate>(funcTable, 6330360502401226894UL, Audio_GetBaseObjectFallback);

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ public unsafe interface IServerLibrary
8888
public delegate* unmanaged[Cdecl]<nint, nint, void> Entity_DeleteStreamSyncedMetaData { get; }
8989
public delegate* unmanaged[Cdecl]<nint, void> Entity_Detach { get; }
9090
public delegate* unmanaged[Cdecl]<nint, byte> Entity_GetStreamed { get; }
91+
public delegate* unmanaged[Cdecl]<nint, uint> Entity_GetTimestamp { get; }
9192
public delegate* unmanaged[Cdecl]<nint, byte> Entity_GetVisible { get; }
9293
public delegate* unmanaged[Cdecl]<nint, byte> Entity_HasCollision { get; }
9394
public delegate* unmanaged[Cdecl]<nint, byte, void> Entity_SetCollision { get; }
@@ -410,7 +411,7 @@ public unsafe interface IServerLibrary
410411

411412
public unsafe class ServerLibrary : IServerLibrary
412413
{
413-
public readonly uint Methods = 1533;
414+
public readonly uint Methods = 1534;
414415
public delegate* unmanaged[Cdecl]<nint, nint, void> BaseObject_DeleteSyncedMetaData { get; }
415416
public delegate* unmanaged[Cdecl]<nint, nint, nint, void> BaseObject_SetSyncedMetaData { get; }
416417
public delegate* unmanaged[Cdecl]<nint, BaseObjectType*, nint> Blip_AttachedTo { get; }
@@ -489,6 +490,7 @@ public unsafe class ServerLibrary : IServerLibrary
489490
public delegate* unmanaged[Cdecl]<nint, nint, void> Entity_DeleteStreamSyncedMetaData { get; }
490491
public delegate* unmanaged[Cdecl]<nint, void> Entity_Detach { get; }
491492
public delegate* unmanaged[Cdecl]<nint, byte> Entity_GetStreamed { get; }
493+
public delegate* unmanaged[Cdecl]<nint, uint> Entity_GetTimestamp { get; }
492494
public delegate* unmanaged[Cdecl]<nint, byte> Entity_GetVisible { get; }
493495
public delegate* unmanaged[Cdecl]<nint, byte> Entity_HasCollision { get; }
494496
public delegate* unmanaged[Cdecl]<nint, byte, void> Entity_SetCollision { get; }
@@ -963,6 +965,8 @@ public unsafe class ServerLibrary : IServerLibrary
963965
private static void Entity_DetachFallback(nint _entity) => throw new Exceptions.OutdatedSdkException("Entity_Detach", "Entity_Detach SDK method is outdated. Please update your module nuget");
964966
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate byte Entity_GetStreamedDelegate(nint _entity);
965967
private static byte Entity_GetStreamedFallback(nint _entity) => throw new Exceptions.OutdatedSdkException("Entity_GetStreamed", "Entity_GetStreamed SDK method is outdated. Please update your module nuget");
968+
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate uint Entity_GetTimestampDelegate(nint _entity);
969+
private static uint Entity_GetTimestampFallback(nint _entity) => throw new Exceptions.OutdatedSdkException("Entity_GetTimestamp", "Entity_GetTimestamp SDK method is outdated. Please update your module nuget");
966970
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate byte Entity_GetVisibleDelegate(nint _entity);
967971
private static byte Entity_GetVisibleFallback(nint _entity) => throw new Exceptions.OutdatedSdkException("Entity_GetVisible", "Entity_GetVisible SDK method is outdated. Please update your module nuget");
968972
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate byte Entity_HasCollisionDelegate(nint _entity);
@@ -1608,7 +1612,7 @@ private IntPtr GetUnmanagedPtr<T>(IDictionary<ulong, IntPtr> funcTable, ulong ha
16081612
public ServerLibrary(Dictionary<ulong, IntPtr> funcTable)
16091613
{
16101614
if (!funcTable.TryGetValue(0, out var capiHash)) Outdated = true;
1611-
else if (capiHash == IntPtr.Zero || *(ulong*)capiHash != 9336272802985087988UL) Outdated = true;
1615+
else if (capiHash == IntPtr.Zero || *(ulong*)capiHash != 699052605656462254UL) Outdated = true;
16121616
BaseObject_DeleteSyncedMetaData = (delegate* unmanaged[Cdecl]<nint, nint, void>) GetUnmanagedPtr<BaseObject_DeleteSyncedMetaDataDelegate>(funcTable, 8228424877092269355UL, BaseObject_DeleteSyncedMetaDataFallback);
16131617
BaseObject_SetSyncedMetaData = (delegate* unmanaged[Cdecl]<nint, nint, nint, void>) GetUnmanagedPtr<BaseObject_SetSyncedMetaDataDelegate>(funcTable, 8002999088966424231UL, BaseObject_SetSyncedMetaDataFallback);
16141618
Blip_AttachedTo = (delegate* unmanaged[Cdecl]<nint, BaseObjectType*, nint>) GetUnmanagedPtr<Blip_AttachedToDelegate>(funcTable, 15602966080933483258UL, Blip_AttachedToFallback);
@@ -1687,6 +1691,7 @@ public ServerLibrary(Dictionary<ulong, IntPtr> funcTable)
16871691
Entity_DeleteStreamSyncedMetaData = (delegate* unmanaged[Cdecl]<nint, nint, void>) GetUnmanagedPtr<Entity_DeleteStreamSyncedMetaDataDelegate>(funcTable, 10985243845337635807UL, Entity_DeleteStreamSyncedMetaDataFallback);
16881692
Entity_Detach = (delegate* unmanaged[Cdecl]<nint, void>) GetUnmanagedPtr<Entity_DetachDelegate>(funcTable, 720717099291838457UL, Entity_DetachFallback);
16891693
Entity_GetStreamed = (delegate* unmanaged[Cdecl]<nint, byte>) GetUnmanagedPtr<Entity_GetStreamedDelegate>(funcTable, 10576887087871473326UL, Entity_GetStreamedFallback);
1694+
Entity_GetTimestamp = (delegate* unmanaged[Cdecl]<nint, uint>) GetUnmanagedPtr<Entity_GetTimestampDelegate>(funcTable, 3963088656254240248UL, Entity_GetTimestampFallback);
16901695
Entity_GetVisible = (delegate* unmanaged[Cdecl]<nint, byte>) GetUnmanagedPtr<Entity_GetVisibleDelegate>(funcTable, 10813148612330668827UL, Entity_GetVisibleFallback);
16911696
Entity_HasCollision = (delegate* unmanaged[Cdecl]<nint, byte>) GetUnmanagedPtr<Entity_HasCollisionDelegate>(funcTable, 2223226199436541021UL, Entity_HasCollisionFallback);
16921697
Entity_SetCollision = (delegate* unmanaged[Cdecl]<nint, byte, void>) GetUnmanagedPtr<Entity_SetCollisionDelegate>(funcTable, 10673322505892191972UL, Entity_SetCollisionFallback);

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,7 @@ public unsafe interface ISharedLibrary
349349

350350
public unsafe class SharedLibrary : ISharedLibrary
351351
{
352-
public readonly uint Methods = 1533;
352+
public readonly uint Methods = 1534;
353353
public delegate* unmanaged[Cdecl]<nint, uint> Audio_GetID { get; }
354354
public delegate* unmanaged[Cdecl]<nint, nint, void> BaseObject_DeleteMetaData { get; }
355355
public delegate* unmanaged[Cdecl]<nint, void> BaseObject_DestructCache { get; }
@@ -1364,7 +1364,7 @@ private IntPtr GetUnmanagedPtr<T>(IDictionary<ulong, IntPtr> funcTable, ulong ha
13641364
public SharedLibrary(Dictionary<ulong, IntPtr> funcTable)
13651365
{
13661366
if (!funcTable.TryGetValue(0, out var capiHash)) Outdated = true;
1367-
else if (capiHash == IntPtr.Zero || *(ulong*)capiHash != 9336272802985087988UL) Outdated = true;
1367+
else if (capiHash == IntPtr.Zero || *(ulong*)capiHash != 699052605656462254UL) Outdated = true;
13681368
Audio_GetID = (delegate* unmanaged[Cdecl]<nint, uint>) GetUnmanagedPtr<Audio_GetIDDelegate>(funcTable, 4464042055475980737UL, Audio_GetIDFallback);
13691369
BaseObject_DeleteMetaData = (delegate* unmanaged[Cdecl]<nint, nint, void>) GetUnmanagedPtr<BaseObject_DeleteMetaDataDelegate>(funcTable, 8032676411671743849UL, BaseObject_DeleteMetaDataFallback);
13701370
BaseObject_DestructCache = (delegate* unmanaged[Cdecl]<nint, void>) GetUnmanagedPtr<BaseObject_DestructCacheDelegate>(funcTable, 6691163275156255752UL, BaseObject_DestructCacheFallback);

api/AltV.Net/Elements/Entities/Entity.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,18 @@ public void Detach()
272272
}
273273
}
274274

275+
public uint Timestamp
276+
{
277+
get
278+
{
279+
CheckIfEntityExistsOrCached();
280+
unsafe
281+
{
282+
return Core.Library.Server.Entity_GetTimestamp(EntityNativePointer);
283+
}
284+
}
285+
}
286+
275287
public bool Frozen
276288
{
277289
get

api/AltV.Net/Elements/Entities/IEntity.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,5 +90,7 @@ public interface IEntity : ISharedEntity, IWorldObject
9090
/// Detaches the entity from its attached entity.
9191
/// </summary>
9292
void Detach();
93+
94+
uint Timestamp { get; }
9395
}
9496
}

runtime

0 commit comments

Comments
 (0)