public async Task LSPDAppSearchVehiclePlate(IPlayer player, string targetPlate) { try { if (player == null || !player.Exists || targetPlate == "") { return; } int charId = User.GetPlayerOnline(player); if (charId <= 0) { return; } if (player.HasPlayerHandcuffs() || player.HasPlayerRopeCuffs()) { HUDHandler.SendNotification(player, 4, 5000, "Wie willst du das mit Handschellen/Fesseln machen?"); return; } if (!ServerFactions.IsCharacterInAnyFaction(charId)) { HUDHandler.SendNotification(player, 4, 5000, "Fehler: Du bist in keiner Fraktion."); return; } if (ServerFactions.GetCharacterFactionId(charId) != 2 && ServerFactions.GetCharacterFactionId(charId) != 1) { HUDHandler.SendNotification(player, 4, 5000, "Fehler: Du bist nicht im L.S.P.D. oder der Justiz angestellt."); return; } if (!ServerFactions.IsCharacterInFactionDuty(charId)) { HUDHandler.SendNotification(player, 4, 5000, "Fehler: Du bist nicht im Dienst."); return; } if (!ServerVehicles.ExistServerVehiclePlate(targetPlate)) { HUDHandler.SendNotification(player, 3, 5000, "Fehler: Das angegebene Kennzeichen wurde nicht gefunden."); return; } int vehicleId = ServerVehicles.GetVehicleIdByPlate(targetPlate); if (vehicleId <= 0) { return; } int ownerId = ServerVehicles.GetVehicleOwnerById(vehicleId); if (ownerId <= 0) { return; } string owner = Characters.GetCharacterName(ownerId); string vehName = ServerVehicles.GetVehicleNameOnHash(ServerVehicles.GetVehicleHashById(vehicleId)); string manufactor = ServerVehicles.GetVehicleManufactorOnHash(ServerVehicles.GetVehicleHashById(vehicleId)); string buyDate = $"{ServerVehicles.GetVehicleBuyDate(vehicleId).ToString("d", CultureInfo.CreateSpecificCulture("de-DE"))}"; string trunk = $"{ServerVehicles.GetVehicleTrunkCapacityOnHash(ServerVehicles.GetVehicleHashById(vehicleId))}kg"; string tax = $"{ServerAllVehicles.GetVehicleTaxes(ServerVehicles.GetVehicleHashById(vehicleId))}$"; string maxfuel = $"{ServerVehicles.GetVehicleFuelLimitOnHash(ServerVehicles.GetVehicleHashById(vehicleId))}"; string fuelType = ServerVehicles.GetVehicleFuelTypeOnHash(ServerVehicles.GetVehicleHashById(vehicleId)); player.EmitLocked("Client:Tablet:SetLSPDAppSearchVehiclePlateData", owner, vehName, manufactor, buyDate, trunk, maxfuel, tax, fuelType); HUDHandler.SendNotification(player, 2, 1500, $"Fahrzeugabfrage durchgeführt: {targetPlate}"); } catch (Exception e) { Alt.Log($"{e}"); } }
public static string GetTabletVehicleStoreItems() { var items = ServerVehicleShopsItems_.Where(x => x.isOnlyOnlineAvailable == true).Select(x => new { x.shopId, name = ServerVehicles.GetVehicleNameOnHash(x.hash), manufactor = ServerVehicles.GetVehicleManufactorOnHash(x.hash), fueltype = ServerVehicles.GetVehicleFuelTypeOnHash(x.hash), fuellimit = ServerVehicles.GetVehicleFuelLimitOnHash(x.hash), storage = ServerVehicles.GetVehicleTrunkCapacityOnHash(x.hash), seats = ServerVehicles.GetVehicleMaxSeatsOnHash(x.hash), hash = x.hash.ToString(), x.price, }).OrderBy(x => x.name).ToList(); return(JsonConvert.SerializeObject(items)); }
public static string GetCharacterTabletVehicles(int charId) { if (charId == 0) { return(""); } var items = ServerVehicles.ServerVehicles_.Where(x => x.charid == charId).Select(x => new { x.id, name = ServerVehicles.GetVehicleNameOnHash(x.hash), x.plate, lastgarage = ServerGarages.GetGarageName(x.garageId), parkstate = x.isInGarage, hasgps = true, posX = GetCharacterTabletVehiclePosition(x.id).X, posY = GetCharacterTabletVehiclePosition(x.id).Y, }).ToList(); return(JsonConvert.SerializeObject(items)); }
public static string GetVehicleShopItems(int vehShopId) { if (vehShopId <= 0) { return("undefined"); } var items = ServerVehicleShopsItems_.Where(x => x.shopId == vehShopId && x.isOnlyOnlineAvailable == false).Select(x => new { name = ServerVehicles.GetVehicleNameOnHash(x.hash), manufactor = ServerVehicles.GetVehicleManufactorOnHash(x.hash), fueltype = ServerVehicles.GetVehicleFuelTypeOnHash(x.hash), maxfuel = ServerVehicles.GetVehicleFuelLimitOnHash(x.hash), trunkcapacity = ServerVehicles.GetVehicleTrunkCapacityOnHash(x.hash), seats = ServerVehicles.GetVehicleMaxSeatsOnHash(x.hash), hash = x.hash.ToString(), price = x.price, }).ToList(); return(JsonConvert.SerializeObject(items)); }
internal static void OpenLicensingCEF(IPlayer player) { try { if (player == null || !player.Exists) { return; } int charId = User.GetPlayerOnline(player); if (charId <= 0) { return; } if (!player.Position.IsInRange(Constants.Positions.VehicleLicensing_Position, 3f)) { HUDHandler.SendNotification(player, 4, 5000, "Fehler: Du hast dich zu weit entfernt."); return; } var vehicleList = Alt.Server.GetVehicles().Where(x => x.GetVehicleId() > 0 && x.Position.IsInRange(Constants.Positions.VehicleLicensing_VehPosition, 10f) && ServerVehicles.GetVehicleOwner(x) == charId).Select(x => new { vehId = x.GetVehicleId(), ownerId = ServerVehicles.GetVehicleOwner(x), vehName = ServerVehicles.GetVehicleNameOnHash(x.Model), vehPlate = x.NumberplateText, }).ToList(); if (vehicleList.Count <= 0) { HUDHandler.SendNotification(player, 3, 5000, "Keines deiner Fahrzeuge steht hinter dem Rathaus (an der roten Fahrzeugmarkierung)."); return; } player.EmitLocked("Client:VehicleLicensing:openCEF", JsonConvert.SerializeObject(vehicleList)); Alt.Log($"{JsonConvert.SerializeObject(vehicleList)}"); } catch (Exception e) { Alt.Log($"{e}"); } }
public async Task LicensingAction(IPlayer player, string action, int vehId, string vehPlate, string newPlate) { try { if (player == null || !player.Exists || vehId <= 0 || vehPlate == "") { return; } if (action != "anmelden" && action != "abmelden") { return; } int charId = User.GetPlayerOnline(player); if (charId <= 0) { return; } IVehicle veh = Alt.Server.GetVehicles().ToList().FirstOrDefault(x => x.GetVehicleId() == (ulong)vehId && x.NumberplateText == vehPlate); if (veh == null || !veh.Exists) { HUDHandler.SendNotification(player, 4, 5000, "Fehler: Ein unerwarteter Fehler ist aufgetreten."); return; } if (ServerVehicles.GetVehicleOwner(veh) != charId) { HUDHandler.SendNotification(player, 4, 5000, "Fehler: Dieses Fahrzeug gehört nicht dir."); return; } if (!veh.Position.IsInRange(Constants.Positions.VehicleLicensing_VehPosition, 10f)) { HUDHandler.SendNotification(player, 4, 5000, "Fehler: Das Fahrzeug ist nicht am Zulassungspunkt (hinterm Rathaus)."); return; } if (!ServerVehicles.GetVehicleLockState(veh)) { HUDHandler.SendNotification(player, 4, 5000, "Fehler: Das Fahrzeug muss zugeschlossen sein."); return; } if (action == "anmelden") { var notAllowedStrings = new[] { "LSPD", "DOJ", "LSFD", "ACLS", "LSF", "FIB", "LSF-", "LSPD-", "DOJ-", "LSFD-", "ACLS-", "FIB-", "NL", "EL-", "MM-", "PL-", "SWAT", "S.W.A.T", "SWAT-", "NOOSE", "N.O.O.S.E" }; newPlate = newPlate.Replace(" ", "-"); if (ServerVehicles.ExistServerVehiclePlate(newPlate)) { HUDHandler.SendNotification(player, 3, 5000, "Fehler: Dieses Nummernschild ist bereits vorhanden."); return; } bool stringIsValid = Regex.IsMatch(newPlate, @"[a-zA-Z0-9-]$"); bool validPlate = false; if (stringIsValid) { validPlate = true; } for (var i = 0; i < notAllowedStrings.Length; i++) { if (newPlate.Contains(notAllowedStrings[i])) { validPlate = false; break; } } if (!validPlate) { HUDHandler.SendNotification(player, 4, 5000, "Fehler: Das Wunschnummernschild enthält unzulässige Zeichen."); return; } if (!CharactersInventory.ExistCharacterItem(charId, "Bargeld", "inventory")) { HUDHandler.SendNotification(player, 3, 5000, "Fehler: Du hast kein Bargeld dabei (250$)."); return; } if (CharactersInventory.GetCharacterItemAmount(charId, "Bargeld", "inventory") < 250) { HUDHandler.SendNotification(player, 3, 5000, "Fehler: Du hast nicht genügend Bargeld dabei (250$)."); return; } CharactersInventory.RemoveCharacterItemAmount(charId, "Bargeld", 250, "inventory"); CharactersInventory.RenameCharactersItemName($"Fahrzeugschluessel {vehPlate}", $"Fahrzeugschluessel {newPlate}"); ServerVehicles.SetServerVehiclePlate(vehId, newPlate); veh.NumberplateText = newPlate; HUDHandler.SendNotification(player, 2, 5000, $"Du hast das Kennzeichen von dem Fahrzeug '{ServerVehicles.GetVehicleNameOnHash(veh.Model)}' auf {newPlate} geändert (Gebühr: 250$)."); return; } else if (action == "abmelden") { int rnd = new Random().Next(100000, 999999); if (ServerVehicles.ExistServerVehiclePlate($"NL{rnd}")) { LicensingAction(player, "abmelden", vehId, vehPlate, newPlate); return; } CharactersInventory.RenameCharactersItemName($"Fahrzeugschluessel {vehPlate}", $"Fahrzeugschluessel NL{rnd}"); ServerVehicles.SetServerVehiclePlate(vehId, $"NL{rnd}"); veh.NumberplateText = $"NL{rnd}"; HUDHandler.SendNotification(player, 2, 5000, $"Du hast das Fahrzeug '{ServerVehicles.GetVehicleNameOnHash(veh.Model)}' mit dem Kennzeichen '{vehPlate}' abgemeldet."); return; } } catch (Exception e) { Alt.Log($"{e}"); } }
public static string GetGarageParkInString(IPlayer player, IReadOnlyCollection <Server_Garage_Slots> garageSlots, int charId, int garageId, bool isFaction, string factionShort, int factionId) { if (player == null || !player.Exists || !garageSlots.Any() || garageId == 0 || charId == 0) { return("undefined"); } List <IVehicle> vehicles = null; if (isFaction == false) { vehicles = Alt.Server.GetVehicles().Where(x => x != null && x.Exists && x.HasVehicleId() && x.GetVehicleId() > 0 && x.Position.IsInRange(player.Position, 50f)).ToList(); } else if (isFaction == true) { vehicles = Alt.Server.GetVehicles().Where(x => x != null && x.Exists && x.HasVehicleId() && x.GetVehicleId() > 0 && x.Position.IsInRange(player.Position, 50f) && ServerVehicles.GetVehicleFactionId(x) == factionId && x.NumberplateText.Contains(factionShort)).ToList(); } int garageType = ServerGarages.GetGarageType(garageId); if (garageType == -1) { return("undefined"); } dynamic array = new JArray() as dynamic; dynamic entry = new JObject(); foreach (var veh in vehicles) { bool hasKey = false, isOwner = ServerVehicles.GetVehicleOwner(veh) == charId; if (isFaction) { hasKey = CharactersInventory.ExistCharacterItem(charId, $"Fahrzeugschluessel {factionShort}", "inventory"); } else if (!isFaction) { hasKey = CharactersInventory.ExistCharacterItem(charId, $"Fahrzeugschluessel {veh.NumberplateText}", "inventory"); } if (!isOwner && !hasKey) { continue; } entry = new JObject(); entry.vehid = veh.GetVehicleId(); entry.plate = veh.NumberplateText; entry.hash = veh.Model; entry.name = ServerVehicles.GetVehicleNameOnHash(veh.Model); array.Add(entry); } //foreach (var slot in garageSlots.Where(x => x.garageId == garageId)) //{ // var pos = new Position(slot.posX, slot.posY, slot.posZ); // var entity = vehicles.OrderBy(x => x.Position.Distance(pos)).ToList().FirstOrDefault(); // if(entity == null) { continue; } // var distance = entity.Position.Distance(pos); // if (distance >= 1.5f) { continue; } // var vehicle = ServerVehicles.ServerVehicles_.Where(x => x.isInGarage == false).ToList().FirstOrDefault(x => string.Equals(x.plate, entity.NumberplateText, StringComparison.CurrentCultureIgnoreCase)); // if(vehicle == null) { continue; } // var vehicleData = ServerAllVehicles.ServerAllVehicles_.FirstOrDefault(x => x.hash == entity.Model); // if (vehicleData == null) { continue; } // if(vehicleData.vehClass != garageType) { continue; } // bool hasKey = false; // if (isFaction == false) { hasKey = CharactersInventory.ExistCharacterItem(charId, "Fahrzeugschluessel " + entity.NumberplateText, "inventory"); } // else if(isFaction == true) { hasKey = CharactersInventory.ExistCharacterItem(charId, "Fahrzeugschluessel " + factionShort, "inventory"); } // bool isOwner = vehicle.charid == charId; // if(!hasKey && !isOwner) { continue; } // entry = new JObject(); // entry.vehid = vehicle.id; // entry.plate = entity.NumberplateText; // entry.hash = entity.Model; // entry.name = vehicleData.name; // array.Add(entry); //} return(array.ToString()); }