DevRPG2k
estão participando dessa conversa. 0 membros e 1 visitante (1 bot) estão vendo.
Qui, 13 de agosto de 2026, 19:33:59 - Última modificação: Sex, 14 de agosto de 2026, 19:53:35 por DevRPG2k
Imagine poder economizar varias Switches e controlar enviando apenas um número ao invés de vários comandos de liga ou desliga, esse sistema faz isso, e não se limita ao mapa em sim, as mesma variável pode ser usada para vários mapas como em uma Dungeon, basta inserir o valor de correspondente à ID da variável em cada mapa vinculado no enredo do seu jogo.
Essa tutorial é a versão da que ensina salvar 7 Switches em uma Variável, se você quiser acessar, aqui está o link:
[ Salvar 7 Switches em uma variável ]
E foi justamente por conta dessa tutorial que o CherryDT me de uma breve explicação de que poderia armazenar até 23 Switches em uma única variável, bastou tratar cada Switch como um binário para converte-los para um decimal, LEMBRANDO QUE RM2K3 NÃO TEM SUPORTE À SCRIPTS.
Foi neste momento que a minha cabeça explodiu, apesar de matemática não ser a minha área:

E após vários testes usando Javascript eu entendi como aplicar o valor negativo para conseguir usar uma 24ª Switch, que foi subtraindo o resultado da soma de todas as Switches se estivessem ligados.
Download do exemplo: [ MEDIAFIRE ]
Senha para extração: rpgmaker
Neste download contém os seguintes itens:
- Uma DEMO da versão para Rm2k3 1.12a que permite até 24 Switches
- Uma DEMO para Rm2k que permite até 20 Switches e pode ser usado em versões antigas do Rm2k3
- Um aplicativo HTML que você pode gerar os valores decimais para usar a variável Input.Decimal:

Então, com isso podemos usar valores decimais direto para ligar e desligar as Switches como que quisermos sem precisar criar vários eventos:
-
8388607ativará os primeiros 23 interruptores se for Rm2k3 -
-8388608ativará apenas o interruptor 24 -
524287ativará os primeiros 19 interruptores se for Rm2k -
-524288ativará apenas o interruptor 20 se for Rm2k -
-524288ativará os interruptor 20, 21, 23 se for Rm2k3 -
-1ativará todos os 24 interruptores se for Rm2k3 (8388607 - 8388608) - Este anterior ativará todos os 20 interruptores se for Rm2k (524287 - 524288)
-
5592405ativará apenas interruptores com ID com valor ímpar (Rm2k3) -
349525ativará apenas interruptores com ID com valor ímpar (Rm2k) -
-5592406ativará apenas interruptores com ID com valor par -
-349526ativará apenas interruptores com ID com valor par -
0vai desligar tudo - (Reservado para incluir mais exemplos)
Um exemplo usando ligando todas as Switches com ID par:

Aqui apenas para registro de como eu consegui criar cada etapa do sistema:
Como tornar estes valores em números binários já separando digito por digito?
Em Javascript bastaria usar o método String e separando cada digito em um Array para trabalhar.
Exemplo:
Porém neste caso precisamos de matemática pra aplicar nos Eventos, então se o valor da DECIMAL for negativo significa que a ultima Switch foi gravada no estado ON (true/1) e já pode ser resolvida no começo verificando isso.
E para voltar o DECIMAL para positivo basta somar o valor máximo que equivale a 23 primeiras Switches, neste caso 8388607 e somando mais 1 para pular a Switch[1], já que ela vai ser verificada à parte depois:

Agora para verificar se a Switch[1] está ligada é só verificar usando %2, já que é este o único que pode tornar o DECIMAL um valor ímpar:

Do Switch[2] até o penúltimo que é a Switch[23] poderá ser feito com um Loop já que a formula é a mesma sempre retirando do DECIMAL o resultado da anterior:
E quando ele chegar em 0 ou menor o Loop será encerrado.
Converter essa parte para Eventos necessitará de mais variáveis para as operações que não mudam o valor da variável DECIMAL:

Então agora é necessário o processo inverso, juntar todas as Switches e tratando como se fosse um numero binário, o que poderá ser um pouco mais difícil.
Se fosse fazer com Javascript apenas juntaria todos em sequencia, as Switches ON serão 1 e as OFF serão 0, formando um valor binário como String e convertendo para DECIMAL com parseInt.
Exemplo:
Mas no caso eu preciso que funcione nos Eventos, então criei isso em Javascript usando apenas matemática para testar mais facilmente antes de criar o Evento:
Agora nessa etapa eu tive que usar Loop para fazer o calculo de potencia (2**expoente) já que essa operação não existe nos Eventos, os únicos que não necessitam são 1, 2 e 3 que só ocorrerão uma vez:

Claro que esse calculo poderia ser feito de outra maneira, usando LABEL, mas a ideia é que se cara Switch ativada tiver a sua operação separada ficará mais fácil para o desenvolvedor recriar esse mesmo sistemas para um conjunto próprio de Switches e ainda compreender como a conversão dos números é feita.
E por fim a que mais simples, mas que foi a parte mais complexa quando eu estava estudando pra desenvolver esse sistema, a ultima Switch:

Com isso em mãos agora é só analisar a DEMO correspondente à sua versão do editor e recriar o sistema em base das suas Switches

