Sistema de mergulho (Com fotos)
Estava eu boiando em casa e resolvi fuçar um pouco em script e como meu primeiro script resolvi fazer um sistema de mergulho.
Irei passar os scripts baseados em movements, há 2 scripts, um para mergulhar e outro para emergir (subir).
Testei uma versão modificada desse script no meu ot (Alissow 0.3.9. [Versão do tibia: 8.54])
1º) Script para mergulhar.
function onStepIn(cid, item, pos) lot1 = getPlayerSlotItem(cid, 1) if (lot1.itemid == 5461) then pos1 = {x=x, y=y, z=z} new = {x=x, y=y, z=z} doTeleportThing(cid, new, FALSE) doSendMagicEffect(pos1, 53) doSendMagicEffect(new, 25) else doPlayerSendCancel(cid,"Sorry, not possible. You don't have the requested item.") end return 1 end
Verde - Local onde irá ser checado o item, no caso, slot 1 é o local do helmet.
Vermelho - Id do item que precisa-se ter (5461 no caso é o helmet of the deep).
Laranja - Coordenadas do local onde irá aparecer o efeito de mergulho.
Azul - Número do efeito de mergulho (pode mudar do jeito que você desejar, mas na minha opinião ficou bom o efeito assim).
Rosa - Número do efeito que vai aparecer onde você fui transportado.
Efeito 53 (Será mostrado nas coordenadas que você colocou na pos1)
Efeito 25 (Será mostrado nas coordenadas da onde você vai parar, no caso new)
2º) Script para emergir.
Mesma coisa que no 1º, crie na pasta: data/movements/scripts um arquivo .lua com o nome que você quiser e cole esse código lá.
function onStepIn(cid, item, pos) lot1 = getPlayerSlotItem(cid, 1) if (lot1.itemid == 5461) then pos = getPlayerPosition(cid) new = {x=x, y=y, z=z} doTeleportThing(cid, new, FALSE) doSendMagicEffect(pos, 25) else doPlayerSendCancel(cid,"Sorry, not possible. You don't have the requested item.") end return 1 end
Verde - Local onde irá ser checado o item, no caso, slot 1 é o local do helmet.
Vermelho - Id do item que precisa-se ter (5461 no caso é o helmet of the deep).
Laranja - Comando que pega sua posição, no caso antes de ser teleportado, utilizado para mostrar o efeito de bolhas.
Roxo - Coordenadas do local para onde o player irá ser teleportado.
3º) Adicionar no arquivos data/movements/movements.xml
<movevent type="StepIn" actionid="10001" event="script" value="nomemergulhar.lua"/> <movevent type="StepIn" actionid="10002" event="script" value="nomeemergir.lua"/>
Vermelho - Nome que você colocou no 2º script, no caso o de emergir.
4º) Configurando os titles no MapEditor
1 - Abra seu mapa editor e escolha o title que você quer que ao pisar e ter o helmet of the deep o player seja teleportado pra área underwater.
2 - Clique com o botão direito em cima do title e vá em propriedades ou properties.

3 - Em propriedades, você vai mudar o nº da ActionId, como coloquei ali em cima, no title para mergulhar o ActionId é 10001.

4 - Já no andar de baixo você faz a mesma coisa que no de cima, só que em vez de por o ActionId 10001 que é o pra mergulhar, você vai por o 10002 que é para emergir.

Créditos: 90% para mim (sir navega)
10% pros criadores dos tutoriais que li aqui no fórum
Essa é o meu primeiro script, então não sei arrumar muito bem os erros (

Tem um jeito mais geral para colocar em todas as caves underwater o mesmo actionid, mas para isso você teria que fazer as caves em baixo do lugar onde você vai entrar nela. Além de ser mais simples o jeito que ensinei ali (eu acho).