Ir para conteúdo

Porta de Level


Marshmello

Posts Recomendados

Ola Galera Bom Eu Vejo Muiitos Topicos De Porta Com Level Muitos N Conseguiram Arrumar Mais Hj Iremos Acabar Com Isso Entao Vamos La

 

Primeiro Va Em Actions/other/doors.lua

 

Troque Todo Q Estar la Por Essa

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)
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, "Somente Merecedores 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, "Essa Porta Estar Selada Contra Intrusos")
        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
 

Depois Va Em Moviments/Scripts/walkback.lua

 

Procure Por 

Spoiler

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
doTeleportThing(cid, fromPosition)
end

 

Troque Isso Por Esse

 

Spoiler

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
doTeleportThing(cid, fromPosition)
end

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
   if(not isPlayer(cid)) then
     return true
   end

   if(isContainer(item.uid)) then
     if(not isInArray(SPECIAL_QUESTS, item.actionid) and item.uid > 65535) then
       return true
     end
   elseif(getTileInfo(position).creatures <= 1) then
     return true
   end

   if(fromPosition.x == 0) then -- player just logged in
     fromPosition = getTownTemplePosition(getPlayerTown(cid))
     doSendMagicEffect(fromPosition, CONST_ME_TELEPORT)
   end

   doTeleportThing(cid, fromPosition, true)
   return true
end

 

 

Pronto Agora So Coloca O Level Na Sua Porta E Ira Funcionar Sem Erros 

 

Se Ajudei Rep+ 

Link para o comentário
Compartilhar em outros sites

Caro membro, seu tópico foi movido de Tutoriais Otserv > Otserv > Tutoriais de Scripting para Scripts > Otserv > Actions, talkactions e moveevents.

 

Procure ler a descrição das seções antes de criar um tópico, pois criando um tópico na área errada, além de receber um alerta chatinho como este, você pode não obter respostas por causa da incoerência do tópico com a seção em que este foi publicado.

 

Se tiver dúvidas a respeito de postagens, mande uma mensagem pra mim que eu irei orientá-lo.

Atenciosamente, Xtibia.com.

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...