local lvl = getConfigInfo('levelToBuyHouse')
function onUse(cid, item, fromPosition, itemEx, toPosition)
if getPlayerLevel(cid) < lvl then
return doPlayerSendCancel(cid, 'You have to be at least Level ' .. lvl .. ' to purchase a house.')
elseif isPlayerPzLocked(cid) then
return doPlayerSendCancel(cid, 'You cannot use this while PZlocked.')
end
local castles = db.getResult('SELECT id FROM houses WHERE town=4')
if castles:getID() == -1 then
return true
end
local owners, id, castle = {}, getPlayerGUID(cid), nil
repeat
local hid = castles:getDataInt('id')
local owner = getHouseInfo(hid).owner
if owner == id then
return doPlayerSendCancel(cid, 'Your character already owns a castle.')
elseif owner == 0 or owner == 2 then
if castle == nil then
castle = hid
end
else
table.insert(owners, owner)
end
until not castles:next()
castles:free()
if not castle then
return doPlayerSendCancel(cid, 'There are no castles available at this moment.')
end
local acc = db.getResult('SELECT id FROM players WHERE account_id = '.. getPlayerAccountId(cid) .. ' AND id != ' .. id)
if acc:getID() ~= -1 then
repeat
if table.find(owners, acc:getDataInt('id')) then
return doPlayerSendCancel(cid, 'Your account already owns a castle.')
end
until not acc:next()
acc:free()
end
doRemoveItem(item.uid)
local k = getHouseInfo(castle)
setHouseOwner(castle, id)
doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, 'Welcome to your new home, ' .. k.name .. '! You can now step into the teleport. To get here again, enter the teleport in Temple +1')
doBroadcastMessage(getCreatureName(cid) .. ' has bought ' .. k.name .. ' using a Castle Box.', MESSAGE_EVENT_ADVANCE)
local old = getThingPos(cid)
doTeleportThing(cid, k.entry)
doSendMagicEffect(old, CONST_ME_TELEPORT)
doSendMagicEffect(k.entry, CONST_ME_TELEPORT)
return true
end