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}"); } }