SO

[Resolvido] Script Para Porta De Quest

Por Sofft, 19 de abr. de 2012 em Scripts

porta
zao
nova
storage
otserv
tibia
script
14
6.3k
SofftS
19 de abril de 2012 às 17:20

Tipo do script: Script para fazer uma porta de quest.

Protocolo (versão do Tibia): 8.60

Servidor utilizado: Global

Nível de experiência: Alta

 

Galera do Xtibia estou precisando do seguinte script:

 

Uma porta fechada (ID:12165), ao clicar vira uma porta aberta (ID:12166), e o player vai passar por ela, assim que ele passar a porta fecha, isso se o player tiver certo storage, como porta de quest mesmo, só que essas portas que estou utilizando são aquelas de zao, e não tem essa pré configuração.

Makelin1M
19 de abril de 2012 às 17:39

amigo isso e com script de so um certo level passa por la aki esse script por exemplo

function onUse(cid,item,frompos,item2,topos)

level = item.actionid-1000 ---- decidde aki o lvl que pode passar pela portal

 

if getPlayerLevel(cid) >= level then

doTransformItem(item.uid,item.itemid+1)

doTeleportThing(cid,topos)

 

else

doPlayerSendTextMessage(cid, 22, 'You need level ' .. level .. ' to pass this door.')

 

function offWalk(cid,item,itemuid,itemaid,posx,posy,posz)

 

---ID do chão que fica embaixo da porta

idtile = 407

 

---Não mexa aqui

posix = topos.x

posiy = topos.y

posiz = topos.z

 

if item == idtile and posx == posix and posy == posiy and posz == posiz then

doPlayerSendTextMessage(cid, 22, 'Parabens Você Tem Level Suficiente para passar pela porta.')

doTransformItem(item.uid,item.itemid-1)

 

return 1

end

end

end

end

SofftS
19 de abril de 2012 às 17:41

@Smartbox, testando e jaja edito...

 

configurei o script da seguinte forma:

function onUse(cid,item,frompos,item2,topos)
level = 10 ---- decidde aki o lvl que pode passar pela portal
if getPlayerLevel(cid) >= level then
doTransformItem(item.uid,item.itemid+1)
doTeleportThing(cid,topos)
else
doPlayerSendTextMessage(cid, 22, 'You need level ' .. level .. ' to pass this door.')
function offWalk(cid,item,itemuid,itemaid,posx,posy,posz)
---ID do chão que fica embaixo da porta
idtile = 11906
---Não mexa aqui
posix = topos.x
posiy = topos.y
posiz = topos.z
if item == idtile and posx == posix and posy == posiy and posz == posiz then
doPlayerSendTextMessage(cid, 22, 'Parabens Você Tem Level Suficiente para passar pela porta.')
doTransformItem(item.uid,item.itemid-1)
return 1
end
end
end
end

e minha tag ficou assim:

<action actionid="9835" event="script" value="zaodoor.lua"/>

 

a porta está abrindo só que não volta ao normal, por favor ajude-me.

Editado Abril 19 por Sofft

Makelin1M
19 de abril de 2012 às 17:49

oks se funfa avisa ai ! vlw

SofftS
19 de abril de 2012 às 18:07

Opa vê ai, atualizei la em cima.

Makelin1M
19 de abril de 2012 às 18:16

como assim nao volta ? ela continua aberta ??

 

entao faza isso ... vai no rme e poem essa id na porta

 

1100 assim so lvl 100 vao poder entrar se qerer botar outro level poem assim ... 1.e poem o lvl qe vc qer no lado do 1 sem o ponto

VildenV
19 de abril de 2012 às 18:26

Smartbox leia o tópico, ele não quer uma porta de level, e sim uma porta de storage.

sendo que ao clica ele vai pra cima dela e ao sair a porta fecha.

SofftS
19 de abril de 2012 às 18:28

@Smartbox, isso ai não vai resolver, eu entendi o que você quis fazer mas não vai fazer diferença.

VildenV
19 de abril de 2012 às 18:31

function onUse(cid, item, frompos, item2, topos)

 

local storage = 9312

 

if getPlayerStorageValue(cid,storage) >= 1 then

doTransformItem(item.uid,item.itemid+1)

doTeleportThing(cid,topos)

else

doPlayerSendTextMessage(cid, 22, 'Você não tem permissão para passar aqui.')

 

function offWalk(cid,item,itemuid,itemaid,posx,posy,posz)

 

idtile = 407

 

posix = topos.x

posiy = topos.y

posiz = topos.z

 

if item == idtile and posx == posix and posy == posiy and posz == posiz then

doTransformItem(item.uid,item.itemid-1)

 

return 1

end

end

end

end

 

Não testei

Editado Abril 19 por Vilden

jhon992J
19 de abril de 2012 às 18:38

Faiz assim, quem sabe resolve o seu problema:

function onUse(cid, item, frompos, item2, topos)

local storage = 304392 -- coloque o storage aqui


if getPlayerStorageValue(cid, storage) > 0 then
doTeleportThing(cid, topos)
doSendMagicEffect(topos, 10)
else
doPlayerSendTextMessage(cid, 22, "Você não possui o storage para entrar na porta!")
end

return TRUE
end

 

#Edited - Nem vi que vc postou @Vilden, malz aew.

Editado Abril 19 por Jhon992

SofftS
19 de abril de 2012 às 18:39

@Vilden,

eu fiz um aqui com storage tomando o do @Smartbox

como exemplo:

 

function onUse(cid,item,frompos,item2,topos)
local storage = 12345if getPlayerStorageValue(cid, storage) == -1 then
doTransformItem(item.uid,item.itemid+1)
doTeleportThing(cid,topos)
else
doPlayerSendTextMessage(cid, 22, 'You have no acess')
function offWalk(cid,item,itemuid,itemaid,posx,posy,posz)---ID do chão que fica embaixo da porta
idtile = 11906
---Não mexa aqui
posix = topos.x
posiy = topos.y
posiz = topos.zif posx == posix and posy == posiy and posz == posiz then
doPlayerSendTextMessage(cid, 22, 'Welcome')
doTransformItem(item.uid,item.itemid-1)
return 1
end
end
end
end

mas acontece a mesma coisa, e testei o seu script também, a mesma coisa.

a porta não fecha, eu estou ponto o ID do tile abaixo da porta, e esse mesmo né?

 

@Jhon992, sim esse script é funcional, porem é "FEIO", queria uma porta mais certinha mas de qualquer forma valeu!

Editado Abril 19 por Sofft

VildenV
19 de abril de 2012 às 18:52

Bom se quiser ainda, você pode usa o script q não fecha a porta e coloca

isso em movements.

 

function onStepOut(cid, item, position, fromPosition)

 

--cola mesmo storage que o da porta

local storage = 9312

 

if getPlayerStorageValue(cid,storage) >= 1 then

doTransformItem(item.uid,item.itemid-1)

end

end

 

 

 

Tag:

<movevent type="StepOut" actionid="9312" event="script" value="nome.lua"/>

 

bota actionid 9312 na porta ou no tile abaixo da porta

Editado Abril 19 por Vilden

SofftS
19 de abril de 2012 às 19:13

@Vilden,@Smartbox,

Muito Obrigado, consegui configurar perfeitamente, então vou postar aqui a solução que funcionou para mim, talvez sirva para outra pessoa.

 

Actions:

tag

<action actionid="ACTION" event="script" value="door.lua"/>

 

door.lua

function onUse(cid,item,frompos,item2,topos)

local storage = STORAGE

if getPlayerStorageValue(cid, storage) >= 1 then
   doTransformItem(item.uid,item.itemid+1)
   doTeleportThing(cid,topos)
else
   doPlayerSendTextMessage(cid, 22, 'You have no acess')
return 1
end
end

 

 

 

Movements:

tag

<movevent type="StepOut" actionid="ACTION" event="script" value="door.lua"/>

 

door.lua

function onStepOut(cid, item, position, fromPosition)
doTransformItem(item.uid,item.itemid-1)
end

 

Abra o seu map editor, e coloque uma ActionID em uma porta fechada qualquer (veja se o item seguinte é a porta aberta, ex IDfechado = 210 IDaberto = 211)

Após colocar esse action id na porta substitua nos script ACTION pelo actionsID colocado na porta, e em STORAGE coloque um storage qualquer.

 

Créditos:

Vilden e Smartbox.

Editado Abril 19 por Sofft

VildenV
19 de abril de 2012 às 19:30

Dúvida sanada, Tópico fechado.