using System; using CitizenFX.Core; using CitizenFX.Core.Native; using Framework.Server.Extensions; using Framework.Shared.Models; namespace Framework.Server.Handlers { public static class JoinHandler { public static readonly Vector3 Spawn = new Vector3(258.7932f, -942.7487f, 29.3940f); public static async void OnPlayerJoining([FromSource] Player player) { API.SetPlayerRoutingBucket(player.Handle, player.ServerId()); API.SetRoutingBucketPopulationEnabled(player.ServerId(), false); API.SetRoutingBucketEntityLockdownMode(player.ServerId(), "strict"); API.SetPlayerInvincible(player.Handle, true); var identifier = "steam:" + player.Identifiers["steam"]; var result = await MySql.FetchAll($"SELECT * FROM players WHERE owner = '{identifier}'"); if (result.Length == 0) player.TriggerEvent("client:spawn:register"); else player.TriggerEvent("client:spawn:choose", result); } public static async void OnRegister([FromSource] Player player, dynamic dData) { var data = new PlayerData(dData); var identifier = "steam:" + player.Identifiers["steam"]; await MySql.Execute($"INSERT INTO players VALUES ('{identifier}', '{Guid.NewGuid()}', {data.sex}, {data.height}, '{data.firstName}', '{data.lastName}', '{data.birth}', '{data.skin}')"); player.Character.Position = Spawn; } } }