diff --git a/ReallifeGamemode.Server/Events/Key.cs b/ReallifeGamemode.Server/Events/Key.cs index d1abdca1..e2cb4c5c 100644 --- a/ReallifeGamemode.Server/Events/Key.cs +++ b/ReallifeGamemode.Server/Events/Key.cs @@ -12,6 +12,7 @@ using ReallifeGamemode.Server.Managers; using ReallifeGamemode.Server.Services; using ReallifeGamemode.Database; using ReallifeGamemode.Database.Models; +using ReallifeGamemode.Server.Util; /** * @overview Life of German Reallife - Event Key (Key.cs) * @author VegaZ @@ -377,8 +378,56 @@ namespace ReallifeGamemode.Server.Events public void KeyPressN(Client player) { if (!player.IsLoggedIn()) return; - + if (!player.IsInVehicle) return; + if (player.VehicleSeat != -1) return; + + Vehicle v = player.Vehicle; + + User u = player.GetUser(); + if (u == null) return; + + if (NAPI.Entity.GetEntityVelocity(v).Length() > 1) + { + player.SendNotification("~r~Der Motor kann nur im Stand betätigt werden.", true); + return; + } + + bool state = VehicleStreaming.GetEngineState(v); + ServerVehicle sV = v.GetServerVehicle(); + if (sV != null) + { + if (sV is ShopVehicle) + { + VehicleStreaming.SetEngineState(v, false); + return; + } + else if (sV is FactionVehicle fV) + { + if (fV.FactionId != u.FactionId && !state && !u.IsAdmin(AdminLevel.ADMIN3)) + { + player.SendNotification("~r~Du hast keinen Schlüssel."); + return; + } + } + else if (sV is GroupVehicle gV) + { + if (gV.GroupId != u.Group.Id && !state && !u.IsAdmin(AdminLevel.ADMIN3)) + { + player.SendNotification("~r~Du hast keinen Schlüssel."); + return; + } + } + else if (sV is JobVehicle jV) + { + if (!jV.GetJob().GetUsersInJob().Contains(player) && !u.IsAdmin(AdminLevel.ADMIN3)) + { + player.SendNotification("~r~Du hast keinen Schlüssel."); + return; + } + } + } + VehicleStreaming.SetEngineState(v, !state); } [RemoteEvent("keyPress:X")]