Ir para conteúdo
  • 0

[Pedido] Passagem Secreta Diferente


Farathor

Pergunta

Galera, eu gostaria de um script de passagem secreta que funciona-se da seguinte forma.

Primeiro, você precisa jogar 1 fire field em um piso e 1 energy field em outro piso. Apos isso acontecer, uma statua move um sqm pa traz, e nasce um teleporte em uma certa posição. Conseguiram entender?

Obrigado pela atenção

Link para o comentário
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

  • 0

Opa gostei do seu pedido.

 

Eu pensei em fazer usa globalevent mas isso iria da lag no seu servidor.

Então eu fiz por action, tipo quando você usar os fields no piso e clica em alguma coisa(recomendo você coloca para clicar na estatua mas pode coloca em uma alavanca ou qualquer coisa) a estatua vai mover para trás e vai aparecer o teleport, depois de um tempo configurado ela volta para o lugar.

 

Ta aqui:

.lua

-- Do not remove the credits --
-- [ACTION] Secret Teleport --
-- Developed by Rigby (João Vitor) --
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
    local fields = {1492, 1495} -- id do fire field e energy field
    local tile1 = {x = 1066, y = 1020, z = 7, stackpos= 1} -- Posição do tile 1
    local tile2 = {x = 1068, y = 1020, z = 7, stackpos= 1} -- Posição do tile 2
    local statue_Of_Position = {x = 1067, y = 1020, z = 7} -- posição onde fica a estátua, que ira aparecer o teleport
    local teleport = {x = 1066, y = 1020, z = 7} -- posição da onde o player vai quando entrar no teleport
    local go_Backward = {x = 1067, y = 1019, z = 7} -- Posição para aonde a estátua vai
    local statue = 3697 -- id da estátua
    local tempo = 5 -- tempo em segundos que o teleporte ficara aberto
 
    local pos1 = getThingfromPos(tile1)
    local pos2 = getThingfromPos(tile2)
    if (pos1.itemid == fields[1] and pos2.itemid == fields[2]) or (pos1.itemid == fields[2] and pos2.itemid == fields[1]) then
        if getItemStack(statue_Of_Position, statue) then
            doRemoveItem(getItemStack(statue_Of_Position, statue).uid, 1)
            doCreateTeleport(1387, teleport, statue_Of_Position)
            doCreateItem(statue, 1, go_Backward)
            if getItemStack(tile1, fields[1]) then
                doRemoveItem(getItemStack(tile1, fields[1]).uid, 1)
                doRemoveItem(getItemStack(tile2, fields[2]).uid, 1)
            else
                doRemoveItem(getItemStack(tile1, fields[2]).uid, 1)
                doRemoveItem(getItemStack(tile2, fields[1]).uid, 1)
            end
            addEvent(function()
                doCreateItem(statue, 1, statue_Of_Position)
                doRemoveItem(getItemStack(statue_Of_Position, 1387).uid, 1)
                doRemoveItem(getItemStack(go_Backward, statue).uid, 1)
            end, tempo*1000)
        end
    end
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
Xml, tag

<action actionid="6567" event="script" value="NomedoScript.lua"/>
So basta coloca o actionid 6567 na estatua ou outro item.

 

 

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

  • 0

Opa gostei do seu pedido.

 

Eu pensei em fazer usa globalevent mas isso iria da lag no seu servidor.

Então eu fiz por action, tipo quando você usar os fields no piso e clica em alguma coisa(recomendo você coloca para clicar na estatua mas pode coloca em uma alavanca ou qualquer coisa) a estatua vai mover para trás e vai aparecer o teleport, depois de um tempo configurado ela volta para o lugar.

 

Ta aqui:

.lua

-- Do not remove the credits --
-- [ACTION] Secret Teleport --
-- Developed by Rigby (João Vitor) --
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
    local fields = {1492, 1495} -- id do fire field e energy field
    local tile1 = {x = 1066, y = 1020, z = 7, stackpos= 1} -- Posição do tile 1
    local tile2 = {x = 1068, y = 1020, z = 7, stackpos= 1} -- Posição do tile 2
    local statue_Of_Position = {x = 1067, y = 1020, z = 7} -- posição onde fica a estátua, que ira aparecer o teleport
    local teleport = {x = 1066, y = 1020, z = 7} -- posição da onde o player vai quando entrar no teleport
    local go_Backward = {x = 1067, y = 1019, z = 7} -- Posição para aonde a estátua vai
    local statue = 3697 -- id da estátua
    local tempo = 5 -- tempo em segundos que o teleporte ficara aberto
 
    local pos1 = getThingfromPos(tile1)
    local pos2 = getThingfromPos(tile2)
    if (pos1.itemid == fields[1] and pos2.itemid == fields[2]) or (pos1.itemid == fields[2] and pos2.itemid == fields[1]) then
        if getItemStack(statue_Of_Position, statue) then
            doRemoveItem(getItemStack(statue_Of_Position, statue).uid, 1)
            doCreateTeleport(1387, teleport, statue_Of_Position)
            doCreateItem(statue, 1, go_Backward)
            addEvent(function()
                doCreateItem(statue, 1, statue_Of_Position)
                doRemoveItem(getItemStack(statue_Of_Position, 1387).uid, 1)
                doRemoveItem(getItemStack(go_Backward, statue).uid, 1)
            end, tempo*1000)
        end
    end
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
Xml, tag
<action actionid="6567" event="script" value="NomedoScript.lua"/>
So basta coloca o actionid 6567 na estatua ou outro item.

 

 

 

uma duvida só, eu nao vi nas configuraçoes entao pensei, quando o teleport sumir, a estatua vai voltar para o local que seria em cima dele? e tambem, quando a estatua voltar as fields que foram jogadas nos tiles iram sumir?

 

Faz uma versao pra mim sem aparecer o teleport? obrigado :3

 

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

  • 0

uma duvida só, eu nao vi nas configuraçoes entao pensei, quando o teleport sumir, a estatua vai voltar para o local que seria em cima dele? e tambem, quando a estatua voltar as fields que foram jogadas nos tiles iram sumir?

 

Faz uma versao pra mim sem aparecer o teleport? obrigado :3

 

Sim a estatua volta para seu lugar de origem, só não tava removendo os fields mas ja coloquei para remover.

Aqui a versão sem aparecer o teleport:

 

 

-- Do not remove the credits --
-- [ACTION] Secret Teleport --
-- Developed by Rigby (João Vitor) --
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
    local fields = {1492, 1495} -- id do fire field e energy field
    local tile1 = {x = 1066, y = 1020, z = 7, stackpos= 1} -- Posição do tile 1
    local tile2 = {x = 1068, y = 1020, z = 7, stackpos= 1} -- Posição do tile 2
    local statue_Of_Position = {x = 1067, y = 1020, z = 7} -- posição onde fica a estátua, que ira aparecer o teleport
    local teleport = {x = 1066, y = 1020, z = 7} -- posição da onde o player vai quando entrar no teleport
    local go_Backward = {x = 1067, y = 1019, z = 7} -- Posição para aonde a estátua vai
    local statue = 3697 -- id da estátua
    local tempo = 5 -- tempo em segundos que o teleporte ficara aberto
 
    local pos1 = getThingfromPos(tile1)
    local pos2 = getThingfromPos(tile2)
    if (pos1.itemid == fields[1] and pos2.itemid == fields[2]) or (pos1.itemid == fields[2] and pos2.itemid == fields[1]) then
        if getItemStack(statue_Of_Position, statue) then
            doRemoveItem(getItemStack(statue_Of_Position, statue).uid, 1)
            doCreateItem(statue, 1, go_Backward)
            if getItemStack(tile1, fields[1]) then
                doRemoveItem(getItemStack(tile1, fields[1]).uid, 1)
                doRemoveItem(getItemStack(tile2, fields[2]).uid, 1)
            else
                doRemoveItem(getItemStack(tile1, fields[2]).uid, 1)
                doRemoveItem(getItemStack(tile2, fields[1]).uid, 1)
            end
            addEvent(function()
                doCreateItem(statue, 1, statue_Of_Position)
                doRemoveItem(getItemStack(go_Backward, statue).uid, 1)
            end, tempo*1000)
        end
    end
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

 

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

Pronto agora ta muito melhor, acho que não vai ter nenhum bug, testei todos os jeitos de buga.

Movement:

.lua

-- Do not remove the credits --
-- [MOVEMENT] Secret Teleport --
-- Developed by Rigby (João Vitor) --
 
function onAddItem(cid, moveitem, tileitem, position)
    local fields = {1492, 1495} -- id do fire field e energy field
    local tile1 = {x = 1066, y = 1020, z = 7, stackpos= 1} -- Posição do tile 1
    local tile2 = {x = 1068, y = 1020, z = 7, stackpos= 1} -- Posição do tile 2
    local statue_Of_Position = {x = 1067, y = 1020, z = 7} -- posição onde fica a estátua, que ira aparecer o teleport
    local teleport = {x = 1066, y = 1020, z = 7} -- posição da onde o player vai quando entrar no teleport
    local go_Backward = {x = 1067, y = 1019, z = 7} -- Posição para aonde a estátua vai
    local statue = 3697 -- id da estátua
    local tempo = 5 -- tempo em segundos que o teleporte ficara aberto
 
    local pos1 = getThingfromPos(tile1)
    local pos2 = getThingfromPos(tile2)
    if (pos1.itemid == fields[1] and pos2.itemid == fields[2]) or (pos1.itemid == fields[2] and pos2.itemid == fields[1]) then
        if getItemStack(statue_Of_Position, statue) then
            doRemoveItem(getItemStack(statue_Of_Position, statue).uid, 1)
            doCreateTeleport(1387, teleport, statue_Of_Position)
            doCreateItem(statue, 1, go_Backward)
            if getItemStack(tile1, fields[1]) then
                doRemoveItem(getItemStack(tile1, fields[1]).uid, 1)
                doRemoveItem(getItemStack(tile2, fields[2]).uid, 1)
            else
                doRemoveItem(getItemStack(tile1, fields[2]).uid, 1)
                doRemoveItem(getItemStack(tile2, fields[1]).uid, 1)
            end
            addEvent(function()
                doCreateItem(statue, 1, statue_Of_Position)
                doRemoveItem(getItemStack(statue_Of_Position, 1387).uid, 1)
                doRemoveItem(getItemStack(go_Backward, statue).uid, 1)
            end, tempo*1000)
        end
    end
    if getItemStack(go_Backward, statue) then
            if getItemStack(tile1, fields[1]) then
                doRemoveItem(getItemStack(tile1, fields[1]).uid, 1)
            elseif getItemStack(tile1, fields[2]) then
                doRemoveItem(getItemStack(tile1, fields[2]).uid, 1)
            elseif getItemStack(tile2, fields[1]) then
                doRemoveItem(getItemStack(tile2, fields[1]).uid, 1)
            elseif getItemStack(tile2, fields[2]) then
                doRemoveItem(getItemStack(tile2, fields[2]).uid, 1)
            end
        end 
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
.xml, tag
<movevent type="AddItem" tileitem="1" actionid="13501" event="script" value="Nomedoscript.lua"/>
So basta coloca o actionid no piso que ira solta os fields
Editado por RigBy
Link para o comentário
Compartilhar em outros sites

  • 0

 

Pronto agora ta muito melhor, acho que não vai ter nenhum bug, testei todos os jeitos de buga.

Movement:

.lua

-- Do not remove the credits --
-- [MOVEMENT] Secret Teleport --
-- Developed by Rigby (João Vitor) --
 
function onAddItem(cid, moveitem, tileitem, position)
    local fields = {1492, 1495} -- id do fire field e energy field
    local tile1 = {x = 1066, y = 1020, z = 7, stackpos= 1} -- Posição do tile 1
    local tile2 = {x = 1068, y = 1020, z = 7, stackpos= 1} -- Posição do tile 2
    local statue_Of_Position = {x = 1067, y = 1020, z = 7} -- posição onde fica a estátua, que ira aparecer o teleport
    local teleport = {x = 1066, y = 1020, z = 7} -- posição da onde o player vai quando entrar no teleport
    local go_Backward = {x = 1067, y = 1019, z = 7} -- Posição para aonde a estátua vai
    local statue = 3697 -- id da estátua
    local tempo = 5 -- tempo em segundos que o teleporte ficara aberto
 
    local pos1 = getThingfromPos(tile1)
    local pos2 = getThingfromPos(tile2)
    if (pos1.itemid == fields[1] and pos2.itemid == fields[2]) or (pos1.itemid == fields[2] and pos2.itemid == fields[1]) then
        if getItemStack(statue_Of_Position, statue) then
            doRemoveItem(getItemStack(statue_Of_Position, statue).uid, 1)
            doCreateTeleport(1387, teleport, statue_Of_Position)
            doCreateItem(statue, 1, go_Backward)
            if getItemStack(tile1, fields[1]) then
                doRemoveItem(getItemStack(tile1, fields[1]).uid, 1)
                doRemoveItem(getItemStack(tile2, fields[2]).uid, 1)
            else
                doRemoveItem(getItemStack(tile1, fields[2]).uid, 1)
                doRemoveItem(getItemStack(tile2, fields[1]).uid, 1)
            end
            addEvent(function()
                doCreateItem(statue, 1, statue_Of_Position)
                doRemoveItem(getItemStack(statue_Of_Position, 1387).uid, 1)
                doRemoveItem(getItemStack(go_Backward, statue).uid, 1)
            end, tempo*1000)
        end
    end
    if getItemStack(go_Backward, statue) then
            if getItemStack(tile1, fields[1]) then
                doRemoveItem(getItemStack(tile1, fields[1]).uid, 1)
            elseif getItemStack(tile1, fields[2]) then
                doRemoveItem(getItemStack(tile1, fields[2]).uid, 1)
            elseif getItemStack(tile2, fields[1]) then
                doRemoveItem(getItemStack(tile2, fields[1]).uid, 1)
            elseif getItemStack(tile2, fields[2]) then
                doRemoveItem(getItemStack(tile2, fields[2]).uid, 1)
            end
        end 
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
.xml, tag
<movevent type="AddItem" tileitem="1" actionid="13501" event="script" value="Nomedoscript.lua"/>
So basta coloca o actionid no piso que ira solta os fields

 

 

Perfeito, porém, tem como voce fazer para aparecer uma mensagem branca na tela quando entrar no tp? rep+ ja

 

Link para o comentário
Compartilhar em outros sites

  • 0

Ola, eu tava vendo o 2º script que o RigBy postou, clicando em item ainda, teria como fazer assim:

 

Quando o player entrar no "TP", a estátua ja voltar para o lugar, para ninguém poder seguir ele?

 

Edita nesse aqui se puder:

 

 

-- Do not remove the credits --
-- [ACTION] Secret Teleport --
-- Developed by Rigby (João Vitor) --

function onUse(cid, item, fromPosition, itemEx, toPosition)
local fields = {1492, 1495} -- id do fire field e energy field
local tile1 = {x = 1066, y = 1020, z = 7, stackpos= 1} -- Posição do tile 1
local tile2 = {x = 1068, y = 1020, z = 7, stackpos= 1} -- Posição do tile 2
local statue_Of_Position = {x = 1067, y = 1020, z = 7} -- posição onde fica a estátua, que ira aparecer o teleport
local teleport = {x = 1066, y = 1020, z = 7} -- posição da onde o player vai quando entrar no teleport
local go_Backward = {x = 1067, y = 1019, z = 7} -- Posição para aonde a estátua vai
local statue = 3697 -- id da estátua
local tempo = 5 -- tempo em segundos que o teleporte ficara aberto

local pos1 = getThingfromPos(tile1)
local pos2 = getThingfromPos(tile2)
if (pos1.itemid == fields[1] and pos2.itemid == fields[2]) or (pos1.itemid == fields[2] and pos2.itemid == fields[1]) then
if getItemStack(statue_Of_Position, statue) then
doRemoveItem(getItemStack(statue_Of_Position, statue).uid, 1)
doCreateItem(statue, 1, go_Backward)
if getItemStack(tile1, fields[1]) then
doRemoveItem(getItemStack(tile1, fields[1]).uid, 1)
doRemoveItem(getItemStack(tile2, fields[2]).uid, 1)
else
doRemoveItem(getItemStack(tile1, fields[2]).uid, 1)
doRemoveItem(getItemStack(tile2, fields[1]).uid, 1)
end
addEvent(function()
doCreateItem(statue, 1, statue_Of_Position)
doRemoveItem(getItemStack(go_Backward, statue).uid, 1)
end, tempo*1000)
end
end
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

 

Link para o comentário
Compartilhar em outros sites

  • 0

 

Perfeito, porém, tem como voce fazer para aparecer uma mensagem branca na tela quando entrar no tp? rep+ ja

 

 

Aqui duuh, vai manda a msg quando entrar no tp:

Movement:

.lua

-- Do not remove the credits --
-- [MOVEMENT] Secret Teleport --
-- Developed by Rigby (João Vitor) --
 
    local fields = {1492, 1495} -- id do fire field e energy field
    local tile1 = {x = 1066, y = 1020, z = 7, stackpos= 1} -- Posição do tile 1
    local tile2 = {x = 1068, y = 1020, z = 7, stackpos= 1} -- Posição do tile 2
    local statue_Of_Position = {x = 1067, y = 1020, z = 7} -- posição onde fica a estátua, que ira aparecer o teleport
    local teleport = {x = 1066, y = 1020, z = 7} -- posição da onde o player vai quando entrar no teleport
    local go_Backward = {x = 1067, y = 1019, z = 7} -- Posição para aonde a estátua vai
    local statue = 3697 -- id da estátua
    local tempo = 5 -- tempo em segundos que o teleporte ficara aberto
 
function onAddItem(cid, moveitem, tileitem, position)
    local pos1 = getThingfromPos(tile1)
    local pos2 = getThingfromPos(tile2)
    if (pos1.itemid == fields[1] and pos2.itemid == fields[2]) or (pos1.itemid == fields[2] and pos2.itemid == fields[1]) then
        if getItemStack(statue_Of_Position, statue) then
            doRemoveItem(getItemStack(statue_Of_Position, statue).uid, 1)
            local teleport = doCreateItem(1387, 1, statue_Of_Position)
            doItemSetAttribute(teleport, "aid", 5555) -- actionid
            doCreateItem(statue, 1, go_Backward)
            if getItemStack(tile1, fields[1]) then
                doRemoveItem(getItemStack(tile1, fields[1]).uid, 1)
                doRemoveItem(getItemStack(tile2, fields[2]).uid, 1)
            else
                doRemoveItem(getItemStack(tile1, fields[2]).uid, 1)
                doRemoveItem(getItemStack(tile2, fields[1]).uid, 1)
            end
            addEvent(function()
                doCreateItem(statue, 1, statue_Of_Position)
                doRemoveItem(getItemStack(statue_Of_Position, 1387).uid, 1)
                doRemoveItem(getItemStack(go_Backward, statue).uid, 1)
            end, tempo*1000)
        end
    end
    if getItemStack(go_Backward, statue) then
            if getItemStack(tile1, fields[1]) then
                doRemoveItem(getItemStack(tile1, fields[1]).uid, 1)
            elseif getItemStack(tile1, fields[2]) then
                doRemoveItem(getItemStack(tile1, fields[2]).uid, 1)
            elseif getItemStack(tile2, fields[1]) then
                doRemoveItem(getItemStack(tile2, fields[1]).uid, 1)
            elseif getItemStack(tile2, fields[2]) then
                doRemoveItem(getItemStack(tile2, fields[2]).uid, 1)
            end
        end 
end
 
function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Bem vindo.")
    doTeleportThing(cid, teleport)
    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

.xml, tag

<movevent type="AddItem" tileitem="1" actionid="13501" event="script" value="Nomedoscript.lua"/>
<movevent type="StepIn" actionid="5555" event="script" value="Nomedoscript.lua"/>

Ola, eu tava vendo o 2º script que o RigBy postou, clicando em item ainda, teria como fazer assim:

Quando o player entrar no "TP", a estátua ja voltar para o lugar, para ninguém poder seguir ele?

Edita nesse aqui se puder:

 

 

pronto ai:

 

 

 

Action:

.lua

-- Do not remove the credits --
-- [ACTION] Secret Teleport --
-- Developed by Rigby (João Vitor) --
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
    local fields = {1492, 1495} -- id do fire field e energy field
    local tile1 = {x = 1066, y = 1020, z = 7, stackpos= 1} -- Posição do tile 1
    local tile2 = {x = 1068, y = 1020, z = 7, stackpos= 1} -- Posição do tile 2
    local statue_Of_Position = {x = 1067, y = 1020, z = 7} -- posição onde fica a estátua, que ira aparecer o teleport
    local teleport = {x = 1066, y = 1020, z = 7} -- posição da onde o player vai quando entrar no teleport
    local go_Backward = {x = 1067, y = 1019, z = 7} -- Posição para aonde a estátua vai
    local statue = 3697 -- id da estátua
    local tempo = 5 -- tempo em segundos que o teleporte ficara aberto
 
    local pos1 = getThingfromPos(tile1)
    local pos2 = getThingfromPos(tile2)
    if (pos1.itemid == fields[1] and pos2.itemid == fields[2]) or (pos1.itemid == fields[2] and pos2.itemid == fields[1]) then
        if getItemStack(statue_Of_Position, statue) then
            doRemoveItem(getItemStack(statue_Of_Position, statue).uid, 1)
            doCreateItem(statue, 1, go_Backward)
            local teleport = doCreateItem(1387, 1, statue_Of_Position)
            doItemSetAttribute(teleport, "aid", 5555) -- actionid
            if getItemStack(tile1, fields[1]) then
                doRemoveItem(getItemStack(tile1, fields[1]).uid, 1)
                doRemoveItem(getItemStack(tile2, fields[2]).uid, 1)
            else
                doRemoveItem(getItemStack(tile1, fields[2]).uid, 1)
                doRemoveItem(getItemStack(tile2, fields[1]).uid, 1)
            end
            addEvent(function()
                if getItemStack(go_Backward, statue) then
                    doCreateItem(statue, 1, statue_Of_Position)
                    doRemoveItem(getItemStack(statue_Of_Position, 1387).uid, 1)
                    doRemoveItem(getItemStack(go_Backward, statue).uid, 1)
                end
            end, tempo*1000)
        end
    end
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
xml, tag
<action actionid="6567" event="script" value="Nomedoscript.lua"/>
so basta coloca o actionid 6567 na alavanca
e para que quando o player entrar a estatua volte, va em movement
Movement
.lua
function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Bem vindo.")
    doTeleportThing(cid, teleport)
    doCreateItem(statue, 1, statue_Of_Position)
    doRemoveItem(getItemStack(statue_Of_Position, 1387).uid, 1)
    doRemoveItem(getItemStack(go_Backward, statue).uid, 1)
return true
end
xml, tag
<movevent type="StepIn" actionid="5555" event="script" value="Nomedoscript.lua"/>
se você muda o actionid do movement tera que alterar la no action também.
pronto hi.gif

 

 

Ultima duvida, por exemplo tanto faz se tiver fire field na direita ou na esquerda neh?

 

Sim, eu coloquei para funcionar tanto da direita para esquerda ou esquerda para direita.

#Foi tudo resolvido, se quiser mais algo crie um tópico fazendo seu pedido.

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

  • 0

 

Aqui duuh, vai manda a msg quando entrar no tp:

Movement:

.lua

-- Do not remove the credits --
-- [MOVEMENT] Secret Teleport --
-- Developed by Rigby (João Vitor) --
 
    local fields = {1492, 1495} -- id do fire field e energy field
    local tile1 = {x = 1066, y = 1020, z = 7, stackpos= 1} -- Posição do tile 1
    local tile2 = {x = 1068, y = 1020, z = 7, stackpos= 1} -- Posição do tile 2
    local statue_Of_Position = {x = 1067, y = 1020, z = 7} -- posição onde fica a estátua, que ira aparecer o teleport
    local teleport = {x = 1066, y = 1020, z = 7} -- posição da onde o player vai quando entrar no teleport
    local go_Backward = {x = 1067, y = 1019, z = 7} -- Posição para aonde a estátua vai
    local statue = 3697 -- id da estátua
    local tempo = 5 -- tempo em segundos que o teleporte ficara aberto
 
function onAddItem(cid, moveitem, tileitem, position)
    local pos1 = getThingfromPos(tile1)
    local pos2 = getThingfromPos(tile2)
    if (pos1.itemid == fields[1] and pos2.itemid == fields[2]) or (pos1.itemid == fields[2] and pos2.itemid == fields[1]) then
        if getItemStack(statue_Of_Position, statue) then
            doRemoveItem(getItemStack(statue_Of_Position, statue).uid, 1)
            local teleport = doCreateItem(1387, 1, statue_Of_Position)
            doItemSetAttribute(teleport, "aid", 5555) -- actionid
            doCreateItem(statue, 1, go_Backward)
            if getItemStack(tile1, fields[1]) then
                doRemoveItem(getItemStack(tile1, fields[1]).uid, 1)
                doRemoveItem(getItemStack(tile2, fields[2]).uid, 1)
            else
                doRemoveItem(getItemStack(tile1, fields[2]).uid, 1)
                doRemoveItem(getItemStack(tile2, fields[1]).uid, 1)
            end
            addEvent(function()
                doCreateItem(statue, 1, statue_Of_Position)
                doRemoveItem(getItemStack(statue_Of_Position, 1387).uid, 1)
                doRemoveItem(getItemStack(go_Backward, statue).uid, 1)
            end, tempo*1000)
        end
    end
    if getItemStack(go_Backward, statue) then
            if getItemStack(tile1, fields[1]) then
                doRemoveItem(getItemStack(tile1, fields[1]).uid, 1)
            elseif getItemStack(tile1, fields[2]) then
                doRemoveItem(getItemStack(tile1, fields[2]).uid, 1)
            elseif getItemStack(tile2, fields[1]) then
                doRemoveItem(getItemStack(tile2, fields[1]).uid, 1)
            elseif getItemStack(tile2, fields[2]) then
                doRemoveItem(getItemStack(tile2, fields[2]).uid, 1)
            end
        end 
end
 
function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Bem vindo.")
    doTeleportThing(cid, teleport)
    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

.xml, tag

<movevent type="AddItem" tileitem="1" actionid="13501" event="script" value="Nomedoscript.lua"/>
<movevent type="StepIn" actionid="5555" event="script" value="Nomedoscript.lua"/>

 

pronto ai:

 

 

 

Action:

.lua

-- Do not remove the credits --
-- [ACTION] Secret Teleport --
-- Developed by Rigby (João Vitor) --
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
    local fields = {1492, 1495} -- id do fire field e energy field
    local tile1 = {x = 1066, y = 1020, z = 7, stackpos= 1} -- Posição do tile 1
    local tile2 = {x = 1068, y = 1020, z = 7, stackpos= 1} -- Posição do tile 2
    local statue_Of_Position = {x = 1067, y = 1020, z = 7} -- posição onde fica a estátua, que ira aparecer o teleport
    local teleport = {x = 1066, y = 1020, z = 7} -- posição da onde o player vai quando entrar no teleport
    local go_Backward = {x = 1067, y = 1019, z = 7} -- Posição para aonde a estátua vai
    local statue = 3697 -- id da estátua
    local tempo = 5 -- tempo em segundos que o teleporte ficara aberto
 
    local pos1 = getThingfromPos(tile1)
    local pos2 = getThingfromPos(tile2)
    if (pos1.itemid == fields[1] and pos2.itemid == fields[2]) or (pos1.itemid == fields[2] and pos2.itemid == fields[1]) then
        if getItemStack(statue_Of_Position, statue) then
            doRemoveItem(getItemStack(statue_Of_Position, statue).uid, 1)
            doCreateItem(statue, 1, go_Backward)
            local teleport = doCreateItem(1387, 1, statue_Of_Position)
            doItemSetAttribute(teleport, "aid", 5555) -- actionid
            if getItemStack(tile1, fields[1]) then
                doRemoveItem(getItemStack(tile1, fields[1]).uid, 1)
                doRemoveItem(getItemStack(tile2, fields[2]).uid, 1)
            else
                doRemoveItem(getItemStack(tile1, fields[2]).uid, 1)
                doRemoveItem(getItemStack(tile2, fields[1]).uid, 1)
            end
            addEvent(function()
                if getItemStack(go_Backward, statue) then
                    doCreateItem(statue, 1, statue_Of_Position)
                    doRemoveItem(getItemStack(statue_Of_Position, 1387).uid, 1)
                    doRemoveItem(getItemStack(go_Backward, statue).uid, 1)
                end
            end, tempo*1000)
        end
    end
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
xml, tag
<action actionid="6567" event="script" value="Nomedoscript.lua"/>
so basta coloca o actionid 6567 na alavanca
e para que quando o player entrar a estatua volte, va em movement
Movement
.lua
function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Bem vindo.")
    doTeleportThing(cid, teleport)
    doCreateItem(statue, 1, statue_Of_Position)
    doRemoveItem(getItemStack(statue_Of_Position, 1387).uid, 1)
    doRemoveItem(getItemStack(go_Backward, statue).uid, 1)
return true
end
xml, tag
<movevent type="StepIn" actionid="5555" event="script" value="Nomedoscript.lua"/>
se você muda o actionid do movement tera que alterar la no action também.
pronto hi.gif

 

 

 

Sim, eu coloquei para funcionar tanto da direita para esquerda ou esquerda para direita.

#Foi tudo resolvido, se quiser mais algo crie um tópico fazendo seu pedido.

Cara, eu coloquei a estátua no mapa certinho, coloquei ActionID 6567 nela, coloquei a verdadeira position dela e dos fields do meu mapa, mas quando que taco os fields, a estátua não vai pra trás, e não da pra teleportar obviamente.

 

Não aparece nenhum erro no distrô nem nada, NADA, ai vai um print:

 

no8rdg.png

 

 

Por favor me ajuda cara!

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, eu coloquei a estátua no mapa certinho, coloquei ActionID 6567 nela, coloquei a verdadeira position dela e dos fields do meu mapa, mas quando que taco os fields, a estátua não vai pra trás, e não da pra teleportar obviamente.

 

Não aparece nenhum erro no distrô nem nada, NADA, ai vai um print:

 

no8rdg.png

 

 

Por favor me ajuda cara!

 

 

ue se você coloco o actionid na estatua, clica nela!

Link para o comentário
Compartilhar em outros sites

  • 0

 

 

ue se você coloco o actionid na estatua, clica nela!

C ta brincando q eh só clicar ne!? dry.pngdry.pngdry.pngdry.pngdry.pngdry.pngdry.pngdry.pngicon_rimkuk2.gif

 

 

 

EDIT: Fire Field na esquerda e Energy Field na direita, não funciona.

 

Quando eu taco fire na direita e energy na esquerda, funciona, mas ao entrar no portal, eu não sou teleportado pra nenhum lugar e ao entrar nesse portal, também aparece um erro no distrô, olha ai:

 

[Error - MoveEvents Interface]

data/movements/scripts/statueback.lua:onStepIn

Description:

attempt to index a nil value

stack traceback:

[C]: in function 'doTeleportThing'

data/movements/scripts/statueback.lua:3: in function (data/movements/scripts/statueback.lua:1)

 

Aqui o script statueback.lua no movements:

 

 

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Bem vindo.")
doTeleportThing(cid, teleport)
doCreateItem(statue, 1, statue_Of_Position)
doRemoveItem(getItemStack(statue_Of_Position, 1387).uid, 1)
doRemoveItem(getItemStack(go_Backward, statue).uid, 1)
return true
end

Ah, e eu só consigo fazer a passagem secreta aparecer 1 vez, quando eu taco os fields denovo e clico na statue, não aparece outro erro no distrô mas também a statue não sai do lugar, fields não somem..
Editado por jvcasarin
Link para o comentário
Compartilhar em outros sites

  • 0

Tinha esquecido de coloca uns negocio mas ta aqui.

 

Substitui o statueback por esse, não esqueça de configurar.

-- Do not remove the credits --
-- [MOVEMENT] Secret Teleport --
-- Developed by Rigby (João Vitor) --
 
    local fields = {1492, 1495} -- id do fire field e energy field
    local tile1 = {x = 1066, y = 1020, z = 7, stackpos= 1} -- Posição do tile 1
    local tile2 = {x = 1068, y = 1020, z = 7, stackpos= 1} -- Posição do tile 2
    local statue_Of_Position = {x = 1067, y = 1020, z = 7} -- posição onde fica a estátua, que ira aparecer o teleport
    local teleport = {x = 1066, y = 1020, z = 7} -- posição da onde o player vai quando entrar no teleport
    local go_Backward = {x = 1067, y = 1019, z = 7} -- Posição para aonde a estátua vai
    local statue = 3697 -- id da estátua
 
function onAddItem(cid, moveitem, tileitem, position)
    if getItemStack(go_Backward, statue) then
        if getItemStack(tile1, fields[1]) then
            doRemoveItem(getItemStack(tile1, fields[1]).uid, 1)
        elseif getItemStack(tile1, fields[2]) then
            doRemoveItem(getItemStack(tile1, fields[2]).uid, 1)
        elseif getItemStack(tile2, fields[1]) then
            doRemoveItem(getItemStack(tile2, fields[1]).uid, 1)
        elseif getItemStack(tile2, fields[2]) then
            doRemoveItem(getItemStack(tile2, fields[2]).uid, 1)
        end
    end 
end
 
function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Bem vindo.")
doTeleportThing(cid, teleport)
doCreateItem(statue, 1, statue_Of_Position)
    doRemoveItem(getItemStack(statue_Of_Position, 1387).uid, 1)
    doRemoveItem(getItemStack(go_Backward, statue).uid, 1)
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
e usa essa duas tag's
<movevent type="AddItem" tileitem="1" actionid="13501" event="script" value="statueback.lua"/>
<movevent type="StepIn" actionid="5555" event="script" value="statueback.lua"/>
Link para o comentário
Compartilhar em outros sites

  • 0

 

Tinha esquecido de coloca uns negocio mas ta aqui.

 

Substitui o statueback por esse, não esqueça de configurar.

-- Do not remove the credits --
-- [MOVEMENT] Secret Teleport --
-- Developed by Rigby (João Vitor) --
 
    local fields = {1492, 1495} -- id do fire field e energy field
    local tile1 = {x = 1066, y = 1020, z = 7, stackpos= 1} -- Posição do tile 1
    local tile2 = {x = 1068, y = 1020, z = 7, stackpos= 1} -- Posição do tile 2
    local statue_Of_Position = {x = 1067, y = 1020, z = 7} -- posição onde fica a estátua, que ira aparecer o teleport
    local teleport = {x = 1066, y = 1020, z = 7} -- posição da onde o player vai quando entrar no teleport
    local go_Backward = {x = 1067, y = 1019, z = 7} -- Posição para aonde a estátua vai
    local statue = 3697 -- id da estátua
 
function onAddItem(cid, moveitem, tileitem, position)
    if getItemStack(go_Backward, statue) then
        if getItemStack(tile1, fields[1]) then
            doRemoveItem(getItemStack(tile1, fields[1]).uid, 1)
        elseif getItemStack(tile1, fields[2]) then
            doRemoveItem(getItemStack(tile1, fields[2]).uid, 1)
        elseif getItemStack(tile2, fields[1]) then
            doRemoveItem(getItemStack(tile2, fields[1]).uid, 1)
        elseif getItemStack(tile2, fields[2]) then
            doRemoveItem(getItemStack(tile2, fields[2]).uid, 1)
        end
    end 
end
 
function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Bem vindo.")
doTeleportThing(cid, teleport)
doCreateItem(statue, 1, statue_Of_Position)
    doRemoveItem(getItemStack(statue_Of_Position, 1387).uid, 1)
    doRemoveItem(getItemStack(go_Backward, statue).uid, 1)
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
e usa essa duas tag's
<movevent type="AddItem" tileitem="1" actionid="13501" event="script" value="statueback.lua"/>
<movevent type="StepIn" actionid="5555" event="script" value="statueback.lua"/>

 

 

Agora ta funcionando "normal", mas ainda tem um problema.

 

Eu uso essa passagem secreta 1 vez e beleza, quando eu vou usar dnv, eu clico na estátua não acontece nada e aparece a mensagem "You cannot use this object."

 

 

Ajuda ae plz

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...