Ir para conteúdo
  • Cadastre-se

(Resolvido)Ajuda com porta automática


Ir para solução Resolvido por zipter98,

Posts Recomendados

O actionid você coloca nos tiles, não na porta.

E obviamente vai dar erro, você esqueceu de configurar o actionid no index da tabela ids.

Troque:

[actionid] = {

por:

[2701] = {

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

Aee kk consegui :P eu tava configurando errado mesmo, Reputado :) vc vai ganhar 6 rep+ por me ajudar :D tava precisando mesmo dessa script

 

tem como alterar essa script pra remover 3 paredes ? tipo " a porta tá la fechada, ai chega um player e pisa no tile, ai vai abrir metade da porta no caso a 1º parede, e em seguida com o player em cima do tile removeria essa nova parede que crio que seria a porta metade aberta, e substituiria por a parede toda aberta, e quando o player sai-se do tile a porta fecharia, tipo ela ficaria metade aberta novamente e depois toda fechada " vou deixar print das portas que to falando do +3 rep+ se conseguir :)

 

Hoje dei 3 rep+ pra vc :) amanhã do + 3 e se vc me ajudar com esse outro, depois de amanhã te darei +3 rep+

 

Prints

 

 

post-125336-0-07225500-1428529825_thumb.

post-125336-0-35006300-1428529826_thumb.

post-125336-0-59502400-1428529827_thumb.

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

Por padrão, coloquei um intervalo de 400 milésimos entre as "transformações" da porta. Caso este tempo não lhe agrade, basta mudá-lo onde foi indicado no código.

local config = {
    delay = 400,                                  --Intervalo de tempo entre as "transformações" da porta, em milésimos.
    door = {621, xxx, 605},                       --{ID da porta fechada, ID da porta aberta pela metade, ID da porta aberta},
    ids = {
        [2701] = {                               --[action_id] = {
            {x = 1056, y = 1053, z = 7},         --Posições das portas.
            {x = 1053, y = 1053, z = 7},
        },
    },
}
function onStepIn(cid, item, position, fromPosition)
    if config.ids[item.actionid] then
        for _, pos in pairs(config.ids[item.actionid]) do
            if getTileItemById(pos, config.door[1]).uid > 0 then
                for i = 1, 2 do
                    addEvent(function()
                        doTransformItem(getTileItemById(pos, i == 1 and config.door[1] or config.door[2]).uid, config.door[i + 1])
                    end, i * config.delay)
                end
            end 
        end
    end
    return true
end
function onStepOut(cid, item, position, fromPosition)
    if config.ids[item.actionid] then
        for _, pos in pairs(config.ids[item.actionid]) do
            local it = getTileItemById(pos, config.door[3]).uid
            if it > 0 then
                if getSpectators(pos, 1, 1) then
                    return true
                end
            end
        end
        for _, pos in pairs(config.ids[item.actionid]) do
            if getTileItemById(pos, config.door[3]).uid > 0 then
                for i = 1, 2 do
                    addEvent(function()
                        doTransformItem(getTileItemById(pos, i == 1 and config.door[3] or config.door[2]).uid, config.door[i == 1 and 2 or 1])
                    end, i * config.delay)
                end
            end
        end
    end
    return true
end
Editado por zipter98 (veja o histórico de edições)

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

pego normal + tipo sera 4 tiles com a action, 1 tile do lado do outro, ai tipo se o player andar pro tile do lado que tem a action a porta fecha sozinha, queria tipo se o player ta no tile que tem a action e ele andar pro outro tile que também tem a action a porta ficara aberta ai se ele sair do tile que tem a action a porta se fecha.

Link para o post
Compartilhar em outros sites

Estranho, testei aqui e funcionou perfeitamente. Caso não haja ninguém em volta da porta, ela se fechará (assim como no vídeo que a PxG demonstra este "sistema"). Talvez seja isso.

Editado por zipter98 (veja o histórico de edições)

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

ss eu configurei certo dessa vez :) tipo é que nem a imagem que ta no começo do tópico, tipo se eu to em cima de um tile que tem a action até ai tudo bem, a porta esta lá aberta normal, ai eu ando pro tile do lado >>> que também tem a action, sendo que quando eu ando pra esse tile ou pra qual quer outro tile que também tem a action a porta se fecha e abre novamente, queria que a porta fica-se sempre aberta, só quando o player sair dos tiles que tem as actions ai s a porta fecharia. :P

 

