질문과 답변

Extra Form
메뉴에 입장하면 이러한 오류가 뜨는데 무슨이유일까요
Comment '5'
  • ?
    페렐 2013.07.25 22:53
    40번째 줄에 이상이 있다는 뜻입니다.
    마땅한 해결방법이 생각나지 않으신다면 해당 스크립트를 txt로 첨부해서 올려주세요.
  • ?
    ABIS 2013.07.26 09:16
    #==============================================================================
    # ■ Window_Command
    #------------------------------------------------------------------------------
    #  일반적인 커멘드 선택을 실시하는 윈도우입니다.
    #==============================================================================

    class Window_Command < Window_Selectable
    #--------------------------------------------------------------------------
    # ● 오브젝트 초기화
    # width : 윈도우의 폭
    # commands : 커멘드 캐릭터 라인의 배열
    #--------------------------------------------------------------------------
    def initialize(width, commands)
    # 커멘드의 개수로부터 윈도우의 높이를 산출
    super(0, 0, width, commands.size * 32 + 32)
    @item_max = commands.size
    @commands = commands
    self.contents = Bitmap.new(width - 32, @item_max * 32)
    refresh
    self.index = 0
    end
    #--------------------------------------------------------------------------
    # ● 리프레쉬
    #--------------------------------------------------------------------------
    def refresh
    self.contents.clear
    for i in 0...@item_max
    draw_item(i, normal_color)
    end
    end
    #--------------------------------------------------------------------------
    # ● 항목의 묘화
    # index : 항목 번호
    # color : 문자색
    #--------------------------------------------------------------------------
    def draw_item(index, color)
    self.contents.font.color = color
    rect = Rect.new(4, 32 * index, self.contents.width - 8, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    self.contents.draw_text(rect, @commands[index])
    end
    #--------------------------------------------------------------------------
    # ● 항목의 무효화
    # index : 항목 번호
    #--------------------------------------------------------------------------
    def disable_item(index)
    draw_item(index, disabled_color)
    end
    end
  • ?
    Alkaid 2013.07.26 09:22
    기본 윈도우 클래스 말고 사용하는 스크립트를 알려주시기 바랍니다.
  • ?
    ABIS 2013.07.26 09:32
    위에것이 사용하는 스크립트입니다.

    그리고, scene_Meue 에서 새로운스크립트를 복붙하면 위에같이 오류가뜹니다.
    Scene_Meue 스크립트 보여드릴게요

    #==============================================================================
    # ■ Scene_Menu
    #------------------------------------------------------------------------------
    #  메뉴 화면의 처리를 실시하는 클래스입니다.
    #==============================================================================

    class Scene_Menu
      #--------------------------------------------------------------------------
      # ● 오브젝트 초기화
      #     menu_index : 커멘드의 커서 초기 위치
      #--------------------------------------------------------------------------
      def initialize(menu_index = 0)
        @menu_index = menu_index
      end
      #--------------------------------------------------------------------------
      # ● 메인 처리
      #--------------------------------------------------------------------------
      def main
        # 커멘드 윈도우를 작성
        s1 = $data_system.words.item
        s2 = "로드"
        @command_window = Window_Command.new(160, [s1, s2])
        @command_window.index = @menu_index
        # 파티 인원수가 0 명의 경우
        if $game_party.actors.size == 0
          # 아이템, 스킬, 장비, 스테이터스를 무효화
          @command_window.disable_item(0)
          @command_window.disable_item(1)
          @command_window.disable_item(2)
          @command_window.disable_item(3)
        end
        # 세이브 금지의 경우
        if $game_system.save_disabled
          # 세이브를 무효로 한다
          @command_window.disable_item(4)
        end
        # 스테이터스 윈도우를 작성
        @status_window = Window_MenuStatus.new
        @status_window.x = 160
        @status_window.y = 0
        # 트란지션 실행
        Graphics.transition
        # 메인 루프
        loop do
          # 게임 화면을 갱신
          Graphics.update
          # 입력 정보를 갱신
          Input.update
          # 프레임 갱신
          update
          # 화면이 바뀌면(자) 루프를 중단
          if $scene != self
            break
          end
        end
        # 트란지션 준비
        Graphics.freeze
        # 윈도우를 해방
        @command_window.dispose
        @status_window.dispose
      end
      #--------------------------------------------------------------------------
      # ● 프레임 갱신
      #--------------------------------------------------------------------------
      def update
        # 윈도우를 갱신
        @command_window.update
        @status_window.update
        # 커멘드 윈도우가 액티브의 경우: update_command 를 부른다
        if @command_window.active
          update_command
          return
        end
        # 스테이터스 윈도우가 액티브의 경우: update_status 를 부른다
        if @status_window.active
          update_status
          return
        end
      end
      #--------------------------------------------------------------------------
      # ● 프레임 갱신 (커멘드 윈도우가 액티브의 경우)
      #--------------------------------------------------------------------------
      def update_command
        # B 버튼이 밀렸을 경우
        if Input.trigger? (Input::B)
          # 캔슬 SE 를 연주
          $game_system.se_play($data_system.cancel_se)
          # 맵 화면으로 전환하고
          $scene = Scene_Map.new
          return
        end
        # C 버튼이 밀렸을 경우
        if Input.trigger? (Input::C)
          # 파티 인원수가 0 명이, 세이브, 게임 종료 이외의 커멘드의 경우
          if $game_party.actors.size == 0 and @command_window.index < 4
            # 버저 SE 를 연주
            $game_system.se_play($data_system.buzzer_se)
            return
          end
          # 커멘드 윈도우의 커서 위치에서 분기
          case @command_window.index
          when 0  # 아이템
            # 결정  SE 를 연주
            $game_system.se_play($data_system.decision_se)
            # 아이템 화면으로 전환하고
            $scene = Scene_Item.new
          when 1  # 세이브
            # 세이브 금지의 경우
            if $game_system.save_disabled
              # 버저 SE 를 연주
              $game_system.se_play($data_system.buzzer_se)
              return
            end
            # 결정 SE 를 연주
            $game_system.se_play($data_system.decision_se)
            # 세이브 화면으로 전환하고
            $scene = Scene_Load.new
          return
        end
      #--------------------------------------------------------------------------
      # ● 프레임 갱신 (스테이터스 윈도우가 액티브의 경우)
      #--------------------------------------------------------------------------
      def update_status
        # B 버튼이 밀렸을 경우
        if Input.trigger? (Input::B)
          # 캔슬 SE 를 연주
          $game_system.se_play($data_system.cancel_se)
          # 커멘드 윈도우를 액티브하게 한다
          @command_window.active = true
          @status_window.active = false
          @status_window.index = -1
          return
        end
        # C 버튼이 밀렸을 경우
        if Input.trigger? (Input::C)
          # 커멘드 윈도우의 커서 위치에서 분기
          case @command_window.index
          when 1  # 스킬
            # 이 엑터의 행동 제한이 2 이상의 경우
            if $game_party.actors[@status_window.index]. restriction >= 2
              # 버저 SE 를 연주
              $game_system.se_play($data_system.buzzer_se)
              return
            end
            # 결정 SE 를 연주
            $game_system.se_play($data_system.decision_se)
            # 스킬 화면으로 전환하고
            $scene = Scene_Skill.new(@status_window.index)
          when 2  # 장비
            # 결정 SE 를 연주
            $game_system.se_play($data_system.decision_se)
            # 장비 화면으로 전환하고
            $scene = Scene_Equip.new(@status_window.index)
          when 3  # 스테이터스
            # 결정 SE 를 연주
            $game_system.se_play($data_system.decision_se)
            # 스테이터스 화면으로 전환하고
            $scene = Scene_Status.new(@status_window.index)
          end
          return
        end
      end
    end
    end
    end

    ==
    사용하고있는 Scene_Meue의 스크립트입니다.
  • ?
    Alkaid 2013.07.26 09:39
    메뉴명령의 갯수를 늘이거나 줄였다면 그에 맞게 해당 명령이 불러오는 장면클래스의 인덱스도 조정해야 합니다. 위의 경우는 아이템과 로드 뿐이므로 그 아래의 파티원이 없을 경우의 처리와 세이브 금지에 따른 처리를 제거해야 할 겁니다. 그리고, Window_Command는 이미 말했듯이 수정되지 않은 기본 스크립트 원본이라서 올릴 필요도 없었습니다.(기본 스크립트는 그 자체에 버그가 있거나 추가한 스크립트에 문제가 있지 않는 한 문제 없이 작동합니다)

List of Articles
종류 분류 제목 글쓴이 날짜 조회 수
공지 묻고 답하기 가이드 습작 2014.06.14 12451
RMVX 아이템을 이용한 상태이상 적용과 해제에 대한 질문입니다. 2 file Lamancha 2012.08.23 1408
RMVXA 조건분기 적의상태이상 인식 버그?(수정) 로브남 2012.08.23 1191
RMVXA TP가 전투로인해 마음대로 수치변형이 안되게 하는법이.. 2 InSaOng 2012.08.22 1487
RMXP Scene_Tilte 스크립트 의 Window_Command 오류입니다. 2 말짱꽝이지롱 2012.08.22 1259
RMVXA 간단한 툴 수정 질문이요...ㅠㅠ 7 글쎄,왜 난 적용이 안될까? 2012.08.19 1146
RMXP 맵의 모든 이벤트를 조사 2 말짱꽝이지롱 2012.08.19 1290
RMXP XAS 3.91 리젠 스크립트 2 비극ㆍ 2012.08.19 2130
RMXP XAS 3.91 스킬 아이콘 단축키 질문 비극ㆍ 2012.08.18 1621
RMVX [Vampyr SBABS 9] 실행이안되네요 1 file 흐르후꾸흐루룩 2012.08.18 1286
RMVXA 전투에서 게이지바에 있는 숫자만 지우고싶습니다. 1 file 쇼몬아레하 2012.08.18 1642
RMVXA 영역설정에서 지역D가 뭔가요 4 file 꿈꾸는사람 2012.08.18 1485
RMVX 특정키 입력했을때 이벤트 실행. 1 고무고무열매 2012.08.17 1439
RMVXA 영역 설정하는 방법 2 꿈꾸는사람 2012.08.17 1285
RMVXA 사진 띄우는법 1 닉네잉 2012.08.17 1382
RMVX 예기치않은 파일형식 1 아삭이 2012.08.17 1660
RMXP XP용 셀프 변수 스크립트의 사용법을 알 수 있을까요? 11 file 슈팅스타* 2012.08.15 1187
RMVXA 한국어 조사 스크립트 오류가 발생하네요..[완료] 6 InSaOng 2012.08.15 1348
RMVXA 슬립데미지 스크립트 중에 3 icnman 2012.08.15 1017
RMXP 대화창 색깔바꾸기 1 봉지스 2012.08.14 1183
RMVX 주인공의 이름을 정한걸 대화에 응용할 수 없을까요? 3 일일 2012.08.13 1116
Board Pagination Prev 1 ... 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 ... 516 Next
/ 516