Archived
Private
Public Access
1
0
This repository has been archived on 2026-02-04. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
ProjectBackup/C#/FiveM/TaxiJob/TaxiJob.Server/ServerScript.cs
2022-11-12 13:10:03 +01:00

49 lines
1.6 KiB
C#

using System;
using System.Threading.Tasks;
using CitizenFX.Core;
using Newtonsoft.Json;
using Nexd.ESX.Server;
namespace TaxiJob.Server {
public sealed class ServerScript : BaseScript {
public ServerScript() {
}
private static void RegisterCallback<TRes>(string name, Func<xPlayer, Task<TRes>> handler) {
ESX.RegisterServerCallback(name, async (source, cb, args) => {
try {
var result = await handler.Invoke(ESX.GetPlayerFromId(source));
cb(result);
}
catch (Exception e) {
Debug.WriteLine(e.ToString());
cb(null);
}
});
}
private static void RegisterCallback<TRes, TArg>(string name, Func<xPlayer, TArg, Task<TRes>> handler, bool castViaJson = false) {
ESX.RegisterServerCallback(name, async (source, cb, args) => {
try {
TArg arg;
if (castViaJson) {
arg = JsonConvert.DeserializeObject<TArg>(JsonConvert.SerializeObject(args));
}
else {
arg = Convert.ChangeType(args, typeof(TArg));
}
var result = await handler.Invoke(ESX.GetPlayerFromId(source), arg);
cb(result);
}
catch (Exception e) {
Debug.WriteLine(e.ToString());
cb(null);
}
});
}
}
}