Skip to content

House

House Class

The House class represents player houses.

Constructor

House(id)

Basic Properties

MethodReturnsDescription
getId()numberHouse ID
getName()stringHouse name
getTown()TownHouse town
getRent()numberRent amount
getPaidUntil()numberPaid until timestamp
getSize()numberSize in SQM
getTileCount()numberTile count
getBeds()tableAll beds
getBedCount()numberBed count
getExitPosition()PositionExit position

Ownership

MethodReturnsDescription
getOwnerGuid()numberOwner player ID
getOwnerName()stringOwner name
setOwnerGuid(guid)-Set owner
setNewOwnerGuid(guid)-Set pending owner
local house = House(1)
if house:getOwnerGuid() == 0 then
print("House is for sale!")
else
print("Owner: " .. house:getOwnerName())
end

Access Lists

MethodReturnsDescription
getAccessList(listId)stringGet access list
setAccessList(listId, list)-Set access list
kickPlayer(player, player)booleanKick from house

List IDs:

  • SUBOWNER_LIST (0x100) - Sub-owners
  • GUEST_LIST (0x101) - Guests
-- Add guest
local list = house:getAccessList(GUEST_LIST)
house:setAccessList(GUEST_LIST, list .. "\n" .. player:getName())

Doors

MethodReturnsDescription
getDoors()tableAll doors
getDoorCount()numberDoor count
getDoorIdByPosition(position)numberDoor ID at position

Tiles

MethodReturnsDescription
getTiles()tableAll house tiles
getItems()tableAll items in house

Examples

Buy House

local function buyHouse(player, house)
if house:getOwnerGuid() > 0 then
player:sendCancelMessage("This house already has an owner.")
return false
end
local price = house:getTileCount() * 10000 -- 10k per sqm
if player:getBankBalance() < price then
player:sendCancelMessage("You need " .. price .. " gold.")
return false
end
player:setBankBalance(player:getBankBalance() - price)
house:setOwnerGuid(player:getGuid())
player:sendTextMessage(MESSAGE_INFO_DESCR,
"You bought " .. house:getName() .. " for " .. price .. " gold!")
return true
end

Check House Access

local function hasHouseAccess(player, house)
if house:getOwnerGuid() == player:getGuid() then
return true
end
local subowners = house:getAccessList(SUBOWNER_LIST)
if subowners:find(player:getName()) then
return true
end
local guests = house:getAccessList(GUEST_LIST)
if guests:find(player:getName()) then
return true
end
return false
end