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

Ajuda com Menu via Eventos

Iniciado por Red, 29/03/2019 às 05:20

29/03/2019 às 05:20 Última edição: 09/04/2019 às 18:40 por ~Ragnar
Gente, to com um probleminha aqui no meu projeto. Fiz um menu via eventos (Já fiz outros dois assim e não tem bugs) e está meio que travando o computar ou o MV. Ao apertar as setas direita ou esquerda você muda uma variável em -1 ou +1, Se a variável for 3 ela vira 0 e se for -1 vira 2.

Variável = 0 = Iniciar Jogo
Variável = 1 = Carregar Jogo Salvo
Variável = 2 = Sair

A seguir tem os prints do evento:

Spoiler
[close]
Spoiler
[close]
Spoiler
[close]
Spoiler
[close]

Esses são somente dois eventos paralelos para movimentar os cursores:

Spoiler
[close]

Aqui tem um vídeo do problema, cuidado com o volume:



Consegui meu equilíbrio cortejando a insanidade.

Essa switch 0002 (que eu não sei o que faz) está ativa? Essa 0069 também, serve pra quê?

29/03/2019 às 06:32 #2 Última edição: 29/03/2019 às 06:40 por Crixus
Ficou bacana mesmo, ficará mais legal se tiver como impedir de usar o sceneManager.push(Scene_Load).

O comando é este:
DataManager.isAnySavefileExists()


Ele é Bolean, ou seja, retorna false se não existir "Saves" e retornará true se existir ao menos 1 save.

Vale lembrar que este comando funciona para ambos modos de jogo, seja via Navegador ou via local (Quando o jogo é um executavel no Windows).

Mas basta colocar ele numa condição com "Se não" ativado, basicamente ficará isto:



Sobre sua dúvida, eu vou ter que analisar bem o como você fez, pois eu teria feito de maneira bem mais separada para organizar, e provavelmente eu faria com colisão com o personagem, sendo que este ficaria transparente no mapa inicial.

29/03/2019 às 07:08 #3 Última edição: 29/03/2019 às 07:42 por ~Ragnar
Citação de: King Gerar online 29/03/2019 às 06:29
Essa switch 0002 (que eu não sei o que faz) está ativa? Essa 0069 também, serve pra quê?
Essa parte da switch 02 foi erro meu, mudei o numero pra 69 pra testar se tinha algum conflito com o plugin de fog do khas e esqueci de mudar essa parte ai.
Essa switch serve para mudar o nome da opção onde esta "Iniciar" muda pra "Continuar" que muda pra "Sair" que muda "Iniciar" de novo. Ela apaga as outras imagens e insere a nova de acordo com o valor da variável 01.

Crixus eu fiz a mudança, obrigado pela dica.
Acredito que descobri o problema, quando você aperta pra esquerda ou direita, ele continua se movendo, por isso o lag. percebi que o som de quando muda a opção não está travando e sim repetindo muitas vezes, pois as opções estão sendo mudadas muitas vezes.
Acredito que um plugin como o Full Keyboard module do VX Ace resolva isso, dai em vez de "Se: o botão [para direita] ou [para esquerda] está pressionado. Seria Se: Script: blablablabla.

Edit:Achei esse Plugin mas não sei usar.
https://dk-plugins.ru/mv/keyboard/full-input/
Consegui meu equilíbrio cortejando a insanidade.

Eu acredito que esse Plugin é funciona na versão 1.5 do RpgMV segundo a documentação, e na lista de Plugins do site este não aparece.

O meu Rpg Maker é o 1.6, eu consegui fazer um sistema desse com poucas linhas, mas ainda preciso transforma-lo num Plugin, por enquanto ele é um arquivo JS  aplicado diretamente no HTML:
<script  type="text/javascript" src="mais_teclas.js"></script>


Nele tem três tipos de condições:
  • Quando a tecla é apertada, ou seja não fica repetindo o evento
  • Quando a tecla está pressionada, ou seja, serve para tecla segurada
  • Quando a tecla está é solta, ideal para sistemas de ABS

Exemplos de uso:
<>Se : Script : js_keyDown == "h"
   <>Reproduzir SE : Decision2 (100, 100, 0)
   <>
  :Fim
<>


<>Se : Script : js_keyPress == "h"
   <>Controlar Variáveis : #XXXX contar += 1
   <>
  :Fim
<>



<>Se : Script : js_keyPress == "h"
   <>Controlar Switches : #0001 SpinDash = ON
   <>
  :Fim
<>


Se realmente ficar legal após testar em outras condições posto um tópico aqui.

Faz um tempo que parei com os menus por evento, mas acho que essas travadas aí se devem a: primeiro, faltam um tempo de respiro nesse ciclo, pois o pressionar de uma tecla dura uns 5 a 10 frames, e nisso, por no mínimo 5 frames seguidos a condição da tecla pressionada é dada como verdadeiro, e lida essas vezes ininterruptamente. Acho que um esperar 1 frame antes de fechar o ciclo daria um alívio ao sistema.

O segundo ponto é, pelo que me lembro, a condição por evento de pressionar tecla trabalha com o Input.isPressed, assim se tu apertar uma vez e manter a tecla pressionada o jogo continua computando que a tecla está pressionada. O Input.isTriggered só identifica o aperto e ignora que a tecla continua pressionada. O ponto negativo de mudar para ele é que manter a tecla pressionada não faria as opções mudarem, mas o Input.isPressed agrava o primeiro ponto.

Mas a parada das opções não mudarem foi resolvida? Eu acho desnecessário usar um código para usar o teclado inteiro somente por essa tela de título.

Citação de: King Gerar online 30/03/2019 às 15:25Mas a parada das opções não mudarem foi resolvida? Eu acho desnecessário usar um código para usar o teclado inteiro somente por essa tela de título.
Concordo com isso.

Serveria para um sistema que permitisse digitar o nome do personagem na entrada do jogo dentro do Canvas, mas devido as centenas de codificações isso poderia dar muito Bugs em computadores com layouts de teclado com caracteres especiais, como Ç, Ñ, ß, バ, 漢, etc.

Gente, estou em viagem e não trouxe meu notebook, só vou poder ver isso lá pro dia 07, que é quando eu volto pra casa.
Consegui meu equilíbrio cortejando a insanidade.

Olá meu povo cheguei em casa no domingo a noite e hoje peguei esse menu novamente e briguei com ele.

Depois de ter respirado por esse tempo, acabei resolvendo o problema sem utilizar plugins.
Ao apertar os botões esquerda ou direita, adicionei um "esperar: 10 quadros", isso fez com que parasse o loop do som ( depois usei isso pra quando não tiver savegame, reproduzir um som, isso bugou também e foi resolvido assim), também adicionei um "controlar switches: #0069 = ON", isso fez com que os nomes das opções mudasse, por exemplo: Iniciar ---> Continuar ---> Sair ---> Iniciar... (Antes isso só ocorria quando a váriavel 0001 ficava igual 3 ou -1).

E foi isso, vou tentar diminuir esse tempo de espera, se alguém tiver a mesma dúvida pode falar comigo. Peço para alguém da moderação trancar o tópico se for necessário ou deixá-lo aberto para caso alguém precise no futuro.
Consegui meu equilíbrio cortejando a insanidade.