Sujet n°9913
Posté par Captain Relevant le 23 Juin - 22:15 (2011)
Titre : [PSP DS] Couleurs dans les messages qui ne fonctionnent pas
Bonsoir!

J'ai remarqué qu'on ne pouvait pas mettre de couleur dans les messages avec la commande habituelle (et non la commande de script "afficher_message").
J'ai naturellement procédé de la manière qu'il le fallait, à savoir :

\C[3]Bonsoir!
ou
\C[3] Bonsoir!

Mais rien y fait, le texte n'apparaît pas en vert comme prévu : (

Merci d'avance pour l'aide apportée.

Posté par Astal le 24 Juin - 06:32 (2011)
Dans PSP DS, les couleurs ne sont pas paramètrer comme dans les jeux RPG Maker Xp normal.
Alors, il faut que tu aille dans le script Window_Base (en dessous de Game_Event)et, tout à la fin du script, que tu modifie les codes couleur.

Par exemple pour du vert (comme tu voulais) il faut modifier le when 3 par:

Code:

when 3
      return Color.new(0, 255, 0, 255)



J'espère que tu m'as compris

Posté par Captain Relevant le 24 Juin - 10:30 (2011)
En réalité j'avais déjà essayé et ça ne marchait pas non plus :/

Posté par Nuri Yuri le 24 Juin - 10:50 (2011)
J'ai corrigé le problème :
Mettez ce script à la place de "Window_Base*" :
Code:
#==============================================================================
# ■ Window_Base
# Pokemon Script Project - Krosk
# 18/07/07
# 23/02/10 - Palbolsky
# 24/06/11 - Nuri Yuri (塗 ゆり)
#-----------------------------------------------------------------------------
# Scène modifiable
#-----------------------------------------------------------------------------
class Window_Base < Window

  def normal_color
    return Color.new(60, 60, 60, 255)
  end
 
  def platine
    return Color.new(82, 82, 90, 255)
  end 
   
  def ombre
    return Color.new(160,160,168,255)
  end 
 
  def disabled_color
    return Color.new(60, 60, 60, 128)
  end 
 
  def white
    return Color.new(255, 255, 255, 255)
  end
 
  def draw_text_bis(x, y, w, h, string, align = 0, color = Color.new(255, 255, 255, 255))     
    self.contents.font.color = Color.new(107,107,107,255)   
    self.contents.draw_text(x, y + 1, w, h, string, align)
    self.contents.draw_text(x + 1, y, w, h, string, align)
    self.contents.draw_text(x + 1, y + 1, w, h, string, align)
    self.contents.font.color = color
    self.contents.draw_text(x, y, w, h, string, align)
  end
 
  def draw_text_bis_plus(x, y, w, h, string, align = 0, color = Color.new(255, 247, 231, 255))     
    self.contents.font.color = Color.new(66,66,66,255)   
    self.contents.draw_text(x, y + 1, w, h, string, align)
    self.contents.draw_text(x + 1, y, w, h, string, align)
    self.contents.draw_text(x + 1, y + 1, w, h, string, align)
    self.contents.draw_text(x - 1, y - 1, w, h, string, align)
    self.contents.draw_text(x, y - 1, w, h, string, align)
    self.contents.draw_text(x + 1, y, w, h, string, align)
    self.contents.draw_text(x - 1, y + 1, w, h, string, align)
    self.contents.draw_text(x + 1, y - 1, w, h, string, align)
    self.contents.draw_text(x - 1, y, w, h, string, align)   
    self.contents.font.color = color
    self.contents.draw_text(x, y, w, h, string, align)
  end

  def draw_text_bis_plus_2(x, y, w, h, string, align = 0, color = Color.new(255, 247, 231, 255))     
    self.contents.font.color = Color.new(82,99,99,255)   
    self.contents.draw_text(x, y + 1, w, h, string, align)
    self.contents.draw_text(x + 1, y, w, h, string, align)
    self.contents.draw_text(x + 1, y + 1, w, h, string, align)
    self.contents.font.color = color
    self.contents.draw_text(x, y, w, h, string, align)
  end
 
  def draw_msg_text(x,y,w,h,str,align=0,color=0)
    self.contents.font.color = Constant::Color_ext[color]
    self.contents.draw_text(x, y + 1, w, h, str, align)
    self.contents.draw_text(x + 1, y, w, h, str, align)
    self.contents.draw_text(x + 1, y + 1, w, h, str, align)
    self.contents.font.color = Constant::Color_int[color]
    self.contents.draw_text(x, y, w, h, str, align)
  end
 
 def draw_text(x, y, w, h, string, align = 0, color = platine)
    self.contents.font.color = Color.new(165,165,173,255)
    self.contents.draw_text(x, y + 1, w, h, string, align)
    self.contents.draw_text(x + 1, y, w, h, string, align)
    self.contents.draw_text(x + 1, y + 1, w, h, string, align)
    self.contents.font.color = color
    self.contents.draw_text(x, y, w, h, string, align)
  end
 
  def draw_text_red(x, y, w, h, string, align = 0, color = Color.new(232, 32, 16, 255))
    self.contents.font.color = Color.new(248, 168, 184, 255)
    self.contents.draw_text(x, y + 1, w, h, string, align)
    self.contents.draw_text(x + 1, y, w, h, string, align)
    self.contents.draw_text(x + 1, y + 1, w, h, string, align)
    self.contents.font.color = color
    self.contents.draw_text(x, y, w, h, string, align)
  end
 
  def draw_text_blue(x, y, w, h, string, align = 0, color = Color.new(0, 112, 248, 255))
    self.contents.font.color = Color.new(120, 184, 232, 255)
    self.contents.draw_text(x, y + 1, w, h, string, align)
    self.contents.draw_text(x + 1, y, w, h, string, align)
    self.contents.draw_text(x + 1, y + 1, w, h, string, align)
    self.contents.font.color = color
    self.contents.draw_text(x, y, w, h, string, align)
  end
 
  def draw_text_menu(x, y, w, h, string, align = 0, color = Color.new(66, 66, 66, 255))
    self.contents.font.color = Color.new(181,181,181,255)
    self.contents.draw_text(x, y + 1, w, h, string, align)
    self.contents.draw_text(x + 1, y, w, h, string, align)
    self.contents.draw_text(x + 1, y + 1, w, h, string, align)
    self.contents.font.color = color
    self.contents.draw_text(x, y, w, h, string, align)
  end
 
  def draw_text_mappanel(x, y, w, h, string, align = 0, color = Color.new(0, 0, 0, 255))
    self.contents.font.color = Color.new(144,144,160,255)
    self.contents.draw_text(x, y + 1, w, h, string, align)
    self.contents.draw_text(x + 1, y, w, h, string, align)
    self.contents.draw_text(x + 1, y + 1, w, h, string, align)
    self.contents.font.color = color
    self.contents.draw_text(x, y, w, h, string, align)
  end
 
  def draw_text_battle(x, y, w, h, string, align = 0, color = Color.new(74, 74, 74, 255))
    self.contents.font.color = Color.new(189,189,189,255)
    self.contents.draw_text(x, y + 1, w, h, string, align)
    self.contents.draw_text(x + 1, y, w, h, string, align)
    self.contents.draw_text(x + 1, y + 1, w, h, string, align)
    self.contents.font.color = color
    self.contents.draw_text(x, y, w, h, string, align)
  end
 
  def draw_text_trainer(x, y, w, h, string, align = 0, color = Color.new(72, 72, 72, 255))
    self.contents.font.color = Color.new(160,160,160,255)
    self.contents.draw_text(x, y + 1, w, h, string, align)
    self.contents.draw_text(x + 1, y, w, h, string, align)
    self.contents.draw_text(x + 1, y + 1, w, h, string, align)
    self.contents.font.color = color
    self.contents.draw_text(x, y, w, h, string, align)
  end
 
  def draw_text_contour(x, y, w, h, string, align = 0, color = white)
    self.contents.font.color = Color.new(66,66,66,255)
    self.contents.draw_text(x, y + 1, w, h, string, align)
    self.contents.draw_text(x + 1, y, w, h, string, align)
    self.contents.draw_text(x + 1, y + 1, w, h, string, align)   
    self.contents.draw_text(x, y - 1, w, h, string, align)
    self.contents.draw_text(x - 1, y, w, h, string, align)
    self.contents.draw_text(x - 1, y - 1, w, h, string, align)
    self.contents.draw_text(x - 1, y + 1, w, h, string, align)
    self.contents.draw_text(x + 1, y - 1, w, h, string, align)   
    self.contents.font.color = color
    self.contents.draw_text(x, y, w, h, string, align)
  end 
 
  def draw_text_interface(x, y, w, h, string, align = 0, color = white)
    self.contents.font.color = Color.new(107,107,107,255)
    self.contents.draw_text(x, y + 1, w, h, string, align)
    self.contents.draw_text(x + 1, y, w, h, string, align)
    self.contents.draw_text(x + 1, y + 1, w, h, string, align)
    self.contents.font.color = color
    self.contents.draw_text(x, y, w, h, string, align)
  end
 
  def draw_text_stat(x, y, w, h, string, align = 0, color = white) 
    self.contents.font.color = Color.new(8,8,0,255) 
    self.contents.draw_text(x, y + 1, w, h, string, align) 
    self.contents.draw_text(x + 1, y, w, h, string, align) 
    self.contents.draw_text(x + 1, y + 1, w, h, string, align) 
    self.contents.font.color = color 
    self.contents.draw_text(x, y, w, h, string, align) 
  end 
 
  def text_color(n)
    case n
    when 0
      return normal_color
    when 1     
      return Color.new(128, 128, 255, 255)
    when 2
      return Color.new(255, 128, 128, 255)
    when 3
      return Color.new(128, 255, 128, 255)
    when 4
      return Color.new(128, 255, 255, 255)
    when 5
      return Color.new(255, 128, 255, 255)
    when 6
      return Color.new(255, 255, 128, 255)
    when 7
      return Color.new(192, 192, 192, 255)
    else
      normal_color
    end
  end

 
end

Celui-ci à la place de "Window_Message*" :
Code:
#==============================================================================
# ■ Window_Message
# Pokemon Script Project - Krosk
# 18/07/07
# Modifier par Palbolsky
#-----------------------------------------------------------------------------
# Scène à ne pas modifier de préférence
#-----------------------------------------------------------------------------
# 24/06/11 - Nuri Yuri (塗 ゆり)
#-----------------------------------------------------------------------------

class Window_Message < Window_Selectable
  #--------------------------------------------------------------------------
  #
  #--------------------------------------------------------------------------
  def initialize
    # Redéfinition taille du cadre
    super(138, 33, 499, 71)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.visible = false
    self.z = 9998
    self.opacity = 0
    @dummy = Sprite.new     
    @dummy.bitmap = RPG::Cache.picture($MSG)
    @dummy.visible = false
    @dummy.x = 15
    self.x = 9
    @dummy.z = 9997
    @fade_in = false
    @fade_out = false
    @contents_showing = false
    @cursor_width = 0
    @speed_defilement = $SPEED_MSG
    self.active = false
    self.index = -1
    $fontspecial = "Pokemon Emerald"   
    @color=0
  end
 
  #--------------------------------------------------------------------------
  #
  #--------------------------------------------------------------------------

  def reset_window
    # Redéfinition
    if $game_temp.in_battle
      self.y = 159
      @dummy.y = 177
    else
      case $game_system.message_position
      when 0  # 上
        self.y = 6
        @dummy.y = 36
      when 1  # 中
        self.y = 166
        @dummy.y = 160
      when 2  # Redéfinition position du cadre inférieur
        self.y = 140
        @dummy.y = 158
      end
    end
    if $game_system.message_frame == 0
      #self.opacity = 255
      @dummy.opacity = 255
    else
      #self.opacity = 0
      @dummy.opacity = 0
    end
    self.back_opacity = 255   
    @color=0
  end
  #--------------------------------------------------------------------------
  #
  #-------------------------------------------------------------------------- 
  def update
    super
    # フェードインの場合
    if @fade_in
      self.contents_opacity += 24
      if @input_number_window != nil
        @input_number_window.contents_opacity += 24
      end
      if self.contents_opacity == 255
        @fade_in = false
        if @speed_defilement != 0
          refresh
        end
      end
      return
    end
    # 数値入力中の場合
    if @input_number_window != nil
      @input_number_window.update
      # 決定
      if Input.trigger?(Input::C)         
        $game_system.se_play($data_system.decision_se)
        $game_variables[$game_temp.num_input_variable_id] =
        @input_number_window.number
        $game_map.need_refresh = true
        # 数値入力ウィンドウを解放
        @input_number_window.dispose
        @input_number_window = nil
        terminate_message
      end
      return
    end
    # メッセージ表示中の場合
    if @contents_showing
      # 選択肢の表示中でなければポーズサインを表示
      if $game_temp.choice_max == 0       
        self.pause = true   
      end
      # キャンセル
      if Input.trigger?(Input::B)
        if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
          $game_system.se_play($data_system.cancel_se)
          $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
          terminate_message
        end
      end
      # 決定
      if Input.trigger?(Input::C)       
         Audio.se_play("Audio/SE/Bip.ogg")
        if $game_temp.choice_max > 0
          $game_system.se_play($data_system.decision_se)
          $game_temp.choice_proc.call(self.index)
        end
        terminate_message       
      end
      return
    end
    # フェードアウト中以外で表示待ちのメッセージか選択肢がある場合
    if @fade_out == false and $game_temp.message_text != nil     
      $game_variables[15] = 1
      $game_variables[14] = 2
      @contents_showing = true
      $game_temp.message_window_showing = true
      reset_window
      if @speed_defilement == 0
        refresh
      end
      self.visible = true
      @dummy.visible = true     
      Graphics.frame_reset       
      self.contents_opacity = 0
      if @input_number_window != nil
        @input_number_window.contents_opacity = 0
      end
      @fade_in = true
      return
    end
    # 表示すべきメッセージがないが、ウィンドウが可視状態の場合
    if self.visible
      @fade_out = true
      @dummy.opacity = 0
      #self.opacity -= 48
      if @dummy.opacity == 0 #self.opacity == 0
        self.visible = false
        @dummy.visible = false       
        @fade_out = false       
        $game_temp.message_window_showing = false       
        $game_variables[15] = 0 if not $game_variables[15] == 2
      end     
      return
    end
  end 
 
  #--------------------------------------------------------------------------
  #
  #--------------------------------------------------------------------------
  def refresh   
    self.contents.clear   
    self.contents.font.color = Color.new(82,82,90)
    self.contents.font.name = $fontspecial
    self.contents.font.size = 15   
    text_count = 0
    x = y = 0
    push = false
    @cursor_width = 0
    # 選択肢なら字下げを行う
    if $game_temp.choice_start == 0
      x = 8
    end
    # 表示待ちのメッセージがある場合
    if $game_temp.message_text != nil
      text = $game_temp.message_text
      # 制御文字処理
      begin
        last_text = text.clone
        text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
        # MODIF
        text.gsub!(/\\[Pp]\[([0-9]+)\]/) { $string[$1.to_i] }
      end until text == last_text
      text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
        $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
      end
      # 便宜上、"\\\\" を "\000" に変換
      text.gsub!(/\\\\/) { "\000" }
      # "\\C" を "\001" に、"\\G" を "\002" に変換
      text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
      text.gsub!(/\\[Gg]/) { "\002" }
      # c に 1 文字を取得 (文字が取得できなくなるまでループ)
      while ((c = text.slice!(/./m)) != nil)
        # \\ の場合
        if c == "\000"
          # 本来の文字に戻す
          c = "\\"
        end
        # \C[n] の場合
        if c == "\001"
          # 文字色を変更
          text.sub!(/\[([0-9]+)\]/, "")
          color = $1.to_i
          if color >= 0 and color <= 7
            #self.contents.font.color = text_color(color)
            @color=color
          end
          # 次の文字へ
          next
        end
        # \G の場合
        if c == "\002"
          # ゴールドウィンドウを作成
          if @gold_window == nil
            @gold_window = Window_Gold.new
            @gold_window.x = 560 - @gold_window.width
            if $game_temp.in_battle
              @gold_window.y = 192
            else
              @gold_window.y = self.y >= 128 ? 32 : 384
            end           
            @gold_window.opacity = 255
            @gold_window.back_opacity = 255
          end
          # 次の文字へ
          next
        end
        # 改行文字の場合
        if c == "\n"
          # 選択肢ならカーソルの幅を更新
          if y >= $game_temp.choice_start
            @cursor_width = [@cursor_width, x].max
          end
          # y に 1 を加算
          y += 1
          x = 0
          # 選択肢なら字下げを行う
          if y >= $game_temp.choice_start
            x = 8
          end
          # 次の文字へ
          next
        end
        # 文字を描画       
        draw_msg_text(4 + x, 16 * y, 12, 32, c,0,@color)
        text_count += 1
        Input.update
        if Input.trigger?(Input::C)           
          push = true         
        end
        if text_count == @speed_defilement and @speed_defilement != 0 and push == false
          Graphics.update
          #$game_map.update
          $scene.update#spriteset.update
          text_count = 0
        end
        # x に描画した文字の幅を加算
        x += self.contents.text_size(c).width
      end
    end
    # 選択肢の場合
    if $game_temp.choice_max > 0
      @item_max = $game_temp.choice_max
      self.active = true
      self.index = 0
    end
    # 数値入力の場合
    if $game_temp.num_input_variable_id > 0
      digits_max = $game_temp.num_input_digits_max
      number = $game_variables[$game_temp.num_input_variable_id]
      @input_number_window = Window_InputNumber.new(digits_max)
      @input_number_window.number = number
      @input_number_window.x = self.x + 8
      @input_number_window.y = self.y + $game_temp.num_input_start * 32   
    end
  end
  #--------------------------------------------------------------------------
  #
  #-------------------------------------------------------------------------- 
  def update_cursor_rect
    if @index >= 0
      n = $game_temp.choice_start + @index
      self.cursor_rect.set(0, n * 32, 32, 32)
    else
      self.cursor_rect.empty
    end
  end
