Beispiel #1
0
        public static void CMD_ParkALlVehs(IPlayer player)
        {
            try
            {
                if (player == null || !player.Exists || player.AdminLevel() <= 8)
                {
                    return;
                }
                int count = 0;
                foreach (var veh in Alt.Server.GetVehicles().ToList().Where(x => x != null && x.Exists && x.HasVehicleId()))
                {
                    if (veh == null || !veh.Exists || !veh.HasVehicleId())
                    {
                        continue;
                    }
                    int currentGarageId = ServerVehicles.GetVehicleGarageId(veh);
                    if (currentGarageId <= 0)
                    {
                        continue;
                    }
                    ServerVehicles.SetVehicleInGarage(veh, true, currentGarageId);
                    count++;
                }

                player.SendChatMessage($"{count} Fahrzeuge eingeparkt.");
            }
            catch (Exception e)
            {
                Alt.Log($"{e}");
            }
        }
Beispiel #2
0
        public async Task TowVehicle(IPlayer player, IVehicle vehicle)
        {
            try
            {
                if (player == null || !player.Exists || vehicle == null || !vehicle.Exists)
                {
                    return;
                }
                int charId = (int)player.GetCharacterMetaId();
                int vehId  = (int)vehicle.GetVehicleId();
                if (charId <= 0 || player.HasPlayerRopeCuffs() || player.HasPlayerHandcuffs() || player.IsPlayerUnconscious() || !ServerFactions.IsCharacterInAnyFaction(charId) || !vehicle.Position.IsInRange(Constants.Positions.AutoClubLosSantos_StoreVehPosition, 5f) || vehId <= 0)
                {
                    return;
                }
                if (ServerFactions.GetCharacterFactionId(charId) != 4)
                {
                    return;
                }
                int vehClass = ServerAllVehicles.GetVehicleClass(vehicle.Model);
                switch (vehClass)
                {
                case 0:     //Fahrzeuge
                    ServerVehicles.SetVehicleInGarage(vehicle, true, 10);
                    break;

                case 1:     //Boote
                    break;

                case 2:     //Flugzeuge
                    break;

                case 3:     //Helikopter
                    break;
                }
                ServerFactions.SetFactionBankMoney(4, ServerFactions.GetFactionBankMoney(4) + 1500); //ToDo: Anpassen
                HUDHandler.SendNotification(player, 2, 2000, "Fahrzeug erfolgreich verwahrt.");
                LoggingService.NewFactionLog(4, charId, vehId, "towVehicle", $"{Characters.GetCharacterName(charId)} hat das Fahrzeug mit der ID {vehId} abgeschleppt.");
            }
            catch (Exception e)
            {
                Alt.Log($"{e}");
            }
        }
Beispiel #3
0
 public static void CMD_parkVehicle(IPlayer player, string plate)
 {
     try
     {
         if (player == null || !player.Exists || player.AdminLevel() <= 1 || string.IsNullOrWhiteSpace(plate))
         {
             return;
         }
         var vehicle = Alt.Server.GetVehicles().ToList().FirstOrDefault(x => x != null && x.Exists && x.HasVehicleId() && (int)x.GetVehicleId() > 0 && x.NumberplateText.ToLower() == plate.ToLower());
         if (vehicle == null)
         {
             return;
         }
         ServerVehicles.SetVehicleInGarage(vehicle, true, 25);
         HUDHandler.SendNotification(player, 4, 5000, $"Fahrzeug mit dem Kennzeichen {plate} in Garage 1 (Pillbox) eingeparkt");
     }
     catch (Exception e)
     {
         Alt.Log($"{e}");
     }
 }
Beispiel #4
0
 public static void CMD_parkVehicleById(IPlayer player, int vehId)
 {
     try
     {
         if (player == null || !player.Exists || player.AdminLevel() <= 8 || vehId <= 0)
         {
             return;
         }
         var vehicle = Alt.Server.GetVehicles().ToList().FirstOrDefault(x => x != null && x.Exists && x.HasVehicleId() && (int)x.GetVehicleId() == vehId);
         if (vehicle == null)
         {
             return;
         }
         ServerVehicles.SetVehicleInGarage(vehicle, true, 25);
         HUDHandler.SendNotification(player, 4, 5000, $"Fahrzeug {vehId} in Garage 1(Pillbox) eingeparkt");
     }
     catch (Exception e)
     {
         Alt.Log($"{e}");
     }
 }
