地上の洞窟

どこにも行かず、液晶と「にらめっこ」し続ける人の物語。

【RGSS3】メッセージ速度変更

メッセージ速度変更
変数からメッセージの表示速度を設定!

メッセージの表示速度をゲーム内変数によって変更できます。
常に即時表示にすることも可能。定数やその他変数から動的に設定することも可能。

また、メッセージの早送り判定を無視して遅く表示させる独自の設定項目もあります。
メッセージ入力で「\.」を書きまくるのがめんどくさい時に役立つかも?

更新履歴 内容
2023/08/20 初版

→スクリプト一覧へ


※ 一部既存の処理を上書きしているためスクリプトの競合が発生しやすいです。
  他のスクリプトより上の方に配置することを推奨します。


スクリプト(ダブルクリックで全選択)↓

=begin =========================================================================
 ■ 「メッセージ速度変更」- CustomMessageSpeed by 地上の洞窟
================================================================================

 メッセージの表示速度(一文字ごとのウェイト)を、変数によって変更するスクリプト。

================================================================================
 ■ 注意
================================================================================

 再定義を含むため、他のスクリプトより上の方に配置することを推奨します。
 メッセージの一文字ごとに処理を挟むスクリプトとは競合する可能性があります。
 (例: 一文字ごとに効果音を再生する、など)

================================================================================
 ■ 設定項目
=end #==========================================================================

module CustomMessageSpeed


  # WAIT_VAR : 一文字ごとに待機するフレーム数
  # 低い程メッセージが高速で表示されます(0で即時表示)。
  # 文字列で取得する値を指定した場合、動的に値を取得します。
  # 例: WAIT_VAR = '$game_variables[10]'

  WAIT_VAR = 1


  # FORCE_WAIT_VAR : 一文字ごとに待機するフレーム数(強制)
  # メッセージの早送り判定を無視してウェイトさせます。
  # 文字列で取得する値を指定した場合、動的に値を取得します。
  # 例: FORCE_WAIT_VAR = '$game_variables[11]'

  FORCE_WAIT_VAR = 0


#==============================================================================
# ■ ここからソースコード
#==============================================================================

  DYNAMIC_WAIT_VAR = WAIT_VAR.is_a?(String)
  DYNAMIC_FORCE_WAIT_VAR = FORCE_WAIT_VAR.is_a?(String)

end

class Window_Message < Window_Base
  # 一文字出力後のウェイト(☆再定義)
  def wait_for_one_character
    update_show_fast
    
    # WAIT_VAR
    unless @show_fast || @line_show_fast
      count = if CustomMessageSpeed::DYNAMIC_WAIT_VAR
        eval(CustomMessageSpeed::WAIT_VAR, TOPLEVEL_BINDING)
      else
        CustomMessageSpeed::WAIT_VAR
      end
      wait((count.is_a?(Fixnum) && count) >= 0 ? count : 1)
    end
    
    # FORCE_WAIT_VAR
    count = if CustomMessageSpeed::DYNAMIC_FORCE_WAIT_VAR
      eval(CustomMessageSpeed::FORCE_WAIT_VAR, TOPLEVEL_BINDING)
    else
      CustomMessageSpeed::FORCE_WAIT_VAR
    end
    wait(count) if (count.is_a?(Fixnum) && count) >= 0
  end
end