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

Mudar gráfico enquanto botão estiver apertado.

Iniciado por HammerStrike, 25/07/2018 às 08:31

25/07/2018 às 08:31 Última edição: 25/07/2018 às 23:44 por King Gerar
Olá. to criando uma habilidade que é ativada ao apertar um botão, porem eu queria que deixar uma a condição de que quando o jogador apertar o botão "X" e o mantiver pressionado o charset vai mudar para outro com animação parada ativa, e ao para de pressionar o botão o charset deveria voltar ao gráfico original.

Como posso fazer isso por script?
Hammer Strike

é mesmo preciso fazer isso por script?

os eventos também podem ser chamados em script por comandos, se for um evento comum.

A Menos que isto seja para um sistema de batalha como por exemplo batalha de primeira pessoa do VX Ace não vejo a necessidade de usar um script.

Citação de: makergame2000 online 25/07/2018 às 08:42
é mesmo preciso fazer isso por script?

os eventos também podem ser chamados em script por comandos, se for um evento comum.

A Menos que isto seja para um sistema de batalha como por exemplo batalha de primeira pessoa do VX Ace não vejo a necessidade de usar um script.

Script de comando deve funcionar também. Eu tentei fazer por condições e tal mais não funciona direito, mas não precisa necessariamente ser script.
Hammer Strike

Eu há uns bons anos fiz um sistema de eventos +- parecido com o que está pedir, eu até poderia adaptar para você mas só tenho o RMXP instalado.

https://centrorpg.com/index.php?topic=4556.0
Tente talvez o adaptar.



Agora se quer por scripts, eu já algum tempo que não mexo em Ruby portanto não poderei fazer muito agora.

Mas se você quiser fazer por Evento Comum e chamar por script existe um comando simples para isto, pode saber mais dele neste tópico https://www.rpgmakercentral.com/topic/19427-calling-a-common-event-from-a-script/

Então, não sabendo redigir códigos, seria uma boa tentar fazer mesclando os comandos por eventos e os chamar script, como o makergame falou.

De início seria bom ser em evento comum, para que funcione em todos os mapas sem a necessidade de ter um evento em cada um. Processo paralelo para não impedir ou ser impedido por outros eventos e uma switch para tu ter controle; talvez em alguma cutscene tu não queira este evento funcionando, ou mesmo para testar incompatibilidades.

Primeiro tu vai criar a condição que checa se a tecla X está pressionada, afinal é o ativador do sistema. Isso é feito pelo código abaixo e tu vai por ele na condição, por script. Deixa a exceção dessa condição aberta, pois precisaremos dela.

Input.press?(:X)


Dentro da condição, caso seja verdadeira, tu vai verificar se o gráfico do jogador já foi mudado, pois caso já tenha sido, significa que a tecla X já está sendo pressionada há algum tempo. Isso evita que o gráfico fique sendo mudado insistentemente, comendo processamento e pesando o sistema. Essa condição evitará que a mudança de gráfico seja lida repetidamente e pode ser feita pelo código abaixo. Só que, ao invés de verificar se o gráfico do jogador é o especificado, verificaremos se o gráfico é diferente do especificado.

$game_player.character_name != "Nome_do_gráfico"


"Nome_do_gráfico" será o nome do arquivo correspondente ao que o personagem irá assumir enquanto a tecla estiver pressionada. Dentro desta condição tu vai colocar um Mudar Gráficos do Jogador, que mudará para o gráfico desejado, e um Definir Rota de Movimento, em que tu ativará a animação fixa.

Na exceção da primeira condição, tu vai colocar uma condição semelhante à feita anteriormente, porém, verificando se o gráfico é igual ao desejado quando o jogador estiver com o botão pressionado. Ele servirá para, quando o botão não estiver pressionado, verificar se o gráfico ainda está alterado. Se tiver, ele irá "resetar" o gráfico, se não, irá ignorar e continuar o processamento. Assim como a condição anterior, é bem útil para evitar processamento desnecessário. Para verificar se o jogador está com um gráfico em específico é o mesmo código de antes, só que com o sinal trocado.

$game_player.character_name == "Nome_do_gráfico"


Dentro dessa condição tu reseta o gráfico e desativa a animação fixa. Por fim, a pequena programação deve ficar similar à da imagem. Espero que seja o que esteja procurando. Qualquer problema que tiver ao replicar tu manda aí, talvez queira adicionar mais algo. Um sonzinho, talvez? Mas antes de olhar na imagem e fazer igual, peço que tente bolar o sistema a partir do prescrito no tópico, seria bom pro entendimento.  :ok:


Funcionou Gerar! Vlw pela dica.
Hammer Strike