Skip to content

Commit f3e6831

Browse files
committed
add new events
1 parent 2e50e52 commit f3e6831

40 files changed

+516
-70
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/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/Native/AltV.Resource.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,18 @@ internal static extern void CSharpResourceImpl_SetRemoveBaseObjectDelegate(IntPt
300300
[DllImport(DllName, CallingConvention = NativeCallingConvention)]
301301
internal static extern void CSharpResourceImpl_SetRequestSyncedSceneDelegate(IntPtr resource,
302302
RequestSyncedSceneDelegate @delegate);
303+
304+
[DllImport(DllName, CallingConvention = NativeCallingConvention)]
305+
internal static extern void CSharpResourceImpl_SetStartSyncedSceneDelegate(IntPtr resource,
306+
StartSyncedSceneDelegate @delegate);
307+
308+
[DllImport(DllName, CallingConvention = NativeCallingConvention)]
309+
internal static extern void CSharpResourceImpl_SetStopSyncedSceneDelegate(IntPtr resource,
310+
StopSyncedSceneDelegate @delegate);
311+
312+
[DllImport(DllName, CallingConvention = NativeCallingConvention)]
313+
internal static extern void CSharpResourceImpl_SetUpdateSyncedSceneDelegate(IntPtr resource,
314+
UpdateSyncedSceneDelegate @delegate);
303315
}
304316
}
305317
}

api/AltV.Net.Example/MyPlayer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,4 @@ public MyPlayer(ICore core, IntPtr nativePointer, uint id) : base(core, nativePo
1919
MyData = 6;
2020
}
2121
}
22-
}
22+
}

