¡Bienvenido a Universo Maker!
¿Es esta la primera vez que visitas el foro? Si es así te recomendamos que te registres para tener completo acceso a todas las áreas y secciones del foro, así también podrás participar activamente en la comunidad. Si ya tienes una cuenta, conectate cuanto antes.
Iniciar Sesión Registrarme

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo Mensaje [Página 1 de 1.]

#1 Script Texto edición el Miér Abr 15, 2015 10:34 pm

Ledai

avatar
Tengo un pedido para este script, el scripr hace varias cosas relaccionadas con las ventanas de mensaje; una de ellas es que cuando hay muchos mensajes de textos estos se empalmen y escloleen en una misma ventana (Activar la segunda opción en el scripr) y tiene una curiosidad y es que el icono de continuación del mensaje de texto solo aparece cuando el scrool está abajo del todo, pues mi pedido es que para saltar el mensaje tengas que estar abajo del todo también, osea que para saltar con "enter" el mensaje, tengas que estar abajo, cuando la flechita del mensaje aparece,para así no saltarse sin querer secciones importantes de diálogos en el juego.


Código:
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/    ◆メッセージウィンドウ改造 - KGC_MessageAlter◆
#_/----------------------------------------------------------------------------
#_/  メッセージウィンドウを改造し、微妙な機能を追加します。
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 
#==============================================================================
# ★ カスタマイズ項目 ★
#==============================================================================
 
module KGC
  $game_special_elements = {}
  $imported = {}
  $data_states = load_data("Data/States.rxdata") # o RVDATA
  $data_system = load_data("Data/System.rxdata") # o RVDATA
end

module KGC
 # ◆ウィンドウサイズ自動調整初期設定
 MSGA_AUTO_ADJUST_DEFAULT = true
 # ◆スクロール機能初期設定
 MSGA_SCROLL_DEFAULT = false
 
 # ◆スクロール速度【単位:px】
 MSGA_SCROLL_SPEED = 4
 # ◆最下部到達必須
 #  true にすると、最下部までスクロールしないとメッセージが消せない
 MSGA_MUST_LOWEST = false
 
 # ◆顔グラフィック専用ウィンドウを使用
 MSGA_FACE_WINDOW = false
 # ◆名前ウィンドウの縦幅
 #  文字サイズも自動調整(48~64 あたりを推奨)
 MSGA_NAME_WINDOW_HEIGHT = 48
end
 
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
 
$imported = {} if $imported == nil
$imported["MessageAlter"] = true
 
#==============================================================================
# ■ Game_System
#==============================================================================
 
class Game_System
 #--------------------------------------------------------------------------
 # ● 公開インスタンス変数
 #--------------------------------------------------------------------------
 attr_accessor :message_auto_adjust      # メッセージウィンドウ自動サイズ調整
 attr_accessor :message_align            # メッセージウィンドウ アライン
 attr_accessor :message_scroll          # メッセージウィンドウ スクロール
 attr_accessor :name_window_skin        # 名前ウィンドウスキン
 attr_accessor :face_window_skin        # 顔グラフィック専用ウィンドウスキン
 #--------------------------------------------------------------------------
 # ● オブジェクト初期化
 #--------------------------------------------------------------------------
 alias initialize_KGC_MessageAlter initialize
 def initialize
  # 元の処理を実行
  initialize_KGC_MessageAlter
 
  @message_auto_adjust = KGC::MSGA_AUTO_ADJUST_DEFAULT
  @message_align = 0
  @message_scroll = KGC::MSGA_SCROLL_DEFAULT
  @name_window_skin = nil
  @face_window_skin = nil
 end
end
 
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
 
#==============================================================================
# ■ Window_Message
#==============================================================================
 
