Grupos de Eventos

Introdução:
Eu poderia dizer que a principal função de grupos de eventos é organização. De fato, fica muito mais difícil nos perder em nosso código quando agrupamos um conjunto de eventos que possui uma mesma função, ou de função semelhante. Principalmente em jogos com muitos eventos. Leve em consideração que você pode dividir ainda mais eventos semelhantes com comentários (ex.: grupo de eventos relacionados à morte do personagem, pode-se separar os eventos de "Morte por tempo" dos de "Morte por falta de HP" utilizando comentários, a fim de organizar ainda mais). Quanto mais organizado, melhor. Além do mais, substituição de milhares de linhas de eventos por poucas de grupos faz você ficar bem mais relaxado, acredite.

Veja bem... uma Static Engine (Movimento Personalizado) precisa de vários eventos para serem feitos. Se você os deixa soltos, acaba misturando com eventos de inimigos, efeitos etc. Agora, pense que os eventos de cada função estão dentro de um grupo com o nome dela. Os eventos do movimento em um grupo chamado "Static Engine" (onde comentários dividem os eventos da movimentação e da animação), os dos inimigos em um grupo "Inimigos", e por aí vai.

Mas organização é o de menos quando falamos de Grupos de Eventos. Acontece que Grupos de Eventos possuem duas funções, além de organização: proteger determinado grupo com uma senha (se, por exemplo, você estiver com dúvida em algo e quiser mandar o source para as pessoas analisarem o que há de errado, pode proteger os demais eventos) e ativar/desativar os eventos de um grupo. Aprendamos, então, a como fazê-lo.

Criando um grupo:
Criar um grupo é simples em demasia. Apenas clique com o botão direito do mouse no número ao lado de New Condition , e vá em Insert > A group of events.

Faça isso.

Ok. Uma janela como esta vai se abrir, para você inserir os dados do grupo:


Em Title of the group, você coloca o nome do grupo.

Nos dois campos de Password protection, insira uma senha para o grupo ser acessado (lembra que eu disse que também era possível proteger um grupo com senha?). Isso fará com que sempre que alguém tentar abrir o grupo, seja necessário digitar uma senha. Se o grupo já estiver aberto ou se a pessoa quiser fechá-lo, não será necessária senha alguma, ela só é requisitada para abrir ou editar o grupo. O grupo, então, só se abrirá se ela estiver correta. A senha inserida nos dois campos deve ser exatamente igual. Se quiser deixar o grupo sem senha (pode ser aberto sem precisar inserir senha alguma), apenas deixe estes dois campos em branco.

A opção Active when frame starts, ao ser marcada, faz com que o grupo seja ativado por padrão. Desmarcá-la faz com que o frame já se inicie com o grupo desativado. Para saber mais acerca disto, leia o próximo tópico.

Ao terminar, clique em OK. Lembrando que você pode editar as configurações de um grupo a qualquer hora clicando com o botão direito do mouse em cima dele, e escolhendo a opção Edit (se o grupo estiver protegido por senha, será necessário digitá-la corretamente).

Bom, isso é tudo sobre criação de grupos. Vamos à parte mais importante da aula, agora...

Ativando/desativando um grupo:
Quando falamos em ativar ou desativar um grupo, estamos falando, na verdade, em ativar ou desativar os evento do mesmo. Ativando os eventos, eles irão agir como qualquer outro. Desativando, seria como se eles não existissem. Para entender melhor, um exemplo. Suponha que tenho este evento dentro de um grupo qualquer:

Start of frame
("Objeto") Destroy

Always
Center window position at ("Outro Objeto que não é o Objeto do evento anterior")

Pois bem. Se o grupo estiver ativado, tais eventos agirão. Ao iniciar o frame, destruir-se-á o objeto Objeto, e sempre a tela será posicionada em relação ao Outro Objeto que não é o Objeto do evento anterior! Todavia, se o grupo estiver desativado, esses eventos não agirão. Quando iniciar o Frame, nada acontecerá ao Objeto, já que o evento que o destruiria está atuando como "inexistente". Muito menos a tela será centrada no Outro Objeto que não é o Objeto do evento anterior, pois este evento também está atuando como "inexistente", uma vez que está dentro de um grupo desativado.

Isso é útil em demasia a fim de se fazer "upgrades" pro personagem em um jogo. Wallkicks, tiros carregáveis, dashs... tudo isso você programaria em grupos (um grupo para cada upgrade), e os ativa ou desativa, caso o herói tenha ou não conquistado as habilidades em questão, respectivamente. E antes que me perguntem, sim, eu estava pensando em Megaman X quando escrevi isso.

Mas enfim, como ativar ou desativar grupos? São poucos passos que vão mudar sua vida de maker no MMF2. Você só precisa ter o grupo a ser ativado/desativado em mãos, e criar a condição que mude seu estado. Então, nas Special conditions, vá em Group of events e escolha Activate para ativar e Deactivate para desativar!

Special conditions > Group of events > Activate/Deactivate

Certo. Então, uma janelinha se abrirá, para que você selecione o grupo que será ativado ou desativado. Escolha-o e clique em OK.

No caso, escolhendo um grupo para ser ativado. Quando você escolhe Deactivate, lá em cima fica escrito isso, e não "Activate", mas não tava a fim de fazer outra imagem por causa de uma porra de uma palavra '-'.

Talvez você esteja se perguntando se não dá no mesmo usar flags... realmente, dá. Mas isso é só pra se você quiser ficar perdendo tempo limitando o estado em que a flag deve estar. Pra muitos eventos, então? É bem mais fácil, rápido e organizado usar grupos de eventos para isso. Isso sem falar que flags são numeradas, e grupos nomeados. Mas enfim... fica a critério de cada um o que quer usar.

--//--

Bom, essa é uma das aulas mais importantes do nível básico... espero que tenham gostado!
Até a próxima! -^.^-

Flw.