Partagez
Aller en bas
XakuX
XakuX
Membre

Nombre de messages : 1263
Age : 24
Localisation : là où tu n'auras jamais l'idée de chercher !
Distinction : * Bougre d'âne


Le bizu' à son Coco' [Résolu]Reconversion du script de commande RMXP vers RMVX 344805
[Coco' Smile]

Membre aux désirs inassouvis de domination mondiale. [Maître du destin]
Date d'inscription : 13/12/2008

[Résolu]Reconversion du script de commande RMXP vers RMVX Empty [Résolu]Reconversion du script de commande RMXP vers RMVX

le Dim 28 Juin 2009 - 17:51
Bonjour bonjour !
Ca fait longtemps que je n'ai rien demandé, et bien voici un autre défi pour les scripteurs du forum, modifier ce script RMXP:
Spoiler:
Code:
module Keys
 KEY_BACK      = 0x08        # BACKSPACE Keys
 KEY_TAB      = 0x09        # TAB Keys
 KEY_RETURN    = 0x0D        # ENTER Keys
 KEY_SHIFT    = 0x10        # SHIFT Keys
 KEY_PAUSE    = 0x13        # PAUSE Keys
 KEY_CAPITAL  = 0x14        # CAPS LOCK Keys
 KEY_CAPSLOCK  = 0x14        # CAPS LOCK Key
 KEY_ESCAPE    = 0x1B        # ESC Keys
 KEY_SPACE    = 0x20        # SPACEBAR
 KEY_PRIOR    = 0x21        # PAGE UP Keys
 KEY_NEXT      = 0x22        # PAGE DOWN Keys
 KEY_END      = 0x23        # END Keys
 KEY_HOME      = 0x24        # HOME Keys
 KEY_LEFT      = 0x25        # LEFT ARROW Keys
 KEY_UP        = 0x26        # UP ARROW Keys
 KEY_RIGHT    = 0x27        # RIGHT ARROW Keys
 KEY_DOWN      = 0x28        # DOWN ARROW Keys
 KEY_SELECT    = 0x29        # SELECT Keys
 KEY_PRINT    = 0x2A        # PRINT Keys
 KEY_SNAPSHOT  = 0x2C        # PRINT SCREEN Keys
 KEY_INSERT    = 0x2D        # INS Keys
 KEY_DELETE    = 0x2E        # DEL Keys
 
 KEY_0        = 0x30        # 0 Keys
 KEY_1        = 0x31        # 1 Keys
 KEY_2        = 0x32        # 2 Keys
 KEY_3        = 0x33        # 3 Keys
 KEY_4        = 0x34        # 4 Keys
 KEY_5        = 0x35        # 5 Keys
 KEY_6        = 0x36        # 6 Keys
 KEY_7        = 0x37        # 7 Keys
 KEY_8        = 0x38        # 8 Keys
 KEY_9        = 0x39        # 9 Keys

 KEY_A        = 0x41        # A Keys
 KEY_B        = 0x42        # B Keys
 KEY_C        = 0x43        # C Keys
 KEY_D        = 0x44        # D Keys
 KEY_E        = 0x45        # E Keys
 KEY_F        = 0x46        # F Keys
 KEY_G        = 0x47        # G Keys
 KEY_H        = 0x48        # H Keys
 KEY_I        = 0x49        # I Keys
 KEY_J        = 0x4A        # J Keys
 KEY_K        = 0x4B        # K Keys
 KEY_L        = 0x4C        # L Keys
 KEY_M        = 0x4D        # M Keys
 KEY_N        = 0x4E        # N Keys
 KEY_O        = 0x4F        # O Keys
 KEY_P        = 0x50        # P Keys
 KEY_Q        = 0x51        # Q Keys
 KEY_R        = 0x52        # R Keys
 KEY_S        = 0x53        # S Keys
 KEY_T        = 0x54        # T Keys
 KEY_U        = 0x55        # U Keys
 KEY_V        = 0x56        # V Keys
 KEY_W        = 0x57        # W Keys
 KEY_X        = 0x58        # X Keys
 KEY_Y        = 0x59        # Y Keys
 KEY_Z        = 0x5A        # Z Keys

 KEY_LWIN      = 0x5B        # Left Windows Keys (Microsoft Natural Keysboard)
 KEY_RWIN      = 0x5C        # Right Windows Keys (Natural Keysboard)
 KEY_APPS      = 0x5D        # Applications Keys (Natural Keysboard)

 KEY_NUMPAD0  = 0x60        # Numeric Keyspad 0 Keys
 KEY_NUMPAD1  = 0x61        # Numeric Keyspad 1 Keys
 KEY_NUMPAD2  = 0x62        # Numeric Keyspad 2 Keys
 KEY_NUMPAD3  = 0x63        # Numeric Keyspad 3 Keys
 KEY_NUMPAD4  = 0x64        # Numeric Keyspad 4 Keys
 KEY_NUMPAD5  = 0x65        # Numeric Keyspad 5 Keys
 KEY_NUMPAD6  = 0x66        # Numeric Keyspad 6 Keys
 KEY_NUMPAD7  = 0x67        # Numeric Keyspad 7 Keys
 KEY_NUMPAD8  = 0x68        # Numeric Keyspad 8 Keys
 KEY_NUMPAD9  = 0x69        # Numeric Keyspad 9 Keys
 KEY_MULTIPLY  = 0x6A        # Multiply Keys (*)
 KEY_ADD      = 0x6B        # Add Keys (+)
 KEY_SEPARATOR = 0x6C        # Separator Keys
 KEY_SUBTRACT  = 0x6D        # Subtract Keys (-)
 KEY_DECIMAL  = 0x6E        # Decimal Keys
 KEY_DIVIDE    = 0x6F        # Divide Keys (/)

 KEY_F1        = 0x70        # F1 Keys
 KEY_F2        = 0x71        # F2 Keys
 KEY_F3        = 0x72        # F3 Keys
 KEY_F4        = 0x73        # F4 Keys
 KEY_F5        = 0x74        # F5 Keys
 KEY_F6        = 0x75        # F6 Keys
 KEY_F7        = 0x76        # F7 Keys
 KEY_F8        = 0x77        # F8 Keys
 KEY_F9        = 0x78        # F9 Keys
 KEY_F10      = 0x79        # F10 Keys
 KEY_F11      = 0x7A        # F11 Keys
 KEY_F12      = 0x7B        # F12 Keys

 KEY_NUMLOCK  = 0x90        # NUM LOCK Keys
 KEY_SCROLL    = 0x91        # SCROLL LOCK Keys

 KEY_LSHIFT    = 0xA0        # Left SHIFT Keys
 KEY_RSHIFT    = 0xA1        # Right SHIFT Keys
 KEY_LCONTROL  = 0xA2        # Left CONTROL Keys
 KEY_RCONTROL  = 0xA3        # Right CONTROL Keys
 KEY_L_ALT    = 0xA4        # Left ALT Keys
 KEY_R_ALT    = 0xA5        # Right ALT Keys
 
 KEY_SEP      = 0xBC        # , Keys
 KEY_DASH    = 0xBD        # - Keys
 KEY_DOTT    = 0xBE        # . Keys
 
 #par berka -----------------------------------------
 
 KEY_POURCENT = 0xC0        # % or ù Keys
 KEY_DOLLARD  = 0xBA        # $ Keys
 KEY_UNDER    = 0xDD        # ^ Keys
 KEY_STAR    = 0xDC        # * or µ Keys
 KEY_DDOTT    = 0xBF        # : keys
 KEY_DEG      = 0xDB        # ) or ° keys
 KEY_DOTTS    = 0xDF        # ! keys
 KEY_SQUARD  = 0xDE        # ² key
 for i in self.constants
  attr_reader i
 end
 
 module_function
 
 def each
  for i in self.constants
    yield self.const_get(i)
  end
 end
end


module Input
 
# Constants that need to be defined for overriding purposes
 F5      = Keys::KEY_F5
 F6      = Keys::KEY_F6
 F7      = Keys::KEY_F7
 F8      = Keys::KEY_F8
 F9      = Keys::KEY_F9

 
 UP      = 1000
 DOWN    = 1001
 LEFT    = 1002
 RIGHT  = 1003
 
 A      = 2000
 B      = 2001
 C      = 2002
 
 X      = 3000
 Y      = 3001
 Z      = 3002
 
 R      = 4000
 L      = 4001
 
 SHIFT  = 5000
 CTRL    = 5001
 ALT    = 5002
 
 for i in self.constants
  attr_reader i
 end
 
 @KeysMap  = Hash.new
 @trigger = Hash.new(false)
 @repeat  = Hash.new(false)
 @toggle  = Hash.new(false)
 @counts  = Hash.new(0)
 
 @delay = 5 # The number of frames in which repeat? will only return true once
 
# an array containing all the Keyss that correspond to the direction up, down,
# left, right, 'A', 'B', 'C', 'X', 'Y', 'Z', 'L', 'R', SHIFT, CTRL, and ALT,
# respectively.
 @KeysMap[UP]    = [Keys::KEY_UP]   
 @KeysMap[DOWN]  = [Keys::KEY_DOWN]
 @KeysMap[LEFT]  = [Keys::KEY_LEFT]
 @KeysMap[RIGHT] = [Keys::KEY_RIGHT]
 
 @KeysMap[A] = [Keys::KEY_LSHIFT, Keys::KEY_RSHIFT,  Keys::KEY_Z]
 @KeysMap[B] = [Keys::KEY_ESCAPE, Keys::KEY_NUMPAD0, Keys::KEY_X]
 @KeysMap[C] = [Keys::KEY_SPACE,  Keys::KEY_RETURN,  Keys::KEY_C]

 @KeysMap[X] = [Keys::KEY_A]
 @KeysMap[Y] = [Keys::KEY_S]
 @KeysMap[Z] = [Keys::KEY_D]

 @KeysMap[L] = [Keys::KEY_Q]
 @KeysMap[R] = [Keys::KEY_W]
 
 @KeysMap[SHIFT] = [Keys::KEY_SHIFT,    Keys::KEY_LSHIFT,  Keys::KEY_RSHIFT]
 @KeysMap[CTRL]  = [Keys::KEY_LCONTROL, Keys::KEY_RCONTROL]
 @KeysMap[ALT]  = [Keys::KEY_L_ALT,    Keys::KEY_R_ALT]

 @KeyStates = 0.chr * 256
 
 @getKeyStates = Win32API.new('user32', 'GetKeyboardState', ['P'], 'N')

 for i in Keys
  @trigger[i] = false
  @repeat[i]  = false
  @counts[i]  = 4
 end
 
 module_function

# Determines whether the button num was pressed agian at the last update.
# "Pressed again" is seen as time having passed between the button being not
# pressed and being pressed.
# If the button is being pressed, returns TRUE. If not, returns FALSE.
 def trigger?(num)
  if @KeysMap.has_key?(num)
    for i in @KeysMap[num]
      return true if @trigger[i]
    end
    return false
  end
 
  return @trigger[num]
 end
 
 alias triggered? trigger?
 
# Determines whether the button num was being pressed at the last update.
# Unlike trigger?, takes into account the repeat input of a button being held
# down continuously.
# If the button is being pressed, returns TRUE. If not, returns FALSE.
# Has a delay to prevent things from moving to fast, E.G. menu indecies.
 def repeat?(num)
 
  if @KeysMap.has_key?(num)
    for i in @KeysMap[num]
      return true if(@repeat[i] and @counts[i] == 0)
    end
    return false
  end
 
  return (@repeat[num] and @counts[i] == 0)
 end
 
 alias repeated? repeat?
 alias repeating? repeat?
 
# Same as repeat without the delay
 def press?(num)
  if @KeysMap.has_key?(num)
    for i in @KeysMap[num]
      return true if @repeat[i]
    end
    return false
  end
 
  return @repeat[i]
 end
 
 alias pressed? press?

 def toggle?(num)
  if @KeysMap.has_key?(num)
    return false if @KeysMap[num].size != 1
    return @toggle[@KeysMap[num][0]]
  end
 
  return @toggle[num]
 end
 
 alias toggled? toggle?
 
# Checks the status of the directional buttons, translates the data into a
# specialized 4-direction input format, and returns the number pad equivalent
# (2, 4, 6, 8).
# If no directional buttons are being pressed (or the equivalent), returns 0.
 def dir4
  dir = 0
  for i in @KeysMap[UP]
    if @repeat[i]
      dir = 8
    end
  end
 
  for i in @KeysMap[DOWN]
    if @repeat[i]
      if dir == 0
        dir = 2
      else
        return 0
      end
    end
  end
 
  for i in @KeysMap[LEFT]
    if @repeat[i]
      if dir == 0
        dir = 4
      else
        return 0
      end
    end
  end
 
  for i in @KeysMap[RIGHT]
    if @repeat[i]
      if dir == 0
        dir = 6
      else
        return 0
      end
    end
  end
 
  return dir
 end

# Checks the status of the directional buttons, translates the data into a
# specialized 8-direction input format, and returns the number pad equivalent
# (1, 2, 3, 4, 6, 7, 8, 9).
# If no directional buttons are being pressed (or the equivalent), returns 0.
 def dir8
  dir = dir4
 
  if dir > 0
    return dir
  end
 
  for i in @KeysMap[UP]
    if @repeat[i]
      dir = 8
    end
  end
 
  for i in @KeysMap[LEFT]
    if @repeat[i]
      case dir
        when 0, 4
          dir = 4
        when 7, 8
          dir = 7
      end
    end
  end
 
  for i in @KeysMap[RIGHT]
    if @repeat[i]
      case dir == 0
        when 0, 6
          dir = 6
        when 4, 9
          dir = 9
        else
          return 0
      end
    end
  end
 
  for i in @KeysMap[DOWN]
    if @repeat[i]
      case dir
        when 0, 2
          dir = 2
        when 3, 6
          dir = 3
        when 1, 4
          dir = 1
      else
        return 0
      end
    end
  end
 
  return dir
 end

# Updates input data. As a rule, this method is called once per frame.
 def update
  @getKeyStates.call(@KeyStates)

  for i in Keys
    @toggle[i] = (@KeyStates[i] & 0x01 == 0x01)
    if (@KeyStates[i] & 0x80 > 0)
      @trigger[i] = !@repeat[i]
      @repeat[i] = true
     
      @counts[i] += 1
      @counts[i] %= @delay
    else
      @repeat[i]  = false
      @trigger[i] = false
     
      @counts[i] = -1
    end
  end
 end
 
 
 # Additional functions of use
 def getKeys(keyType)
  if @KeysMap.has_key?(keyType)
    return @KeysMap[keyType].dup
  end
  return [keyType]
 end
 
 def addKey(keyType, key)
  legit = true
  @KeysMap.each_key {| i | legit = remKey(i, key)}
 
  return false if !legit

  if @KeysMap.has_key?(keyType)
    @KeysMap[keyType] = @KeysMap[keyType] | [key]
  else
    @KeysMap[KeyType] = [key]
  end
  return true
 end
 
 def addKeys(keyType, keys)
  legits = Hash.new(false)
 
  for i in keys
    legits[i] = addKey(keyType, i)
  end
 
  return legits
 end
 
 def removeKey(keyType, key)
  return true if !@KeysMap.has_key?(keyType)
  return false if @KeysMap[keyType] == [key]
  @KeysMap[keyType] -= key
  return true
 end
 
 def removeKeys(keyType, keys)
  return true if !@KeysMap.has_key?(keyType)
  return false if @KeysMap[keyType].size <= keys.size
 
  for i in keys
    return false if !@KeysMap[keyType].include?(i)
  end
 
  for i in keys
    @KeysMap[keyType].remove(i)
  end
  return true
 end
 
 alias remKey removeKey
 alias remKeys removeKeys
 
 def removeGroup(keyGroup)
  return false if !@KeysMap.has_key?(keyGroup)
  @KeysMap[keyGroup] = []
 
  return true;
 end
 
 alias remGroup removeGroup
 
 def removeGroups(keyGroups)
  ligits = Hash.new(false)
 
  for i in keyGroups
    ligits[i] = removeGroup(i)
  end
 
  return legits
 end
end

En script RMVX en moins de 12h, TOP CHRONO !
...
Oui, en_faite vous prenez le temps que vous voulez, ce n'est pas particulièrement urgent ^^' (enfin un peu quand même, plus vite ce sera fait, mieux c'est !)

Merci et bonne journée !

berka: au lieu de mettre un lien, merci de poster directement le script. En plus de te répondre, on a pas toujours envie d'aller à la peche dans d'autres fora.
Et puis je n'aime pas trop la façon dont tu as formulé ta demande.


Edit: Excuse moi berka, je pensais que ce serait plus simple de mettre un lien pour ceux qui voudrait lire les commentaire, comme je pense que le site du script ne sois pas vraiment inconnu au près des utilisateurs ^^' (j'avais aussi peur que ca ne rentre pas Wink )
Sinon pour la présentation, j'ai voulu mettre un peu d'humour (pas spécialement drole effectivement ^^)


Dernière édition par XakuX le Lun 29 Juin 2009 - 11:30, édité 1 fois
Berka
Berka
Administrateur

Nombre de messages : 1832
Age : 28
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

[Résolu]Reconversion du script de commande RMXP vers RMVX Empty Re: [Résolu]Reconversion du script de commande RMXP vers RMVX

le Dim 28 Juin 2009 - 18:00
Est ce que tu l'as au moins essayé sur VX ? Rolling Eyes


Dernière édition par berka le Dim 28 Juin 2009 - 18:20, édité 1 fois
avatar
Az'
Membre

Nombre de messages : 3318
Age : 74
Date d'inscription : 22/12/2007

[Résolu]Reconversion du script de commande RMXP vers RMVX Empty Re: [Résolu]Reconversion du script de commande RMXP vers RMVX

le Dim 28 Juin 2009 - 18:03
Bah, il est compatible VX...
Dans les commentaires, tu peux voir la remarque de Monos, qui ajoute :

Monos a écrit:Hu Hu génial ce script fonctionne aussi sur Rpg Maker Vx.
Berka
Berka
Administrateur

Nombre de messages : 1832
Age : 28
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

[Résolu]Reconversion du script de commande RMXP vers RMVX Empty Re: [Résolu]Reconversion du script de commande RMXP vers RMVX

le Dim 28 Juin 2009 - 18:19
Surement ! (j'ai bossé dessus il y a fort longtemps)

Franchement, avant de poser des questions, essayez par vous meme ! On veut bien y répondre, mais ça fait perdre du temps !

berka
XakuX
XakuX
Membre

Nombre de messages : 1263
Age : 24
Localisation : là où tu n'auras jamais l'idée de chercher !
Distinction : * Bougre d'âne


Le bizu' à son Coco' [Résolu]Reconversion du script de commande RMXP vers RMVX 344805
[Coco' Smile]

Membre aux désirs inassouvis de domination mondiale. [Maître du destin]
Date d'inscription : 13/12/2008

[Résolu]Reconversion du script de commande RMXP vers RMVX Empty Re: [Résolu]Reconversion du script de commande RMXP vers RMVX

le Dim 28 Juin 2009 - 18:33
J'ai essayé, il me met qu'il y a une erreur de syntaxe (c'est d'ailleurs ce qu'on m'a dit sur un autre forum ^^) (et puis j'ai prit mes précautions pour ne pas paraitre ridicule ^^') mais sur un projet vierge, le script ne fonctionne pas, et mes collègues confirment eux aussi Wink
Donc si tu as réussi Mister M. je ne vois pas comment c'est possible, ou aloss tu as rajouté quelque chose....
D'après l'analyse dun de mes amis, les apis sont lus comme sur RMXP, mais la fin du script doit être changé !

Enfin, j'avais remarqué que berka avait participé a la création du script, c'est pourquoi j'ai demandé ici ^^ !

EDIT: je pense que monos et toi Mist' avez cru le script compatible, car il ne met pas d'erreur a l'envoi du jeu, mais lorsque l'on tente d'utiliser le script, alors peut-être est-ce que j'ai mal lut le script, mais j'ai essayer en condition ou en appel de script basique, ca me met a chaque fois "SyntaxError occured while running script" ! (ce qui parait logique puisque c'est l'erreur courante lorsqu'on met un script RMXP sur RMVX ^^)

EDIT 2:Ah je crois avoir compris, enfaite ce script sert a inserer de nouvelles touches dans d'autre script ? et pas en event non ?
Berka
Berka
Administrateur

Nombre de messages : 1832
Age : 28
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

[Résolu]Reconversion du script de commande RMXP vers RMVX Empty Re: [Résolu]Reconversion du script de commande RMXP vers RMVX

le Dim 28 Juin 2009 - 19:45
"SyntaxError occured while running script" est une erreur qui est apparue dans une évaluation ruby, c'est à dire par la commande :
eval(...)
Or, cette commande est lancée dans le script Game_Interpreter pour lancer les commandes de script d'un événement.
Donc, ton appel d'event est mauvais.
CQFD

Pour t'aider, ce script permet d'agrandir le panel de touches de controles de RM, limité aux touches directionnelles, C, B, A, Z, Esc, Enter, F1, F2, Shift, Ctrl, F12...
Dans un évent, via appel de script, ou dans un script, il fonctionne comme ceci:

Code:
if Input.trigger?(Keys::KEY_X)
# ta commande qui sera lancée lors de l'appui sur X
end

berka
XakuX
XakuX
Membre

Nombre de messages : 1263
Age : 24
Localisation : là où tu n'auras jamais l'idée de chercher !
Distinction : * Bougre d'âne


Le bizu' à son Coco' [Résolu]Reconversion du script de commande RMXP vers RMVX 344805
[Coco' Smile]

Membre aux désirs inassouvis de domination mondiale. [Maître du destin]
Date d'inscription : 13/12/2008

[Résolu]Reconversion du script de commande RMXP vers RMVX Empty Re: [Résolu]Reconversion du script de commande RMXP vers RMVX

le Dim 28 Juin 2009 - 20:39
Ah c'est bon, tout s'éclaircie, enfaite, il faut tout faire en script, je pensais que l'on pouvait mettre:

"if input.trigger?(keys::KEY_X)" dans un appel de script
Ensuite mettre en évent la commande
et voila, mais enfaite tout est en script, d'accord...

Bon ben, je dois pouvoir me déboruiller avec ca quand même, enfin si sa venait a quelqu'un de permettre de faire tourner se script en permettant de mettre des event après la condition en script, sa nous arrangerait ^^ !

Enfin merci, c'est bien que je n'avais pas tout compris aux explications (et puis comme son usage est sous RMXP, j'avais comme un doute ^^')

EDIT: enfaite c'est bon, tout est OK, j'arrive parfaitmeent a le faire fonctionner, je suis trop fort X) !
Pour l'information, si on veut mettre des events après, il faut mettre dans les commandes d'évent: condition>script (4eme page)>Input.trigger?(Keys::KEY_X)
et ensuite vos commandes en event qui seront activé par la commande X (ou une autre si vous changer le "X" a la fin du script), voila tout ^^ !
Berka
Berka
Administrateur

Nombre de messages : 1832
Age : 28
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

[Résolu]Reconversion du script de commande RMXP vers RMVX Empty Re: [Résolu]Reconversion du script de commande RMXP vers RMVX

le Dim 28 Juin 2009 - 23:06
trop fort !
Dudu'
Dudu'
Staffeux retraité

Nombre de messages : 2060
Age : 28
Distinction : Apprenti KGB-boy en avenir
[Coco' Smile]
Hamsterphile de service ^^
[Balby' le Fake]
Grand prof de la MA
[Skillo]
Ce grand programmateur, mon coeur, ma vie ! [Hamu']
Date d'inscription : 22/06/2009

[Résolu]Reconversion du script de commande RMXP vers RMVX Empty Re: [Résolu]Reconversion du script de commande RMXP vers RMVX

le Dim 1 Aoû 2010 - 22:55
résolu => déplacé
Contenu sponsorisé

[Résolu]Reconversion du script de commande RMXP vers RMVX Empty Re: [Résolu]Reconversion du script de commande RMXP vers RMVX

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum