Ir para conteúdo

Tutorial De Como Montar Quests !


tibiaa4e

Posts Recomendados

SE VC É AQUELE CARA PREGUIÇOSO OU QUE SÓ QUER USAR AQUELA ##### DE QUEST Q TEM Q COLOCA O ID DO ITEM NO UID DA CHEST PODE SAIR JÁ

 

se vc quer aprender a fazer desde a + simples como as "fodas" esta no lugar certo :D

 

1º passo

 

Para vc num ficar lotado de arquivos q ate msm vc num sabe onde tah

faça apenas um com todas

normalmente chame-se chest.lua

nesse arquivo vc num ira indicar os ids dos lugares q darão itens (como id do bau,da estatua) e sim a uid assim

qualquer lugar pode dar sua recompensa desde baus ate paredes :D

 

apenas uma parte dele:

 

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 q vc coloca no map editor)q o chest ira usar

Se o player não tiver o storage (queststatus = -1)ele manda a msg its empty

Checa se o player tem 29.50 de capacidade,se num tiver ele manda a msg lá

Adiciona o item x ao player

ai a base de um script basico :D

 

+ se vc num entende como se faz uma action,nem adinata continuar

vou explicar como se faz usando apenas coisas dessa quest

 

 

Sempre tem q ter um end fechando a função

Sempre quando ter um if tem q 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 q usar um end no final dele

Os ifs chão checados em ordem,então coloque uma ordem de importancia

Tipo qdo há mais de um else o ultimo if q conta

exemplo

 

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 q da pra entender dai

Se vc num entendeu e só quer fazer

ai um exemplo

 

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

 

--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

doPlayerSendTextMessage(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 + apenas add outro

 

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

<action uniqueid="2300" script="chest.lua" />

<action uniqueid="2301" script="chest.lua" />

ai é só ir add outros

 

2º passo

 

Se vc gosta de quest do estilo aniq q tem varios baus onde so pode pegar um unico item

é facil

 

apenas deixe o storagevalue de todos os baus o msm :D

 

queststatus = getPlayerStorageValue(cid,2301)

if queststatus == -1 then

setPlayerStorageValue(cid,2301,1)

 

deixando todos os baus com esse storage ele vai cancela outro :D

facil n?

 

3º passo

 

So scripts num ajudam em nada certo ?

como ja disse vc pode add o uid em qualquer lugar

 

então vejamos ideias de quests :D

 

Quests q prescisam de duas partes

Vc quer fazer aquela quest q tem q falar com um npc pra pode-la fazer ?

Como num mecho com npc a muito tempo faça ele adicionar um storagevalue x no player qdo falar a palavra x

 

e os script ficaria assim

 

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 num tiver o storage value x aparecera a msg

Essa parte do NPC num posso ajudar pois depende muito da versão e tudo +

Pode ser ate msm por action

 

Quests com bag

Desde muito tempo atras 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

 

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 :D

 

Quests com bag,quem vem uma outra bag dentro dela recheada :D

 

facil como no passo anterior nomeie outra bag tbm :D

 

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 :D

 

Quest q só pode ser feita se ele tiver dinheiro

 

Como ja disse o If são checados na ordem q vc adiciona eles nos script

Ou seja um requesito de remover dinheiro nesse script

 

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 é + importante do q 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

 

 

+ onde ?

 

prestem atenção a tudo q eu falei

Num desçam a pagina tentem descobrir sozinho :D

 

como num coube aki ta no proximo post pensem bem heim...

Link para o comentário
Compartilhar em outros sites

  • Respostas 62
  • Created
  • Última resposta

Top Posters In This Topic

...

 

 

ok ?

 

a resposta é :

 

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 ? parabens

errou ? parabens,importante é tentar

nem tentou ? ixi cara desse jeito se num consegue nada na vida

 

Acho q agora vc entendeu como fazer a maioria das quests media e dificieis

até

Eu sinceramente nem tenho criatividade então se quiser q eu faça exemplos

ou melhor q vc prove q aprendeu e quer mostar aki

eu coloco sem problemas

 

Por enquanto deixo meu tutorial por aqui

Espero ter ajudado duvias poste aki

Se me derem ideias posso postar a parte 2 :D

 

flws

Link para o comentário
Compartilhar em outros sites

Cara muito bom, Esse tem que ir para parte de Tutorial!

 

Acertei 50% da pergunta.

 

So errei em uma parte,

Coloquei pra remover o item abaixo do texto da mensagem!

Se fizesse o script assim ia dar problema né?

 

 

if getPlayerFreeCap(cid) >= 29.50 then

doPlayerSendTextMessage(cid,22,"You have found a demon helmet.")

if doPlayerRemoveMoney(cid,1000)

doPlayerAddItem(cid,2493,1)

setPlayerStorageValue(cid,2300,1)

Link para o comentário
Compartilhar em outros sites

naum

só q vc teria q deixar o else dele como 1º :S

e ele seria checado como ultimo

Tipo no caso eu acharia melhor esse ser checado em 2º

 

ordem de importancia seria :

´

se o player ja fez a quest

se tem o gp

se tem cap

 

na sua ordem seria

se o player fez a quest

se tem cap

se tem o gp´

 

num faz diferença no final das contas

:D

 

flws

Link para o comentário
Compartilhar em outros sites

Bom,

 

Todos os Tópicos do Tibiaa4e merecem fixar,

 

Mas se fosse fixar so teria Tópicos fixados.

 

Então o max que eu posso dizer é que:

 

Está muito bem explicado.

E você sempre quando faz uma coisa que para você é "facil"

Ajuda com certeza muita gente.

 

Parabéns.

 

SkyNagerloas.

Link para o comentário
Compartilhar em outros sites

*________*

eh isso aííí

ta4e de volta :~~

e o melhor de tudo, compartilhando conhecimento, que coisa linda :~~

AKFJkofAJkfoAjko

gostei do tutorial, mto bom pra quem tá começando

mto bem esplicado e tem até exercícios e apoio técnico :~~

 

eh o q eu falo neh

ta eh o ta :~~

 

observação_não_tão_importante .: e eu sou puxa saco

okfjOKjfaKO mas o tutorial fikoh bom mesmo :~~

 

;*

Editado por frerety
Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...
  • 4 weeks later...

×
×
  • Criar Novo...