Partagez
Aller en bas
Brandobscure
Brandobscure
Membre

Nombre de messages : 531
Age : 23
Localisation : Belgique
Distinction : aucune
Date d'inscription : 03/01/2011

Résolu [résolu][VX-Ace]Switcher les héros.

le Mer 17 Oct 2012 - 16:54
Bonjour,
J'aurais besoin d'aide,
Alors, je recherche un script qui permetrais de changer de héros
a l'appuie d'une touche.
Donc tout simplement j'appuie sur (W) et le héros change directement par un autre
qui est dans mon équipe, merci d'avance Very Happy
stribiliounou
stribiliounou
Membre

Nombre de messages : 212
Age : 22
Localisation : Trou perdu
Distinction : aucune
Date d'inscription : 14/07/2012

Résolu Re: [résolu][VX-Ace]Switcher les héros.

le Mer 17 Oct 2012 - 19:16
https://www.youtube.com/watch?v=pWuqYDBbHwY&feature=g-all-u
un superbe tutoriel en évènements, qui te permet de comprendre tout ce qui compose ton projet, et en plus je le trouve super bien ce tuto Smile
Brandobscure
Brandobscure
Membre

Nombre de messages : 531
Age : 23
Localisation : Belgique
Distinction : aucune
Date d'inscription : 03/01/2011

Résolu Re: [résolu][VX-Ace]Switcher les héros.

le Mer 17 Oct 2012 - 19:27
Merci bien Very Happy
Il y a juste un problème c'est que en fait se que je veux c'est changer le leader du jeu,
pas jouer 2 perso ^^
stribiliounou
stribiliounou
Membre

Nombre de messages : 212
Age : 22
Localisation : Trou perdu
Distinction : aucune
Date d'inscription : 14/07/2012

Résolu Re: [résolu][VX-Ace]Switcher les héros.

le Mer 17 Oct 2012 - 19:52
Ah mince :/ Mais dans ce cas là ça suffit pas par exemple de créer tes deux héros, et faire un évènement commun de ce style :
Si la touche... est appuyée :
Changer l'équipe...
avec un interrupteur de déclenchement...
Ca ne suffirait pas ?
Brandobscure
Brandobscure
Membre

Nombre de messages : 531
Age : 23
Localisation : Belgique
Distinction : aucune
Date d'inscription : 03/01/2011

Résolu Re: [résolu][VX-Ace]Switcher les héros.

le Mer 17 Oct 2012 - 20:24
En fait, j'ai activé la chenille, donc les héros se suivent,
et j'aimerais que si (W) est pressé, bein le 1er hero vas derrière celui
qui était derrière moi et que il vas devant donc qui deviennent le (Leader)
stribiliounou
stribiliounou
Membre

Nombre de messages : 212
Age : 22
Localisation : Trou perdu
Distinction : aucune
Date d'inscription : 14/07/2012

Résolu Re: [résolu][VX-Ace]Switcher les héros.

le Mer 17 Oct 2012 - 20:56
Je sais pas par quoi est géré cet ordre, désolé, j'avais pas très bien compris la question, enfin du moins j'avais pensé que la chenille n'était pas forcément activée ... Rolling Eyes
Eudy
Eudy
Membre

Nombre de messages : 14
Age : 29
Distinction : aucune
Date d'inscription : 19/10/2012

Résolu Re: [résolu][VX-Ace]Switcher les héros.

le Ven 19 Oct 2012 - 19:38
Je t'ai fais ça.

Tout d'abord un 1er script est nécessaire qui permet une gestion plus poussée des touches du clavier créé par OriginalWij and Yanfly.
Code:
#==============================================================================
# ■ Input
#==============================================================================

