RPG 만들기 XP
2011.04.30 15:03

사람에게말걸기

조회 수 1724 추천 수 0 댓글 1
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

사람에게말걸면 밑에대화창에 말이랑 이름 얼굴 사진같은거 나오는거 어떻게함?

  • profile
    은하계 2011.06.01 22:47

    아래 스크립트를 불여넣기하신후 나온대로 하시면 됩니다..

     

    #       RPG XP MASSAGE PLUS●제어 문자 기능에 대해
    #현재 , 이하의 제어 문자를 서포트하고 있습니다.
    #
    #\f[file] file그리고 지정한 얼굴 그래픽을 표시합니다.
    #     얼굴 그래픽의 규격은 트크르2000/2003의 배로96×96.
    #     이것을 하나의 파일로 준비합니다.
    #     장소는Graphics/Pictures/을 자동적으로 참조합니다.
    #     .png(은)는 생략 가능합니다.
    #     .png이외를 사용하는 경우 , 문자를 고쳐 써 주세요.
    #     그리고 이\f[]의 지정은 반드시 문장의 최초로 가 주세요.
    #     "\f[Graphics/Pictures/파일명.png"이 아니고 ,
    #     단순하게"\f[파일명]"으로 지정. 할 수 있습니다.
    #
    #\name[]  []안으로 텍스트를 작은 네임 윈도우로 표시합니다.
    #\p[]   \p[-1]그리고  , 전체 표시(문자만으로 중앙에)를 합니다.
    #     \p[0]그리고 , 지정한 주인공 위에 팝 합니다.
    #     \p[ID]그리고 , 그ID를 가지는 이벤트 위에 팝 합니다.
    #
    #
    #
    #\\    문자?8?표시합니다.
    #\V[n]   변수n차례에 격납된 내용을 표시합니다.
    #     그리고 , 번호의 전에 특정의 문자를 넣는 일로 , 지정id의 아이템 , 장비품 ,
    #     스킬의 이름을 설정된 아이콘과 함께 표시하는 것이 가능합니다.
    #     i(item) :아이템
    #     w(weapon):무기
    #     a(armor) :방어용 기구
    #     s(skill) :스킬
    #
    #
    #\N[n]   지정id의 엑터의 이름을 표시합니다.
    #\C[n]   표시하는 문자색을n차례로 변경합니다.
    #     디폴트의 문자색은 본체 메뉴얼을 참조해 주세요.
    #\G    소지금의 윈도우를 표시합니다.
    #\s[n]   문장의 표시 스피드를 변경합니다(0~19).
    #     숫자가 커질수록 늦어집니다.
    #\H[n]   표시하는 문자의 사이즈를 변경합니다(6~32).
    #\O[n]   표시하는 문자의 투과율을 지정합니다(0~255).
    #\a[file] 문자 표시시에 재생하는SE을 지정한 파일로 변경합니다.
    #     데이터는./Audio/SE/으로 읽으러 갑니다. 폴더 지정은 생략 가능합니다.
    #
    #
    #\.    다음의 문자 표시까지1/4초간 웨이트 합니다.
    #\|    다음의 문자 표시까지1초간 웨이트 합니다.
    #\>    「\<」이 올 때까지 , 순간 표시합니다.
    #\<    「\>」으로부터 시작된 순간 표시를 종료합니다.
    #\!    결정 키의 입력을 그 자리에서 기다립니다.
    #\~    키 입력을 기다리지 않고 , 그대로 윈도우를 닫습니다.
    #\e[n]   n차례의 외자를 표시합니다.
    #     외자 데이터는 세로폭24Pixel * 가로 무제한(24 * n)의png형식 화상으로 ,
    #     디폴트 설정에서는./Graphics/Gaiji/sample.png을 참조하고 있습니다.
    #     외자 파일의 참조처는 글로벌 변수$gaiji_file로 설정되어 있습니다.
    #     문자 사이즈가 디폴트와 다른 경우는 사이즈 조정을 실시합니다만 ,
    #     화상이 엉성해져 버리는(문자 사이즈가20~24의 경우는 변경하지 않습니다).
    #
    #
    #\I    현재의 문자 표시 위치를 인덴트(인덴트 위치)로 설정합니다.
    #\B[n]   지정Pixel분의 공백을 삽입합니다.
    #\R[$1,$2] 루비 첨부의 문자를 표시합니다. $1하지만 본문 ,$2이 루비가 됩니다.
    #     $1그리고 지정한 캐릭터 라인은1프레임으로 표시됩니다.
    #     한 글자씩 표시시키고 싶은 경우는 , 본문을 한 글자씩에 단락짓고 나서 루비를
    #     할당해 주세요.
    #     루비의 사이즈는 문자 사이즈의 것1/2입니다.
    #     문자 사이즈와 루비의 사이즈의 합계가32를 넘는 경우 ,
    #     루비 사이즈는32 - 문자 사이즈가 됩니다. 주의해 주세요.
    #     그리고 , 루비 사이즈의 최소치는6이 됩니다.
    #
    #==============================================================================
    # ¡á Window_Message_Plus v3.1
    #==============================================================================
    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ÀÌ»óÀÇ °æ¿ì ij¸¯ÅÍ ÆË. 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
            @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
          # ÆíÀÇ»ó ,"\\\\" À» "\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
            # ¿ÀÇÁ¼Â(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 == "\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"
                # 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 == "\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, 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
      #--------------------------------------------------------------------------
      # ¡Ü ij¸¯ÅÍÀÇ Ãëµæ
      #     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(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
        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
     
    #SCRIPT
    #--------------------------------------------------------------------------
      # ¡Ü ¿ÜÀÚ ¹¦È­
      #--------------------------------------------------------------------------
      # x¡¡¡¡ £ºx ÁÂÇ¥
      # y¡¡¡¡ £ºy ÁÂÇ¥
      # num¡¡ £º¿ÜÀÚ ¹øÈ£
      # µ¹¾Æ°¡ °ª£º¿ÜÀÚÆø(@xÁõ°¡Ä¡)
      #--------------------------------------------------------------------------
      def gaiji_draw(x, y, num)
        # ¿ÜÀÚ µ¥ÀÌÅÍ°¡ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì´Â ±»ÀÌ ÇÏÁö ¾Ê´Â
        if @gaiji_cache == nil
          return 0
        else
          # ÁöÁ¤ÇÑ ¿ÜÀÚ°¡ ij½¬ ¹üÀ§¸¦ ³Ñ°í ÀÖ´Â °æ¿ì´Â ±»ÀÌ ÇÏÁö ¾Ê´Â
          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¡¡  £º¹¦È­ ij¸¯ÅÍ ¶óÀÎ. º»¹®,·çºñÀÇ Çü½Ä¿¡¼­ ÀÔ·Â.
      # ¡¡¡¡¡¡¡¡ ,´Ü¶ôÀÌ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!

        # \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(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
