[Tutorial] Scripts - Willy

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Qualidade [Tutorial] Scripts - Willy

Mensagem por Willy em Qua 11 Dez 2013, 23:11

Olá amigos da GMBR! Trago para vocês mais um tutorial, e dessa vez, falando sobre scripts! O tutorial é compatível com qualquer versão do GM que suporte scripts.  É recomendado que você tenha ao menos um conhecimento básico de GML. Para acompanhar o tutorial, primeiro, crie um novo projeto no Game Maker, crie um objeto chamado obj_draw e coloque os seguintes códigos:
Códigos:
Create:

Código:
//HP inicial
HP = 100;
HP_Max = 100;
Step:

Código:
//Reduz o HP
HP -= 1;
Draw:

Código:
//Desenha o Healthbar
draw_healthbar(16,16,128,32,((HP/HP_Max)*100),c_black,c_red,c_lime,0,true,true);
Sem mais delongas, vamos começar!

Scripts

O que é:
       No Game Maker, um script é um trecho de código que você pode dar um nome e definir argumentos para usar em qualquer objeto do seu jogo. Poucas pessoas sabem, mas todas as funções do GM são scripts.

Quando usar:
       Se você já está habituado a usar GML em seus jogos, quando entender o conceito de um script você provavelmente usará com bastante frequência. Você pode, por exemplo:
- Criar novas funções.
- Usar o mesmo código para vários objetos, economizando tempo e facilitando a manutenção.
- Fazer cálculos e retornar um valor.
       Estes foram alguns exemplos. Não posso listar toda a utilidade de um script, pois elas são incontáveis e sua forma de uso varia de programador para programador.

Como criar:
       Antes de programarmos nosso script, primeiro, devemos criá-lo.  Para isso, crie um novo script clicando em seu ícone na barra de ferramentas.

       Em seguida, uma tela igual ao "creation code" aparecerá.  Agora, precisamos dar um nome ao nosso novo script, fazemos isso digitando o nome na caixa de texto "Name". Por boas práticas, recomendo que sempre inicie o nome com scr_ para evitar conflitos entre os recursos do jogo. Neste exemplo, chamaremos de scr_morre.
Spoiler:

Programando um exemplo:
       Para usar como exemplo, criaremos um script que faz um objeto se destruir quando estiver sem HP.
Spoiler:
       Este exemplo não usa argumentos e usa uma variável local chamada “HP”. Essa variável não é do script, mas sim, do objeto que o chamou. Portanto, se o objeto não tiver essa variável, vai dar erro. Essa pratica não é muito recomendada, pois vai limitar o script a determinados objetos.

Como usar:
       Depois de criado, usar um script é bem simples... No "creation code" do objeto que você quer usar o script, simplesmente digite o nome que você deu e passe os argumentos necessários entre os parênteses separando-os com vírgulas. Faça isso no na ultima linha do step do obj_draw.
Spoiler:
       Feito isso, execute o programa e veja que a barra de HP vai esvaziar lentamente. Quando estiver completamente vazia, a barra vai sumir, pois o obj_draw vai se destruir conforme programamos no script.

Argumentos:
       Muitos que tentam aprender a usar scripts não conseguem entender o que são argumentos... Essas mesmas pessoas usam argumentos o tempo todo e não sabem. Como foi dito anteriormente, toda função no GM é um script, logo, eles tem argumentos. Por exemplo, a função instance_create:
Spoiler:
Nesta função, temos três argumentos: argument0 (x), argument1(y) e o argument2(obj), sendo que, o script vai interpretar argument0 como 0, argument1 como 0 e argument2 como obj_draw. Ou seja, para o script, os argumentos são os valores que passamos quando o chamamos. É importante ressaltar que os argumentos, no ato de sua chamada, serão sempre correspondentes a sua posição, então, o primeiro sempre será o argumento 0, o segundo sempre o argumento 1, e assim por diante. Podemos usar de nenhum a até 16 argumentos (argument0 – argument15).

Aplicando argumentos:
       Agora que sabemos o que são argumentos, vamos editar o scr_morre e aplicar o novo conceito aprendido. Pra começar, vamos substituir o HP da condição do script por argument0, permitindo que outros objetos usem o script, mesmo que não tenham a variável HP.
Spoiler:
       Se você testar o jogo agora, perceberá que a barra vai sumir instantaneamente. Isso acontece porque não informamos para o script qual é o valor do argument0, logo, por padrão, o argument0 valerá zero. Para corrigir isso, devemos adicionar o argumento na chamada do script que está no step do obj_draw.
Spoiler:
       Testando o jogo, o script funcionará como o planejado. Agora, vamos encaixar mais um argumento nesse script, permitindo maior flexibilidade na hora de usar. Trocaremos a condição do script para executar a ação quando o argument0 for menor ou igual ao argument1.
Spoiler:
       Ao executar o jogo, ainda sim vai dar certo, pois como não passamos o valor do argument1, o mesmo valerá zero, ou seja, mantivemos a condição original. Para visualizarmos melhor, vamos colocar um valor para o argument1 na chamada do script e testar.
Spoiler:
      Testando o jogo, a barrinha vai sumir quando o HP for menor ou igual a 50. Com isso, sabemos que nosso script está funcionando perfeitamente.


Retornando Valores:
      Até o momento, só usamos scripts para executar ações, porém, em muitas situações nós usamos os scripts para fazer cálculos e nos retornar um resultado. Para tal, usamos a função return. Quando um script usa return, significa que o mesmo retorna um resultado que pode ser armazenado em uma variável ou usado diretamente. A função instance_create, por exemplo, além de criar um objeto em determinado lugar, ele retorna o ID da instância criada para que possamos usar depois.
Spoiler:
      Neste exemplo, armazenamos o ID da instancia criada na variável “obj”.

Usando return:
      No obj_draw, no evento draw, existe um código que serve para desenhar a barrinha. Repare que existe no argumento correspondente ao "amount" uma pequena equação matemática que simplesmente faz a famosa regra de três. Apesar de não ter muita necessidade, transformaremos a equação em um script para demonstrar o uso do return.
Spoiler:
      Vamos praticar todos os conceitos que vimos até aqui. Crie um novo script e dê o nome de scr_amount. Agora, coloque a equação neste script, substituindo HP por argument0. Depois disso, antes da equação e na mesma linha, acrescente o return, indicando que queremos que o script retorne o resultado.
Spoiler:
      Antes de testar, devemos chamar o script e passar os argumentos no draw do obj_draw. Como foi dito antes, o valor que o script retornou pode ser armazenado em uma variável ou usado diretamente, portanto, poderemos usar de duas maneiras:
      Armazenando em uma variável:
Spoiler:
      Usando diretamente:
Spoiler:
      É importante ressaltar um detalhe muito importante sobre o uso do return. Quando usado, todo o código que estiver depois dele não será executado, pois o script se encerrará. Veja o exemplo:
Spoiler:
      Se o argument0 valer 0, então o script vai retornar “Michael”. Se o argument0 valer 1, ele vai retornar “Willy” mas não vai executar o instance_destroy(). Se o argument0 valer 2, ele vai alterar a posição x para 10 e vai retornar “Jovem Maker”.  O script só retornará “GMBR” se argument0 valer qualquer outro valor, ou seja, se o case 0,1 ou 2 seja executado, o script não retornará GMBR.

Dica:
      Quando estamos digitando os argumentos de uma função, na parte inferior do creation code aparece o nome da função e o argumento que está sendo digitado em negrito.
Spoiler:
      Isso facilita muito, pois nem sempre sabemos quantos argumentos uma função/script tem e nem o que cada argumento corresponde. A partir da versão GM:S , é possível fazer o mesmo com script. Para isso, na primeira linha do script coloque três barras (///)e a forma como você quer que seja exibido. Veja por exemplo, o scr_morre:
Spoiler:
      Feito isso, quando estivermos preenchendo os argumentos, vai ficar assim:
Spoiler:
      Provavelmente você não sabia dessa. Eu também não! Quem me apresentou isso foi o Gonçalves, portanto, palmas para ele!

É isso ai galera! Este foi mais um tutorial. Espero que tenham gostado! Dúvidas, críticas, perguntas e sugestões são bem-vindas!
Até mais! blz
Em breve, este tutorial será feito em videoaula.

___________


Engines, tutoriais e projetos? Clique no banner!



Atenção:
Comporte-se, senão você vai levar a cintada do Willy no meio da bunda! bravo


Willy

Ranking : Nota A
Número de Mensagens : 1812
Idade : 23
Data de inscrição : 08/06/2009
Notas recebidas : C + B + A + A
Reputação : 245
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://willy-gmbr.blogspot.com/

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial] Scripts - Willy

Mensagem por PedroX em Ter 17 Dez 2013, 22:28

Um ótimo tutorial! Muito bem explicado. Gostei de aprender sobre as 3 barras.

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum