Salvar 24 Switches em uma única variavel
0 membros e 1 visitante (1 bot) estão vendo este tópico no momento.
DevRPG2k
Membro
Salvar 24 Switches em uma única variavel
Usando apenas eventos
Seg, 27 de janeiro de 2025, 18:14:33 - Última modificação: Dom, 02 de fevereiro de 2025, 04:39:39 por DevRPG2k
Seg, 27 de janeiro de 2025, 18:14:33 - Última modificação: Dom, 02 de fevereiro de 2025, 04:39:39 por DevRPG2k
Seguindo a lógica de Binário para Decimal e vice-versa um dos responsáveis por legalizar o Rm2k e Rm2k3 me disse que seria possível salvar até 23 Switches em uma única variável, diferente das engines posteriores Rm2k(3) não possui Self-Switches, aquelas Switches para cada evento que não podem ser compartilhadas. Por padrão todos os eventos que dependam de uma mesma Switch serão ativados. Porém nesse sistema a lógica é usar uma ou mais variáveis para usar as mesmas Switches em vários mapas de modo que não sejam ativados ao mesmo tempo.
A ideia veio de um dos responsáveis por tornar os RPG Makers legalizados no Ocidente, CherryDT que também fez varias correções nos motores e nos editores.
No Rm2k3 nós podemos armazenar o máximo de 7 dígitos em uma variável, então no calculo de potencia chega até 23, já no Rm2k são apenas 6 dígitos, então podemos chegar até 19 Switches.
Vídeo do sistema funcionando:
Mas como converter um valor binário em decimal? Bem, neste caso eu usei uma formula matemática que:
A ideia veio de um dos responsáveis por tornar os RPG Makers legalizados no Ocidente, CherryDT que também fez varias correções nos motores e nos editores.
No Rm2k3 nós podemos armazenar o máximo de 7 dígitos em uma variável, então no calculo de potencia chega até 23, já no Rm2k são apenas 6 dígitos, então podemos chegar até 19 Switches.
Vídeo do sistema funcionando:
Mas como converter um valor binário em decimal? Bem, neste caso eu usei uma formula matemática que:
https://www.geeksforgeeks.org/binary-to-decimal/
Nesse caso é bem fácil criar com eventos, a parte chata é que não é possível verificar cada Switch sem criar um IF pra cada, como não preciso considerar se tiver OFF ficou bem mais limpo.
https://www.geeksforgeeks.org/decimal-to-binary/
Porém isso é bem complicado por eventos por que não tem comando para calculo de potencia, então usei ciclo pra contornar isso, por que se não cada condição ficaria maior e difícil de administrar.
Como a tag de BBCODE para códigos de SCRIPTs está com erro no CSS eu vou postar cada um em uma postagem abaixo, mas não a lista de eventos e sim a lógica aplicada.
No evento comum Var_to_Switches é necessário declarar a ID da primeira Switch 23 Switches definindo o valor da variável, no exemplo vou usar o valor 21, se for necessário mudar isso vai ter que mudar Switch por Switch no evento comum Switches_to_Variable:
Nesse caso é bem fácil criar com eventos, a parte chata é que não é possível verificar cada Switch sem criar um IF pra cada, como não preciso considerar se tiver OFF ficou bem mais limpo.
https://www.geeksforgeeks.org/decimal-to-binary/
Porém isso é bem complicado por eventos por que não tem comando para calculo de potencia, então usei ciclo pra contornar isso, por que se não cada condição ficaria maior e difícil de administrar.
Como a tag de BBCODE para códigos de SCRIPTs está com erro no CSS eu vou postar cada um em uma postagem abaixo, mas não a lista de eventos e sim a lógica aplicada.
No evento comum Var_to_Switches é necessário declarar a ID da primeira Switch 23 Switches definindo o valor da variável, no exemplo vou usar o valor 21, se for necessário mudar isso vai ter que mudar Switch por Switch no evento comum Switches_to_Variable:
@> Control Variables: [0009:Switch-Initial] == 21
Em cada mapa é necessário colocar um evento em processo paralelo que aponte a variável exclusiva do mapa e na sequencia chamar o evento que transcreve a variável para as Switches, digamos que eu queria que um mapa especifico fique registrado exclusivamente na variável 11, lembrando que esses variáveis não precisam ser sequenciais, ao contrário das Switches:
@> Control Variables: [0007:Divid/Base] == 11
@> Erase Event
Download:
https://www.mediafire.com/file/cokkwv3om2wiyi0/Rm2k-2k3-Switches_in_a_Variable.zip/file
A 24ª Switch é o valor negativo na variável (decimal) que vem da subtração do valor pelo limite total + 1.
No caso do Rm2k tem uma 20ª Switch.
Senha para descompactar: rpgmaker
DevRPG2k
Membro
Re: Salvar 24 Switches em uma única variavel
Seg, 27 de janeiro de 2025, 18:41:32
- Última modificação: Ter, 28 de janeiro de 2025, 20:48:47 por DevRPG2k
Variavel para Switches (Common Event -> Var_to_Switches):
@> Comment:
@> Control Switches: [0021..0043] = OFF
@> Comment:
@> Control Variables: [0008:Mod] = Variable [0007]
@> Control Variables: [0008:Mod] %= 2
@> Conditional Branch: Variable [0008:Mod] == 1
@> Comment: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@> Comment: INITIAL SWITCH
@> Comment: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@> Control Switches: Variable [0009] = ON
@>
: Branch End
@> Loop
@> Comment: RESET SWITCH
@> Control Switches: Variable [0009] = OFF
@> Control Variables: [0009:Switch-Initial] += 1
@> Control Variables: [0007:Divid/Base] -= Variable [0008]
@> Control Variables: [0007:Divid/Base] /= 2
@> Conditional Branch: Variable [0007:Divid/Base] < 1
@> Break Loop
@>
: Branch End
@> Control Variables: [0008:Mod] = Variable [0007]
@> Control Variables: [0008:Mod] %= 2
@> Conditional Branch: Variable [0008:Mod] == 1
@> Control Switches: Variable [0009] = ON
@>
: Branch End
@>
: Repeat Above
DevRPG2k
Membro
Re: Salvar 24 Switches em uma única variavel
Seg, 27 de janeiro de 2025, 18:43:34
Switches para variavel unica (Common Event -> Switches_to_Variable):
@> Control Variables: Variable [0010] = 0
@> Comment: :::::::::::::::::::::::::::::::::::::::::::::::
@> Conditional Branch: Switch [0021:Self_Switch1] is ON
@> Control Variables: Variable [0010] += 1
@>
: Branch End
@> Comment: :::::::::::::::::::::::::::::::::::::::::::::::
@> Conditional Branch: Switch [0022:Self_Switch2] is ON
@> Control Variables: Variable [0010] += 2
@>
: Branch End
@> Comment: :::::::::::::::::::::::::::::::::::::::::::::::
@> Conditional Branch: Switch [0023:Self_Switch3] is ON
@> Control Variables: [0007:Divid/Base] = 2
@> Control Variables: [0007:Divid/Base] *= 2
@> Control Variables: Variable [0010] += Variable [0007]
@>
: Branch End
@> Comment: :::::::::::::::::::::::::::::::::::::::::::::::
@> Conditional Branch: Switch [0024:Self_Switch4] is ON
@> Control Variables: [0007:Divid/Base] = 2
@> Control Variables: [0006:Exponent] = -2
@> Loop
@> Control Variables: [0007:Divid/Base] *= 2
@> Control Variables: [0006:Exponent] += 1
@> Conditional Branch: Variable [0006:Exponent] == 0
@> Break Loop
@>
: Branch End
@>
: Repeat Above
@> Control Variables: Variable [0010] += Variable [0007]
@>
: Branch End
@> Comment: :::::::::::::::::::::::::::::::::::::::::::::::
@> Conditional Branch: Switch [0025:Self_Switch5] is ON
@> Control Variables: [0007:Divid/Base] = 2
@> Control Variables: [0006:Exponent] = -3
@> Loop
@> Control Variables: [0007:Divid/Base] *= 2
@> Control Variables: [0006:Exponent] += 1
@> Conditional Branch: Variable [0006:Exponent] == 0
@> Break Loop
@>
: Branch End
@>
: Repeat Above
@> Control Variables: Variable [0010] += Variable [0007]
@>
: Branch End
@> Comment: :::::::::::::::::::::::::::::::::::::::::::::::
@> Conditional Branch: Switch [0026:Self_Switch6] is ON
@> Control Variables: [0007:Divid/Base] = 2
@> Control Variables: [0006:Exponent] = -4
@> Loop
@> Control Variables: [0007:Divid/Base] *= 2
@> Control Variables: [0006:Exponent] += 1
@> Conditional Branch: Variable [0006:Exponent] == 0
@> Break Loop
@>
: Branch End
@>
: Repeat Above
@> Control Variables: Variable [0010] += Variable [0007]
@>
: Branch End
@> Comment: :::::::::::::::::::::::::::::::::::::::::::::::
@> Conditional Branch: Switch [0027:Self_Switch7] is ON
@> Control Variables: [0007:Divid/Base] = 2
@> Control Variables: [0006:Exponent] = -5
@> Loop
@> Control Variables: [0007:Divid/Base] *= 2
@> Control Variables: [0006:Exponent] += 1
@> Conditional Branch: Variable [0006:Exponent] == 0
@> Break Loop
@>
: Branch End
@>
: Repeat Above
@> Control Variables: Variable [0010] += Variable [0007]
@>
: Branch End
@> Comment: :::::::::::::::::::::::::::::::::::::::::::::::
@> Conditional Branch: Switch [0028:Self_Switch8] is ON
@> Control Variables: [0007:Divid/Base] = 2
@> Control Variables: [0006:Exponent] = -6
@> Loop
@> Control Variables: [0007:Divid/Base] *= 2
@> Control Variables: [0006:Exponent] += 1
@> Conditional Branch: Variable [0006:Exponent] == 0
@> Break Loop
@>
: Branch End
@>
: Repeat Above
@> Control Variables: Variable [0010] += Variable [0007]
@>
: Branch End
@> Comment: :::::::::::::::::::::::::::::::::::::::::::::::
@> Conditional Branch: Switch [0029:Self_Switch9] is ON
@> Control Variables: [0007:Divid/Base] = 2
@> Control Variables: [0006:Exponent] = -7
@> Loop
@> Control Variables: [0007:Divid/Base] *= 2
@> Control Variables: [0006:Exponent] += 1
@> Conditional Branch: Variable [0006:Exponent] == 0
@> Break Loop
@>
: Branch End
@>
: Repeat Above
@> Control Variables: Variable [0010] += Variable [0007]
@>
: Branch End
@> Comment: :::::::::::::::::::::::::::::::::::::::::::::::
@> Conditional Branch: Switch [0030:Self_Switch10] is ON
@> Control Variables: [0007:Divid/Base] = 2
@> Control Variables: [0006:Exponent] = -8
@> Loop
@> Control Variables: [0007:Divid/Base] *= 2
@> Control Variables: [0006:Exponent] += 1
@> Conditional Branch: Variable [0006:Exponent] == 0
@> Break Loop
@>
: Branch End
@>
: Repeat Above
@> Control Variables: Variable [0010] += Variable [0007]
@>
: Branch End
@> Comment: :::::::::::::::::::::::::::::::::::::::::::::::
@> Conditional Branch: Switch [0031:Self_Switch11] is ON
@> Control Variables: [0007:Divid/Base] = 2
@> Control Variables: [0006:Exponent] = -9
@> Loop
@> Control Variables: [0007:Divid/Base] *= 2
@> Control Variables: [0006:Exponent] += 1
@> Conditional Branch: Variable [0006:Exponent] == 0
@> Break Loop
@>
: Branch End
@>
: Repeat Above
@> Control Variables: Variable [0010] += Variable [0007]
@>
: Branch End
@> Comment: :::::::::::::::::::::::::::::::::::::::::::::::
@> Conditional Branch: Switch [0032:Self_Switch12] is ON
@> Control Variables: [0007:Divid/Base] = 2
@> Control Variables: [0006:Exponent] = -10
@> Loop
@> Control Variables: [0007:Divid/Base] *= 2
@> Control Variables: [0006:Exponent] += 1
@> Conditional Branch: Variable [0006:Exponent] == 0
@> Break Loop
@>
: Branch End
@>
: Repeat Above
@> Control Variables: Variable [0010] += Variable [0007]
@>
: Branch End
@> Comment: :::::::::::::::::::::::::::::::::::::::::::::::
@> Conditional Branch: Switch [0033:Self_Switch13] is ON
@> Control Variables: [0007:Divid/Base] = 2
@> Control Variables: [0006:Exponent] = -11
@> Loop
@> Control Variables: [0007:Divid/Base] *= 2
@> Control Variables: [0006:Exponent] += 1
@> Conditional Branch: Variable [0006:Exponent] == 0
@> Break Loop
@>
: Branch End
@>
: Repeat Above
@> Control Variables: Variable [0010] += Variable [0007]
@>
: Branch End
@> Comment: :::::::::::::::::::::::::::::::::::::::::::::::
@> Conditional Branch: Switch [0034:Self_Switch14] is ON
@> Control Variables: [0007:Divid/Base] = 2
@> Control Variables: [0006:Exponent] = -12
@> Loop
@> Control Variables: [0007:Divid/Base] *= 2
@> Control Variables: [0006:Exponent] += 1
@> Conditional Branch: Variable [0006:Exponent] == 0
@> Break Loop
@>
: Branch End
@>
: Repeat Above
@> Control Variables: Variable [0010] += Variable [0007]
@>
: Branch End
@> Comment: :::::::::::::::::::::::::::::::::::::::::::::::
@> Conditional Branch: Switch [0035:Self_Switch15] is ON
@> Control Variables: [0007:Divid/Base] = 2
@> Control Variables: [0006:Exponent] = -13
@> Loop
@> Control Variables: [0007:Divid/Base] *= 2
@> Control Variables: [0006:Exponent] += 1
@> Conditional Branch: Variable [0006:Exponent] == 0
@> Break Loop
@>
: Branch End
@>
: Repeat Above
@> Control Variables: Variable [0010] += Variable [0007]
@>
: Branch End
@> Comment: :::::::::::::::::::::::::::::::::::::::::::::::
@> Conditional Branch: Switch [0036:Self_Switch16] is ON
@> Control Variables: [0007:Divid/Base] = 2
@> Control Variables: [0006:Exponent] = -14
@> Loop
@> Control Variables: [0007:Divid/Base] *= 2
@> Control Variables: [0006:Exponent] += 1
@> Conditional Branch: Variable [0006:Exponent] == 0
@> Break Loop
@>
: Branch End
@>
: Repeat Above
@> Control Variables: Variable [0010] += Variable [0007]
@>
: Branch End
@> Comment: :::::::::::::::::::::::::::::::::::::::::::::::
@> Conditional Branch: Switch [0037:Self_Switch17] is ON
@> Control Variables: [0007:Divid/Base] = 2
@> Control Variables: [0006:Exponent] = -15
@> Loop
@> Control Variables: [0007:Divid/Base] *= 2
@> Control Variables: [0006:Exponent] += 1
@> Conditional Branch: Variable [0006:Exponent] == 0
@> Break Loop
@>
: Branch End
@>
: Repeat Above
@> Control Variables: Variable [0010] += Variable [0007]
@>
: Branch End
@> Comment: :::::::::::::::::::::::::::::::::::::::::::::::
@> Conditional Branch: Switch [0038:Self_Switch18] is ON
@> Control Variables: [0007:Divid/Base] = 2
@> Control Variables: [0006:Exponent] = -16
@> Loop
@> Control Variables: [0007:Divid/Base] *= 2
@> Control Variables: [0006:Exponent] += 1
@> Conditional Branch: Variable [0006:Exponent] == 0
@> Break Loop
@>
: Branch End
@>
: Repeat Above
@> Control Variables: Variable [0010] += Variable [0007]
@>
: Branch End
@> Comment: :::::::::::::::::::::::::::::::::::::::::::::::
@> Conditional Branch: Switch [0039:Self_Switch19] is ON
@> Control Variables: [0007:Divid/Base] = 2
@> Control Variables: [0006:Exponent] = -17
@> Loop
@> Control Variables: [0007:Divid/Base] *= 2
@> Control Variables: [0006:Exponent] += 1
@> Conditional Branch: Variable [0006:Exponent] == 0
@> Break Loop
@>
: Branch End
@>
: Repeat Above
@> Control Variables: Variable [0010] += Variable [0007]
@>
: Branch End
@> Comment: :::::::::::::::::::::::::::::::::::::::::::::::
@> Conditional Branch: Switch [0040:Self_Switch20] is ON
@> Control Variables: [0007:Divid/Base] = 2
@> Control Variables: [0006:Exponent] = -18
@> Loop
@> Control Variables: [0007:Divid/Base] *= 2
@> Control Variables: [0006:Exponent] += 1
@> Conditional Branch: Variable [0006:Exponent] == 0
@> Break Loop
@>
: Branch End
@>
: Repeat Above
@> Control Variables: Variable [0010] += Variable [0007]
@>
: Branch End
@> Comment: :::::::::::::::::::::::::::::::::::::::::::::::
@> Conditional Branch: Switch [0041:Self_Switch21] is ON
@> Control Variables: [0007:Divid/Base] = 2
@> Control Variables: [0006:Exponent] = -19
@> Loop
@> Control Variables: [0007:Divid/Base] *= 2
@> Control Variables: [0006:Exponent] += 1
@> Conditional Branch: Variable [0006:Exponent] == 0
@> Break Loop
@>
: Branch End
@>
: Repeat Above
@> Control Variables: Variable [0010] += Variable [0007]
@>
: Branch End
@> Comment: :::::::::::::::::::::::::::::::::::::::::::::::
@> Conditional Branch: Switch [0042:Self_Switch22] is ON
@> Control Variables: [0007:Divid/Base] = 2
@> Control Variables: [0006:Exponent] = -20
@> Loop
@> Control Variables: [0007:Divid/Base] *= 2
@> Control Variables: [0006:Exponent] += 1
@> Conditional Branch: Variable [0006:Exponent] == 0
@> Break Loop
@>
: Branch End
@>
: Repeat Above
@> Control Variables: Variable [0010] += Variable [0007]
@>
: Branch End
@> Comment: :::::::::::::::::::::::::::::::::::::::::::::::
@> Conditional Branch: Switch [0043:Self_Switch23] is ON
@> Control Variables: [0007:Divid/Base] = 2
@> Control Variables: [0006:Exponent] = -21
@> Loop
@> Control Variables: [0007:Divid/Base] *= 2
@> Control Variables: [0006:Exponent] += 1
@> Conditional Branch: Variable [0006:Exponent] == 0
@> Break Loop
@>
: Branch End
@>
: Repeat Above
@> Control Variables: Variable [0010] += Variable [0007]
@>
: Branch End