• 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 Lua Table Issue

Lava Titan

Developer
Joined
Jul 25, 2009
Messages
1,529
Solutions
1
Reaction score
85
Location
Portugal
Good night every1 :p
Can some1 explain me what am I doing wrong please?

when I step on the portal, it's not loading the correct AID from that portal :X

Thanks in advance!!

P.S: sorry for my poor scripting skills

Code:
local config = {
    -- actionID, level, storage, storage name
    [13870] = {level = 5000, storage = 13870, storage_name = "ITEM[1]"},
    [13871] = {level = 10000, storage = 13871, storage_name = "ITEM[2]"},
    [13872] = {level = 15000, storage = 13872, storage_name = "ITEM[3]"},
    [13873] = {level = 20000, storage = 13873, storage_name = "ITEM[4]"},
    [13874] = {level = 25000, storage = 13874, storage_name = "ITEM[5]"},
    [13875] = {level = 30000, storage = 13875, storage_name = "ITEM[6]"},
    [13876] = {level = 35000, storage = 13876, storage_name = "ITEM[7]"},
    [13877] = {level = 40000, storage = 13877, storage_name = "ITEM[8]"},
    [13878] = {level = 45000, storage = 13878, storage_name = "ITEM[9]"},
    [13879] = {level = 50000, storage = 13879, storage_name = "ITEM[10]"}
}

function onStepIn(player, item, position, fromPosition)
    if not player:isPlayer() then
        print("1")
    return true
    end

  
    for i = 13870, 13879 do
        if not item:getActionId() == config[i] then
            print("2")
        return true
        elseif player:getLevel() ~= config[i].level then
            player:say("LEAVE NOW MORTAL!\nYOU ARE NOT STRONG ENOUGHT TO ENTER!", TALKTYPE_MONSTER_YELL, position)
            player:sendTextMessage(MESSAGE_INFO_DESCR, "You need level "..config[i].level.." to enter here.")
            player:teleportTo(fromPosition)
            print("3")
        return true
        elseif player:getStorageValue(config[i].storage) ~= 1 then
            player:say("LEAVE NOW MORTAL!\nYOU DO NOT HAVE PERMISSION TO ENTER!", TALKTYPE_MONSTER_YELL, position)
            player:sendTextMessage(MESSAGE_INFO_DESCR, "You need a ".. config[i].storage_name .. " to enter here.")
            player:teleportTo(fromPosition)
            print("4")
        return true
        end

        if player:getLevel() == config[i].level and player:getStorageValue(config[i].storage) == 1 then
            player:say("BEWARE ADVENTURER, DANGER APPROACHES!", TALKTYPE_MONSTER_YELL)
            print("everything went ok I guess? 5")
        end
    end

return true
end
 
Solution
Code:
local config = {
-- actionID, level, storage
[13870] = {level = 5000, storage = 13870, storage_name = "Quest Voucher[1]"},
[13871] = {level = 10000, storage = 13871, storage_name = "Quest Voucher[2]"},
[13872] = {level = 15000, storage = 13872, storage_name = "Quest Voucher[3]"},
[13873] = {level = 20000, storage = 13873, storage_name = "Quest Voucher[4]"},
[13874] = {level = 25000, storage = 13874, storage_name = "Quest Voucher[5]"},
[13875] = {level = 30000, storage = 13875, storage_name = "Quest Voucher[6]"},
[13876] = {level = 35000, storage = 13876, storage_name = "Quest Voucher[7]"},
[13877] = {level = 40000, storage = 13877, storage_name = "Quest Voucher[8]"},
[13878] = {level = 45000, storage = 13878, storage_name = "Quest Voucher[9]"},
[13879] = {level...
thank you so much, now everything makes alot of sence XD

just 1 more question, how can I fix the position of message, so it appears on the teleport position instead of player?

Code:
local config = {
    -- actionID, level, storage
    [13870] = {level = 5000, storage = 13870, storage_name = "Quest Voucher[1]"},
    [13871] = {level = 10000, storage = 13871, storage_name = "Quest Voucher[2]"},
    [13872] = {level = 15000, storage = 13872, storage_name = "Quest Voucher[3]"},
    [13873] = {level = 20000, storage = 13873, storage_name = "Quest Voucher[4]"},
    [13874] = {level = 25000, storage = 13874, storage_name = "Quest Voucher[5]"},
    [13875] = {level = 30000, storage = 13875, storage_name = "Quest Voucher[6]"},
    [13876] = {level = 35000, storage = 13876, storage_name = "Quest Voucher[7]"},
    [13877] = {level = 40000, storage = 13877, storage_name = "Quest Voucher[8]"},
    [13878] = {level = 45000, storage = 13878, storage_name = "Quest Voucher[9]"},
    [13879] = {level = 50000, storage = 13879, storage_name = "Quest Voucher[10]"}
}

function onStepIn(player, item, position, fromPosition)
    if not player:isPlayer() then
        print("1")
    return true
    end

    local portal_aid = config[item:getActionId()]
    if(not(portal_aid))then
        print("2")
    return true
    end

    if player:getLevel() ~= portal_aid.level then
        player:teleportTo(fromPosition)
        player:say("LEAVE NOW MORTAL!\nYOU ARE NOT STRONG ENOUGHT TO ENTER!", TALKTYPE_MONSTER_YELL, item:getPosition())
        player:sendTextMessage(MESSAGE_INFO_DESCR, "You need level "..portal_aid.level.." to enter here.")
        print("3")
    return true
    elseif player:getStorageValue(portal_aid.storage) ~= 1 then
        player:teleportTo(fromPosition)
        player:say("LEAVE NOW MORTAL!\nYOU DO NOT HAVE PERMISSION TO ENTER!", TALKTYPE_MONSTER_YELL, item:getPosition())
        player:sendTextMessage(MESSAGE_INFO_DESCR, "You need a ".. portal_aid.storage_name .. " to enter here.")
        print("4")
    return true
    elseif player:getLevel() == portal_aid.level and player:getStorageValue(portal_aid.storage) == 1 then
        player:say("BEWARE ADVENTURER, DANGER APPROACHES!", TALKTYPE_MONSTER_YELL)
        print("everything went ok I guess? 5")
    end

return true
end
 
Code:
local config = {
-- actionID, level, storage
[13870] = {level = 5000, storage = 13870, storage_name = "Quest Voucher[1]"},
[13871] = {level = 10000, storage = 13871, storage_name = "Quest Voucher[2]"},
[13872] = {level = 15000, storage = 13872, storage_name = "Quest Voucher[3]"},
[13873] = {level = 20000, storage = 13873, storage_name = "Quest Voucher[4]"},
[13874] = {level = 25000, storage = 13874, storage_name = "Quest Voucher[5]"},
[13875] = {level = 30000, storage = 13875, storage_name = "Quest Voucher[6]"},
[13876] = {level = 35000, storage = 13876, storage_name = "Quest Voucher[7]"},
[13877] = {level = 40000, storage = 13877, storage_name = "Quest Voucher[8]"},
[13878] = {level = 45000, storage = 13878, storage_name = "Quest Voucher[9]"},
[13879] = {level = 50000, storage = 13879, storage_name = "Quest Voucher[10]"}
}

function onStepIn(player, item, position, fromPosition)
if not player:isPlayer() then
print("1")
return true
end

local portal_aid = config[item:getActionId()]
if(not(portal_aid))then
print("2")
return true
end

if player:getLevel() ~= portal_aid.level then
player:teleportTo(fromPosition)
player:say("LEAVE NOW MORTAL!\nYOU ARE NOT STRONG ENOUGHT TO ENTER!", TALKTYPE_MONSTER_YELL, player:getPosition())
player:sendTextMessage(MESSAGE_INFO_DESCR, "You need level "..portal_aid.level.." to enter here.")
print("3")
return true
elseif player:getStorageValue(portal_aid.storage) ~= 1 then
player:teleportTo(fromPosition)
player:say("LEAVE NOW MORTAL!\nYOU DO NOT HAVE PERMISSION TO ENTER!", TALKTYPE_MONSTER_YELL, player:getPosition())
player:sendTextMessage(MESSAGE_INFO_DESCR, "You need a ".. portal_aid.storage_name .. " to enter here.")
print("4")
return true
elseif player:getLevel() == portal_aid.level and player:getStorageValue(portal_aid.storage) == 1 then
player:say("BEWARE ADVENTURER, DANGER APPROACHES!", TALKTYPE_MONSTER_YELL)
print("everything went ok I guess? 5")
end

return true
end
 
Solution
Back
Top