Ace 스크립트

스크립트는 다룰줄 모르니 그냥 여기 저기 빼고 붙이면서 만든 스크립트입니다.

 

Scene_Base 에 이것을 덮어씌웁니다.

#==============================================================================
# ■ Scene_Base
#------------------------------------------------------------------------------
#  게임중의 모든 씬의 슈퍼 클래스입니다.
#==============================================================================

class Scene_Base
  #--------------------------------------------------------------------------
  # ● 메인
  #--------------------------------------------------------------------------
  def main
    start
    post_start
    update until scene_changing?
    pre_terminate
    terminate
  end
  #--------------------------------------------------------------------------
  # ● 개시 처리
  #--------------------------------------------------------------------------
  def start
    create_main_viewport
  end
  #--------------------------------------------------------------------------
  # ● 개시 후처리
  #--------------------------------------------------------------------------
  def post_start
    perform_transition
    Input.update
  end
  #--------------------------------------------------------------------------
  # ● 씬 변경중 판정
  #--------------------------------------------------------------------------
  def scene_changing?
    SceneManager.scene != self
  end
  #--------------------------------------------------------------------------
  # ● 프레임 갱신
  #--------------------------------------------------------------------------
  def update
    update_basic
  end
  #--------------------------------------------------------------------------
  # ● 프레임 갱신(기본)
  #--------------------------------------------------------------------------
  def update_basic
    Graphics.update
    Input.update
    update_all_windows
  end
  #--------------------------------------------------------------------------
  # ● 종료 사전 처리
  #--------------------------------------------------------------------------
  def pre_terminate
  end
  #--------------------------------------------------------------------------
  # ● 종료 처리
  #--------------------------------------------------------------------------
  def terminate
    Graphics.freeze
    dispose_all_windows
  end
  #--------------------------------------------------------------------------
  # ● 트란지션 실행
  #--------------------------------------------------------------------------
  def perform_transition
    Graphics.transition(transition_speed)
  end
  #--------------------------------------------------------------------------
  # ● 트란지션 속도의 취득
  #--------------------------------------------------------------------------
  def transition_speed
    return 10
  end
  #--------------------------------------------------------------------------
  # ● 뷰포트의 작성
  #--------------------------------------------------------------------------
  def create_main_viewport
    @viewport = Viewport.new
    @viewport.z = 200
  end
  #--------------------------------------------------------------------------
  # ● 전윈도우의 갱신
  #--------------------------------------------------------------------------
  def update_all_windows
    instance_variables.each do |varname|
      ivar = instance_variable_get(varname)
      ivar.update if ivar.is_a?(Window)
    end
  end
  #--------------------------------------------------------------------------
  # ● 전윈도우의 해방
  #--------------------------------------------------------------------------
  def dispose_all_windows
    instance_variables.each do |varname|
      ivar = instance_variable_get(varname)
      ivar.dispose if ivar.is_a?(Window)
    end
  end
  #--------------------------------------------------------------------------
  # ● 호출원의 씬에 돌아온다
  #--------------------------------------------------------------------------
  def return_scene
    SceneManager.return
  end
  #--------------------------------------------------------------------------
  # ● 각종 사운드와 그래픽의 일괄 페이드아웃
  #--------------------------------------------------------------------------
  def fadeout_all(time = 1000)
    RPG::BGM.fade(time)
    RPG::BGS.fade(time)
    RPG::ME.fade(time)
    Graphics.fadeout(time * Graphics.frame_rate / 1000)
    RPG::BGM.stop
    RPG::BGS.stop
    RPG::ME.stop
  end
  #--------------------------------------------------------------------------
  # ● 게임 오버 판정
  #    파티가 전멸 상태라면 게임 오버 화면에 천이 한다.
  #--------------------------------------------------------------------------
  def check_gameover
    SceneManager.goto(Scene_Gameover) if $game_party.all_dead?
  end
end

Scene_Title 에 이것을 덮어씌웁니다.

