using GTANetworkAPI; using ReallifeGamemode.Database.Entities; using System.Linq; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Managers; using ReallifeGamemode.Server.Services; using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.WeaponDeal; namespace ReallifeGamemode.Server.Inventory.Items { class Notfallkit : UseItem { public override int Id => 201; public override string Name => "Notfallkit"; public override string Description => "Fahrzeug reparieren"; public override int Gewicht => 1000; public override string Einheit => "g"; public override uint Object => 875075437; public override int Price => 500; public override bool Use(UserItem uItem) { Player player = uItem.GetUser().Player; if (uItem.ItemId != 201) { return false; } Vehicle veh = null; var nearestVeh = NAPI.Pools.GetAllVehicles().Where(v => v.Position.DistanceTo(player.Position) <= 5).FirstOrDefault(); veh = nearestVeh; if (veh == null) { player.SendNotification("Es befindet sich kein Fahrzeug in deiner Nähe!"); return false; } if(player.IsInVehicle) { player.SendNotification("Du musst aus deinem Fahrzeug aussteigen!"); return false; } if(veh.Controller == null) { player.SendNotification("Du kannst dieses Fahrzeug nicht reparieren, weil Jemand bereits im Fahrzeug sitzt"); return false; } if((VehicleHash)veh.Model == WeaponDealManager.WEAPON_DEAL_GANG_VEHICLE_HASH || (VehicleHash)veh.Model == WeaponDealManager.WEAPON_DEAL_STAATSFRAK_VEHICLE_HASH) { player.SendNotification("Du kannst den Waffentransporter nicht reparieren!"); return false; } using (var dbContext = new DatabaseContext()) { Vector3 position = veh.Position; player.SendNotification("Du hast ~g~" + InventoryManager.GetItemById(uItem.ItemId).Name + " ~s~verwendet", false); InventoryManager.RemoveUserItem(player.GetUser(), uItem, 1); ServerVehicle serverVehicle = veh.GetServerVehicle(dbContext); serverVehicle.Spawn(veh).Position = position; Vehicle newVeh = serverVehicle.Spawn(veh); newVeh.Repair(); newVeh.Rotation = new Vector3(0, 0, serverVehicle.Heading); return true; } } } }