Ir para conteúdo
Entre para seguir isso  
[ B a l i l l o ]

System: quest facil de programar!

Recommended Posts

[ B a l i l l o ]    0
[ B a l i l l o ]

Easy Quest System

[ B a l i l o ]

 

 

Introdução

 

Bom, alguns amigos meus ja me reclamaram de não gostar do modo de quests que vc configura pelo UniqueID no mapeditor pelo fato de vc não poder fazer quests com alguns itens repetidos e etc... varios otservs ja descartaram essa opção de quest e fizeram do jeito tradicional, aquele script de mais ou menos 15 linhas para a quest. Bom, chega de scripts de 15 linhas, agora sua quest é programada através de uma linha só!

 

Pergunta:

Tem mais algum beneficio?!

Resposta:

Sim, ele checa se o player tem cap necessaria para o item, caso contrario ele não da o item e não poem storagevalue no player!

 

Pergunta:

OmG! Como isso?!

Resposta:

Simples, basta usar a tag abaixo:

 

setPlayerQuest(cid, storagevalue, itemid, quantidade)

 

Ta explicado a tag no final do topic!

 

Pergunta:

Nossa! Que simples! Mas como eu configuro isso?!

Resposta:

Simples, basta adicionar o codigo abaixo no global.lua (se localiza dentro da pasta data)

 

 

function setPlayerQuest(ud, stor, itemquest, qnt)


[left]local itemWeight = getItemWeight(itemquest, 1)[/left]



[left]local playerCap = getPlayerFreeCap(ud)[/left]



[left]if getPlayerStorageValue(ud, stor) == -1 then

if playerCap >= itemWeight then
[left]   doPlayerAddItem(ud, itemquest, qnt)
  setPlayerStorageValue(ud, stor, 1)
  doPlayerSendTextMessage(ud, MESSAGE_INFO_DESCR, 'You have found a ' .. getItemName(itemquest) .. '.')
else
  doPlayerSendTextMessage(ud, MESSAGE_INFO_DESCR, 'You have found a ' .. getItemName(itemquest) .. '. It is weighing ' .. itemWeight .. ' oz . It\'s too heavy.')
end
       else
       doPlayerSendTextMessage(ud, MESSAGE_INFO_DESCR, "It is empty.")
    end
end[/left]

[/left]






 

 

Bom, a Introdução ta feita, agora vou explicar de uma maneira melhor de como funciona a quest.

 



[left]function onUse(cid, item, frompos, item2, topos)[/left]



[left]if item.uid == [color=red]1974[/color] then

setPlayerQuest([color=darkorange]cid[/color], [color=red]1974[/color], [color=blue]2400[/color], [color=magenta]1[/color])
[left]elseif item.uid == [color=red]1975[/color] then
setPlayerQuest([color=darkorange]cid[/color], [color=red]1975[/color], [color=blue]2268[/color], [color=darkred]100[/color])
elseif item.uid == [color=red]1976[/color] then
setPlayerQuest([color=darkorange]cid[/color], [color=red]1976[/color], [color=blue]2273[/color], [color=dimgray]50[/color])
end
return TRUE
end[/left]

[/left]





 

 

Geralmente, os OTS tem um arquivo que chama quests.lua ou chest.lua, se neste arquivo tiver aquele padrão de quests, que é feito pelo mapeditor e uniqueID, delete tudo e fassa suas quests do jeito que está acima:

 

 

 

Laranja = Quem vai ganhar, no caso o próprio player.

 

Vermelho = uniqueID do item que foi configurado, não esqueça de por nas duas tags.

 

Azul = ID do Item, no caso é uma magic sword, uma SD e uma UH, respectivamente.

 

 

 

 

 

 

 

As demais cores = como vc percebeu, na magic sword está rosa e com 1, significa que vai ganhar uma magic sword, apenas. No da SD, está de cor vinho, o player vai ganhar uma SD com 100x (100 tiros). No da UH, cor cinza, o player vai ganhar uma UH com 50x (50 cargas).

 

 

 

Para adicionar mais quests, só seguir a logica e ir adicionando:

 

elseif item.uid == 1976 then

 

setPlayerQuest(cid, 1976, 2273, 50)

a cada nova quest, não esquecendo de configurar conforme o explicado!

 

 

 

 

 

 

 

 

 

Bom é isso galerinha, qualquer duvida so postar!

 

 

 

 

Grato,

 

[ B a l i l l o]

 

 

 

 

 

Aqui vai um topic que eu fiz bem melhor explicado e como utilizar de outras maneiras o easy quest system.

Topic: http://forums.otserv.com.br/showthread.php?t=27982

Compartilhar este post


Link para o post
ElfKiller    36
ElfKiller

Otima formataçao, e realmente muitos reclamam do UNIQUE ID quando eu dou essa opçao.

Aprovado.

Compartilhar este post


Link para o post
Coyoty    0
Coyoty

kra,esta otimo...vlw!!!!!

mas não tenho q adicionar nda no actions.xml????????

Compartilhar este post


Link para o post
[ B a l i l l o ]    0
[ B a l i l l o ]

#Coyoty

 

