RPG Creator : créez votre MMORPG ou RPG sans aucune connaissance en programmation


Disponible le 4 Juin !




- Jouez à votre jeu sur tablettes tactiles, Smartphones et navigateurs Web
- Personnalisez vos menus
- Dessinez facilement et rapidement vos cartes
- Créez des actions pour le combat A-RPG


www.rpgcreator.net


Heures au format UTC + 1 heure [ Heure d’été ]


Règles du forum


Consultez la liste des Scripts : cliquez ici



Publier un nouveau sujet Répondre au sujet  [ 3 messages ] 
Auteur Message
 Sujet du message: Gestion étendue du clavier (très simple d'utilisation)
MessagePublié: 02 Nov 2011, 22:46 
Bourgeois (Nv 2)

Inscrit le: 12 Aoû 2006, 00:00
Messages: 235
Points d'aide: 37/60

Créations :

Voir ses créations

Bonsoir à tous,

Je ne suis pas passé ici depuis... Longtemps. Petit instant de nostalgie.

Je l'ai pas trouvé dans les scripts proposés, donc voici une version très simple d'utilisation de la gestion du clavier (faite par TLN et moi il y a... Je sais plus..)

:arrow: Comment que ça marche ?

En event, très simplement : "Condition...", quatrième onglet, sélectionner "script" et entrer :
Code: Tout sélectionner
press "a"

* La condition sera remplie si la touche a est enfoncée


Code: Tout sélectionner
trigger "b"

* La condition sera remplie si la touche b est cliquée


La liste des touches est dans le script. Vous pouvez changer les champs à votre aise ("sg" et "click gauche" corresponde à la même touche) ainsi que les noms des méthodes.

En script (en ruby), de la même façon, sauf qu'il faut penser à mettre à jour avec Input.update.

:arrow: Comment installer le script ?

En plaçant ceci avant Main dans la liste des scripts.

Code: Tout sélectionner
#===================================
# Clavier
#---------------------------------------------------------------
# Gestion avancée du clavier (script et event)
#===================================
Press = Win32API.new("user32","GetKeyState",['i'],'i')
#---------------------------------------------------------------
# Si la touche est cliquée
#---------------------------------------------------------------
def trigger(n)
  R[n][1]
end
#---------------------------------------------------------------
# Si la touche est pressée
#---------------------------------------------------------------
def press(n)
  (Press.call(TAB_KEY[n]) != 0 and Press.call(TAB_KEY[n]) != 1)
end
#---------------------------------------------------------------
# Si la touche est pressée - Seconde version
#---------------------------------------------------------------
def repeat(n)
  if Graphics.frame_count % 4 == 3
    return press(n)
  else
    return false
  end
end
#---------------------------------------------------------------
# Mise à jour du système
#---------------------------------------------------------------
class Keys
  def Keys.update()
    TAB_KEY.keys.each do |n|
      m = R[n][0]
      pr = (Press.call(TAB_KEY[n]) != 0 and Press.call(TAB_KEY[n]) != 1)
      tr = (pr&&!m)
      R[n] = [pr, tr, m]
    end
  end
end
#--------------------------------------------------------------
# Inclusion de le module Input
#--------------------------------------------------------------
module Input
  module_function
  class << self
    alias update_02112011 update
  end
  def update
    Keys.update()
    update_02112011()
  end
end
# Tableau avancé des touches
TAB_KEY = {
"click gauche" => 1,
"sg" => 1,
"click droit" => 2,
"sd" => 2,
"click milieu" => 4,
"sm" => 4,
"del" => 8,
"tab" => 9,
"enter" => 13,
"shift" => 16,
"pause" => 19,
"maj lock" => 20,
"esc" => 27,
"space" => 32,
"pg up" => 33,
"pg down" => 34,
"end" => 35,
"home" => 36,
"left" => 37,
"up" => 38,
"right" => 39,
"down" => 40,
"select" => 41,
"print" => 42,
"impr" => 43,
"insert" => 44,
"suppr" => 46,
"a" => 65,
"b" => 66,
"c" => 67,
"d" => 68,
"e" => 69,
"f" => 70,
"g" => 71,
"h" => 72,
"i" => 73,
"j" => 74,
"k" => 75,
"l" => 76,
"m" => 77,
"n" => 78,
"o" => 79,
"p" => 80,
"q" => 81,
"r" => 82,
"s" => 83,
"t" => 84,
"u" => 85,
"v" => 86,
"w" => 87,
"x" => 88,
"y" => 89,
"z" => 90,
"0" => 96,
"1" => 97,
"2" => 98,
"3" => 99,
"4" => 100,
"5" => 101,
"6" => 102,
"7" => 103,
"8" => 104,
"9" => 105,
"*" => 106,
"+" => 107,
"num" => 108,
"-" => 109,
"." => 110,
"/" => 111,
"F1" => 112,
"F2" => 113,
"F3" => 114,
"F4" => 115,
"F5" => 116,
"F6" => 117,
"F7" => 118,
"F8" => 119,
"F9" => 120,
"F10" => 121,
"F11" => 122,
"F12" => 123,
"lmaj" => 160,
"rmaj" => 161,
"ctrl" => 162,
"lctrl" => 162,
"rctrl" => 163,
"lalt" => 164,
"ralt" => 165,
"," => 188
}
# Tableau relatif pour les booléens
R = TAB_KEY.clone
R.keys.each do |k|
  R[k] = [false, false, false]
end


------------------------------------------------------------------------------

Pour les amateurs de ruby, une petite explication de la mise à jour :

TAB_KEY contient une série de champs correspondant chacun à un nombre (l'index de la touche du clavier correspondante)

R contient la même série de champs, mais correspondant cette fois à un tableau de booléen de ce modèle :
[la touche est elle enfoncée ?, la touche est elle cliquée ?, la touche était elle enfoncée la fois d'avant ?]

* Petit détail de la manip pour la mise à jour

Boucle pour chaque champs de TAB_KEY (variable n)
TAB_KEY.keys.each do |n|

m c'est "la touche était elle enfoncée la fois d'avant ?", on lui assigne donc le premier booléen du tableau.
m = R[n][0]

pr c'est si la touche est enfoncée, on fait appel à Press (une librairie API) pour le savoir.
pr = (Press.call(TAB_KEY[n]) != 0 and Press.call(TAB_KEY[n]) != 1)

tr c'est si la touche est cliquée, on lui assigne la valeur suivante : pr et non m

c'est à dire : la touche est elle enfoncée ? et la touche n'était elle pas enfoncée avant ?
tr = (pr&&!m)

------------------------------------------------------------------------------

En principe ça devrait fonctionner sur VX mais je ne l'ai jamais utilisé que sur XP.



C'était la petite contribution posthume de corbaque :D


Haut
 Profil  
 
 Sujet du message: Re: Gestion étendue du clavier (très simple d'utilisation)
MessagePublié: 09 Nov 2011, 14:10 
Villageois (Nv 4)
Avatar de l’utilisateur

Inscrit le: 16 Déc 2009, 18:11
Messages: 71
Localisation: Sur un nuage douillet et confortable
Niveau RPG Maker: Bon
Point(s) Fort(s): Scénariste/Graphiste
Sexe: Masculin
Points d'aide: 0/60

Créations :

Voir ses créations

Salut,

C'est peut-être une question bête, mais dans le doute
je préfère la poser: Tu parle de "clique droit" et de "clique gauche"
ton script gère également la souris ?

_________________
Image


Haut
 Profil  
 
 Sujet du message: Re: Gestion étendue du clavier (très simple d'utilisation)
MessagePublié: 14 Nov 2011, 15:39 
Bourgeois (Nv 2)

Inscrit le: 12 Aoû 2006, 00:00
Messages: 235
Points d'aide: 37/60

Créations :

Voir ses créations

Les clicks uniquement.


Haut
 Profil  
 
Afficher les messages depuis:  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 3 messages ] 

Heures au format UTC + 1 heure [ Heure d’été ]


Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 2 invités


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Rechercher pour:
Sauter vers:  
cron
RPG Creative Forum version 5 ; Tous droits réservés
phpBB Group (Traduit par Xaphos)
Optimisé pour une résolution 1024*728