Exemplo n.º 1
0
 public async Task RentHotel(IPlayer player, int hotelId, int apartmentId)
 {
     try
     {
         if (player == null || !player.Exists || hotelId <= 0 || apartmentId <= 0)
         {
             return;
         }
         int charId = User.GetPlayerOnline(player);
         if (charId <= 0)
         {
             return;
         }
         if (!ServerHotels.ExistHotelApartment(hotelId, apartmentId))
         {
             HUDHandler.SendNotification(player, 3, 5000, "Ein unerwarteter Fehler ist aufgetreten [HOTEL-001]."); return;
         }
         if (ServerHotels.HasCharacterAnApartment(charId))
         {
             HUDHandler.SendNotification(player, 3, 5000, $"Du besitzt bereits ein Hotelzimmer in dem Hotel '{ServerHotels.GetCharacterRentedHotelName(charId)}'."); return;
         }
         if (ServerHotels.GetApartmentOwner(hotelId, apartmentId) > 0)
         {
             HUDHandler.SendNotification(player, 3, 5000, "Dieses Apartment ist bereits vermietet."); return;
         }
         if (!CharactersBank.HasCharacterBankMainKonto(charId))
         {
             HUDHandler.SendNotification(player, 3, 5000, "Du hast noch kein Hauptkonto in der Bank festgelegt."); return;
         }
         int accNumber = CharactersBank.GetCharacterBankMainKonto(charId);
         if (accNumber <= 0)
         {
             return;
         }
         if (CharactersBank.GetBankAccountLockStatus(accNumber))
         {
             HUDHandler.SendNotification(player, 3, 5000, "Dein Bankkonto ist gesperrt."); return;
         }
         if (CharactersBank.GetBankAccountMoney(accNumber) < ServerHotels.GetApartmentPrice(hotelId, apartmentId))
         {
             HUDHandler.SendNotification(player, 3, 5000, $"Soviel Geld hast du auf deinem Konto nicht ({ServerHotels.GetApartmentPrice(hotelId, apartmentId)}$) - du hast {CharactersBank.GetBankAccountMoney(accNumber)}$"); return;
         }
         CharactersBank.SetBankAccountMoney(accNumber, CharactersBank.GetBankAccountMoney(accNumber) - ServerHotels.GetApartmentPrice(hotelId, apartmentId));
         ServerBankPapers.CreateNewBankPaper(accNumber, DateTime.Now.ToString("d", CultureInfo.CreateSpecificCulture("de-DE")), DateTime.Now.ToString("t", CultureInfo.CreateSpecificCulture("de-DE")), "Ausgehende Überweisung", "Hotelzahlung", $"Zimmerbuchung: {apartmentId}", $"+{ServerHotels.GetApartmentPrice(hotelId, apartmentId)}$", "Bankeinzug");
         ServerHotels.SetApartmentOwner(hotelId, apartmentId, charId);
         HUDHandler.SendNotification(player, 2, 5000, $"Sie haben sich das Zimmer mit der Zimmernummer '{apartmentId}' erfolgreich gemietet (Kosten: {ServerHotels.GetApartmentPrice(hotelId, apartmentId)}$). Dieses Zimmer läuft automatisch nach {ServerHotels.GetApartmentRentHours(hotelId, apartmentId)} Stunden ab.");
     }
     catch (Exception e)
     {
         Alt.Log($"{e}");
     }
 }
Exemplo n.º 2
0
        internal static void VehicleAutomaticParkFetch(object sender, ElapsedEventArgs e)
        {
            try
            {
                //foreach(IVehicle vehicle in Alt.Server.GetVehicles().ToList().Where(x => x.GetVehicleId() != 0))
                //{
                //    if (vehicle == null) return;
                //    using (var vehicleRef = new VehicleRef(vehicle))
                //    {
                //        if (!vehicleRef.Exists) return;
                //        lock (vehicle)
                //        {
                //            var dbVeh = ServerVehicles.ServerVehicles_.FirstOrDefault(v => v.id == (int)vehicle.GetVehicleId());
                //            if (dbVeh == null) continue;
                //            if (DateTime.Now.Subtract(Convert.ToDateTime(dbVeh.lastUsage)).TotalHours >= 3)
                //            {
                //                int garage = 0;
                //                if (dbVeh.garageId == 0) { garage = 10; }
                //                else { garage = dbVeh.garageId; }
                //                ServerVehicles.SetVehicleInGarage(vehicle, true, garage);
                //            }
                //        }
                //    }
                //}

                foreach (var hotelApartment in ServerHotels.ServerHotelsApartments_.Where(x => x.ownerId > 0))
                {
                    if (hotelApartment == null)
                    {
                        continue;
                    }
                    if (DateTime.Now.Subtract(Convert.ToDateTime(hotelApartment.lastRent)).TotalHours >= hotelApartment.maxRentHours)
                    {
                        int oldOwnerId = hotelApartment.ownerId;
                        ServerHotels.SetApartmentOwner(hotelApartment.hotelId, hotelApartment.id, 0);
                        foreach (IPlayer players in Alt.Server.GetPlayers().ToList().Where(x => x != null && x.Exists && User.GetPlayerOnline(x) == oldOwnerId))
                        {
                            HUDHandler.SendNotification(players, 1, 5000, "Deine Mietdauer im Hotel ist ausgelaufen, dein Zimmer wurde gekündigt");
                        }
                    }
                }
            }
            catch (Exception ex) { Alt.Log($"{ex}"); }
        }