api/AltV.Net.Example/SampleScript.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@ public async Task Checkpoint(ICheckpoint checkpoint, IEntity entity, bool state)
1414
{
1515
await Task.Delay(100);
1616
Console.WriteLine("checkpoint event");
17-
}
18-
17+
}
18+
1919
[AsyncScriptEvent(ScriptEventType.ColShape)]
2020
public async Task ColShape(IColShape checkpoint, IEntity entity, bool state)
2121
{
2222
await Task.Delay(100);
2323
Console.WriteLine("colshape event");
2424
}
25-
25+
2626
[Command]
2727
public void MyCommand(IPlayer player, string myArgument)
2828
{
@@ -33,38 +33,38 @@ public void MyCommand2(IPlayer player, int? myArgument)
3333
{
3434
Console.WriteLine("bla with arg:" + myArgument);
3535
}
36-
36+
3737
[Command("bladyn")]
3838
public void MyCommand(IPlayer player, int myArgument, params string[] message)
3939
{
4040
Console.WriteLine("bladync with arg:" + myArgument + string.Join(" ", message));
4141
}
4242

43-
[Command("bla", true, new [] {"bla2", "bla3"})]
43+
[Command("bla", true, new[] { "bla2", "bla3" })]
4444
public void MyCommand2(IPlayer player, string myArgument)
4545
{
4646
Console.WriteLine("bla with greedy arg:" + myArgument);
4747
}
48-
48+
4949
[CommandEvent(CommandEventType.CommandNotFound)]
5050
public void MyCommandNotFoundHandler(IPlayer player, string command)
5151
{
5252
Console.WriteLine("Command not found:" + command);
5353
}
54-
54+
5555
[Command("dynamicArgs")]
5656
public void MyCommandWithDynamicArgs(IPlayer player, int arg1, int arg2, params string[] args)
5757
{
5858
Console.WriteLine("Command:" + arg1 + " " + arg2 + " remaining args " + string.Join(",", args));
5959
}
60-
60+
6161
[Command("dynamicArgs2")]
6262
public void MyCommandWithDynamicArgs2(IPlayer player, int arg1, int? arg2, params string[] args)
6363
{
6464
Console.WriteLine("Command:" + arg1 + " " + arg2 + " remaining args " + string.Join(",", args));
6565
}
66-
67-
[Command("defaultParamsCommand", aliases: new []{"defaultParamsCommand2"})]
66+
67+
[Command("defaultParamsCommand", aliases: new[] { "defaultParamsCommand2" })]
6868
public void DefaultParamsCommand(IPlayer player, string test, int arg1 = 1, int arg2 = 2)
6969
{
7070
Console.WriteLine("Command:" + test + " " + arg1 + " " + arg2);
@@ -74,7 +74,7 @@ public void DefaultParamsCommand(IPlayer player, string test, int arg1 = 1, int
7474
public void MyEvent(IPlayer player)
7575
{
7676
}
77-
77+
7878
[ServerEvent("eventNameWithEntity")]
7979
public void MyEvent2(IPlayer player, IEntity entity)
8080
{
@@ -98,7 +98,7 @@ public void MyPlayerConnect(IPlayer player, string reason)
9898
{
9999
player.Emit("connect_event");
100100
player.SetDateTime(DateTime.Now);
101-
player.Model = (uint) PedModel.FreemodeMale01;
101+
player.Model = (uint)PedModel.FreemodeMale01;
102102
}
103103

104104
[ScriptEvent(ScriptEventType.ServerEvent)]
Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
<?xml version="1.0" encoding="utf-8"?>
2+
23
<configuration>
3-
<packageSources>
4-
<!--To inherit the global NuGet package sources remove the <clear/> line below -->
5-
<clear />
6-
<add key="dotnet-core" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" />
7-
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
8-
<add key="nuget" value="https://api.nuget.org/v3/index.json" />
9-
</packageSources>
10-
</configuration>
4+
<packageSources>
5+
<!--To inherit the global NuGet package sources remove the <clear/> line below -->
6+
<clear />
7+
<add key="dotnet-core" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" />
8+
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
9+
<add key="nuget" value="https://api.nuget.org/v3/index.json" />
10+
</packageSources>
11+
</configuration>

api/AltV.Net.Mock/MockAltV.cs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ namespace AltV.Net.Mock
77
//TODO: MValue_GetEntity is currently broken because the cpp code tries to access the getType method from entity
88
//TODO: we need a way now to create MValues that are giving back the correct values inside storage pointer but without using mvalue_get
99
//TODO: or create own mock cpp lib? maybe add an macro for building mock lib
10-
public class MockAltV<TPlayer, TVehicle, TPed, TObject, TBlip, TCheckpoint, TVoiceChannel, TColShape, TVirtualEntity, TVirtualEntityGroup, TMarker, TConnectionInfo> where TPlayer : IPlayer
10+
public class MockAltV<TPlayer, TVehicle, TPed, TObject, TBlip, TCheckpoint, TVoiceChannel, TColShape,
11+
TVirtualEntity, TVirtualEntityGroup, TMarker, TConnectionInfo> where TPlayer : IPlayer
1112
where TVehicle : IVehicle
1213
where TBlip : IBlip
1314
where TCheckpoint : ICheckpoint
@@ -18,7 +19,7 @@ public class MockAltV<TPlayer, TVehicle, TPed, TObject, TBlip, TCheckpoint, TVoi
1819
where TVirtualEntityGroup : IVirtualEntityGroup
1920
where TMarker : IMarker
2021
where TConnectionInfo : IConnectionInfo
21-
where TColShape: IColShape
22+
where TColShape : IColShape
2223
{
2324
private readonly ICore core;
2425

@@ -35,9 +36,11 @@ public MockAltV(string entryPoint)
3536
var voiceChannelFactory = new MockVoiceChannelFactory<TVoiceChannel>(resource.GetVoiceChannelFactory());
3637
var colShapeFactory = new MockColShapeFactory<TColShape>(resource.GetColShapeFactory());
3738
var virtualEntityFactory = new MockVirtualEntityFactory<TVirtualEntity>(resource.GetVirtualEntityFactory());
38-
var virtualEntityGroupFactory = new MockVirtualEntityGroupFactory<TVirtualEntityGroup>(resource.GetVirtualEntityGroupFactory());
39+
var virtualEntityGroupFactory =
40+
new MockVirtualEntityGroupFactory<TVirtualEntityGroup>(resource.GetVirtualEntityGroupFactory());
3941
var markerFactory = new MockMarkerFactory<TMarker>(resource.GetMarkerFactory());
40-
var connectionInfoFactory = new MockConnectionInfoFactory<TConnectionInfo>(resource.GetConnectionInfoFactory());
42+
var connectionInfoFactory =
43+
new MockConnectionInfoFactory<TConnectionInfo>(resource.GetConnectionInfoFactory());
4144

4245
var playerPool = new MockPlayerPool(playerFactory);
4346
var vehiclePool = new MockVehiclePool(vehicleFactory);
@@ -53,15 +56,17 @@ public MockAltV(string entryPoint)
5356
var connectionInfoPool = new MockConnectionInfoPool(connectionInfoFactory);
5457

5558
var baseObjectPool =
56-
new MockPoolManager(playerPool, vehiclePool, pedPool, objectPool, blipPool, checkpointPool, voiceChannelPool, colShapePool, virtualEntityPool, virtualEntityGroupPool, markerPool, connectionInfoPool);
59+
new MockPoolManager(playerPool, vehiclePool, pedPool, objectPool, blipPool, checkpointPool,
60+
voiceChannelPool, colShapePool, virtualEntityPool, virtualEntityGroupPool, markerPool,
61+
connectionInfoPool);
5762
core = new MockCore(IntPtr.Zero, baseObjectPool, null);
5863
resource.OnStart();
5964
}
6065

6166
public IPlayer ConnectPlayer(string playerName, string reason, Action<IPlayer> intercept = null)
6267
{
6368
var ptr = MockEntities.GetNextPtr(out var entityId);
64-
var player = Alt.Core.PoolManager.Player.Create(core, ptr , entityId);
69+
var player = Alt.Core.PoolManager.Player.Create(core, ptr, entityId);
6570
//player.Name = playerName;
6671
intercept?.Invoke(player);
6772
Alt.CoreImpl.OnPlayerConnect(ptr, player.Id, reason);

api/AltV.Net.Mock/MockBlip.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ public MockBlip(ICore core, IntPtr nativePointer, uint id) : base(core, nativePo
1414

1515
public IntPtr BlipNativePointer { get; }
1616
public bool IsGlobal { get; set; }
17+
1718
public void AddTargetPlayer(IPlayer player)
1819
{
1920
throw new NotImplementedException();

api/AltV.Net.Mock/MockBlipFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public MockBlipFactory(IBaseObjectFactory<IBlip> blipFactory)
1414

1515
public IBlip Create(ICore core, IntPtr entityPointer, uint id)
1616
{
17-
return MockDecorator<TEntity, IBlip>.Create((TEntity) blipFactory.Create(core, entityPointer, id),
17+
return MockDecorator<TEntity, IBlip>.Create((TEntity)blipFactory.Create(core, entityPointer, id),
1818
new MockBlip(core, entityPointer, id));
1919
}
2020
}

api/AltV.Net.Mock/MockCheckpoint.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ public MockCheckpoint(ICore core, IntPtr nativePointer, uint id) : base(core, na
1111
}
1212

1313

14-
1514
public IntPtr CheckpointNativePointer { get; }
1615
public byte CheckpointType { get; set; }
1716
public float Height { get; set; }

0 commit comments

Comments
 (0)