메뉴 건너뛰기

창조도시 기록보관소

RPGXP 메뉴 시스템 편집

2010.01.22 22:03

카리스 조회 수:79

스크립트란으로 가서  Scene_Menu  를 전부 지우시고 다음을 붙여넣기 해주세요


 


 


 


#==============================================================================
# ■ 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 = $data_system.words.skill
    s3 = $data_system.words.equip
    s4 = "스테이터스"
    @command_window = Window_Command.new(160, [s1, s2, s3, s4])
    @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
    # 플레이 시간 윈도우를 작성
    @playtime_window = Window_PlayTime.new
    @playtime_window.x = 0
    @playtime_window.y = 224
    # 보수 윈도우를 작성
    @steps_window = Window_Steps.new
    @steps_window.x = 0
    @steps_window.y = 320
    # 골드 윈도우를 작성
    @gold_window = Window_Gold.new
    @gold_window.x = 0
    @gold_window.y = 416
    # 스테이터스 윈도우를 작성
    @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
    @playtime_window.dispose
    @steps_window.dispose
    @gold_window.dispose
    @status_window.dispose
  end
  #--------------------------------------------------------------------------
  # ● 프레임 갱신
  #--------------------------------------------------------------------------
  def update
    # 윈도우를 갱신
    @command_window.update
    @playtime_window.update
    @steps_window.update
    @gold_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  # 스킬
        # 결정 SE 를 연주
        $game_system.se_play($data_system.decision_se)
        # 스테이터스 윈도우를 액티브하게 한다
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 2  # 장비
        # 결정 SE 를 연주
        $game_system.se_play($data_system.decision_se)
        # 스테이터스 윈도우를 액티브하게 한다
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 3  # 스테이터스
        # 결정 SE 를 연주
        $game_system.se_play($data_system.decision_se)
        # 스테이터스 윈도우를 액티브하게 한다
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      end
      return
    end
  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

번호 제목 글쓴이 날짜 조회 수
7090 RPGXP 게임을 실행하는데 화면이 ; [1] 쪼리기 2007.01.31 625
7089 [RPGXP]액션 알피지에서 몬스터가 2가지 이상 공격하는 법(빠른답변부탁드립니다) [2] cyverjen 2007.02.25 624
7088 rpgxp 스크립트에 사용되는 루비어? [2] 모스쿠바 2005.08.06 624
7087 RPG 2000을 실행하면 검은 화면만 ; [2] 세지 2006.11.03 622
7086 rpg만들기xp에 대한 질문 3개 [1] 코로네 2006.04.26 620
7085 이펠리아 대륙전기 2 [1] 화니인 2009.07.09 619
7084 알만툴2000은 프레임이 99가 한계인데 늘릴수는 없는것인가요? [3] 카이샬리 2008.05.17 619
7083 RPG XP 조작키 변경에 대해 가르쳐주세요 [1] Raview 2007.09.19 617
7082 rpgxp 스크립트 에러 질문 [3] DJMAX 2008.02.16 614
7081 RPGXP 동영상 재생방법 rkskekfk 2007.04.02 613
7080 (RPG2003)그림표시에 관해 질문. [1] 미토스 2007.01.26 612
7079 rpgxp]avi 실행시키는 스크립트에서 오류가 납니다... file 오렌지맨 2005.09.17 612
7078 RPGVX 에서 세트 아이템 설정하려고 하는데 잘 안되네요 [2] 열정적으로 2008.11.26 611
7077 이펠리아대륙전기EP2 자하드사막의전설의검 어디서찾나요 ???? 자하드전설의검점 2009.07.13 608
7076 RPG만들기2003 패치문제 [1] 카르고의날개 2007.03.18 607
7075 RPG2000에 대해서 정말로 많이 궁금한게있습니다. [1] 이누야샤RPG만들쟈! 2005.08.20 607
7074 거기 잘생기고 예쁜분들. 'RPGXP'는 어디서 구합니까..? KBOY∮ 2005.07.21 606
7073 rpg2000 주인공 일행수에 대해 질문이요.... [4] 디에프나나 2007.07.21 603
7072 rpg2000 03 xp 그리고 런타임패키지 페라리a 2005.12.25 602
7071 게이지 바 만들기 [3] file †호크† 2010.01.07 600