Ir para conteúdo
  • Cadastre-se

[Problema] Script de porta


Posts Recomendados

ola no meu ot quando eu abro uma porta de experiencia (vc clica nela e vc teleporta para frente da porta) entao no meu caso ela so abre como faço para arrumar isso ele da um erro em doors.lua


local function doorEnter(cid, uid, id, position)

doTransformItem(uid, id)

doTeleportThing(cid, position)

return true

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

local locked = DOORS[item.itemid]

if(locked) then

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is locked.")

return true

end

local door = getItemInfo(item.itemid)

if(door.levelDoor > 0) then

if(item.aid == 189) then

if(not isPremium(cid)) then

doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")

return true

end

return doorEnter(cid, item.uid, door.transformUseTo, toPosition)

end

local gender = item.aid - 186

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

if(gender ~= getPlayerSex(cid)) then

doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")

return true

end

return doorEnter(cid, item.uid, door.transformUseTo, toPosition)

end

local skull = item.aid - 180

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

if(skull ~= getCreatureSkullType(cid)) then

doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")

return true

end

return doorEnter(cid, item.uid, door.transformUseTo, toPosition)

end

local group = item.aid - 150

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

if(group > getPlayerGroupId(cid)) then

doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")

return true

end

return doorEnter(cid, item.uid, door.transformUseTo, toPosition)

end

local vocation = item.aid - 100

if(vocation >= 0 and vocation < 50) then

local vocationEx = getVocationInfo(getPlayerVocation(cid))

if(vocationEx.id ~= vocation and vocationEx.fromVocation ~= vocation) then

doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")

return true

end

return doorEnter(cid, item.uid, door.transformUseTo, toPosition)

end

if(item.aid == 190 or (item.aid ~= 0 and getPlayerLevel(cid) >= (item.aid - door.levelDoor))) then

return doorEnter(cid, item.uid, door.transformUseTo, toPosition)

end

doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")

return true

end

if(door.specialDoor) then

if(item.aid == 100 or (item.aid ~= 0 and getCreatureStorage(cid, item.aid) > 0)) then

return doorEnter(cid, item.uid, door.transformUseTo, toPosition)

end

doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "The door seems to be sealed against unwanted intruders.")

return true

end

toPosition.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE

local fields, thing = getTileItemsByType(fromPosition, ITEM_TYPE_MAGICFIELD), getThingFromPosition(toPosition)

if(item.uid ~= thing.uid and thing.itemid >= 100 and table.maxn(fields) ~= 0) then

return true

end

local doorCreature = getThingFromPosition(toPosition)

if(doorCreature.itemid ~= 0) then

toPosition.x = toPosition.x + 1

local query = doTileQueryAdd(doorCreature.uid, toPosition, 20) -- allow to stack outside doors, but not on teleports or floor changing tiles

if(query == RETURNVALUE_NOTPOSSIBLE) then

toPosition.x = toPosition.x - 1

toPosition.y = toPosition.y + 1

query = doTileQueryAdd(doorCreature.uid, toPosition, 20) -- repeat until found

end

if(query ~= RETURNVALUE_NOERROR) then

doPlayerSendDefaultCancel(cid, query)

return true

end

doTeleportThing(doorCreature.uid, toPosition)

if(not door.closingDoor) then

doTransformItem(item.uid, door.transformUseTo)

end

return true

end

return false

end

akie sta ela se alguem puder me ajudar ficarei grato

meu ot é 9.70

Editado por shinobiii (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

ou tem como voçe arrumar ela tipo assim por comando mesmo sem desligar o ot /attr action 1020 ( Ou Seja So Level 20 Podera Passar Na Porta ) Mas Da Algum Erro Na Distro Tibiano ?

tibiaajuda.jpg

Não Adianta Só Querer E Necessário Fazer

Link para o post
Compartilhar em outros sites

sim da erro sim no momento n estou em casa (n tem como por online) geralmente quando vc clika na porta aparece umas estrelinhasno seu pe (vc automaticamente vai para dentro sala (no meu caso). A porta ela so abre no caso se eu for fazer uma quest para lvs altos eles podem bugar para players de lvs baixos entrarem.....

Link para o post
Compartilhar em outros sites

meu amigo desculpe a pergunta mas onde vc quer chegar ???? meu ot é novo....

tenho um script pra ni minimo level 3k pode passa na porta e pode se editar ele por isso cheguei a está pergunta

tibiaajuda.jpg

Não Adianta Só Querer E Necessário Fazer

Link para o post
Compartilhar em outros sites

tendi.. pode me ajudar com um scrip meu god n consegue usar /a e o /t como faço ???

olha a imagem abaixo.... ta vendo a porta era pra ela permanecer fechada e me teleportar a frente1319499-NXIQWCV.jpg

Editado por shinobiii (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Lokozoido
      Olá galera do TK,procurei tanto um script de porta com level e não conseguir achar um que funcionasse,então decidi modificar uma script para passar na porta com tal level
      Primeiro vai em data/actions/scripts
      Crie um arquivo.lua (no caso criei portalvl.lua)
      Abra e cole isso lá
      Agora vá em data/actions/actions.xml
      E adicione isso:
      Explicação:
         if getPlayerLevel(cid) >= 250 then=Level necessário para passar.
              doTeleportThing(cid, {x=1993,y=2187,z=8})= Posição para onde o player será enviado ao clicar na porta
               doPlayerSendCancel(cid, "Voce nao tem level 250 para passar.")= Mensagem ao aparecer quando o player não tiver o level necessário
      <action actionid="5457" event="script" value="portalvl.lua"/>
      Numero para por na porta
      Nome do arquivo.lua
      Ajudei?RAP+
    • Por Liru
      Eu vim aqui pedir um script de uma Porta que só abre se você der um certo item pra ela, e depois de um certo tempo ela fecha e você mesmo tendo o item, não pode passar por ela novamente.
      Eu procurei por muitos lugares, mas não achei esse script, os que achei não funcionavam. E eu to dependendo disso pra fazer uma quest do ot.
      Eu uso a Base Cyan, se isso importar.
      Quem puder ajudar ai rep+
       
    • Por Digoshow
      Pessoal, procurei muiito e não consegui achar, alguem poderia me ajudar a fazer um script action de porta que só jogadores premium account consiga abri-lá?
      Uso TFS 0.4, REP+!
    • Por principe sharingan
      Bom galera é o seguinte, eu tentei criar um NPC que teleporta por X item. Mas sempre dava um erro quando vai adiciona-lo no mapa. Ai resolvi fazer uma Script que quando você clica na Estatua, porta, parede ou coisa do tipo você é teleportado se tiver X Item.
      ( PS: Quando vc é teleportado o item não é removido de sua bag. Você cotinua com o item, como se fosse uma permissão !! )
      Bom, vamos deixar de papo furado, e vamos ao que interessa. Vai em: data/actions/scripts crie um arquivo .lua com o nome que você quiser e cole isso:
      Agora vá em actions.xml e cole essa tag:
      Action ID
      Nome do arquivo que você criou em: data/actions/scripts
    • Por Cat
      Venho trazer a vocês essa adaptação que eu fiz pra minha datapack.
      Estava configurando novas door ids e pesquisei alguns tópicos procurando por scripts específicos, e não encontrei. Além disso, notei que muitas pessoas tiveram problemas para adicionar novas portas utilizando o script comum doors ou outros; ou não foram respondidas em vários tópicos.
       
       
      CONFIGURAR NOVAS DOOR IDS!
      Esse código é para novas portas especiais, duplicadas, de eventos ou quests..
      Demonstração:
       
       
       
      Instalação:
       
      Utilizarei os ids:
      Horizontal: Fechada: 12149 / Aberta: 12151
      Vertical: Fechada: 12158 / Aberta: 12160
       
      ------- • -------
      PARTE 1
      --- • ---
       
      • Abra data/itens/itens.xml e altere os dois ids das portas que você quer editar, assim como eu fiz:
      <item id="12149" article="a" name="closed door"> <attribute key="type" value="door" /> <attribute key="blockprojectile" value="1" /> </item> <item id="12151" article="an" name="open door"> <attribute key="type" value="door" /> </item> <item id="12158" article="a" name="closed door"> <attribute key="type" value="door" /> <attribute key="blockprojectile" value="1" /> </item> <item id="12160" article="an" name="open door"> <attribute key="type" value="door" /> </item>  
      • Em data/movements/scripts crie uma pasta doors
      - Nessa pasta você poderá adicionar outros ids de portas futuramente e manter organizado.
      - Dentro de doors, crie dois arquivos: closingdoorH e closingdoorV (.lua) e cole o mesmo código abaixo nos dois:
      - Se seus ids forem diferentes presta atenção nessa parte, na antepenúltima linha dos dois scripts:
      --> |    doTransformItem(item.uid, item.itemid - 2)   | <--
       
      • O que essa linha faz:
      - Se a minha porta ABERTA é ID12151, ao tirar o pé pra fora dela essa linha vai fazer a porta se transformar em 2 ids anteriores, nesse caso a porta FECHADA ID 12149.
      (12151 - 12149 = 2)
      - Então por exemplo, se a sua porta aberta for 12180 e a fechada 12150, é assim que tem que ser:
      --> |    doTransformItem(item.uid, item.itemid - 30)   | <--
       
      Código:
      function onStepOut(cid, item, position, fromPosition) if(getTileInfo(position).creatures > 0) then return true end local newPosition = {x = position.x, y = position.y, z = position.z} if(isInArray(verticalOpenDoors, item.itemid)) then newPosition.x = newPosition.x + 1 else newPosition.y = newPosition.y + 1 end doRelocate(position, newPosition) local tmpPos = position tmpPos.stackpos = -1 local i, tmpItem, tileCount = 1, {uid = 1}, getTileThingByPos(tmpPos) while(tmpItem.uid ~= 0 and i < tileCount) do tmpPos.stackpos = i tmpItem = getTileThingByPos(tmpPos) if(tmpItem.uid ~= item.uid and tmpItem.uid ~= 0 and not isMoveable(tmpItem.uid)) then doRemoveItem(tmpItem.uid) else i = i + 1 end end doTransformItem(item.uid, item.itemid - 2) return true end  
      Se preferir, use a versão configurável pra não se perder nas linhas:
       
       
       
       
      Em data/movements/movements.xml
       
      <movevent type="StepOut" itemid="12151" event="script" value="doors/closingdoorh.lua"/> <movevent type="StepOut" itemid="12160" event="script" value="doors/closingdoorv.lua"/>  
      ------- • -------
      PARTE 2
      --- • ---
       
      Em data/actions/actions.xml adicionei:
      <action itemid="12149" event="script" value="doors/door01.lua"/> <action itemid="12158" event="script" value="doors/door02.lua"/>  
      • Em data/actions/scripts crie uma pasta doors
      - Nessa pasta você poderá adicionar outros ids de portas futuramente e manter organizado.
      - Dentro de doors, crie dois arquivos: door01 e door02.
      - No meu caso, como as duas portas tem a mesma diferença de IDS o script fica o mesmo, então vou colar apenas 1 e você configura como quiser.
       
      door01.lua/door02.lua
       
      function onUse(cid, fromPos, toPos, itemEx) local config = { did = 2, -- Diferença de IDS entre a portas fechada/aberta level = 100, -- level necessario eff = 14, -- efeito ao abrir a porta txt = MESSAGE_EVENT_ADVANCE, -- txt = tipo e cor da mensagem. -- -- ... -- Exemplo: txt = MESSAGE_EVENT_ADVANCE, -- } -- -- MESSAGE_STATUS_CONSOLE_RED -> Texto em vermelho no default chat. -- MESSAGE_STATUS_CONSOLE_ORANGE -> Texto em laranja no default chat. -- MESSAGE_STATUS_CONSOLE_BLUE -> Texto em azul no default chat. -- MESSAGE_EVENT_ADVANCE -> Texto em branco na tela. -- MESSAGE_STATUS_WARNING -> Texto em vermelho na tela. -- MESSAGE_INFO_DESCR -> Texto em verde na tela. -- MESSAGE_EVENT_DEFAULT -> Texto em branco no server log. } local levelcheck = getPlayerLevel(cid) if levelcheck >= config.level then doTeleportThing(cid, toPos) doSendMagicEffect(getCreaturePosition(cid), (config.eff)) doTransformItem(itemEx.uid, itemEx.itemid + config.did) else doPlayerSendTextMessage(cid, config.txt, "Voce precisa ter level " ..config.level.." para entrar aqui") end end  
      Informações no script.
       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo