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(string name, Func> 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(string name, Func> handler, bool castViaJson = false) { ESX.RegisterServerCallback(name, async (source, cb, args) => { try { TArg arg; if (castViaJson) { arg = JsonConvert.DeserializeObject(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); } }); } } }