RMXP

메세지 스크립트 관련하여 질문 드립니다.

by 빈군 posted May 18, 2020
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
종류 스크립트 사용

ddddddddddd.PNG


메세지 창에 초상화를 띄우는 스크립트를 사용중인데 본래 96x96 사이즈였던 초상화를 128x128로 사용하고 싶어 늘렸더니

초상화와 메세지 사이 간격이 굉장히 좁아져버렸습니다.

간격을 늘리고 싶어서 짐작이 가는 숫자들을 수정중인데 너무 많아 어디를 수정해야할지 잘 모르겠어서 질문 올립니다.


 

 #==============================================================================

# ■ Window_Message

#==============================================================================

class Window_Message < Window_Selectable

  # 一文字ずつ描?

  DEFAULT_TYPING_ENABLE = true                # falseにすると瞬間表示

  #--------------------------------------------------------------------------

  # ● オブジェクト初期化

  #--------------------------------------------------------------------------

  alias xrxs9_initialize initialize

  def initialize

    xrxs9_initialize

    # 再生サウンド名がない場合は""とする

    if $soundname_on_speak == nil then

      $soundname_on_speak = ""

    end

    # 外字ファイルパス設定

    $gaiji_file = "./Graphics/Gaiji/sample.png"

    # 外字デ?タ?み?み

    if FileTest.exist?($gaiji_file)

      @gaiji_cache = Bitmap.new($gaiji_file)

    else

      @gaigi_cache = nil

    end

    # 文字透過?送用バッファ

    @opacity_text_buf = Bitmap.new(32, 32)

  end

  #--------------------------------------------------------------------------

  # ● メッセ?ジ終了?理

  #--------------------------------------------------------------------------

  alias xrxs9_terminate_message terminate_message

  def terminate_message

    if @name_window_frame != nil

      @name_window_frame.dispose

      @name_window_frame = nil

    end

    if @name_window_text  != nil

      @name_window_text.dispose

      @name_window_text  = nil

    end

    xrxs9_terminate_message

  end

  #--------------------------------------------------------------------------

  # ● リフレッシュ

  #--------------------------------------------------------------------------

  def refresh

    # 初期化

    self.contents.clear

    self.contents.font.color = normal_color

    self.contents.font.size  = Font.default_size

    @x = @y = @max_x = @max_y = @indent = @lines = 0

    @face_indent = 0

    @opacity = 200

    @cursor_width = 0

    @write_speed = 0

    @write_wait = 0

    @mid_stop = false

    @face_file = nil

    # @popchar が -2 の場合、標準位置。-1の場合、文字センタ?。

    # 0以上の場合 キャラポップ。0は主人公、1以降はイベント。

    @popchar = -2

    # 選?肢なら字下げを行う

    if $game_temp.choice_start == 0

      @x = 8

    end

    # 表示待ちのメッセ?ジがある場合

    if $game_temp.message_text != nil

      @now_text = $game_temp.message_text

      # 顔表示指定\Fがあるか?

      if (/\A\\[Ff]\[(.+?)\]/.match(@now_text))!=nil then

        # ファイルチェック

        if FileTest.exist?("Graphics/Pictures/" + $1 + ".png")

          # 顔グラを描?

          @face_file = $1 + ".png"

          self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))

          # 全行 128ピクセルのインデントを入れる。

          @x = @face_indent = 128

        end

        @now_text.gsub!(/\\[Ff]\[(.*?)\]/) { "" }

      end

      # 制御文字?理

      begin

      last_text = @now_text.clone

      # \Vを?自ル?チンに?更(追加部分)

      @now_text.gsub!(/\\[Vv]\[([IiWwAaSs]?)([0-9]+)\]/) { convart_value($1, $2.to_i) }

      end until @now_text == last_text

      @now_text.gsub!(/\\[Nn]\[([0-9]+)\]/) do

        $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""

      end

      # \nameがあるか?

      name_window_set = false

      if (/\\[Nn]ame\[(.+?)\]/.match(@now_text)) != nil

        # 値を設定

        name_window_set = true

        name_text = $1

        # \name[]部分を削除

        @now_text.sub!(/\\[Nn]ame\[(.*?)\]/) { "" }

      end

      # ウィンドウ位置判定

      if (/\\[Pp]\[([-1,0-9]+)\]/.match(@now_text))!=nil then

        @popchar = $1.to_i

        if @popchar == -1

          @x = @indent = 48

          @y = 4

        end

        @now_text.gsub!(/\\[Pp]\[([-1,0-9]+)\]/) { "" }

      end

      # ウィンドウ幅の取得

      @max_choice_x = 0

      if @popchar >= 0

        @text_save = @now_text.clone

        @max_x = 0

        @max_y = 4

        for i in 0..3

          line = @now_text.split(/\n/)[3-i]

          @max_y -= 1 if line == nil and @max_y <= 4-i

          next if line == nil

          line.gsub!(/\\\w\[(\w+)\]/) { "" }

          cx = contents.text_size(line).width

          @max_x = cx if cx > @max_x

          if i >= $game_temp.choice_start

            @max_choice_x = cx if cx > @max_choice_x

          end

        end

        self.width = @max_x + 32 + @face_indent

        self.height = (@max_y - 1) * 32 + 64

      else

        @max_x = self.width - 32 - @face_indent

        for i in 0..3

          line = @now_text.split(/\n/)[3-i]

          next if line == nil

          line.gsub!(/\\\w\[(\w+)\]/) { "" }

          cx = contents.text_size(line).width

          if i >= $game_temp.choice_start

            @max_choice_x = cx if cx > @max_choice_x

          end

        end

      end

      @max_choice_x -= 128

      # 便宜上、"\\\\" を "\000" に?換

      @now_text.gsub!(/\\\\/) { "\000" }

      # "\\C" を "\001" に、"\\G" を "\002" に、

      # "\\S" を "\003" に、"\\A" を "\004" に?換

      @now_text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }

      @now_text.gsub!(/\\[Gg]/) { "\002" }

      @now_text.gsub!(/\\[Ss]\[([0-9]+)\]/) { "\003[#{$1}]" }

      @now_text.gsub!(/\\[Aa]\[(.*?)\]/) { "\004[#{$1}]" }

      @now_text.gsub!(/\\[.]/) { "\005" }

      @now_text.gsub!(/\\[|]/) { "\006" }

      # 競合すると何かと?まずいので、\016以降を使用する

      @now_text.gsub!(/\\[>]/) { "\016" }

      @now_text.gsub!(/\\[<]/) { "\017" }

      @now_text.gsub!(/\\[!]/) { "\020" }

      @now_text.gsub!(/\\[~]/) { "\021" }

      @now_text.gsub!(/\\[Ee]\[([0-9]+)\]/) { "\022[#{$1}]" }

      # インデント設定(追加部分)

      @now_text.gsub!(/\\[Ii]/) { "\023" }

      # テキスト透過率指定(追加部分)

      @now_text.gsub!(/\\[Oo]\[([0-9]+)\]/) { "\024[#{$1}]" }

      # テキストサイズ指定(追加部分)

      @now_text.gsub!(/\\[Hh]\[([0-9]+)\]/) { "\025[#{$1}]" }

      # 空白?入(追加部分)

      @now_text.gsub!(/\\[Bb]\[([0-9]+)\]/) { "\026[#{$1}]" }

      # ルビ表示(追加部分)

      @now_text.gsub!(/\\[Rr]\[(.*?)\]/) { "\027[#{$1}]" }

      # ここで一旦ウィンドウ位置更新

      reset_window

      # \nameがあるか?

      if name_window_set

        # オフセット位置

        off_x =  1

        off_y =  -26

        # ?だけウィンドウの作成(余白を 2 に設定)

        space = 10

        x = self.x + off_x - space / 10

        y = self.y + off_y - space / 2

        w = self.contents.text_size(name_text).width + 35 + space

        h = 26 + space

        @name_window_frame = Window_Frame.new(x, y, w, h)

        @name_window_frame.z = self.z + 1

        # 擬似的な空中文字描?ウィンドウを作成

        x = self.x + off_x + 20

        y = self.y + off_y

        @name_window_text  = Air_Text.new(x, y, name_text)

        @name_window_text.z = self.z + 2

      end

    end

    # ウィンドウを更新

    reset_window

    # 選?肢の場合

    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

    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

      end

      return

    end

    @now_text = nil if @now_text == "" # ?換

    # 表示待ちのメッセ?ジがある場合

    if @now_text != nil and @mid_stop == false

      if @write_wait > 0

        @write_wait -= 1

        return

      end

      text_not_skip = DEFAULT_TYPING_ENABLE

      while true

        # 最大 x y の保存。

        @max_x = @x if @max_x < @x

        @max_y = @y if @max_y < @y

        # c に 1 文字を取得 (文字が取得できなくなるまでル?プ)

        if (c = @now_text.slice!(/./m)) != nil

          # \\ の場合

          if c == "\000"

            # 本?の文字に?す

            c = "\\"

          end

          # \C[n] の場合

          if c == "\001"

            # 文字色を?更

            @now_text.sub!(/\[([0-9]+)\]/, "")

            color = $1.to_i

            if color >= 0 and color <= 7

              self.contents.font.color = text_color(color)

              if @opacity != nil

                color = self.contents.font.color

                self.contents.font.color = Color.new(color.red, color.green, color.blue, color.alpha * @opacity / 255)

              end

            end

            # 次の文字へ

            c = ""

          end

          # \G の場合

          if c == "\002"

            # ゴ?ルドウィンドウを作成

            if @gold_window == nil and @popchar <= 0

              @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

            # 次の文字へ

            c = ""

          end

          # \S[n] の場合

          if c == "\003"

            # 文字色を?更

            @now_text.sub!(/\[([0-9]+)\]/, "")

            speed = $1.to_i

            if speed >= 0 and speed <= 19

              @write_speed = speed

            end

            # 次の文字へ

            c = ""

          end

          # \A[soundname] の場合

          if c == "\004"

            # 再生ファイルを?更するための準備

            @now_text.sub!(/\[(.*?)\]/, "")

            buftxt = $1.dup.to_s

            # 再生ファイル名に"/"があるか?

            if buftxt.match(/\//) == nil and buftxt != "" then

              # なければ"Audio/SE/"を結合する

              $soundname_on_speak = "Audio/SE/" + buftxt

            else

              # あればそのままコピ?

              $soundname_on_speak = buftxt.dup

            end

            # 次の文字へ

            c = ""

          elsif c == "\004" 

            # 次の文字へ

            c = ""

          end

          # \. の場合

          if c == "\005"

            @write_wait += 5

            c = ""

          end

          # \| の場合

          if c == "\006"

            @write_wait += 20

            c = ""

          end

          # \> の場合

          if c == "\016"

            text_not_skip = false

            c = ""

          end

          # \<の場合

          if c == "\017"

            text_not_skip = true

            c = ""

          end

          # \!の場合

          if c == "\020"

            @mid_stop = true

            c = ""

          end

          # \~の場合

          if c == "\021"

            terminate_message

            return

          end

          # \Iの場合(追加部分)

          if c == "\023"

            # 今の@xをインデント位置に設定

            @indent = @x

            c = ""

          end

          # \Oの場合(追加部分)

          if c == "\024"

            @now_text.sub!(/\[([0-9]+)\]/, "")

            @opacity = $1.to_i

            color = self.contents.font.color

            self.contents.font.color = Color.new(color.red, color.green, color.blue, color.alpha * @opacity / 255)

            c = ""

          end

          # \Hの場合(追加部分)

          if c == "\025"

            @now_text.sub!(/\[([0-9]+)\]/, "")

            self.contents.font.size = [[$1.to_i, 6].max, 32].min

            c = ""

          end

          # \Bの場合(追加部分)

          if c == "\026"

            @now_text.sub!(/\[([0-9]+)\]/, "")

            @x += $1.to_i

            c = ""

          end

          # \Rの場合(追加部分)

          if c == "\027"

            @now_text.sub!(/\[(.*?)\]/, "")

            # 文字を描?

            @x += ruby_draw_text(self.contents, @x, @y * line_height + (line_height - self.contents.font.size), $1, @opacity)

            # 文字描?のSEを演奏

            if $soundname_on_speak != ""

              Audio.se_play($soundname_on_speak)

            end

            c = ""

          end

          # アイコン描?用シ?ケンスの場合(追加部分)

          if c == "\030"

            # アイコンファイル名を取得

            @now_text.sub!(/\[(.*?)\]/, "")

            # アイコンを描?

            self.contents.blt(@x , @y * line_height + 8, RPG::Cache.icon($1), Rect.new(0, 0, 24, 24))

            # 文字描?のSEを演奏

            if $soundname_on_speak != ""

              Audio.se_play($soundname_on_speak)

            end

            @x += 24

            # 次の文字へ

            c = ""

          end

          # 改行文字の場合

          if c == "\n"

            # 選?肢ならカ?ソルの幅を更新

            if @lines >= $game_temp.choice_start

              @cursor_width = [@cursor_width, @max_choice_x - @face_indent].max

            end

            # y に 1 を加算

            @lines += 1

            @y += 1

            @x = 0 + @indent + @face_indent

            # 選?肢なら字下げを行う

            if @lines >= $game_temp.choice_start

              @x = 8 + @indent + @face_indent

            end

            # 次の文字へ

            c = ""

          end

          # 外字表示の場合

          if c == "\022"

            # []部分の除去

            @now_text.sub!(/\[([0-9]+)\]/, "")

            # 外字を表示

            @x += gaiji_draw(4 + @x, @y * line_height + (line_height - self.contents.font.size), $1.to_i)

            # 次の文字へ

            c = ""

          end

          if c != ""

            # 文字を描?

            self.contents.draw_text(4+@x, 4+ 32 * @y, 40, 32, c)

            @x += self.contents.text_size(c).width

            # 文字描?のSEを演奏

            if $soundname_on_speak != "" then

              Audio.se_play($soundname_on_speak)

            end

          end

          # Bボタンが押された場合

          if Input.press?(Input::B)

            text_not_skip = false

          end

        else

          text_not_skip = true

          break

        end

        # 終了判定

        if text_not_skip

          break

        end

      end

      @write_wait += @write_speed

      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)

        if $game_temp.choice_max > 0

          $game_system.se_play($data_system.decision_se)

          $game_temp.choice_proc.call(self.index)

        end

        if @mid_stop

          @mid_stop = false

          return

        else

          terminate_message

        end

      end

      return

    end

    # フェ?ドアウト中以外で表示待ちのメッセ?ジか選?肢がある場合

    if @fade_out == false and $game_temp.message_text != nil

      @contents_showing = true

      $game_temp.message_window_showing = true

      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

      if self.opacity == 0

        self.visible = false

        @fade_out = false

        $game_temp.message_window_showing = false

      end

      return

    end

  end

  #--------------------------------------------------------------------------

  # ● キャラクタ?の取得

  #     parameter : パラメ?タ

  #--------------------------------------------------------------------------

  def get_character(parameter)

    # パラメ?タで分岐

    case parameter

    when 0  # プレイヤ?

      return $game_player

    else  # 特定のイベント

      events = $game_map.events

      return events == nil ? nil : events[parameter]

    end

  end

  #--------------------------------------------------------------------------

  # ● ウィンドウの位置と不透明度の設定

  #--------------------------------------------------------------------------

  def reset_window

    # 判定

    if @popchar >= 0

      events = $game_map.events

      if events != nil

        character = get_character(@popchar)

        x = [[character.screen_x -  0 - self.width / 2, 4].max, 636 - self.width].min

        y = [[character.screen_y - 48 - self.height, 4].max, 476 - self.height].min

        self.x = x

        self.y = y

      end

    elsif @popchar == -1

      self.x = -4

      self.y = -4

      self.width = 648

      self.height = 488

    else

      if $game_temp.in_battle

        self.y = 16

      else

        case $game_system.message_position

        when 0  # 上

          self.y = 16

        when 1  # 中

          self.y = 160

        when 2  # 下

          self.y = 304

        end

        self.x = 80

        if @face_file == nil

          self.width = 480

        else

          self.width = 600

          self.x -= 60

        end

        self.height = 160

      end

    end

    self.contents = Bitmap.new(self.width - 32, self.height - 32)

    if @face_file != nil

      self.contents.blt(0, 0, RPG::Cache.picture(@face_file), Rect.new(0, 0, 128, 128))

    end

    if @popchar == -1

      self.opacity = 255

      self.back_opacity = 0

    elsif $game_system.message_frame == 0

      self.opacity = 255

      self.back_opacity = 160

    else

      self.opacity = 0

      self.back_opacity = 160

    end

  end

  #--------------------------------------------------------------------------

  # ● 外字描?

  #--------------------------------------------------------------------------

  # x   :x座標

  # y   :y座標

  # num  :外字番?

  # 返り値:外字幅(@x?加値)

  #--------------------------------------------------------------------------

  def gaiji_draw(x, y, num)

    # 外字デ?タが存在しない場合は何もしない

    if @gaiji_cache == nil

      return 0

    else

      # 指定した外字がキャッシュ範?を超えている場合は何もしない

      if @gaiji_cache.width < num * 24

        return 0

      end


      # 文字サイズを計算

      if self.contents.font.size >= 20 and self.contents.font.size <= 24

        size = 24

      else

        size = self.contents.font.size * 100 * 24 / 2200

      end


      # 外字デ?タをstretch_bltで?送

      self.contents.stretch_blt(Rect.new(x, y, size, size), @gaiji_cache, Rect.new(num * 24, 0, 24, 24))


      # 文字描?のSEを演奏

      if $soundname_on_speak != "" then

        Audio.se_play($soundname_on_speak)

      end


      # 文字サイズを返す

      return size

    end

  end

  #--------------------------------------------------------------------------

  # ● line_height

  #--------------------------------------------------------------------------

  # 返り値:行の高さ(@y?加値)を返します。

  #--------------------------------------------------------------------------

  def line_height

    # 現?、選?肢等に??ができない?、自動的に32を返します。

    return 32


    # 文字サイズを計算

    if self.contents.font.size >= 20 and self.contents.font.size <= 24

      return 32

    else

      return self.contents.font.size * 15 / 10

    end

  end

  #--------------------------------------------------------------------------

  # ● ルビ文字描?

  #--------------------------------------------------------------------------

  # target :描??象。Bitmapクラスを指定。

  # x      :x座標

  # y      :y座標

  # str   :描?文字列。本文,ルビの形式で入力。

  #      ,?切りが2つ以上あった場合は自動的に無視される。

  # opacity:透過率(0~255)

  # 返り値 :文字幅(@x?加値)。

  #--------------------------------------------------------------------------

  def ruby_draw_text(target, x, y, str,opacity)

    # フォントサイズをバックアップしておく

    sizeback = target.font.size

    # ルビサイズの計算

    target.font.size * 3 / 2 > 32 ? rubysize = 32 - target.font.size : rubysize = target.font.size / 2

    rubysize = [rubysize, 6].max

    

    # opacityに規定値以上の値が入っている場合は修正。

    opacity = [[opacity, 0].max, 255].min

    # strをsplitで分割し、split_sに格納

    split_s = str.split(/,/)


    # split_sがnilの場合は""にしておく(誤動作防止)

    split_s[0] == nil ? split_s[0] = "" : nil

    split_s[1] == nil ? split_s[1] = "" : nil


    # heightとwidthを計算

    height = sizeback + rubysize

    width  = target.text_size(split_s[0]).width


    # バッファ用の幅計算(ルビの幅が本文の幅を越える可能性がある?)

    target.font.size = rubysize

    ruby_width = target.text_size(split_s[1]).width

    target.font.size = sizeback


    buf_width = [target.text_size(split_s[0]).width, ruby_width].max


    # 本文の描?幅とルビの描?幅の差を1/2にして??に格納(後で使用)

    width - ruby_width != 0 ? sub_x = (width - ruby_width) / 2 : sub_x = 0


    # opacityが255(透過なし)の場合は通常描?

    if opacity == 255

    # ルビの描?

      target.font.size = rubysize

      target.draw_text(x + sub_x, y - target.font.size, target.text_size(split_s[1]).width, target.font.size, split_s[1])

      target.font.size = sizeback

    # 本文の描?

      target.draw_text(x, y, width, target.font.size, split_s[0])

      return width

    else

      # 表示テキストのheight、widthがバッファサイズを上回る場合は

      # バッファを再生成する。

      if @opacity_text_buf.width < buf_width or @opacity_text_buf.height < height

        @opacity_text_buf.dispose

        @opacity_text_buf = Bitmap.new(buf_width, height)

      # そうでない場合はバッファクリア。

      else

        @opacity_text_buf.clear

      end

      # バッファにテキスト描?

      # ルビの描?

      @opacity_text_buf.font.size = rubysize

      @opacity_text_buf.draw_text(0 , 0, buf_width, rubysize, split_s[1], 1)

      @opacity_text_buf.font.size = sizeback

      # 本文の描?

      @opacity_text_buf.draw_text(0 , rubysize, buf_width, sizeback, split_s[0], 1)

      # ルビの幅が本文の幅を下回る場合

      if sub_x >= 0

        target.blt(x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)

      # ルビの幅が本文の幅を上回る場合

      else

        target.blt(x + sub_x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)

      end

      # 文字サイズを返す

      return width

    end

  end

  #--------------------------------------------------------------------------

  # ● \V?換

  #--------------------------------------------------------------------------

  # option :オプション。無指定又は規定外の場合はindexのユ?ザ??値を返す。

  # index  :インデックス

  # 返り値 :?換結果(アイコン表示用シ?ケンス?み)

  #--------------------------------------------------------------------------

  def convart_value(option, index)

    # optionがnilの場合は""に直す(誤動作防止)

    option == nil ? option = "" : nil


    # optionはdowncaseしておく。

    option.downcase!


    # \030はアイコン表示用のシ?ケンス。\030[アイコンファイル名]で定義。

    case option

    when "i"

      unless $data_items[index].name == nil

        r = sprintf("\030[%s]%s", $data_items[index].icon_name, $data_items[index].name)

      end

    when "w"

      unless $data_weapons[index].name == nil

        r = sprintf("\030[%s]%s", $data_weapons[index].icon_name, $data_weapons[index].name)

      end

    when "a"

      unless $data_armors[index].name == nil

        r = sprintf("\030[%s]%s", $data_armors[index].icon_name, $data_armors[index].name)

      end

    when "s"

      unless $data_skills[index].name == nil

        r = sprintf("\030[%s]%s", $data_skills[index].icon_name, $data_skills[index].name)

      end

    else

      r = $game_variables[index]

    end


    r == nil ? r = "" : nil

    return r

  end

  #--------------------------------------------------------------------------

  # ● 解放

  #--------------------------------------------------------------------------

  def dispose

    terminate_message


    # 外字キャッシュ開放

    if @gaiji_cache != nil

      unless @gaiji_cache.disposed?

        @gaiji_cache.dispose

      end

    end


    # 文字透過?送用バッファ開放

    unless @opacity_text_buf.disposed?

      @opacity_text_buf.dispose

    end


    $game_temp.message_window_showing = false

    if @input_number_window != nil

      @input_number_window.dispose

    end

    super

  end

  #--------------------------------------------------------------------------

  # ● カ?ソルの矩形更新

  #--------------------------------------------------------------------------

  def update_cursor_rect

    if @index >= 0

      n = $game_temp.choice_start + @index

      self.cursor_rect.set(4 + @indent + @face_indent, n * 32 + 4, @cursor_width, 32)

    else

      self.cursor_rect.empty

    end

  end

end

#==============================================================================

# ■ Window_Frame (?だけで中身の無いウィンドウ)

#==============================================================================

class Window_Frame < Window_Base

  #--------------------------------------------------------------------------

  # ● オブジェクト初期化

  #--------------------------------------------------------------------------

  def initialize(x, y, width, height)

    super(x, y, width, height)

    self.contents = nil

    #self.back_opacity = 240

  end

  #--------------------------------------------------------------------------

  # ● 解放

  #--------------------------------------------------------------------------

  def dispose

    super

  end

end

#==============================================================================

# ■ Air_Text (何も無いところに文字描? = ?の無い瞬間表示メッセ?ジウィンドウ)

#==============================================================================

class Air_Text < Window_Base

  #--------------------------------------------------------------------------

  # ● オブジェクト初期化

  #--------------------------------------------------------------------------

  def initialize(x, y, designate_text)

    super(x-16, y-16, 32 + designate_text.size * 12, 56)

    self.opacity      = 0

    self.back_opacity = 0

    self.contents = Bitmap.new(self.width - 32, self.height - 32)

    w = self.contents.width

    h = self.contents.height

    self.contents.draw_text(0, 0, w, h, designate_text)

  end

  #--------------------------------------------------------------------------

  # ● 解放

  #--------------------------------------------------------------------------

  def dispose

    self.contents.clear

    super

  end

end 


 

 

 

 

■ 질문전 필독!
  • 질문할 내용이 이 게시판이나 강좌에 이미 있는지 확인합니다.
  • 하나의 게시물에는 하나의 질문만 합니다.
  • 제목은 질문의 핵심 내용으로 작성합니다.
  • 질문 내용은 답변자가 쉽게 이해할 수 있도록 최대한 상세하게 작성합니다.
  • 스크립트의 전문이 필요할 경우 txt 파일 등으로 첨부해 주시기 바랍니다.
  • 답변받은 게시물은 삭제하지 않습니다.
  • 답변이 완료된 경우 해당 답변해주신 분들께 감사의 댓글을 달아줍니다.
    • 처음 오신 분들은 공지 게시물을 반드시 읽어주세요!

※ 미준수시 사전경고 없이 게시물을 삭제합니다.