#==============================================================================
# ■ Scene_Title
#------------------------------------------------------------------------------
#  타이틀 화면의 처리를 실시하는 클래스입니다.
#==============================================================================

class Scene_Title < Scene_Base
  #--------------------------------------------------------------------------
  # ● 개시 처리
  #--------------------------------------------------------------------------
  def start
    DataManager.setup_new_game
    fadeout_all
    $game_map.autoplay
    SceneManager.goto(Scene_Map)
  end
end

 

이것으로 끝.

근데 이렇게 하면 별 문제가 안일어날까 싶네요.

 

덧붙여 세이브, 로드를 하려면 어떤 구분을 이벤트 커맨드에 입력해야하나 싶네요.

세이브는 세이브 화면 로드 하면 될 것 같은데 로드는?

Who's 마에르드

profile

이웃 나라의 왕자가 잡혀갔다!

왕자를 구하려는 공주님의 대 모험이 펼쳐진다!

 

Nella Fantasia

  • ?
    kiyohwan 2012.02.12 12:38

    실행해보시면 에러납니다.

    수정하신 코드를 보면 foreground, background를 초기화하는 create_foreground, create_background를 생략하셨네요. Scene_Title클래스 해제시 실행되는terminate함수에 foreground, background에 만들어둔 스프라이트 객체를 해제하는 코드가 들어있기 때문에 nil에러가 납니다.

    타이틀 화면이 잠깐 비쳐도 상관없다면 크게 손댈 것 없이 몇라인만 추가하면 되지만 타이틀화면 자체가 나오지 않고 바로 게임 플레이를 시작하고 싶다면 Scene_Title를 꽤 많이 손봐야 하네요.

    그리고 스크립트 수정시 꽤 중요한 사항인데요.

    기존 스크립트를 직접 수정하지 마시고 제일 하단의 main 바로 앞부분에서 재정의해주는 편이 이후의 수정이나 확장이 쉽습니다.

  • profile
    마에르드 2012.02.12 13:31

    음. 어렵군요. 음... 음... 모르겠다.

    저걸 main 바로 앞에 다시 넣으면 될까요?

    에러경우는 아직 제작 초기라 발견하지를 못했네요... 흠.

     

    덧붙여 어느 부분에서 에러가 나는지,,;; 흠.

  • ?

    스크립트 에디터를 열어서 그림대로의 위치에 스크립트를 추가하시면 됩니다.

    그리고 에러의 경우는 프로그래밍을 모르시면 설명이 너무 길어집니다.

    아무래도 프로그래밍을 전혀 모른다면 공부를 하는 수 밖에 없습니다.

    도움말을 읽어보는 것만으로도 꽤 도움이 되니 기초를 배운다는 생각으로 읽어보고 예제를 따라해 보세요.

    일단 타이틀 없이 바로 게임이 시작하고 세이브가 있을 경우 타이틀화면이 나오도록 하는 수정예는 따로 설명을 해보도록 하죠.

    연출적으로 저도 생각해본 적이 있던 거라 흥미가 동해서 만들어봤습니다.

  • ?
    kiyohwan 2012.02.12 15:27

    class Scene_Title # 기존의 Scene_Title를 재정의(Overwirte)
      # Scene_Title가 만들어져서 실행될 때 호출되는 함수
      def start # 이렇게 전부를 새로 정의할 필요없이 수정이 필요한 함수만 새로 정의해 주면 됨.
        super
        SceneManager.clear
        Graphics.freeze
        if !DataManager.save_file_exists? # 세이브  존재여부를 확인해 없으면 바로 새게임을 시작
          # DataManager라는 모듈의 함수로 세이브 존재여부를 확인합니다.
          # command_new_game함수를 바로 호출할 경우 역시 메모리 반환 관련으로 문제가 있어 필요한 내용만 가져왔습니다.
          DataManager.setup_new_game
          fadeout_all
          $game_map.autoplay
          SceneManager.goto(Scene_Map)
        else # 세이브가 존재할 경우 기존의 타이틀 화면 출력
          # 이하는 타이틀화면 구성을 그리는 부분
          # 여기서 실제로 메모리를 사용하기 때문에
          # Scene_Title사용이 끝나고 메모리를 반환하는 처리가 종료시 들어가 있습니다.
          create_background
          create_foreground
          create_command_window
          play_title_music
        end
      end
      # Scene_Title가 해제될 때 호출되는 함수
      def terminate
        super
        SceneManager.snapshot_for_background
        if DataManager.save_file_exists? # 세이브가 있을 경우는 타이틀 화면을 출력했으므로 메모리반환처리를 실시함 
          # 이 밑으로는 타이틀 화면 구성이 사용한 메모리를 반환하는 처리
          dispose_background
          dispose_foreground
        end
      end
    end

    간단하게 수정해본 건데 여기서 만족하지 마시고 도움말로 기초를 닦고 Ruby를 공부해 보세요. 그러면 좀더 많은 걸 할 수 있게 될 겁니다.
  • profile
    마에르드 2012.02.13 07:44

    귀찮으셨을텐데 이렇게 설명해주셔서 감사합니당,,
    정말 많은 도움이 되었어요 ㅋㅋ
    진짜 루비 공부밖엔 답이 읎나봅니다 ㅠㅠ..

  • ?
    Nintendo 2012.03.03 17:37

    ㅇ...우왕 대단하시당ㄷ


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 5110
공지 RPG VX ACE 유용한 링크 모음 16 아방스 2012.01.03 28930
177 아이템 양손무기 작착 스크립트 [Dual Wield -> Free Hands Version 1.0] 7 file 아방스 2012.01.31 4633
176 전투 콤보 카운팅 시스템 4 아르피쥐 2011.12.18 4589
» 타이틀/게임오버 타이틀 화면 없이 게임을 시작하게 만드는법. 6 마에르드 2012.02.11 4586
174 이동 및 탈것 지상 탈것 스크립트 6 file 미루 2013.01.07 4579
173 전투 XAS VX ACE 데모 한글 번역 ( 스크립트 번역 모음 ) 1 미루 2013.01.10 4557
172 전투 사이드뷰 배틀 스크립트 (Animated Battlers By Jet10985) 6 file Rebiart 2014.05.18 4517
171 기타 Sapphire Action System IV v4.4br(엑알 스크립트) 6 file 꿈꾸는사람 2012.08.02 4516
170 전투 Sideview08 Ace 테스트 버전 (인 듯 합니다) 5 재규어 2012.01.24 4386
169 기타 Yanfly Engine Ace Alkaid 2011.12.10 4382
168 전투 전투시 나오는 메세지 삭제 10 Nintendo 2012.03.03 4358
167 메시지 텍스트 사운드 이펙트 ( Text Sound Effect ) 10 file 미루 2013.01.10 4340
166 메뉴 Syvkal's Menu Bars VX Ace 3 Alkaid 2012.09.08 4283
165 전투 Code Crush VXAce-RGSS3-21 프론트뷰 改 2 15 Alkaid 2013.01.28 4270
164 전투 Basic Enemy HP Bars 2.1 by V.M 10 Alkaid 2013.02.21 4207
163 메시지 Message Skip [메세지 스킵] 5 file Lisky 2014.09.09 4168
162 스킬 VXAce 스킬포인트 스크립트 5 file 아이미르 2013.03.21 4151
161 맵/타일 안개 시스템 ( VXA ) 8 홍색의환상향 2013.05.19 4090
160 기타 Victor Engine 1 Alkaid 2011.12.21 4069
159 아이템 VXAce 아이템 채집 스크립트 23 file 아이미르 2012.11.23 4051
158 전투 多人数SRPGコンバータ for Ace by AD.Bank 6 습작 2013.05.13 4038
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 Next
/ 11