MorganaSacani
Active Member
- Joined
- Sep 20, 2022
- Messages
- 87
- Solutions
- 1
- Reaction score
- 32
Can u help-me? I've problems with my rope script:
Compat.lua:
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()