diff --git a/ReallifeGamemode.Server/Events/ExitVehicle.cs b/ReallifeGamemode.Server/Events/ExitVehicle.cs index 37806165..01365cef 100644 --- a/ReallifeGamemode.Server/Events/ExitVehicle.cs +++ b/ReallifeGamemode.Server/Events/ExitVehicle.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Text; using System.Timers; @@ -25,12 +25,20 @@ namespace ReallifeGamemode.Server.Events if (vehicle.GetServerVehicle() is FactionVehicle veh) { User u = client.GetUser(); - if ((u.FactionId != null) && (veh.GetOwners().Contains(u.FactionId ?? 0)) && ((VehicleHash)vehicle.Model == VehicleHash.Burrito3) && vehicle.HasData("weaponDeal") && vehicle.GetData("weaponDeal") == true) + if ((u.FactionId != null) + && (veh.GetOwners().Contains(u.FactionId ?? 0)) + && ((VehicleHash)vehicle.Model == VehicleHash.Burrito3 || (VehicleHash)vehicle.Model == VehicleHash.Policet) + && vehicle.HasData("weaponDeal") + && vehicle.GetData("weaponDeal") == true) { CheckPointHandle.RemovePlayerHandlerFromList(client); client.TriggerEvent("destroyCP"); } - else if ((u.FactionId != null) && (veh.GetOwners().Contains(u.FactionId ?? 0)) && ((VehicleHash)vehicle.Model == VehicleHash.Burrito3 || (VehicleHash)vehicle.Model == VehicleHash.Policet) && vehicle.HasData("WeaponDealLoad") && vehicle.GetData("WeaponDealLoad") == true) + else if ((u.FactionId != null) + && (veh.GetOwners().Contains(u.FactionId ?? 0)) + && ((VehicleHash)vehicle.Model == VehicleHash.Burrito3 || (VehicleHash)vehicle.Model == VehicleHash.Policet) + && vehicle.HasData("WeaponDealLoad") + && vehicle.GetData("WeaponDealLoad") == true) { client.TriggerEvent("SERVER:setMarkerBehindVehicle", vehicle); } diff --git a/ReallifeGamemode.Server/WeaponDeal/WeaponDealManager.cs b/ReallifeGamemode.Server/WeaponDeal/WeaponDealManager.cs index d981a8e4..282a464d 100644 --- a/ReallifeGamemode.Server/WeaponDeal/WeaponDealManager.cs +++ b/ReallifeGamemode.Server/WeaponDeal/WeaponDealManager.cs @@ -24,9 +24,9 @@ namespace ReallifeGamemode.Server.WeaponDeal public void SrvEVENT_startWeaponDeal(Player client) { var user = client.GetUser(); - using (var context = new DatabaseContext()) + using (var context = new DatabaseContext(true)) { - FactionVehicle factionVehicle = context.FactionVehicles.ToList().Where(f => f.GetOwners().Contains(user.FactionId ?? 0) && f.Model == VehicleHash.Burrito3).FirstOrDefault(); + FactionVehicle factionVehicle = context.FactionVehicles.Where(f => f.Model == VehicleHash.Burrito3 || f.Model == VehicleHash.Policet).ToList().Where(f => f.GetOwners().Contains(user.FactionId ?? 0)).FirstOrDefault(); if (factionVehicle == null) { @@ -37,7 +37,14 @@ namespace ReallifeGamemode.Server.WeaponDeal Vehicle fVeh = VehicleManager.GetVehicleFromServerVehicle(factionVehicle); - if (fVeh.Position.DistanceTo(client.Position) > 80) + if (fVeh.HasData("weaponDeal") && fVeh.GetData("weaponDeal") == true) + { + ChatService.ErrorMessage(client, "Es läuft aktuell schon ein Waffentransport"); + return; + } + + float distance = fVeh.Position.DistanceTo2D(client.Position); + if ((distance > 80 && factionVehicle.Model == VehicleHash.Burrito3) || (distance > 400 && factionVehicle.Model == VehicleHash.Policet)) { ChatService.ErrorMessage(client, "Der Transporter ist zu weit entfernt"); return; @@ -87,8 +94,10 @@ namespace ReallifeGamemode.Server.WeaponDeal } } + string vehName = NAPI.Vehicle.GetVehicleDisplayName(factionVehicle.Model); + ChatService.BroadcastFaction($"~y~[WAFFENDEAL]~s~ {msg}", user.Faction); - ChatService.SendMessage(client, "~y~[WAFFENDEAL]~s~ Steige in den Burrito ein und fahre zum Waffendeal."); + ChatService.SendMessage(client, $"~y~[WAFFENDEAL]~s~ Steige in den {vehName} ein und fahre zum Waffendeal."); fVeh.SetData("weaponDeal", true); InventoryManager.RemoveAllItemsfromVehicleInventory(fVeh); Faction fac = context.Factions.Where(f => f.Id == user.FactionId).FirstOrDefault(); @@ -135,8 +144,16 @@ namespace ReallifeGamemode.Server.WeaponDeal [RemoteEvent("loadWeaponTransport")] public void SrvEVENT_loadWeaponTransport(Player client) { - if ((VehicleHash)client.Vehicle.Model != VehicleHash.Burrito3) + var veh = client.Vehicle; + + if (veh == null) + { return; + } + if ((VehicleHash)veh.Model != VehicleHash.Burrito3 && (VehicleHash)veh.Model != VehicleHash.Policet) + { + return; + } User user = client.GetUser(); using (var context = new DatabaseContext()) @@ -151,16 +168,15 @@ namespace ReallifeGamemode.Server.WeaponDeal fVeh.SetData("weaponDeal", false); fVeh.SetData("WeaponDealLoad", true); InventoryManager.RemoveAllItemsfromVehicleInventory(fVeh); - Random rnd = new Random(); int oMembers = NAPI.Pools.GetAllPlayers().Where(p => p.IsLoggedIn() && p.GetUser(context).FactionId == user.FactionId).Count(); if (factionVehicle.GetOwners().Contains(8) || factionVehicle.GetOwners().Contains(7)) { - VehicleItem item = new VehicleItem() { ItemId = 11, VehicleId = factionVehicle.Id, Amount = rnd.Next(3, 5) * oMembers }; //pistole + VehicleItem item = new VehicleItem() { ItemId = 11, VehicleId = factionVehicle.Id, Amount = 2 * oMembers }; //pistole InventoryManager.AddItemToVehicleInventory(fVeh, item.ItemId, item.Amount); - VehicleItem item3 = new VehicleItem() { ItemId = 14, VehicleId = factionVehicle.Id, Amount = rnd.Next(1, 4) * oMembers }; //Pumpe + VehicleItem item3 = new VehicleItem() { ItemId = 14, VehicleId = factionVehicle.Id, Amount = 2 * oMembers }; //Pumpe InventoryManager.AddItemToVehicleInventory(fVeh, item3.ItemId, item3.Amount); - VehicleItem item2 = new VehicleItem() { ItemId = 16, VehicleId = factionVehicle.Id, Amount = 1 * oMembers }; //Schutzweste + VehicleItem item2 = new VehicleItem() { ItemId = 16, VehicleId = factionVehicle.Id, Amount = 2 * oMembers }; //Schutzweste InventoryManager.AddItemToVehicleInventory(fVeh, item2.ItemId, item2.Amount); } }