domingo, 28 de fevereiro de 2010

Module VirtualKeys

Module VirtualKeys
por zecomeia

Introdução

Além de habilitar todas as teclas para o uso no RPGMaker, também é acompanhado de métodos que ajudaram na utilização das teclas, alguns tentam baseados em métodos já existentes no módulo Input, e outros totalmente novo ou incrementados.

Características

  • método #press?;
  • método #trigger?;
  • método #repeat?;
  • método #dir4 com algumas novidades;
  • método #dir8 com algumas novidades;
  • métodos para manipulação das funções GetKeyState e GetAsyncKeyState, usados na construção dos outros;
  • método #get_char que retorna a tecla pressionada(seguindo o padrão ABNT);
  • todas as características anteriores foram construídas em um módulo à parte e são totalmente independentes do módulo Input.
  • Não precisar usar um método de atualização como o módulo Input.
     
Como usar

Instale o script acima de qualquer script que o use.

*Caso use funções desse script em uma scene, de preferência não use atualize módulo Input no loop principal de sua scene, para evitar conflitos ou má performance deste script. Para isso, basta não colocar o método de módulo #update no loop da scene, veja:

RGSS:

Como no RGSS2 o método #main fica na superclasse de todas scenes, Scene_Base, então será preciso alterar o método #main na própria scene ao invés de modificar o método #main em Scene_Base(para não interferir nas outras, a menos que queira isso). Veja como ficaria:


Para usar os métodos de verificação #press?, #trigger?, #repeat? siga o exemplo:


*O argumento é um número inteiro, e segue a tabela das Virtual Keys encontrada no próprio módulo com todas as contantes definidas(seguindo valores hexadecimais).

Veja um exemplo do método #get_char :


Os métodos #dir4 e #dir8 têm o mesmo comportamento, porem, enquanto #dir4 analiza apenas as 4 direcionais para retornar um valor, #dir8 analiza também combinações entre as direções desde que não sejam opostas. Até aí sem novidades. Mas no módulo VirtualKeys ele agora recebeu 2 parâmetros de entrada, type e ignore_numpad. O primeiro pode ter 2 possíveis valores: 0=#press? ou 1=#trigger?. Isso vai mudar o método usado para analizar as teclas que movimentam o personagem. o argumento ignore_numpad quando true, não avaliará as teclas direcionais que compartilham espaço com os números no teclado numérico(1,2,3,4,6,7,8 e 9). Exemplo:


*Os valores padrões dos argumentos são (0,false).

Os métodos que chamam as funções GetKeyState e GetAsyncKeyState são, respectivamente, #gks e #gaks, onde #gks analisa o estado da tecla levando em consideração que pressionar a tecla uma vez ativa a tecla e outra desativa(ex: CAPS LOCK), enquanto #gaks analisan se a tecla está sendo pressionada(segurando a tecla). Para ambos, quando a tecla não está ativa o valor retornado é 0, caso contráro será retornado um número qualquer que não é possível prever.

Demo

RMVX
RMXP

Script



Créditos e Agradecimentos
Feito por zecomeia 
Constantes retiradas/pesquisadas de:
http://msdn.microsoft.com/en-us/library/ms927178.aspx
http://www.kbdedit.com/manual/low_level_vk_list.html

 

2 comentários:

  1. Muito daora, zecomeia... Você é um ótimo scripter!*-*

    Obrigado por disponibilizar!

    ResponderExcluir
  2. Obrigado você por comentar, isso é raridade por aqui.

    ahuahuahua

    Agora falando sério, que bom que gostou.

    (reportem bugs)

    T+

    ResponderExcluir