module Input

  #--------------------------------------------------------------------------
  # constants - Created by OriginalWij and Yanfly
  #--------------------------------------------------------------------------
  DEFAULT = [:DOWN, :LEFT, :RIGHT, :UP, :A, :B, :C, :X, :Y, :Z, :L, :R,
        :SHIFT, :CTRL, :ALT, :F5, :F6, :F7, :F8, :F9]

  LETTERS = {}
  LETTERS['A'] = 65; LETTERS['B'] = 66; LETTERS['C'] = 67; LETTERS['D'] = 68
  LETTERS['E'] = 69; LETTERS['F'] = 70; LETTERS['G'] = 71; LETTERS['H'] = 72
  LETTERS['I'] = 73; LETTERS['J'] = 74; LETTERS['K'] = 75; LETTERS['L'] = 76
  LETTERS['M'] = 77; LETTERS['N'] = 78; LETTERS['O'] = 79; LETTERS['P'] = 80
  LETTERS['Q'] = 81; LETTERS['R'] = 82; LETTERS['S'] = 83; LETTERS['T'] = 84
  LETTERS['U'] = 85; LETTERS['V'] = 86; LETTERS['W'] = 87; LETTERS['X'] = 88
  LETTERS['Y'] = 89; LETTERS['Z'] = 90

  NUMBERS = [48, 49, 50, 51, 52, 53, 54, 55, 56, 57]
  NUMPAD = [96, 97, 98, 99, 100, 101, 102, 103, 104, 105]

  BACK  = 138; ENTER  = 143; SPACE  = 32;  SCOLON = 186; ESC  = 157
  QUOTE  = 222; EQUALS = 187; COMMA  = 188; USCORE = 189; PERIOD = 190
  SLASH  = 191; LBRACE = 219; RBRACE = 221; BSLASH = 220; TILDE  = 192
  F10  = 121; F11      = 122; CAPS  = 20;  NMUL  = 106; NPLUS  = 107
  NSEP  = 108; NMINUS = 109; NDECI  = 110; NDIV  = 111;

  Extras = [USCORE, EQUALS, LBRACE, RBRACE, BSLASH, SCOLON, QUOTE, COMMA,
  PERIOD, SLASH, NMUL, NPLUS, NSEP, NMINUS, NDECI, NDIV]

  #--------------------------------------------------------------------------
  # initial module settings - Created by OriginalWij and Yanfly
  #--------------------------------------------------------------------------
  GetKeyState = Win32API.new("user32", "GetAsyncKeyState", "i", "i")
  GetCapState = Win32API.new("user32", "GetKeyState", "i", "i")
  KeyRepeatCounter = {}

  module_function
  #--------------------------------------------------------------------------
  # alias method: update - Created by OriginalWij
  #--------------------------------------------------------------------------
  class <<self; alias input_update_debug update; end
  def self.update
        input_update_debug
        for key in KeyRepeatCounter.keys
          if (GetKeyState.call(key).abs & 0x8000 == 0x8000)
                KeyRepeatCounter[key] += 1
          else
                KeyRepeatCounter.delete(key)
          end
        end
  end

  #--------------------------------------------------------------------------
  # alias method: press? - Created by OriginalWij
  #--------------------------------------------------------------------------
  class <<self; alias input_press_debug press?; end
  def self.press?(key)
        return input_press_debug(key) if default_key?(key)
        adjusted_key = adjust_key(key)
        return true unless KeyRepeatCounter[adjusted_key].nil?
        return key_pressed?(adjusted_key)
  end

  #--------------------------------------------------------------------------
  # alias method: trigger? - Created by OriginalWij
  #--------------------------------------------------------------------------
  class <<self; alias input_trigger_debug trigger?; end
  def self.trigger?(key)
        return input_trigger_debug(key) if default_key?(key)
        adjusted_key = adjust_key(key)
        count = KeyRepeatCounter[adjusted_key]
        return ((count == 0) || (count.nil? ? key_pressed?(adjusted_key) : false))
  end

  #--------------------------------------------------------------------------
  # alias method: repeat? - Created by OriginalWij
  #--------------------------------------------------------------------------
  class <<self; alias input_repeat_debug repeat?; end
  def self.repeat?(key)
        return input_repeat_debug(key) if default_key?(key)
        adjusted_key = adjust_key(key)
        count = KeyRepeatCounter[adjusted_key]
        return true if count == 0
        if count.nil?
          return key_pressed?(adjusted_key)
        else
          return (count >= 23 && (count - 23) % 6 == 0)
        end
  end

  #--------------------------------------------------------------------------
  # new method: default_key? - Created by Yanfly
  #--------------------------------------------------------------------------
  def self.default_key?(key)
        return true if key.is_a?(Integer) && key < 30
        return DEFAULT.include?(key)
  end

  #--------------------------------------------------------------------------
  # new method: adjust_key - Created by OriginalWij
  #--------------------------------------------------------------------------
  def self.adjust_key(key)
        key -= 130 if key.between?(130, 158)
        return key
  end

  #--------------------------------------------------------------------------
  # new method: key_pressed? - Created by OriginalWij
  #--------------------------------------------------------------------------
  def self.key_pressed?(key)
        if (GetKeyState.call(key).abs & 0x8000 == 0x8000)
          KeyRepeatCounter[key] = 0
          return true
        end
        return false
  end

  #--------------------------------------------------------------------------
  # new method: typing? - Created by Yanfly
  #--------------------------------------------------------------------------
  def self.typing?
        return true if repeat?(SPACE)
        for i in 'A'..'Z'
          return true if repeat?(LETTERS[i])
        end
        for i in 0...NUMBERS.size
          return true if repeat?(NUMBERS[i])
          return true if repeat?(NUMPAD[i])
        end
        for key in Extras
          return true if repeat?(key)
        end
        return false
  end

  #--------------------------------------------------------------------------
  # new method: key_type - Created by Yanfly
  #--------------------------------------------------------------------------
  def self.key_type
        return " " if repeat?(SPACE)
        for i in 'A'..'Z'
          next unless repeat?(LETTERS[i])
          return upcase? ? i.upcase : i.downcase
        end
        for i in 0...NUMBERS.size
          return i.to_s if repeat?(NUMPAD[i])
          if !press?(SHIFT)
                return i.to_s if repeat?(NUMBERS[i])
          elsif repeat?(NUMBERS[i])
                case i
                when 1; return "!"
                when 2; return "@"
                when 3; return "#"
                when 4; return "$"
                when 5; return "%"
                when 6; return "^"
                when 7; return "&"
                when 8; return "*"
                when 9; return "("
                when 0; return ")"
                end
          end
        end
        for key in Extras
          next unless repeat?(key)
          case key
          when USCORE; return press?(SHIFT) ? "_" : "-"
          when EQUALS; return press?(SHIFT) ? "+" : "="
          when LBRACE; return press?(SHIFT) ? "{" : "["
          when RBRACE; return press?(SHIFT) ? "}" : "]"
          when BSLASH; return press?(SHIFT) ? "|" : "\\"
          when SCOLON; return press?(SHIFT) ? ":" : ";"
          when QUOTE;  return press?(SHIFT) ? '"' : "'"
          when COMMA;  return press?(SHIFT) ? "<" : ","
          when PERIOD; return press?(SHIFT) ? ">" : "."
          when SLASH;  return press?(SHIFT) ? "?" : "/"
          when NMUL;  return "*"
          when NPLUS;  return "+"
          when NSEP;  return ","
          when NMINUS; return "-"
          when NDECI;  return "."
          when NDIV;  return "/"
          end
        end
        return ""
  end

  #--------------------------------------------------------------------------
  # new method: upcase? - Created by Yanfly
  #--------------------------------------------------------------------------
  def self.upcase?
        return !press?(SHIFT) if GetCapState.call(CAPS) == 1
        return true if press?(SHIFT)
        return false
  end

