• 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!
  • If you're using Gesior 2012 or MyAAC, please review this thread for information about a serious security vulnerability and a fix.

Lua Rope Script error

MorganaSacani

Member
Joined
Sep 20, 2022
Messages
46
Reaction score
17
Can u help-me? I've problems with my rope script:
[2022-24-09 10:12:16.773] [error] Lua script error:
scriptInterface: [Scripts Interface]
scriptId: [C:\Users\Anderson Sacani\Documents\Tibia Project 1291 - 740\Server\TibiaOtServerProject\data\scripts\actions\tools\rope.lua:callback]
timerEvent: []
callbackId:[]
function: []
error [data/lib/compat/compat.lua:808: attempt to compare number with nil
stack traceback:
[C]: in function '__le'
data/lib/compat/compat.lua:808: in function 'doTeleportThing'
...TibiaOtServerProject\data\scripts\actions\tools\rope.lua:23: in function <...TibiaOtServerProject\data\scripts\actions\tools\rope.lua:9>]

Compat.lua:
Lua:
function doTeleportThing(uid, dest, pushMovement)
    if type(uid) == "userdata" then
        if uid:isCreature() then
            return uid:teleportTo(dest, pushMovement or false)
        else
            return uid:moveTo(dest)
        end
    else
        if uid >= 0x10000000 then
            local creature = Creature(uid)
            if creature then
                return creature:teleportTo(dest, pushMovement or false)
            end
        else
            local item = Item(uid)
            if item then
                return item:moveTo(dest)
            end
        end
    end
    return false
end

My rope script:
Lua:
local rope = Action()

local OPENED_HOLE = {294, 383, 469, 470, 482, 482, 485, 489, 430}
local OPENED_TRAP = {462}
local DOWN_LADDER = {369, 370, 408, 409, 427, 428, 3135, 3136, 5545, 5763}
local ROPE_SPOT = {386, 421}
local allowed_items_inway = {2016, 2017, 2018, 2019, 2020, 2021, 1903, 1904, 1905}

function rope.onUse(player, item, fromPosition, target, toPosition, isHotkey)
    Spdlog.info("1")
    newPos = {x = toPosition.x, y = toPosition.y, z = toPosition.z, stackpos = 0}
    target = getThingfromPos(newPos)
    blockingItem = getThingfromPos({x = toPosition.x, y = toPosition.y, z = toPosition.z, stackpos = 1})
    if(isInArray(ROPE_SPOT, target.itemid) == true) then
        Spdlog.info("2")
        newPos.y = newPos.y + 1
        newPos.z = newPos.z - 1
        if((blockingItem.itemid > 0 and not isInArray(allowed_items_inway, blockingItem.itemid)) or isCreature(target.uid)) then
            Spdlog.info("3")
            doPlayerSendCancel(cid, "Sorry, not possible.")
       else
            Spdlog.info("4")
           doTeleportThing(cid, newPos)
        end
    elseif(isInArray(OPENED_HOLE, target.itemid) == true or isInArray(OPENED_TRAP, target.itemid) == true or isInArray(DOWN_LADDER, target.itemid) == true) then
        Spdlog.info("5")
        newPos.y = newPos.y + 1
        downPos = {x = toPosition.x, y = toPosition.y, z = toPosition.z + 1, stackpos = 255}
        downItem = getThingfromPos(downPos)
        if(downItem.itemid > 0) then
            Spdlog.info("6")
            doTeleportThing(downItem.uid, newPos)
        else
            Spdlog.info("7")
            doPlayerSendCancel(cid, "Sorry, not possible.")
        end
    end
    return true
end

rope:id(3003, 646)
rope:register()
 

Xikini

I whore myself out for likes
Senator
Joined
Nov 17, 2010
Messages
6,245
Solutions
545
Reaction score
4,488
change
Lua:
function rope.onUse(player, item, fromPosition, target, toPosition, isHotkey)
to
Lua:
function rope.onUse(cid, item, fromPosition, target, toPosition, isHotkey)
 
Top