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

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

◆게임 창작 관련/코드, 스크립트 :: 2014.12.07 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 6    Yday 29    Tot 67,005
Juwan Park
Juwan Park's blog is powered by Daum and TISTORY.
Contemporary Blue for TISTORY.
Designed by Juwan Park. Creative Commons License
▲ TOP