コード例 #1
0
ファイル: LotMarker.cs プロジェクト: JVirant/DOLSharp
        private void CreateHouse(GamePlayer player, int model)
        {
            DatabaseItem.Model = model;
            DatabaseItem.Name  = player.Name;

            if (player.Guild != null)
            {
                DatabaseItem.Emblem = player.Guild.Emblem;
            }

            var house = new House(DatabaseItem);

            HouseMgr.AddHouse(house);

            if (model != 0)
            {
                // move all players outside the mesh
                foreach (GamePlayer p in player.GetPlayersInRadius(500))
                {
                    house.Exit(p, true);
                }

                RemoveFromWorld();
                Delete();
            }
        }
コード例 #2
0
ファイル: LotMarker.cs プロジェクト: JVirant/DOLSharp
        private void BuyLot(GamePlayer player, byte response)
        {
            if (response != 0x01)
            {
                return;
            }

            lock (DatabaseItem)             // Mannen 10:56 PM 10/30/2006 - Fixing every lock(this)
            {
                if (!string.IsNullOrEmpty(DatabaseItem.OwnerID))
                {
                    return;
                }

                if (HouseMgr.GetHouseNumberByPlayer(player) != 0 && player.Client.Account.PrivLevel != (int)ePrivLevel.Admin)
                {
                    ChatUtil.SendMerchantMessage(player, "You already own another lot or house (Number " + HouseMgr.GetHouseNumberByPlayer(player) + ").");
                    return;
                }

                long totalCost = HouseTemplateMgr.GetLotPrice(DatabaseItem);
                if (player.RemoveMoney(totalCost, "You just bought this lot for {0}.",
                                       eChatType.CT_Merchant, eChatLoc.CL_SystemWindow))
                {
                    InventoryLogging.LogInventoryAction(player, this, eInventoryActionType.Merchant, totalCost);
                    DatabaseItem.LastPaid = DateTime.Now;
                    DatabaseItem.OwnerID  = player.ObjectId;
                    CreateHouse(player, 0);
                }
                else
                {
                    ChatUtil.SendMerchantMessage(player, "You dont have enough money!");
                }
            }
        }
コード例 #3
0
ファイル: LotMarker.cs プロジェクト: JVirant/DOLSharp
        public override bool Interact(GamePlayer player)
        {
            if (!base.Interact(player))
            {
                return(false);
            }

            House house = HouseMgr.GetHouseByPlayer(player);

            if (house != null)
            {
                //the player might be targeting a lot he already purchased that has no house on it yet
                if (house.HouseNumber != DatabaseItem.HouseNumber && player.Client.Account.PrivLevel != (int)ePrivLevel.Admin)
                {
                    ChatUtil.SendSystemMessage(player, "You already own a house!");
                    return(false);
                }
            }

            if (string.IsNullOrEmpty(DatabaseItem.OwnerID))
            {
                player.Out.SendCustomDialog("Do you want to buy this lot?\r\n It costs " + Money.GetString(HouseTemplateMgr.GetLotPrice(DatabaseItem)) + "!", BuyLot);
            }
            else
            {
                if (HouseMgr.IsOwner(DatabaseItem, player))
                {
                    player.Out.SendMerchantWindow(HouseTemplateMgr.GetLotMarkerItems(this), eMerchantWindowType.Normal);
                }
                else
                {
                    ChatUtil.SendSystemMessage(player, "You do not own this lot!");
                }
            }

            return(true);
        }
コード例 #4
0
ファイル: LotMarker.cs プロジェクト: JVirant/DOLSharp
        public override bool ReceiveItem(GameLiving source, InventoryItem item)
        {
            if (source == null || item == null)
            {
                return(false);
            }

            if (!(source is GamePlayer))
            {
                return(false);
            }

            var player = (GamePlayer)source;

            if (HouseMgr.IsOwner(DatabaseItem, player))
            {
                switch (item.Id_nb)
                {
                case "housing_alb_cottage_deed":
                    CreateHouse(player, 1);
                    break;

                case "housing_alb_house_deed":
                    CreateHouse(player, 2);
                    break;

                case "housing_alb_villa_deed":
                    CreateHouse(player, 3);
                    break;

                case "housing_alb_mansion_deed":
                    CreateHouse(player, 4);
                    break;

                case "housing_mid_cottage_deed":
                    CreateHouse(player, 5);
                    break;

                case "housing_mid_house_deed":
                    CreateHouse(player, 6);
                    break;

                case "housing_mid_villa_deed":
                    CreateHouse(player, 7);
                    break;

                case "housing_mid_mansion_deed":
                    CreateHouse(player, 8);
                    break;

                case "housing_hib_cottage_deed":
                    CreateHouse(player, 9);
                    break;

                case "housing_hib_house_deed":
                    CreateHouse(player, 10);
                    break;

                case "housing_hib_villa_deed":
                    CreateHouse(player, 11);
                    break;

                case "housing_hib_mansion_deed":
                    CreateHouse(player, 12);
                    break;

                default:
                    return(false);
                }

                player.Inventory.RemoveItem(item);

                // Tolakram:  Is this always null when purchasing a house?
                InventoryLogging.LogInventoryAction(player, "(HOUSE;" + (CurrentHouse == null ? DatabaseItem.HouseNumber : CurrentHouse.HouseNumber) + ")", eInventoryActionType.Other, item.Template, item.Count);

                return(true);
            }

            ChatUtil.SendSystemMessage(player, "You do not own this lot!");

            return(false);
        }