using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using GTANetworkAPI; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Job; using ReallifeGamemode.Server.Managers; using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Util; using ReallifeGamemode.Services; using ReallifeGamemode.Server.Services; using ReallifeGamemode.Database; using ReallifeGamemode.Server.Types; /** * @overview Life of German Reallife - Event Login (Login.cs) * @author VegaZ * @copyright (c) 2008 - 2018 Life of German */ namespace ReallifeGamemode.Server.Events { public class Disconnect : Script { [ServerEvent(Event.PlayerDisconnected)] public void OnPlayerDisconnected(Player player, DisconnectionType type, string reason) { if (!player.IsLoggedIn()) return; if (type == DisconnectionType.Left) { NAPI.Util.ConsoleOutput(player.Name + " left"); } if (type == DisconnectionType.Kicked) { NAPI.Util.ConsoleOutput(player.Name + " kicked"); } if (type == DisconnectionType.Timeout) { NAPI.Util.ConsoleOutput(player.Name + " Timeoutet"); } /*if (GlobalHelper.DutyAdmins.Contains(player)) { GlobalHelper.DutyAdmins.Remove(player); }*/ if (player.GetUser().IsAdmin(AdminLevel.MAPPING)) { ChatService.BroadcastAdmin("!{#FFFF00}*** " + player.Name + " hat den Server verlassen", AdminLevel.MAPPING); } //Vehicle LastVehicle = player.GetData("LastVehicle"); JobBase job = JobManager.GetJob(player.GetUser().JobId ?? -1); if (job != null) { if (player.Vehicle.GetServerVehicle() is JobVehicle vehJ) { if (player.Vehicle.GetData("timerJobVehicleRespawn") == true) { if (vehJ.GetJob().GetUsersInJob().Contains(player)) { if (player.Vehicle != null) { player.Vehicle.ResetData("timerJobVehicleRespawn"); ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(player.Vehicle); ServerVehicleExtensions.Spawn(sVeh, player.Vehicle); } } } } JobManager jm = new JobManager(); if (jm.playerTimersJobVehicleRespawn.ContainsKey(player)) { jm.playerTimersJobVehicleRespawn[player].Stop(); } player.ResetData("HatRoute"); player.ResetData("PilotenBase"); player.ResetData("JobVehicleFrei"); job.StopJob(player); //ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet."); CheckPointHandle.DeleteCheckpoints(player); } using (var saveUser = new DatabaseContext()) { var user = player.GetUser(saveUser); Vector3 pos = player.Position; user.PositionX = pos.X; user.PositionY = pos.Y; user.PositionZ = pos.Z; saveUser.SaveChanges(); user.Dead = player.HasData("isDead") ? (bool)player.GetData("isDead") : false; } player.SetData("isLoggedIn", false); } } }