Tutorial De como Montar Quests !!!!
2 participantes
Página 1 de 1
Tutorial De como Montar Quests !!!!
se vc quer aprender a fazer desde a mais simples como as "fodas" esta no lugar certo
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
apenas uma parte dele:
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
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
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
ai é so editando a gosto
arrume a capacidade , o uid e as frases a gosto xD
se quiser add mais,apenas add outro
antes do end,return 1 ,end.
e em actions.xml
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
deixando todo?s os baús com esse storage ele vai cancela outro
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
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
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
ele nomeia a bag de container (apenas no script)
Ele adiciona itens dentro do container,infinitos se quiser
Quests com bag,quem vem uma outra bag dentro dela recheada
fácil como no passo anterior nomeie outra bag também
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
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
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
ok ?
a resposta é :
acertou ? parabénz Xamps
errou ? parabénz,importante é tentar
nem tentou ? ixi cara desse jeito se num consegue nada na vida
[i][b]
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
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
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
- 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
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
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
Quests com bag,quem vem uma outra bag dentro dela recheada
fácil como no passo anterior nomeie outra bag também
- 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
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
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
[i][b]
Última edição por samuelssamu em Sáb 05 Fev 2011, 03:07, editado 2 vez(es) (Motivo da edição : Melhorando ortografia e organizando topico)
Felipete- Moderador
- Mensagens : 114
Re: Tutorial De como Montar Quests !!!!
Fixo e organizei melhor o tópico para ajudar.
caso não tenha gostado desculpeme foi empulso proprio
caso não tenha gostado desculpeme foi empulso proprio
Re: Tutorial De como Montar Quests !!!!
Vlw por ter organizado
da nada n
fiko até melhor + organizadin
da nada n
fiko até melhor + organizadin
Felipete- Moderador
- Mensagens : 114
Tópicos semelhantes
» "[Tutorial]Yunie Anti Bot System "Super tutorial pra server dedicados e a quem enterresar
» [8.6]Global todas quests 24hrs
» Tutoriais de Scripting > Aprenda A Fazer Novas Quests
» TibiaRoxy Global Server 10.41 Roshamuul all quests no bugs. free premium!!!
» Tutorial ***Copilando seu ot
» [8.6]Global todas quests 24hrs
» Tutoriais de Scripting > Aprenda A Fazer Novas Quests
» TibiaRoxy Global Server 10.41 Roshamuul all quests no bugs. free premium!!!
» Tutorial ***Copilando seu ot
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|