• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

[Lua]Puzzle

SasirO

Banned User
Joined
Apr 30, 2009
Messages
559
Reaction score
0
Hello, im using this script on my server tfs 0.3.6 but im getting a strange error,
Code:
[20/12/2009 21:41:59] [Error - MoveEvents Interface] 
[20/12/2009 21:41:59] data/movements/scripts/pillow.lua<wow>nStepOut
[20/12/2009 21:41:59] Description: 
[20/12/2009 21:41:59] data/movements/scripts/pillow.lua:69: attempt to call global 'comparePos' (a nil value)
[20/12/2009 21:41:59] stack traceback:
[20/12/2009 21:41:59] data/movements/scripts/pillow.lua:69: in function <data/movements/scripts/pillow.lua:64>

Using tfs 0.3.6, anyone know whats the problem? I've also created a file called global.lua in my data folder and i pasted there the code

Code:
function comparePos(pos1, pos2)
    return (pos1.x == pos2.x and pos1.y == pos2.y and pos1.z == pos2.z)
end

But still getting this error ... :(:mad:

here is the script:
Code:
local config = {
	teleport_aid = 5408
}
local verticalTiles = 5400 
local horizontalTiles = 5401 
local ground = {normal = 426, used = 425}
local teleport = {itemid = 1387, actionid = 5408} 
local teleportPosition = {x = 32826, y = 32347, z = 9}
local newPosition = {x = 32821, y = 32347, z = 9} -
local position = {x = 32818, y = 32334, z = 9} 
local magicEffect = 20


function onStepIn(cid, item, pos)
    teleportPosition.stackpos = 1
    local getTeleport = getThingfromPos(teleportPosition)
    if getTeleport.itemid == teleport.itemid and getTeleport.actionid == teleport.actionid then
        doRemoveItem(getTeleport.uid, 1)
    end
    local getPillow = {}
    if item.actionid == verticalTiles then
        for i = 0, 5 do
            getPillow[i + 1] = getThingfromPos({x = position.x + i, y = getPlayerPosition(cid).y, z = position.z, stackpos = 1})
        end
    elseif item.actionid == horizontalTiles then
        for i = 0, 5 do
            getPillow[i + 1] = getThingfromPos({x = getPlayerPosition(cid).x, y = position.y + i, z = position.z, stackpos = 1})
        end
    end
    doTransformItem(getPillow[1].uid, getPillow[6].itemid)
    for i = 1, 5 do
        doTransformItem(getPillow[i + 1].uid, getPillow[i].itemid)
    end
    if checkPillows(position.x, position.y, 1686) == 1 and checkPillows(position.x + 3, position.y, 1688) == 1 and checkPillows(position.x, position.y + 3, 1687) == 1 and checkPillows(position.x + 3, position.y + 3, 1689) == 1 then
        local newTeleport = doCreateTeleport(teleport.itemid, newPosition, teleportPosition)
       	doItemSetAttribute(newTeleport, "aid", config.teleport_aid)
        if magicEffect ~= nil then
            doSendMagicEffect(pos, magicEffect)
        end
    end
    doTransformItem(item.uid, ground.used)
    return 1
end

function onStepOut(cid, item, pos)
    pos.stackpos = 1
    local getPos = getThingfromPos(pos)
    teleportPosition.stackpos = 1
    local getTeleport = getThingfromPos(teleportPosition)
    if comparePos(pos, teleportPosition) and getPos.itemid == getTeleport.itemid and getPos.actionid == getTeleport.actionid then
        teleportPosition.stackpos = 1
        doRemoveItem(getTeleport.uid, 1)
        resetPuzzle()
        return 1
    else
        doTransformItem(item.uid, ground.normal)
        return 1
    end
end

function checkPillows(posx, posy, item)
    local returnValue = 1
    for gx = posx, posx + 2 do
        for gy = posy, posy + 2 do
            if getThingfromPos({x = gx, y = gy, z = position.z, stackpos = 1}).itemid ~= item then
                returnValue = 0
                break
            end
        end
    end
    return returnValue
end

function resetPuzzle()
    local availablePillows = {}
    for i = 0, 3 do
        local pillowId = 1686 + i
        for i = 1, 9 do
            table.insert(availablePillows, pillowId)
        end
    end
    availablePillows = shuffleTable(availablePillows)
    for gx = position.x, position.x + 5 do
        for gy = position.y, position.y + 5 do
            local pillow = math.random(1, #availablePillows)
            getItem = getThingfromPos({x = gx, y = gy, z = position.z, stackpos = 1})
            doTransformItem(getItem.uid, availablePillows[pillow])
            table.remove(availablePillows, pillow)
        end
    end
end

function shuffleTable(t)
    local newTable = {}
    for i = 1, #t do
        randomId = math.random(1, #t)
        table.insert(newTable, t[randomId])
        table.remove(t, randomId)
    end
    return newTable
end
 
lul?
Why the hell creating a file that will still not be read by the server?
Add this function to function.lua or into the script itself.

kthx
 
lul?
Why the hell creating a file that will still not be read by the server?
Add this function to function.lua or into the script itself.

kthx

I've added it to lib/function like this:
function comparePos(pos1, pos2)
return (pos1.x == pos2.x and pos1.y == pos2.y and pos1.z == pos2.z)
end

but it doesnt work ;) no errors, no pillows move etc.
 
Back
Top