• 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 leaver remove item

Djivar

AKA Wickedviruz
Joined
Sep 28, 2009
Messages
1,641
Reaction score
19
Location
Sweden,edsbyn
Hello! i got this script that gonna remove a stone on use a leaver ( like annih)
But i get this error when i startup my server.

Code:
[10/10/2017 11:43:56] [Error - LuaScriptInterface::loadFile] data/actions/scripts/other/Serpent King lair.lua:16: '}' expected near ')'
[10/10/2017 11:43:56] [Warning - Event::loadScript] Cannot load script (data/actions/scripts/other/Serpent King lair.lua)
[10/10/2017 11:43:56] data/actions/scripts/other/Serpent King lair.lua:16: '}' expected near ')'


And this is the serpent king lair.lua code

Lua:
local stonepos = {x=1275, y=560, z=9, stackpos=1}
local stonepos = {x=1275, y=560, z=9, stackpos=1}
local stonepos = {x=1275, y=560, z=9, stackpos=1}
local stonepos = {x=1275, y=560, z=9, stackpos=1} -- Stone pos
function onUse(cid, item, fromPos, item2, toPos)
    if item.itemid == 1945 then
        doRemoveItem(getThingfromPos(stonepos).uid, 1)
        doTransformItem(item.uid,1946)
        addEvent(onTimer5, 4*60*1000) --2minutes
    end