Beispiel #5
0
        public async Task DoGarageAction(IPlayer player, int garageid, string action, int vehID)
        {
            try
            {
                if (player == null || !player.Exists || action == "" || vehID <= 0 || garageid <= 0)
                {
                    return;
                }
                Stopwatch stopwatch = new Stopwatch();
                stopwatch.Start();
                int charId = User.GetPlayerOnline(player);
                if (charId <= 0)
                {
                    return;
                }
                var vehicle = Alt.Server.GetVehicles().ToList().FirstOrDefault(x => x.GetVehicleId() == (ulong)vehID);
                if (action == "storage")
                {
                    //Fahrzeug einparken
                    if (vehicle == null)
                    {
                        return;
                    }
                    if (!vehicle.Position.IsInRange(player.Position, 50f))
                    {
                        return;
                    }

                    //var gData = ServerGarages.ServerGarageSlots_.FirstOrDefault(x => vehicle.Position.IsInRange(new Position(x.posX, x.posY, x.posZ), 15f) && x.garageId == garageid);
                    //Position garagePos = new Position(gData.posX, gData.posY, gData.posZ);
                    //Alt.Log($"StorageVeh: {gData} - {gData.garageId} - {garagePos} - {garagePos.ToString()}");
                    //if (garagePos == null || garagePos == new Position(0, 0, 0)) return;
                    ServerVehicles.SetVehicleInGarage(vehicle, true, garageid);
                    HUDHandler.SendNotification(player, 2, 5000, $"Fahrzeug erfolgreich eingeparkt.");
                }
                else if (action == "take")
                {
                    //Fahrzeug ausparken
                    Position outPos      = new Position(0, 0, 0);
                    int      curPid      = 1;
                    bool     slotAreFree = true;
                    foreach (var x in ServerGarages.ServerGarageSlots_.Where(x => x.garageId == garageid))
                    {
                        foreach (var veh in Alt.Server.GetVehicles().ToList())
                        {
                            if (veh.Position.IsInRange(ServerGarages.GetGarageSlotPosition(garageid, curPid), 2f))
                            {
                                slotAreFree = false;
                                curPid++;
                                break;
                            }
                            else
                            {
                                slotAreFree = true;
                            }
                        }
                        if (slotAreFree)
                        {
                            break;
                        }
                    }
                    if (!slotAreFree)
                    {
                        HUDHandler.SendNotification(player, 4, 5000, $"Es ist kein Parkplatz mehr frei."); return;
                    }
                    if (vehicle != null)
                    {
                        HUDHandler.SendNotification(player, 4, 5000, $"Ein unerwarteter Fehler ist aufgetreten. [GARAGE-002]"); return;
                    }
                    var finalVeh = ServerVehicles.ServerVehicles_.FirstOrDefault(v => v.id == vehID);
                    if (finalVeh == null)
                    {
                        HUDHandler.SendNotification(player, 4, 5000, $"Ein unerwarteter Fehler ist aufgetreten. [GARAGE-001]"); return;
                    }
                    var altVeh = await AltAsync.Do(() => Alt.CreateVehicle((uint)finalVeh.hash, ServerGarages.GetGarageSlotPosition(garageid, curPid), (ServerGarages.GetGarageSlotRotation(garageid, curPid))));

                    altVeh.LockState       = VehicleLockState.Locked;
                    altVeh.EngineOn        = false;
                    altVeh.NumberplateText = finalVeh.plate;
                    altVeh.SetVehicleId((ulong)finalVeh.id);
                    altVeh.SetVehicleTrunkState(false);
                    ServerVehicles.SetVehicleModsCorrectly(altVeh);
                    ServerVehicles.SetVehicleInGarage(altVeh, false, garageid);
                }

                if (!CharactersTablet.HasCharacterTutorialEntryFinished(charId, "useGarage"))
                {
                    CharactersTablet.SetCharacterTutorialEntryState(charId, "useGarage", true);
                    HUDHandler.SendNotification(player, 1, 2500, "Erfolg freigeschaltet: Keine Schäden");
                }
                stopwatch.Stop();

                if (stopwatch.Elapsed.Milliseconds > 30)
                {
                    Alt.Log($"{charId} - DoGarageAction benötigte {stopwatch.Elapsed.Milliseconds}ms");
                }
            }
            catch (Exception e)
            {
                Alt.Log($"{e}");
            }
        }