Forums » RPG Maker XP

Entendendo de uma vez por todas: Variáveis - Aula 6

    • 404 posts
    29 de maio de 2015 15:58:02 ART

    Imagem Postada

     

    Sumário:

     

    Aula 1: Iniciando  -    Atribuindo valores às variáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . .  Clique aqui!
    Aula 2: Cálculos -  As operações básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Clique aqui!
    Aula 3: Programação -  Trabalhando variáveis com condições . . . . . . . . . . . . . . . . . . . . . . Clique aqui!
    Aula 4: Informação -  Atribuindo informações às variáveis . . . . . . . . . . . . . . . . . . . . . . . . . . Clique aqui!
    Aula 5: Localização - Utilizando Coordenadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Clique aqui!
    Aula 6: Complementar - Comandos adicionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Clique aqui!
    Aula 7: Final - Criando um mini-game Shot in Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Em breve



    :mrm=linha:
    :mrm=linha:

    Imagem Postada
    Comandos adicionais.



    :mrm=linha:
    :mrm=linha:

    Variáveis condicionais:

     

    Já vimos todos os modos de programar as variáveis, desde criar mini-quests utilizando condições e somas, até se localizar com coordenadas.
    Agora, iremos complementar nossa aula aprendendo onde e como utilizar alguns comandos com variáveis, que não foram explicados nas aulas anteriores.

    Apesar do nome, temos outro modo de trabalhar as variáveis com condições, porém sem necessariamente utilizar o comando de condições.
    Veja essa imagem:

    Imagem Postada

    No seu evento, abaixo das condicionais das switchs, você tem a opção “variável”.
    Aqui, nós iremos fazer o mesmo que faríamos com uma switch: Ativar uma página de determinado(s) evento(s). Só que a diferença entre uma switch e uma variável que ativa páginas de eventos, é que as switchs apenas ficam ON ou OF se algum outro comando mandar, porém, com as variáveis temos uma situação diferente, já que essa página só será ativada se a variável X (uma variável que você escolher) chegar a um determinado valor (que você também irá escolher).
    O que eu acho péssimo é que apenas podemos ter a opção “maior/igual” nas variáveis, ou seja, não podemos condicionar que algo ocorra se variável X diminuir e chegar a um valor desejado, apenas aumentar, fazendo assim nós termos que criar diversas “gambiarras”.
    Mesmo com esse ponto negativo, ainda podemos programar muitas coisas com essa condicional. Vamos como de costume a um exemplo?
    Que tal criarmos um simples e prático mini-abs para isso? Como de costume: Se encostarmos-nos ao inimigo, teremos que pressionar o botão de ataque, e claro... Ataca-lo. Do contrário, se não pressionarmos nada, ele (inimigo) que nos atacará.
    Se atacarmos o inimigo 5 (cinco) vezes, ele irá ser derrotado, e irá sumir do mapa. Vamos lá?

    Crie um evento dessa forma (se atente em todos os comandos e opções)

    Imagem Postada

    Acima temos tudo programado do que precisamos inicialmente: Leia com atenção o comentário em verde do comando, também.
    O que temos aqui? Se o personagem pressionar a tecla A ao encostar-se ao inimigo, ele irá receber uma animação de golpe, e depois será empurrado dois passos para trás.
    Se ao encostarmos-nos ao inimigo, e não pressionarmos a tecla de ataque, o inimigo irá nos dar um golpe (animação), seremos empurrados dois passos para trás também, e depois perderemos 200 de HP.
    Até aqui tudo tranquilo, correto? Porém, precisamos fazer com que de alguma forma ao atacarmos o inimigo, ele perca HP também! Ou... No caso aqui, aumente os pontos de danos!
    Dentro da condição de tecla, após o comando da animação do golpe, crie uma nova variável com o nome de “Danos do inimigo”.
    Agora determine um valor que será adicionado aos pontos de danos do inimigo. Eu irei colocar +1, mas você poderá definir a quantidade que preferir.

    Imagem Postada

    Certo, agora toda vez que o personagem atacar o inimigo, será adicionado aos pontos de danos dele +1.
    Agora, crie uma nova página nesse evento, e deixe sem gráfico.
    Feito isso, vamos criar nossa condicional, ou seja, quando a variável “Danos do inimigo” chegar a determinado valor, essa página do inimigo será ativada, onde não há nada, ou seja, o inimigo sumirá do mapa.
    Nessa segunda página do evento, marque a caixa “variável” da opção “condições do evento”, selecione a variável “danos do inimigo” e dentro do Box onde há o número zero, coloque a quantidade de danos que você deseja que o inimigo receba, ao ser atacado diversas vezes. Eu irei colocar 5 (cinco), ou seja, se atacarmos o inimigo cinco vezes, ele irá executar essa outra página do evento, onde ele irá sumir.

    Imagem Postada

    Rode o teste do jogo, e tente derrotar o inimigo, pressionando a tecla A ao encostar-se a ele! Quando você ataca-lo as cinco vezes ele irá sumir certo? Se sim, tudo deu certo!
    Esse processo de utilizar variáveis condicionais nas páginas de eventos, sem condições é muito eficaz e prático, e claro que o ABS mostrado aqui foi apenas um exemplo (pois ele é bem bugado) você poderá fazer diversas coisas com esse comando, basta a sua necessidade na programação.



    Definir teclas:

     

    Um comando que infelizmente as engines mais novas não possuem, é o comando “definir teclas” que em minha opinião pode ser bem útil e podemos utiliza-lo para outros fins, de um jeito que a condição de teclas não funcionaria.
    Vamos supor que o jogador deva pressionar a tecla “S” numa quest, e se ele por ventura pressionasse outro botão, o jogo daria game over.
    Claro que esse exemplo é bem improvável, mas se quiséssemos programar algo mais avançado, como por exemplo, um sistema de Guitar Hero, esse comando cairia muito bem.
    Mas, como não queremos deixar o tutorial enorme, iremos apenas utilizar esse exemplo citado por mim, anteriormente.
    O comando de definir teclas armazena o valor de uma variável nele, e com essa variável podemos criar uma condição de tecla, porém com números. É algo mais ‘livre’ que o comando “condição de tecla”.
    Vamos comparar a diferença entre ambos os comandos? Irei utilizar o exemplo da tecla S. Vamos primeiro programar com o definir teclas:
    Crie um novo evento em processo paralelo em seu mapa, e vá ao comando “Definir teclas”:

    Imagem Postada

    Uma janela assim irá aparecer:

    Imagem Postada

    Primeiramente você irá definir uma variável para trabalhar com o comando, no caso acima eu já defini uma variável, a variável de ID 5 com o nome de “Tecla”.
    Essa lista de números representa o valor de cada tecla nesse comando. 
    Então já que no exemplo o jogador deve pressionar a tecla “S”, eu irei criar uma condição com o número 15, vide a lista: S = 15. Se no caso fosse à tecla “Shift” seria o valor 11, e assim por diante...
    Dê ok, e como dito acima, crie uma condição utilizando a variável que armazena essa tecla, no meu caso a variável “Tecla” de ID 5.
    Em constante deixe o valor da tecla desejada, e como no exemplo a tecla é a S, deixarei o valor 15 na constante.
    Agora, dentro da condição, utilize um comando que demonstre que o jogador pressionou a tecla correta, eu apenas escrevi “Você venceu” com o comando de mostrar mensagens.
    Dentro da exceção desta condição, crie outra condição utilizando a mesma variável de tecla, com 15 novamente na constante, só que dessa vez marque a caixa “diferente”:

    Imagem Postada

    Dentro dessa outra condição, utilize o comando mostrar mensagens e escreva algo do tipo: “Errado”.

    Imagem Postada

    Isso significa que: se o jogador pressionar a tecla S, o comando de definir teclas vai armazenar o número 15 na variável, e a condição será executada, se a variável da tecla for igual a 15, a mensagem de sucesso irá aparecer, mas caso o jogador pressione qualquer tecla diferente da tecla S, a exceção será executada.
    Agora rode o teste do jogo e experimente: Primeiro pressione a tecla S. Tudo certo, não? Agora tente pressionar qualquer tecla dentre (A,D,Q,W,Z e X) e veja o que ocorre... A mensagem de erro aparece, certo? Se tudo isso ocorreu corretamente parabéns!
    Como eu já disse, esse exemplo é bem simples, mas com esse comando você poderá fazer grandes coisas.
    Mas você ainda não viu a diferença entre utilizar todo esse método do definir teclas, e do comando de condição de tecla, certo?
    Vamos ver isso agora! Apague tudo que fez até aqui, e iremos continuar com o exemplo da tecla S:
    Agora, crie uma condição de tecla, com a letra Y (caso não saiba, a letra “Y” corresponde à tecla S no RPG Maker).
    Agora faça o mesmo procedimento: Dentro da condição coloque a mensagem “Você venceu”. Na exceção, já que não podemos utilizar o comando “diferente da tecla Y” já que não estamos trabalhando com variáveis, utilize apenas o comando de mostrar mensagens e escreva “errado”. Rode o teste do jogo.
    Só de você entrar no jogo a mensagem de erro aparece, e isso ocorre porque o RPG Maker entende que como nenhuma tecla está sendo pressionada, nem mesmo a S, ele irá executar a exceção.
    Temos um modo de impedir isso, mas para isso acontecer, teremos que criar uma condição para cada tecla: A,D,W,Q,Z e X. Para só assim o RPG Maker entender que a mensagem de erro apareça ao pressionar uma dessas teclas citadas, e a mensagem de sucesso se pressionar S.
    Teremos então sete condições no final (uma para cada tecla) sendo que com o comando de “definir teclas” teremos apenas duas.
    Viram a diferença agora? Garanto que com o definir teclas, não irá gerar lag alguma no projeto, e ele é mais eficiente, evitando assim termos que programar várias condições.
    Agora que você aprendeu como utilizar/quando e de que forma, esse comando, você poderá criar vários projetos e sistemas como os de Guitar Hero ou Dance Revolution! Experimente!



    O resto de uma divisão:

     

    Nas aulas anteriores, eu prometi explicar como que o operador (%) funciona nas variáveis do RPG Maker.
    Como o título diz: “O resto de uma divisão”, ou seja, esse comando nada mais, nada menos serve para acessar o valor do resto de uma divisão entre variáveis.
    Ele é bastante utilizando se houver necessidade de fazermos algum comando que entre uma divisão, algo ocorra se o resto da mesma for X.
    Eu já o utilizei diversas vezes, para criar um sistema de HUD.
    Em minha opinião, esse comando é pouco usado se não houver necessidade de um cálculo para executarmos alguma informação com base de uma divisão, mas mesmo assim ele não deixa de ser importante.



    Teleporte através de variáveis:

     

    Você sabia que podemos teleportar eventos ou até mesmo o personagem, apenas utilizando variáveis de coordenadas?
    Vamos primeiro testar o teleporte de eventos (que só podem ser teleportados no mesmo mapa do personagem).
    Nós podemos fazer um exemplo de que o herói possui uma caixa, e se ele pressionar a tecla A, ele soltará a caixa no mapa.
    Para isso ocorrer, a caixa deve estar o tempo todo junto do herói no mapa, mas não iremos utilizar o comando “seguir herói”, pois ele é pouco eficiente.
    Nós podemos utilizar o comando de “posição do evento” e deixar para que a caixa sempre fique nas mesmas coordenadas do herói.
    Começando... Crie o evento da caixa no mapa em processo paralelo, e de preferência com o gráfico da mesma. Deixe marcada a opção “direção fixa” e crie uma switch qualquer com o nome de “Caixa” e deixe-a ON nessa página do evento em “condição do evento”.
    Agora, nos comandos de eventos crie duas variáveis armazenando as coordenadas X e Y do personagem no mapa:

    Imagem Postada

    Agora chame o comando “posição de evento” – que se encontra na pag.2 dos comandos de eventos, e faça o seguinte na janela que aparecer: 
    • Deixe marcada a opção “Este evento” e caso não esteja marcada, marque-a.
    • Set a opção “Especificar por variável”, e onde está pedindo as coordenadas X e Y, coloque as variáveis das coordenadas X e Y do personagem no mapa:

    Imagem Postada

    O que fizemos aqui? Primeiro armazenamos nessas duas variáveis, as coordenadas X e Y do personagem no mapa, e depois com o comando “posição do evento” iremos teleportar o evento da caixa sempre para as mesmas coordenadas X e Y do herói.
    Depois de tudo isso, utilize uma switch local para o RPG Maker executar a segunda página desse evento, onde iremos deixar a mesma com o gráfico da caixa, porém sem comandos.
    Agora, crie um segundo evento no mapa em processo paralelo, porém com uma condição da tecla A, e dentro desse comando deixe ON a switch “Caixa”.

    Imagem Postada

    Teste o jogo, e ande pelo mapa: Depois pressione a tecla A e veja o que ocorre: A caixa apareceu bem onde você estava, é algo como “jogar a caixa no mapa”.
    Esse sisteminha foi apenas um exemplo, e você poderá fazer diversos outros sistemas com o teleporte de eventos através de variáveis, como sistemas de projéteis ou bombas, por exemplo.
    E você não precisa necessariamente sempre teleportar o evento para as coordenadas do personagem, você pode teletransporta-lo para as coordenadas de outro evento, também.

    Teleporte do personagem:


     

    Assim como no teleporte através de eventos, você pode teleportar o personagem para as coordenadas X e Y de um evento qualquer no mapa. Basta utilizar o comando “Teletransporte” que também se encontra na página 2 dos comandos de eventos, e armazenar duas variáveis com as coordenadas X e Y de um evento no mapa, e criar uma terceira variável com o nome de “ID” que armazena justamente a ID do mapa, onde o personagem quer se teleportar: Para fazer isso com essa terceira variável, vá até a opção “Outro” e selecione “ID do mapa”:

    Imagem Postada

    Agora, com o comando de opções de variável, utilize novamente a variável “ID” e deixe sua constante igual a 1, já que estou no mapa 1.
    Agora, com o comando de teletransporte, marque a opção “especifique por variável” e coloque as respectivas variáveis nas opções que aparecerem: Variável de ID do mapa e as variáveis das coordenadas X e Y do evento no mapa:

    Imagem Postada

    Seu comando de evento ficará assim:

    Imagem Postada

    Agora, o personagem será teleportado para as coordenadas X e Y de determinado evento.
    Como eu sempre digo isso é apenas um exemplo, você poderá fazer o que desejar com esses comandos, agora que sabe como eles funcionam.




    :mrm=linha:
    :mrm=linha:

    Fim da sexta aula:

     

    Por enquanto o que temos é isso, em breve as outras partes dessa aula serão postadas, aguardem!
    Qualquer dúvida em relação à esta aula, podem postar no tópico.