return true
end
function onTimer5() --creates wall back
    doTransformItem(getThingFromPos({x=1300, y=509, z=9, stackpos=1}).uid, 1945)--lever pos
    doCreateItem(1304,1,{x=1278, y=560, z=9)
    doCreateItem(1304,1,{x=1277, y=560, z=9)
    doCreateItem(1304,1,{x=1276, y=560, z=9)
    doCreateItem(1304,1,{x=1275, y=560, z=9)-- Stone pos
end


What have i missed?
 
Hello! i got this script that gonna remove a stone on use a leaver ( like annih)
But i get this error when i startup my server.

Code:
[10/10/2017 11:43:56] [Error - LuaScriptInterface::loadFile] data/actions/scripts/other/Serpent King lair.lua:16: '}' expected near ')'
[10/10/2017 11:43:56] [Warning - Event::loadScript] Cannot load script (data/actions/scripts/other/Serpent King lair.lua)
[10/10/2017 11:43:56] data/actions/scripts/other/Serpent King lair.lua:16: '}' expected near ')'


And this is the serpent king lair.lua code

Lua:
local stonepos = {x=1275, y=560, z=9, stackpos=1}
local stonepos = {x=1275, y=560, z=9, stackpos=1}
local stonepos = {x=1275, y=560, z=9, stackpos=1}
local stonepos = {x=1275, y=560, z=9, stackpos=1} -- Stone pos
function onUse(cid, item, fromPos, item2, toPos)
    if item.itemid == 1945 then
        doRemoveItem(getThingfromPos(stonepos).uid, 1)
        doTransformItem(item.uid,1946)
        addEvent(onTimer5, 4*60*1000) --2minutes
    end
return true
end
function onTimer5() --creates wall back
    doTransformItem(getThingFromPos({x=1300, y=509, z=9, stackpos=1}).uid, 1945)--lever pos
    doCreateItem(1304,1,{x=1278, y=560, z=9)
    doCreateItem(1304,1,{x=1277, y=560, z=9)
    doCreateItem(1304,1,{x=1276, y=560, z=9)
    doCreateItem(1304,1,{x=1275, y=560, z=9)-- Stone pos
end


What have i missed?
Lua:
doCreateItem(1304,1,{x=1278, y=560, z=9})
Do this for the next 4 lines too.
 
Code:
local stonepos1 = {x=1275, y=560, z=9, stackpos=1}
local stonepos2 = {x=1276, y=560, z=9, stackpos=1}
local stonepos3 = {x=1277, y=560, z=9, stackpos=1}
local stonepos4 = {x=1278, y=560, z=9, stackpos=1} -- Stone pos

function onUse(cid, item, fromPos, item2, toPos)
    if item.itemid == 1945 then
        doRemoveItem(getThingfromPos(stonepos1).uid, 1)
        doRemoveItem(getThingfromPos(stonepos2).uid, 1)
        doRemoveItem(getThingfromPos(stonepos3).uid, 1)
        doRemoveItem(getThingfromPos(stonepos4).uid, 1)
        doTransformItem(item.uid,1946)
        addEvent(onTimer5, 4*60*1000) --2minutes
    end
    return true
end

function onTimer5() --creates wall back
    doTransformItem(getThingFromPos({x=1300, y=509, z=9, stackpos=1}).uid, 1945)--lever pos
    doCreateItem(1304,1,stonepos1)
    doCreateItem(1304,1,stonepos2)
    doCreateItem(1304,1,stonepos3)
    doCreateItem(1304,1,stonepos4)-- Stone pos
end
 
>.< Nice Peonso. I think I'm done trying to answer questions while at work now. But personally I think it might be better to do something like this.

Lua:
local stonePos = {
    [1] = {x=1275, y=560, z=9, stackpos=1},
    [2] = {x=1276, y=560, z=9, stackpos=1},
    [3] = {x=1277, y=560, z=9, stackpos=1},
    [4] = {x=1278, y=560, z=9, stackpos=1} -- Stone pos
}

function onUse(cid, item, fromPos, item2, toPos)
    if item.itemid == 1945 then
        for i = 1, #stonePos do
            doRemoveItem(getThingfromPos(stonePos[i]).uid, 1)
        end
        doTransformItem(item.uid,1946)
        addEvent(onTimer5, 4*60*1000, item.uid) -- 4 minutes
    end
    return true
end

function onTimer5(itemUid)
    for i = 1, #stonePos do
        doCreateItem(1304, 1, stonePos[i])
    end
    doTransformItem(itemUid, 1945)
end
 
Thanks for your time! altho when i use this script the leaver is returned but the stone do not pop back up! :/
Lua:
local stonePos = {
    [1] = {x=1002, y=898, z=11, stackpos=1} -- Stone pos
}
function onUse(cid, item, fromPos, item2, toPos)
    if item.itemid == 1945 then
        for i = 1, #stonePos do
            doRemoveItem(getThingfromPos(stonePos[i]).uid, 1)
        end
        doTransformItem(item.uid,1946)
        addEvent(onTimer5, 1*60*1000, item.uid) -- 4 minutes
    end
    return true
end
function onTimer5(itemUid)
    for i = 1, #stonePos do
        doCreateItem(1304, 1, stonePos[i])
    end
    doTransformItem(itemUid, 1945)
end
 
Code:
local stonePos = {
    [1] = {x=1002, y=898, z=11, stackpos=1} -- Stone pos
}
function onUse(cid, item, fromPos, item2, toPos)
    if item.itemid == 1945 then
        for i = 1, #stonePos do
            doRemoveItem(getThingfromPos(stonePos[i]).uid, 1)
        end
        doTransformItem(item.uid,1946)
        addEvent(onTimer5, 1*60*1000, getThingPos(item.uid)) -- 4 minutes
    end
    return true
end
function onTimer5(pos)
    for i = 1, #stonePos do
        doCreateItem(1304, 1, stonePos[i])
    end
    doTransformItem(getThingfromPos(pos).uid, 1945)
end
 
What is even going on anymore haha.

Peonso is right again on how the lever wouldn't be returning and the stones would be coming back just fine. Opposite of what you're stating. So his version should work fine at this point.

But if you are now just going to use one stone instead of 4 like you had before then looping isn't needed since there's only one position table inside stonePos.

For only one stone:
Lua:
local stonePos = {x=1002, y=898, z=11, stackpos=1} -- Stone pos

function onUse(cid, item, fromPos, item2, toPos)
    if item.itemid == 1945 then
        doRemoveItem(getThingfromPos(stonePos).uid, 1)
        doTransformItem(item.uid,1946)
        addEvent(onTimer5, 1*60*1000, getThingPos(item.uid)) -- 1 minute
    end
    return true
end

function onTimer5(pos)
    doCreateItem(1304, 1, stonePos)
    doTransformItem(getThingfromPos(pos).uid, 1945)
end

For multiple stones:
Lua:
local stonePos = {
    [1] = {x=1275, y=560, z=9, stackpos=1},
    [2] = {x=1276, y=560, z=9, stackpos=1},
    [3] = {x=1277, y=560, z=9, stackpos=1},
    [4] = {x=1278, y=560, z=9, stackpos=1} -- Stone pos
}

function onUse(cid, item, fromPos, item2, toPos)
    if item.itemid == 1945 then
        for i = 1, #stonePos do
            doRemoveItem(getThingfromPos(stonePos[i]).uid, 1)
        end
        doTransformItem(item.uid,1946)
        addEvent(onTimer5, 1*60*1000, getThingPos(item.uid)) -- 1 minute
    end
    return true
end

function onTimer5(pos)
    for i = 1, #stonePos do
        doCreateItem(1304, 1, stonePos[i])
    end
    doTransformItem(getThingfromPos(pos).uid, 1945)
end

You definitely have some good resources to work through here now lol, hope you're learning some!
 
Back
Top