public Task BuyCar(User player, int dealerId, string carId) { var nextCarId = Main.database.CarCollection.AsQueryable().ToList().Count + 1; var dbDealer = Main.database.VehShopCollection.AsQueryable().FirstOrDefault(v => v.Id == dealerId); var dbDealerCar = dbDealer.Cars.ToList().ElementAt(Int32.Parse(carId)); var numPlate = ""; var numPlateExists = false; var isPunktBlocked = Alt.GetAllVehicles().ToList().FirstOrDefault(v => v.Position.IsInRange(dbDealer.SpawnPosition.ToAltPos(), 1.5f)); if (isPunktBlocked != null) { NotifyHandler.SendNotification(player, "Der Ausparkpunkt ist zurzeit blockiert!"); return(Task.CompletedTask); } do { var random = new Random(); var randomNumber = random.Next(10000, 99999); numPlate = "CAR" + randomNumber; var dbNumPlate = Main.database.CarCollection.AsQueryable().FirstOrDefault(c => c.numPlate == numPlate); if (dbNumPlate != null) { numPlateExists = true; } } while (numPlateExists); var newCar = new Carcollection() { allowedIds = new List <int>(), parkedIn = false, carId = nextCarId, carmodel = dbDealerCar.Model, fuel = 100, fuelType = 1, garageId = 1, kilometer = 0, numPlate = numPlate, ownerId = player.playerId }; Main.database.CarCollection.InsertOne(newCar); var spawnVeh = (Car)Alt.CreateVehicle(dbDealerCar.Model, dbDealer.SpawnPosition.ToAltPos(), dbDealer.SpawnRotation.ToAltPos()); spawnVeh.numPlate = newCar.numPlate; spawnVeh.carmodel = newCar.carmodel; spawnVeh.ownerId = newCar.ownerId; spawnVeh.NumberplateText = numPlate; spawnVeh.allowedIds = new List <int>(); spawnVeh.fuel = 100f; spawnVeh.kilometer = 0; spawnVeh.carId = newCar.carId; spawnVeh.ManualEngineControl = true; spawnVeh.EngineOn = false; spawnVeh.LockState = VehicleLockState.Locked; return(Task.CompletedTask); }
public async Task ClientStartInteract(User player) { var dbChar = Utils.Utils.GetDatabaseCharacter(player); var buergerBuero = BuergerBueros.buergerBueroList.ToList().FirstOrDefault(x => player.Position.IsInRange(x.pos, 1.5f)); var vehShop = ServerNPCS.ServerNPCList.ToList().FirstOrDefault(x => player.Position.IsInRange(x.pos, 1.5f)); var atm = ATMS.atmInteractions.ToList().FirstOrDefault(x => player.Position.IsInRange(ATMS.atmInteraction.toAltPos(x.Position), 1.5f)); var garage = GarageInteractions.garageList.ToList().FirstOrDefault(x => player.Position.IsInRange(ATMS.atmInteraction.toAltPos(x.Pos), 1.5f)); var itemshop = itemShopInteraction.shopList.ToList().FirstOrDefault(x => player.Position.IsInRange(ATMS.atmInteraction.toAltPos(x.Pos), 2f)); var paintball = paintballInteraction.paintballNPCs.ToList().FirstOrDefault(x => player.Position.IsInRange(x.pos, 2f)); var tankstelle = fuelStationInteract.fuelStationList.ToList().FirstOrDefault(x => player.Position.IsInRange(ATMS.atmInteraction.toAltPos(x.Pos), 20f)); var kleidershop = ClothingStoreInteraction.clothingStores.ToList().FirstOrDefault(x => player.Position.IsInRange(ATMS.atmInteraction.toAltPos(x.Pos), 5f)); var feld = feldInteraction.feldListe.ToList().FirstOrDefault(x => player.Position.IsInRange(ATMS.atmInteraction.toAltPos(x.pos), x.radius)); var fraknpc = FrakNPCInteraction.frakNPCList.ToList().FirstOrDefault(x => player.Position.IsInRange(ATMS.atmInteraction.toAltPos(x.Pos), 3f)); var carshop = VehShopInteraction.vehShops.ToList().FirstOrDefault(x => player.Position.IsInRange(ATMS.atmInteraction.toAltPos(x.Pos), 2f)); var frakGarage = FrakGarageInteraction.frakGarages.ToList().FirstOrDefault(x => player.Position.IsInRange(x.Pos.ToAltPos(), 2.5f)); var ammunation = AmmunationInteraction.AmmunationList.ToList().FirstOrDefault(x => player.Position.IsInRange(x.Pos.ToAltPos(), 2.5f)); var kleiderschrank = KleiderSchrankInteraction.KlederSchränke.ToList().FirstOrDefault(x => player.Position.IsInRange(x.Position.ToAltPos(), x.Range)); var jumppoint = JumpPointInteraction.JumpPointList.ToList().FirstOrDefault(x => player.Position.IsInRange(x.Position.ToAltPos(), 2f)); var frakkleiderschrank = FrakKleiderSchrankInteraction.KlederSchränke.ToList().FirstOrDefault(x => player.Position.IsInRange(x.Position.ToAltPos(), 2f)); var itemproducer = ItemProductionInteraction.ItemProductionList.ToList().FirstOrDefault(x => player.Position.IsInRange(x.Position.ToAltPos(), 5f)); if (buergerBuero != null) { player.Emit("client:cef:loadBürgerBüro", true); } if (vehShop != null) { } if (atm != null) { var konto = Main.database.BankCollection.AsQueryable().FirstOrDefault(k => k.objectOwnerId == dbChar.id); player.Emit("client:cef:loadAtm", konto.kontoPin, konto.kontoStand); } if (garage != null) { #region Fetch parked in cars var carPool = Main.database.CarCollection.AsQueryable().ToList(); var cars = new List <Carcollection>(); foreach (var car in carPool) { if (car.ownerId == dbChar.playerId && car.parkedIn && car.garageId == garage.garageId || car.allowedIds.Contains(dbChar.playerId) && car.parkedIn && car.garageId == garage.garageId) { var tempCar = new Carcollection() { carmodel = car.carmodel, numPlate = car.numPlate, carId = car.carId, parkedIn = true }; cars.Add(tempCar); } } #endregion #region Fetch cars nearby var carpool = Alt.GetAllVehicles(); // ReSharper disable once PossibleInvalidCastExceptionInForeachLoop foreach (Car car in carpool) { if (car.frakId > 0) { continue; } if (car.Position.IsInRange(ATMS.atmInteraction.toAltPos(garage.Pos), 30f)) { if (car.frakId != 0) { continue; } if (car.carId == 0) { continue; } if (car.ownerId == dbChar.playerId || car.allowedIds.Contains(dbChar.playerId)) { var listCar = new Carcollection() { carmodel = car.carmodel, numPlate = car.numPlate, objectId = car.objectId, parkedIn = false }; cars.Add(listCar); } } } var carList = JsonConvert.SerializeObject(cars); player.Emit("client:cef:hud:loadgarage", carList, garage.garageId); #endregion } if (itemshop != null) { var itemList = new List <itemShopInteraction.ShopClientItem>(); var shopItems = itemshop.shopItems; foreach (var item in shopItems) { var dbItem = Main.database.ItemCollection.AsQueryable().FirstOrDefault(i => i.itemId == item); var newItem = new itemShopInteraction.ShopClientItem() { name = dbItem.name, price = dbItem.price.Value, itemId = dbItem.itemId }; itemList.Add(newItem); } player.Emit("client:cef:loadItemShop", JsonConvert.SerializeObject(itemList), itemshop.shopId); } if (paintball != null) { var arenaList = Main.database.PaintballCollection.AsQueryable().ToList(); player.Emit("client:cef:loadPaintball", JsonConvert.SerializeObject(arenaList)); } if (tankstelle != null) { var vehicle = (Car)player.Vehicle; if (player.IsInVehicle) { player.Emit("client:hud:showGasstation", vehicle.carId); } } if (kleidershop != null) { List <ClothesCollection> kleiderListe = new List <ClothesCollection>(); switch (kleidershop.storeType) { case 1: kleiderListe = Utils.Utils.Clothes.ponsonList.Where(c => int.Parse(c.gender) == player.sex || int.Parse(c.gender) == 3).ToList(); break; case 2: kleiderListe = Utils.Utils.Clothes.suburbanList.Where(c => int.Parse(c.gender) == player.sex || int.Parse(c.gender) == 3).ToList(); break; case 3: kleiderListe = Utils.Utils.Clothes.discountList.Where(c => int.Parse(c.gender) == player.sex || int.Parse(c.gender) == 3).ToList(); break; } var itemCount = (int)kleiderListe.Count; var iterations = Math.Floor((decimal)(itemCount / 200)); var rest = itemCount % 200; for (var i = 0; i < iterations; i++) { var skip = i * 200; player.Emit("client:loadClothesStore", JsonConvert.SerializeObject(kleiderListe.Skip(skip).Take(200).ToList())); } if (rest != 0) { player.Emit("client:loadClothesStore", JsonConvert.SerializeObject(kleiderListe.Skip((int)iterations * 200).ToList())); } } if (feld != null) { player.Emit("client:feld:farmen", feld.id); } if (fraknpc != null) { if (player.frakId != fraknpc.frakId) { await NotifyHandler.SendNotification(player, $"({fraknpc.frakId}) Keine Rechte!"); return; } var itemList = new List <itemShopInteraction.ShopClientItem>(); var shopItems = fraknpc.frakShopItems; foreach (var item in shopItems) { var dbItem = Main.database.ItemCollection.AsQueryable().FirstOrDefault(i => i.itemId == item.itemId); var newItem = new itemShopInteraction.ShopClientItem() { name = dbItem.name, price = item.itemPrice, itemId = item.itemId }; itemList.Add(newItem); } player.Emit("client:loadFrakShop", JsonConvert.SerializeObject(itemList), fraknpc.frakId); } if (carshop != null) { player.Emit("client:loadCarDealer", JsonConvert.SerializeObject(carshop.Cars), carshop.Id); } if (frakGarage != null) { if (player.frakId != frakGarage.FrakId) { await NotifyHandler.SendNotification(player, $"Keine Rechte [{frakGarage.FrakId}]"); return; } var carPool = Main.database.FrakcarCollection.AsQueryable().ToList(); var cars = new List <frakCarCollection>(); foreach (var car in carPool) { if (car.frakId == dbChar.frakId && car.parkedIn && car.garageId == frakGarage.Id) { var tempCar = new frakCarCollection() { carmodel = car.carmodel, numPlate = car.numPlate, carId = car.carId, parkedIn = true }; cars.Add(tempCar); } } var carpool = Alt.GetAllVehicles(); foreach (Car car in carpool) { if (car.Position.IsInRange(ATMS.atmInteraction.toAltPos(frakGarage.Pos), 30f)) { if (car.frakId != frakGarage.FrakId) { continue; } if (car.carId == 0) { continue; } if (car.frakId == dbChar.frakId) { var listCar = new frakCarCollection() { numPlate = car.numPlate, carmodel = car.carmodel, parkedIn = false, carId = car.carId }; cars.Add(listCar); } } } var carList = JsonConvert.SerializeObject(cars); player.Emit("client:cef:hud:loadfrakgarage", carList, dbChar.frakId); } if (ammunation != null) { var itemList = new List <itemShopInteraction.ShopClientItem>(); foreach (var item in ammunation.Inventory) { var dbItem = Main.database.ItemCollection.AsQueryable().FirstOrDefault(i => i.itemId == item.ItemId); var newItem = new itemShopInteraction.ShopClientItem() { name = dbItem.name, price = item.Price, itemId = item.ItemId }; itemList.Add(newItem); } Console.WriteLine($"AmmoID: {ammunation.Id}"); player.Emit("client:loadAmmunation", JsonConvert.SerializeObject(itemList), ammunation.Id); } if (kleiderschrank != null) { //Get Player Clothing var clothing = new List <ClientClothing>(); var ownedClothing = dbChar.OwnedClothes; if (player.sex == 1) { clothing.Add(new ClientClothing() { ComponentId = 8, ColorId = 0, DrawableId = 57, ClothId = 11586, Name = "Kein Undershirt" }); } if (player.sex == 0) { clothing.Add(new ClientClothing() { ComponentId = 8, ColorId = 0, DrawableId = 34, ClothId = 2393, Name = "Kein Undershirt" }); } foreach (var cloth in ownedClothing) { var dbCloth = Main.database.ClothesCollection.AsQueryable() .FirstOrDefault(c => c.clothId == cloth.ToString()); var newcloth = new ClientClothing() { ComponentId = int.Parse(dbCloth.componentId), ColorId = int.Parse(dbCloth.colorId), DrawableId = int.Parse(dbCloth.drawableId), ClothId = int.Parse(dbCloth.clothId) }; clothing.Add(newcloth); } foreach (var torso in Main.database.ClothesCollection.AsQueryable().Where(c => c.componentId == "3").Where(c => c.gender == player.sex.ToString())) { var newcloth = new ClientClothing() { ComponentId = int.Parse(torso.componentId), ColorId = int.Parse(torso.colorId), DrawableId = int.Parse(torso.drawableId), ClothId = int.Parse(torso.clothId) }; clothing.Add(newcloth); } player.Emit("client:openCloset", JsonConvert.SerializeObject(clothing)); } if (jumppoint != null) { player.Position = jumppoint.TargetPosition.ToAltPos(); } if (frakkleiderschrank != null) { var clothing = new List <ClientClothing>(); if (player.sex == 1) { clothing.Add(new ClientClothing() { ComponentId = 8, ColorId = 0, DrawableId = 57, ClothId = 11586, Name = "Kein Undershirt" }); clothing.Add(new ClientClothing() { PropId = 0, ColorId = 0, DrawableId = 8, ClothId = 15035, Name = "Keine Kopfbedeckung" }); } if (player.sex == 0) { clothing.Add(new ClientClothing() { ComponentId = 8, ColorId = 0, DrawableId = 34, ClothId = 2393, Name = "Kein Undershirt" }); clothing.Add(new ClientClothing() { PropId = 0, ColorId = 0, DrawableId = 57, ClothId = 15036, Name = "Keine Kopfbedeckung" }); } clothing.Add(new ClientClothing() { ComponentId = 7, ColorId = 0, DrawableId = 0, ClothId = 15034, Name = "Kein Accessoir" }); clothing.Add(new ClientClothing() { ComponentId = 9, ColorId = 0, DrawableId = 0, ClothId = 15030, Name = "Keine Weste" }); clothing.Add(new ClientClothing() { ComponentId = 1, ColorId = 0, DrawableId = 0, ClothId = 15033, Name = "Keine Maske" }); var ownedClothing = dbChar.OwnedClothes; foreach (var cloth in ownedClothing) { var dbCloth = Utils.Utils.CachedColthing .FirstOrDefault(c => c.clothId == cloth.ToString()); var newcloth = new ClientClothing() { ComponentId = int.Parse(dbCloth.componentId), ColorId = int.Parse(dbCloth.colorId), DrawableId = int.Parse(dbCloth.drawableId), ClothId = int.Parse(dbCloth.clothId) }; clothing.Add(newcloth); } foreach (var torso in Utils.Utils.CachedColthing.Where(c => c.componentId == "3").Where(c => c.gender == player.sex.ToString())) { var newcloth = new ClientClothing() { ComponentId = int.Parse(torso.componentId), ColorId = int.Parse(torso.colorId), DrawableId = int.Parse(torso.drawableId), ClothId = int.Parse(torso.clothId) }; clothing.Add(newcloth); } foreach (var frakClothing in frakkleiderschrank.Clothing) { var dbCloth = Utils.Utils.CachedColthing .FirstOrDefault(c => c.clothId == frakClothing.ToString()); if (dbCloth.gender.ToLower() != player.sex.ToString().ToLower() && dbCloth.gender.ToLower() != "3") { continue; } if (string.IsNullOrEmpty(dbCloth.componentId) && string.IsNullOrEmpty(dbCloth.propId)) { continue; } if (!string.IsNullOrEmpty(dbCloth.componentId)) { var newcloth = new ClientClothing() { ComponentId = int.Parse(dbCloth.componentId), ColorId = int.Parse(dbCloth.colorId), DrawableId = int.Parse(dbCloth.drawableId), ClothId = int.Parse(dbCloth.clothId), Name = dbCloth.name }; clothing.Add(newcloth); } else if (!string.IsNullOrEmpty(dbCloth.propId)) { var newprop = new ClientClothing() { PropId = int.Parse(dbCloth.propId), ColorId = int.Parse(dbCloth.colorId), DrawableId = int.Parse(dbCloth.drawableId), ClothId = int.Parse(dbCloth.clothId), Name = dbCloth.name }; clothing.Add(newprop); } } Console.WriteLine($"OpenCloset {clothing.Count}"); player.Emit("client:openCloset", JsonConvert.SerializeObject(clothing), player.sex); } if (itemproducer != null) { Console.WriteLine("found itemproducer"); var dbchar = Utils.Utils.GetDatabaseCharacter(player); var dbItemInput = Main.database.ItemCollection.AsQueryable().FirstOrDefault(i => i.itemId == itemproducer.NeededItemId); var dbItemOutput = Main.database.ItemCollection.AsQueryable().FirstOrDefault(i => i.itemId == itemproducer.OutComeItemId); var producerData = new { Name = itemproducer.Name, Id = itemproducer.Id, CurrentIn = dbchar.ItemVerarbeiter.CurrentIn, CurrentOut = dbchar.ItemVerarbeiter.CurrentOut, InputId = itemproducer.NeededItemId, OutputId = itemproducer.OutComeItemId, InputName = dbItemInput.name, OutputName = dbItemOutput.name }; player.Emit("client:openProducer", JsonConvert.SerializeObject(producerData)); } }