Ir para conteúdo
  • 0

[TFS1.2]Mover Parede/Pedra/Estatua


DeCarvalho

Pergunta

Bem, não é novidade que não manjo dos paranauê.. sei fazer/alterar o básico para alguma necessidade minha, enfim.. vi por ai diversos scripts sobre isso, mas antigos.. nenhum que me sirva então gostaria de saber se alguma alma caridosa poderia fazer/disponibilizar/atualizar para mim um script configurável assim ...

 

.~> Como irá funcionar..

 

Inicialmente quero aplicar a essa area..

UsT67Bd.png

 

Gostaria de que quando o player (caso tenha completado uma quest ou qualquer coisa que libere uma storage qualquer), poderia remover a barra de ferro que esta trancando a passagem..

 

A ideia do basin é 'cobrar pedágio', o player que tem a quest feita, ficaria parado no sqm acima ou abaixo do basin , colocaria um item (configurável) no basin e a grade desapareceria por um tempo configurável.

 

Creio que ao abrir um lado seria interessante adicionar uma storage que seria verificada na próxima tile, para evitar engraçadinhos, caso um player sem storage passe a barra aparece novamente na mesma hora... e indo de [1] para [2], funcionaria da mesma maneira, visto que ao pisar no tile [2] ele não teria a storage correta e a barra se fecharia logo atras.

 

caso haja um player que completou a quest/matou certo monstro esteja parado acima/abaixo do basin mas um que não o fez esteja na tile da frente, logo na grade, seria enviada uma msg avisando que a grade não pode ser aberta.. E para evitar gente sacaneando ele também teleportaria o/os player/s ali para um local configurável, caso tenha 2 players no mesmo sqm acima/abaixo do basin ele teleportaria o que não tem a storage da quest..

 

gostaria que o item usado em cada basin possa ser configurado de forma independente.., ex usar uma white pearl para ir e uma black pearl para voltar..

 

Acho que é bem complexo, mas ficaria muito grato se alguém fizesse..

 

um bonus seria quem fizer 'ensinar' como fazer para alterar o script caso eu queira usar em outro lugar de outra forma.. tipo puxando um lever para remover uma pedra que iria reaparecer novamente depois de um tempo..

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

To meio sem tempo mas fiz aqui:

Coloque o actionid "13501" nos dois coal basin.

-- made by Rigby (João Vitor)
local whitepearl = {id = 2143, pos = {x = 91, y = 128, z = 7}} -- id da witherpearl e a posição onde deverar que ruma ela
local blackpearl = {id = 2144, pos = {x = 89, y = 122, z = 7}} -- id da blackpearl e a posição onde deverar que ruma ela
local wall = {id = 1445, pos = {x = 90, y = 125, z = 7}} -- id da parede e posição dela
 
local time = 5 -- quanto tempo ficara aberto
local storage = 21321 -- storage que precissa para passar
 
function onAddItem(moveitem, tileitem, position)
    getWall = getTileItemById(Position(wall.pos), wall.id)
    getBlack = getTileItemById(Position(whitepearl.pos), whitepearl.id)
    getWhite = getTileItemById(Position(blackpearl.pos), blackpearl.id) 
    if moveitem:getId() == whitepearl.id or moveitem:getId() == blackpearl.id then
        if getWhite.itemid ~= 0 or getBlack.itemid ~= 0 then
            if getWall.itemid ~= 0 then
                Position(wall.pos):sendMagicEffect(3)
                doRemoveItem(getWall.uid, 1)
                moveitem:remove()
                addEvent(function()
                    Game.createItem(wall.id, 1, wall.pos)
                    Position(wall.pos):sendMagicEffect(3)
                end, time*1000)
            end
        end
    end
    return true
end
 
function onStepIn(creature, item, position, fromPosition)
    if creature:isPlayer() then
        if creature:getStorageValue(storage) == -1 then
            creature:teleportTo(fromPosition)
        end
    end
    return true
end
Link para o comentário
Compartilhar em outros sites

  • 0

Eu fiz desse jeito, vai remove a parede quando joga o item no coal basin mas para volta você coloca um teleport la porque se não o cara pode esquecer de ter o black pearl e fica preso la dentro.

e também para que o cara não passe, não tendo feito a quest eu criei um movement que impede ele de passar.

Testa ai:

Movement:

xml:

<movevent event="AddItem" tileitem="1" actionid="13501" script="NOMEDOSCRIPT.lua"/>
<movevent event="StepIn" actionid="13500" script="NOMEDOSCRIPT.lua"/>
lua:
local pearl = 2693 -- id do item que vai joga
local pos = Position({x = 90, y = 124, z = 7}) -- onde a parede esta
local wall_id = 3362 -- id da parede
local time = 5 -- quanto tempo ficara aberto
local storage = 21321 -- storage que precissa para passar
 
function onAddItem(moveitem, tileitem, position)
    local wall = getTileItemById(pos, wall_id)
    if moveitem:getId() == pearl then
        if wall.itemid ~= 0 then
            pos:sendMagicEffect(3)
            doRemoveItem(wall.uid, 1)
            moveitem:remove()
            addEvent(function()
                Game.createItem(wall_id, 1, pos)
                pos:sendMagicEffect(3)
            end, time*1000)
        end
    end
    return true
end
 
function onStepIn(creature, item, position, fromPosition)
    if creature:isPlayer() then
        if creature:getStorageValue(storage) == -1 then
            creature:teleportTo(fromPosition)
        end
    end
    return true
end
agora só basta coloca o actionid 13501 no coal basin onde terá que joga o item e o actionid 13500 no local em que só pode passar se tiver feito a quest.
ps. não esqueça de configurar o script

 

Link para o comentário
Compartilhar em outros sites

  • 0

Eu fiz desse jeito, vai remove a parede quando joga o item no coal basin mas para volta você coloca um teleport la porque se não o cara pode esquecer de ter o black pearl e fica preso la dentro.

e também para que o cara não passe, não tendo feito a quest eu criei um movement que impede ele de passar.

Testa ai:

Movement:

xml:

<movevent event="AddItem" tileitem="1" actionid="13501" script="NOMEDOSCRIPT.lua"/>
<movevent event="StepIn" actionid="13500" script="NOMEDOSCRIPT.lua"/>
lua:
local pearl = 2693 -- id do item que vai joga
local pos = Position({x = 90, y = 124, z = 7}) -- onde a parede esta
local wall_id = 3362 -- id da parede
local time = 5 -- quanto tempo ficara aberto
local storage = 21321 -- storage que precissa para passar
 
function onAddItem(moveitem, tileitem, position)
    local wall = getTileItemById(pos, wall_id)
    if moveitem:getId() == pearl then
        if wall.itemid ~= 0 then
            pos:sendMagicEffect(3)
            doRemoveItem(wall.uid, 1)
            moveitem:remove()
            addEvent(function()
                Game.createItem(wall_id, 1, pos)
                pos:sendMagicEffect(3)
            end, time*1000)
        end
    end
    return true
end
 
function onStepIn(creature, item, position, fromPosition)
    if creature:isPlayer() then
        if creature:getStorageValue(storage) == -1 then
            creature:teleportTo(fromPosition)
        end
    end
    return true
end
agora só basta coloca o actionid 13501 no coal basin onde terá que joga o item e o actionid 13500 no local em que só pode passar se tiver feito a quest.
ps. não esqueça de configurar o script

 

Muito obrigado, meus likes estão acabados no momento mas assim que tiver disponível eu dou likes ae :D

 

Gostaria de saber como poderia fazer para usar 2 items mesmo.. do outro lado haverá drop do item que ele irá precisar para voltar por isso não me preocupo tanto além do que o local será parte de uma quest..

 

isso eu não sei como fazer.. o resto que é coisa básica eu sei.. adicionar uma mensagem.. um efeito.. gosto de coisas para fazer o povo 'quebrar a cabeça'.. de qualquer maneira.. assim que der dou like.. mt obrigado :D

 

[edit 1] para usar items diferentes em cada basin pensei em colocar um outro local/storage e adicionar uma função copiada da anterior para funcionar, mas penso que existe maneira mais simples de fazer..

 

[edit 2] Também não testei (estou meio apertado mas caso não apareça antes de eu liberar irei testar) será que rola se eu adicionar uma storage na hora que coloca o item no basin e mais uma verificação no tile? quero evitar que mesmo a pessoa tendo feito a quest, se ela não tiver usado o item ela não consiga passar.. e assim que ela pisar no tile lá do outr lado a storage seja removida.. então cada tile vai fazer 2 verificações de storage e remover 1 :s

 

Esse edit 2 acho que não carece de fazer, eu tendo uma dica de como acho que consigo.. então se você puder explicar.. estou tentando imaginar aqui como fazer de uma maneira que não 'polua' o código..

 

de qualquer maneira.. estou só esperando você aparecer para dar como resolvido...

 

Grato Pelo script

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

×
×
  • Criar Novo...