Ir para conteúdo
  • 0

Preciso de um script(dificil pra mim)


allex9213

Pergunta

Oi gente :) então, estou precisando de um script que eu o considero difícil pra mim ;s

 

Seria assim:

 

Fiz uma cave e coloquei 6 alavancas com o ids (1945/1946 ) minha intenção seria mover as alavancas para abrir uma passagem, numa certa ordem, (esquerda e direita) no caso 1945 e 1946, ai o player teria que descobrir a posição das alavancas pra passar.

 

Alguém pode ajudar na humildade?

Editado por allex9213
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

 

local alavancas = { -- tabela com a posicao de cada alavanca e o id que ela precisa estar para abrir passagem
{x = 1000, y = 1000, z = 7, correto = 1945},
{x = 1000, y = 1000, z = 7, correto = 1945},
{x = 1000, y = 1000, z = 7, correto = 1945},
{x = 1000, y = 1000, z = 7, correto = 1945},
{x = 1000, y = 1000, z = 7, correto = 1945},
{x = 1000, y = 1000, z = 7, correto = 1945},
}
 
local pedras = { -- tabela com a posicao e os ids das pedras que vao sumir
{x = 1000, y = 1000, z = 7, id = 1285},
{x = 1000, y = 1000, z = 7, id = 1285},
{x = 1000, y = 1000, z = 7, id = 1285},
}
 
local EFEITO_AO_REMOVER_PEDRA = CONST_ME_POFF -- efeito que aparece quando as pedras sumirem
local EFEITO_AO_RECRIAR_PEDRA = CONST_ME_POFF -- efeito que aparece quando as pedras reaparecerem
local TEMPO_PARA_RECRIAR_PEDRAS = 12 * 1000 -- em ms, tempo para bloquear a passagem e resetar todas as alavancas
 
-- nao modifique daqui para baixo
local aberto = false
 
function onUse(cid, item, frompos, item2, topos)
    if aberto then
        return doPlayerSendCancel(cid, "A passagem já está aberta.")
    end
    doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
    for i, a in pairs (alavancas) do
        if getTileItemById({x = a.x, y = a.y, z = a.z}, a.correto).uid < 1 then
            return doPlayerSendCancel(cid, "Parece que nada aconteceu...")
        end
    end
    aberto = true
    for i, a in pairs (pedras) do
        local uid = getTileItemById({x = a.x, y = a.y, z = a.z}, a.id).uid
        if uid > 1 then
            doRemoveItem(uid)
            doSendMagicEffect({x = a.x, y = a.y, z = a.z}, EFEITO_AO_REMOVER_PEDRA)
        end
    end
    addEvent(function ()
        aberto = false
        for i, a in pairs (pedras) do
            local uid = getTileItemById({x = a.x, y = a.y, z = a.z}, a.id).uid
            if uid < 0 then
                doCreateItem(a.id, {x = a.x, y = a.y, z = a.z})
                doSendMagicEffect({x = a.x, y = a.y, z = a.z}, EFEITO_AO_RECRIAR_PEDRA)
            end
        end
        for i, a in pairs (alavancas) do
            local uid = getTileItemById({x = a.x, y = a.y, z = a.z}, a.correto).uid
            if uid > 1 then
                doTransformItem(uid, 1945)
            end
        end
    end, TEMPO_PARA_RECRIAR_PEDRAS)
return true
end
Link para o comentário
Compartilhar em outros sites

  • 0

@brun123 Testando aqui, se der certo, ja volto agredecer! e mesmo assim, obrigado des de já!

 

Só uma duvida, Qual tag eu devo adcionar em actions.xml e no map editor, eu preciso adcionar algo? desculpe a falta de inteligencia, é que script nao é muito miinha praia kk' ;)

 

 

- Testei aqui, porém não esta removendo as pedras, quando clico nas alavancas e deixo na ordem que eu escolhi aparece a mensagem "nada aconteceu"

Editado por allex9213
Link para o comentário
Compartilhar em outros sites

  • 0

Você provavelmente configurou errado então, verifique as posições e as alavancas se estão todas certas, teste somente com duas alavancas e uma pedra primeiro e deixe elas uma do lado da outra pra ficar mais fácil testar

 

Eu rodei o script aqui e estava apenas com o problema de não recriar as pedras removidas depois, aqui está o script arrumado:

 

 

local alavancas = { -- tabela com a posicao de cada alavanca e o id que ela precisa estar para abrir passagem
{x = 1000, y = 1000, z = 7, correto = 1945},
{x = 1000, y = 1000, z = 7, correto = 1945},
{x = 1000, y = 1000, z = 7, correto = 1945},
{x = 1000, y = 1000, z = 7, correto = 1945},
{x = 1000, y = 1000, z = 7, correto = 1945},
{x = 1000, y = 1000, z = 7, correto = 1945},
}
 
local pedras = { -- tabela com a posicao e os ids das pedras que vao sumir
{x = 1000, y = 1000, z = 7, id = 1285},
{x = 1000, y = 1000, z = 7, id = 1285},
{x = 1000, y = 1000, z = 7, id = 1285},
}
 
local EFEITO_AO_REMOVER_PEDRA = CONST_ME_POFF -- efeito que aparece quando as pedras sumirem
local EFEITO_AO_RECRIAR_PEDRA = CONST_ME_POFF -- efeito que aparece quando as pedras reaparecerem
local TEMPO_PARA_RECRIAR_PEDRAS = 12 * 1000 -- em ms, tempo para bloquear a passagem e resetar todas as alavancas
 
-- nao modifique daqui para baixo
local aberto = false
 
function onUse(cid, item, frompos, item2, topos)
    if aberto then
        return doPlayerSendCancel(cid, "A passagem já está aberta.")
    end
    doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
    for i, a in pairs (alavancas) do
        if getTileItemById({x = a.x, y = a.y, z = a.z}, a.correto).uid < 1 then
            return doPlayerSendCancel(cid, "Parece que nada aconteceu...")
        end
    end
    aberto = true
    for i, a in pairs (pedras) do
        local uid = getTileItemById({x = a.x, y = a.y, z = a.z}, a.id).uid
        if uid > 1 then
            doRemoveItem(uid)
            doSendMagicEffect({x = a.x, y = a.y, z = a.z}, EFEITO_AO_REMOVER_PEDRA)
        end
    end
    addEvent(function ()
        aberto = false
        for i, a in pairs (pedras) do
            local uid = getTileItemById({x = a.x, y = a.y, z = a.z}, a.id).uid
            if uid < 1 then
                doCreateItem(a.id, {x = a.x, y = a.y, z = a.z})
                doSendMagicEffect({x = a.x, y = a.y, z = a.z}, EFEITO_AO_RECRIAR_PEDRA)
            end
        end
        for i, a in pairs (alavancas) do
            local uid = getTileItemById({x = a.x, y = a.y, z = a.z}, a.correto).uid
            if uid > 1 then
                doTransformItem(uid, 1945)
            end
        end
    end, TEMPO_PARA_RECRIAR_PEDRAS)
return doPlayerSendCancel(cid, "Alguma passagem foi desbloqueada!")
end
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...