end

class Interpreter
  def setup_choices(parameters)
    # Redéfinition
    # choice_max に選択肢の項目数を設定
    $game_temp.choice_max = parameters[0].size
    # message_text に選択肢を設定
    for text in parameters[0]
      # Espaces supplémentaires
      $game_temp.message_text += "  " + text + "\n"
    end
    # キャンセルの場合の処理を設定
    $game_temp.choice_cancel_type = parameters[1]
    # コールバックを設定
    current_indent = @list[@index].indent
    $game_temp.choice_proc = Proc.new { |n| @branch[current_indent] = n }
  end
end

Et ce script avant Main, vous le nommez Constantes :
Code:
#===
#¤Module Constant
#---
#%Contient toute les constantes, créé pour PSP v2
#---
#© 22/05/2011 - Nuri Yuri (塗 ゆり)
#===
module Constant
  #Couleurs des textes
  Color_int=Array.new(11)
  Color_ext=Array.new(11)
  Color_int[0]=Color.new(60, 60, 60)    #Gris foncé
  Color_int[1]=Color.new(110, 110, 255) #Bleu
  Color_int[2]=Color.new(255, 110, 110) #Rouge
  Color_int[3]=Color.new(110, 200, 110) #Vert
  Color_int[4]=Color.new(110, 255, 255) #Bleu Clair
  Color_int[5]=Color.new(255, 110, 255) #Rose
  Color_int[6]=Color.new(255, 255, 110) #Jaune
  Color_int[7]=Color.new(110, 110, 110) #Gris
  Color_int[8]=Color.new(255, 255, 255) #Blanc
  Color_int[9]=Color.new(214, 222, 222) #Pkdx inversé
  Color_int[10]=Color.new(90, 90, 90)   #Pkdx normal
  Color_ext[0]=Color.new(110, 110, 110)
  Color_ext[1]=Color.new(160, 160, 255)
  Color_ext[2]=Color.new(255, 60, 60)
  Color_ext[3]=Color.new(60, 200, 60)
  Color_ext[4]=Color.new(60, 255, 60)
  Color_ext[5]=Color.new(255, 60, 255)
  Color_ext[6]=Color.new(255, 255, 60)
  Color_ext[7]=Color.new(60, 60, 60)
  Color_ext[8]=Color.new(110, 110, 110)
  Color_ext[9]=Color.new(90, 90, 90)
  Color_ext[10]=Color.new(214, 222, 222)
  #Fenêtres
  Window1=[5,4,5,5,4,5]  # => [width_droite,w_centre,w_gauche,h_haut,h_centre,h_bas]
  Window2=[4,15,4,8,16,4]
  Message1=[14,8,22,7,8,7]
  Bouton1=[7,6,7,7,3,11]
end


Voilà, chez moi ça marche.

Posté par Captain Relevant le 24 Juin - 11:14 (2011)
Merci du partage Yuri! Ca fonctionne chez moi aussi Clin d'œil foireux