Como eu disse, se o seu servidor tem o padrão: chests.lua ou quests.lua vc deve adicionar neles a quests, que dai no actions.xml está registrado o ID do CHEST de quest e não as uniquesIDs, caso vc faça uma quest a parte, que seja em outro script .lua, dai vc tem que add a tag no actions.xml, a qual seria:

 
<action uniqueid="[uNIQUE ID AQUI]" script="[sCRIPT AQUI].lua"/>

 

Espero ter ajudado.

Compartilhar este post


Link para o post
GDLib    2
GDLib

Sugiro que use doPlayerAddItemEx, por tal função já fazer várias checagens antes de executar seu procedimento principal.

Compartilhar este post


Link para o post
[ B a l i l l o ]    0
[ B a l i l l o ]

#GDLib

 

Agradeço a sugestão, mas prefiro setPlayerQuest, me atrai mais :)

Compartilhar este post


Link para o post
GDLib    2
GDLib

@[ B a l i l l o ]

Tá ficando louco? Não sugeri que mude o nome da função e sim mandei usar outra função dentro da sua, para já se fazer as checagens necessárias.

Compartilhar este post


Link para o post
[ B a l i l l o ]    0
[ B a l i l l o ]

@GDLib

 

Não to intendendo o.0

Mas mesmo que vc explique, isso é necessario? Pode ocorrer algum bug? Se sim, qual bug seria?

Compartilhar este post


Link para o post
Jovial    2
Jovial

Quer uma idéia que você poderia tentar clocar no seu sistema ai?

 

Tipo, eu fiz uma função a um tempo apra a BO, ela seria basicamente isto ai, mas ela tem opção de dar exp tambem, mas isso n vem ao caso, o legal dela é a parte de dar itens, por exemplo:

 

Se eu quiser dar para o player uma BP de uh era só por:

{container = 2000, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273}

Saca? Ele cria o item 2000 que é uma bp e dentro dela 20 itens 2273, que são as uhs

Tambem funciona bps dentro de bps, e da para por a type/count que quiser nos itens. E tambe mverifica se o player terá cap :P

Compartilhar este post


Link para o post
[ B a l i l l o ]    0
[ B a l i l l o ]

#Jovial

 

Interessante! Estava pensando sim em fazer uma função de quests para containers, mas ultimamente estou muito ocupado com varias coisas, hehe. Dps vejo para fazer uma com container.

 

Sobre a quest via exp, bom não é todas as versões que tem 'doPlayerAddExp', porque eu tinha pensando eu por até, mas dai o chato é que nao pega em todos... Mas acho que dava para fazer via luaSQL, não tenho certeza, dps dou uma conferida :)

Compartilhar este post


Link para o post
Roger    0
Roger

=D

Muito Bom

 

Isso ajuda muito os ots que ninguem sabe de scripts

Parabens

Compartilhar este post


Link para o post
JackBoB    0
JackBoB

Não entendi direito, o "setPlayerQuest(cid, storagevalue, itemid, quantidade)" eu coloco aonde?

 

E o

"

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

 

if item.uid == 1974 then setPlayerQuest(cid, 1974, 2400, 1)

elseif item.uid == 1975 then setPlayerQuest(cid, 1975, 2268, 100) elseif item.uid == 1976 then setPlayerQuest(cid, 1976, 2273, 50) end return TRUE end"?

Compartilhar este post


Link para o post
[ B a l i l l o ]    0
[ B a l i l l o ]

#JackBoB

 

No final do topic tem:

Grato,

 

 

[ B a l i l l o]

 

 

 

 

 

Aqui vai um topic que eu fiz bem melhor explicado e como utilizar de outras maneiras o easy quest system.

Topic: http://forums.otserv.com.br/showthread.php?t=27982

 

Clique no link e vc vai para um tutorial que eu fiz aprendendo a usar passo-a-passo o script (ele é para iniciantes, como vc).

Compartilhar este post


Link para o post
Striker_Sky    0
Striker_Sky

Hmm.. isso é simples tb pow

Compartilhar este post


Link para o post
Addicted    1
Addicted

Muito Legal.

Obrigado, Ballilo.

Parabéns :D.

Compartilhar este post


Link para o post
giacco    0
giacco

legau..

isso funcina con crystals coins tbm?

tipo..vin 20 crystal na quest?

Compartilhar este post


Link para o post
Kal'Torak    0
Kal'Torak

Este método já é usado por muitos OTserv, mais foi bom você postar, se bem que eu já vi um tópico sobre isso no OTnet... >.<

Compartilhar este post


Link para o post
mortanda    0
mortanda

Sim.. ta tudo bem.. mas... tem como fazer quest de experience assim?

Compartilhar este post


Link para o post
B. Noah    0
B. Noah

Edit: eu tava falando merda, se o uniqd é o id q vai estar no script nao tem como o bau da outra coisa.. deer >.<

 

 

 

 

mas ficou uma duvida:

 

 

eu ainda nao ocnsegui por para funcionar o bau geralmente abre como bau normal ou nao da itens, ta mt estranho....

 

quando eu vou por mais baus eu tenho q fazer um script para cada quest? tipo : quest1.lua, quest2.lua ... etc, ou eu posso por td no mesmo script? lembranod que aqui nao fiz funcionar ainda =/

Editado por B. Noah

Compartilhar este post


Link para o post
Jonny249    0
Jonny249

estranho, nao sei pq mas comigo da um bug

ele faz o item que é o item.uid

o.o

falous

By Jonny~

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×