using System; using System.Collections.Generic; using System.Text; using System.Timers; using GTANetworkAPI; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Managers; using ReallifeGamemode.Server.Services; using ReallifeGamemode.Server.Util; using ReallifeGamemode.Server.WeaponDeal; using ReallifeGamemode.Database.Models; namespace ReallifeGamemode.Server.Events { public class ExitVehicle : Script { [ServerEvent(Event.PlayerExitVehicleAttempt)] public void OnPlayerExitVehicle(Player client, GTANetworkAPI.Vehicle vehicle) { if (client == null) { return; } if (client.VehicleSeat != 0) { return; } if (vehicle == null) { return; } ServerVehicle serverVehicle = vehicle.GetServerVehicle(); if (serverVehicle == null) { return; } if (serverVehicle is FactionVehicle factionVehicle) { User u = client.GetUser(); if (u == null) { return; } if ((u.FactionId != null) && (factionVehicle.GetOwners().Contains(u.FactionId ?? 0)) && (factionVehicle.Model == WeaponDealManager.WEAPON_DEAL_GANG_VEHICLE_HASH || factionVehicle.Model == WeaponDealManager.WEAPON_DEAL_STAATSFRAK_VEHICLE_HASH) && vehicle.HasData("weaponDeal") && vehicle.GetData("weaponDeal") == true) { CheckPointHandle.RemovePlayerHandlerFromList(client); client.TriggerEvent("destroyCP"); } else if ((u.FactionId != null) && (factionVehicle.Model == WeaponDealManager.WEAPON_DEAL_GANG_VEHICLE_HASH || factionVehicle.Model == WeaponDealManager.WEAPON_DEAL_STAATSFRAK_VEHICLE_HASH) && vehicle.HasData("WeaponDealLoad") && vehicle.GetData("WeaponDealLoad") == true) { client.TriggerEvent("SERVER:setMarkerBehindVehicle", vehicle); } client.TriggerEvent("CheckWaterCrash", vehicle); } if (serverVehicle is SchoolVehicle schoolVehicle) { if (client.HasData("ActiveSchool")) { client.SendNotification("~r~Du hast deine Prüfung unterbrochen!", true); client.ResetData("ActiveSchool"); client.WarpOutOfVehicle(); ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(vehicle); ServerVehicleExtensions.Spawn(sVeh, vehicle); client.SafeTeleport(sVeh.Position); CheckPointHandle.DeleteCheckpoints(client); } } using (var dbContext = new DatabaseContext()) { ServerVehicle sV = vehicle.GetServerVehicle(dbContext); if (sV is UserVehicle) { Vector3 pos = vehicle.Position; sV.PositionX = pos.X; sV.PositionY = pos.Y; sV.PositionZ = pos.Z; sV.Heading = vehicle.Heading; dbContext.SaveChanges(); client.TriggerEvent("CheckWaterCrash", vehicle); } } } } }