49 lines
1.6 KiB
C#
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);
|
|
}
|
|
});
|
|
}
|
|
|
|
}
|
|
} |