Bom gente, vamos com a historinha que eu fiz com a Quest, e ao termino iremos ao Script.
Depois de dias e dias de jornadas, o nosso herói aloja-se em uma casinha na floresta para
proteger-se da Chuva.
Percebeu que alí morava ninguém, então decidiu acender as tochas para aquecer ao local.
Logo depois começara a procurar algum agasalho para ir dormir.
Empurrando as caixas à procura do agasalho, ele acabou achando uma alavanca.
Então para ver no que daria, "juntou" a coragem e puxou-a, percebeu que uma passagem
acabou abrindo-se.
Notou que havia um baú dentro da salinha recém descoberta...
(...) ,muito curioso, entrou para abrir o baú, porém a passagem fechou-se.
Ao abrir o baú, ele achou um tesouro escondido, e no mesmo momento foi expulso da sala.
FIM
Vamos ao Script agora.
O mapa que usei foi esse:

-
Função: A pessoa acende todas as tochas, e puxa a alavanca (embaixo do crate). Ao puxar, as tochas irão apagar-se, e a parede sumir. Quando entrar no SQM sul do baú, a parede fechará-se novamente. Ao abrir o baú a pessoa irá receber o prêmio e ser teleportada para fora da salinha.
data/actions/actions.xml
<action uniqueid="4066" script="bau.lua" /><action uniqueid="4065" script="alavanca.lua" />
Legenda:
█ - UniqueID usado no baú e na alavanca.
data/actions/script/bau.lua
function onUse(cid, item, frompos, item2, topos)
local pos1 = {x=229, y=32, z=7}
doTeleportThing(cid, pos1)
doSendMagicEffect(topos,12)
if item.uid == 4066 then
queststatus = getPlayerStorageValue(cid,4066)
if queststatus == -1 then
doPlayerSendTextMessage(cid,24,"You have found a Crown Armor.")
doPlayerAddItem(cid,2487,1)
setPlayerStorageValue(cid,4066,1)
else
doPlayerSendTextMessage(cid,24,"It is empty.")
end
else
return 0
end
return 1
end
Legenda:
█ - Coordenada para onde o player vai ser teleportado quando abrir o baú.
█ - UniqueID usado no baú.
█ - Storage Value.
█ - Mensagem recebida ao abrir o baú.
█ - ID do item que o player irá receber ao abrir o báu.
data/actions/script/alavanca.lua
function onUse(cid, item, pos)
pos1 = { x=228, y=31, z=7, stackpos=3}
pos1 = getThingfromPos(pos1)
pos2 = { x=231, y=31, z=7, stackpos=3}
pos2 = getThingfromPos(pos2)
pos3 = { x=233, y=31, z=7, stackpos=3}
pos3 = getThingfromPos(pos3)
pos4 = { x=235, y=31, z=7, stackpos=3}
pos4 = getThingfromPos(pos4)
pos5 = { x=229, y=31, z=7, stackpos=1}
pos5 = getThingfromPos(pos5)
if pos1.itemid == 2059 and pos2.itemid == 2059 and pos3.itemid == 2059 and pos4.itemid == 2059 then
doTransformItem(pos1.uid, 2058)
doTransformItem(pos2.uid, 2058)
doTransformItem(pos3.uid, 2058)
doTransformItem(pos4.uid, 2058)
doRemoveItem(pos5.uid, 1)
end
if (item.itemid == 1945) then
doTransformItem(item.uid, 1946)
else
doTransformItem(item.uid, 1945)
end
return 1
end
Legenda:
█ - Coordenadas das tochas.
█ - Coordenada da parede que irá sumir ao puxar a alavanca.
PS.1: O stackpos das tochas podem variar, se estiver dando problema de ItemNotFound tente usar o stackpos 2, depende de como é o local feito.
Como podem ver, no script só há 4 tochas, porém que quiser adicionar mais você terá que seguir esta ordem:
function onUse(cid, item, pos)
pos1 = { x=228, y=31, z=7, stackpos=3}
pos1 = getThingfromPos(pos1)
pos2 = { x=231, y=31, z=7, stackpos=3}
pos2 = getThingfromPos(pos2)
pos3 = { x=233, y=31, z=7, stackpos=3}
pos3 = getThingfromPos(pos3)
pos4 = { x=235, y=31, z=7, stackpos=3}
pos4 = getThingfromPos(pos4)
pos5 = { x=229, y=31, z=7, stackpos=1}
pos5 = getThingfromPos(pos5)
pos6 = { x=235, y=31, z=7, stackpos=3}
pos6 = getThingfromPos(pos6)
if pos1.itemid == 2059 and pos2.itemid == 2059 and pos3.itemid == 2059 and pos4.itemid == 2059 and pos6.itemid == 2059 then
doTransformItem(pos1.uid, 2058)
doTransformItem(pos2.uid, 2058)
doTransformItem(pos3.uid, 2058)
doTransformItem(pos4.uid, 2058)
doTransformItem(pos6.uid, 2058)
doRemoveItem(pos5.uid, 1)
end
if (item.itemid == 1945) then
doTransformItem(item.uid, 1946)
else
doTransformItem(item.uid, 1945)
end
return 1
end
Legenda:
█ - Tag adicionada.
data/movements/movements.xml
<movevent event="StepIn" actionid="4067" script="parede.lua" />
Legenda:
█ - ActionID usado no chão para fazer a parede fechar-se.
data/movements/scripts/parede.lua
function onStepIn(cid, item, pos)
pos = { x=229, y=31, z=7, stackpos=1}
wall = getThingfromPos(pos)
doCreateItem(1026,1,pos)
return 1
end
Legenda:
█ - Coordenada de onde fica a parede que vai ser criada.
█ - ID da parede.
-
Onde colocar o ActionID e os UniqueIDs:

-
Vídeo do Youtube:
44 segundos de vídeo.
PS.2: Qualquer dúvida ou problemas observados avisem aqui, por favor.
Créditos: Koninho (por ter feito) e pdzinhow (por ter dado a idéia).
COMENTEM, POR FAVOR!
Koninhoo~
Legenda:
█ - UniqueID na alavanca (ela está em baixo do crate), alavanca.lua.
█ - ActionID da parede, parede.lua.
█ - UniqueID no baú, bau.lua.