From 4cf6127d08927037132203b7c664ef1baa7a0927 Mon Sep 17 00:00:00 2001 From: hydrant Date: Tue, 18 May 2021 00:11:30 +0200 Subject: [PATCH] prevent nullreference in exitvehicle --- .../Events/EnterVehicleAttempt.cs | 1 - ReallifeGamemode.Server/Events/ExitVehicle.cs | 79 +++++++------------ 2 files changed, 30 insertions(+), 50 deletions(-) diff --git a/ReallifeGamemode.Server/Events/EnterVehicleAttempt.cs b/ReallifeGamemode.Server/Events/EnterVehicleAttempt.cs index 0370afa7..f4814c45 100644 --- a/ReallifeGamemode.Server/Events/EnterVehicleAttempt.cs +++ b/ReallifeGamemode.Server/Events/EnterVehicleAttempt.cs @@ -228,7 +228,6 @@ namespace ReallifeGamemode.Server.Events } else { - ExitVehicle.timerNoobRollerRespawn.Stop(); vehicle.SetData("NoobSpawnVehicleTimer", false); } } diff --git a/ReallifeGamemode.Server/Events/ExitVehicle.cs b/ReallifeGamemode.Server/Events/ExitVehicle.cs index 431ac5c0..bb8d8af2 100644 --- a/ReallifeGamemode.Server/Events/ExitVehicle.cs +++ b/ReallifeGamemode.Server/Events/ExitVehicle.cs @@ -15,21 +15,41 @@ namespace ReallifeGamemode.Server.Events { public class ExitVehicle : Script { - object LastVehicle; - public static Timer timerNoobRollerRespawn = new Timer(600000); //10 Minuten Timer NoobRollerRespawn [ServerEvent(Event.PlayerExitVehicleAttempt)] public void OnPlayerExitVehicle(Player client, GTANetworkAPI.Vehicle vehicle) { - LastVehicle = vehicle; - if (client.VehicleSeat != 0) + if (client == null) + { return; + } - if (vehicle.GetServerVehicle() is FactionVehicle veh) + 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) - && (veh.GetOwners().Contains(u.FactionId ?? 0)) - && (veh.Model == WeaponDealManager.WEAPON_DEAL_GANG_VEHICLE_HASH || veh.Model == WeaponDealManager.WEAPON_DEAL_STAATSFRAK_VEHICLE_HASH) + && (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) { @@ -37,7 +57,7 @@ namespace ReallifeGamemode.Server.Events client.TriggerEvent("destroyCP"); } else if ((u.FactionId != null) - && (veh.Model == WeaponDealManager.WEAPON_DEAL_GANG_VEHICLE_HASH || veh.Model == WeaponDealManager.WEAPON_DEAL_STAATSFRAK_VEHICLE_HASH) + && (factionVehicle.Model == WeaponDealManager.WEAPON_DEAL_GANG_VEHICLE_HASH || factionVehicle.Model == WeaponDealManager.WEAPON_DEAL_STAATSFRAK_VEHICLE_HASH) && vehicle.HasData("WeaponDealLoad") && vehicle.GetData("WeaponDealLoad") == true) { @@ -45,7 +65,7 @@ namespace ReallifeGamemode.Server.Events } client.TriggerEvent("CheckWaterCrash", vehicle); } - if (vehicle.GetServerVehicle() is SchoolVehicle vehS) + if (serverVehicle is SchoolVehicle schoolVehicle) { if (client.HasData("ActiveSchool")) { @@ -58,22 +78,13 @@ namespace ReallifeGamemode.Server.Events CheckPointHandle.DeleteCheckpoints(client); } } - if (vehicle.GetData("NoobSpawnVehicle") == true) - { - timerNoobRollerRespawn.Start(); - vehicle.SetData("NoobSpawnVehicleTimer", true); - timerNoobRollerRespawn.AutoReset = false; - timerNoobRollerRespawn.Elapsed += Timer600000_Elapsed; - //LastVehicle = vehicle; - //timerNoobRollerRespawn.Elapsed += async (sender, e) => {await - } using (var dbContext = new DatabaseContext()) { ServerVehicle sV = vehicle.GetServerVehicle(dbContext); if (sV is UserVehicle) - { + { Vector3 pos = vehicle.Position; sV.PositionX = pos.X; @@ -86,35 +97,5 @@ namespace ReallifeGamemode.Server.Events } } } - private static void Timer600000_Elapsed(object sender, ElapsedEventArgs e) - { - //ExitVehicle c = new ExitVehicle(); - //Vehicle veh = c.LastVehicle; - NAPI.Task.Run(() => - { - NAPI.Pools.GetAllVehicles().ForEach(v => - { - if (v.GetData("NoobSpawnVehicle") == true) - { - if (v.GetData("NoobSpawnVehicleTimer") == true) - { - v.ResetData("NoobSpawnVehicleTimer"); - v.ResetData("NoobSpawnVehicle"); - VehicleManager.DeleteVehicle(v); - } - } - }); - NAPI.Pools.GetAllPlayers().ForEach(p => - { - //if (!p.IsInVehicle) - //{ - if (p.GetData("HatNoobSpawnVehicle") == true) - { - p.ResetData("HatNoobSpawnVehicle"); - } - //} - }); - }); - } } }