Files
reallife-gamemode/ReallifeGamemode.Server/Events/Disconnect.cs
2020-05-04 15:40:34 +02:00

104 lines
3.2 KiB
C#

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.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<Vehicle>("LastVehicle");
JobBase job = JobManager.GetJob(player.GetUser().JobId ?? -1);
if (job != null)
{
if (player.Vehicle.GetServerVehicle() is JobVehicle vehJ)
{
if (player.Vehicle.GetData<bool>("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<bool>("isDead") : false;
}
player.SetData("isLoggedIn", false);
}
}
}