🤔 Para Refletir
:
"O que importa não é se criticam ou elogiam seu jogo, mas como você lida com isso."
-
FL
Javascript está desativado. Para uma melhor experiência, por favor, habilite o javascript no seu navegador antes de prosseguir.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser .
As variáveis - Tutorial VI
Console.Write("Hello World!");
[box class=catbg4]
[/box]
[box class=catbg4]
Variáveis condicionais: [/box]
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:
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)
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.
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.
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.
[box class=catbg4]Definir teclas: [/box]
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:
Uma janela assim irá aparecer:
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:
Dentro dessa outra condição, utilize o comando mostrar mensagens e escreva algo do tipo: Errado.
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!
[box class=catbg4]O resto de uma divisão: [/box]
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.
[box class=catbg4]Teleporte através de variáveis: [/box]
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:
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:
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.
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:
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:
Seu comando de evento ficará assim:
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.
[box class=catbg4]Fim da sexta aula: [/box]
Por enquanto o que temos é isso, qualquer dúvida em relação à esta aula, podem postar no tópico.