class Window_Message < Window_Selectable
 #--------------------------------------------------------------------------
 # ● オブジェクト初期化
 #--------------------------------------------------------------------------
 alias initialize_KGC_MessageAlter initialize
 def initialize
  # 元の処理を実行
  initialize_KGC_MessageAlter
 
  # 名前用小型ウィンドウ作成
  @name_window = Window_Base.new(80, 240, 160, KGC::MSGA_NAME_WINDOW_HEIGHT)
  @name_window.visible = false
  @name_window.back_opacity = 160
  @name_window.z = 9999
  # 顔グラフィック専用ウィンドウ作成
  @face_window = Window_Base.new(0, 0, 32, 32)
  @face_window.visible = false
  @face_window.back_opacity = 160
  @face_window.z = 9998
 end
 #--------------------------------------------------------------------------
 # ● 解放
 #--------------------------------------------------------------------------
 alias dispose_KGC_MessageAlter dispose
 def dispose
  # ウィンドウ解放
  @name_window.dispose
  @face_window.dispose
 
  # 元の処理を実行
  dispose_KGC_MessageAlter
 end
 #--------------------------------------------------------------------------
 # ● リフレッシュ
 #--------------------------------------------------------------------------
 def refresh
  self.contents.clear
  # ウィンドウ初期化
  initialize_window
  # 文字列バッファ作成
  text_buf, trans_x = [Bitmap.new(608, 32)], [0]
  # メッセージウィンドウ自動サイズ調整がオフの場合
  unless $game_system.message_auto_adjust
    self.contents = Bitmap.new(width - 32, height - 32)
  end
  text_buf[0].font.color = self.normal_color
  x = y = max_x = 0
  @cursor_width = 0
  # 選択肢なら字下げを行う
  x = 8 if $game_temp.choice_start == 0
  # 表示待ちのメッセージがある場合
  if $game_temp.message_text != nil
    text = $game_temp.message_text
    # 制御文字処理
    begin
      last_text = text.clone
      text.gsub!(/\\[V]\[(\d+)\]/i) { $game_variables[$1.to_i] }
      text.gsub!(/\\IN\[(\d+)\]/i) { $data_items[$1.to_i] == nil ?
        "" : $data_items[$1.to_i].name }
      text.gsub!(/\\WN\[(\d+)\]/i) { $data_weapons[$1.to_i] == nil ?
        "" : $data_weapons[$1.to_i].name }
      text.gsub!(/\\AN\[(\d+)\]/i) { $data_armors[$1.to_i] == nil ?
        "" : $data_armors[$1.to_i].name }
    end until text == last_text
    text.gsub!(/\\[N]\[(\d+)\]/i) do
      $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
    end
    # 便宜上、"\\\\" を "\000" に変換
    text.gsub!(/\\\\/) { "\000" }
    # "\\C" を "\001" に、"\\G" を "\002" に変換
    text.gsub!(/\\[C]\[(\d+)\]/i) { "\001[#{$1}]" }
    text.gsub!(/\\[G]/i) { "\002" }
 
    text.gsub!(/\\AL\[(\d+)\]/i) { "\x10[#{$1}]" }
    text.gsub!(/\\IT\[(\d+)\]/i) { "\x11[#{$1}]" }
    text.gsub!(/\\WP\[(\d+)\]/i) { "\x12[#{$1}]" }
    text.gsub!(/\\AR\[(\d+)\]/i) { "\x13[#{$1}]" }
    # c に 1 文字を取得 (文字が取得できなくなるまでループ)
    while ((c = text.slice!(/./m)) != nil)
      # \\ の場合
      if c == "\000"
        # 本来の文字に戻す
        c = "\\"
      end
      # \C[n] の場合
      if c == "\001"
        # 文字色を変更
        text.sub!(/\[(\d+)\]/, "")
        color = $1.to_i
        if color >= 0 && color <= 7
          text_buf[y].font.color = self.text_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 = self.opacity
          @gold_window.back_opacity = self.back_opacity
        end
        # 次の文字へ
        next
      end
      # \AL[n] の場合
      if c == "\x10"
        # アラインタイプを変更
        text.sub!(/\[(\d+)\]/, "")
        align = $1.to_i
        # 次の文字へ
        next
      end
      # 改行文字の場合
      if c == "\n"
        # 選択肢ならカーソルの幅を更新
        if y >= $game_temp.choice_start
          @cursor_width = [@cursor_width, x].max
        end
        # y に 1 を加算
        y += 1
        # 新しい文字列バッファを作成
        text_buf[y] = Bitmap.new(608, 32)
        text_buf[y].font.color = self.normal_color
        # x の最大値更新判定
        max_x = [x, max_x].max
        # x を初期化
        x = 0
        # 選択肢なら字下げを行う
        x = 8 if y >= $game_temp.choice_start
        # 次の文字へ
        next
      end
      # \IT[n] の場合
      if c == "\x11"
        text.sub!(/\[(\d+)\]/, "")
        item = $data_items[$1.to_i]
        if item != nil
          # アイテム名をアイコン付きで描画
          icon = RPG::Cache.icon(item.icon_name)
          text_buf[y].blt(x + 4, [(32 - icon.height) / 2, 0].max, icon, icon.rect)
          x += icon.width + 8
          cx = text_buf[y].text_size(item.name).width + 8
          text_buf[y].draw_text(x, 0, cx, 32, item.name)
          x += cx - 8
        end
        next
      end
      # \WP[n] の場合
      if c == "\x12"
        text.sub!(/\[(\d+)\]/, "")
        item = $data_weapons[$1.to_i]
        if item != nil
          # 武器名をアイコン付きで描画
          icon = RPG::Cache.icon(item.icon_name)
          text_buf[y].blt(x + 4, [(32 - icon.height) / 2, 0].max, icon, icon.rect)
          x += icon.width + 8
          cx = text_buf[y].text_size(item.name).width + 8
          text_buf[y].draw_text(x, 0, cx, 32, item.name)
          x += cx - 8
        end
        next
      end
      # \AR[n] の場合
      if c == "\x13"
        text.sub!(/\[(\d+)\]/, "")
        item = $data_armors[$1.to_i]
        if item != nil
          # 武器名をアイコン付きで描画
          icon = RPG::Cache.icon(item.icon_name)
          text_buf[y].blt(x + 4, [(32 - icon.height) / 2, 0].max, icon, icon.rect)
          x += icon.width + 8
          cx = text_buf[y].text_size(item.name).width + 8
          text_buf[y].draw_text(x, 0, cx, 32, item.name)
          x += cx - 8
        end
        next
      end
      # 文字を描画
      text_buf[y].draw_text(4 + x, 0, 40, 32, c)
      # x に描画した文字の幅を加算
      x += text_buf[y].text_size(c).width
      # 転送用X座標保存
      trans_x[y] = x
      # 選択肢の場合はインデント分戻す
      trans_x[y] += 12 if $game_temp.choice_max > 0
    end
  end
  # メッセージウィンドウ自動サイズ調整がオンの場合
  if $game_system.message_auto_adjust
    # 数値入力の場合は1行余分に追加
    y += 1 if $game_temp.num_input_variable_id > 0
    # ウィンドウサイズを調整
    self.width = max_x + 48
    self.height = [y, 4].min * 32 + 32
    # 顔グラフィックが存在する場合
    if @face_bitmap != nil && !KGC::MSGA_FACE_WINDOW
      # ウィンドウの幅を加算
      self.width += @face_bitmap.width + 16
      # ウィンドウの高さが顔グラフィックよりも小さい場合
      if @face_bitmap.height + 32 > self.height
        # 顔グラフィックより大きいサイズに設定
        self.height = @face_bitmap.height + 32
      end
      self.contents = Bitmap.new(width - 32, [y * 32, @face_bitmap.height].max)
      face_y = (self.contents.height - @face_bitmap.height) / 2
      # 顔グラフィックが左側表示の場合
      if $msg_face[1] == 0
        @text_x = @face_bitmap.width + 16
        self.contents.blt(8, face_y, @face_bitmap,
          Rect.new(0, 0, @face_bitmap.width, @face_bitmap.height))
      else
        @text_x = 0
        self.contents.blt(self.contents.width - @face_bitmap.width - 8,
          face_y, @face_bitmap,
          Rect.new(0, 0, @face_bitmap.width, @face_bitmap.height))
      end
    else
      @text_x = 0
      self.contents = Bitmap.new(width - 32, y * 32)
    end
  # メッセージウィンドウ自動サイズ調整がオフの場合
  else
    # 顔グラフィックが存在する場合
    if @face_bitmap != nil && !KGC::MSGA_FACE_WINDOW
      # ウィンドウの高さが顔グラフィックよりも小さい場合
      if @face_bitmap.height + 32 > self.height
        # 顔グラフィックより大きいサイズに設定
        self.height = @face_bitmap.height + 32
      end
      face_y = (self.contents.height - @face_bitmap.height) / 2
      # 顔グラフィックが左側表示の場合
      if $msg_face[1] == 0
        @text_x = @face_bitmap.width + 16
        self.contents.blt(8, face_y, @face_bitmap,
          Rect.new(0, 0, @face_bitmap.width, @face_bitmap.height))
      else
        @text_x = 0
        self.contents.blt(self.contents.width - @face_bitmap.width - 8,
          face_y, @face_bitmap,
          Rect.new(0, 0, @face_bitmap.width, @face_bitmap.height))
      end
    else
      @text_x = 0
    end
  end
  # ウィンドウ内容を描画
  for i in 0...text_buf.size
    next if text_buf[i] == nil
    trans_x[i] = 0 if trans_x[i] == nil
    # 転送用X座標設定
    align = $game_system.message_align if align == nil
    case align
    when 0, nil  # 左側
      tx = @text_x
    when 1  # 中央
      if $msg_face != nil && $msg_face[1] == 1
        tx = (self.contents.width - trans_x[i] - @face_bitmap.width - 16) / 2
      else
        tx = (self.contents.width - trans_x[i] + @text_x) / 2
      end
    when 2  # 右側
      if $msg_face != nil && $msg_face[1] == 0
        tx = self.contents.width - trans_x[i] - 8
      elsif $msg_face != nil && $msg_face[1] == 1
        tx = self.contents.width - trans_x[i] - @face_bitmap.width - 24
      else
        tx = self.contents.width - trans_x[i] + @text_x - 8
      end
    end
    self.contents.blt(tx, i * 32, text_buf[i], text_buf[i].rect)
    text_buf[i].dispose
  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 + @text_x
    @input_number_window.y = self.y + $game_temp.num_input_start * 32
    # メッセージウィンドウ自動サイズ調整がオンの場合
    if $game_system.message_auto_adjust
      # ウィンドウの幅を調整
      self.width = [self.width, @input_number_window.width + 16].max
      # ウィンドウを中央へ移動
      centering_window
      # 数値入力ウィンドウ位置を調整
      @input_number_window.x = self.x + 8 + @text_x
    end
  end
  # 名前が設定されている場合、名前表示
  if $msg_name != nil
    fs = [[22 - (64 - KGC::MSGA_NAME_WINDOW_HEIGHT) / 4, 12].max, 80].min
    bitmap = Bitmap.new(32, 32)
    bitmap.font.size = fs
    cx = bitmap.text_size($msg_name).width
    @name_window.width = cx + 32
    @name_window.contents.dispose if @name_window.contents != nil
    @name_window.contents = Bitmap.new(cx, KGC::MSGA_NAME_WINDOW_HEIGHT - 32)
    @name_window.contents.font.size = fs
    @name_window.contents.draw_text(0, 0, cx + 8, KGC::MSGA_NAME_WINDOW_HEIGHT - 32, $msg_name)
    @name_window.visible = true
    if $game_system.name_window_skin != nil
      @name_window.windowskin = RPG::Cache.windowskin($game_system.name_window_skin)
    else
      @name_window.windowskin = self.windowskin
    end
  # 名前が設定されていない場合、ウィンドウ消去
  else
    @name_window.visible = false
  end
  # 顔グラフィック専用ウィンドウ表示
  if $msg_face != nil && KGC::MSGA_FACE_WINDOW
    @face_window.width = @face_bitmap.width + 32
    @face_window.height = [@face_bitmap.height + 32, self.height].max
    self.height = [@face_window.height, self.height].max
    face_y = (@face_window.height - @face_bitmap.height - 32) / 2
    @face_window.contents.dispose if @face_window.contents != nil
    @face_window.contents = Bitmap.new(@face_window.width - 32, @face_window.height - 32)
    @face_window.contents.blt(0, face_y, @face_bitmap, @face_bitmap.rect)
    if $game_system.face_window_skin != nil
      @face_window.windowskin = RPG::Cache.windowskin($game_system.face_window_skin)
    else
      @face_window.windowskin = self.windowskin
    end
    @face_window.visible = true
  else
    @face_window.visible = false
  end
  # 中央に移動
  centering_window
 end
 #--------------------------------------------------------------------------
 # ● ウィンドウ設定初期化
 #--------------------------------------------------------------------------
 def initialize_window
  if $msg_face == nil || $msg_face[0] == nil || $msg_face[1] == nil
    @face_bitmap.dispose if @face_bitmap != nil
    @face_bitmap = nil
    self.width = 480
  else
    @face_bitmap = RPG::Cache.picture($msg_face[0])
    self.width = KGC::MSGA_FACE_WINDOW ? 480 : 496 + @face_bitmap.width
  end
  centering_window
  self.y = 304
  self.oy = 0
  self.height = 160
  reset_window
 end
 #--------------------------------------------------------------------------
 # ● ウィンドウを中央に移動
 #--------------------------------------------------------------------------
 def centering_window
  if @face_window.visible && $msg_face != nil
    cx = 640 - self.width - @face_window.width
    case $msg_face[1]
    when 1  # 右
      @face_window.x = cx / 2 + self.width
      self.x = cx / 2
      @name_window.x = self.x
    else  # 左
      @face_window.x = cx / 2
      self.x = cx / 2 + @face_window.width
      @name_window.x = @face_window.x
    end
  else
    cx = 640 - self.width
    self.x = cx / 2
    @name_window.x = self.x
  end
 end
 #--------------------------------------------------------------------------
 # ● ウィンドウの位置と不透明度の設定
 #--------------------------------------------------------------------------
 def reset_window
  if $game_temp.in_battle
    self.y = 32
  else
    case $game_system.message_position
    when 0  # 上
      self.y = 32
    when 1  # 中
      self.y = 160
    when 2  # 下
      self.y = 304
    end
  end
  if $game_system.message_frame == 0
    self.opacity = 255
  else
    self.opacity = 0
  end
  @name_window.y = self.y - KGC::MSGA_NAME_WINDOW_HEIGHT + 16
  @name_window.opacity = self.opacity
  @face_window.y = self.y
  @face_window.opacity = self.opacity
  self.back_opacity = 160
  self.pause = false
 end
 #--------------------------------------------------------------------------
 # ● フレーム更新
 #--------------------------------------------------------------------------
 def update
  super
  # ウィンドウを更新
  @name_window.update
  @face_window.update
  # フェードインの場合
  if @fade_in
    self.contents_opacity += 24
    @name_window.contents_opacity += 24 if $msg_name != nil
    @face_window.contents_opacity += 24 if $msg_face != nil
    if @input_number_window != nil
      @input_number_window.contents_opacity += 24
    end
    if self.contents_opacity == 255
      @fade_in = false
    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
    # スクロール最大位置を計算
    scroll_max = self.contents.height - (self.height - 32)
    # 選択肢の表示中でなければポーズサインを表示
    if $game_temp.choice_max == 0
      self.pause = true
    end
    # キャンセル
    if Input.trigger?(Input::B) && $game_temp.choice_max > 0 &&
        $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
    # 決定
    if Input.trigger?(Input::C)
      if $game_temp.choice_max > 0
        $game_system.se_play($data_system.decision_se)
        $game_temp.choice_proc.call(self.index)
      end
      # スクロール機能がオン、かつ選択肢でない場合
      if $game_system.message_scroll && $game_temp.choice_max == 0
        # 最下部到達判定
        if KGC::MSGA_MUST_LOWEST
          terminate_message if self.oy == scroll_max
        else
          terminate_message
        end
      else
        terminate_message
      end
    end
    # スクロール機能がオン、かつ選択肢でない場合
    if $game_system.message_scroll && $game_temp.choice_max == 0
      # 方向ボタンの上が押されている場合
      if Input.press?(Input::UP)
        self.oy = [self.oy - KGC::MSGA_SCROLL_SPEED, 0].max
      # 方向ボタンの下が押されている場合
      elsif Input.press?(Input::DOWN)
        self.oy = [self.oy + KGC::MSGA_SCROLL_SPEED, scroll_max].min
      # R ボタンが押された場合
      elsif Input.repeat?(Input::R)
        self.oy = [self.oy + (self.height - 32), scroll_max].min
      # L ボタンが押された場合
      elsif Input.repeat?(Input::L)
        self.oy = [self.oy - (self.height - 32), 0].max
      end
      # ウィンドウ最下部に達した場合
      if $game_temp.choice_max == 0 && self.oy == scroll_max
        # ポーズサインを表示
        self.pause = true
      else
        # ポーズサインを消去
        self.pause = false
      end
    end
    return
  end
  # フェードアウト中以外で表示待ちのメッセージか選択肢がある場合
  if !@fade_out && $game_temp.message_text != nil
    @contents_showing = true
    $game_temp.message_window_showing = true
    reset_window
    refresh
    Graphics.frame_reset
    self.visible = true
    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
    self.opacity -= 48
    @name_window.opacity -= 48
    @face_window.opacity -= 48
    if self.opacity == 0
      self.visible = false
      @name_window.visible = false
      @face_window.visible = false
      @fade_out = false
      $game_temp.message_window_showing = false
    end
    return
  end
 end
 #--------------------------------------------------------------------------
 # ● カーソルの矩形更新
 #--------------------------------------------------------------------------
 def update_cursor_rect
  if @index >= 0
    n = $game_temp.choice_start + @index
    self.cursor_rect.set(8 + @text_x, n * 32, @cursor_width, 32)
  else
    self.cursor_rect.empty
  end
 end
end
 
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
 
#==============================================================================
# ■ Interpreter (分割定義 3)
#==============================================================================
 
class Interpreter
 #--------------------------------------------------------------------------
 # ● 文章の表示
 #--------------------------------------------------------------------------
 def command_101
  # ほかの文章が message_text に設定済み、かつスクロール機能がオフの場合
  if $game_temp.message_text != nil && !$game_system.message_scroll
    # 終了
    return false
  end
  # メッセージ終了待機中フラグおよびコールバックを設定
  @message_waiting = true
  $game_temp.message_proc = Proc.new { @message_waiting = false }
  # message_text に 1 行目を設定
  $game_temp.message_text = @list[@index].parameters[0] + "\n"
  line_count = 1
  # ループ
  loop {
    # 次のイベントコマンドが文章 2 行目以降の場合
    if @list[@index+1].code == 401
      # message_text に 2 行目以降を追加
      $game_temp.message_text += @list[@index+1].parameters[0] + "\n"
      line_count += 1
    # イベントコマンドが文章 2 行目以降ではない場合
    else
      # 次のイベントコマンドが文章表示、かつスクロール機能がオンの場合
      if @list[@index+1].code == 101 && $game_system.message_scroll
        # message_text に次の文章を追加
        $game_temp.message_text += @list[@index+1].parameters[0] + "\n"
        line_count += 1
        # インデックスを進める
        @index += 1
        next
      # 次のイベントコマンドが選択肢の表示の場合
      elsif @list[@index+1].code == 102
        # 選択肢が画面に収まる場合
        if @list[@index+1].parameters[0].size <= 4 - line_count
          # インデックスを進める
          @index += 1
          # 選択肢のセットアップ
          $game_temp.choice_start = line_count
          setup_choices(@list[@index].parameters)
        end
      # 次のイベントコマンドが数値入力の処理の場合
      elsif @list[@index+1].code == 103
        # 数値入力ウィンドウが画面に収まる場合
        if line_count < 4
          # インデックスを進める
          @index += 1
          # 数値入力のセットアップ
          $game_temp.num_input_start = line_count
          $game_temp.num_input_variable_id = @list[@index].parameters[0]
          $game_temp.num_input_digits_max = @list[@index].parameters[1]
        end
      end
      # 継続
      return true
    end
    # インデックスを進める
    @index += 1
  }
 end
end




Entérate de todas las novedades

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.