internal static void LeaveHotel(IPlayer player) { try { if (player == null || !player.Exists) { return; } int charId = User.GetPlayerOnline(player); if (charId <= 0) { return; } if (player.Dimension <= 0 || player.Dimension - 5000 < 0) { return; } int apartmentId = player.Dimension - 5000; int hotelId = ServerHotels.GetHotelIdByApartmentId(apartmentId); if (hotelId <= 0 || apartmentId <= 0) { return; } if (!ServerHotels.ExistHotelApartment(hotelId, apartmentId)) { HUDHandler.SendNotification(player, 3, 5000, "Ein unerwarteter Fehler ist aufgetreten [HOTEL-001]."); return; } player.Position = ServerHotels.GetHotelPosition(hotelId, apartmentId); player.Dimension = 0; } catch (Exception e) { Alt.Log($"{e}"); } }
internal static void openCEF(IPlayer player, Server_Hotels hotelPos) { try { if (player == null || !player.Exists) { return; } if (hotelPos == null) { return; } if (hotelPos.id <= 0) { return; } int charId = User.GetPlayerOnline(player); if (charId <= 0) { return; } ServerHotels.RequestHotelApartmentItems(player, hotelPos.id); } catch (Exception e) { Alt.Log($"{e}"); } }
public async Task TakeHotelItem(IPlayer player, int apartmentId, string itemName, int itemAmount) { try { if (player == null || !player.Exists || apartmentId <= 0 | itemAmount <= 0 || itemName == "" || itemName == "undefined") { return; } int charId = User.GetPlayerOnline(player); if (charId <= 0) { return; } if (player.HasPlayerHandcuffs() || player.HasPlayerRopeCuffs()) { HUDHandler.SendNotification(player, 3, 5000, "Wie willst du das mit Handschellen/Fesseln machen?"); return; } if (!ServerHotels.ExistServerHotelStorageItem(apartmentId, itemName)) { HUDHandler.SendNotification(player, 4, 5000, "Fehler: Der Gegenstand existiert im Lager nicht."); return; } if (ServerHotels.GetServerHotelStorageItemAmount(apartmentId, itemName) < itemAmount) { HUDHandler.SendNotification(player, 4, 5000, "Fehler: Soviele Gegenstände sind nicht im Lager."); return; } float itemWeight = ServerItems.GetItemWeight(itemName) * itemAmount; float invWeight = CharactersInventory.GetCharacterItemWeight(charId, "inventory"); float backpackWeight = CharactersInventory.GetCharacterItemWeight(charId, "backpack"); if (invWeight + itemWeight > 15f && backpackWeight + itemWeight > Characters.GetCharacterBackpackSize(Characters.GetCharacterBackpack(charId))) { HUDHandler.SendNotification(player, 3, 5000, $"Du hast nicht genug Platz in deinen Taschen."); return; } ServerHotels.RemoveServerHotelStorageItemAmount(apartmentId, itemName, itemAmount); //LoggingService.NewFactionLog(factionId, charId, 0, "storage", $"{Characters.GetCharacterName(charId)} ({charId}) hat den Gegenstand '{itemName} ({amount}x)' aus seinem Spind entnommen."); // ToDo: Hotel Log if (invWeight + itemWeight <= 15f) { HUDHandler.SendNotification(player, 2, 5000, $"Du hast {itemName} ({itemAmount}x) aus deinem Lager genommen (Lagerort: Inventar)."); CharactersInventory.AddCharacterItem(charId, itemName, itemAmount, "inventory"); return; } if (Characters.GetCharacterBackpack(charId) != "None" && backpackWeight + itemWeight <= Characters.GetCharacterBackpackSize(Characters.GetCharacterBackpack(charId))) { HUDHandler.SendNotification(player, 2, 5000, $"Du hast {itemName} ({itemAmount}x) aus deinem Lager genommen (Lagerort: Rucksack / Tasche)."); CharactersInventory.AddCharacterItem(charId, itemName, itemAmount, "backpack"); return; } } catch (Exception e) { Alt.Log($"{e}"); } }
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}"); } }
public async Task EnterHotel(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.GetApartmentOwner(hotelId, apartmentId) <= 0) { HUDHandler.SendNotification(player, 3, 5000, "Fehler: Dieses Zimmer ist nicht vermietet."); return; } var hotel = ServerHotels.ServerHotelsApartments_.FirstOrDefault(x => x.hotelId == hotelId && x.id == apartmentId); if (hotel == null) { return; } if (!player.Position.IsInRange(ServerHotels.GetHotelPosition(hotelId, apartmentId), 3f)) { return; } if (hotel.isLocked) { HUDHandler.SendNotification(player, 3, 5000, "Fehler: Das Zimmer ist abgeschlossen."); return; } if (!ServerHouses.ExistInteriorId(hotel.interiorId)) { return; } player.Position = ServerHouses.GetInteriorExitPosition(hotel.interiorId); player.Dimension = 5000 + apartmentId; } catch (Exception e) { Alt.Log($"{e}"); } }
public async Task StorageHotelItem(IPlayer player, int apartmentId, string itemName, int itemAmount, string fromContainer) { try { if (player == null || !player.Exists || apartmentId <= 0 || itemName == "" || itemName == "undefined" || itemAmount <= 0 || fromContainer == "none" || fromContainer == "") { return; } int cCharId = User.GetPlayerOnline(player); if (cCharId <= 0) { return; } if (player.HasPlayerHandcuffs() || player.HasPlayerRopeCuffs()) { HUDHandler.SendNotification(player, 3, 5000, "Wie willst du das mit Handschellen/Fesseln machen?"); return; } if (!CharactersInventory.ExistCharacterItem(cCharId, itemName, fromContainer)) { HUDHandler.SendNotification(player, 4, 5000, "Fehler: Diesen Gegenstand besitzt du nicht."); return; } if (CharactersInventory.GetCharacterItemAmount(cCharId, itemName, fromContainer) < itemAmount) { HUDHandler.SendNotification(player, 4, 5000, "Fehler: Du hast nicht genügend Gegenstände davon dabei."); return; } if (CharactersInventory.IsItemActive(player, itemName)) { HUDHandler.SendNotification(player, 4, 5000, "Fehler: Ausgerüstete Gegenstände können nicht umgelagert werden."); return; } float itemWeight = ServerItems.GetItemWeight(itemName) * itemAmount; if (ServerHotels.GetHotelStorageItemWeight(apartmentId) >= 15f || (ServerHotels.GetHotelStorageItemWeight(apartmentId) + itemWeight) >= 15f) { HUDHandler.SendNotification(player, 3, 5000, "Fehler: Soviel passt in das Lager nicht rein (maximal 15kg Lagerplatz)."); return; } CharactersInventory.RemoveCharacterItemAmount(cCharId, itemName, itemAmount, fromContainer); ServerHotels.AddServerHotelStorageItem(apartmentId, itemName, itemAmount); HUDHandler.SendNotification(player, 2, 5000, $"Der Gegenstand wurde erfolgreich eingelagert ({itemName} - {itemAmount}x)."); //LoggingService.NewHotelLog(apartmentId, cCharId, 0, "storage", $"{Characters.GetCharacterName(charId)} ({charId}) hat den Gegenstand '{itemName} ({amount}x)' in seinen Spind gelegt."); //ToDo: Hotel Storage Log } catch (Exception e) { Alt.Log($"{e}"); } }
public static async Task LockHotel(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 hier kein Zimmer."); return; } if (ServerHotels.GetApartmentOwner(hotelId, apartmentId) != charId) { HUDHandler.SendNotification(player, 3, 5000, $"Du besitzt hier kein Zimmer."); return; } var hotel = ServerHotels.ServerHotelsApartments_.FirstOrDefault(x => x.hotelId == hotelId && x.id == apartmentId); if (hotel == null) { return; } if (hotel.isLocked) { HUDHandler.SendNotification(player, 2, 2500, $"Du hast dein Zimmer aufgeschlossen"); } else { HUDHandler.SendNotification(player, 4, 2500, $"Du hast dein Zimmer abgeschlossen"); } hotel.isLocked = !hotel.isLocked; } catch (Exception e) { Alt.Log($"{e}"); } }
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}"); } }
internal static void openStorage(IPlayer player) { try { if (player == null || !player.Exists) { return; } int charId = User.GetPlayerOnline(player); if (charId <= 0) { return; } if (!ServerHotels.HasCharacterAnApartment(charId)) { return; } int dimension = player.Dimension; if (dimension <= 5000) { return; } int apartmentId = dimension - 5000; int hotelId = ServerHotels.GetHotelIdByApartmentId(apartmentId); if (apartmentId <= 0 || hotelId <= 0 || !ServerHotels.ExistHotelApartment(hotelId, apartmentId)) { return; } var hotelStorageContent = ServerHotels.GetServerHotelStorageItems(apartmentId); //Apartment Items var characterInvArray = CharactersInventory.GetCharacterInventory(charId); //Spieler Inventar player.EmitLocked("Client:FactionStorage:openCEF", charId, apartmentId, "hotel", characterInvArray, hotelStorageContent); } catch (Exception e) { Alt.Log($"{e}"); } }
public async Task PressU(IPlayer player) { try { lock (player) { if (player == null || !player.Exists) { return; } int charId = User.GetPlayerOnline(player); if (charId <= 0) { return; } if (player.HasPlayerHandcuffs() || player.HasPlayerRopeCuffs()) { HUDHandler.SendNotification(player, 3, 5000, "Wie willst du das mit Handschellen/Fesseln machen?"); return; } ClassicColshape serverDoorLockCol = (ClassicColshape)ServerDoors.ServerDoorsLockColshapes_.FirstOrDefault(x => ((ClassicColshape)x).IsInRange((ClassicPlayer)player)); if (serverDoorLockCol != null) { var doorColData = ServerDoors.ServerDoors_.FirstOrDefault(x => x.id == (int)serverDoorLockCol.GetColShapeId()); if (doorColData != null) { string doorKey = doorColData.doorKey; string doorKey2 = doorColData.doorKey2; if (doorKey == null || doorKey2 == null) { return; } if (!CharactersInventory.ExistCharacterItem(charId, doorKey, "inventory") && !CharactersInventory.ExistCharacterItem(charId, doorKey, "backpack") && !CharactersInventory.ExistCharacterItem(charId, doorKey2, "inventory") && !CharactersInventory.ExistCharacterItem(charId, doorKey2, "backpack")) { return; } if (!doorColData.state) { HUDHandler.SendNotification(player, 4, 1500, "Tür abgeschlossen."); } else { HUDHandler.SendNotification(player, 2, 1500, "Tür aufgeschlossen."); } doorColData.state = !doorColData.state; Alt.EmitAllClients("Client:DoorManager:ManageDoor", doorColData.hash, new Position(doorColData.posX, doorColData.posY, doorColData.posZ), (bool)doorColData.state); return; } } if (player.Dimension >= 5000) { int houseInteriorCount = ServerHouses.GetMaxInteriorsCount(); for (var i = 1; i <= houseInteriorCount; i++) { if (player.Dimension >= 5000 && player.Dimension < 10000 && player.Position.IsInRange(ServerHouses.GetInteriorExitPosition(i), 2f)) { //Hotel abschließen / aufschließen if (player.Dimension - 5000 <= 0) { continue; } int apartmentId = player.Dimension - 5000; int hotelId = ServerHotels.GetHotelIdByApartmentId(apartmentId); if (hotelId <= 0 || apartmentId <= 0) { continue; } if (!ServerHotels.ExistHotelApartment(hotelId, apartmentId)) { HUDHandler.SendNotification(player, 3, 5000, "Ein unerwarteter Fehler ist aufgetreten [HOTEL-001]."); return; } if (ServerHotels.GetApartmentOwner(hotelId, apartmentId) != charId) { HUDHandler.SendNotification(player, 3, 5000, "Du hast keinen Schlüssel."); return; } HotelHandler.LockHotel(player, hotelId, apartmentId); return; } else if (player.Dimension >= 10000 && player.Position.IsInRange(ServerHouses.GetInteriorExitPosition(i), 2f)) { //Haus abschließen / aufschließen if (player.Dimension - 10000 <= 0) { continue; } int houseId = player.Dimension - 10000; if (houseId <= 0) { continue; } if (!ServerHouses.ExistHouse(houseId)) { HUDHandler.SendNotification(player, 3, 5000, "Ein unerwarteter Fehler ist aufgetreten [HOUSE-001]."); return; } if (ServerHouses.GetHouseOwner(houseId) != charId && !ServerHouses.IsCharacterRentedInHouse(charId, houseId)) { HUDHandler.SendNotification(player, 3, 5000, "Dieses Haus gehört nicht dir und / oder du bist nicht eingemietet."); return; } HouseHandler.LockHouse(player, houseId); return; } } } var houseEntrance = ServerHouses.ServerHouses_.FirstOrDefault(x => ((ClassicColshape)x.entranceShape).IsInRange((ClassicPlayer)player)); if (houseEntrance != null) { HouseHandler.LockHouse(player, houseEntrance.id); } } } catch (Exception e) { Alt.Log($"{e}"); } }