번호 분류 제목 글쓴이 날짜 조회 수
공지 Apache에서 Nginx 최신대역으로 업데이트 하였습니다. 니오팅 2020.06.26 733
공지 2020년 새해 복 많이 받으시어요! 3 file 니오팅 2020.01.12 1217
39 RPG 만들기 VX RPG VX Ace 질문입니다! lysis 2016.12.24 109
38 RPG 만들기 XP RPG XP Maker 좀 도와주세요.... 뮤런 2015.11.26 85
37 RPG 만들기 VX RPG VX 대화창 강제로 넘기는법 강의 부탁드립니다! 애벌래오니 2015.07.01 148
36 RPG 만들기 VX rpg maker vx ace 처음 접하는데 여러가지 물어볼게요 구르마 2015.06.28 102
35 RPG 만들기 VX 새롭게 맵칩 만드는 방법 쿨좀비 2014.07.13 552
34 RPG 만들기 XP 이벤트로스피드변경하는법좀여!! 1 미로니카 2013.05.15 1157
33 RPG 만들기 XP 아오오니 맵이동 강의 4 왕초찌 2013.02.27 2763
32 RPG 만들기 XP 액알 만드는법좀 VIos 2013.02.27 1448
31 RPG 만들기 XP 활을 쏴서 몬스터를 죽일때.. 1 크그르그아 2012.12.19 1331
30 RPG 만들기 XP 어떤 이벤트를 하고 오면 사라지는 이벤트 강의 요청합니다!!! 1 카르핑 2012.12.07 1306
29 RPG 만들기 XP 아오오니 만들기 강의 요청 아오오니의오른팔 2012.07.30 1671
28 RPG 만들기 XP 강의요청이여! 태담 2012.03.11 1252
27 RPG 만들기 VX 이런거 없나요? 2 훈이님 2012.02.27 1258
26 RPG 만들기 XP 강의 요청합니다!!! zkland68 2012.02.25 2007
25 RPG 만들기 XP 강의 요청합니다!!! zkland68 2012.02.24 2112
24 RPG 만들기 XP 이건 뭐 어찌해야... file 레오 2012.02.22 1242
23 RPG 만들기 XP RPG xp 강의 부탁합니다. 엘릭서 2012.02.21 1805
22 RPG 만들기 XP 강의 부탁드려요! 햄군 2012.01.01 1291
21 RPG 만들기 XP 온라인 게임 만들기 강의 요청이요~ 1 아오오니팬! 2011.11.20 1693
20 RPG 만들기 XP 니오티님 들어보세요~ 1 코코넛 2011.11.16 1340
19 RPG 만들기 XP 강의부탁해요 김채윤왕 2011.10.26 1357
18 RPG 만들기 XP 강의요청 카쿠즈 2011.10.23 1328
17 NRPG 강의 요청 제후반 2011.10.15 1292
16 RPG 만들기 XP 강의 요청입니다! 1 알피지만들러옴 2011.10.09 1368
15 RPG 만들기 VX 강의요청이요 2 ysys1292 2011.08.05 1250
14 RPG 만들기 XP 주인공의 이름을 자신이 원하는데로 만드는법 1 zkland 2011.08.04 1568
13 RPG 만들기 VX bgm추가 1 인간만새 2011.08.03 1230
12 RPG 만들기 XP 이벤트를 따라오게하기 짜식 2011.07.22 1511
11 RPG 만들기 XP 제발...이것좀 봐주세요.. 3 타살 2011.07.22 1447
10 RPG 만들기 XP 바닥에 있는 아이템에 빛나게하기 짜식 2011.07.19 1353
9 RPG 만들기 XP 아이템 조합 강의좀 부탁드립니다 1 햄군 2011.07.09 1444
8 RPG 만들기 XP 장비에 대한 스크립트요 2 쿠로오니 2011.06.29 1407
7 RPG 만들기 VX 장소이동해도 따라오는 npc만들기! 2 sanwa 2011.05.18 1571
6 RPG 만들기 XP 이벤트 자동실행 후 중단하는법.... 2 Cook게임 2011.05.03 3410
» RPG 만들기 XP 사람에게말걸기 1 오니오니444 2011.04.30 1724
4 RPG 만들기 VX 쾌스트 만들기 심심하군 2011.04.17 1502
3 RPG 만들기 XP 다양한기능.. 라묜이좋아 2011.04.13 1372
2 RPG 만들기 2000,3 RPG만들기2003에대해...질문!!@ 2 디타쿠 2011.04.09 1937
1 RPG 만들기 VX 강의를.. 요.. 요청합니다! 3 약간의 소망 2011.04.04 1349
Board Pagination Prev 1 Next
/ 1

Copyright ⓒ Nioting All Rights Reserved. (since 1999)   개인정보취급방침