게임/알만툴

VXA 메시지 스킵 존나 빨리감기

미친사람 2016. 7. 21. 03:20
반응형
#==============================================================================
# ■ RGSS3 メッセージスキップ機能 Ver1.01 by 星潟
#------------------------------------------------------------------------------
# メッセージウィンドウに表示された文章を一気に読み飛ばします。
# テストモード限定化機能と、特定のスイッチがONの時だけ
# メッセージスキップを有効にする機能も併せて持っています。
#------------------------------------------------------------------------------
# Ver1.01 入力待ち無視(\^)が無効になる不具合を修正しました。
#============================================================================== 

module M_SKIP

  #メッセージスキップの効果をテストモードに限定するか?
  #trueでテストモード限定、falseで常時

  T_LIMT = false

  #メッセージスキップ有効化スイッチIDの設定。
  #0にするとスイッチによる判定は消滅。
  #1以上にすると、そのスイッチがONの時のみメッセージスキップ有効。

  SWITID = 0

  #メッセージスキップに使用するキーの設定。
  #文字送りキーとしても機能します。
  #nilにするとメッセージスキップ機能全てを無効化。

  KEY    = :CTRL

end

class Window_Message < Window_Base

  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------

  alias update_mb update
  def update
    if skip_execute
      @pause_skip = true
      @show_fast = true
    end
    update_mb
  end

  #--------------------------------------------------------------------------
  # ● スキップ判定
  #--------------------------------------------------------------------------

  def skip_execute
    if M_SKIP::T_LIMT
      unless $TEST or $BTEST
        return false
      end
    end

    if M_SKIP::SWITID != 0
      return false unless $game_switches[M_SKIP::SWITID]
    end

    return false unless Input.press?(M_SKIP::KEY)
    return true
  end

  #--------------------------------------------------------------------------
  # ● 入力処理
  #--------------------------------------------------------------------------

  def process_input
    if $game_message.choice?
      input_choice
    elsif $game_message.num_input?
      input_number
    elsif $game_message.item_choice?
      input_item
    else
      input_pause unless @pause_skip or skip_execute
    end
  end

  #--------------------------------------------------------------------------
  # ● 入力待ち処理
  #--------------------------------------------------------------------------

  def input_pause
    self.pause = true
    wait(10)
    if M_SKIP::KEY == nil
      Fiber.yield until Input.trigger?(:B) || Input.trigger?(:C)
    else
      if M_SKIP::T_LIMT == true
        if $TEST or $BTEST
          Fiber.yield until Input.trigger?(:B) || Input.trigger?(:C) || Input.press?(M_SKIP::KEY)
        else
          Fiber.yield until Input.trigger?(:B) || Input.trigger?(:C)
        end
      else
        Fiber.yield until Input.trigger?(:B) || Input.trigger?(:C) || Input.press?(M_SKIP::KEY)
      end
    end
    Input.update
    self.pause = false
  end
end

 

T_LIMT 는
#메시지 스킵의 효과를 테스트 모드로 한정하는가?
#true에서 테스트 모드 한정, false에서 상시

SWITID 는
#메시지 스킵 활성화 스위치 ID설정.
#0으로 하면 스위치로 인한 판정은 소멸.
#1이상으로 하면, 그 스위치가 ON일 때만 메시지 스킵 유효.

KEY 는

#메시지 스킵에 사용하는 설정.
#문자 보내기 키로도 기능합니다.
#nil로 하면 메시지 스킵 기능 전부를 무효화.

반응형