Beispiel #1
0
 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}");
     }
 }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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));
        }
Beispiel #4
0
        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));
        }
Beispiel #5
0
        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}");
            }
        }
Beispiel #6
0
        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}");
            }
        }
Beispiel #7
0
        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());
        }