public async Task BuyUpgrade(IPlayer player, int houseId, string upgrade) { try { if (player == null || !player.Exists || houseId <= 0) { return; } if (upgrade != "alarm" && upgrade != "storage" && upgrade != "bank") { return; } int charId = (int)player.GetCharacterMetaId(); if (charId <= 0) { return; } int dimension = player.Dimension; if (dimension <= 10000) { return; } int dhouseId = dimension - 10000; if (dhouseId <= 0 || dhouseId != houseId || !ServerHouses.ExistHouse(houseId)) { return; } if (ServerHouses.GetHouseOwner(houseId) != charId) { HUDHandler.SendNotification(player, 4, 5000, "Fehler: Du bist nicht der Hausbesitzer."); return; } switch (upgrade) { case "alarm": if (ServerHouses.HasHouseAlarmUpgrade(houseId)) { HUDHandler.SendNotification(player, 4, 2500, "Dein Haus besitzt bereits eine Alarmanlage."); return; } if (!ServerHouses.HasHouseBankUpgrade(houseId)) { HUDHandler.SendNotification(player, 4, 2500, "Du hast noch keinen Tresor ausgebaut in dem genügend Geld ist (500$)."); return; } if (ServerHouses.GetHouseBankMoney(houseId) < 500) { HUDHandler.SendNotification(player, 4, 2500, "Dein Haustresor verfügt nicht über die Kosten (500$)."); return; } ServerHouses.SetHouseBankMoney(houseId, ServerHouses.GetHouseBankMoney(houseId) - 500); ServerHouses.SetHouseUpgradeState(houseId, "alarm", true); HUDHandler.SendNotification(player, 2, 2500, $"Du hast das Hausupgrade 'Alarmanlage' erfolgreich erworben."); return; case "storage": if (ServerHouses.HasHouseStorageUpgrade(houseId)) { HUDHandler.SendNotification(player, 4, 2500, "Dein Haus besitzt bereits eine Lagermöglichkeit."); return; } if (!ServerHouses.HasHouseBankUpgrade(houseId)) { HUDHandler.SendNotification(player, 4, 2500, "Du hast noch keinen Tresor ausgebaut in dem genügend Geld ist (1500$)."); return; } if (ServerHouses.GetHouseBankMoney(houseId) < 1500) { HUDHandler.SendNotification(player, 4, 2500, "Dein Haustresor verfügt nicht über die Kosten (1500$)."); return; } ServerHouses.SetHouseBankMoney(houseId, ServerHouses.GetHouseBankMoney(houseId) - 1500); ServerHouses.SetHouseUpgradeState(houseId, "storage", true); HUDHandler.SendNotification(player, 2, 2500, $"Du hast das Hausupgrade 'Lagerraum' erfolgreich erworben."); return; case "bank": if (ServerHouses.HasHouseBankUpgrade(houseId)) { HUDHandler.SendNotification(player, 4, 2500, "Dein Haus besitzt bereits einen Tersor."); return; } if (!CharactersBank.HasCharacterBankMainKonto(charId)) { HUDHandler.SendNotification(player, 4, 5000, "Du besitzt noch kein Hauptkonto in deiner Bank."); return; } int accNumber = CharactersBank.GetCharacterBankMainKonto(charId); if (accNumber <= 0) { return; } if (CharactersBank.GetBankAccountMoney(accNumber) < 250) { HUDHandler.SendNotification(player, 4, 5000, "Dein Hauptkonto ist nicht ausreichend gedeckt (250$)."); return; } CharactersBank.SetBankAccountMoney(accNumber, CharactersBank.GetBankAccountMoney(accNumber) - 250); ServerHouses.SetHouseUpgradeState(houseId, "bank", true); HUDHandler.SendNotification(player, 2, 2500, $"Du hast das Hausupgrade 'Tresor' erfolgreich erworben."); return; } } catch (Exception e) { Alt.Log($"{e}"); } }
internal static async void BreakIntoHouse(IPlayer player, int houseId) { //Funktion: um in andere Häuser einzubrechen try { if (player == null || !player.Exists || houseId <= 0 || player.Dimension < 0 || player.Dimension > 0 || player.IsInVehicle) { return; } int charId = (int)player.GetCharacterMetaId(); if (charId <= 0) { return; } if (player.HasPlayerHandcuffs() || player.HasPlayerRopeCuffs()) { HUDHandler.SendNotification(player, 3, 5000, "Wie willst du das mit Handschellen/Fesseln machen?"); return; } if (!ServerHouses.ExistHouse(houseId) || ServerHouses.GetHouseOwner(houseId) <= 0 || !ServerHouses.IsHouseLocked(houseId)) { return; } if (!CharactersInventory.ExistCharacterItem(charId, "Brecheisen", "inventory") && !CharactersInventory.ExistCharacterItem(charId, "Brecheisen", "backpack")) { return; } if (ServerFactions.GetFactionDutyMemberCount(2) < 6) { HUDHandler.SendNotification(player, 3, 5000, "Es sind nicht genügend Beamte im Dienst (6)."); return; } if (!player.IsPlayerUsingCrowbar()) { int houseOwner = ServerHouses.GetHouseOwner(houseId); if (houseOwner <= 0) { return; } //Aufbrechen Starten if (DateTime.Now.Subtract(Convert.ToDateTime(Characters.GetCharacterLastLogin(houseOwner))).TotalHours >= 48) { HUDHandler.SendNotification(player, 4, 5000, "Fehler: Der Hausbesitzer war in den letzten 48 Stunden nicht online."); return; } Position curPos = player.Position; int duration = 300000; var houseOwnerPlayer = Alt.Server.GetPlayers().ToList().FirstOrDefault(x => x != null && x.Exists && x.GetCharacterMetaId() == (ulong)houseOwner); if (ServerHouses.HasHouseAlarmUpgrade(houseId)) { ServerFactions.createFactionDispatch(player, 2, $"Hauseinbruch: {ServerHouses.GetHouseStreet(houseId)}", $"Ein Einbruch in ein Haus wurde gemeldet - ein Dispatch wurde dazu in der Notrufverwaltung angelegt."); if (houseOwnerPlayer != null && (CharactersInventory.ExistCharacterItem(houseOwner, "Tablet", "inventory") || CharactersInventory.ExistCharacterItem(houseOwner, "Tablet", "backpack"))) { HUDHandler.SendNotification(houseOwnerPlayer, 3, 3500, $"Jemand bricht in dein Haus ein: {ServerHouses.GetHouseStreet(houseId)}"); HUDHandler.SendNotification(houseOwnerPlayer, 3, 3500, $"Jemand bricht in dein Haus ein: {ServerHouses.GetHouseStreet(houseId)}"); HUDHandler.SendNotification(houseOwnerPlayer, 3, 3500, $"Jemand bricht in dein Haus ein: {ServerHouses.GetHouseStreet(houseId)}"); } } player.GiveWeapon(WeaponModel.Crowbar, 1, true); player.SetPlayerUsingCrowbar(true); //ToDo: Animation HUDHandler.SendNotification(player, 1, duration, "Aufbrechen des Hauses begonnen (5 Minuten)..."); await Task.Delay(duration); if (player == null || !player.Exists) { return; } if (!player.Position.IsInRange(curPos, 3f)) { HUDHandler.SendNotification(player, 3, 5000, "Aufbrechen abgebrochen, du bist zu weit entfernt."); player.SetPlayerUsingCrowbar(false); player.RemoveWeapon(WeaponModel.Crowbar); return; } if (!player.IsPlayerUsingCrowbar()) { return; } player.RemoveWeapon(WeaponModel.Crowbar); ServerHouses.SetHouseLocked(houseId, false); HUDHandler.SendNotification(player, 2, 2500, "Haus aufgebrochen, beeil dich."); player.SetPlayerUsingCrowbar(false); return; } else { //Einbruch: Abbrechen player.EmitLocked("Client:Inventory:StopAnimation"); HUDHandler.SendNotification(player, 2, 1500, "Du hast den Einbruch abgebrochen."); player.SetPlayerUsingCrowbar(false); return; } } catch (Exception e) { Alt.Log($"{e}"); } }