Ir para conteúdo

Passagem Secreta Diferente


RigBy

Posts Recomendados

Passagem Secreta

Gif de como funciona

OfX0oxF.gif

 

Essa semana tava ajudando um cara chamado Farathor nesse topico, e foi uma ideia boa então decidi refazer e trazer pra cá :D

Ela funciona da seguinte maneira, vai ter 3 coal basin (Você pode configurar e coloca quantas você quiser), ai você vai ter que joga 3 itens diferente em cada coal basin (no meu caso eu usei os 3 fields) a estatua vai se move criando um teleport ou não (configurado), depois que você entrar no teleport ele ira fechar ou não (configurado).

Eu usei como exemplo os 3 field mas você pode alterar para algum item ou até adicionar ou remover mais locais onde tera que joga o item.

Testei na TFS 0.4 rev 3887

 

Então vamos instalar:

Crie um arquivo chamado Secret_Passage.lua na pasta movement/script e coloque isso dentro:

 

 

-- Do not remove the credits --
-- [MOVEMENT] Secret Teleport --
-- Developed by Rigby (João Vitor) --
-- Xtibia.com --
 
-- INICIO DA CONFIG
    local action = 5555 -- action, caso você altere aqui, vai ter que muda no xml também
    local create_Teleport = true -- false/true, quando a estatua mover vai cria um teleport onde ela tava?
    local close_Passage = true -- false/true, quando a pessoa passa pelo teleport a estatua vai volta?
    local teleport = {x = 1067, y = 1025, z = 7} -- posição em que a pessoa vai quando teleporta
    local local_Statue = {x = 1065, y = 1025, z = 7} -- posição em que a estatua ta
    local back_Statue = {x = 1065, y = 1024, z = 7} -- para onde a estatua vai quando usada
    local statue = 3697 -- id da estatua
    local time = 5 -- tempo em segundos que a estatua vai demorar para volta pro seu local de origem
    local config = {
        [1] = {necessary_Item = 1492, tile = {x = 1063, y = 1027, z = 7, stackpos= 1}},
        [2] = {necessary_Item = 1495, tile = {x = 1067, y = 1027, z = 7, stackpos= 1}},
        [3] = {necessary_Item = 1496, tile = {x = 1065, y = 1028, z = 7, stackpos= 1}},
     -- [4] = {necessary_Item = IDDOITEM, tile = POSIÇÃO, stackpos= 1}},
    }
-- FIM DA CONFIG
function onAddItem(cid, moveitem, tileitem, position)
    local tab = {}
    for i = 1, #config do
        if (getThingfromPos(config[i].tile).itemid == config[i].necessary_Item) then
            table.insert(tab, 1)
        end
    end
    if #tab >= #config then
        if getItemStack(local_Statue, statue) then
            for i = 1, #config do
                if getItemStack(config[i].tile, config[i].necessary_Item) then
                    doRemoveItem(getItemStack(config[i].tile, config[i].necessary_Item).uid, 1)
                    doSendMagicEffect(config[i].tile, 2)
                end
            end
            doCreateItem(statue, 1, back_Statue)
            doRemoveItem(getItemStack(local_Statue, statue).uid, 1)
            doSendMagicEffect(local_Statue, 2)
                if create_Teleport then
                    local teleport = doCreateItem(1387, 1, local_Statue)
                    doItemSetAttribute(teleport, "aid", action)
                end
            addEvent(function()
                if getItemStack(back_Statue, statue) then
                    doCreateItem(statue, 1, local_Statue)
                    doRemoveItem(getItemStack(back_Statue, statue).uid, 1)
                    doSendMagicEffect(back_Statue, 2)
                    if create_Teleport then
                        doRemoveItem(getItemStack(local_Statue, 1387).uid, 1)
                    end
                end
            end, time*1000)
        end
    end
    return true
end
 
function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Bem vindo.")
    doTeleportThing(cid, teleport)
    if close_Passage then
        doRemoveItem(getItemStack(back_Statue, statue).uid, 1)
        doSendMagicEffect(back_Statue, 2)
        doCreateItem(statue, 1, local_Statue)
        if create_Teleport then
            doRemoveItem(getItemStack(local_Statue, 1387).uid, 1)
        end
    end
    return true
end
 
function getItemStack(pos, iid)
    for i = 1, 255 do
        posa = getThingFromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=i})
        if posa.itemid == iid then
            return posa
        end
    end
return nil
end

Agora adicione essa duas linha em movement.xml:

<movevent type="AddItem" tileitem="1" actionid="13501" event="script" value="Secret_Passage.lua.lua"/>
<movevent type="StepIn" actionid="5555" event="script" value="Secret_Passage.lua.lua"/>
Agora so basta você adicionar o actionid 13501 nos coal basin ou nos piso mesmo.
Se você alterar o actionid "5555" você terar que alterar no Secret_Passage.lua também.
Para adicionar mais locais so basta você adicionar outra linha com o id do item e o local onde terá que ruma o item e não esqueã de sempre coloca 1 a mais no inicio, exemplo: se tiver 3 ai você cria o outro um a mais ficando 4.
[4] = {necessary_Item = 2160, tile = {x = 1062, y = 1027, z = 7, stackpos= 1}},
Isso ai, xau
Editado por RigBy
Link para o comentário
Compartilhar em outros sites

Graças a meu pedido, mereço uns rep tbm kkkkkk, ficou bom mesmo irmão, valeu.

To pensando em fazer uma quest pro meu ot, e dps eu converso com vc é um script parecido com esse, dai a gente conversa.

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...

aquele 5555 é pra botar aonde?

é o action do teleport, não precisa coloca em lugar nenhum, ele ja é criado automaticamente quando aparece o teleport.

 

Ficou bem maneiro e funcional. é fácil adaptar para 1.2?

Sim, eu acabei de formatar o pc, então depois eu posto aqui adaptado para 1.2

Link para o comentário
Compartilhar em outros sites

  • 2 years later...
×
×
  • Criar Novo...