AccueilAccueil  PortailPortail  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  ConnexionConnexion  



Le Deal du moment : -28%
Brandt LVE127J – Lave-vaisselle encastrable 12 ...
Voir le deal
279.99 €

Partagez
 

 Identification du héros [Résolu]

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Alex-Cloud
Vagabond Lv.5
Vagabond Lv.5
Alex-Cloud


Masculin Age : 29
Inscrit le : 22/02/2010
Messages : 76

Identification du héros [Résolu] Empty
MessageSujet: Identification du héros [Résolu]   Identification du héros [Résolu] Icon_minitimeLun 9 Aoû 2010 - 17:57

Salut !!
Voilà, mon jeu permet le changement de héros, c'est à dire celui que l'on voit sur la map.
[img]Identification du héros [Résolu] Menu10[/img]

Sur ce sceen exemple, celui que l'on verra sur la map est Ralph car il est le permier personnage
dans le groupe.
Si je fais un dialogue, je montrerai Ralph.
Mais si je change de personnage à ma volonté et que je choisi Ulrika,
il vaut mieux montrer Ulrika dans les dialogues. pale
Donc je souhaiterai savoir s'il y a un moyen "d'identifier" le héros,
c'est à dire savoir qui est le premier personnage.
Du genre une condition comme "Si le héros est Ralph".
Peut-importe le moyen: Event, Script...
Merci d'avance. cheers


Dernière édition par Alex-Cloud le Lun 9 Aoû 2010 - 21:33, édité 1 fois
Revenir en haut Aller en bas
Zangther
Maître des Duels
Maître des Duels
Zangther


Masculin Age : 31
Inscrit le : 29/07/2009
Messages : 7840

Identification du héros [Résolu] Empty
MessageSujet: Re: Identification du héros [Résolu]   Identification du héros [Résolu] Icon_minitimeLun 9 Aoû 2010 - 18:22

La plupart du temps, en tant que créateur du jeu, tu sais a quel moment ton leader est présent ou pas.
Enfin après tu peux utiliser ce script pour afficher le nom et le faceset du leader du groupe.

Code:
#===============================================================================
#
# Yanfly Engine Zealous - Custom Message System
# Last Date Updated: 2010.01.18
# Level: Easy, Normal, Hard, Lunatic
#
# The message system by itself is fine and easy to accept as it is. However, it
# wouldn't hurt to have it do a few more features. This script will allow your
# message boxes to perform extra functions such as drawing icons, using an
# external choice window, and using Lunatic shortcuts.
#
# This is by no means a complex message system like Modern Algebra's ATS or
# Woratana's Neo Message System. If you want a message system with a lot of
# features, I highly recommend that you take a look at those. This message
# system here will supply the most basic functions and needs without adding
# too many extra features.
#
#===============================================================================
# Updates
# -----------------------------------------------------------------------------
# o 2010.01.18 - Finished script.
# o 2010.01.17 - Started script.
#===============================================================================
# Instructions
# -----------------------------------------------------------------------------
# To install this script, open up your script editor and copy/paste this script
# to an open slot below ▼ Materials but above ▼ Main. Remember to save.
#
# -----------------------------------------------------------------------------
# Message Window REGEXP Codes - These go inside of your message window.
# -----------------------------------------------------------------------------
#  Code:      Effect:
#    \v[x]      Writes variable x's value.
#    \n[x]      Writes actor x's name.
#    \c[x]      Changes the colour of the text to x.
#    \g          Displays the gold window.
#    \.          Waits 15 frames (quarter second).
#    \|          Waits 60 frames (a full second).
#    \!          Waits until key is pressed.
#    \>          Following text is instant.
#    \<          Following text is no longer instant.
#    \^          Skips to the next message.
#    \\          Writes a "" in the window.
#
#    \f[x]      Draws actor ID x's face in the window.
#    \w[x]      Waits x frames (60 frames = 1 second).
#
#    \nb[x]      Creates a name window with x. Left side.
#    \nbl[x]    Creates a name window with x. Locks the namebox. Left side.
#    \nbu[x]    Creates a name window with x. Unlocks the namebox. Left side.
#    \rnb[x]    Creates a name window with x. Right side.
#    \rnbl[x]    Creates a name window with x. Locks the namebox. Right side.
#    \rnbu[x]    Creates a name window with x. Unlocks the namebox. Right side.
#    \nbu        Closes name window. Unlocks the namebox.
#
#    \fn[x]      Changes the font name to x. Set to 0 to reset font name.
#    \fs[x]      Changes the font size to x. Set to 0 to reset font size.
#    \fb        Changes the font to bold and back.
#    \fi        Changes the font to italic
#    \fh        Changes the font to shadowed and back.
#
#    \ac[x]      Writes actor x's class name.
#    \as[x]      Writes actor x's subclass name. Requires JP Classes.
#    \ax[x]      Writes actor x's combination class name. Requires JP Classes.
#    \af[x]      Replaces face with actor x's face.
#    \af[x:y]    Replaces face with actor x's face name but uses expression y.
#
#    \pn[x]      Writes ally's name in party slot x.
#    \pc[x]      Writes ally's class name in party slot x.
#    \ps[x]      Writes ally's subclass name in party slot x.
#    \px[x]      Writes ally's combination class name in party slot x.
#    \pf[x]      Replaces face with ally's face in party slot x.
#    \pf[x:y]    Replaces face with ally's face name but uses expression y.
#
#    \nc[x]      Writes class ID x's name.
#    \ni[x]      Writes item ID x's name.
#    \nw[x]      Writes weapon ID x's name.
#    \na[x]      Writes armour ID x's name.
#    \ns[x]      Writes skill ID x's name.
#    \nt[x]      Writes state ID x's name.
#
#    \i[x]      Draws icon ID x into the message window.
#    \ii[x]      Writes item ID x's name with icon included.
#    \iw[x]      Writes weapon ID x's name with icon included.
#    \ia[x]      Writes armour ID x's name with icon included.
#    \is[x]      Writes skill ID x's name with icon included.
#    \it[x]      Writes state ID x's name with icon included.
#
#===============================================================================
# Compatibility
# -----------------------------------------------------------------------------
# - Works With: YEZ Menu System Options, YEZ Job System: Classes
# -----------------------------------------------------------------------------
# Note: This script may not work with former Yanfly Engine ReDux scripts.
#      Use Yanfly Engine Zealous scripts to work with this if available.
#===============================================================================

$imported = {} if $imported == nil
$imported["CustomMessageSystemZeal"] = true

module YEZ
  module MESSAGE
 
    #===========================================================================
    # Basic Settings
    # --------------------------------------------------------------------------
    # The following below will adjust the basic settings and that will affect
    # the majority of the script.
    #===========================================================================
 
    # This adjusts the pixel width given to your icons so they won't throw
    # certain monospaced fonts out of alignment.
    ICON_WIDTH = 24
 
    # This adjusts how many rows are shown on screen. If it's 0 or under, a
    # maximum of 4 rows will be shown. If it's above, it will show that many
    # rows and texts following it immediately after will also display that many
    # extra rows.
    ROW_VARIABLE = 82
 
    # This adjusts how wide the message window will be in pixels. The window
    # will automatically center itself to the new width.
    WIDTH_VARIABLE = 83
 
    # This button is the button used to make message windows instantly skip
    # forward. Hold down for the effect. Note that when held down, this will
    # speed up the messages, but still wait for the pauses. However, it will
    # automatically go to the next page when prompted.
    TEXT_SKIP = Input::A    # Input::A is the shift button on keyboard.
 
    #===========================================================================
    # Name Window Settings
    # --------------------------------------------------------------------------
    # The name window is a window that appears outside of the main message
    # window box to display whatever text is placed inside of it like a name.
    #===========================================================================
 
    # This determines where you would like the namebox window to appear relative
    # to the message window. Adjust the following accordingly.
    NAME_WINDOW_X = -20      # Adjusts X position offset from Message Window.
    NAME_WINDOW_Y = 40      # Adjusts Y position offset from Message Window.
    NAME_WINDOW_W = 20      # Adjusts extra width added to the Name Window.
    NAME_WINDOW_H = 40      # Adjusts the height of the Name Window.
    NAME_COLOUR  = 6        # Default colour used for name box.
 
    # The following lets you adjust whether or not you would like to see the
    # back of the name window.
    NAME_WINDOW_SHOW_BACK = true
 
    #===========================================================================
    # Choice Settings
    # --------------------------------------------------------------------------
    # There are now different ways to display choices now. One is the default
    # method, another is through a choice window. Adjust the settings properly.
    # To change the type of choice window shown, adjust the choice variable
    # during the game.
    # Var:    Type:
    #  0      Normal
    #  1      Outside window without a face. In the center of the screen.
    #  2      Outside window without a face. Right side of the screen.
    #  3      Outside window without a face. Left side of the screen.
    #  4      Outside window with a face. In the center of the screen.
    #  5      Outside window with a face. Right side of the screen.
    #  6      Outside window with a face. Left side of the screen.
    #===========================================================================
 
    # This is the indent used for choices when used through the regular method.
    # Otherwise, inside of the choice window, there will be no indent.
    CHOICE_INDENT = "\x06    \x07"
 
    # These variables adjust the type of choice window displayed and which
    # actor's face graphic to be displayed inside of the choice variable.
    CHOICE_VARIABLE = 84
    FACE_VARIABLE  = 85
 
    CHOICE_WINDOW_X = 100  # The X offset for the choice window.
    CHOICE_WINDOW_Y =  0  # The Y offset for the choice window.
    CHOICE_WINDOW_W =  60  # Minimum size for the choice width.
    CHOICE_WINDOW_E =  20  # Extra width added to each side of an option.
 
    #===========================================================================
    # Sound Settings
    # --------------------------------------------------------------------------
    # When text is being played out on the screen by a message. This can be
    # changed in game through the following script calls:
    #  $game_message.text_sound = "name"    Filename of sound to be played.
    #  $game_message.text_volume = 60        Volume of sound to be played.
    #  $game_message.text_pitch  = 100      Pitch of sound to be played.
    #===========================================================================
 
    # This adjusts the default sound that's played when text appears. If you
    # don't want to use this feature, just set this value to nil.
    SOUND_DEFAULT = "Cursor"
 
    # The sound pitch varies each time it's played by this amount. This is so
    # that the sound doesn't become monotonous and actually offers variability.
    # Set this value to 0 if you don't want any changes.
    SOUND_PITCH_OFFSET = 3
 
  end # MESSAGE
end # YEZ

#===============================================================================
# Lunatic Mode - Custom Message System
#===============================================================================
#
# This portion is for those who know how to script and would like to use various
# tags to produce easy Lunatic Mode shortcuts.
#
# \X[x] or \X[x:y] or \X[x:y:z]
# These let you create your own custom tags. If you use the first tag, there is
# one case for the "custom_convert" definition to return. If you use the second
# tag, there will be two cases for you to select from. And likewise, if there's
# three tags, then the z case will also be taken into account of.
#
#===============================================================================

class Window_Message < Window_Selectable
 
  #--------------------------------------------------------------------------
  # new method: self.custom_convert
  #--------------------------------------------------------------------------
  def self.custom_convert(x_case, y_case = 0, z_case = 0)
    text = ""
    case x_case
    #----------------------------------------------------------------------
    # Start editting here.
    #----------------------------------------------------------------------
    when 1 # Show the full name of the actor.
      case y_case # This is the extra case for the actor.
      when 1
        text = "\\n[1] von Xiguel"
      when 2
        text = "Michelle \\n[2]"
      when 3
        text = "\\n[3] Manfred"
      when 4
        text = "\\n[4] Fernaeus"
      end
   
    when 2 # Show how much gold the party has.
      text = $game_party.gold
   
    when 3 # Show party's max level
      text = $game_party.max_level
   
    #----------------------------------------------------------------------
    # Stop editting past this point.
    #----------------------------------------------------------------------
    end
    return text
  end
 
end # Window_Message

#===============================================================================
# Editting anything past this point may potentially result in causing computer
# damage, incontinence, explosion of user's head, coma, death, and/or halitosis.
# Therefore, edit at your own risk.
#===============================================================================

#===============================================================================
# Game_Message
#===============================================================================

