질문과 답변

Extra Form
  [ 캐릭터이름  ]

            아아 안녕하세요!?

 



일단 스크립트를 받았고, 적용까지 완료시켰지만..

 

명령어라고 해야하나..? 어쨌든 사용방법을 몰라서 못쓰고있네요..

 

이벤트에 뭐라고 써서 해야할지 알려주세요.

 

어제 올렸던건데 스크립트 올려주셔야 아실것같아서 같이올려요 ㅜ

 

#==============================================================================
# ■ Window_Message_Plus v3.1 수정버전:psh4989(네이버 wmftit)
# 128x128 픽쳐 수정 : killarot(네이버 dust_mite)
#==============================================================================
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 = 255
    @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
        # 얼굴 그라를 묘화
        @face_file = $1 + ".png"
        self.contents.blt(0, 1, RPG::Cache.picture(@face_file), Rect.new(0, 0, 128, 128))
        # 전행 128픽셀의 인덴트를 넣는다.
        @x = @face_indent = 128
        @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
        @max_choice_x -= 68
        @max_choice_x -= @face_indent*216/128
      else
        @max_x = self.width - 32 - @face_indent
        for i in 0..3
          line = @now_text.split(/n/)[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
        @max_choice_x += 8
      end
      # 선택사항이라면 커서의 폭을 갱신
      @cursor_width = 0
      #if @lines >= $game_temp.choice_start
      #  @cursor_width = [@cursor_width, @max_choice_x - @face_indent].max
      #end
      # 편의상 ,"\\" 을 "00" 에 변환
      @now_text.gsub!(/\\/) { "00" }
      # "\C" 을 "01" 에 ,"\G" 를 "02" 에 ,
      # "\S" 를 "03" 에 ,"\A" 를 "04" 에 변환
      @now_text.gsub!(/\[Cc][([0-9]+)]/) { "01[#{$1}]" }
      @now_text.gsub!(/\[Gg]/) { "02" }
      @now_text.gsub!(/\[Ss][([0-9]+)]/) { "03[#{$1}]" }
      @now_text.gsub!(/\[Aa][(.*?)]/) { "04[#{$1}]" }
      @now_text.gsub!(/\[.]/) { "05" }
      @now_text.gsub!(/\[|]/) { "06" }
      # 경합 하면(자) 무엇인가 거북하기 때문에 ,16이후를 사용하는
      @now_text.gsub!(/\[>]/) { "16" }
      @now_text.gsub!(/\[<]/) { "17" }
      @now_text.gsub!(/\[!]/) { "20" }
      @now_text.gsub!(/\[~]/) { "21" }
      @now_text.gsub!(/\[Ee][([0-9]+)]/) { "22[#{$1}]" }
      # 인덴트 설정(추가 부분)
      @now_text.gsub!(/\[Ii]/) { "23" }
      # 텍스트 투과율 지정(추가 부분)
      @now_text.gsub!(/\[Oo][([0-9]+)]/) { "24[#{$1}]" }
      # 텍스트 사이즈 지정(추가 부분)
      @now_text.gsub!(/\[Hh][([0-9]+)]/) { "25[#{$1}]" }
      # 공백 삽입(추가 부분)
      @now_text.gsub!(/\[Bb][([0-9]+)]/) { "26[#{$1}]" }
      # 루비 표시(추가 부분)
      @now_text.gsub!(/\[Rr][(.*?)]/) { "27[#{$1}]" }
      # 여기서 일단 윈도우 위치 갱신
      reset_window
      # name이 있을까?
      if name_window_set
        # 오프셋(offset) 위치
        off_x =  0
        off_y =  -10
        # 범위만 윈도우의 작성(margin를 2 로 설정)
        space = 2
        x = self.x + off_x - space / 2
        y = self.y + off_y - space / 2
        w = self.contents.text_size(name_text).width + 8 + 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 + 4
        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 == "00"
            # 본래의 문자에 되돌리는
            c = "\"
          end
          # C[n] 의 경우
          if c == "01"
            # 문자색을 변경
            @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 == "02"
            # 골드 윈도우를 작성
            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 == "03"
            # 문자색을 변경
            @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 == "04"
            # 재생 파일을 변경하기 위한 준비
            @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 == "04"
            # 다음의 문자에
            c = ""
          end
          # . 의 경우
          if c == "05"
            @write_wait += 5
            c = ""
          end
          # | 의 경우
          if c == "06"
            @write_wait += 20
            c = ""
          end
          # > 의 경우
          if c == "16"
            text_not_skip = false
            c = ""
          end
          # <의 경우
          if c == "17"
            text_not_skip = true
            c = ""
          end
          # !의 경우
          if c == "20"
            @mid_stop = true
            c = ""
          end
          # ~의 경우
          if c == "21"
            terminate_message
            return
          end
          # I의 경우(추가 부분)
          if c == "23"
            # 지금의@x를 인덴트 위치로 설정
            @indent = @x
            c = ""
          end
          # O의 경우(추가 부분)
          if c == "24"
            @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 == "25"
            @now_text.sub!(/[([0-9]+)]/, "")
            self.contents.font.size = [[$1.to_i, 6].max, 32].min
            c = ""
          end
          # B의 경우(추가 부분)
          if c == "26"
            @now_text.sub!(/[([0-9]+)]/, "")
            @x += $1.to_i
            c = ""
          end
          # R의 경우(추가 부분)
          if c == "27"
            @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 == "30"
            # 아이콘 파일명을 취득
            @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"
            # y 에 1 를 가산
            @lines += 1
            @y += 1
            @x = 0 + @indent + @face_indent
            # 선택사항이라면 인덴트를 실시하는
            if @lines >= $game_temp.choice_start
              @x = 8 + @indent + @face_indent
              # 커서의 갱신
              @cursor_width = @max_choice_x
            end
            # 다음의 문자에
            c = ""
          end
          # 외자 표시의 경우
          if c == "22"
            # []부분의 제거
            @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, 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, 1, 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)
    # font size를 백업 해 두는
    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!
    # 30(은)는 아이콘 표시용의 순서. 30[아이콘 파일명]으로 정의.
    case option
    when "i"
      unless $data_items[index].name == nil
        r = sprintf("30[%s]%s", $data_items[index].icon_name, $data_items[index].name)
      end
    when "w"
      unless $data_weapons[index].name == nil
        r = sprintf("30[%s]%s", $data_weapons[index].icon_name, $data_weapons[index].name)
      end
    when "a"
      unless $data_armors[index].name == nil
        r = sprintf("30[%s]%s", $data_armors[index].icon_name, $data_armors[index].name)
      end
    when "s"
      unless $data_skills[index].name == nil
        r = sprintf("30[%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(8 + @indent + @face_indent, n * 32, @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

 

 

 

 

엄청 기네요.. 이거 말고 좋은거 있으시면 링크걸어주시면 감사하겠습니다..

 

매번 답변달아주시는분들 감사합니다..


List of Articles
종류 분류 제목 글쓴이 날짜 조회 수
공지 묻고 답하기 가이드 습작 2014.06.14 12448
스크립트 작성 RMMV 변수에 따라 표시이미지를 다르게 띄우고 싶습니다 1 file 도Vㅏ킨 2024.06.23 14
스크립트 추천 RMVXA 미니게임을 하는동안 위에 점수판을 띄워주고싶은데 방법이 없을까요? 홍홍이1 2024.02.07 15
이벤트 작성 RMVXA 스위치가 꺼질 경우 이미지를 끄게 하고 싶습니다. 1 Payroy 2024.01.05 16
에러 해결 RMMV bgm파일이 뜨지를 않아요 1 초본 2024.01.10 16
이벤트 작성 RMMV 보트가 움직여지지 않습니다. 3 file pokapoka 2024.02.19 17
맵배치 RMXP 맵칩 버그 ssplokks 2023.10.20 18
에러 해결 RMVXA rgss301파일이 복사 붙여넣기가 안됩니다 다크크리에이터 2023.11.16 18
퀘스트 작성 RMVXA 연타 이벤트가 안 작동되어요... 1 file tokki 2023.12.24 18
기본툴 사용법 RMVXA 특정 맵에서 플레이어가 움직이지 않습니다. 유_ 2023.12.25 19
액션 전투 RMMV 메인 메뉴 혹은, 현재 메뉴 화면을 새로고침 할 수 있는 방법이 궁급합니다. 니노미야 2023.11.20 19
기타 RMVXA 대사 글꼴 바꾸는법좀 알려주세요 ㅠ 극세사이불 2024.02.26 20
기본툴 사용법 RMMV 분명히 배경음악 m4a+ogg 파일 둘 다 넣었는데 게임 툴에서 인식을 못합니다 파트로클로스 2023.12.08 21
기타 RMMV 색조변경이 적용되지 않는 이벤트 무명시절 2023.01.08 21
스크립트 사용 RMVXA 전투 개시시 상태 부여 스크립트 질문 AAAA. 2023.11.14 21
기타 RMMZ 그림을 클릭하면 이벤트 발생 1 Sian 2024.02.07 22
이벤트 작성 RMVXA 대화 중 이벤트 멈춤 해결 방안 질문 1 이름뭐하지 2024.05.19 22
게임 배포 RMMZ 여러분들 게임 파일 단일화 어떤 프로그램으로 하시나요? 하라아아암 2023.11.22 22
에러 해결 RMXP BGM을 발견못하는 오류 file wombat 2024.01.31 22
기타 RMMV 플레이어가 팔로어를 바라보고 있다라는 스크립트를 찾고 있습니다 무명시절 2024.01.04 23
기타 기타 RPG 95 튕김 현상 해결방법 인큐버스 2023.01.20 24
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 516 Next
/ 516