end # Input

Ensuite je t'ai fais un script qui devrait correspondre a ce que tu demandes :

Code:
#==============================================================================
# Eudy_SwapOnMap
#------------------------------------------------------------------------------
# Permet de permuter sur la carte les membres de l'équipe en utilisant une
# touche spécifique (par défaut W)
#------------------------------------------------------------------------------

#------------------------------------------------------------------------------
# Modes de permutation
#------------------------------------------------------------------------------
# Par défaut le mode chenille (1) effectue le déroulement suivant :
# ORRDRE DES PERSONNAGES :
# AVANT=> APRES
# 1 2 3 4 => 2 3 4 1
#------------------------------------------------------------------------------
# Le mode échange (2) effectue le déroulement suivant :
# ORRDRE DES PERSONNAGES :
# AVANT=> APRES
# 1 2 3 4 => 2 1 3 4
#------------------------------------------------------------------------------

#------------------------------------------------------------------------------
# Ce script nécessite le script Input par OriginalWij et Yanfly
# pour la gestion des touches avancées (W)
# Si vous voulez utiliser une touche par défaut prise en charge par RPG Maker
# ce script deviens facultif, il suffit alors de changer SWAP_KEY
# ex: SWAP_KEY = :C
# Correspond à la touche Entrée/Espace par défaut de RPG Maker
#------------------------------------------------------------------------------

# CONFIGURATION
module EUDY_SWAPONMAP
  # Touche de permutation
  SWAP_KEY    = Input::LETTERS['W']
  # Mode de permutation
  # 1 chenille
  # 2 échange
  SWAP_MODE  = 1
end

#==============================================================================
# ■ Scene_Map
#==============================================================================
class Scene_Map
 
  #--------------------------------------------------------------------------
  # * Frame Update
  #    main:  Interpreter update flag
  #--------------------------------------------------------------------------
  alias eudy_swaponmap_update update
  def update(main = false)
    eudy_swaponmap_update
    update_swap
  end
 
  #--------------------------------------------------------------------------
  def update_swap
    if(Input.trigger?(EUDY_SWAPONMAP::SWAP_KEY) && $game_party.members.size > 1)
      if(EUDY_SWAPONMAP::SWAP_MODE==1)
        for i in 0...($game_party.members.size-1)
          $game_party.swap_order(i,i+1)
        end
      elsif(EUDY_SWAPONMAP::SWAP_MODE==2)
          $game_party.swap_order(0,1)
      end
    end
  end
 
end

Il faut donc mettre les deux pour que cela fonctionne.
Tu peux évidemment changer la touche à utiliser si besoin, j'ai aussi créé deux modes de permutation comme tu n'as pas précisé ce qui se passait au delà de 2 membres.
Voilà.
Brandobscure
Brandobscure
Membre

Nombre de messages : 531
Age : 23
Localisation : Belgique
Distinction : aucune
Date d'inscription : 03/01/2011

Résolu Re: [résolu][VX-Ace]Switcher les héros.

le Ven 19 Oct 2012 - 20:13
Merci beaucoup, c'est exactement se que je cherchais,
je te remercie du fond du coeur pour ton aide. Very Happy
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum