Fórum Mundo Tibia Br
Bem-vindo(a),

Notamos que você não está logado no Fórum. Se já tiver uma conta, por favor, faça o Login. Se você ainda não tem uma conta, registre-se, demora menos de dois minutos e você tem acesso a todas as vantagens de ser um membro.

Tutorial De como Montar Quests !!!!

Ir em baixo

Tutorial De como Montar Quests !!!! Empty Tutorial De como Montar Quests !!!!

Mensagem por Felipete em Sab 05 Fev 2011, 02:07

se vc quer aprender a fazer desde a mais simples como as "fodas" esta no lugar certo Very Happy

1º passo

Para você não ficar lotado de arquivos que atê mesmo você num sabe onde esta
faça apenas um com todas
normalmente chame-se chest.lua
nesse arquivo você não ira indicar os ids dos lugares que darão itens (como id do baú,da estátua) e sim a uid assim
qualquer lugar pode dar sua recompensa desde baús ate paredes Very Happy

apenas uma parte dele:

Código:
Quote
if item.uid == 2300 then
queststatus = getPlayerStorageValue(cid,2300)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 29.50 then
doPlayerSendTextMessage(cid,22,"You have found a demon helmet.")
doPlayerAddItem(cid,2493,1)
setPlayerStorageValue(cid,2300,1)
else
doPlayerSendTextMessage(cid,22,"You have found a demon helmet. Weighing 29.50 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,22,"The chest is empty.")
end

Indica a UID (uniqueid que você coloca no map editor)que o chest ira usar
Se o player não tiver o storage (queststatus = -1).ele manda a mensagem "its empty"--No caso pode ser alterada
Checa se o player tem 29.50 oz de capacidade,se não tiver ele manda a mensagem lá
"Weighing 29.50 oz it is too heavy."
Adiciona o item x ao player
ai a base de um script basico Very Happy

mais se você não entende como se faz uma action,não necessita continuar
vou explicar como se faz usando apenas coisas dessa quest


Sempre tem que ter um end fechando a função
Sempre quando ter um if tem que ter um end fechando ele
Depois de um if se quiser pode usar um elseif ao inves de outro if
A cada if ou elseif se poder usar um else,mas tera que usar um end no final dele
Os ifs chão checados em ordem,então coloque uma ordem de importancia
Tipo quando há mais de um else o ultimo if q conta
exemplo

Código:
Quote
queststatus = getPlayerStorageValue(cid,2300)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 29.50 then
doPlayerSendTextMessage(cid,22,"You have found a demon helmet.")
doPlayerAddItem(cid,2493,1)
setPlayerStorageValue(cid,2300,1)
else
doPlayerSendTextMessage(cid,22,"You have found a demon helmet. Weighing 29.50 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,22,"The chest is empty.")
end


o 1º else é do getplayerfree cap
e o else é do storage

Assim acho que da pra entender dai
Se você não entendeu e só quer fazer
ai um exemplo

Código:
Quote
function onUse(cid, item, frompos, item2, topos)[/color]

--DEMON HELMET--
if item.uid == 2300 then
queststatus = getPlayerStorageValue(cid,2300)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 29.50 then
doPlayerSendTextMessage(cid,22,"You have found a demon helmet.")
doPlayerAddItem(cid,2493,1)
setPlayerStorageValue(cid,2300,1)
else
doPlayerSendTextMessage(cid,22,"You have found a demon helmet. Weighing 29.50 oz it is too heavy.")
end
else
doPlayerSendTextMessaage(cid,22,"The chest is empty.")
end

elseif item.uid == 2301 then
queststatus = getPlayerStorageValue(cid,2301)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 26.00 then
doPlayerSendTextMessage(cid,22,"You have found a demon shield.")
doPlayerAddItem(cid,2520,1)
setPlayerStorageValue(cid,2301,1)
else
doPlayerSendTextMessage(cid,22,"You have found a demon shield. Weighing 26.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,22,"The chest is empty.")
end



end
return 1
end


ai é so editando a gosto
arrume a capacidade , o uid e as frases a gosto xD
se quiser add mais,apenas add outro

Código:
Quote
elseif item.uid == 2301 then
queststatus = getPlayerStorageValue(cid,2301)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 26.00 then
doPlayerSendTextMessage(cid,22,"You have found a demon shield.")
doPlayerAddItem(cid,2520,1)
setPlayerStorageValue(cid,2301,1)
else
doPlayerSendTextMessage(cid,22,"You have found a demon shield. Weighing 26.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,22,"The chest is empty.")
end


antes do end,return 1 ,end.

e em actions.xml

Código:
Quote
<action uniqueid="2300" script="chest.lua" />
<action uniqueid="2301" script="chest.lua" />

ai é só ir add outros

2º passo

Se você gosta de quest do estilo Anihi,inq que existem varios baús onde so pode pegar um unico item
é facil

apenas deixe o storagevalue de todos os baus o msm Very Happy

Código:
Quote
queststatus = getPlayerStorageValue(cid,2301)
if queststatus == -1 then
setPlayerStorageValue(cid,2301,1)


deixando todo?s os baús com esse storage ele vai cancela outro Very Happy
fácil não acha?

3º passo

So scripts não ajudam em nada certo ?
como ja disse você pode add o uid em qualquer lugar

então vejamos idéias de quests Very Happy

Quests que necessitam de duas partes
Você quer fazer aquela quest que tem que falar com um npc pra pode-la fazer ?
Como não mexo com npc's a muito tempo faça ele adicionar um storagevalue x no player exatamente falar a palavra [font=Courier New]x[/font]

e os script ficaria assim

Código:
Quote
elseif item.uid == 2301 then
queststatus = getPlayerStorageValue(cid,2301)
if queststatus == -1 then
queststatus1 = getPlayerStorageValue(cid,5000)
if queststatus1 == -1 then
if getPlayerFreeCap(cid) >= 26.00 then
doPlayerSendTextMessage(cid,22,"You have found a demon shield.")
doPlayerAddItem(cid,2520,1)
setPlayerStorageValue(cid,2301,1)
else
doPlayerSendTextMessage(cid,22,"You have found a demon shield. Weighing 26.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,22,"Prescisa falar com o sam para fazer essa quest.")
end
else
doPlayerSendTextMessage(cid,22,"The chest is empty.")
end

Ou seja se ele não tiver o storage value x aparecera a mensagem
Essa parte do NPC não posso ajudar pois depende muito da versão e tudo mais
Pode ser ate mesmo por action

Quests com bag
Desde muito tempo a traz as pessoas queriam fazer quest com bags como no rl
Existiam poucos codes em c++ para isso e nem eram postados ou abertos so publico
.No revbattlesys ele ficou e vamos a um exemplo de quest

Código:
Quote
elseif item.uid == 2309 then
queststatus = getPlayerStorageValue(cid,2309)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 50.00 then
doPlayerSendTextMessage(cid,22,"You found a Bag.")
container = doPlayerAddItem(cid, 1987, 1)
doAddContainerItem(container, 2171, 1)
doAddContainerItem(container, 2168, 1)
doAddContainerItem(container, 2124, 1)
doAddContainerItem(container, 2145,3)
doAddContainerItem(container, 2146, 4)
setPlayerStorageValue(cid,2309,1)
else
doPlayerSendTextMessage(cid,22,"You have found a bag. Weighing 50.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,22,"The chest is empty.")
end

ele nomeia a bag de container (apenas no script)
Ele adiciona itens dentro do container,infinitos se quiser Very Happy

Quests com bag,quem vem uma outra bag dentro dela recheada Very Happy

fácil como no passo anterior nomeie outra bag também Very Happy

Código:
Quote
elseif item.uid == 2309 then
queststatus = getPlayerStorageValue(cid,2309)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 50.00 then
doPlayerSendTextMessage(cid,22,"You found a Bag.")
container = doPlayerAddItem(cid, 1987, 1)
container2 = doPlayerAddItem(container, 1987, 1)
doAddContainerItem(container, 2171, 1)
doAddContainerItem(container2, 2168, 1)
doAddContainerItem(container2, 2124, 1)
doAddContainerItem(container, 2145,3)
doAddContainerItem(container, 2146, 4)
setPlayerStorageValue(cid,2309,1)
else
doPlayerSendTextMessage(cid,22,"You have found a bag. Weighing 50.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,22,"The chest is empty.")
end

Adiciona essa bag dentro do container
Adiciona esses itens no container2 q esta dentro do container

4º passo
Como diz é um tutorial num um script gratis
então vou ensinar como criar "impedimentos para o player"
seria mais um requesito Very Happy

Quest que só pode ser feita se ele tiver dinheiro

Como ja disse o If são checados na ordem que você adiciona eles nos script
Ou seja um requisito de remover dinheiro nesse script

Código:
Quote
if item.uid == 2300 then
queststatus = getPlayerStorageValue(cid,2300)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 29.50 then
doPlayerSendTextMessage(cid,22,"You have found a demon helmet.")
doPlayerAddItem(cid,2493,1)
setPlayerStorageValue(cid,2300,1)
else
doPlayerSendTextMessage(cid,22,"You have found a demon helmet. Weighing 29.50 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,22,"The chest is empty.")
end

Estaria em que lugar ?
pelo menos para mim ele é mais importante do que a capacidade
então como adicionar ?

adiciondo


if doPlayerRemoveMoney(cid,1000) --remove 1000 gps do player

else
doPlayerSendTextMessage(cid,22,"Sem dinheiro para completar a quest.")
end


mais onde ?

prestem atenção a tudo que eu falei
Não desçam a pagina tentem descobrir sozinho Very Happy







ok ?

a resposta é :

Código:
Quote
if item.uid == 2300 then
queststatus = getPlayerStorageValue(cid,2300)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 29.50 then
if doPlayerRemoveMoney(cid,1000)
doPlayerSendTextMessage(cid,22,"You have found a demon helmet.")
doPlayerAddItem(cid,2493,1)
setPlayerStorageValue(cid,2300,1)
else
doPlayerSendTextMessage(cid,22,"Sem dinheiro para completar a quest.")
end
else
doPlayerSendTextMessage(cid,22,"You have found a demon helmet. Weighing 29.50 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,22,"The chest is empty.")
end



acertou ? parabénz Xamps
errou ? parabénz,importante é tentar
nem tentou ? ixi cara desse jeito se num consegue nada na vida


Razz[i][b]


Última edição por samuelssamu em Sab 05 Fev 2011, 03:07, editado 2 vez(es) (Razão : Melhorando ortografia e organizando topico)

___________________________________

Objetivos
[x]10 posts
[x]20 posts
[x]30 posts
[x]40 posts
[x]50 posts
[x]60 posts
[x]70 posts
[x]80 posts
[x]90 posts
[x]100 posts



Entrada na equipe como Estagiario 03/02/2011
Promoção como Moderador 24/02/2011
Felipete
Felipete
Moderador
Moderador

Mensagens : 114

Voltar ao Topo Ir em baixo

Tutorial De como Montar Quests !!!! Empty Re: Tutorial De como Montar Quests !!!!

Mensagem por samuelssamu em Sab 05 Fev 2011, 02:41

Fixo e organizei melhor o tópico para ajudar.
caso não tenha gostado desculpeme foi empulso proprio

___________________________________

Tutorial De como Montar Quests !!!! Bobmarleysignbybsymphon
Entrada na Equipe do Blog: 17/07/10
Entrada na Equipe do Forum:25/09/10
Coordenador de Grupos: 15/01/11
Email:samuelssamu@mundotibiabr.com
MSN: samuelssamu@hotmail.com
samuelssamu
samuelssamu
Administrador
Administrador

Mensagens : 24

http://mundotibiabr.com

Voltar ao Topo Ir em baixo

Tutorial De como Montar Quests !!!! Empty Re: Tutorial De como Montar Quests !!!!

Mensagem por Felipete em Sab 05 Fev 2011, 11:23

Vlw por ter organizado
da nada n

fiko até melhor + organizadin Smile

___________________________________

Objetivos
[x]10 posts
[x]20 posts
[x]30 posts
[x]40 posts
[x]50 posts
[x]60 posts
[x]70 posts
[x]80 posts
[x]90 posts
[x]100 posts



Entrada na equipe como Estagiario 03/02/2011
Promoção como Moderador 24/02/2011
Felipete
Felipete
Moderador
Moderador

Mensagens : 114

Voltar ao Topo Ir em baixo

Tutorial De como Montar Quests !!!! Empty Re: Tutorial De como Montar Quests !!!!

Mensagem por samuelssamu em Sab 05 Fev 2011, 11:26

depois organizo melhor ^.^

___________________________________

Tutorial De como Montar Quests !!!! Bobmarleysignbybsymphon
Entrada na Equipe do Blog: 17/07/10
Entrada na Equipe do Forum:25/09/10
Coordenador de Grupos: 15/01/11
Email:samuelssamu@mundotibiabr.com
MSN: samuelssamu@hotmail.com
samuelssamu
samuelssamu
Administrador
Administrador

Mensagens : 24

http://mundotibiabr.com

Voltar ao Topo Ir em baixo

Tutorial De como Montar Quests !!!! Empty Re: Tutorial De como Montar Quests !!!!

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum