Ir para conteúdo
  • 0

Porta de Level


Marshmello

Pergunta

Ola Galera To cm Problema Na Minha Porta De Level Quando Eu Clico Ele So Entra e sai  Alguem Pode Me ajudar

 

 

Minha Door.lua

Spoiler

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)
    closeDoor(toPosition)
end
 
function closeDoor(pos)
    pos.stackpos = 253
    local item = getThingFromPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 1})
    if getThingFromPos(pos).uid > 0 then
        return addEvent(closeDoor, 200, pos)
    end
    doTransformItem(item.uid, item.itemid - 1)
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, "Apenas jogadores com Level "..(item.actionid - getItemLevelDoor(item.itemid)).." ou superior podem passar.")
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
    
    local houseDoors = {
        [11790] = 11792,
        [11791] = 11792,
        [11792] = 11790,
        [11793] = 11795,
        [11794] = 11795,
        [11795] = 11793,
        [11796] = 11797,
        [11797] = 11796,
        [11798] = 11799,
        [11799] = 11798,
        [11800] = 11801,
        [11801] = 11800,
        [11802] = 11803, -- alterado v1.6
        [11803] = 11802,
    }
    
    if houseDoors[item.itemid] then      
       doTransformItem(item.uid, houseDoors[item.itemid])
       return true
    end
 
    return false
end

 

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0
2 horas atrás, Poccnn disse:

Abre o arquivo movements.xml e procura o id de alguma porta ai você vai saber o nome so arquivo e o diretório do mesmo. 

acho q e esse 

tiles.lua

Spoiler

local config = {

    maxLevel = getConfigInfo('maximumDoorLevel')

}

local increasingItems = {[416] = 417, [426] = 425, [446] = 447, [3216] = 3217, [3202] = 3215, [11059] = 11060}

local decreasingItems = {[417] = 416, [425] = 426, [447] = 446, [3217] = 3216, [3215] = 3202, [11060] = 11059}

local depots = {2589, 2590, 2591, 2592}

local checkCreature = {isPlayer, isMonster, isNpc}

local function pushBack(cid, position, fromPosition, displayMessage)

    doTeleportThing(cid, fromPosition, false)

    doSendMagicEffect(position, CONST_ME_MAGIC_BLUE)

    if(displayMessage) then

        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "The tile seems to be protected against unwanted intruders.")

    end

end

function onStepIn(cid, item, position, fromPosition)

    if(not increasingItems[item.itemid]) then

        return false

    end

    if(not isPlayerGhost(cid)) then

        doTransformItem(item.uid, increasingItems[item.itemid])

    end

    if(item.actionid >= 194 and item.actionid <= 196) then

        local f = checkCreature[item.actionid - 193]

        if(f(cid)) then

            pushBack(cid, position, fromPosition, false)

        end

        return true

    end

    if(item.actionid >= 191 and item.actionid <= 193) then

        local f = checkCreature[item.actionid - 190]

        if(not f(cid)) then

            pushBack(cid, position, fromPosition, false)

        end

        return true

    end

    if(not isPlayer(cid)) then

        return true

    end

    if(item.actionid == 189 and not isPremium(cid)) then

        pushBack(cid, position, fromPosition, true)

        return true

    end

    local gender = item.actionid - 186

    if(isInArray({PLAYERSEX_FEMALE,  PLAYERSEX_MALE, PLAYERSEX_GAMEMASTER}, gender)) then

        if(gender ~= getPlayerSex(cid)) then

            pushBack(cid, position, fromPosition, true)

        end

        return true

    end

    local skull = item.actionid - 180

    if(skull >= SKULL_NONE and skull <= SKULL_BLACK) then

        if(skull ~= getCreatureSkullType(cid)) then

            pushBack(cid, position, fromPosition, true)

        end

        return true

    end

    local group = item.actionid - 150

    if(group >= 0 and group < 30) then

        if(group > getPlayerGroupId(cid)) then

            pushBack(cid, position, fromPosition, true)

        end

        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

            pushBack(cid, position, fromPosition, true)

        end

        return true

    end

    if(item.actionid >= 1000 and item.actionid <= config.maxLevel) then

        if(getPlayerLevel(cid) < item.actionid - 1000) then

            pushBack(cid, position, fromPosition, true)

        end

        return true

    end

    if(item.actionid ~= 0 and getPlayerStorageValue(cid, item.actionid) <= 0) then

        pushBack(cid, position, fromPosition, true)

        return true

    end

    if(getTileInfo(position).protection) then

        local depotPos, depot = getCreatureLookPosition(cid), {}

        depotPos.stackpos = STACKPOS_GROUND

        while(true) do

            if(not getTileInfo(depotPos).depot) then

                break

            end

            depotPos.stackpos = depotPos.stackpos + 1

            depot = getThingFromPos(depotPos)

            if(depot.uid == 0) then

                break

            end

            if(isInArray(depots, depot.itemid)) then

                local depotItems = getPlayerDepotItems(cid, getDepotId(depot.uid))

                doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, "Your depot contains " .. depotItems .. " item" .. (depotItems > 1 and "s" or "") .. ".")

                break

            end

        end

        return true

    end

    return false

end

function onStepOut(cid, item, position, fromPosition)

    if(not decreasingItems[item.itemid]) then

        return false

    end

    if(not isPlayerGhost(cid)) then

        doTransformItem(item.uid, decreasingItems[item.itemid])

        return true

    end

    return false

end

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

Substitui isso:

Citar

 if(item.actionid >= 1000 and item.actionid <= config.maxLevel) then

 

Por isto:

Citar

 if(item.actionid >= 1000 and (item.actionid-1000) <= config.maxLevel) then

 

Certifique-se que no config.lua o valor do maxLevel esteja acima do valor do player que tenta passar na porta

Link para o comentário
Compartilhar em outros sites

  • 0

Substitui isso no arquivo de actions.

Citar

doorEnter(cid, item, toPosition)

 

Por isto:

Citar

doorEnter(cid, item, fromPosition)

 

Todos eles.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...