• 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!

Solved Puzzle script

MiPo91

Member
Joined
Mar 30, 2010
Messages
299
Reaction score
18
Location
Finland
Hello.
I'm trying to add second puzzle on my server, the first one is working just fine, but on the second one it's moving the pillows just fine, but every time I step on the tile which moves the pillows I get this error(3x)

I changed the action ids/coordinates so it should work with that, but I just dont get why it's not working...

Code:
[19:8:59.184] [Error - MoveEvents Interface]
[19:8:59.184] data/movements/scripts/sp/pillow.lua:onStepIn
[19:8:59.185] Description:
[19:8:59.185] (luaGetThingFromPos) Tile not found

[19:8:59.186] [Error - MoveEvents Interface]
[19:8:59.186] data/movements/scripts/sp/pillow.lua:onStepIn
[19:8:59.186] Description:
[19:8:59.186] (luaGetThingFromPos) Tile not found

[19:8:59.186] [Error - MoveEvents Interface]
[19:8:59.187] data/movements/scripts/sp/pillow.lua:onStepIn
[19:8:59.187] Description:
[19:8:59.187] (luaGetThingFromPos) Tile not found


script:
Code:
-- >>CREDITS<< --
-- Script 100% by COLANDUS
-- Functions 100% by COLANDUS
-- OPENLUA.COM --
-- >>CREDITS<< --
 
-- >>INFO<< --
-- Don't forget: Place 9 pillows of each color in different order in the mapeditor!
 
-- Do you use a lever to teleport you to this room? Then you could make it randomize the puzzle when you press it!
-- If you do that, you could remove the randomize part, so it doesn't randomize in this script, make it randomize only when you pull the lever.
-- Your own choise, just giving you ideas!
 
-- Pilow order to complete:
-- BLUE, GREEN
-- RED, YELLOW
-- >>INFO<< --
 
-- >>CONFIG<< --
local config = {
        teleport_aid = 5404
}
local verticalTiles = 5402 -- Action id of the vertical tiles.
local horizontalTiles = 5403 -- Action id of the horizontal tiles.
local ground = {normal = 426, used = 425} -- Itemid of the ground tile when it is normal or used (when you stand on it)
local teleport = {itemid = 1387, actionid = 5404} -- Enter the itemid and the actionid of the teleport.
local teleportPosition = {x = 32826, y = 32347, z = 9} -- Where should the teleport be spawned when you finnish the puzzle?
local newPosition = {x = 32764, y = 32273, z = 14} -- Where should you get teleported when you enter the teleport?
local position = {x = 31731, y = 32253, z = 7} -- Position of the north west (top left) side of the puzzle area.
local magicEffect = 49 -- What effect will appear when you finnish the puzzle? Leave blank or write "nil" if you don't want any.
-- >>CONFIG<< --
 
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 doComparePositions(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

if I remove the check it doesnt give the error anymore... but the problem is that then it wont work(the teleport wont be made).

Any ideas?

EDIT:
Solved.
 
Last edited:
Back
Top