class Game_Message
 
  #--------------------------------------------------------------------------
  # public instance variables
  #--------------------------------------------------------------------------
  attr_accessor :text_sound
  attr_accessor :text_volume
  attr_accessor :text_pitch
  attr_accessor :choice_text
 
  #--------------------------------------------------------------------------
  # alias method: initialize
  #--------------------------------------------------------------------------
  alias initialize_cms initialize unless $@
  def initialize
    @text_sound  = YEZ::MESSAGE::SOUND_DEFAULT
    @text_volume = 60
    @text_pitch  = 100
    initialize_cms
  end
 
  #--------------------------------------------------------------------------
  # alias method: clear
  #--------------------------------------------------------------------------
  alias clear_cms clear unless $@
  def clear
    @choice_text = []
    clear_cms
  end
 
end # Game_Message

#===============================================================================
# Game_Interpreter
#===============================================================================

class Game_Interpreter
 
  #--------------------------------------------------------------------------
  # overwrite method: command_101 (Show Text)
  #--------------------------------------------------------------------------
  def command_101
    unless $game_message.busy
      $game_message.face_name = @params[0]
      $game_message.face_index = @params[1]
      $game_message.background = @params[2]
      $game_message.position = @params[3]
      flow = true
      loop {
        if @list[@index].code == 101 and meet_stringing_conditions and flow
          @index += 1
        else
          break
        end
        flow = @row_check
        while @list[@index].code == 401 and meet_stringing_conditions
          $game_message.texts.push(@list[@index].parameters[0])
          @index += 1
        end }
      if @list[@index].code == 102 # Show choices
        setup_choices(@list[@index].parameters)
      elsif @list[@index].code == 103 # Number input processing
        setup_num_input(@list[@index].parameters)
      end
      set_message_waiting # Set to message wait state
    end
    return false
  end
 
  #--------------------------------------------------------------------------
  # overwrite method: setup_choices
  #--------------------------------------------------------------------------
  def setup_choices(params)
    var = $game_variables[YEZ::MESSAGE::ROW_VARIABLE]
    rows = (var <= 0) ? 4 : var
    return unless $game_message.texts.size <= rows - params[0].size or
      $game_variables[YEZ::MESSAGE::CHOICE_VARIABLE] > 0
    $game_message.choice_start = $game_message.texts.size
    $game_message.choice_max = params[0].size
    for s in params[0]
      $game_message.texts.push(s)
    end
    $game_message.choice_cancel_type = params[1]
    $game_message.choice_proc = Proc.new { |n| @branch[@indent] = n }
    @index += 1
  end
 
  #--------------------------------------------------------------------------
  # new method: meet_stringing_conditions
  #--------------------------------------------------------------------------
  def meet_stringing_conditions
    var = $game_variables[YEZ::MESSAGE::ROW_VARIABLE]
    rows = (var <= 0) ? 4 : var
    @row_check = (rows > 4) ? true : false
    return true if rows > $game_message.texts.size
    return false
  end
 
end # Game_Interpreter

#===============================================================================
# Window_Message
#===============================================================================

