Oniromancie: Scripts - Input Ultimate 2


Comment ça marche?

Aëdemphia
Par Sylvanor

Fighting Robots Quest
Par Boulon

Forstale
Par Ødd Clock

Geex
Par roys

Inexistence
Par Falco

La Légende d'Ibabou
Par Zaitan

Lije
Par Gaetz

LoveMaster
Par Cuddlefox

Sarcia
Par Kaëlar

Super Mario RPG - Lost Souls
Par Omegabowser

News: Concours des Alex d'Or 2017-18: (...) / News: MegaMaker : créez votre propre (...) / News: Test de Tinker Quarry / Sorties: Leave the Room / Jeux: Leave the Room /

Chat  (21 connectés)

Bienvenue
visiteur !








Statistiques

Liste des
membres


Contact

78 connectés actuellement

9176627 visiteurs
depuis l'ouverture

892 visiteurs
aujourd'hui

Groupe Facebook

Barre de séparation

Partenaires




TOP
GAMEMAKING


Les 5 plus
visités

Lunae, le baz'arts d'Emz0

Le studio du chat vert

Pixelandgame

Tashiroworld

HeyMakeGames

Au hasard

RPG Maker VX Communauté

New RPG Maker

Off Game

Les deux derniers

Lunae, le baz'arts d'Emz0

Le studio du chat vert

Nos autres partenaires

Devenir
partenaire


Barre de séparation

Un site du réseau
War Paradise

Annuaires référenceurs





Input Ultimate 2
Script pour RPG Maker VXACE
Ecrit par Zeus81

Compatible avec XP, VX et VX Ace.

Ce script permet de gérer toutes les touches du clavier comme les autres scripts du genre mais en beaucoup mieux et je dis ça sans aucune prétention, en plus d'être au summum de la performance il possède plusieurs fonctionnalités plus ou moins inédites, gestion de la souris avec curseur, sélection, double clic, roulette... gestion des manettes avec boutons analogiques et vibrations, gestion des jeux multijoueurs sur le clavier ou avec plusieurs manettes, outil de saisie de texte au clavier avancé.
Bref y'a plus aucun doute à avoir quant au choix de script de gestion des touches, c'est le meilleur sur tous les plans.

Pour le script je met un lien parce qu'il est trop gros pour entrer dans un message : http://pastebin.com/LKd9hbDa

Donc, on peut configurer manuellement les touches du jeu dans le script (je vous laisse lire tout le blabla au début du script), mais le mieux c'est encore de laisser le joueur faire ça via un menu, ce qui demandera quelques notions de programmation bien sûr et peut peut-être être (hihi) compliqué donc si vous avez des questions hésitez quand même avant de les poser parce que j'en ai plein le cul mais j'essaierai d'y répondre.

Changement version 2.1 :
- Nouveau format pour la fonction setup pour faciliter l'éventuelle sauvegarde des config joueurs.
- Correction de bugs.
- Des détails...


Joueur1 - posté le 20/03/2012 à 20:43:28. (936 messages postés)

Hum ?

Gestion de la souris ? Ouais ! on va pouvoir faire des point and clic ! :grossourire

"Il y avait bien une lumière au bout du tunnel... et c'était un lance-flammes" (Terry Pratchett)


fenryo - posté le 27/03/2012 à 21:51:16. (153 messages postés)

Mi-Loup, Mi-homme je parcours le monde à la recherche de ma meute: Ceux qui savent...

THAAAAAAAAANNNNNNKS A LOOOOT G attendu ce script depuis des siècles et des siècles lool

-------- Le réalisme c'est trouver un moyen rationnel d'atteindre un but magnifique ----------------- Kiro'o Tale: Aurion, jeu d'un nouveau genre !! ==> Pour faire des formulaire sur RMXP:


paradoxII - posté le 10/04/2012 à 01:44:27. (259 messages postés)

NYA

Merci beaucoup, enfin un truc vraiment utile et pas coder avec les pieds !

NYA


fenryo - posté le 22/06/2012 à 12:17:30. (153 messages postés)

Mi-Loup, Mi-homme je parcours le monde à la recherche de ma meute: Ceux qui savent...

Bon j'ai un bug avec le script pour une manette 360 tout les boutons LB, RB, RT LT par défaut sont reconnus mais pas le reste donc là j'ai inséré le script dans un jeu cobaye (neuf quoi) et ça ne reconnait pas les touches Y,X, B, A de la manette xbox360 quand elles sont appuyés dumoins la reconnaissance avec les touches virtuelles j'ai raté quelque chose?

Quand ça fait Input.trigger?(Input::C) ça ne réagit pas si j'appuie sur A de la manette xbox.:F

-------- Le réalisme c'est trouver un moyen rationnel d'atteindre un but magnifique ----------------- Kiro'o Tale: Aurion, jeu d'un nouveau genre !! ==> Pour faire des formulaire sur RMXP:


Zeus81 - posté le 22/06/2012 à 14:26:18. (11072 messages postés) - bocauxharam

Putain de bug de Ruby de merde, tu fais chier ! :fache2
Tu peux rajouter ce fix en attendant que je fasse une nouvelle version mieuxe :

Portion de code : Tout sélectionner

1
2
3
  class XBox360_Gamepad
    Gamepad.constants.each {|n| k=Gamepad.const_get(n); const_set(n, k) if k.is_a?(Key)}
  end



Edit : Bon voilà t'as qu'à télécharger la dernière version, j'ai réparé le bug d'une superbe manière. :F
http://pastebin.com/LKd9hbDa


fenryo - posté le 22/06/2012 à 20:39:33. (153 messages postés)

Mi-Loup, Mi-homme je parcours le monde à la recherche de ma meute: Ceux qui savent...

LOOOOOOL ok boss merci :bob

[edit] : Bon j'ai un gros problème je potache depuis 2h là je me retrouve pas. Je fais une fenêtre pour que les joeurs puissent choisirs leur config eux même. J'ai donc les 2 pbs suivants :

1 - J'ai vu le setup par défaut du player 0 à la ligne 1473 et aussi ton script pour aider à capturer les touches. Mais comment j'affiche alors les touches associées aux touches virtuelles? je veux dire si je veux récupérer les noms des touches reçues dans ton setup par défaut pour la touche C, je fais comment ? j'ai tenté Input::C.to_s ça me renvoie "C" :oO

2- Ensuite je voudrais que chaque partie sauvegardée conserve sa config j'ai donc mon fichier de sauvegarde du jeu ou j'empile les objets à la sauvegarde et dépile pour le chargement mais là je sais pas quel objet empiler? Player[0] ?

Si tu peux m'aider avec des prototypes de script stp à genoux :grossourire

-------- Le réalisme c'est trouver un moyen rationnel d'atteindre un but magnifique ----------------- Kiro'o Tale: Aurion, jeu d'un nouveau genre !! ==> Pour faire des formulaire sur RMXP:


Zeus81 - posté le 23/06/2012 à 16:12:38. (11072 messages postés) - bocauxharam

Je comprends, j'ai vraiment pas fait simple pour le coup et l'aide est pas documentée là dessus. :F
En fait pour configurer les touches faut envoyer un tableau au bon format au setup : Input.setup(liste)
Mais c'est à sens unique, on ne peut pas récupérer la liste, c'est à toi de la conserver avant de l'envoyer.
Par exemple tu peux créer un tableau dans Game_System :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Game_System
  attr_reader :inputs
  alias inputs_initialize initialize
  def initialize
    inputs_initialize 
    @inputs = { # On met notre config par défaut
      :DOWN  => [ [Gamepad::AxisLY_0.to_i], [Keyboard::Down.to_i]     ],
      :LEFT  => [ [Gamepad::AxisLX_0.to_i], [Keyboard::Left.to_i]     ],
      :RIGHT => [ [Gamepad::AxisLX_1.to_i], [Keyboard::Right.to_i]    ],
      :UP    => [ [Gamepad::AxisLY_1.to_i], [Keyboard::Up.to_i]       ],
      :A     => [ [Gamepad::X.to_i]       , [Keyboard::Shift.to_i]    ],
      :B     => [ [Gamepad::Y.to_i]       , [Keyboard::NumPad0.to_i]  ],
      :C     => [ [Gamepad::A.to_i]       , [Keyboard::Enter.to_i]    ],
      :X     => [ [Gamepad::B.to_i]       , [Keyboard::A.to_i]        ],
      :Y     => [ [Gamepad::LT.to_i]      , [Keyboard::S.to_i]        ],
      :Z     => [ [Gamepad::RT.to_i]      , [Keyboard::D.to_i]        ],
      :L     => [ [Gamepad::LB.to_i]      , [Keyboard::PageUp.to_i]   ],
      :R     => [ [Gamepad::RB.to_i]      , [Keyboard::PageDown.to_i] ],
      :SHIFT => [ []                      , [Keyboard::Shift.to_i]    ],
      :CTRL  => [ []                      , [Keyboard::Control.to_i]  ],
      :ALT   => [ []                      , [Keyboard::Alt.to_i]      ],
      :F5    => [ []                      , [Keyboard::F5.to_i]       ],
      :F6    => [ []                      , [Keyboard::F6.to_i]       ],
      :F7    => [ []                      , [Keyboard::F7.to_i]       ],
      :F8    => [ []                      , [Keyboard::F8.to_i]       ],
      :F9    => [ []                      , [Keyboard::F9.to_i]       ]}
    Input.setup(@inputs)
  end
end


Ensuite dans ton menu pour configurer les touches, tu modifies ce tableau, bon y'a plusieurs façons de le faire ça dépend de comment tu comptes faire ton menu, si tu comptes séparer la config manette et clavier, si tu veux pouvoir supporter plusieurs touches sur le même bouton...
M'enfin voici un exemple simple ou on configure le bouton C, manette et clavier confondus et avec une seule touche par bouton :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
  # on capture la touche
  until key = Keyboard.capture_key || Input.gamepad.capture_key
    Graphics.update
    Input.update
  end
  
  if key
    key_i = key.to_i # dans notre tableau on garde les touches sous forme d'entier
    key_type = key.is_a?(Input::Keyboard_Key) ? 1 : 0 # dans notre tableau les touches
                                                      # du clavier sont rangées dans la
                                                      # colonne 1 celles des manettes
                                                      # dans la colonne 0.
    
    # on retire la touche qu'on vient d'entrer de tous les autres boutons
    # si une même touche correspondait à deux boutons ça le ferait moyen
    $game_system.inputs.each_value do |v|
      v[key_type].delete(key_i)
    end
    
    $game_system.inputs[:C] = [[], []] unless $game_system.inputs.has_key?(:C)
    $game_system.inputs[:C][key_type] = [key_i] # si on veut pouvoir garder plusieurs
                                                # touches sur le même bouton il faudra
                                                # gérer cette étape différemment
    
    # on attend que la touche soit relâchée avant de continuer au cas où.
    while key.push?
      Graphics.update
      Input.update
    end
  end


Quand tu veux valider ton nouveau tableau de touches tu fais : Input.setup($game_system.inputs)
Idem quand tu charges ta partie pour reprendre la config sauvegardée.

Enfin pour l'affichage dans ton menu toujours, tu regardes encore le tableau, par exemple pour le bouton C, en considérant qu'on a qu'une touche par bouton :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
keyboard_key_i = $game_system.inputs[:C][1][0]
if keyboard_key_i == nil
  # si la touche n'est pas configurée
  keyboard_key_str = "vide"
else
  # si la touche est configurée on a plusieurs choix :
  # - si on veut tout simplement le nom de la constante
  keyboard_key_str = Keyboard.key(keyboard_key_i).to_s
  # - si on veut le nom de la touche dans la langue du système
  keyboard_key_str = Keyboard.key_name(keyboard_key_i)
  # - si on veut le nom de la touche par rapport à son id et un tableau personnel
  keyboard_key_str = monTableau[keyboard_key_i]
end
 
gamepad_key_i = $game_system.inputs[:C][0][0]
if gamepad_key_i == nil
  # si la touche n'est pas configurée
  gamepad_key_str = "vide"
else
  # si la touche est configurée on a plusieurs choix :
  # - si on veut tout simplement le nom de la constante
  gamepad_key_str = Input.gamepad.key(gamepad_key_i).to_s
  # - si on veut le nom de la touche par rapport à son id et un tableau personnel
  gamepad_key_str = monTableau[gamepad_key_i]
end


fenryo - posté le 23/06/2012 à 16:39:05. (153 messages postés)

Mi-Loup, Mi-homme je parcours le monde à la recherche de ma meute: Ceux qui savent...

Ok merci d'avoir répondu c'est pas très évident mais je vais me battre à partir de là !! :biere

[EDIT]c'est l'édo tensei ce code loooool mais bon g réussi déjà à lire et sauvegarder les touches ça devrait aller merci encore !! :joint

[EDIT 2h plus tard] c bon g décodé la matrice lool purée ct pas léger ça. Input Ultimate 2.3 fully plugged into my game !!

-------- Le réalisme c'est trouver un moyen rationnel d'atteindre un but magnifique ----------------- Kiro'o Tale: Aurion, jeu d'un nouveau genre !! ==> Pour faire des formulaire sur RMXP:


Zeus81 - posté le 23/06/2012 à 23:41:26. (11072 messages postés) - bocauxharam

Cool comme ça y'aura au moins une personne qui l'utilise. :)


saebakiller - posté le 02/02/2013 à 13:23:50. (1 messages postés)

salut a tous euhm Zeus81 ça ne fonctionne pas !?
il me met

unexpected '='
=begin

:sriden


Zeus81 - posté le 02/02/2013 à 13:58:52. (11072 messages postés) - bocauxharam

T'as dû rajouter un espace avant, vire le.


Champinoir - posté le 23/02/2013 à 16:10:06. (1 messages postés)

Bonjour, j'ai deux problèmes avec ce script :
Quand je lance le jeu sans ma manette, la souris ne fait pas bouger le personnage.
Quand je lance le jeu avec ma manette, le personnage va vers le haut sans arrêt (non, ce n'est pas un problème de manette :) )
C'est une manette PS3 :p

Edit : En enlevant " :DPadUp " à la ligne 1477, la manette marche impeccablement bien...


Zeus81 - posté le 23/02/2013 à 16:34:36. (11072 messages postés) - bocauxharam

Ce script n'a pas pour but de déplacer le personnage avec la souris, il te donne entre autre la position de la souris mais c'est à toi d'en faire ce que tu veux et tout gérer.
Pour la manette t'as qu'à vérifier que le stick analogique est bien centré, sinon je vois pas.


the_bored_gamer - posté le 08/04/2013 à 22:05:21. (3 messages postés)

Salut! Je patauge en ce moment avec la souris... Elle semble reconnaître environ 2 fois sur 5 quand je clique.

J'ignore à quel endroit mettre Input.update . Je l'avais mis à la fin de mon event, mais aucune amélioration. Si je la met au début, rien n'est détecté du tout!

Condition 1) Mouse::Left.click?
condition 2) Mouse.on?(13, 13, 228, 44)

Qu'est-ce que je fais de mal?

:help


Zeus81 - posté le 08/04/2013 à 23:35:58. (11072 messages postés) - bocauxharam

T'as pas besoin de mettre de Input.update normalement si tu bosses en event.
Le reste a l'air bon, après faut qu'auparavant t'ais activé la souris : Mouse.enabled = true


the_bored_gamer - posté le 09/04/2013 à 02:26:19. (3 messages postés)

Zeus81 a dit:


T'as pas besoin de mettre de Input.update normalement si tu bosses en event.
Le reste a l'air bon, après faut qu'auparavant t'ais activé la souris : Mouse.enabled = true



Non, ça va pour ça, ma souris est activée. J'ai créé ma propre icône. Nickel.

Je ne mettais pas le Input.update au départ dans mon event, mais comme ça clochait, je croyais que c'était ça le problème...

J'ai fait le tour de ta documentation (chapeau, d'ailleurs) et je ne cerne pas le bobo. Même après plusieurs tests.

Pour tester, quand on clique dans la zone je me suis mis un:
puts "détecté"
Ca fonctionne, mais pas toujours. Environ deux fois sur cinq.
Et c'est bien ce "pas toujours" qui me chicote...
Ma scène est vide. C'est pas comme si j'avais pleins de processus qui travaillaient en parallèle.
C'est forcément un update qui ne se fait pas à quelque part...

Merci beaucoup de ton support


Zeus81 - posté le 10/04/2013 à 03:25:26. (11072 messages postés) - bocauxharam

Ah ok je vois, en fait c'est vx ace qui a un bug avec ses processus parallèles, si tu veux qu'ils fonctionnent comme ils le devraient, il faut englober tout le code de ton event dans une boucle avec un attendre 1 frame à la fin :
<boucle>
__<commandes random ...>
__<attendre 1 frame>
<fin boucle>

Sinon tu peux rajouter ce fix :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
class Game_Event
  alias zeus_update update
  def update
    zeus_update
    if @interpreter and !@interpreter.running?
      @interpreter.setup(@list, @event.id)
      @interpreter.update
    end
  end
end


the_bored_gamer - posté le 10/04/2013 à 04:11:13. (3 messages postés)

Incroyable ! :wouah

C'est maintenant fonctionnel à 100% !!!

Zeus81, je m'incline devant ton talent! :lei


vannseed - posté le 22/01/2014 à 20:30:49. (3 messages postés)

j’adore ton script mais je ne comprend pas bien comment mettre mes propre touche , j'ai essayer de suivre le petit tuto que tu donne a fenryo, mai j'arrive pas a configurer ma windows et ma scene...
je suis sous vxace si ça peut changer quelque chose


merci


zeus81 - posté le 23/01/2014 à 17:26:16. (11072 messages postés) - bocauxharam

Dit comme ça je vois pas ce que je peux faire de plus.


soskillz - posté le 29/05/2014 à 13:10:57. (816 messages postés)

Salut Zeus81,
je viens à toi Dieu de l'olympe car j'utilise ton script dont je n'ai rien touché et qui fonctionnait très bien jusque là par default avec ma manette filaire Xbox360.
Mais (y en a toujours un ), je n'ai plus cette manette elle m'a lâché j'utilise donc maintenant ma Razer Onza, qui est aussi un pad xbox360, reconnu en tant que tel, mais voilà:
-la touche assignée dans ton script à RT se retrouve assignée à START et la touche assignée à LT à BACK.
Quand je test ma manette, BACK et START sont respectivement le bouton 9 et 10 et LT et RT sont reconnu sur un même Axe Z, dont la valeur augmente si j'appuis sur RT et diminue si j'appuis sur LT.

J'ai bien lu dans ton script que ces deux touches étaient reconnues par la pression exercée sur les touches donc j'ai cherché à voir si j'arriverais à comprendre, et si j'ai bien compris si sa valeur est égale à 0 c'est LT si 1 ou plus c'est RT, me trompe-je?

Quoi qu'il en soit je ne vois pas comment faire, elle est reconnue en tant que pad Xbox 360, toute les autres touches configurées fonctionnent et j'ai essayé de voir pour la configurer par rapport à un Gamepad quelconque avec les "Button:" au lieux de "A","X" etc mais ça reviens au même en fait les boutons START et BACK sont les boutton: 4 et 5 dans ton script alors qu'ils correspondent aux 9 et 10 quand je test et le 10 je le vois pas dans le script, bref je m'embrouille dans la config alors que je suis persuadé que tout est bon si je rebranche un pad 360 filaire officiel.

Donc question est-ce que ça peu que venir de ma manette ? Est-ce normal que les gâchettes soient reconnues sur un axe Z et si oui alors pourquoi elles sont transférées sur START et BACK ? Y a t'il un moyen de faire passer les bouttons 9 et 10 sur LT et RT ?


skyprost - posté le 19/08/2014 à 23:53:39. (1 messages postés)

Désoler de paraitre débile mais a quel endroit il faut mettre Mouse.enabled = true
:-/


CapNot - posté le 02/12/2015 à 09:16:30. (6 messages postés)

Salut à tous,
après moult années d'absence (pour cause de faisage d'autres chose), je me remet doucement au making.
J'ai acheté VX ace hier et le codage n'a jamais été mon fort ...
Ce script me fait bien envie mais je ne parviens pas à le faire fonctionner, j'ai toujours le message suivant :
unexpected '='
=begin

Je me doute que le problème vient de moi, néanmoins j'aimerais le résoudre.
Si quelqu'un aurait la gentillesse de me venir en aide, il aurait mon éternelle gratitude.

Merci d'avance.


zeus81 - posté le 02/12/2015 à 16:25:08. (11072 messages postés) - bocauxharam

C'est parce que tu dois avoir des espaces avant le =begin, il faut qu'il soit collé à gauche.


CapNot - posté le 06/12/2015 à 23:03:28. (6 messages postés)

Merci beaucoup Zeus81,
mais maintenant mon projet ne veut même plus se lancer ...
Message d'erreur :
line 1499 SyntaxError occured

embedded document meets end of file.

Je crois qu'il va vraiment falloir que je me mette au ruby ...
Ou rester à jouer au clavier.


zeus81 - posté le 07/12/2015 à 03:18:46. (11072 messages postés) - bocauxharam

Je sais pas, peut-être que t'as mal copié le script et qu'un caractère chelou s'est ajouté à la fin qui fait tout planter.

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe

Plan du site:

Activité: Accueil | News | Forum | Flash-news | Chat | Commentaires | Galerie | Screen de la semaine | Sorties | Articles perso | Livre d'or | Recherche
Jeux: Index jeux séparés | Top Classiques | Top Originaux | Les autres | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Jeux complets | Proposer
Rubriques: Le Wiki | Collection Oniro | Tutoriaux | Scripts | Guides | Gaming-Live | Tests | Making-of | Interviews | Articles perso | OST | L'Annuaire | Divers | Palmarès
Hébergés: Aëdemphia | Fighting Robots Quest | Forstale | Geex | Inexistence | La Légende d'Ibabou | Lije | LoveMaster | Sarcia | Super Mario RPG - Lost Souls
Ressources: Jeux | Programmes | Packs de ressources | Midis | Eléments séparés | Sprites
RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis