Skip to content

Commit ea759cd

Browse files
committed
Merge branch 'dev' into rc
2 parents 8adb9b3 + 58866e9 commit ea759cd

File tree

80 files changed

+1711
-108
lines changed

Some content is hidden

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

80 files changed

+1711
-108
lines changed

.github/workflows/documentation.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ jobs:
2424
if: "(contains(github.event.ref, '/tags/') && github.event.created) || contains(github.event.head_commit.message, 'Update documentation')"
2525
steps:
2626
- name: Dispatch event to altv-docs repo
27-
uses: peter-evans/repository-dispatch@v2.0.0
27+
uses: peter-evans/repository-dispatch@v2.1.2
2828
with:
2929
token: ${{ secrets.PAT_TOKEN }}
3030
repository: altmp/altv-docs

.github/workflows/dotnetcore.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
runs-on: windows-latest
1313

1414
steps:
15-
- uses: actions/checkout@v3
15+
- uses: actions/checkout@v4
1616
- name: Setup .NET Core
1717
uses: actions/setup-dotnet@v3
1818
with:
@@ -25,7 +25,7 @@ jobs:
2525
runs-on: ubuntu-latest
2626

2727
steps:
28-
- uses: actions/checkout@v3
28+
- uses: actions/checkout@v4
2929
- name: Setup .NET Core
3030
uses: actions/setup-dotnet@v3
3131
with:

.github/workflows/release.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ on:
22
push:
33
tags:
44
- '*.*.*'
5-
- '*.*.*-*'
5+
- '*.*.*-*'
66
jobs:
77
fetch-nethost-linux:
88
runs-on: ubuntu-22.04
99
steps:
1010
- name: Check out repository code
11-
uses: actions/checkout@v3
11+
uses: actions/checkout@v4
1212
- name: Setup .NET Core
1313
shell: pwsh
1414
run: |
@@ -22,7 +22,7 @@ jobs:
2222
runs-on: windows-2022
2323
steps:
2424
- name: Check out repository code
25-
uses: actions/checkout@v3
25+
uses: actions/checkout@v4
2626
- name: Setup .NET Core
2727
shell: pwsh
2828
run: |
@@ -36,11 +36,11 @@ jobs:
3636
runs-on: ubuntu-latest
3737
needs: [fetch-nethost-linux, fetch-nethost-windows]
3838
steps:
39-
- uses: actions/checkout@v3
39+
- uses: actions/checkout@v4
4040
with:
4141
submodules: recursive
4242
- name: Setup .NET Core
43-
uses: actions/setup-dotnet@v2
43+
uses: actions/setup-dotnet@v3
4444
with:
4545
dotnet-version: 6.0.x
4646
- id: build_info
@@ -187,7 +187,7 @@ jobs:
187187
# nethost: nethost-linux-arm,
188188
# }
189189
steps:
190-
- uses: actions/checkout@v3
190+
- uses: actions/checkout@v4
191191
with:
192192
submodules: recursive
193193
- uses: actions/download-artifact@v3
@@ -425,7 +425,7 @@ jobs:
425425
NUGET_KEY: ${{secrets.NUGET_API_KEY}}
426426
INCLUDE_SYMBOLS: true
427427
TAG_COMMIT: false
428-
NO_BUILD: true
428+
NO_BUILD: true
429429
build-docker:
430430
name: Trigger Docker image build
431431
runs-on: ubuntu-latest

api/AltV.Net.Async.CodeGen/AltV.Net.Async.CodeGen.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@
3434
<PackagePath>\</PackagePath>
3535
</None>
3636
</ItemGroup>
37-
37+
3838
<ItemGroup>
3939
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="3.8.0" />
40-
<PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.3" />
40+
<PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.4" />
4141
</ItemGroup>
42-
42+
4343
<Target Name="AddNuGetDlls" BeforeTargets="_GetPackageFiles">
4444
<JoinItems Left="@(ResolvedCompileFileDefinitions)" LeftKey="NuGetPackageId" LeftMetadata="*"
4545
Right="@(PackageReference)" RightKey="" RightMetadata="*"

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/Elements/Entities/AsyncBaseObject.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,15 @@ public void SetMetaData(string key, object value)
6161
}
6262
}
6363

64+
public void SetMetaData(Dictionary<string, object> metaData)
65+
{
66+
lock (BaseObject)
67+
{
68+
if (!AsyncContext.CheckIfExistsNullable(BaseObject)) return;
69+
this.BaseObject.SetMetaData(metaData);
70+
}
71+
}
72+
6473
public bool GetMetaData<T>(string key, out T result)
6574
{
6675
AsyncContext?.RunAll();
@@ -263,6 +272,15 @@ public void SetSyncedMetaData(string key, object value)
263272
}
264273
}
265274

275+
public void SetSyncedMetaData(Dictionary<string, object> metaData)
276+
{
277+
lock (BaseObject)
278+
{
279+
if (!AsyncContext.CheckIfExistsNullable(BaseObject)) return;
280+
BaseObject.SetSyncedMetaData(metaData);
281+
}
282+
}
283+
266284
public void SetSyncedMetaData(string key, in MValueConst value)
267285
{
268286
lock (BaseObject)

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

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
using System;
2+
using System.Collections.Generic;
23
using System.Diagnostics.CodeAnalysis;
34
using AltV.Net.Data;
5+
using AltV.Net.Elements.Args;
46
using AltV.Net.Elements.Entities;
57

68
namespace AltV.Net.Async.Elements.Entities
@@ -154,5 +156,120 @@ public ICheckpoint ToAsync(IAsyncContext asyncContext)
154156
{
155157
return this;
156158
}
159+
160+
public void SetStreamSyncedMetaData(string key, object value)
161+
{
162+
lock (Checkpoint)
163+
{
164+
if (!AsyncContext.CheckIfExistsNullable(Checkpoint)) return;
165+
Checkpoint.SetStreamSyncedMetaData(key, value);
166+
}
167+
}
168+
169+
public void SetStreamSyncedMetaData(Dictionary<string, object> metaData)
170+
{
171+
lock (Checkpoint)
172+
{
173+
if (!AsyncContext.CheckIfExistsNullable(Checkpoint)) return;
174+
Checkpoint.SetStreamSyncedMetaData(metaData);
175+
}
176+
}
177+
178+
public void SetStreamSyncedMetaData(string key, in MValueConst value)
179+
{
180+
lock (Checkpoint)
181+
{
182+
if (!AsyncContext.CheckIfExistsNullable(Checkpoint)) return;
183+
Checkpoint.SetStreamSyncedMetaData(key, value);
184+
}
185+
}
186+
187+
public void DeleteStreamSyncedMetaData(string key)
188+
{
189+
lock (Checkpoint)
190+
{
191+
if (!AsyncContext.CheckIfExistsNullable(Checkpoint)) return;
192+
Checkpoint.DeleteStreamSyncedMetaData(key);
193+
}
194+
}
195+
196+
public bool HasStreamSyncedMetaData(string key)
197+
{
198+
lock (Checkpoint)
199+
{
200+
if (!AsyncContext.CheckIfExistsNullable(Checkpoint)) return default;
201+
return Checkpoint.HasStreamSyncedMetaData(key);
202+
}
203+
}
204+
205+
public bool GetStreamSyncedMetaData(string key, out int value)
206+
{
207+
lock (Checkpoint)
208+
{
209+
if (!AsyncContext.CheckIfExistsOrCachedNullable(Checkpoint))
210+
{
211+
value = default;
212+
return false;
213+
}
214+
215+
return Checkpoint.GetStreamSyncedMetaData(key, out value);
216+
}
217+
}
218+
219+
public bool GetStreamSyncedMetaData(string key, out uint value)
220+
{
221+
lock (Checkpoint)
222+
{
223+
if (!AsyncContext.CheckIfExistsOrCachedNullable(Checkpoint))
224+
{
225+
value = default;
226+
return false;
227+
}
228+
229+
return Checkpoint.GetStreamSyncedMetaData(key, out value);
230+
}
231+
}
232+
233+
public bool GetStreamSyncedMetaData(string key, out float value)
234+
{
235+
lock (Checkpoint)
236+
{
237+
if (!AsyncContext.CheckIfExistsOrCachedNullable(Checkpoint))
238+
{
239+
value = default;
240+
return false;
241+
}
242+
243+
return Checkpoint.GetStreamSyncedMetaData(key, out value);
244+
}
245+
}
246+
247+
public void GetStreamSyncedMetaData(string key, out MValueConst value)
248+
{
249+
lock (Checkpoint)
250+
{
251+
if (!AsyncContext.CheckIfExistsOrCachedNullable(Checkpoint))
252+
{
253+
value = default;
254+
return;
255+
}
256+
257+
Checkpoint.GetStreamSyncedMetaData(key, out value);
258+
}
259+
}
260+
261+
public bool GetStreamSyncedMetaData<T>(string key, out T value)
262+
{
263+
lock (Checkpoint)
264+
{
265+
if (!AsyncContext.CheckIfExistsOrCachedNullable(Checkpoint))
266+
{
267+
value = default;
268+
return false;
269+
}
270+
271+
return Checkpoint.GetStreamSyncedMetaData(key, out value);
272+
}
273+
}
157274
}
158275
}

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

Lines changed: 10 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.Data;
45
using AltV.Net.Elements.Args;
@@ -130,6 +131,15 @@ public void SetStreamSyncedMetaData(string key, object value)
130131
}
131132
}
132133

134+
public void SetStreamSyncedMetaData(Dictionary<string, object> metaData)
135+
{
136+
lock (Entity)
137+
{
138+
if (!AsyncContext.CheckIfExistsNullable(Entity)) return;
139+
Entity.SetStreamSyncedMetaData(metaData);
140+
}
141+
}
142+
133143
public bool GetStreamSyncedMetaData<T1>(string key, out T1 result)
134144
{
135145
lock (Entity)

0 commit comments

Comments
 (0)