질문과 답변

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 12391
RMXP 비스타는 GMXP세이브가 되지않나요?? 3 빵테의비밀 2013.08.12 866
RMXP NPC 움직임에 대해 다시 질문올려요.(엑박수정) 11 file OdahViing 2013.08.10 825
RMXP 세이브 오류가납니다. 5 빵테의비밀 2013.08.10 1613
RMXP 이벤트를 삭제시켰는데 계속 반복합니다. 조언 부탁드려요ㅠㅠ 9 file OdahViing 2013.08.09 859
RMXP 세이브 오류 2 빵테의비밀 2013.08.08 594
RMXP 이벤트 이동시 캐릭터 움직임억제 2 빵테의비밀 2013.08.08 735
RMXP [RMXP]정품 라이센스를 구입할 수 있을까요? 2 /여우비/ 2013.08.07 789
RMXP 캐릭터 최대사이즈 2 빵테의비밀 2013.08.05 890
RMXP 이벤트의 점프이동 스크립트로 쓰는법 알려주세요. 2 조석진 2013.08.03 722
RMXP [RMXP]이런 메시지 스크립트 있나요? 5 file /여우비/ 2013.08.03 1267
RMXP RPG XP로 만들고있는데 갑자기 테스트플레이에서 주인공이 않움직여요 1 마피 2013.08.02 909
RMXP 턴제 전투에서 턴 순서 조절(?)하는법ㅠㅠ 길고냥이 2013.08.01 933
RMXP [RMXP]액터 이동 금지 2 /여우비/ 2013.07.31 648
RMXP 턴알피지에서 몬스터 죽이고 전리품 랜덤으로 얻는 방법 2 아미상 2013.07.31 911
RMXP 커먼이벤트로 랜덤대화.. 7 file 길고냥이 2013.07.30 789
RMXP 캐릭터 상반신 대화창에넣는법 2 빵테의비밀 2013.07.29 1593
RMXP XP 이벤트 실행조건중 스위치 1 빵테의비밀 2013.07.26 816
RMXP RPG XP ) 메뉴스크립트 오류 5 file ABIS 2013.07.25 1040
RMXP 타이머의 활용법좀요 ㅠㅠ 1 빵테의비밀 2013.07.25 685
RMXP 캐릭터설정과 맵제작 2 빵테의비밀 2013.07.24 590
Board Pagination Prev 1 ... 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ... 90 Next
/ 90