Juwan Park :: 메시지 표시 중에 자동으로 타이머 멈추기 (RPG VX Ace용)

메시지 표시 중에 자동으로 타이머 멈추기 (RPG VX Ace용)

◆게임 창작 관련/코드, 스크립트 :: 2014. 12. 7. 16:02

본래 RPG VX Ace에서 타이머가 작동중일 때 메시지가 표시되는 중에도 타이머가 계속 작동하는데,
이 스크립트는 메시지가 표시되는 동안에 자동으로 타이머를 정지시키는 스크립트입니다.

다음 스크립트를 복사해서 스크립트창(F11)의 '▼ Materials' 부분 밑에 새 스크립트를 추가해 붙여넣기하시면 됩니다.

# Stop timer during message v1.1
# 메시지 표시 도중 타이머를 자동정지시키는 스크립트입니다.
#
# [v1.1에서 바뀐 점]
# 중복구문 처리 추가
#
# 만든이: 家和萬事成
# http://parkjuwan.tistory.com
#
# 저작권: Creative Commons BY 3.0
# (영리/비영리 여부에 관계없이 자유롭게 이용 가능합니다.)
#
# [사용법]
# 스크립트 실행창에 다음 줄을 넣으면 됩니다.
#   $game_timer.stop_during_message(true)
#
# 해제하려면 다음과 같이 넣습니다.
#   $game_timer.stop_during_message(false)
#
# [참고]
# 선택지, 숫자입력, 아이템 선택의 경우는
# 메시지 표시와 함께 실행해야만 적용됩니다.

class Game_Timer
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  alias tmrinit initialize
  def initialize
    tmrinit
    @paused = false
    @messagestop = true
  end
  #--------------------------------------------------------------------------
  # * Determine if Temp Stop
  #--------------------------------------------------------------------------
  def paused?
    @paused
  end
  #--------------------------------------------------------------------------
  # * Determine if Message Stop
  #--------------------------------------------------------------------------
  def messagestop?
    @messagestop
  end
  #--------------------------------------------------------------------------
  # * Start
  #--------------------------------------------------------------------------
  alias tmrstart start
  def start(count)
    tmrstart(count)
    @paused = false
  end
  #--------------------------------------------------------------------------
  # * Stop
  #--------------------------------------------------------------------------
  alias tmrstop stop
  def stop
    tmrstop
    @paused = false
  end
  #--------------------------------------------------------------------------
  # * Pause
  #--------------------------------------------------------------------------
  def pause
    @paused = true
    @working = false
  end
  #--------------------------------------------------------------------------
  # * Resume
  #--------------------------------------------------------------------------
  def resume
    @working = true
    @paused = false
  end
  #--------------------------------------------------------------------------
  # * Stop during message
  #--------------------------------------------------------------------------
  def stop_during_message(truefalse)
    @messagestop = truefalse
  end
end

class Sprite_Timer < Sprite
  #--------------------------------------------------------------------------
  # * Update Visibility
  #--------------------------------------------------------------------------
  def update_visibility
    self.visible = $game_timer.working? || $game_timer.paused?
  end
end

class Game_Interpreter
  #--------------------------------------------------------------------------
  # * Wait While Message Display is Busy
  #--------------------------------------------------------------------------
  def wait_for_message
    if $game_timer.working? && $game_timer.messagestop?
      $game_timer.pause
      Fiber.yield while $game_message.busy?
      $game_timer.resume
    else
      Fiber.yield while $game_message.busy?
    end
  end
end


예제는 다음 첨부파일에 있습니다.

MessageTimerStop.zip


위의 소스코드만 따로 빼낸 파일은 다음과 같습니다.

stop_timer_during_message.rb


댓글을 달아 주세요.

Today 27    Yday 25    Tot 73,535
Juwan Park
Juwan Park's blog is powered by Daum and TISTORY.
Contemporary Blue for TISTORY.
Designed by Juwan Park. Creative Commons License
▲ TOP