LNS040 Graphics拡張

Graphics.update の際にいくつかの処理を追加で実行します。






基本情報

前提スクリプト


拡張タイプ

★ 既成 (導入するだけでゲームの挙動が変化する)


説明

概要

以下の処理が Graphics.update に追加されます。
  • 早送り
  • 画面サイズ変更
  • スクリーンショット

◆ 早送り

Accelerate_Enabled が真の場合、ゲーム中に Accelerate_Key で指定された キーを押すことで、ゲームの速度を 3倍(Accelerate_Rate で指定) にします。
  • Accelerate_Key の既定値である F4 キーの状態取得には LNS010 Input拡張 が必要です。
  • Accelerate_Toggle が真の場合、Accelerate_Key が押されるたびに加速状態を切り替えます。
    • 偽の場合、押している間だけ加速され、離すと加速状態が解除されます。

  • 加速状態では、Graphics.frame_count が Accelerate_Rate の倍数のときのみ通常の画面更新を行い、それ以外の場合は画面更新せずフレームカウントだけを進めます。
  • 「速度が 3 倍」というのは画面更新待ちの発生頻度が 1/3 になるという意味であり、重い処理が挟まる場合は正確に3倍速になるとは限りません。

◆ 画面サイズ変更

ゲーム中に Zoom_Change_Key で指定されたキーを押すと、画面サイズを切り替えることができます。
    • RPGツクール2000系列における F5キー操作と似たものです。
    • Zoom_Change_Key が無効な値( nil など)の場合は拡大率変更は無効になります。
  • Zoom_List で変更する対象の拡大率を配列で指定します。
    • Game.exe を起動すると、まず Zoom_List の最初の要素が画面サイズに適用されます。
    • 以降は、Zoom_Change_Keyを押すたびに Zoom_List の次の値へと拡大率が変更されていきます。
指定例:
Zoom_List = [2, 1]
  • ゲーム起動時には 2倍、一度 F5 を押すと原寸大、もう一度押すと再び 2倍、…というふうに切り替わります。
Zoom_List = [:max, 1, 2]
  • ゲーム起動時には最大倍率、一度 F5 を押すと原寸大、もう一度押すと 2倍、3回目の押下で再び最大倍率、…というふうに切り替わります。
  • 指定可能な値については下の Graphics.change_zoom の説明を見てください。

● Graphics.change_zoom(zoom)

画面サイズを標準の zoom 倍にします。表示位置は、中央の位置が変わらないように自動で補正されます。
  • zoom として指定可能な値は以下のいずれかです。
:max_f
プライマリモニタの解像度を基準に、最大の拡大率(max_zoom)にします。
:max
:max_f と同様ですが、小数点以下を切り捨てた整数倍にします。
数値(Numeric)
倍率を直接指定します。0.5 未満の場合は 0.5 に、max_zoom 以上の場合は max_zoom に矯正されます。
  • 数値を直接指定する場合、引数には小数や2以上を与えることもできますが、非整数の場合は画面が乱れる場合があるのでご注意ください。
  • 上記のいずれでもない値を渡すと例外 TypeError が発生します。

● Graphics.max_zoom

プライマリモニタが表示可能な最大の倍率を取得します。

◆ スクリーンショット


ゲーム中に ScreenShot_Key が押された場合、Graphics.snap_to_bitmap を呼んで
  1. そのビットマップをファイルに保存します。
  2. ビットマップをクリップボードに書き込みます。
  • ScreenShot_Sound が有効なら、いずれかの成功時にその音を再生します。

  • 保存ファイル名は ScreenShot_Name で定義します。 < > で囲んだ部分は別の文字列に置き換わります。
<TITLE>
ゲームのタイトル($data_system.game_title) に置き換わります。
<TIME>
スクリーンショット撮影時点での時刻を ScreenShot_TimeF に従って文字列化したものに置き換わります。
<IDX>
ゲームが起動してから通算のスクリーンショット枚数に置き換わります。
  • セーブデータの有無に関わらず、 Game.exe を起動した直後は 1 です。
  • <IDX:(桁数)> とした場合、足りない桁に 0 を詰めます。

(参考) ScreenShot_TimeF の % 記法について
%Y : 西暦(4 桁)
%y : 西暦(下 2 桁)
%m : 月を表す数字(01-12)
%d : 日(01-31)
%H : 24 時間制の時 (00-23)
%M : 分 (00-59)
%S : 秒 (00-60) (60 はうるう秒)


備考

再定義されるメソッド

なし

設定項目

Accelerate_Enabled <既定値 :test >
早送りの有効状態
Accelerate_Key <既定値 :F4 >
早送りに使うキー
Accelerate_Toggle <既定値 true >
早送り切り替え方式
Accelerate_Rate <既定値 3 >
早送り倍率

Zoom_Change_Key <既定値 :F5 >
画面サイズ変更に使うキー
Zoom_List <既定値 [:max, 1] >
画面サイズ変更のリスト

ScreenShot_Key <既定値 :SNAPSHOT >
スクリーンショットに使うキー
ScreenShot_Sound <既定値 RPG::SE.new("Key", 80, 100) >
スクリーンショット時に鳴らす音
ScreenShot_Name <既定値 "ScreenShots/<TIME>_<IDX:3>" >
スクリーンショット画像の保存名
ScreenShot_TimeF <既定値 "%Y%m%d_%H%M%S" >
スクリーンショット保存名 <TIME> の書式


更新履歴

  • 2020/12/29 新版公開、スクリーンショット機能を追加
  • 2019/10/18 ウィンドウサイズをディスプレイ解像度に合わせて最大化する機能を追加

  • こんにちは。不具合を発見したのでご報告いたします。 LNS000 組み込み拡張 LNS010 Input拡張 LNS100 プリセット拡張 LNS102 マウス操作 LNS140 マップ/キャラ拡張 の5つを導入した状態で、マップ画面でマウスカーソルをゲームウインドウの外側で大きく動かすなどすると、「 スクリプト 'LNS 140 マップ/キャラ拡張' の 980 行目で IndexError が発生しました。 index -1 too small for array; minimum: 0 」というエラーメッセージが表示され、ゲームが終了してしまいます。 スクリプトは全て最新で、内容は改変していません。 -- 2022-07-26 01:29:40
  • 確認が遅れましたが、対応修正しました。正確には「既に対応済みであったがアップロードを忘れていた」という状態でした…… -- 2022-11-01 15:39:07
  • 対応ありがとうございます!しかし LNS000, 010, 100, 102, 140 の5つを入れた状態で起動直後に「スクリプト 'LNS140 マップ/キャラ拡張' の 1719 行目で NameError が発生しました。 undefined method 'lns102_dash?' for class 'Game_Player'」と表示され、終了します。 -- 2022-12-24 16:39:35
コメント:

すべてのコメントを見る
最終更新:2020年12月29日 09:52