Ir para conteúdo

Featured Replies

Postado

.Qual servidor ou website você utiliza como base?  TFS 1.3

 

Qual o motivo deste tópico?  Ao usar 1 chave com qualquer actionID, em um portão de cityquest aparece o seguinte erro..

Segue abaixo o erro e o código do script data/actions/other/doors.lua

Aguardo, vlw!

 

Está surgindo algum erro? Se sim coloque-o aqui. 

Citar

Lua Script Error: [Action Interface]
data/actions/scripts/other/doors.lua:onUse
data/actions/scripts/other/doors.lua:23: attempt to call global 'getItemLevelDoor' (a nil value)
stack traceback:
        [C]: in function 'getItemLevelDoor'
        data/actions/scripts/other/doors.lua:23: in function <data/actions/scripts/other/doors.lua:16>

 

Você tem o código disponível? Se tiver publique-o aqui: 

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, "Somente os fortes passarão.")
                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, "Somente os fortes passarão.")
                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, "Somente os fortes passarão.")
                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, "Somente os fortes passarão.")
                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, "Somente os fortes passarão.")
                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 os fortes passarão.")
        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, "Está trancada")
        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, "Essa chave não serve aqui.")
            return true
        end

        return false
    end

    if(isInArray(horizontalOpenDoors, item.itemid) and checkStackpos(item, fromPosition)) then
        if item.actionid > 0 and getPlayerAccess(cid) <= 2 then
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Está emperrada")
            return true
        end
    
        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
        if (item.actionid > 0) and (getPlayerAccess(cid) <= 2) then
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Está emperrada.")
            return true
        end
        
        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) or getPlayerAccess(cid) > 2 then
            doTransformItem(item.uid, doors[item.itemid])
        else
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Está trancada.")
        end

        return true
    end

    return false
end
 

 

Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 

 

Postado

Bom dia meu amigo não sei que e bem isso que vc quer mais ira te ajudar.

crie um arquivo chamando chave.lua

function onUse(cid, item, frompos, item2, topos)

local pausa = 1000

local door = {x=944, y=230, z=7, stackpos=1} 
local ddoor = getThingfromPos(door) 

local open_door = 6251 

local itemU = 24000 

local verify = 0

if item2.uid == itemU then
if ddoor.itemid ~= verify then
doTransformItem(ddoor.uid,open_door)
addEvent(close,pausa,door)
end
else
doPlayerSendCancel(cid,"voce nao pode usar a chave aqui!") 
end
return 1
end

function close(door)

local to_close_door = 6249 

local the_close_door = getThingfromPos(door)
doTransformItem(the_close_door.uid,to_close_door)
end

 

Local pausa = o tempo porta ficara aberta no caso 1000 = a 1s 

Local door = pos da porta

local open_door = id da porta

local itemU - Uid que esta na porta via rme (se n estiver usando o UID  nao precisa trocar)

local varify Nao mecha

local to_close_door = id da porta fechada

agoa em actions xml add

 

<action itemid="ID DA CHAVE" script="chave.lua" />

 

w31Cm4K.png

 

PokeWorks-Pokemon Rpg Online

venha Fazer parte dessa Incrivel Aventura

Criar Conta

____________##___________

Object Builder 0.5.441 

Postado

não tem essa função na sua lib, tenta adicionar na lib:

 

function getItemLevelDoor(itemid)
	local item = getItemInfo(itemid)
	return item and item.levelDoor or false	
end

 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo