Pokémon Script Project Forum Index

Manuel | Search
 Information des admins 
Si vous désirez parler de PSP ou obtenir du soutient là dessus, merci d'aller faire un tour sur https://pokemonworkshop.com/forum/index.php Imbécile heureux

Module Input

 
Post new topic   Reply to topic    Pokémon Script Project Forum Index -> Game Making -> Ressources techniques -> Scripts
Previous topic :: Next topic   
Author Message
Nuri Yuri
Team SDK


Joined: 15 Oct 2008
Posts: 6,383
~Entity~
Localisation: Nancy
Non renseigné (Visible...)
ID Steam: Nuri_Yuri

PostPosted: Tue 31 Aug - 18:37 (2010)    Post subject: Module Input

Bonjour aujourd'hui j'avais rien d'autre a foutre que de coder un module alors je l'ai fait 42

Module Input


Ce script sert à reconnaitre toute les touches ou presque de votre clavier !
Voici le script

Code:
#==================#
#Module Input  v0.4#
#==================#
module Input
  @trigger_api=Win32API.new("user32","GetAsyncKeyState",['i'],'i')
  @press_api=Win32API.new("user32","GetKeyState",['i'],'i')
  #==============================#
  #initialisation des constantes #
  #==============================#
  #Souris
  MOUSE_LEFT=1;MOUSE_RIGHT=2;MOUSE_CENTER=4
  #touches sur les coté
  BACKSPACE=8#la touche <=
  TAB=9
  ENTER=13
  SHIFT=16;CTRL=17;ALT=18
  PAUSE=19
  LOCK_MAJ=20
  ESC=27#ECHAP
  #espace
  SPACE=32
  #pages
  PAGE_DOWN=33;PAGE_UP=34;FIN=35;HOME=36
  #Directions
  LEFT=37;UP=38;RIGHT=39;DOWN=40
  #autre fonctions
  PRT_SC=44;INSERT=45;DELETE=46
  #Chiffres au dessus
  AN_0=48;AN_1=49;AN_2=50;AN_3=51;AN_4=52
  AN_5=53;AN_6=54;AN_7=55;AN_8=56;AN_9=57
  #Alphabet
  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;WINDOWS=91;MOUSE_MENU=93
  #Pavé numérique
  N_0=96;N_1=97;N_2=98;N_3=99;N_4=100
  N_5=101;N_6=102;N_7=103;N_8=104;N_9=105
  #operations
  MULT=106;PLUS=107;MOIN=109;DECI=110;DIVI=111
  #Touches Fonction
  F1=112;F2=113;F3=114;F4=115;F5=116;F6=117
  F7=118;F8=119;F9=120;F10=121;F11=122;F12=123
  #d'autres fonctions
  LOCK_NUM=144
  SHIFT_LEFT=160;SHIFT_RIGHT=161
  CTRL_D=162;CTRL_G=163
  ALT_LEFT=164;ALT_GR=165
  #D'autres touches
  DOLLARS=186
  EQUAL=187
  FLOAT=188
  SEMICOLON=190#";"
  COLON=191#":"
  PERCENT=192#% ou ù
  CLOSE_PARENTHESIS=219
  MICRO=220# * ou µ
  CIRCUMFLEX=221#"^"
  SQUARED=222
  EXCLAMATION=223
  HIGHER=226#">" ou "<"
  FN=225
  #=============#
  #mise a jours   #
  #=============#
  def self.update
    @press_old=@press unless @press.nil?
    just_trigger
    just_press
  end
  def self.just_trigger
    @trigger=[]
    for key in 0..255
      @trigger.push(key) if @trigger_api.call(key) & 0x01 == 1
    end
  end
  def self.just_press
    @press=[]
    for key in 0..255
      @press.push(key) unless @press_api.call(key).between?(0, 1)
    end
  end
  def self.press?(key)
    return true if @press.include?(key)
    return false
  end
  def self.trigger?(key)
    return true if @trigger.include?(key)
    return false
  end
  def self.repeat?(key)
    return true if @press.push(key) and @press_old.include?(key) and @trigger.include?(key)
    return false
  end
  def self.dir4
    if @press.include?(DOWN)
        return 2
    elsif @press.include?(UP)
        return 8
    elsif @press.include?(RIGHT)
        return 6
    elsif @press.include?(LEFT)
      return 4
    else
      return 0
    end
  end
  def self.dir8
    if @press.include?(DOWN)
      if @press.include?(RIGHT)
        return 9
      elsif @press.include?(LEFT)
        return 1
      else
        return 2
      end
    elsif @press.include?(UP)
      if @press.include?(RIGHT)
        return 7
      elsif @press.include?(LEFT)
        return 3
      else
        return 8
      end
    elsif @press.include?(RIGHT)
      return 6
    elsif @press.include?(LEFT)
      return 4
    else
      return 0
    end
  end
end


Code:
#==================#
#Module Input  v0.5#
#==================#
module Input
  @trigger_api=Win32API.new("user32","GetAsyncKeyState",['i'],'i')
  @press_api=Win32API.new("user32","GetKeyState",['i'],'i')
  #==============================#
  #initialisation des constantes #
  #==============================#
  #Souris
  MOUSE_LEFT=1;MOUSE_RIGHT=2;MOUSE_CENTER=4
  #touches sur les coté
  BACKSPACE=8#la touche <=
  TAB=9
  ENTER=13
  SHIFT=16;CTRL=17;ALT=18
  PAUSE=19
  LOCK_MAJ=20
  ESC=27#ECHAP
  #espace
  SPACE=32
  #pages
  PAGE_DOWN=33;PAGE_UP=34;FIN=35;HOME=36
  #Directions
  LEFT=37;UP=38;RIGHT=39;DOWN=40
  #autre fonctions
  PRT_SC=44;INSERT=45;DELETE=46
  #Chiffres au dessus
  AN_0=48;AN_1=49;AN_2=50;AN_3=51;AN_4=52
  AN_5=53;AN_6=54;AN_7=55;AN_8=56;AN_9=57
  #Alphabet
  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;WINDOWS=91;MOUSE_MENU=93
  #Pavé numérique
  N_0=96;N_1=97;N_2=98;N_3=99;N_4=100
  N_5=101;N_6=102;N_7=103;N_8=104;N_9=105
  #operations
  MULT=106;PLUS=107;MOIN=109;DECI=110;DIVI=111
  #Touches Fonction
  F1=112;F2=113;F3=114;F4=115;F5=116;F6=117
  F7=118;F8=119;F9=120;F10=121;F11=122;F12=123
  #d'autres fonctions
  LOCK_NUM=144
  SHIFT_LEFT=160;SHIFT_RIGHT=161
  CTRL_D=162;CTRL_G=163
  ALT_LEFT=164;ALT_GR=165
  #D'autres touches
  DOLLARS=186
  EQUAL=187
  FLOAT=188
  SEMICOLON=190#";"
  COLON=191#":"
  PERCENT=192#% ou ù
  CLOSE_PARENTHESIS=219
  MICRO=220# * ou µ
  CIRCUMFLEX=221#"^"
  SQUARED=222
  EXCLAMATION=223
  HIGHER=226#">" ou "<"
  FN=225
  #
  #module RMXP
  #
  module RMXP
    C=[Input::C,Input::SPACE,Input::ENTER]
    B=[Input::ESC,Input::N_0,Input::X]
    A=[Input::SHIFT,Input::Z]
    X=[Input::X]
    Y=[Input::S]
    Z=[Input::D]
    L=[Input::Q]
    R=[Input::W]
    def self.press?(key)
      @press=Input.get_press
      for i in key
        return true if @press.include?(i)
      end
      return false
    end
    def self.trigger?(key)
      @trigger=Input.get_trigger
      for i in key
        return true if @trigger.include?(i)
      end
      return false
    end
    def self.repeat?(key)
      @trigger=Input.get_trigger
      @press=Input.get_press
      @press_old=Input.get_press_old
      for i in key
        return true if @press.push(i) and @press_old.include?(i) and @trigger.include?(i)
      end
      return false
    end
  end
  #=============#
  #mise a jours #
  #=============#
  def self.update
    @press_old=@press unless @press.nil?
    just_trigger
    just_press
  end
  def self.get_press
    return @press
  end
  def self.get_trigger
    return @trigger
  end
  def self.get_press_old
    return @press_old
  end
  def self.just_trigger
    @trigger=[]
    for key in 0..255
      @trigger.push(key) if @trigger_api.call(key) & 0x01 == 1
    end
  end
  def self.just_press
    @press=[]
    for key in 0..255
      @press.push(key) unless @press_api.call(key).between?(0, 1)
    end
  end
  def self.press?(key)
    return true if @press.include?(key)
    return false
  end
  def self.trigger?(key)
    return true if @trigger.include?(key)
    return false
  end
  def self.repeat?(key)
    return true if @press.push(key) and @press_old.include?(key) and @trigger.include?(key)
    return false
  end
  def self.dir4
    if @press.include?(DOWN)
        return 2
    elsif @press.include?(UP)
        return 8
    elsif @press.include?(RIGHT)
        return 6
    elsif @press.include?(LEFT)
      return 4
    else
      return 0
    end
  end
  def self.dir8
    if @press.include?(DOWN)
      if @press.include?(RIGHT)
        return 9
      elsif @press.include?(LEFT)
        return 1
      else
        return 2
      end
    elsif @press.include?(UP)
      if @press.include?(RIGHT)
        return 7
      elsif @press.include?(LEFT)
        return 3
      else
        return 8
      end
    elsif @press.include?(RIGHT)
      return 6
    elsif @press.include?(LEFT)
      return 4
    else
      return 0
    end
  end
end


Utilisation du module input v0.4


L'utilisation est la même que pour le module input deja intégré dans RGSS100j.dll sauf que la touche C est la touche C pas la touche Entré ou Espace et ainsi de suite pour les autres touches donc quand vous tappez :
Code:

if Input.press?(Input::B)
#instructions
end

Vous devrez appuyer sur B et pas sur X.

Utilisation du module input v0.5


Dans la version 0.5 il y a le module RMXP.
Ce module sert a copier ce que le RGSS player fait.
Module RMXP wrote:

module RMXP
C=[Input::C,Input::SPACE,Input::ENTER]


Pour la touche C on as defini C,Espace et Entré comme dans le RGSS player.
Après pour utiliser la touche C comme dans le RGSS palyer vous tapez :
Code:
Input.update
if Input::RMXP.press?(Input::RMXP::C)
#instructions
end


Après si vous voulez changer les touches dans le module RMXP vous modifier la constant de votre choix comme avec toute les autres variables exemple
Code:
module RMXP
C=[Input::T,Input::Enter,Input::N_5,Input::N_1]


Voilà.


Last edited by Nuri Yuri on Wed 1 Sep - 08:16 (2010); edited 3 times in total
Back to top
Facebook Twitter
Publicité






PostPosted: Tue 31 Aug - 18:37 (2010)    Post subject: Publicité

PublicitéSupprimer les publicités ?
Back to top
Moy
Membre


Joined: 22 May 2010
Posts: 545
Masculin
ID Steam: moy_97

PostPosted: Tue 31 Aug - 19:22 (2010)    Post subject: Module Input

on peut pas partir de la première page :shock:  aucune touche ne fonctionne :(
Back to top
Skype
Nuri Yuri
Team SDK


Joined: 15 Oct 2008
Posts: 6,383
~Entity~
Localisation: Nancy
Non renseigné (Visible...)
ID Steam: Nuri_Yuri

PostPosted: Tue 31 Aug - 19:47 (2010)    Post subject: Module Input

Il fonctionne ...
Edit :
Prend le script a jour car il as subit un passage vers la version 0.4 et il est plus stable Imbécile heureux
Back to top
Facebook Twitter
Evilmad
Membre


Joined: 27 Mar 2008
Posts: 519
Localisation: Guadeloupe

PostPosted: Wed 1 Sep - 01:05 (2010)    Post subject: Module Input

Tu as fait ça juste au moment où j'en avait le plus besoin mais j'en ai trouvé un mieux auquel j'ai ajouté la reconnaissance de la souris, d'autant plus que j'ai les mêmes touches que d'habitude mais c'est bien d'avoir fait ce script tout de même .
Back to top
RevengeOfShadow
Membre


Joined: 10 Jan 2009
Posts: 652
Localisation: Devant son PC
ID Steam: RL77LUC

PostPosted: Thu 30 Sep - 19:04 (2010)    Post subject: Module Input

Pourrais-tu partager ? Car celui de Yourii bug; seul C fonctionne sur la config C et seul B fonctionne pour la config B et non ENTREE/ECHAP !

EDIT: J'ai modifié un peu celui de Youri pour que les touches standard de RMXP soient OK. Echap = B, Enter = C, A = A dans cette version :

 
Code:
     #==================#  
    #Module Input  v0.5#  
    #==================#  
    module Input  
      @trigger_api=Win32API.new("user32","GetAsyncKeyState",['i'],'i')  
      @press_api=Win32API.new("user32","GetKeyState",['i'],'i')  
      #==============================#  
      #initialisation des constantes #  
      #==============================#  
      #Souris  
      MOUSE_LEFT=1;MOUSE_RIGHT=2;MOUSE_CENTER=4  
      #touches sur les coté   
      BACKSPACE=8#la touche <=  
      TAB=9  
      ENTER=67
      SHIFT=88;CTRL=17;ALT=18  
      PAUSE=19  
      LOCK_MAJ=20  
      ESC=66#ECHAP  
      #espace  
      SPACE=32  
      #pages  
      PAGE_DOWN=33;PAGE_UP=34;FIN=35;HOME=36  
      #Directions  
      LEFT=37;UP=38;RIGHT=39;DOWN=40  
      #autre fonctions  
      PRT_SC=44;INSERT=45;DELETE=46  
      #Chiffres au dessus  
      AN_0=48;AN_1=49;AN_2=50;AN_3=51;AN_4=52  
      AN_5=53;AN_6=54;AN_7=55;AN_8=56;AN_9=57  
      #Alphabet  
      A=88;B=27;C=13;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=65;Y=89;Z=90;WINDOWS=91;MOUSE_MENU=93  
      #Pavé numérique  
      N_0=96;N_1=97;N_2=98;N_3=99;N_4=100  
      N_5=101;N_6=102;N_7=103;N_8=104;N_9=105  
      #operations  
      MULT=106;PLUS=107;MOIN=109;DECI=110;DIVI=111  
      #Touches Fonction  
      F1=112;F2=113;F3=114;F4=115;F5=116;F6=117  
      F7=118;F8=119;F9=120;F10=121;F11=122;F12=123  
      #d'autres fonctions  
      LOCK_NUM=144  
      SHIFT_LEFT=160;SHIFT_RIGHT=161  
      CTRL_D=162;CTRL_G=163  
      ALT_LEFT=164;ALT_GR=165  
      #D'autres touches  
      DOLLARS=186  
      EQUAL=187  
      FLOAT=188  
      SEMICOLON=190#";"  
      COLON=191#":"  
      PERCENT=192#% ou ù  
      CLOSE_PARENTHESIS=219  
      MICRO=220# * ou µ  
      CIRCUMFLEX=221#"^"  
      SQUARED=222  
      EXCLAMATION=223  
      HIGHER=226#">" ou "<"  
      FN=225  
      #  
      #module RMXP  
      #  
      module RMXP  
        C=[Input::C,Input::SPACE,Input::ENTER]  
        B=[Input::ESC,Input::N_0,Input::X]  
        A=[Input::SHIFT,Input::Z]  
        X=[Input::X]  
        Y=[Input::S]  
        Z=[Input::D]  
        L=[Input::Q]  
        R=[Input::W]  
        def self.press?(key)  
          @press=Input.get_press  
          for i in key  
            return true if @press.include?(i)  
          end  
          return false  
        end  
        def self.trigger?(key)  
          @trigger=Input.get_trigger  
          for i in key  
            return true if @trigger.include?(i)  
          end  
          return false  
        end  
        def self.repeat?(key)  
          @trigger=Input.get_trigger  
          @press=Input.get_press  
          @press_old=Input.get_press_old  
          for i in key  
            return true if @press.push(i) and @press_old.include?(i) and @trigger.include?(i)  
          end  
          return false  
        end  
      end  
      #=============#  
      #mise a jours #  
      #=============#  
      def self.update  
        @press_old=@press unless @press.nil?  
        just_trigger  
        just_press  
      end  
      def self.get_press  
        return @press  
      end  
      def self.get_trigger  
        return @trigger  
      end  
      def self.get_press_old  
        return @press_old  
      end  
      def self.just_trigger  
        @trigger=[]  
        for key in 0..255  
          @trigger.push(key) if @trigger_api.call(key) & 0x01 == 1  
        end  
      end  
      def self.just_press  
        @press=[]  
        for key in 0..255  
          @press.push(key) unless @press_api.call(key).between?(0, 1)  
        end  
      end  
      def self.press?(key)  
        return true if @press.include?(key)  
        return false  
      end  
      def self.trigger?(key)  
        return true if @trigger.include?(key)  
        return false  
      end  
      def self.repeat?(key)  
        return true if @press.push(key) and @press_old.include?(key) and @trigger.include?(key)  
        return false  
      end  
      def self.dir4  
        if @press.include?(DOWN)  
            return 2  
        elsif @press.include?(UP)  
            return 8  
        elsif @press.include?(RIGHT)  
            return 6  
        elsif @press.include?(LEFT)  
          return 4  
        else  
          return 0  
        end  
      end  
      def self.dir8  
        if @press.include?(DOWN)  
          if @press.include?(RIGHT)  
            return 9  
          elsif @press.include?(LEFT)  
            return 1  
          else  
            return 2  
          end  
        elsif @press.include?(UP)  
          if @press.include?(RIGHT)  
            return 7  
          elsif @press.include?(LEFT)  
            return 3  
          else  
            return 8  
          end  
        elsif @press.include?(RIGHT)  
          return 6  
        elsif @press.include?(LEFT)  
          return 4  
        else  
          return 0  
        end  
      end  
    end 

Pas de crédits nécessaires pour moi.
Back to top
Visit poster’s website
Contenu Sponsorisé






PostPosted: Today at 12:26 (2019)    Post subject: Module Input

Back to top
Display posts from previous:   
Post new topic   Reply to topic    Pokémon Script Project Forum Index -> Game Making -> Ressources techniques -> Scripts All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  

Index | Free forum | Free support forum | Free forums directory | Report a violation | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Thème par Thomas et l'équipe de la refonte PSP 2012 (version 1.0)