질문과 답변

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 13192
RMVX vx 타이틀 화면을 게임 도중에 변경하고 싶습니다. 2 나아모 2013.07.27 844
RMVX 주점 안으로 들어가면 안 움직여져요 ㅠㅠ 4 file 우르곳 2013.07.27 1094
RMVX 이벤트 강좌 어디 자세한곳 없나요? ㅠㅠ 1 후라이팬샷 2013.07.27 636
RMVXA 맵침타일이 짤립니다. 4 file 훈봉이 2013.07.26 899
한글이 깨지는 현상 질문. 2 건전한PC방 2013.07.26 1031
RMVX 자판키를 연타하면 이벤트가 종료되는법좀요 16 file 지혈이 2013.07.26 900
기타 게임 저장 관련 문제 2 file 알피지에엑스피 2013.07.26 677
RMVXA 맵 스크롤에 대해서 1 카시어스 2013.07.26 575
RMVX 다른사람이 만든거 불러올때 4 후라이팬샷 2013.07.26 698
RMXP XP 이벤트 실행조건중 스위치 1 빵테의비밀 2013.07.26 818
RMVXA 타이틀메뉴위치 변경법 2 크리펄 2013.07.26 1131
RMVX vx 조건 분기의 다중 사용 9 모두의알만툴 2013.07.26 651
RMVX vx 페이스 말고 스탠딩 cg로 대화못할까요? 3 김카린 2013.07.25 1663
RMVXA 막 vxa 입문한 초짜 타일셋 질문입니다. 3 file skp 2013.07.25 1758
RMVXA 액션알피지 공격 데미지 설정 1 Freshair 2013.07.25 658
RMXP RPG XP ) 메뉴스크립트 오류 5 file ABIS 2013.07.25 1043
RMVX xas 스크립트를 이용해서 장거리액알 하는법을 모르겟어요 으왕 2013.07.25 627
RMVX 쫒길때 좋은 도망방법 알려주실분~! 2 지혈이 2013.07.25 568
RMVX VX의 캐릭터칩의 한칸 사이즈는 항상 정사각형 모양이어야 하나요? 2 도롱옹 2013.07.25 906
RMVX 다른 이벤트로 루프의 중단 시키기는 방법 1 vxxxv 2013.07.25 545
Board Pagination Prev 1 ... 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 ... 517 Next
/ 517