• 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!

Problem with gate of expertise

bury

Active Member
Joined
Jul 27, 2008
Messages
421
Solutions
7
Reaction score
25
Hello, I made a training area with a lot of gate of expertises (I thought they would work fine) and I cant through them. The worst is that I dont receive any kind of error in console and it doesnt even show "sorry, not possible" or other default message. If I dont set any AID, it says "only the worthy may pass".

I think Ive used that door several times and worked properly, maybe because of the wall.

I tried gate of expertise ids 1229 and 1227 and I have the same problem.

I dont know how to do it properly so I made a graphic about the problem, so maybe you could help me better :/

puertas.jpg

Thanks in advance :)

PS: There is not any other door/wall below ^^
 
Last edited:
Hello, I made a training area with a lot of gate of expertises (I thought they would work fine) and I cant through them. The worst is that I dont receive any kind of error in console and it doesnt even show "sorry, not possible" or other default message. If I dont set any AID, it says "only the worthy may pass".

I guess I have to set the script door working for that door id in data/actions/doors or something (but I think Ive used that door several times and worked properly, maybe because of the wall). I tried gate of expertise ids 1229 and 1227 and I have the same problem.

I dont know how to do it properly so I made a graphic about the problem, so maybe you could help me better :/

puertas.jpg

Thanks in advance :)

PS: There is not any other door/wall below ^^
Action id is used to make it a level 1008=level8 1040= level 40 so if the door hasnt a action id it doenst count the level either
Anyways Which TFS ur using? and did u try to remove it and use a RAW door?
 
Last edited:
Gate of expertise doors are supposed to work only with actionids, most of the time they are used as level doors (when actionid id is 1000+).
You can't open a gate of expertise door without actionid without making changes in a script or adding one.

If they don't work with actionid, it's possible they aren't added (correctly) as gate of expertise door.
Which server do you use?
 
The proplem might be in items.xml file. Try to open that file and search for the door itemid. After you have found the specific door with same id which u r using in game. Check the gate's attributes and try to find this: " <attribute key="levelDoor" value="1000"/> " If that is missing just add it on the door's attributes and save. Also remember to reload items in ur TFS. Otherwise if that dosen't work the proplem is in ur doors.lua file.

I hope this helped you even a little bit.
 
Hello!

Thanks for your comments.

I'm using 0,4 rev, 8.6 tibia.

If you look at the picture I made you can see I used 1008 as AID. I put one without AID just to see if it was regconized as a leveldoor.

I tried also with RAW doors with ids: 1229 and 1227. In items.xml everything seems to be right:

Code:
<item id="6896" article="a" name="gate of expertise">
        <attribute key="type" value="door" />
        <attribute key="levelDoor" value="1000" />
        <attribute key="blockprojectile" value="1" />
    </item>

Code:
<item id="1229" article="a" name="gate of expertise">
        <attribute key="type" value="door" />
        <attribute key="levelDoor" value="1000" />
        <attribute key="blockprojectile" value="1" />
    </item>

Code:
<item id="1227" article="a" name="gate of expertise">
        <attribute key="type" value="door" />
        <attribute key="levelDoor" value="1000" />
        <attribute key="blockprojectile" value="1" />
    </item>

Thanks :)
 
Code:
local function checkStackpos(item, position)
    position.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE
    local thing = getThingFromPos(position)

    position.stackpos = STACKPOS_TOP_FIELD
    local field = getThingFromPos(position)

    return (item.uid == thing.uid or thing.itemid < 100 or field.itemid == 0)
end

local function doorEnter(cid, item, toPosition)
    doTransformItem(item.uid, item.itemid + 1)
    doTeleportThing(cid, toPosition)
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

    if(getItemLevelDoor(item.itemid) > 0) then
        if(item.actionid == 189) then
            if(not isPremium(cid)) then
                doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.")
                return true
            end

            doorEnter(cid, item, toPosition)
            return true
        end

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

            doorEnter(cid, item, toPosition)
            return true
        end

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

            doorEnter(cid, item, toPosition)
            return true
        end

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

            doorEnter(cid, item, toPosition)
            return true
        end

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

            doorEnter(cid, item, toPosition)
            return true
        end

        if(item.actionid == 190 or (item.actionid ~= 0 and getPlayerLevel(cid) >= (item.actionid - getItemLevelDoor(item.itemid)))) then
            doorEnter(cid, item, toPosition)
        else
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.")
        end

        return true
    end

    if(isInArray(specialDoors, item.itemid)) then
        if(item.actionid == 100 or (item.actionid ~= 0 and getPlayerStorageValue(cid, item.actionid) > 0)) then
            doorEnter(cid, item, toPosition)
        else
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "The door seems to be sealed against unwanted intruders.")
        end

        return true
    end

    if(isInArray(keys, item.itemid)) then
        if(itemEx.actionid > 0) then
            if(item.actionid == itemEx.actionid and doors[itemEx.itemid] ~= nil) then
                doTransformItem(itemEx.uid, doors[itemEx.itemid])
                return true
            end

            doPlayerSendCancel(cid, "The key does not match.")
            return true
        end

        return false
    end

    if(isInArray(horizontalOpenDoors, item.itemid) and checkStackpos(item, fromPosition)) then
        local newPosition = toPosition
        newPosition.y = newPosition.y + 1
        local doorPosition = fromPosition
        doorPosition.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE
        local doorCreature = getThingfromPos(doorPosition)
        if(doorCreature.itemid ~= 0) then
            local pzDoorPosition = getTileInfo(doorPosition).protection
            local pzNewPosition = getTileInfo(newPosition).protection
            if((pzDoorPosition and not pzNewPosition and doorCreature.uid ~= cid) or
                (not pzDoorPosition and pzNewPosition and doorCreature.uid == cid and isPlayerPzLocked(cid))) then
                doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
            else
                doTeleportThing(doorCreature.uid, newPosition)
                if(not isInArray(closingDoors, item.itemid)) then
                    doTransformItem(item.uid, item.itemid - 1)
                end
            end

            return true
        end

        doTransformItem(item.uid, item.itemid - 1)
        return true
    end

    if(isInArray(verticalOpenDoors, item.itemid) and checkStackpos(item, fromPosition)) then
        local newPosition = toPosition
        newPosition.x = newPosition.x + 1
        local doorPosition = fromPosition
        doorPosition.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE
        local doorCreature = getThingfromPos(doorPosition)
        if(doorCreature.itemid ~= 0) then
            if(getTileInfo(doorPosition).protection and not getTileInfo(newPosition).protection and doorCreature.uid ~= cid) then
                doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
            else
                doTeleportThing(doorCreature.uid, newPosition)
                if(not isInArray(closingDoors, item.itemid)) then
                    doTransformItem(item.uid, item.itemid - 1)
                end
            end

            return true
        end

        doTransformItem(item.uid, item.itemid - 1)
        return true
    end

    if(doors[item.itemid] ~= nil and checkStackpos(item, fromPosition)) then
        if(item.actionid == 0) then
            doTransformItem(item.uid, doors[item.itemid])
        else
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is locked.")
        end

        return true
    end

    return false
end
 
Do you also have this when you add a gate of expertise door with actionid 1000+ on an empty tile with nothing around it?
 
Okay I tried several ones with raw and they didnt work, all with AID: 1008

puertas1.jpg



However in the road to svargrond mines, there is a door for level 180 (with AID: 1180) and it works lol

puertas2.jpg


I dont know why....
 
I think problem is in Action Ids. With AID = 1008 doors dont work, but apart from AID = 1011 doors work. Anyone know why??
 
Yeah, I think is that... and I didnt set it. Its by default, by a shitty map I downloaded and in Remere map editor I cant find that AID (only in doors), so maybe its in any other loot object or something. AIDS 1007, 1008 and 1009 are busy by other and it creates conflict, I hope fix it soon.

Thanks for your help and I wish this could help other people ^^
 
Back
Top