• 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 Simple lever script, error

Wiw3K

New Member
Joined
Apr 16, 2008
Messages
371
Reaction score
3
Hi, i made simple lever script that you switch lever -> stairs dis/appear. It works but gives errors in console o_O? Why there are errors ...

Distro: 0.3.6 build 3293

Error:
Code:
[Error - Action Interface]
data/actions/scripts/quests/bkquestlever.lua:onUse
Description:
attempt to index a nil value
stack traceback:
        [C]: in function 'getTileItemById'
        data/actions/scripts/quests/bkquestlever.lua:20: in function <data/actio
ns/scripts/quests/bkquestlever.lua:6>

[Error - Action Interface]
data/actions/scripts/quests/bkquestlever.lua:onUse
Description:
attempt to index a nil value
stack traceback:
        [C]: in function 'getTileItemById'
        data/actions/scripts/quests/bkquestlever.lua:14: in function <data/actio
ns/scripts/quests/bkquestlever.lua:6>

Script:
Code:
local function doorEnter(cid, item, toPosition)
    doTransformItem(item.uid, item.itemid + 1)
    doTeleportThing(cid, toPosition)
end

function onUse(cid, item, frompos, itemEx, topos) 
    local pos = {x = 209, y = 483, z = 5}
    local leverpos = {x = 206, y = 485, z = 5}
    local stairs = 5260
 
    if (item.itemid == 1945) then
        doCreateItem(stairs, 1, pos)
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Stairs appeared.") 
        doTransformItem(getTileItemById(leverPos, 1945).uid, 1946)
        return true
    end
    if(item.itemid == 1946) then
        doRemoveItem(getTileItemById(pos,stairs).uid)
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Stairs disappeared.")
        doTransformItem(getTileItemById(leverPos, 1946).uid, 1945)
        return true
    end
    return true
end
 
Code:
local function doorEnter(cid, item, toPosition)
    doTransformItem(item.uid, item.itemid + 1)
    doTeleportThing(cid, toPosition)
end

function onUse(cid, item, frompos, itemEx, topos)
    local pos = {x = 209, y = 483, z = 5, stackpos = 253}
    local leverpos = {x = 206, y = 485, z = 5, stackpos = 253}
    local stairs = 5260
    if (item.itemid == 1945) then
        doCreateItem(stairs, 1, pos)
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Stairs appeared.")
        doTransformItem(getTileItemById(leverPos, 1945).uid, 1946)
        return true
    end
    if(item.itemid == 1946) then
        doRemoveItem(getTileItemById(pos,stairs).uid)
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Stairs disappeared.")
        doTransformItem(getTileItemById(leverPos, 1946).uid, 1945)
        return true
    end
    return true
end
 
Code:
local function doorEnter(cid, item, toPosition)
    doTransformItem(item.uid, item.itemid + 1)
    doTeleportThing(cid, toPosition)
end

function onUse(cid, item, frompos, itemEx, topos)
    local pos = {x = 209, y = 483, z = 5, stackpos = 253}
    local leverpos = {x = 206, y = 485, z = 5, stackpos = 253}
    local stairs = 5260
    if (item.itemid == 1945) then
        doCreateItem(stairs, 1, pos)
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Stairs appeared.")
        doTransformItem(getTileItemById(leverPos, 1945).uid, 1946)
        return true
    end
    if(item.itemid == 1946) then
        doRemoveItem(getTileItemById(pos,stairs).uid)
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Stairs disappeared.")
        doTransformItem(getTileItemById(leverPos, 1946).uid, 1945)
        return true
    end
    return true
end
Still the same errors.
Code:
[Error - Action Interface]
data/actions/scripts/quests/bkquestlever.lua:onUse
Description:
attempt to index a nil value
stack traceback:
        [C]: in function 'getTileItemById'
        data/actions/scripts/quests/bkquestlever.lua:13: in function <data/actio
ns/scripts/quests/bkquestlever.lua:6>

[Error - Action Interface]
data/actions/scripts/quests/bkquestlever.lua:onUse
Description:
attempt to index a nil value
stack traceback:
        [C]: in function 'getTileItemById'
        data/actions/scripts/quests/bkquestlever.lua:19: in function <data/actio
ns/scripts/quests/bkquestlever.lua:6>
 
Code:
function onUse(cid, item, fromPosition, itemEx, toPosition)

    local leverpos1 = {x=3554, y=3319, z=8, stackpos=1}
    local lever1 = getThingfromPos(leverpos1)

  
    local stairpos1= {x=3559, y=3324, z=8, stackpos=1
    local stair1= getThingfromPos(stairpos1)

  
    if(item.uid == 4510) then
        if(item.itemid == 1945) then
            doTransformItem(item.uid,item.itemid+1)
        elseif(item.itemid == 1946) then
            doTransformItem(item.uid,item.itemid-1)
            end
          
    if(item.uid == 4510 and lever1.itemid == 1945 and stair1.itemid == 0) then
            doCreateItem(5260,1,stairpos1)
doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Stair have been created again.")

          
    elseif(item.uid == 4510 and lever1.itemid == 1946 and stair1.itemid == 5260) then
            doRemoveItem(stair1.uid,1)
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"Stair have been removed.")

end

    end
    return TRUE  
end
 
deleted leverpos

Code:
local function doorEnter(cid, item, toPosition)
    doTransformItem(item.uid, item.itemid + 1)
    doTeleportThing(cid, toPosition)
end

function onUse(cid, item, frompos, itemEx, topos)
    local pos = {x = 209, y = 483, z = 5, stackpos = 253}
    local stairs = 5260
    if (item.itemid == 1945) then
        doCreateItem(stairs, 1, pos)
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Stairs appeared.")
        doTransformItem(item.uid,item.itemid+1)
        return true
    end
    if(item.itemid == 1946) then
        doRemoveItem(getTileItemById(pos,stairs).uid)
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Stairs disappeared.")
        doTransformItem(item.uid,item.itemid-1)
        return true
    end
    return true
end
 
deleted leverpos

Code:
local function doorEnter(cid, item, toPosition)
    doTransformItem(item.uid, item.itemid + 1)
    doTeleportThing(cid, toPosition)
end

function onUse(cid, item, frompos, itemEx, topos)
    local pos = {x = 209, y = 483, z = 5, stackpos = 253}
    local stairs = 5260
    if (item.itemid == 1945) then
        doCreateItem(stairs, 1, pos)
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Stairs appeared.")
        doTransformItem(item.uid,item.itemid+1)
        return true
    end
    if(item.itemid == 1946) then
        doRemoveItem(getTileItemById(pos,stairs).uid)
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Stairs disappeared.")
        doTransformItem(item.uid,item.itemid-1)
        return true
    end
    return true
end
Works like charm, ohh now i see. Why i used leverPos if i have onUse method lolol Thanks
 

Similar threads

Back
Top