🤔 Para Refletir :
"Saber a hora de parar é quase tão importante quanto saber a hora de começar."
- Ricky O Bardo

Como controlar switch com script e usá-la no evento? (RGSS)

Estado
Tópico fechado. Não é possível fazer postagens nela.

Riven

Cidadão
Membro
Membro
Juntou-se
13 de Fevereiro de 2017
Postagens
133
Bravecoins
4
É de RGSS, RPG Maker XP
Olá programadores, estou tentando entender porque está dando erro nesse código que encontrei (num post que não existe mais, vi em cache do google, forum neoseeker) enquanto pesquisava como controlar
switchs com scripts e usá-la no evento:
#key = [map_id, event_id, 'local_switch']
#$game_local_switches[key] = true #or false
#$game_map.need_refresh = true  #é necessário sempre depois de atualizar uma switch
fonte: http://www.neoseeker.com/forums/22121/t1108950-advanced-local-switch-control-events/

Então o meu está assim:(evento) chamar script =>

@key = [1, 12, 'A']
$Game_SelfSwitches[1, 12, 'A'] = true
$game_map.need_refresh = true

coloquei 12 que é o id do meu evento, mas quando vi o erro tentei criar outros eventos e mudar mas o erro persistiu.

Então, estou tentando solução para após essa sequência utilizar uma condição e tal (que já tentei, mas devido ao erro, o jogo fecha antes de chegar nela)

O erro é: NoMethodError
  undefinied method  '[]=' for nil:NilClass

Ocorre após conversar com o evento que o chama (dento do evento só tem esse código), quanto ao projeto da onde está o evento, os scripts estão limpos (padrões), não tem scripts que podem causar conflito.

Agradeço quem puder ajudar

EDIT:
Pessoal, primeiramente peço desculpas por esquecer de dizer que eu é que modifiquei para $Game_SelfSwitches como tentativa de solucionar o erro de se usar como: $game_local_switches[[1, 12, 'A']] = true ,que parece que é o comando correto[segundo o autor], porém mesmo substituindo por ele dá o MESMO ERRO e fez com que eu buscasse uma alternativa, uma outra classe (até porque não encontrei a game_local_switches) que foi a Game_SelfSwitches(mesmo pondoem minusculo o erro continua)
O erro mantém-se como:  '[]=' for nil:NilClass

Mas o comando correto (o que foi orientado no link que coloquei) é mesmo $game_local_switches[[1, 12, 'A']] = true porém o erro é o mesmo. E essa classe parece que é oculta.
[member=770]Resque[/member]  e [member=8]FelipeFalcon[/member]

Se vocês souberem alguma outra maneira para controlar switch com script e usá-la em eventos ?



EDIT³: FELIPE FALCON RESOLVEU, Obrigado.
 
Olá Riven, tudo bem?

O erro que você está recebendo, nos informa muito sobre o problema (por incrível que pareça rs).

O erro é: NoMethodError
  undefinied method  '[]=' for nil:NilClass


No caso, ele está falando que não existe o método []= para algo que é nulo (nil).

Isso acontece exatamente nessa linha:

Código:
$Game_SelfSwitches[1, 12, 'A'] = true

Ao executar o comando, o Ruby está tentando fazer isso

nil[1, 12, 'A'] = true

O problema aqui é o $Game_SelfSwitches que está voltando nil (nulo).

Se você fizer isso antes de tudo:

Código:
p $Game_SelfSwitches

Você verá que o valor dele é nil, e não se pode fazer muitas coisas com isso.

Precisamos de alguma forma buscar o valor correto de $Game_SelfSwitches.

Tente verificar dentro do código, como ele é usado, onde está sendo chamado e quando ele é atribuído.

Após achar, poste aqui o resultado, que continuaremos.

Consegue fazer isso?
 
Olha não sei quanto ao RPG Maker XP, porque não tenho ele mais instalado aqui.

Porém, no rgss sempre vi/deve-se usar variáveis com letras minúsculas.

Acho que este pode ser o seu erro XD

Exemplo: Usei esse código aqui no VX Ace.

Código:
$game_self_switches[[$game_map.map_id, 34, "A"]] = true
 
Pessoal, primeiramente peço desculpas por esquecer de dizer que eu é que modifiquei para $Game_SelfSwitches como tentativa de solucionar o erro de se usar como: $game_local_switches[[1, 12, 'A']] = true ,que parece que é o comando correto[segundo o autor], porém mesmo substituindo por ele dá o MESMO ERRO e fez com que eu buscasse uma alternativa, uma outra classe (até porque não encontrei a game_local_switches) que foi a Game_SelfSwitches(mesmo pondoem minusculo o erro continua)
O erro mantém-se como:  '[]=' for nil:NilClass

Mas o comando correto (o que foi orientado no link que coloquei) é mesmo $game_local_switches[[1, 12, 'A']] = true porém o erro é o mesmo. E essa classe parece que é oculta.
[member=770]Resque[/member]  e [member=8]FelipeFalcon[/member]

Se vocês souberem alguma outra maneira para controlar switch com script e usá-la em eventos ?
 
[member=1196]Riven[/member]

Coloquei no evento, o código, em "Chamar Script":

Código:
$game_self_switches[[1, 2, "A"]] = true
$game_map.refresh

Funcionou normal... (Instalei o RPG Maker XP só pra isso .-.)

PS: Você colocou "local" e não "self".
 
FelipeFalcon comentou:
[member=1196]Riven[/member]

Coloquei no evento, o código, em "Chamar Script":

Código:
$game_self_switches[[1, 2, "A"]] = true
$game_map.refresh

Funcionou normal... (Instalei o RPG Maker XP só pra isso .-.)

PS: Você colocou "local" e não "self".
brrrrrothar como assim!? heheheaheh descobri o que era, você que veio do vx deve ter feito tão automatico de custume que n percebeu, mas valeu ter reinstalado o xp, pois o problema é justamente o código que o autor do post indicou, ele havia escrito: $game_local_switches[1,2,'A'] = true  que foi exatamente como eu escrevi no meu e fazenod assim dá erro pois o correto é _self_ ao invés de _local_ que foi o que você fez hehe.

Por ser uma classe que não aonde está pensei que era a mesma coisa que a Game_SelfSwitches que também não é, é realmente da forma como no que você faz no VX ACE $game_self_switches

Agradeço pela resolução brother [member=8]FelipeFalcon[/member] e [member=770]Resque[/member].
 
Estado
Tópico fechado. Não é possível fazer postagens nela.
Voltar
Topo Inferior