Example #1
0
        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!");
        }
Example #2
0
        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;
            }
        }