elementrix
New Member
- Joined
- Feb 28, 2017
- Messages
- 20
- Reaction score
- 0
Error
Script
Code:
[02/03/2017 02:33:46] [Error - Action Interface]
[02/03/2017 02:33:46] data/actions/scripts/castle.lua:onUse
[02/03/2017 02:33:46] Description:
[02/03/2017 02:33:46] data/actions/scripts/castle.lua:11: attempt to index local 'castles' (a number value)
[02/03/2017 02:33:46] stack traceback:
[02/03/2017 02:33:46] data/actions/scripts/castle.lua:11: in function <data/actions/scripts/castle.lua:3>
Script
Lua:
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.storeQuery('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.query('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