'PACI 2,317 Posted March 8, 2013 Oi, hoje vou falar sobre os when. Bem já no tópico anterior, falei no que consistem os when e alguns dos when mais utilizados. Utilizamos como exemplo o login, mas desta vez faremos um pouco de tudo. when x begin Deixaremos o when em x (não existe, é só uma incógnita). A incógnita poderá tomar diferentes ações: when id_item.use Quando se utilizar o item com o ID: id_item, começa a ação. when id_npc.click Quando clicar no npc com o ID: id_npc, começa a ação. when id_npc.chat."texto" Quando clicar no npc com o ID: id_npc, irá aparecer uma janela para escolher várias opções (apenas uma neste caso), no caso do exemplo, quando clicarem na opção texto começa a ação. when id_npc.target.click Quando clicar no target (objetivo) com o ID: id_npc, começa a ação. (Quando começarmos com os local darei um exemplo deste). when login Quando fizer login, começa a ação. when logout Quando fizer logout, começa a ação. when button Tem a ver com as letter (missões em pergaminhos). Explicarei noutro dia. when info Tem a ver com as letter (missões em pergaminhos). Explicarei noutro dia. when letter Missão em pergaminho. Explicarei noutro dia. when nome.timer Quando o timer nome começar, iniciará a ação. when kill Quando o jogador matar algo (seja mob, seja outra personagem), começa a ação. when levelup Quando o jogador subir/descer de nível, começa a ação. Outras... Exemplos: Até aqui percebido certo? Então vamos complicar um pouco. Juntar a incógnita x com outras Funções. Como são muitas e muitas mesmo, é normal que por vezes nos esqueçamos de algumas funções, por isso, deixo aqui o Tópico que uso quando me esqueço de alguma. Ora bem vamos usar uma função simples utilizada na quest exemplo_levelup. O pc.get_level(). Esta função, lê o nível da pessoa que pratica a ação, sendo assim, para ler um valor atribuído ao nível do jogador, somos obrigados a usar os símbolos de igualdade, superioridade e inferioridade. (=, >, <). Por exemplo, se quisermos que a ação seja praticada quando se faça login e o jogador esteja a nível 5 ou maior, o when seria desta forma: when login with pc.get_level() >= 5 begin Percebido? E se fosse, menor ou igual? when login with pc.get_level() =< begin E igual, é só colocar um =... Errado! É necessário sempre 2 simbolos. Ou seja: maior ou igual: >= menor ou igual: =< igual: == As funções ligam-se à ação graças ao with. É um elemento importante quando queremos fazer quests algo mais trabalhadas. Então, vocês a partir daqui, chegam à conclusão que o with serve para ligar 2 ou mais funções à ação. Errado! Para ligar mais que uma função à ação, passamos a utilizar o and em vez do with. Isto é: when levelup with pc.get_level() == 5 and pc.get_map_index() == 1 begin Queremos usar vários when, então fazemos um, fechamo-lo e abrimos outro. Sim, mas existe outra maneira mais simples de o fazer. Nesses casos, utilizamos o or. when 9001.chat."Texto1" or 9002.chat."Texto2" or 9003.chat."Texto3" begin Com isto tudo já conseguimos complicar um when. Ou seja, juntar um or, com um with e um and no mesmo when. Vejamos: when login or levelup with pc.get_map_index() == 1 and pc.get_empire() == 1 begin Fácil? Ora bem, não vou andar a explicar em que consistem cada uma das funções quest. É coincidência que um membro tenha postado o significado das funções mais usuais nas quests. Poderão vê-lo neste Tópico. Acho que é tudo. Dúvidas, comentem aqui no tópico. Espero não estar a fazer isto para nada, se for assim deixarei de fazê-lo porque ninguém quer aprender. Se alguém estiver a tentar aprender isto, que diga, assim para a próxima faremos um pequeno "exercício" com os conhecimentos lecionados até agora. Cumprimentos. Edit: Na quest exemplo_login vemos uma função nova (para alguns) que é o timer("nome", tempo em segundos), esta função apenas adiciona um temporizador, por assim dizer, à quest. Para dar início ao temporizador o nosso when tem que estar da seguinte forma: when nome.timer begin 15 p0w3r0ff, .Revo, ɓʀuɳѳ' ИИ#92 and 12 others reacted to this Share this post Link to post Share on other sites
'PACI 2,317 Posted March 9, 2013 Adicionado explicação do when nome.timer. 1 SINVAL o.O reacted to this Share this post Link to post Share on other sites
some1 4 Posted March 9, 2013 maior ou igual: &--#62;2;=Supostamente seria >=2; ? 1 'PACI reacted to this Share this post Link to post Share on other sites
'PACI 2,317 Posted March 9, 2013 Supostamente seria >=2; ? Sim, obrigado, isto quando editamos o tópico os caráteres especiais ficam assim. Já corrigi. 1 SINVAL o.O reacted to this Share this post Link to post Share on other sites
яαfαєl รєηα 30 Posted March 10, 2013 Obrigado Pela ajuda dada. Share this post Link to post Share on other sites
Zeraw 144 Posted July 5, 2013 Muito bom, cada vez aprendo mais, tens mais tutoriais deste género? Share this post Link to post Share on other sites