'PACI 2,317 Posted March 7, 2013 Bem, não sou um quester profissional, mas ensinar isto a todos aqueles que não sabem, será um prazer :D Vamos aprender o básico de fazer quests. Ultimamente tenho visto, tanto no skype, como no fórum, gente que precisa bastante de quests que são muito simples. Venho aqui a fazer um pequenino tutorial sobre o básico das quests, para quem não sabe. [*]A primeira coisa que temos que saber é que TODAS as quests começam por: quest nome begin Onde em nome colocamos o nome da quest. Assim damos ordem de iniciar a quest. [*]Depois disto, prosseguimos para o state. state start begin [*]Agora, vejamos, quest serve para dar início à quest, e o state, serve para... ? O state é tipo uma divisão da quest, em todas as quests o state inicial será sempre start e a partir daí podemos mudar o state para que seja possível praticar várias ações. [*]E continuamos para o início da ação: when ação begin No when há vários tipos de ações: - button; - enter; - info; - kill; - leave; - letter; - levelup; - login; - logout; - target; - unmount; - chat; - click; - use. Onde as mais usuais são: - button; - info; - kill; - letter; - levelup; - login; - target; - chat; - click; - use. [*]Ora bem, onde é que se costumam usar estes tipos de when? Se repararem, nas quests do biólogo usam-se estes whens todos. Mas nós nos iremos concentrar mais no login, até porque será usado no exemplo. Vamos lá traduzir então estas 3 primeiras linhas de uma quest: Quando a quest nome iniciar, o state start iniciará, fazendo com que a ação inicie. [*]Parece complicado falando portuquês? Falemos então em quest, na linguagem .lua: quest teste beginstate start begin when login begin say("Vais mudar de state") set_state(aprender) endendstate aprender begin when login begin say("Estás no state aprender") endendend Ora bem, vejamos pouco a pouco. quest teste begin Início da quest. state start begin Início do state start. when login begin Início do when, isto fará com que o jogador quando logue na personagem (incluindo quando nos teleportamos a um mapa) sofra uma ação. say("Vais mudar de state") É a ação que o jogador irá sofrer quando fizer login. set_state(aprender) Mudança do state para que o jogador sofra outra ação. end Fecho do when. end Fecho do state. state aprender begin Início do novo state que fizémos. when login begin Início do when, isto fará com que o jogador quando logue na personagem (incluindo quando nos teleportamos a um mapa) sofra uma ação diferente da ação do state start. say("Estás no state aprender") É a ação que o jogador irá sofrer no state aprender. end Fecho do when. end Fecho do state. end Fecho da quest. Fácil? Então, vamos prosseguir. [*]Há alguma maneira de mudar de state entre quests? Sim, com a função set_quest_state("nome_da_quest", "nome_do_state"). Vejamos: quest teste4 beginstate start begin when 9010.chat."Ae" begin say("Ae cara") set_quest_state("teste5", "hi") endendend quest teste5 beginstate start begin when 9003.chat."Olá" begin say("Olá") set_state(hi) endendstate hi begin when 9001.chat."Hi" begin say("Hello, nice to meet you!") endendend [*]O que irá acontecer aqui? Quando for ao npc 9010 e clicar na opção Ae, irá aparecer uma mensagem a dizer Ae cara e irá mudar para o state hi, da quest teste5 que fará com que ao ir ao npc 9001 e clicar na opção Hi, aparecerá a mensagem Hello, nice to meet you! É simples! Ou seja, o state hi só será ativado, quando a quest teste4 acabar! [*]O que são os ends? Tal como os begin dão inicio a algo, os end fecham-no. [*]Como sabemos quantos ends colocar numa quest? Isso é simples e fácil, para que uma quest funcione, além de uma boa sintaxe, necessita de estar devidamente fechada. Dito isto, e observando a quest, conseguimos deduzir que: - O quest, state e when são obrigatórios levarem sempre um end. Ou seja, em todas as quests sempre são necessários, 3 end, estes 3 são obrigatórios! Um para a quest, outro para o state e outro para o when. Além destas, os if também levam end, sempre! Exemplificando: quest aprender beginstate start begin when login begin say("Já sei usar os ends") end -> end do whenend -> end do stateend -> end da quest Simples, não? [*]E se quiser usar 2 when numa quest, tenho sempre que mudar de state? Não, nem sempre, apenas quando o jogador sofre uma ação digamos, bastante diferente da primeira, ou seja, se for para colocar vários when num npc, por exemplo, para abrir várias lojas, então antes de começar um segundo when, teriamos que fechar o primeiro. Isto é: quest teste2 beginstate start begin when 9003.chat."The End" begin say("Oi") end -> end do primeiro when when 9003.chat."The End2" begin say("Adeus") end -> end do segundo whenend -> end do stateend -> end da quest E o mesmo se passa com os state, mas não com a quest porque a quest inclui isto tudo, se fechas uma quest, não podes adicionar outra no mesmo documento. [*]Estrutura de uma quest Esta pode ser como vocês quiserem, mas se tiverem dúvidas nos ends que colocar aconselho a usarem a que eu uso: Desta maneira sabemos o que é que estamos a fechar. E é tudo! Qualquer dúvida digam e se quiserem noutro dia, outro tópico destes, avisem! Espero ter sido explícito. Cumprimentos. 37 Valenza, ShadowKnight, .SNiK and 34 others reacted to this Share this post Link to post Share on other sites
SINVAL o.O 728 Posted March 7, 2013 http://cyber-gamers.org/public/style_emoticons/default/451960.gif, o que eu queria... 1 vida100vida reacted to this Share this post Link to post Share on other sites
NewWars 875 Posted March 7, 2013 Topico Fechado! Incompleto. PS,Intopic: http://cyber-gamers.org/public/style_emoticons/default/451960.gif e tava só a gozar :| Share this post Link to post Share on other sites
quenii 981 Posted March 7, 2013 Gostei mano, vai me dar uma grande ajuda! quest kenny beginstate start begin when login beginsay("hur dur")endendend Share this post Link to post Share on other sites
'PACI 2,317 Posted March 7, 2013 Gostei mano, vai me dar uma grande ajuda! quest kenny beginstate start begin when login beginsay("hur dur")endend xD Mas falta-te ai 1 end para fechares a quest :p 4 Rasta Man, ShadowKnight, × Dαяkαтн and 1 other reacted to this Share this post Link to post Share on other sites
NewWars 875 Posted March 7, 2013 xD Mas falta-te ai 1 end para fechares a quest :p qc: assertion failed line 6 Share this post Link to post Share on other sites
quenii 981 Posted March 7, 2013 xD Mas falta-te ai 1 end para fechares a quest :p Ok vamos falar em py? AEUHAEUHEAHUEAHU Valeu pela correção! 1 'PACI reacted to this Share this post Link to post Share on other sites
kimameixede 70 Posted March 7, 2013 simples e eficas muito bom vai dar muito jeito as pessoas novas no ramo http://cyber-gamers.org/public/style_emoticons/default/451960.gif para ti Share this post Link to post Share on other sites
NewWars 875 Posted March 7, 2013 Ok vamos falar em py? AEUHAEUHEAHUEAHU Valeu pela correção! Import System :| I win :| Share this post Link to post Share on other sites
'PACI 2,317 Posted March 7, 2013 Ok vamos falar em py? AEUHAEUHEAHUEAHU Valeu pela correção! O py não é para aqui chamado <.< xD 3 SINVAL o.O, Rasta Man and ShadowKnight reacted to this Share this post Link to post Share on other sites
SINVAL o.O 728 Posted March 7, 2013 quest sinval beginstate start beginwhen login beginsay("é assim que faz?")set_state(aprender)endendstate aprender beginwhen login beginsay("será que e assim msm?")endendstate aprender beginwhen login beginsay("espero ta fazendo certo né?")endendendé assim ta certo? 1 vida100vida reacted to this Share this post Link to post Share on other sites
'PACI 2,317 Posted March 7, 2013 quest sinval beginstate start beginwhen login beginsay("é assim que faz?")set_state(aprender)endendstate aprender beginwhen login beginsay("será que e assim msm?")endendstate aprender beginwhen login beginsay("espero ta fazendo certo né?")endendendé assim ta certo? Nop, ativaste o state aprender duas fazes, para isso debaixo o 2º say fazes outro set_state e voltas a fazer o processo para começar o 3º state. 4 × Dαяkαтн, SINVAL o.O, Rasta Man and 1 other reacted to this Share this post Link to post Share on other sites
SINVAL o.O 728 Posted March 7, 2013 Nop, ativaste o state aprender duas fazes, para isso debaixo o 2º say fazes outro set_state e voltas a fazer o processo para começar o 3º state. ata, devagar eu aprendo se puder fazer outros tutorial agora vc uso o loguin si vc puder usar kill e fazer umas maiores, que ai agente vai treinando é assim quest sinval beginstate start beginwhen login beginsay("é assim que faz?")set_state(aprender)endendstate aprender beginwhen login beginsay("será que e assim msm?")set_state(aprender)endendstate aprender beginwhen login beginsay("espero ta fazendo certo né?")endendend 1 vida100vida reacted to this Share this post Link to post Share on other sites
'PACI 2,317 Posted March 7, 2013 ata, devagar eu aprendo se puder fazer outros tutorial agora vc uso o loguin si vc puder usar kill e fazer umas maiores, que ai agente vai treinando é assim quest sinval beginstate start beginwhen login beginsay("é assim que faz?")set_state(aprender)endendstate aprender beginwhen login beginsay("será que e assim msm?")set_state(aprender)endendstate aprender beginwhen login beginsay("espero ta fazendo certo né?")endendend O segundo set_state tem que ser diferente que o primeiro porque assim a ação repetir-se-ia a partir do 2º state, ou seja, apareceria sempre o say("espero ta fazendo certo né?"), coloca o 3º state diferente do 2º. 4 × Dαяkαтн, SINVAL o.O, Rasta Man and 1 other reacted to this Share this post Link to post Share on other sites
đŗaѵєη 220 Posted March 7, 2013 Excelente trabalho, ραcificαdør ! http://cyber-gamers.org/public/style_emoticons/default/451960.gif Cumprimentos, đŗaѵєη Share this post Link to post Share on other sites