private static void HouseRemovalDialog(GamePlayer player, byte response) { if (response != 0x01) { return; } var itemWeak = player.TempProperties.getProperty <WeakReference>(DeedWeak, new WeakRef(null)); player.TempProperties.removeProperty(DeedWeak); var item = (InventoryItem)itemWeak.Target; var house = player.TempProperties.getProperty <House>(TargetHouse, null); player.TempProperties.removeProperty(TargetHouse); if (house == null) { ChatUtil.SendSystemMessage(player, "No house selected!"); return; } if (item == null || item.SlotPosition == (int)eInventorySlot.Ground || item.OwnerID == null || item.OwnerID != player.InternalID) { ChatUtil.SendSystemMessage(player, "You need a House Removal Deed for this."); return; } // Demand any consignment merchant inventory is removed before allowing a removal // Again, note that sometimes checks are done here, sometimes in housemgr. In this case, at least, // player will get remove item back if they answer no! - tolakram var consignmentMerchant = house.ConsignmentMerchant; if (consignmentMerchant != null && (consignmentMerchant.DBItems(player).Count > 0 || consignmentMerchant.TotalMoney > 0)) { ChatUtil.SendSystemMessage(player, "All items and money must be removed from your consignment merchant in order to remove this house!"); return; } player.Inventory.RemoveItem(item); Log.Warn($"HOUSING: {player.Name}:{player.Client.Account.Name} is removing house from lot {house.HouseNumber} owned by {house.OwnerID}"); InventoryLogging.LogInventoryAction(player, $"(HOUSE;{house.HouseNumber})", eInventoryActionType.Other, item.Template, item.Count); HouseMgr.RemoveHouse(house); ChatUtil.SendSystemMessage(player, "Your house has been removed!"); }
public void HouseAdmin(GamePlayer player, string [] args) { if (player.Client.Account.PrivLevel == (int)ePrivLevel.Admin) { if (args[1].ToLower() == "restart") { HouseMgr.Start(player.Client); return; } if (args[1].ToLower() == "addhookpoints") { if (player.TempProperties.getProperty <bool>(HousingConstants.AllowAddHouseHookpoint, false)) { player.TempProperties.removeProperty(HousingConstants.AllowAddHouseHookpoint); DisplayMessage(player.Client, "Add hookpoints turned off!"); } else { player.TempProperties.setProperty(HousingConstants.AllowAddHouseHookpoint, true); DisplayMessage(player.Client, "Add hookpoints turned on!"); } return; } } ArrayList houses = (ArrayList)HouseMgr.GetHousesCloseToSpot(player.CurrentRegionID, (int)player.Position.X, (int)player.Position.Y, 700); if (houses.Count != 1) { DisplayMessage(player.Client, "You need to stand closer to a house!"); return; } if (args[1].ToLower() == "info") { (houses[0] as House).SendHouseInfo(player); return; } // The following commands are for Admins only if (player.Client.Account.PrivLevel != (int)ePrivLevel.Admin) { return; } if (args[1].ToLower() == "model") { int newModel = Convert.ToInt32(args[2]); if (newModel < 1 || newModel > 12) { DisplayMessage(player.Client, "Valid house models are 1 - 12!"); return; } if (houses.Count == 1 && newModel != (houses[0] as House).Model) { HouseMgr.RemoveHouseItems(houses[0] as House); (houses[0] as House).Model = newModel; (houses[0] as House).SaveIntoDatabase(); (houses[0] as House).SendUpdate(); DisplayMessage(player.Client, "House model changed to " + newModel + "!"); GameServer.Instance.LogGMAction(player.Name + " changed house #" + (houses[0] as House).HouseNumber + " model to " + newModel); } return; } if (args[1].ToLower() == "remove") { string confirm = ""; if (args.Length > 2) { confirm = args[2]; } if (confirm != "YES") { DisplayMessage(player.Client, "You must confirm this removal with 'YES'"); return; } if (houses.Count == 1) { HouseMgr.RemoveHouse(houses[0] as House); DisplayMessage(player.Client, "House removed!"); GameServer.Instance.LogGMAction(player.Name + " removed house #" + (houses[0] as House).HouseNumber); } return; } }