MA

Quests.

Por maximusot, 31 de mar. de 2008 em Tutoriais de Scripting

otserv
tibia
script
1.0 (2)
27
6.6k
31 de março de 2008 às 01:08

PROIBIDO POSTAR EM OUTRO LUGAR TOPICO EXCLUSIVO AO XTIBIA

créditos: 100% meus

 

 

Bom vamos começar o tutorial, aqui explicarei como fazer algumas quests então vamos lá!

 

1° Abra seu map editor, faça um lugar onde vai ficar o baú ou se quiser use um lugar já existente.

2° Coloque o baú ou qualquer outra coisa que quando o player der use pegue o item.

3° Clique com o botão direito no baú ou qualquer outro item que você tenha colocado lá e vá em propriedades, depois coloque no unique id um numero que ainda não esteja sendo usado no ot. (dica: coloque um numero entre 8000 e 9999 por que geralmente ainda não estão sendo usados)

 

Algumas ss de como colocar unique id nos itens

ssol1.th.jpg

ss1ig3.th.jpg

 

 

agora vamos aos scripts e as explicações.

essa é como fazer uma quest que de mais de um item.

(CLIQUE NO SPOIL)

--By ADM Leo Leonardo Caetano

 

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

 

if item.uid == 8500 then

queststatus = getPlayerStorageValue(cid,8500)

if queststatus == -1 then

doPlayerSendTextMessage(cid,22,"Você achou um Blessed Shield!.")

doPlayerAddItem(cid,2523,1)

setPlayerStorageValue(cid,8500,1)

else

doPlayerSendTextMessage(cid,22,"Esta vazio.")

end

elseif item.uid == 8501 then

queststatus = getPlayerStorageValue(cid,8501)

if queststatus == -1 then

doPlayerSendTextMessage(cid,22,"Você achou um Horned Helmet")

doPlayerAddItem(cid,2496,1)

setPlayerStorageValue(cid,8501,1)

else

doPlayerSendTextMessage(cid,22,"Esta vazio.")

end

elseif item.uid == 8502 then

queststatus = getPlayerStorageValue(cid,8502)

if queststatus == -1 then

doPlayerSendTextMessage(cid,22,"Voce achou uma Warlod Sword.")

doPlayerAddItem(cid,2408,1)

setPlayerStorageValue(cid,8502,1)

else

doPlayerSendTextMessage(cid,22,"Esta vazio.")

end

elseif item.uid == 8503 then

queststatus = getPlayerStorageValue(cid,8503)

if queststatus == -1 then

doPlayerSendTextMessage(cid,22,"Voce achou uma Demon Armor.")

doPlayerAddItem(cid,2494,1)

setPlayerStorageValue(cid,8503,1)

else

doPlayerSendTextMessage(cid,22,"Esta Vazio.")

end

else

return 0

end

 

return 1

end

Depois salve com um nome qualquer vá em data/actions/actions.xml e abra-o como bloco de notas e adicione essas linhas

<action uniqueid="8500" script="NOME.lua" />

<action uniqueid="8501" script="NOME.lua" />

<action uniqueid="8002" script="NOME.lua" />

<action uniqueid="8503" script="NOME.lua" />

--Explicação

Vermelho - Unique id que você colocou nos baus.

Azul claro- Aqui tem que ser numeros diferentes do storage value do outro bau, se não, não da pra pegar todos items.

Laranja - A mensagem que aparecerá quando o player der use e pegar o item

Pink - ID do item que o player irá ganhar, e a quantidade de itens.

Roxo - A mensagem que vai aparecer no caso do player querer pegar o item novamente.

Azul escuro - Unique id que você colocou no script.

Verde claro - nome que você salvou o script

 

Agora aqui vou explicar como fazer uma quest que o player deve escolher um item e não poderá pegar nenhum outro.

1° abra seu map editor e fassa um lugar que de para ver os itens que o player vai pegar (algo parecido com POI ou a annihilator) mas pense em algum modo que o player não irá conseguir pegar o iten que tiver a mostra!

2° coloque uniqueid nos baus (unique ids que ainda não tem no seu OT).

Aqui vai o script...

(CLIQUE NO SPOIL)

--By ADM Leo Leonardo Caetano

 

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

 

if item.uid == 8500 then

queststatus = getPlayerStorageValue(cid,8500)

if queststatus == -1 then

doPlayerSendTextMessage(cid,22,"Voce achou um Blessed Shield!.")

doPlayerAddItem(cid,2523,1)

setPlayerStorageValue(cid,8500,1)

else

doPlayerSendTextMessage(cid,22,"Esta vazio.")

end

elseif item.uid == 8501 then

queststatus = getPlayerStorageValue(cid,8500)

if queststatus == -1 then

doPlayerSendTextMessage(cid,22,"Voce achou um Horned Helmet")

doPlayerAddItem(cid,2496,1)

setPlayerStorageValue(cid,8500,1)

else

doPlayerSendTextMessage(cid,22,"Esta vazio.")

end

elseif item.uid == 8502 then

queststatus = getPlayerStorageValue(cid,8500)

if queststatus == -1 then

doPlayerSendTextMessage(cid,22,"Voce achou uma Warlod Sword.")

doPlayerAddItem(cid,2408,1)

setPlayerStorageValue(cid,8500,1)

else

doPlayerSendTextMessage(cid,22,"Esta vazio.")

end

elseif item.uid == 8503 then

queststatus = getPlayerStorageValue(cid,8500)

if queststatus == -1 then

doPlayerSendTextMessage(cid,22,"Voce achou uma Demon Armor.")

doPlayerAddItem(cid,2494,1)

setPlayerStorageValue(cid,8500,1)

else

doPlayerSendTextMessage(cid,22,"Esta Vazio.")

end

else

return 0

end

 

return 1

end

Depois abra data/actions/actions.xml como bloco de notas e adicione essas linhas...

<action uniqueid="8500" script="NOME.lua" />

<action uniqueid="8501" script="NOME.lua" />

<action uniqueid="8502" script="NOME.lua" />

<action uniqueid="8503" script="NOME.lua" />

--Explicando

Vermelho - Unique ID que você colocou nos baus (ou no item que o player vai dar use para receber seu item)

Azul claro - Aqui nesse script para o player pegar apenas 1 de todos os itens o storage value deve ser igual um aos outros.

Laranja - Mensagem que vai aparecer quando o player der use no bau e receber seu item

Pink - ID do item que o player vai receber, e a quantidade do mesmo item.

Roxo - O que vai falar quando o player tentar pegar o item novamente.

Azul escuro - Unique id que você colocou no script.

Verde claro- nome que você salvou o script

Como foi sugerido pelo Tprocheira aqui vou ensinar a fazer um tipo de "desafio" que use action id...

(CLIQUE NO SPOIL)

abra seu map editor, depois coloque um balcão (ID: 1645) em algum lugar, depois, abra a pasta data/actions/scripts.

depois copie e cole qualquer arquivo .lua (CTRL + C e CTRL + V)

abra-o e apague tudo que estiver e cole isso

--By ADM Leo Leonardo Caetano

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

 

itempos = {x=331,y=60,z=11,stackpos=255}

item = getThingfromPos(itempos)

 

telepos = {x=71,y=33,z=8,stackpos=1}

 

playerpos = getPlayerPosition(cid)

 

effect1pos = {x=878,y=788,z=7,stackpos=1}

 

if item.itemid == 2881 and playerpos.x == 332 and playerpos.y == 60 and playerpos.z == 11 then

doTeleportThing(cid,telepos)

doSendMagicEffect(effect1pos,6)

doSendMagicEffect(telepos,10)

doSendMagicEffect(itempos,2)

doRemoveItem(item.uid,1)

 

else

 

doPlayerSendCancel(cid,"Fique em cima em frente a pedra.")

 

end

if item.itemid == 1645 then

doPlayerSendCancel(cid,"coloque o item na pedra.")

 

end

return 1

end

 

Agora vá em data/actions/actions.xml e abra-o como bloco de notas, depois disso adicione essas 2 linhas

 

<action itemid="1645" script="demodras dead.lua" />

<action itemid="2122" script="demodras dead.lua" />

 

--Explicando

Vermelho: Posição de onde o item irá ficar.

Azul escuro: Posição para onde o player será teleportado.

Verde escuro: Posição de onde irá aparecer o efeito.

Pink: ID do item que tem que colocar na pedra

Laranja: Posição de onde o player ficará para dar use no balcão

Roxo: ID do balcão

Marrom: mensagem que aparecerá se o player não ficar na posição certa, e mensagem que aparecerá se o player não colocar o item.

Cinza: ID do item

Azul claro: ID do balcão.

Verde claro: nome que você salvou o arquivo.

 

Quando eu for lembrando mais eu vou postando aqui!

se quiser podem dar uma ajuda a lembrar falando alguns tipos de quests, que eu edito e posto aqui....

(demorei pra fazer então pelomenos comentem)

Editado Abril 2 por maximusot

31 de março de 2008 às 09:16

Ou coloca o ss

 

Fica mais facil.

 

Nota: 5,0 -> Não é 10 por causa que não tem ss

vini_xxeV
31 de março de 2008 às 18:43

Concordo com o Northon

Precisa de ss's

vlws

31 de março de 2008 às 22:45

LoL, como eu vou colocar ss de um script !?

só se for pra eu colocar a ss de 4 baus. colocando unique id, coisa que todo mundo sabe fazer, mas mesmo assim vou colocar.

vlw as dicas

TprocheiraT
02 de abril de 2008 às 11:44

o.O, concordo com o Maximusot, não tem porque colocar SSs de unique IDs...

Nota:9.0 ->

Já existem alguns tópicos desses. Uma coisa que acho que ficaria legal, coloque como fazer uma quets que de um action ID para o item.

02 de abril de 2008 às 21:25

Valeu pela dica Tprocheira, adicionei um tipo de "desafio" com essa sua ideia.

 

 

Atenciosamente,

Maximus.

didinhaxdD
03 de abril de 2008 às 13:35

gostei.. no meu ot tem mtas quests rox aki.. qq dia desses eu mando pra vcs ;]

JvchequerJ
03 de abril de 2008 às 18:00

Aprovado!

 

Sem mais

3 semanas depois...
JonnycovaJ
18 de abril de 2008 às 18:39

Ficou muito bom, principalmente a ultima, vou colocar no meu ot :smile_positivo:

SkullsS
19 de abril de 2008 às 22:37

Maximus se eh meu amigo

 

mas eu num gostei mto nao

 

sei la

 

ta mto simples os exemplos de quests

 

claro q sao os mais comuns,

mas sei la

 

vc poderia por quests mais complexas

 

abraços

 

//skulls

19 de abril de 2008 às 22:51

Da uns exemplo do que pra você é uma quest complexa, que ai eu coloco umas aqui.

Os exemplos tão simples por que as quests é simples e não tem mais o que explica alem daquilo.

mas valeu a critica. :D

 

 

Atenciosamente,

Maximus.

PedroHEllP
22 de abril de 2008 às 21:17

2 palavras para esse topico

 

Eca, Melhora.

23 de abril de 2008 às 23:01

Não tem como melhora.

Cada um com sua opnião se você acha "eca" tudo bem, não posso fazer nada por você.

1 mês depois...
XgogetaX
13 de maio de 2008 às 19:08

Simplesmente não gostei, tópico muito ruim tem outros que ensinam a fazer melhor, e tem mais conteúdo do que esse.

REPROVADO

13 de maio de 2008 às 19:21

Agora já é tarde pra falar reprovado ou aprovado, se você não percebeu já foi aprovado...

quem gosto vlw, quem não gosto posso fazer nada...