From 3c1dfea4029f483cba7b88d02631148a5afae5b3 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 | 77 +++++++------------ 2 files changed, 29 insertions(+), 49 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 255b4a5c..9e2deda1 100644 --- a/ReallifeGamemode.Server/Events/ExitVehicle.cs +++ b/ReallifeGamemode.Server/Events/ExitVehicle.cs @@ -14,21 +14,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) { @@ -36,14 +56,14 @@ 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) { client.TriggerEvent("SERVER:setMarkerBehindVehicle", vehicle); } } - if (vehicle.GetServerVehicle() is SchoolVehicle vehS) + if (serverVehicle is SchoolVehicle schoolVehicle) { if (client.HasData("ActiveSchool")) { @@ -56,45 +76,6 @@ 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 - } - } - 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"); - } - //} - }); - }); } } }