Já te dei 5 rep+ só falta 4 rsrs + vou da 5 pq vc ajudo muito kkk :P total de 10 rep+

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

Troque o código por este, teste novamente e informe os números que aparecerão no console. Gostaria de confirmar onde exatamente está o erro.

local config = {
    delay = 400,                                  --Intervalo de tempo entre as "transformações" da porta, em milésimos.
    door = {621, xxx, 605},                       --{ID da porta fechada, ID da porta aberta pela metade, ID da porta aberta},
    ids = {
        [2701] = {                               --[action_id] = {
            {x = 1056, y = 1053, z = 7},         --Posições das portas.
            {x = 1053, y = 1053, z = 7},
        },
    },
}
function onStepIn(cid, item, position, fromPosition)
    if config.ids[item.actionid] then
        for _, pos in pairs(config.ids[item.actionid]) do
            if getTileItemById(pos, config.door[1]).uid > 0 then
                for i = 1, 2 do
                    addEvent(function()
                        doTransformItem(getTileItemById(pos, i == 1 and config.door[1] or config.door[2]).uid, config.door[i + 1])
                    end, i * config.delay)
                end
            end 
        end
    end
    return true
end
function onStepOut(cid, item, position, fromPosition)
    if config.ids[item.actionid] then
        for _, pos in pairs(config.ids[item.actionid]) do
            local it = getTileItemById(pos, config.door[3]).uid
            if it > 0 then
                print(1)
                if getSpectators(pos, 1, 1) then
                    print(2)
                    return true
                end
            end
        end
        for _, pos in pairs(config.ids[item.actionid]) do
            if getTileItemById(pos, config.door[3]).uid > 0 then
                print(3)
                for i = 1, 2 do
                    addEvent(function()
                        doTransformItem(getTileItemById(pos, i == 1 and config.door[3] or config.door[2]).uid, config.door[i == 1 and 2 or 1])
                    end, i * config.delay)
                end
            end
        end
    end
    return true
end

Sobre a reputação, não é necessária. Estou lhe ajudando por prazer, não por interesse.

Editado por zipter98 (veja o histórico de edições)

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

Apareceu Os Números 1,3

só apareceu esse monte de números pq eu andei um monte de vez rsrs

 

kkk fico admirado com a bondade desse povo do tibiaking :) mesmo assim é meu dever te da reputação pq vc estar me ajudando muito, pq pra vc ver criei 4 ou 5 tópicos com a mesma pergunta e só vc e o Caronte que teve a decência de me ajudar :)

post-125336-0-23770000-1428539009_thumb.

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

Hm, mude:

if getSpectators(pos, 1, 1) then
para:
if getSpectators(pos, 2, 2) then
Teste novamente o código, e informe os resultados.

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

Agora deu diferente, eu andei no tile e deu 1,2 depois eu andei pro outro e deu 1,3

tá quase saindo o bug, só ta acontecendo agr com 2 tiles

post-125336-0-85312200-1428539966_thumb.

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

Poderia enviar uma print indicando quais tiles estão funcionando e quais não estão? É bem estranho este bug estar acontecendo.

Editado por zipter98 (veja o histórico de edições)

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

Olha ai o print, onde ta pintado de vermelho é os tiles bugados, e onde ta pintado de azul é os tiles que ta funcionando normal :) ah s esqueci de colocar no print, de baixo da porta fechada também tem 2 tiles que estão normais que são para manter a porta aberta quando o player passar

 

Tipo eu vou adicionar essa script em outras portas também, tanto portas para frente quanto portas para o lado, sera que vai bugar também ? '-' rsrs

post-125336-0-13691500-1428540974_thumb.

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

Você teria outro servidor para testar o código, nem que seja com outros items? Assim, poderíamos confirmar se o problema está no servidor ou na configuração (no RME, visto que a do código está perfeita).

