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!"); } } }
public override IList GetExamineMessages(GamePlayer player) { IList list = new ArrayList(); list.Add("You target lot number " + DatabaseItem.HouseNumber + "."); if (string.IsNullOrEmpty(DatabaseItem.OwnerID)) { list.Add(" It can be bought for " + Money.GetString(HouseTemplateMgr.GetLotPrice(DatabaseItem)) + "."); } else if (!string.IsNullOrEmpty(DatabaseItem.Name)) { list.Add(" It is owned by " + DatabaseItem.Name + "."); } return(list); }
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); }
public static bool Start(GameClient client = null) { // load hookpoint offsets House.LoadHookpointOffsets(); // initialize the house template manager HouseTemplateMgr.Initialize(); _houseList = new Dictionary <ushort, Dictionary <int, House> >(); _idList = new Dictionary <ushort, int>(); int regions = 0; foreach (RegionEntry entry in WorldMgr.GetRegionList()) { Region reg = WorldMgr.GetRegion(entry.id); if (reg != null && reg.UseHousingManager) { if (!_houseList.ContainsKey(reg.ID)) { _houseList.Add(reg.ID, new Dictionary <int, House>()); } if (!_idList.ContainsKey(reg.ID)) { _idList.Add(reg.ID, 0); } regions++; } } int houses = 0; int lotmarkers = 0; foreach (DBHouse house in GameServer.Database.SelectAllObjects <DBHouse>()) { Dictionary <int, House> housesForRegion; _houseList.TryGetValue(house.RegionID, out housesForRegion); // if we don't have the given region loaded as a housing zone, skip this house if (housesForRegion == null) { continue; } // if we already loaded this house, that's no bueno, but just skip if (housesForRegion.ContainsKey(house.HouseNumber)) { continue; } if (SpawnLot(house, housesForRegion) == eLotSpawnType.House) { houses++; } else { lotmarkers++; } } if (log.IsInfoEnabled) { log.Info("[Housing] Loaded " + houses + " houses and " + lotmarkers + " lotmarkers in " + regions + " regions!"); } if (client != null) { client.Out.SendMessage("Loaded " + houses + " houses and " + lotmarkers + " lotmarkers in " + regions + " regions!", eChatType.CT_System, eChatLoc.CL_SystemWindow); } if (CheckRentTimer != null) { CheckRentTimer.Change(Properties.RENT_CHECK_INTERVAL * 60 * 1000, Properties.RENT_CHECK_INTERVAL * 60 * 1000); } else { CheckRentTimer = new Timer(CheckRents, null, Properties.RENT_CHECK_INTERVAL * 60 * 1000, Properties.RENT_CHECK_INTERVAL * 60 * 1000); } return(true); }
public virtual bool OnPlayerBuy(GamePlayer player, int item_slot, int number) { GameMerchant.OnPlayerBuy(player, item_slot, number, HouseTemplateMgr.GetLotMarkerItems(this)); return(true); }