O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Local Switches no RM2K/2K3

Iniciado por K.A.O.S, 24/09/2013 às 14:18

 Este tutorial irá lhe ensinar como  guardar um grupo de switches dentro de variáveis, permitindo o uso da mesma switch em todos os mapas sem se preocupar com o estado dos eventos antigos que também usam a tal switch.

É possível guardar cerca de 24 switchs em uma variável. Isto pode ser feito tratando um grupo de switchs como numeros binários!

Então, para fazer isso nós estaremos criando 2 eventos comuns: Switch encoding e Switch decoding, ambos como  Call event.
  O Encoding será responsável por transformar o valor das switchs em binários, enquanto o decoding irá converter os binários de volta a switches.

Para realizar alguns dos procedimentos deste tutorial, faremos uso de Pointers(termo conhecido entre programação) para facilitar e agilizar o processo todo.

Primeiro passo

  Para converter um grupo de switches para um número comum, você precisará apontar a variável que você quer usar, coloque a configuração desta como Set 0, e some 2 ao N. (confuso? Vou explicar :LOL:)
Basicamente isso significa que caso a primeira switch esteja ativada você irá somar 1(2^0), caso a segunda esteja ativada será 2(2^1), terceira 4(2^2) e assim por diante.


  • Crie uma váriavel com o nome Switch Set Pointer, porem ao invés desta variável ser tratada como Single Variable, iremos utilizar a opção Variable Reference. Set value deve ser zero.



  • Crie uma IF(sem ELSE case), utilizando uma switch com o nome Local Switch 1
  • Dentro desta switch, utilize a variável que criamos no passo anterior, com a mesma opção marcada. A unica diferença será que ao invés de set 0 iremos somar 1(ou seja, add/+ 1)
  • Crie outras 9 IFs seguindo o padrão ensinado acima, podem cada IF deverá ter uma switch unica(segunda if deverá ser chamada Local Switch 2, terceira será Local Switch 3...) e dentro de cada IF iremos alterar o valor da variável, sempre multiplicando por 2.(lembra a explicação no inicio do passo?)

Ao fazer isso você já vai estar ensinando ao maker como tratar as switchs como valores normais, transformando elas em variáveis. O evento deverá ficar desta forma:



Segundo passo

Para decodificar uma variável em switches nós precisaremos primeiro desativar todas switchs que estamos usando e então setar a variável "Temp Var A" como Start ID das switchs que estamos usando. Com isso, faremos o upload do valor que queremos decodificar em uma variável temporária.
Feito isso, poderemos usar algoritmos normalmente para alternar a switch entre números normais e binários.
Iremos pegar o valor desta variável temporária e usar MOD 2 nela(binário = base 2). Se a operação de módulos voltar o valor 1, então a atual switch apontada pela Temp Var A será ativada. Após isso nós iremos acrescentar o valor 1 a esta variável, ativando assim a switch seguinte. Dividiremos por 2 e iremos checar se o valor temporário obtido é maior que 0. Caso seja nós continuaremos com o loop até que o valor mude.
No final, isso irá tornar cada valor da variável em um correspondente grupo de switchs. Vamos ao passo-a-passo.

  • Desative todas as switchs usadas(Local Switch 1~Local Switch 10)
  • Crie uma variável comum(sem a opção que usamos acima) com o nome Temp Var A, seu valor deve ser igual a 0.
  • Crie outra variável com o nome Encoded  Value, na mesma janela você deverá usar a opção Value Stored in Index com a váriavel Switch Set Pointer, também deixe o valor como igual.



  • Crie uma Label(Ciclo) e coloque o valor 1
  • Crie uma nova variável temporária com o nome Temp Var B, utilize o mesmo procedimento anterior, porem no lugar de Switch Set Pointer nós usaremos/criaremos a variável Encoded Value.
  • Crie novamente uma operação com variáveis, porem desta vez utilizaremos a recente criada Temp Var B, com a opção Modulus(+/- na versão Brasileira do rpg maker) com o valor 2.
  • Crie uma IF com a variável Temp Var B, configuração deve ser "caso for igual a 1"
  • Dentro desta IF, você usará a opção de mudar switch, porem utilizará a opção Variable Reference, com a variável Temp Var A como ativada.



  • Fora desta IF, crie outra operação com variáveis utilizando a Temp Var A, selecionando a opção somar(+) com o valor 1
  • Novamente, crie outra operação com variáveis utilizando a Encoded Value, selecione a opção dividir e o valor deve ser 2.
  • Crie uma IF utilizando a variável Encoded Value, sua configuração deve ser como "Greater than/Maior que" 0
  • Dentro desta IF, crie um Jump to Label no com o número 1.



Ultimo passo

A parte difícil do tutorial já passou, tudo que nos resta fazer é mostrar ao sistema que as switchs foram usadas e que queremos que elas sejam guardadas, para que na próxima área eu possa usar elas novamente.

Basicamente, vocês vão entender a lógica de todos os procedimentos acima a partir deste passo.


  • No evento de teleporte, coloque sua animação padrão de esconder a tela.
  • Crie uma operação de variáveis utilizando a variável Switch Set Pointer com o valor igual a 1.
  • Utilize a opção Call Event e selecione o evento comum Switch Encoding.
  • Novamente, crie uma operação de variáveis utilizando a variável Switch Set Pointer, porem desta vez o valor deve ser igual a 2.
  • Utilize novamente a opção Call Event e selecione o evento comum Switch Decoding
  • Coloque a ação de teleportar para o mapa desejado e em seguida a animação de mostrar tela desejada.



O valor Switch Set Pointer na imagem está diferente por  fazer parte do tutorial original, porem sigam os passos que descrevi normalmente pois o resultado será o mesmo.

O que fizemos aqui?

Esta é a melhor parte! Notaram como usamos a variável Switch Set Pointer? Antes de teleportar para o novo mapa, nós demos um valor a ela, chamamos um evento e depois demos o valor 2 a mesma.

Isso significa que o set de switchs atribuído ao valor 1 será diferente do set atribuído ao valor 2, possibilitando então o uso de local switches no rpg maker 2000/2003!

Cada valor dado a esta variável irá agir como um novo grupo de 10 switchs locais. Utilizando o exemplo acima, caso você esteja no mapa que demos o valor 2(que também usa o sistema), você só precisa inverter os valores! No caso, na primeira Switch Set Pointer você altera o valor para 2 e na segunda o valor deve ser 1.

Este sistema permite que você multiplique essas 10 switchs infinitamente, já que cada valor da Switch Set Pointer equivale a um grupo individual.

As switchs que devem ser usadas são as 10 Switch Local que criamos no inicio do tutorial, porem como também mencionei este valor pode ser alterado para 24 switches.

Vantagens de usar este sistema:


  • Permite copiar e colar eventos que usam as switchs locais entre mapas sem medo de bugs.
  • Permite que o código de seu projeto fique mais limpo.
  • Lhe da mais espaço na lista de switchs para trabalhar em outros fatores.
  • Pratico e eficiente.

Tutorial original por: Kazesui
Tradução e adaptação por: K.A.O.S
Clique nas imagens p/ visualizar as aulas