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

Cannot close doors! :(

exique

Natala-ot.com
Joined
Sep 28, 2008
Messages
1,673
Reaction score
25
Location
Sweden
I cannot close any doors.. Just open them.. how do I fix it? :S

Reputation ofc! :D :thumbup:
 
I am using 0.3.5.. Changed some scripts recently.. or more like the whole action folder.. but I haven't got any error..
 
Hello,

with the normal action folder of 0.3.5 doors working, or not?

Or what you changed? I think one file is missing.

Check your doors.lua


PHP:
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

best regards

Pepsi
 
What file is it? :X

I would check your doors.lua.

Comparing yours with this one.

PHP:
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
 
You mean lvl doors?

PHP:
-- level doors based on actionId
-- to make door for level x create door on map and set its actionid to x+1000

function onUse(cid, item, frompos, item2, topos)
	reqlevel = item.actionid - 1000	-- actionids below 100 are reserved

	if reqlevel > 0 then
		if getPlayerLevel(cid) >= reqlevel then
			pos = getPlayerPosition(cid)

			if pos.x == topos.x then
				if pos.y < topos.y then
					pos.y = topos.y + 1
				else
					pos.y = topos.y - 1
				end
			elseif pos.y == topos.y then
				if pos.x < topos.x then
					pos.x = topos.x + 1
				else
					pos.x = topos.x - 1
				end
			else
				doPlayerSendTextMessage(cid,22,'Stand in front of the door.')
				return 1
			end

			doTeleportThing(cid,pos)
			doSendMagicEffect(topos,12)
		else
			doPlayerSendTextMessage(cid,22,'You need level ' .. reqlevel .. ' to pass this door.')
		end
		return 1
	else
		return 0
	end
end
 
Uehehehe!! i got too same problem in last week i replace this file in OTS/data/movements/scripts/closingdoor.lua

delete all from this file and put :

function onStepOut(cid, item, position, fromPosition)
local newPosition = {x = position.x, y = position.y, z = position.z}
if isInArray(verticalOpenDoors, item.itemid) == TRUE then
newPosition.x = newPosition.x + 1
else
newPosition.y = newPosition.y + 1
end
doRelocate(position, newPosition)

local tmpPos = {x = position.x, y = position.y, z = position.z, stackpos = -1}
local tileCount = getTileThingByPos(tmpPos)
local i = 1
local tmpItem = {uid = 1}
while(tmpItem.uid ~= 0 and i < tileCount) do
tmpPos.stackpos = i
tmpItem = getTileThingByPos(tmpPos)
if tmpItem.uid ~= item.uid and tmpItem.uid ~= 0 and isMoveable(tmpItem.uid) == TRUE then
doRemoveItem(tmpItem.uid)
else
i = i + 1
end
end

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

Save It.

and open ots/data/movements/movements.xml

Find
<!-- (Level & quest) doors -->

and put under this:

<!-- (Level & quest) doors -->
<movement type="StepOut" itemid="1228" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="1230" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="1246" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="1248" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="1260" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="1262" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="3541" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="3550" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="5104" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="5113" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="5122" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="5131" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="5293" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="5295" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="1224" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="1226" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="1242" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="1244" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="1256" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="1258" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="3543" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="3552" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="5106" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="5115" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="5124" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="5133" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="5289" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="5291" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="5746" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="5749" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="6203" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="6205" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="6207" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="6209" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="6260" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="6262" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="6264" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="6266" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="6897" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="6899" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="6906" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="6908" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="7039" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="7041" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="7048" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="7050" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="8552" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="8554" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="8556" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="8558" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="9176" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="9178" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="9180" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="9182" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="9278" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="9280" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="9282" event="script" value="closingdoor.lua"/>
<movement type="StepOut" itemid="9284" event="script" value="closingdoor.lua"/>

and save it :).

If you dont understand my english say I'll try to explain .. :)

Repp ++ :)
 
You can open them but you cannot close with "use" (right click) you can only close them if you walk trough :P
 
Last edited:

Similar threads

Back
Top