>저가 스크린샷 대로 해봤는데..스크린샷처럼..
>빈공간이 생기네요..ㅠ.ㅠ
>키보드를 ↑ 이거 한번만 눌러보면 없어지는데..
>세이브나...게임종료 버튼만 눌렀다가 esc를 눌르면..저렇게 빈 공간이 생김니다..
>어떻게 처리 해야 하나요??
>
>저가 처리한 스크립트도 올리겠습니다
>
>#==============================================================================
># ■ 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.equip
> s3 = "세이브"
> 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)
> end
> # 세이브 금지의 경우
> if $game_system.save_disabled
> # 세이브를 무효로 한다
> @command_window.disable_item(2)
> 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
># 커멘드 윈도우가 액티브의 경우: 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 # 세이브
> # 세이브 금지의 경우
> 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_Save.new
> when 3 # 게임 종료
> # 결정 SE 를 연주
> $game_system.se_play($data_system.decision_se)
> # 게임 종료 화면으로 전환해
> $scene = Scene_End.new
> 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 # 장비
> # 결정 SE 를 연주
> $game_system.se_play($data_system.decision_se)
> # 장비 화면으로 전환해
> $scene = Scene_Equip.new(@status_window.index)
> when 2 # 스테이터스
> # 결정 SE 를 연주
> $game_system.se_play($data_system.decision_se)
> # 스테이터스 화면으로 전환해
> $scene = Scene_Status.new(@status_window.index)
> end
> return
> end
> end
>end
>
>
>이게 저가 해낸 것입니다..
>어떻게 처리 해야 하나요??
아시다 시피, 윈도우 아래에 있는 검은색은 어쩔수 없습니다.
그리고 커맨드에 이상이 오는 것은, 커맨드의 기초가 샐랙터블인데,
그 상태에서 열이 없는 부분에 소환을 시키면 자동생성이 되버리기 때문에
생기는 현상입니다.
수정법은 간단합니다.
Scene_Item, Equip, Status, Skill, End 에서, update 메소드에서,
if Input.trigger?(Input::B) 라는 것이 있을것입니다.
그 아래에 $scene = Scene_Menu.new(랜덤) 이라고 적혀 있을 겁니다.
Item은 0, Equip은 1, 세이브는 2, End 는 3.....이런식으로 교체해 주시면 됩니다.
그 외에 Status나 Skill은 Map 같은것으로 전환해 주세요.
(맵으로 전환하는 방법은 $scene = Scene_Map.new 이라고 적으시면 됩니다.)
>빈공간이 생기네요..ㅠ.ㅠ
>키보드를 ↑ 이거 한번만 눌러보면 없어지는데..
>세이브나...게임종료 버튼만 눌렀다가 esc를 눌르면..저렇게 빈 공간이 생김니다..
>어떻게 처리 해야 하나요??
>
>저가 처리한 스크립트도 올리겠습니다
>
>#==============================================================================
># ■ 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.equip
> s3 = "세이브"
> 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)
> end
> # 세이브 금지의 경우
> if $game_system.save_disabled
> # 세이브를 무효로 한다
> @command_window.disable_item(2)
> 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
># 커멘드 윈도우가 액티브의 경우: 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 # 세이브
> # 세이브 금지의 경우
> 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_Save.new
> when 3 # 게임 종료
> # 결정 SE 를 연주
> $game_system.se_play($data_system.decision_se)
> # 게임 종료 화면으로 전환해
> $scene = Scene_End.new
> 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 # 장비
> # 결정 SE 를 연주
> $game_system.se_play($data_system.decision_se)
> # 장비 화면으로 전환해
> $scene = Scene_Equip.new(@status_window.index)
> when 2 # 스테이터스
> # 결정 SE 를 연주
> $game_system.se_play($data_system.decision_se)
> # 스테이터스 화면으로 전환해
> $scene = Scene_Status.new(@status_window.index)
> end
> return
> end
> end
>end
>
>
>이게 저가 해낸 것입니다..
>어떻게 처리 해야 하나요??
아시다 시피, 윈도우 아래에 있는 검은색은 어쩔수 없습니다.
그리고 커맨드에 이상이 오는 것은, 커맨드의 기초가 샐랙터블인데,
그 상태에서 열이 없는 부분에 소환을 시키면 자동생성이 되버리기 때문에
생기는 현상입니다.
수정법은 간단합니다.
Scene_Item, Equip, Status, Skill, End 에서, update 메소드에서,
if Input.trigger?(Input::B) 라는 것이 있을것입니다.
그 아래에 $scene = Scene_Menu.new(랜덤) 이라고 적혀 있을 겁니다.
Item은 0, Equip은 1, 세이브는 2, End 는 3.....이런식으로 교체해 주시면 됩니다.
그 외에 Status나 Skill은 Map 같은것으로 전환해 주세요.
(맵으로 전환하는 방법은 $scene = Scene_Map.new 이라고 적으시면 됩니다.)