class Window_Message < Window_Selectable
 
  #--------------------------------------------------------------------------
  # public instance variables
  #--------------------------------------------------------------------------
  attr_accessor :position
 
  #--------------------------------------------------------------------------
  # alias method: initialize
  #--------------------------------------------------------------------------
  alias initialize_cms initialize unless $@
  def initialize
    initialize_cms
    var = $game_variables[YEZ::MESSAGE::ROW_VARIABLE]
    @max_rows = (var <= 0) ? 4 : var
    nheight = YEZ::MESSAGE::NAME_WINDOW_H
    @choice_window = Window_MessageChoice.new(self)
    @name_window = Window_Base.new(YEZ::MESSAGE::NAME_WINDOW_X, 0, 100, nheight)
    @name_text = Window_Base.new(YEZ::MESSAGE::NAME_WINDOW_X, 0, 100, 56)
    @name_window.openness = 0
    @name_text.openness = 0
    @name_text.opacity = 0
    @name_window.z = self.z + 1
    @name_text.z = @name_window.z + 1
    @name_window_lock = false
  end
 
  #--------------------------------------------------------------------------
  # alias method: dispose
  #--------------------------------------------------------------------------
  alias dispose_cms dispose unless $@
  def dispose
    dispose_cms
    @name_window.dispose if @name_window != nil
    @name_text.dispose if @name_text != nil
    @choice_window.dispose if @choice_window != nil
  end
 
  #--------------------------------------------------------------------------
  # new method: close
  #--------------------------------------------------------------------------
  def close
    super
    @choice_window.close
    @name_window.close
    @name_text.close
    @name_window_lock = false
  end
 
  #--------------------------------------------------------------------------
  # alias method: update
  #--------------------------------------------------------------------------
  alias update_cms update unless $@
  def update
    @name_window.update
    @name_text.update
    @choice_window.update
    update_cms
  end
 
  #--------------------------------------------------------------------------
  # new method: refresh_size
  #--------------------------------------------------------------------------
  def refresh_size
    var = $game_variables[YEZ::MESSAGE::ROW_VARIABLE]
    $game_variables[YEZ::MESSAGE::ROW_VARIABLE] = 4 if var <= 0
    @max_rows = (var <= 0) ? 4 : var
    calc_height = @max_rows * 24 + 32
    $game_variables[YEZ::MESSAGE::WIDTH_VARIABLE] = Graphics.width if
      $game_variables[YEZ::MESSAGE::WIDTH_VARIABLE] <= 0
    widthvar = [$game_variables[YEZ::MESSAGE::WIDTH_VARIABLE], 32].max
    $game_variables[YEZ::MESSAGE::WIDTH_VARIABLE] = [widthvar, 32].max
    if (self.height != calc_height) or (widthvar != self.width)
      self.height = calc_height
      self.width = [widthvar, Graphics.width].min
      self.x = (Graphics.width - self.width) / 2
      create_contents
    end
  end
 
  #--------------------------------------------------------------------------
  # overwrite method: reset_window
  #--------------------------------------------------------------------------
  def reset_window
    var = $game_variables[YEZ::MESSAGE::ROW_VARIABLE]
    wheight = var <= 0 ? 4 * 24 + 32 : var * 24 + 32
    @background = $game_message.background
    @position = $game_message.position
    self.opacity = (@background == 0) ? 255 : 0
    case @position
    when 0  # Top
      self.y = 0
      @gold_window.y = 360
    when 1  # Middle
      self.y = (Graphics.height - wheight) / 2
      @gold_window.y = 0
    when 2  # Bottom
      self.y = (Graphics.height - wheight)
      @gold_window.y = 0
    end
  end
 
  #--------------------------------------------------------------------------
  # overwrite method: input_pause
  #--------------------------------------------------------------------------
  def input_pause
    if Input.trigger?(Input::B) or Input.trigger?(Input::C) or
    Input.press?(YEZ::MESSAGE::TEXT_SKIP)
      self.pause = false
      if @text != nil and not @text.empty?
        new_page if @line_count >= MAX_LINE
      else
        terminate_message
      end
    end
  end
 
  #--------------------------------------------------------------------------
  # called method: actor_face_art
  #--------------------------------------------------------------------------
  def self.actor_face_art(value)
    if value == 0 and $game_party.members[0] != nil
      $game_message.face_name  = $game_party.members[0].face_name
      $game_message.face_index = $game_party.members[0].face_index
    elsif $game_actors[value] != nil
      $game_message.face_name  = $game_actors[value].face_name
      $game_message.face_index = $game_actors[value].face_index
    end
    return ""
  end
 
  #--------------------------------------------------------------------------
  # overwrite method: start_message
  #--------------------------------------------------------------------------
  def start_message
    refresh_size
    @text = ""
    choice_type = $game_variables[YEZ::MESSAGE::CHOICE_VARIABLE]
    for i in 0...$game_message.texts.size
      if choice_type > 0 and i >= $game_message.choice_start
        $game_message.choice_text += [$game_message.texts[i].clone]
      else
        @text += YEZ::MESSAGE::CHOICE_INDENT if i >= $game_message.choice_start
        @text += $game_message.texts[i].clone + "\x00"
      end
    end
    @item_max = $game_message.choice_max
    convert_special_characters
    reset_window
    new_page
  end
 
  #--------------------------------------------------------------------------
  # alias method: new_page
  #--------------------------------------------------------------------------
  alias new_page_cms new_page unless $@
  def new_page
    new_page_cms
    @name_window.update_windowskin if $imported["MenuSystemOptions"]
    self.contents.font.name = Font.default_name
    self.contents.font.size = Font.default_size
    self.contents.font.bold = Font.default_bold
    self.contents.font.italic = Font.default_italic
    self.contents.font.shadow = Font.default_shadow
  end
 
  #--------------------------------------------------------------------------
  # combination_class
  #--------------------------------------------------------------------------
  def combination_class(actor)
    return "" if actor == nil
    class1 = actor.class.name
    return class1 unless $imported["JobSystemClasses"]
    return class1 if actor.subclass == nil
    class2 = actor.subclass.name
    text = sprintf("%s/%s", class1, class2)
    text = YEZ::JOB::COMBINATION_NAMES[text]
    return text
  end
 
  #--------------------------------------------------------------------------
  # refresh_name_box
  #--------------------------------------------------------------------------
  def refresh_name_box(name, side = 0)
    return if $game_temp.in_battle
    font_colour = YEZ::MESSAGE::NAME_COLOUR
    font_name = Font.default_name
    font_size = Font.default_size
    font_bold = Font.default_bold
    font_italic = Font.default_italic
    font_shadow = Font.default_shadow
    icon = 0
    name_width = 0
    #---Convert Special Characters
    name = name.gsub(/\x01\{(\d+)\}/i) {
      font_colour = $1.to_i; ""}
    name = name.gsub(/\x09\{(\d+)\}/i) {""}
    name = name.gsub(/\x10\{(\d+)\}/i) {
      icon = $1.to_i; name_width += YEZ::MESSAGE::ICON_WIDTH; ""}
    name = name.gsub(/\x11\{(\d+)\}/i) {
      font_size = $1.to_i; ""}
    name = name.gsub(/\x12\{(.*?)\}/i) {
      font_name = $1.to_s; ""}
    name = name.gsub(/\x13/i) {
      font_bold = true; ""}
    name = name.gsub(/\x14/i) {
      font_italic = true; ""}
    name = name.gsub(/\x15/i) {
      font_shadow = true; ""}
    #---Convert Special Characters
    @name_text.contents.font.name = font_name
    @name_text.contents.font.size = font_size
    @name_text.contents.font.bold = font_bold
    @name_text.contents.font.italic = font_italic
    @name_text.contents.font.shadow = font_shadow
    name_width += @name_text.contents.text_size(name).width
    name_width += YEZ::MESSAGE::NAME_WINDOW_W
    @name_window.width = [name_width + 40, Graphics.width].min
    @name_text.width = @name_window.width
    var = $game_variables[YEZ::MESSAGE::ROW_VARIABLE]
    wheight = var <= 0 ? 4 * 24 + 32 : var * 24 + 32
    position = $game_message.position
    case position
    when 0
      @name_window.y = self.height - YEZ::MESSAGE::NAME_WINDOW_H
      @name_window.y += YEZ::MESSAGE::NAME_WINDOW_Y
    when 1
      @name_window.y = (Graphics.height - wheight) / 2
      @name_window.y -= YEZ::MESSAGE::NAME_WINDOW_Y
    when 2
      @name_window.y = (Graphics.height - wheight)
      @name_window.y -= YEZ::MESSAGE::NAME_WINDOW_Y
    end
    offset = (@name_text.height - @name_window.height) / 2
    @name_text.y = @name_window.y - offset
    if YEZ::MESSAGE::NAME_WINDOW_SHOW_BACK and $game_message.background == 0
      @name_window.opacity = 255
    else
      @name_window.opacity = 0
    end
    if side == 0
      @name_window.x = [YEZ::MESSAGE::NAME_WINDOW_X + self.x, 0].max
    else
      @name_window.x = self.x + self.width - @name_window.width
      @name_window.x -= YEZ::MESSAGE::NAME_WINDOW_X
      @name_window.x = self.x + self.width - @name_window.width if
        (@name_window.x + @name_window.width) > Graphics.width
    end
    @name_text.x = @name_window.x
    @name_window.create_contents
    @name_text.create_contents
    txh = [font_size + (font_size / 5), WLH].max
    @name_text.contents.font.color = text_color(font_colour)
    @name_text.contents.font.name = font_name
    @name_text.contents.font.size = font_size
    @name_text.contents.font.bold = font_bold
    @name_text.contents.font.italic = font_italic
    @name_text.contents.font.shadow = font_shadow
    if icon > 0
      iw = YEZ::MESSAGE::ICON_WIDTH
      @name_text.draw_icon(icon, YEZ::MESSAGE::NAME_WINDOW_W / 2, 0)
      @name_text.contents.draw_text(iw, 0, name_width + 8 - iw, txh, name, 1)
    else
      @name_text.contents.draw_text(0, 0, name_width + 8, txh, name, 1)
    end
    @name_window.open
    @name_text.open
    @name_window_open = true
  end
 
  #--------------------------------------------------------------------------
  # alias method: start_choice
  #--------------------------------------------------------------------------
  alias start_choice_cms start_choice unless $@
  def start_choice
    self.active = true
    if $game_variables[YEZ::MESSAGE::CHOICE_VARIABLE] > 0
      @choice_window.appear
      self.index = -1
    else
      self.active = true
      self.index = 0
    end
  end
 
  #--------------------------------------------------------------------------
  # alias method: input_choice
  #--------------------------------------------------------------------------
  alias input_choice_cms input_choice unless $@
  def input_choice
    if Input.trigger?(Input::C) and @choice_window.active
      Sound.play_decision
      $game_message.choice_proc.call(@choice_window.index)
      @choice_window.disappear
      terminate_message
    elsif Input.trigger?(Input::B) and @choice_window.active
      if $game_message.choice_cancel_type > 0
        Sound.play_cancel
        $game_message.choice_proc.call($game_message.choice_cancel_type - 1)
        @choice_window.disappear
        terminate_message
      end
    else
      input_choice_cms
    end
  end
 
  #--------------------------------------------------------------------------
  # new method: play_text_sound
  #--------------------------------------------------------------------------
  def play_text_sound
    return if $game_message.text_sound == nil
    return if @line_show_fast or @show_fast
    name  = $game_message.text_sound
    $game_message.text_volume = 60 if $game_message.text_volume == nil
    vol  = $game_message.text_volume
    $game_message.text_pitch = 100 if $game_message.text_pitch == nil
    pitch = $game_message.text_pitch
    pitch += rand(YEZ::MESSAGE::SOUND_PITCH_OFFSET)
    pitch -= rand(YEZ::MESSAGE::SOUND_PITCH_OFFSET)
    RPG::SE.new(name, vol, pitch).play
  end
 
  #--------------------------------------------------------------------------
  # overwrite method: convert_special_characters
  #--------------------------------------------------------------------------
  def convert_special_characters
    @name_window_open = false
    @text = Window_Message.convert_regexp(@text)
    #-------------------------------------------------------------
    # Name box REGEXP Conversions
    #-------------------------------------------------------------
    @text.gsub!(/\\NB\[(.*?)\]/i) {
      if $1.to_s != nil
        refresh_name_box($1.to_s)
      end; "" }
    @text.gsub!(/\\NBL\[(.*?)\]/i) {
      if $1.to_s != nil
        refresh_name_box($1.to_s)
        @name_window_lock = true
      end; "" }
    @text.gsub!(/\\NBU\[(.*?)\]/i) {
      if $1.to_s != nil
        refresh_name_box($1.to_s)
        @name_window_lock = false
      end; "" }
    @text.gsub!(/\\NBU/i) {
      @name_window.close
      @name_text.close
      @name_window_lock = false
      "" }
    @text.gsub!(/\\RNB\[(.*?)\]/i) {
      if $1.to_s != nil
        refresh_name_box($1.to_s, 1)
      end; "" }
    @text.gsub!(/\\RNBL\[(.*?)\]/i) {
      if $1.to_s != nil
        refresh_name_box($1.to_s, 1)
        @name_window_lock = true
      end; "" }
    @text.gsub!(/\\RNBU\[(.*?)\]/i) {
      if $1.to_s != nil
        refresh_name_box($1.to_s, 1)
        @name_window_lock = false
      end; "" }
    # Close the Name Window
    unless @name_window_lock
      @name_window.close if !@name_window_open
      @name_text.close if !@name_window_open
    end
  end
 
end # Window_Message

#===============================================================================
# Window_MessageChoice
#===============================================================================

class Window_MessageChoice < Window_Selectable
 
  #--------------------------------------------------------------------------
  # initialize
  #--------------------------------------------------------------------------
  def initialize(parent_window)
    @parent = parent_window
    dx = @parent.x; dy = @parent.y; dw = @parent.width; dh = @parent.height
    super(dx, dy-dh, dw, dh)
    self.openness = 0
    self.active = false
    self.z = @parent.z + 1
  end
 
  #--------------------------------------------------------------------------
  # appear
  #--------------------------------------------------------------------------
  def appear
    self.update_windowskin if $imported["MenuSystemOptions"]
    self.open
    self.active = true
    self.index = 0
    refresh
  end
 
  #--------------------------------------------------------------------------
  # disappear
  #--------------------------------------------------------------------------
  def disappear
    self.update_windowskin if $imported["MenuSystemOptions"]
    self.close
    self.active = false
    self.index = -1
  end
 
  #--------------------------------------------------------------------------
  # refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    reset_content_settings
    @data = []
    for i in $game_message.choice_text
      @text = Window_Message.convert_regexp(i)
      @data += [@text]
    end
    @type = $game_variables[YEZ::MESSAGE::CHOICE_VARIABLE]
    self.width = [calc_width, Graphics.width].min
    case @type
    when 1, 4
      centered_window
    when 2, 5
      self.x = @parent.width - self.width + @parent.x
      self.x -= YEZ::MESSAGE::CHOICE_WINDOW_X unless @type == 5
      centered_window if Graphics.width - self.x - self.width > self.x
    when 3, 6
      self.width = calc_width
      self.x = @parent.x
      self.x += YEZ::MESSAGE::CHOICE_WINDOW_X unless @type == 6
      centered_window if self.x > Graphics.width - self.x - self.width
    end
    self.x = [self.x, 0].max
    self.x = Graphics.width - self.width if self.x + self.width > Graphics.width
    self.height = 32 + @data.size * WLH
    case @parent.position
    when 0, 1
      self.y = @parent.height + @parent.y
      self.y -= YEZ::MESSAGE::CHOICE_WINDOW_Y
    when 2
      self.y = @parent.y - self.height
      self.y += YEZ::MESSAGE::CHOICE_WINDOW_Y
    end
    @item_max = @data.size
    create_contents
    draw_choice_face
    for i in 0..(@item_max.size-1); draw_item(i); end
  end
 
  #--------------------------------------------------------------------------
  # centered_window
  #--------------------------------------------------------------------------
  def centered_window; self.x = (Graphics.width - self.width)/2; end
 
  #--------------------------------------------------------------------------
  # face_types
  #--------------------------------------------------------------------------
  def face_types; return [4,5,6]; end
 
  #--------------------------------------------------------------------------
  # reset_content_settings
  #--------------------------------------------------------------------------
  def reset_content_settings
    self.contents.font.color = normal_color
    self.contents.font.name = Font.default_name
    self.contents.font.size = Font.default_size
    self.contents.font.bold = Font.default_bold
    self.contents.font.italic = Font.default_italic
    self.contents.font.shadow = Font.default_shadow
  end
 
  #--------------------------------------------------------------------------
  # calc_width
  #--------------------------------------------------------------------------
  def calc_width
    max_size = YEZ::MESSAGE::CHOICE_WINDOW_W
    for text in @data
      text_width = contents.text_size(text).width
      text_width += 32
      max_size = [text_width, max_size].max
    end
    max_size += YEZ::MESSAGE::CHOICE_WINDOW_E
    max_size += 112 if face_types.include?(@type)
    return max_size
  end
 
  #--------------------------------------------------------------------------
  # draw_choice_face
  #--------------------------------------------------------------------------
  def draw_choice_face
    return unless face_types.include?(@type)
    if $game_variables[YEZ::MESSAGE::FACE_VARIABLE] <= 0
      index = -1 * $game_variables[YEZ::MESSAGE::FACE_VARIABLE]
      index = [$game_party.members.size-1, index].min
      actor = $game_party.members[index]
    else
      actor = $game_actors[$game_variables[YEZ::MESSAGE::FACE_VARIABLE]]
      actor = $game_party.members[0] if actor == nil
    end
    draw_actor_face(actor, 0, 0)
  end
 
  #--------------------------------------------------------------------------
  # draw_item
  #--------------------------------------------------------------------------
  def draw_item(index)
    rect = item_rect(index)
    self.contents.clear_rect(rect)
    reset_content_settings
    text = @data[index]
    return if text == nil
    align = 0; icon = 0; rect.width -= 8; dx = rect.x
    text.gsub!(/\x01\{(\d+)\}/i) {
      self.contents.font.color = text_color($1.to_i); ""}
    text.gsub!(/\x10\{(\d+)\}/i) {
      icon = $1.to_i; dx += 24; ""}
    text.gsub!(/\x11\{(\d+)\}/i) {
      self.contents.font.size = $1.to_i; ""}
    text.gsub!(/\x12\{(.*?)\}/i) {
      self.contents.font.name = $1.to_s; ""}
    text.gsub!(/\x13/i) {
      self.contents.font.bold = !self.contents.font.bold; ""}
    text.gsub!(/\x14/i) {
      self.contents.font.italic = !self.contents.font.italic; ""}
    text.gsub!(/\x15/i) {
      self.contents.font.shadow = !self.contents.font.shadow; ""}
    text.gsub!(/\x16\{(\d+)\}/i) {
      align = $1.to_i; ""}
    dx += 4 if icon == 0
    draw_icon(icon, rect.x, rect.y)
    self.contents.draw_text(dx, rect.y, rect.width, WLH, text, align)
  end
 
  #--------------------------------------------------------------------------
  # item_rect
  #--------------------------------------------------------------------------
  def item_rect(index)
    if face_types.include?(@type)
      rect = Rect.new(0, 0, 0, 0)
      rect.width = (contents.width + @spacing) / @column_max - @spacing - 112
      rect.height = WLH
      rect.x = 112 + index % @column_max * (rect.width + @spacing)
      rect.y = index / @column_max * WLH
      return rect
    else
      return super(index)
    end
  end
 
end # Window_MessageChoice

#===============================================================================
# --- Window_Message ---
# This is another instance of Window_Message and placed down here for easier
# future editting and adding of more tags.
#===============================================================================

class Window_Message < Window_Selectable
 
  #--------------------------------------------------------------------------
  # called method: convert_regexp
  #--------------------------------------------------------------------------
  def self.convert_regexp(text)
    @text = text
    #-------------------------------------------------------------
    # Default REGEXP Conversions
    #-------------------------------------------------------------
    @text.gsub!(/\\V\[(\d+)\]/i)    { $game_variables[$1.to_i] }
    @text.gsub!(/\\V\[(\d+)\]/i)    { $game_variables[$1.to_i] }
 
    #-------------------------------------------------------------
    # Lunatic REGEXP Conversions
    #-------------------------------------------------------------
    @text.gsub!(/\\X\[(\d+)\]/i) {
      Window_Message.custom_convert($1.to_i) }
    @text.gsub!(/\\X\[(\d+):(\d+)\]/i) {
      Window_Message.custom_convert($1.to_i, $2.to_i) }
    @text.gsub!(/\\X\[(\d+):(\d+):(\d+)\]/i) {
      Window_Message.custom_convert($1.to_i, $2.to_i, $3.to_i) }
 
    #-------------------------------------------------------------
    # Default REGEXP Conversions
    #-------------------------------------------------------------
    @text.gsub!(/\\N\[0\]/i)        { $game_party.members[0].name }
    @text.gsub!(/\\F\[(\d+)\]/i)    { Window_Message.actor_face_art($1.to_i) }
    @text.gsub!(/\\N\[(\d+)\]/i)    { $game_actors[$1.to_i].name }
    @text.gsub!(/\\C\[(\d+)\]/i)    { "\x01{#{$1}}" }
    @text.gsub!(/\\G/i)            { "\x02" }
    @text.gsub!(/\\\./)            { "\x03" }
    @text.gsub!(/\\\|/)            { "\x04" }
    @text.gsub!(/\\!/)              { "\x05" }
    @text.gsub!(/\\>/)              { "\x06" }
    @text.gsub!(/\\</)              { "\x07" }
    @text.gsub!(/\\\^/)            { "\x08" }
    @text.gsub!(/\\\\/)            { "" }
 
    #-------------------------------------------------------------
    # New REGEXP Conversions
    #-------------------------------------------------------------
    @text.gsub!(/\\W\[(\d+)\]/i)    { "\x09{#{$1}}" }
    @text.gsub!(/\\I\[(\d+)\]/i)    { "\x10{#{$1}}" }
    @text.gsub!(/\\FS\[(\d+)\]/i)  { "\x11{#{$1}}" }
    @text.gsub!(/\\FN\[(.*?)\]/i)  { "\x12{#{$1}}" }
    @text.gsub!(/\\FB/i)            { "\x13" }
    @text.gsub!(/\\FI/i)            { "\x14" }
    @text.gsub!(/\\FH/i)            { "\x15" }
    @text.gsub!(/\\AL\[(\d+)\]/i)  { "\x16{#{$1}}" }
 
    #-------------------------------------------------------------
    # Victory Aftermath Conversions
    #-------------------------------------------------------------
    if $imported["VictoryAftermath"]
      @text.gsub!(/\\VF/i) { victory_face_art }
      @text.gsub!(/\\VN/i) { victory_actor_name }
    end
 
    #-------------------------------------------------------------
    # Automatic Actor REGEXP Conversions
    #-------------------------------------------------------------
    @text.gsub!(/\\AN\[(\d+)\]/i) {
      if $game_actors[$1.to_i] != nil
        $game_actors[$1.to_i].name
      else; ""; end }
    @text.gsub!(/\\AC\[(\d+)\]/i) {
      if $game_actors[$1.to_i] != nil
        $game_actors[$1.to_i].class.name
      else; ""; end }
    @text.gsub!(/\\AS\[(\d+)\]/i) {
      if $imported["JobSystemClasses"] and
      $game_actors[$1.to_i] != nil and
      $game_actors[$1.to_i].subclass != nil
        $game_actors[$1.to_i].subclass.name
      else; ""; end }
    @text.gsub!(/\\AX\[(\d+)\]/i) {
      combination_class($game_actors[$1.to_i]) }
    @text.gsub!(/\\AF\[(\d+)\]/i) {
      if $game_actors[$1.to_i] != nil
        $game_message.face_name = $game_actors[$1.to_i].face_name
        $game_message.face_index = $game_actors[$1.to_i].face_index
      end; "" }
    @text.gsub!(/\\AF\[(\d+):(\d+)\]/i) {
      if $game_actors[$1.to_i] != nil
        $game_message.face_name = $game_actors[$1.to_i].face_name
        $game_message.face_index = $2.to_i
      end; "" }
 
    #-------------------------------------------------------------
    # Automatic Party REGEXP Conversions
    #-------------------------------------------------------------
    @text.gsub!(/\\PN\[(\d+)\]/i) {
      if $game_party.members[$1.to_i] != nil
        $game_party.members[$1.to_i].name
      else; ""; end }
    @text.gsub!(/\\PC\[(\d+)\]/i) {
      if $game_party.members[$1.to_i] != nil
        $game_party.members[$1.to_i].class.name
      else; ""; end }
    @text.gsub!(/\\PS\[(\d+)\]/i) {
      if $imported["JobSystemClasses"] and
      $game_party.members[$1.to_i] != nil and
      $game_party.members[$1.to_i].subclass != nil
        $game_party.members[$1.to_i].subclass.name
      else; ""; end }
    @text.gsub!(/\\PX\[(\d+)\]/i) {
      combination_class($game_party.members[$1.to_i]) }
    @text.gsub!(/\\PF\[(\d+)\]/i) {
      if $game_party.members[$1.to_i] != nil
        $game_message.face_name = $game_party.members[$1.to_i].face_name
        $game_message.face_index = $game_party.members[$1.to_i].face_index
      end; "" }
    @text.gsub!(/\\PF\[(\d+):(\d+)\]/i) {
      if $game_party.members[$1.to_i] != nil
        $game_message.face_name = $game_party.members[$1.to_i].face_name
        $game_message.face_index = $2.to_i
      end; "" }
 
    #-------------------------------------------------------------
    # Auto Class, Item, Weapon, and Armour REGEXP Conversions
    #-------------------------------------------------------------
    @text.gsub!(/\\NC\[(\d+)\]/i) {
      $data_classes[$1.to_i].name }
    @text.gsub!(/\\NI\[(\d+)\]/i) {
      $data_items[$1.to_i].name }
    @text.gsub!(/\\NW\[(\d+)\]/i) {
      $data_weapons[$1.to_i].name }
    @text.gsub!(/\\NA\[(\d+)\]/i) {
      $data_armors[$1.to_i].name }
    @text.gsub!(/\\NS\[(\d+)\]/i) {
      $data_skills[$1.to_i].name }
    @text.gsub!(/\\NT\[(\d+)\]/i) {
      $data_states[$1.to_i].name }
    @text.gsub!(/\\II\[(\d+)\]/i) {
      "\x10{#{$data_items[$1.to_i].icon_index}}" +
      "#{$data_items[$1.to_i].name}"}
    @text.gsub!(/\\IW\[(\d+)\]/i) {
      "\x10{#{$data_weapons[$1.to_i].icon_index}}" +
      "#{$data_weapons[$1.to_i].name}"}
    @text.gsub!(/\\IA\[(\d+)\]/i) {
      "\x10{#{$data_armors[$1.to_i].icon_index}}" +
      "#{$data_armors[$1.to_i].name}"}
    @text.gsub!(/\\IS\[(\d+)\]/i) {
      "\x10{#{$data_skills[$1.to_i].icon_index}}" +
      "#{$data_skills[$1.to_i].name}"}
    @text.gsub!(/\\IT\[(\d+)\]/i) {
      "\x10{#{$data_states[$1.to_i].icon_index}}" +
      "#{$data_states[$1.to_i].name}"}
    @text.gsub!(/\\\?/)            { "\xff" }
    return @text
  end
 
  #--------------------------------------------------------------------------
  # overwrite update_message
  #--------------------------------------------------------------------------
  def update_message
    loop do
      @line_show_fast = true if Input.press?(YEZ::MESSAGE::TEXT_SKIP)
      text_height = [contents.font.size + (contents.font.size / 5), WLH].max
      c = @text.slice!(/./m)            # Get next text character
      case c
      #----------------------------------------------------------------------
      # Default Cases
      #----------------------------------------------------------------------
      when nil    # There is no text that must be drawn
        finish_message                  # Finish update
        break
      when "\x00" # New line
        new_line
        if @line_count >= @max_rows    # If line count is maximum
          unless @text.empty?          # If there is more
            self.pause = true          # Insert number input
            break
          end
        end
      when "\x01" # \C[n]  (text character color change)
        @text.sub!(/\{(\d+)\}/, "")
        self.contents.font.color = text_color($1.to_i)
        next
      when "\x02" # \G  (gold display)
        @gold_window.refresh
        @gold_window.open
      when "\x03" # \.  (wait 1/4 second)
        @wait_count = 15
        break
      when "\x04" # \|  (wait 1 second)
        @wait_count = 60
        break
      when "\x05" # \!  (Wait for input)
        self.pause = true
        break
      when "\x06" # \>  (Fast display ON)
        @line_show_fast = true
      when "\x07" # \<  (Fast display OFF)
        @line_show_fast = false
      when "\x08" # \^  (No wait for input)
        @pause_skip = true
     
      #----------------------------------------------------------------------
      # New Cases
      #----------------------------------------------------------------------
      when "\x09" # \|  Wait x frames
        @text.sub!(/\{(\d+)\}/, "")
        @wait_count = $1.to_i
        break
      when "\x10" # \i  Draws icon ID x
        @text.sub!(/\{(\d+)\}/, "")
        icon = $1.to_i
        icon_width = (24 - YEZ::MESSAGE::ICON_WIDTH) / 2
        draw_icon(icon, @contents_x - icon_width, @contents_y)
        @contents_x += YEZ::MESSAGE::ICON_WIDTH
      when "\x11" # \fs Font Size Change
        @text.sub!(/\{(\d+)\}/, "")
        size = $1.to_i
        if size <= 0 # If 0, revert back to the default font size.
          size = Font.default_size
        end
        self.contents.font.size = size
        text_height = [size + (size / 5), WLH].max
      when "\x12" # \fs Font Name Change
        @text.sub!(/\{(.*?)\}/, "")
        name = $1.to_s
        if name == "0" # If 0, revert back to the default font.
          name = Font.default_name
        end
        self.contents.font.name = name
      when "\x13" # \fb Font bold
        self.contents.font.bold = self.contents.font.bold ? false : true
      when "\x14" # \fi Font italic
        self.contents.font.italic = self.contents.font.italic ? false : true
      when "\x15" # \fi Font shadowed
        self.contents.font.shadow = self.contents.font.shadow ? false : true
      when "\x16" # Alignment change, for special choice boxes only.
        @text.sub!(/\{(\d+)\}/, "")
      when "\xff"
        # Do nothing
     
      #----------------------------------------------------------------------
      # Finish Up
      #----------------------------------------------------------------------
      else # Normal text character
        self.contents.draw_text(@contents_x, @contents_y, 40, text_height, c)
        c_width = self.contents.text_size(c).width
        @contents_x += c_width
        play_text_sound unless c == " "
      end
      break unless @show_fast or @line_show_fast
    end
  end
 
end # Window_Message

#===============================================================================
#
# END OF FILE
#
#=============================================================================
Revenir en haut Aller en bas
Alex-Cloud
Vagabond Lv.5
Vagabond Lv.5
Alex-Cloud


Masculin Age : 29
Inscrit le : 22/02/2010
Messages : 76

Identification du héros [Résolu] Empty
MessageSujet: Re: Identification du héros [Résolu]   Identification du héros [Résolu] Icon_minitimeLun 9 Aoû 2010 - 18:42

Mince ! Sad
Je me suis mal exprimé !
J'aurais du prendre un autre exemple !
En fait, ce que je veux, c'est le même résultat que la condition
"si le héros est Ralph" (Sauf que cette condition n'existe pas. Sad )
Ce n'est pas pour les messages !
Mais c'est vrai qu'il pouvait y avoir confusion...
Revenir en haut Aller en bas
Biward
Gardien des Scripts
Gardien des Scripts
Biward


Féminin Age : 27
Inscrit le : 30/12/2009
Messages : 1067

Identification du héros [Résolu] Empty
MessageSujet: Re: Identification du héros [Résolu]   Identification du héros [Résolu] Icon_minitimeLun 9 Aoû 2010 - 18:59

Ben tu fais ça :

Identification du héros [Résolu] Consei10

Normalement, ca devrait marcher Wink

Biward
Revenir en haut Aller en bas
http://vx-fan.1fr1.net
Alex-Cloud
Vagabond Lv.5
Vagabond Lv.5
Alex-Cloud


Masculin Age : 29
Inscrit le : 22/02/2010
Messages : 76

Identification du héros [Résolu] Empty
MessageSujet: Re: Identification du héros [Résolu]   Identification du héros [Résolu] Icon_minitimeLun 9 Aoû 2010 - 21:32

Un appel de script ?
Pas mal ! C\\'est bien
Je devrai me mettre au scriptage ! Identification du héros [Résolu] 362633
Si je comprend bien cet appel va vérifier que le perso 1 est en tête.
Belle réflexion !

En tout cas, MERCI ENORMEMENT !!!
Le système est fonctionnel.
C'était au delà de mes espérances ! C\\'est bien

[Résolu]
Revenir en haut Aller en bas
Contenu sponsorisé




Identification du héros [Résolu] Empty
MessageSujet: Re: Identification du héros [Résolu]   Identification du héros [Résolu] Icon_minitime

Revenir en haut Aller en bas
 

Identification du héros [Résolu]

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

 Sujets similaires

-
» [RESOLU]PHS de KGC, changer les héros de combat, mais garder le même héros sur la map
» [RESOLU] Afficher nom héros en message si l'ID du héros peut varier.
» [Résolu] Changement du nom du héros DANS LES COMBATS [RESOLU]
» Le héros ne bouge pas... [RESOLU]
» Mon héros ne bouge pas... [Résolu]

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker VX :: Entraide :: Problèmes et Solutions :: Résolu-
Créer un forum | ©phpBB | Forum gratuit d'entraide | Signaler un abus | Forum gratuit