Skip to content

Commit

Permalink
Merge branch 'rc' into release
Browse files Browse the repository at this point in the history
  • Loading branch information
Doxoh committed Jan 12, 2024
2 parents 877b376 + 227bf6c commit d99618a
Show file tree
Hide file tree
Showing 88 changed files with 1,530 additions and 1,783 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ on:
push:
tags:
- '*.*.*'
- '*.*.*-*'
- '*.*.*-*.*'
jobs:
fetch-nethost-linux:
runs-on: ubuntu-22.04
Expand Down
12 changes: 0 additions & 12 deletions api/AltV.Net.Async/AltAsync.Vehicle.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,18 +22,6 @@ public static Task<IVehicle> CreateVehicle(VehicleModel model, Position pos, Rot
public static Task<IVehicle> CreateVehicle(string model, Position pos, Rotation rot, uint streamingDistance = 0) =>
CreateVehicle(Alt.Hash(model), pos, rot, streamingDistance);

[Obsolete("Use AltAsync.CreateVehicle or Alt.CreateVehicle instead")]
public static IVehicleBuilder CreateVehicleBuilder(uint model, Position pos, Rotation rot) =>
new VehicleBuilder(model, pos, rot);

[Obsolete("Use AltAsync.CreateVehicle or Alt.CreateVehicle instead")]
public static IVehicleBuilder CreateVehicleBuilder(VehicleModel model, Position pos, Rotation rot) =>
new VehicleBuilder((uint) model, pos, rot);

[Obsolete("Use AltAsync.CreateVehicle or Alt.CreateVehicle instead")]
public static IVehicleBuilder CreateVehicleBuilder(string model, Position pos, Rotation rot) =>
new VehicleBuilder(Alt.Hash(model), pos, rot);

[Obsolete("Use async entities instead")]
public static Task<IPlayer> GetDriverAsync(this IVehicle vehicle) => AltVAsync.Schedule(() =>
!vehicle.Exists ? null : vehicle.Driver);
Expand Down
34 changes: 26 additions & 8 deletions api/AltV.Net.Async/AsyncCore.cs
Original file line number Diff line number Diff line change
Expand Up @@ -724,9 +724,9 @@ await ServerStartedAsyncEventHandler.CallAsync(@delegate =>
});
}

public override void OnPlayerRequestControlEvent(IEntity target, IPlayer player)
public override void OnPlayerRequestControlEvent(IntPtr eventPtr, IEntity target, IPlayer player)
{
base.OnPlayerRequestControlEvent(target, player);
base.OnPlayerRequestControlEvent(eventPtr, target, player);

if (!PlayerRequestControlAsyncEventHandler.HasEvents()) return;
Task.Run(async () =>
Expand Down Expand Up @@ -869,14 +869,14 @@ public override void OnGivePedScriptedTaskEvent(IntPtr eventPointer, IPlayer sou
}

public override void OnPlayerConnectDeniedEvent(PlayerConnectDeniedReason reason, string name, string ip, ulong passwordHash,
bool isDebug, string branch, uint majorVersion, string cdnUrl, long discordId)
bool isDebug, string branch, ushort versionMajor, ushort versionMinor, string cdnUrl, long discordId)
{
base.OnPlayerConnectDeniedEvent(reason, name, ip, passwordHash, isDebug, branch, majorVersion, cdnUrl, discordId);
base.OnPlayerConnectDeniedEvent(reason, name, ip, passwordHash, isDebug, branch, versionMajor, versionMinor, cdnUrl, discordId);

if (!PlayerConnectDeniedAsyncEventHandler.HasEvents()) return;
Task.Run(async () =>
{
await PlayerConnectDeniedAsyncEventHandler.CallAsync(@delegate => @delegate(reason, name, ip, passwordHash, isDebug, branch, majorVersion, cdnUrl, discordId));
await PlayerConnectDeniedAsyncEventHandler.CallAsync(@delegate => @delegate(reason, name, ip, passwordHash, isDebug, branch, versionMajor, versionMinor, cdnUrl, discordId));
});
}

Expand Down Expand Up @@ -968,17 +968,35 @@ public override void OnPlayerStopTalkingEvent(IPlayer player)
});
}

public override void OnScriptRPCEvent(IntPtr eventpointer, IPlayer target, string name, IntPtr[] args, ushort answerId)
public override void OnScriptRPCEvent(IntPtr eventpointer, IPlayer target, string name, IntPtr[] args, ushort answerId, bool async)
{
base.OnScriptRPCEvent(eventpointer, target, name, args, answerId);
if (!UnansweredServerRpcRequest.Contains(answerId))
{
UnansweredServerRpcRequest.Add(answerId);
}
base.OnScriptRPCEvent(eventpointer, target, name, args, answerId, true);

if (UnansweredServerRpcRequest.Contains(answerId))
{
unsafe
{
Library.Shared.Event_ScriptRPCEvent_WillAnswer(eventpointer);
}
}

if (!ScriptRpcAsyncEventHandler.HasEvents()) return;
Task.Run(async () =>
{
var mValues = MValueConst.CreateFrom(this, args);
var clientScriptRPCEvent = new ScriptRpcEvent(this, eventpointer);
var clientScriptRPCEvent = new AsyncScriptRpcEvent(target, answerId);
await ScriptRpcAsyncEventHandler.CallAsync(@delegate => @delegate(clientScriptRPCEvent, target, name, mValues.Select(x => x.ToObject()).ToArray(), answerId));
});

if (UnansweredServerRpcRequest.Contains(answerId))
{
target.EmitRPCAnswer(answerId, null, "Answer not handled");
UnansweredServerRpcRequest.Remove(answerId);
}
}

public override void OnScriptAnswerRPCEvent(IPlayer target, ushort answerid, IntPtr mValue, string answererror)
Expand Down
36 changes: 36 additions & 0 deletions api/AltV.Net.Async/AsyncScriptRpcEvent.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
using System;
using AltV.Net.Elements.Entities;
using AltV.Net.Shared.Elements.Entities;

namespace AltV.Net.Async;

public class AsyncScriptRpcEvent : IScriptRPCEvent
{
private readonly IPlayer _target;
private readonly ushort _answerId;

public AsyncScriptRpcEvent(IPlayer target, ushort answerId)
{
_target = target;
_answerId = answerId;
}

public IntPtr ScriptRPCNativePointer { get; }

public bool WillAnswer()
{
return true;
}

public bool Answer(object answer)
{
_target.EmitRPCAnswer(_answerId, answer, "");
return true;
}

public bool AnswerWithError(string error)
{
_target.EmitRPCAnswer(_answerId, null, error);
return true;
}
}
48 changes: 0 additions & 48 deletions api/AltV.Net.Async/Elements/Entities/AsyncBaseObject.cs
Original file line number Diff line number Diff line change
Expand Up @@ -95,51 +95,6 @@ public bool GetMetaData<T>(string key, out T result)
}
}

public bool GetMetaData(string key, out int result)
{
AsyncContext?.RunAll();
lock (BaseObject)
{
if (!AsyncContext.CheckIfExistsOrCachedNullable(BaseObject))
{
result = default;
return false;
}

return BaseObject.GetMetaData(key, out result);
}
}

public bool GetMetaData(string key, out uint result)
{
AsyncContext?.RunAll();
lock (BaseObject)
{
if (!AsyncContext.CheckIfExistsOrCachedNullable(BaseObject))
{
result = default;
return false;
}

return BaseObject.GetMetaData(key, out result);
}
}

public bool GetMetaData(string key, out float result)
{
AsyncContext?.RunAll();
lock (BaseObject)
{
if (!AsyncContext.CheckIfExistsOrCachedNullable(BaseObject))
{
result = default;
return false;
}

return BaseObject.GetMetaData(key, out result);
}
}

public void SetMetaData(string key, in MValueConst value)
{
lock (BaseObject)
Expand Down Expand Up @@ -232,9 +187,6 @@ public void OnDestroy()
BaseObject.OnDestroy();
}

[Obsolete("Use Destroy() instead")]
public void Remove() => Destroy();

public void Destroy()
{
AsyncContext.RunOnMainThreadBlockingNullable(() => BaseObject.Destroy());
Expand Down
18 changes: 16 additions & 2 deletions api/AltV.Net.Async/Elements/Entities/AsyncConnectionInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -96,17 +96,31 @@ public string Branch
}
}
}
public uint Build

public ushort VersionMajor
{
get
{
lock (ConnectionInfo)
{
if (!AsyncContext.CheckIfExistsOrCachedNullable(ConnectionInfo)) return default;
return ConnectionInfo.VersionMajor;
}
}
}

public ushort VersionMinor
{
get
{
lock (ConnectionInfo)
{
if (!AsyncContext.CheckIfExistsOrCachedNullable(ConnectionInfo)) return default;
return ConnectionInfo.Build;
return ConnectionInfo.VersionMinor;
}
}
}

public string CdnUrl
{
get
Expand Down
Loading

0 comments on commit d99618a

Please sign in to comment.