• Vote in May Mapping Competition to select a winner!
  • 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!

Doors problem.

Maladie

New Member
Joined
Dec 19, 2010
Messages
14
Best answers
0
Reaction score
0
My doors arent opening, any idea?
tfs 0.3.7
tfs 0.fuckoff.png
 
OP
M

Maladie

New Member
Joined
Dec 19, 2010
Messages
14
Best answers
0
Reaction score
0
data/actions/scripts? -> door


Code:
function onUse(cid, item, fromPosition, itemEx, toPosition)

    for i = 10001, 10008 do

        if getPlayerStorageValue(cid, i) > 0 then

            return doTransformItem(item.uid, item.itemid + 1) and doTeleportThing(cid, toPosition, true)

        end

    end

    

    return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It seems this door is sealed against unwanted intruders.")

end
 

Anciaveus

Member
Joined
Mar 24, 2020
Messages
36
Best answers
2
Reaction score
9
Location
Sweden☤
Try this one, But I am not sure if it going to help

Lua:
local function doorEnter(cid, uid, id, position)
    doTransformItem(uid, id)
    doTeleportThing(cid, position)
    return true
end

function onUse(cid, item, fromPosition, itemEx, toPosition)
    if(fromPosition.x ~= CONTAINER_POSITION and isPlayerPzLocked(cid) and getTileInfo(fromPosition).protection) then
        doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
        return true
    end

    local locked = DOORS[item.itemid]
    if(locked) then
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is locked.")
        return true
    end

    local door = getItemInfo(item.itemid)
    if(door.levelDoor > 0) then
        if(item.aid == 189) then
            if(not isPremium(cid)) then
                doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")
                return true
            end

            return doorEnter(cid, item.uid, door.transformUseTo, toPosition)
        end

        local gender = item.aid - 186
        if(isInArray({PLAYERSEX_FEMALE,  PLAYERSEX_MALE}, gender)) then
            if(gender ~= getPlayerSex(cid)) then
                doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")
                return true
            end

            return doorEnter(cid, item.uid, door.transformUseTo, toPosition)
        end

        local skull = item.aid - 180
        if(skull >= SKULL_NONE and skull <= SKULL_BLACK) then
            if(skull ~= getCreatureSkullType(cid)) then
                doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")
                return true
            end

            return doorEnter(cid, item.uid, door.transformUseTo, toPosition)
        end

        local group = item.aid - 150
        if(group >= 0 and group < 30) then
            if(group > getPlayerGroupId(cid)) then
                doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")
                return true
            end

            return doorEnter(cid, item.uid, door.transformUseTo, toPosition)
        end

        local vocation = item.aid - 100
        if(vocation >= 0 and vocation < 50) then
            local vocationEx = getVocationInfo(getPlayerVocation(cid))
            if(vocationEx.id ~= vocation and vocationEx.fromVocation ~= vocation) then
                doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")
                return true
            end

            return doorEnter(cid, item.uid, door.transformUseTo, toPosition)
        end

        if(item.aid == 190 or (item.aid ~= 0 and getPlayerLevel(cid) >= (item.aid - door.levelDoor))) then
            return doorEnter(cid, item.uid, door.transformUseTo, toPosition)
        end

        doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")
        return true
    end

    if(door.specialDoor) then
        if(item.aid == 100 or (item.aid ~= 0 and getCreatureStorage(cid, item.aid) > 0)) then
            return doorEnter(cid, item.uid, door.transformUseTo, toPosition)
        end

        doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "The door seems to be sealed against unwanted intruders.")
        return true
    end

    toPosition.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE
    local fields, thing = getTileItemsByType(fromPosition, ITEM_TYPE_MAGICFIELD), getThingFromPosition(toPosition)
    if(item.uid ~= thing.uid and thing.itemid >= 100 and table.maxn(fields) ~= 0) then
        return true
    end

    local doorCreature = getThingFromPosition(toPosition)
    if(doorCreature.itemid ~= 0) then
        toPosition.x = toPosition.x + 1
        local query = doTileQueryAdd(doorCreature.uid, toPosition, 20) -- allow to stack outside doors, but not on teleports or floor changing tiles
        if(query == RETURNVALUE_NOTPOSSIBLE) then
            toPosition.x = toPosition.x - 1
            toPosition.y = toPosition.y + 1
            query = doTileQueryAdd(doorCreature.uid, toPosition, 20) -- repeat until found
        end

        if(query ~= RETURNVALUE_NOERROR) then
            doPlayerSendDefaultCancel(cid, query)
            return true
        end

        doTeleportThing(doorCreature.uid, toPosition)
        if(not door.closingDoor) then
            doTransformItem(item.uid, door.transformUseTo)
        end

        return true
    end

    return false
end
 
OP
M

Maladie

New Member
Joined
Dec 19, 2010
Messages
14
Best answers
0
Reaction score
0
Try this one, But I am not sure if it going to help

Lua:
local function doorEnter(cid, uid, id, position)
    doTransformItem(uid, id)
    doTeleportThing(cid, position)
    return true
end

function onUse(cid, item, fromPosition, itemEx, toPosition)
    if(fromPosition.x ~= CONTAINER_POSITION and isPlayerPzLocked(cid) and getTileInfo(fromPosition).protection) then
        doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
        return true
    end

    local locked = DOORS[item.itemid]
    if(locked) then
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is locked.")
        return true
    end

    local door = getItemInfo(item.itemid)
    if(door.levelDoor > 0) then
        if(item.aid == 189) then
            if(not isPremium(cid)) then
                doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")
                return true
            end

            return doorEnter(cid, item.uid, door.transformUseTo, toPosition)
        end

        local gender = item.aid - 186
        if(isInArray({PLAYERSEX_FEMALE,  PLAYERSEX_MALE}, gender)) then
            if(gender ~= getPlayerSex(cid)) then
                doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")
                return true
            end

            return doorEnter(cid, item.uid, door.transformUseTo, toPosition)
        end

        local skull = item.aid - 180
        if(skull >= SKULL_NONE and skull <= SKULL_BLACK) then
            if(skull ~= getCreatureSkullType(cid)) then
                doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")
                return true
            end

            return doorEnter(cid, item.uid, door.transformUseTo, toPosition)
        end

        local group = item.aid - 150
        if(group >= 0 and group < 30) then
            if(group > getPlayerGroupId(cid)) then
                doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")
                return true
            end

            return doorEnter(cid, item.uid, door.transformUseTo, toPosition)
        end

        local vocation = item.aid - 100
        if(vocation >= 0 and vocation < 50) then
            local vocationEx = getVocationInfo(getPlayerVocation(cid))
            if(vocationEx.id ~= vocation and vocationEx.fromVocation ~= vocation) then
                doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")
                return true
            end

            return doorEnter(cid, item.uid, door.transformUseTo, toPosition)
        end

        if(item.aid == 190 or (item.aid ~= 0 and getPlayerLevel(cid) >= (item.aid - door.levelDoor))) then
            return doorEnter(cid, item.uid, door.transformUseTo, toPosition)
        end

        doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")
        return true
    end

    if(door.specialDoor) then
        if(item.aid == 100 or (item.aid ~= 0 and getCreatureStorage(cid, item.aid) > 0)) then
            return doorEnter(cid, item.uid, door.transformUseTo, toPosition)
        end

        doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "The door seems to be sealed against unwanted intruders.")
        return true
    end

    toPosition.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE
    local fields, thing = getTileItemsByType(fromPosition, ITEM_TYPE_MAGICFIELD), getThingFromPosition(toPosition)
    if(item.uid ~= thing.uid and thing.itemid >= 100 and table.maxn(fields) ~= 0) then
        return true
    end

    local doorCreature = getThingFromPosition(toPosition)
    if(doorCreature.itemid ~= 0) then
        toPosition.x = toPosition.x + 1
        local query = doTileQueryAdd(doorCreature.uid, toPosition, 20) -- allow to stack outside doors, but not on teleports or floor changing tiles
        if(query == RETURNVALUE_NOTPOSSIBLE) then
            toPosition.x = toPosition.x - 1
            toPosition.y = toPosition.y + 1
            query = doTileQueryAdd(doorCreature.uid, toPosition, 20) -- repeat until found
        end

        if(query ~= RETURNVALUE_NOERROR) then
            doPlayerSendDefaultCancel(cid, query)
            return true
        end

        doTeleportThing(doorCreature.uid, toPosition)
        if(not door.closingDoor) then
            doTransformItem(item.uid, door.transformUseTo)
        end

        return true
    end

    return false
end
Seem to not work either. Hmmmm.....
I Noticed that all my normal doors are actually Locked, would it be cause i upgraded map to 9.6 and then downgraded to 8.6? >_<
 
Last edited:

Anciaveus

Member
Joined
Mar 24, 2020
Messages
36
Best answers
2
Reaction score
9
Location
Sweden☤
Seem to not work either. Hmmmm.....
I Noticed that all my normal doors are actually Locked, would it be cause i upgraded map to 9.6 and then downgraded to 8.6? >_<
But do you get any error line ? if so could you post it so I can see :D
 
OP
M

Maladie

New Member
Joined
Dec 19, 2010
Messages
14
Best answers
0
Reaction score
0
But do you get any error line ? if so could you post it so I can see :D
Zero error, also all the normal doors are now Locked Doors, must of been due to the damn downgrade of the map.
 

Anciaveus

Member
Joined
Mar 24, 2020
Messages
36
Best answers
2
Reaction score
9
Location
Sweden☤
Zero error, also all the normal doors are now Locked Doors, must of been due to the damn downgrade of the map.
Try see what do you write in RME on doors "Actionid" there can issue be, But maybe in lib folder 000-constant.lua or the others lib can cause the problem.
 

M0ustafa

1337
Premium User
Support Team
Joined
Mar 4, 2017
Messages
1,591
Best answers
194
Reaction score
601
Location
Egypt
Replace your lines (Those ones)
Lua:
function onUse(cid, item, fromPosition, itemEx, toPosition)

    for i = 10001, 10008 do

        if getPlayerStorageValue(cid, i) > 0 then

            return doTransformItem(item.uid, item.itemid + 1) and doTeleportThing(cid, toPosition, true)

        end

    end

   

    return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It seems this door is sealed against unwanted intruders.")

end
with this and retry
Lua:
function onUse(cid, item, fromPosition, itemEx, toPosition)
        pos = getPlayerPosition(cid)
        if pos.x == toPosition.x then
        if pos.y < toPosition.y then
        pos.y = toPosition.y + 1
else
        pos.y = toPosition.y - 1
end
        elseif pos.y == toPosition.y then
        if pos.x < toPosition.x then
        pos.x = toPosition.x + 1
else
        pos.x = toPosition.x - 1
end
else
        doPlayerSendTextMessage(cid,22,'Stand in front of the door.')
return 1
end
    for i = 10001, 10008 do
        if getPlayerStorageValue(cid, i) > 0 then
        return doTransformItem(item.uid, item.itemid + 1) and doTeleportThing(cid, pos, true)
end
end
        return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It seems this door is sealed against unwanted intruders.")
end
 
Top