LNS111 共通セーブデータ

ゲームの総プレイ時間、クリア状況など、全てのセーブデータで共有される情報を保持する Game_CommonData を提供します。






基本情報

前提スクリプト


拡張タイプ

○ 要設定 (このスクリプトで設定すると機能する)


説明

概要

共通データはグローバル変数 $game_commondata に保持されます。

  • Common_Name で指定された名前のファイルが存在しない場合は初期化されます。
    • ゲームの配布時にはこれを削除した状態で圧縮してください。
    • Initialize_on_TEST が真の場合、テストプレイモードで起動するたびに初期化されます。
  • 共通データの保存場所は通常のセーブデータと同じですが、変えたい場合は Common_DirName により指定します。
  • $game_commondata の内容は通常のセーブ時の他、DataManager.save_commondata を呼び出すことでセーブされます。
    • Common_AutoSave が真の場合、内容が更新されるたびに自動でセーブされます。

◆ 標準で利用できる機能

① $game_commondata.frame_count

  • ゲームが最初に起動されてからの累計フレームカウントを取得します。
  • このメソッドが呼ばれるたびに更新されます。
  • Graphics.frame_count で割ることで総プレイ時間を取得できます。

② $game_commondata.set_font(type, value)

  • Font のデフォルト値を変更します。
  • type に指定可能なものは以下のいずれかのシンボルです。
:all, :name, :size, :bold, :italic, :shadow, :outline, :color, :out_color
  • type を :all にすると、value に渡されたフォント(Font)から全ての設定を引き継ぎます。

③ $game_commondata.reset_font_settings

  • Font のデフォルト設定を $game_commondata 生成時の状態に初期化します。

④ $game_commondata[symbol]

  • 任意の symbol に紐付けられたデータを取得します。
  • symbol に対応するデータが存在しない場合は nil が返ります。

⑤ $game_commondata[symbol] = object

  • 任意の symbol に紐付けたデータを書き込みます。
    • symbol は、他の用途と被らない名前にしてください。
  • object が Marshal.dump に対応していない場合は TypeError が発生します。

◆ ユーザー設定

  • 他の LNS スクリプトや、使用者によるオリジナルの設定項目がある場合は Settings で定義します。
    • ここで定義された設定項目を、$game_commondata から変更できます。
  • Settings による設定の取得/変更を利用する場合、対象のオブジェクト側でセッターとゲッターが定義されている必要があります。

設定方法
Settings[(シンボル)] = [(オブジェクト), (設定用メソッド), (初期値)]
Settings[:use_mouse] = [LNS::Mouse    , :use_mouse                ]
Settings[:animation] = ["$game_player", :animation_id   , 1       ]

  • シンボル
    • 設定項目を表す任意のシンボルを指定します。
      • $game_commondata からのアクセスにはこのシンボルが使われます。
    • (例)シンボルが :something の場合
      • (ゲッター) 設定内容を取得するには、下のいずれかを使います。
$game_commondata.something
$game_commondata.get_something
      • (セッター) 設定内容を変更するには、下のいずれかを使います。
$game_commondata.something = value
$game_commondata.set_something(value)
  • オブジェクト
    • セッター/ゲッターのレシーバとなるオブジェクト指定します。
    • クラス(定数) または 文字列(String) を指定します。
      • 文字列の場合、参照時に eval() により内容の解釈が行われます。
  • 設定用メソッド
    • 設定の取得/変更時に使われるメソッドをシンボルまたは文字列で指定します。
    • (例) :something の場合
      • (ゲッター) オブジェクト.something または オブジェクト.get_something が定義されていれば、$game_commondata からその内容を取得できます。
      • (セッター) オブジェクト.something= または オブジェクト.set_something が定義されていれば、$game_commondata からその内容を変更できます。
    • 対応するメソッドが存在しない場合、設定の取得や変更ができないだけでエラーにはなりません。
  • 初期値
    • 設定項目の初期値を $game_commondata 側で指定する場合は記述します。
    • 省略した場合は、対象オブジェクトの現在の値が初期値になります。

設定例
Settings[:use_mouse] = [LNS::Mouse, :use_mouse]
  • $game_commondata.use_mouse = (true or false) によってマウスを使うかどうかの設定を変更できます。



備考

再定義されるメソッド

なし

設定項目

Common_Name <既定値 "Common.rvdata2" >
共通データ ファイル名
Common_DirName <既定値 LNS::Setting110::Save_DirName >
共通データ 保存先
Common_AutoSave <既定値 true >
共通データ 変更時に自動でセーブ。偽の場合、[セーブ] コマンドを実行しない限り共通データは保存されない。
Initialize_on_TEST <既定値 true >
テストプレイ時に初期化する
Settings
$game_commondata から参照可能な設定のリスト


更新履歴

  • 2020/12/29 新版公開(旧版からはかなり変更されているので注意)

  • こんにちは。不具合を発見したのでご報告いたします。 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日 03:49