Editado por zipter98 (veja o histórico de edições)

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

Testei com outro server e agr a porta n quis nem + fechar quando sai do tile '-'

olha print dos códigos

Eu percebi que quando da 1,2 nos códigos fica bugado, a porta n se fecha+, e quando da 1,3 nos códigos a porta estar funcionando do jeito que quero

 

Ha s n sei se é por causa disso + eu removi uma Pos da script tipo

 

a script era assim

[actionid] = {                     --[action_id] = {
            {x = x, y = y, z = z},         --Posições das portas.
            {x = x, y = y, z = z},
        },

Ai eu deixei ela assim

 [actionid] = {                     --[action_id] = {
            {x = x, y = y, z = z},         --Posições das portas.
        },

pq só preciso de uma pos para a porta

post-125336-0-01881900-1428597915_thumb.

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

Se da maneira que você colocou está funcionando como desejado, não vejo motivos para não deixar assim. 

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites
  • 10 months later...
Em 09/04/2015 17:42:07, zipter98 disse:

Se da maneira que você colocou está funcionando como desejado, não vejo motivos para não deixar assim. 

Me perdoe por estar "revivendo" o tópico

Mas Zipter , teria alguma forma de colocar 4 transformações ? Quando eu apenas adiciono mais 1 número em     door = {13680, 13679, 13678, 13677},                       --{ID da porta fechada, ID da porta aberta pela metade, ID da porta aberta}, In-Game só funciona apenas 3 transfonações :(

Link para o post
Compartilhar em outros sites
  • 3 years later...
Em 27/02/2016 em 16:39, Sydion disse:

Me perdoe por estar "revivendo" o tópico

Mas Zipter , teria alguma forma de colocar 4 transformações ? Quando eu apenas adiciono mais 1 número em     door = {13680, 13679, 13678, 13677},                       --{ID da porta fechada, ID da porta aberta pela metade, ID da porta aberta}, In-Game só funciona apenas 3 transfonações :(

 

Então pra quem quer a porta com 4 eu editei e configurei de novo


TÁ NA MÃO!
 

Spoiler

local config = {
    delay = 200,                                       --Intervalo de tempo entre as "transformações" da porta, em milésimos.
    door = {15226, 15225, 15224, 15223},                       --{ID da porta fechada, ID da porta aberta pela metade, ID da porta aberta},
    ids = {
    [12000] = {                                        
        {x = 1011, y = 999, z = 7},         --Saffron--
    },
  },
}
function onStepIn(cid, item, position)
    if config.ids[item.actionid] then
        for _, pos in pairs(config.ids[item.actionid]) do
            if getTileItemById(pos, config.door[1]).uid > 0 then
                for i = 1, 3 do
                    addEvent(function()
                        doTransformItem(getTileItemById(pos, i == 1 and config.door[1] or i == 2 and config.door[2] or config.door[3]).uid, config.door[i + 1])
                    end, i * config.delay)
                end
            end 
        end
    end
    return true
end
function onStepOut(cid, item, position, fromPosition)
    if config.ids[item.actionid] then
        for _, pos in pairs(config.ids[item.actionid]) do
            local it = getTileItemById(pos, config.door[4]).uid
            if it > 0 then
                if getSpectators(pos, 1, 1) then
                    return true
                end
            end
        end
        for _, pos in pairs(config.ids[item.actionid]) do
            if getTileItemById(pos, config.door[4]).uid > 0 then
                for i = 1, 3 do
                    addEvent(function()
                        doTransformItem(getTileItemById(pos, i == 1 and config.door[4] or i == 2 and config.door[3] or config.door[2]).uid, config.door[i == 1 and 3 or i == 2 and 2 or 1])
                    end, i * config.delay)
                end
            end
        end
    end
    return true
end

 

Em 27/02/2016 em 17:48, maury123 disse:

gostaria de saber se da pra fazer com essas portas aqui

Sem título.png

 

da sim maninho pega o código que editei no comentário anterior e segue o tutorial do Zipter
 

a unica diferença é que você vai trocar o código dele pelo meu ^^

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo