マスター/変数

Last-modified: 2024-02-25 (日) 15:05:43
 

変数の概要

「変数」とは、数値や文字列などを格納しておくデータ保存箱のようなもの(俗に言う「フラグ」に相当)。
いつでも呼び出すことが出来るのでとても便利だ。

変数を使う手順は以下となる。

  1. 宣言(=作成)
  2. 代入や操作
  3. 呼び出し(イベントでの使用)

変数を使える具体的な場面

例えば、薬草を採取するクエストを作る。
プレイヤーが採取した薬草の数によって、報酬を上乗せしたい。

プレイヤーが薬草をどれだけ採取したかをカウントする際、変数が使える。

  1. [薬草の数]という変数を宣言する。初期値は0。
  2. プレイヤーが薬草を採取するたび、変数[薬草の数]に+1する。
  3. 最終的に、変数[薬草の数]に入っている値が、プレイヤーが採取した薬草の数となる。

変数の形式

変数

"test"という変数 ID の変数に"1"という値を代入すると、それ以降"test"の中身に"1"が保持されます。
代入以外にも、加算、減算など既存の変数の値を修整することもできます。

言わば通常の変数。
「変数ID(変数名)」と「値」で成り立つ。

変数の操作は「変数の操作」コマンドで行える。

配列変数

一つの ID に対して一つの値しか持てない変数の他に、
一つの ID に対して、複数の値を持てる「配列変数」というものもあります。

複数の変数が一つにまとまったような形式。
「変数ID(変数名)」と「インデックス(位置)」、「値」から成り立つ。
情報をまとめられる他、複数の要素の平均・最小値などを求めやすくなる。

配列変数の操作は「配列変数の操作」コマンドから行える。

変数の種類

キャラクター変数

PC単位で保持する変数。

パーティ変数

パーティで共有する変数。パーティメンバー間で同期される。
クエストの進行において重要な変数はこの種類にするといいだろう。

グローバル変数

参加PCやパーティに関わらず、クエスト自体が保持する変数。全てのPCから参照できる。
また、各グローバル変数にはURL(http://service.questnotes.net/variable/シナリオID/グローバル変数ID)が割り振られる。

酒場の掲示板のようなイベントや、マスターで確認するためのマルチエンドの各ルート数の集計等に使う。

Version0.13.7.1より、グローバル変数の操作者の履歴をログに表示できるようになった。
変数ウィンドウの各グローバル変数を右クリックし、メニューを選択できる。

ローカル変数

使い捨てのような変数。実行中のイベントでのみ参照できる。
未宣言の変数をイベントで扱うと、自動的にこのローカル変数として扱われる。
別々のイベントで同じ変数IDを指定してもそれぞれ独立したローカル変数となる。

別変数に代入等しない限りは保存されない変数であり、使用したイベントの終了時や、別イベントの呼び出し時に消える(イベントをまたぐには引数でやり取りする必要がある)。
仕様上処理が軽くなる上、宣言が必要な変数と違って通信が必要ないため、通信制限対策にも使える。

特殊変数

新規作成や代入はできない、読み取り専用の変数。
PCの情報や現在時刻等、ゲーム内で情報を取得できる。
詳細はマスター/変数/特殊変数の代入のページへ。

特集変数で取得できる内容は公式サイトのリファレンスに一覧がある。

 

変数の使用

変数/配列変数の操作コマンドのタイプについてはマスター/コマンドへ。
特殊変数についてはマスター/変数/特殊変数の代入のページへ。

変数の宣言

宣言とは、変数を作成・定義すること。
クエストを通して使用するような変数は宣言が必要になる。

まずは左上メニューのウィンドウ→変数から変数ウィンドウを開こう。
ここでは宣言済みの変数、ローカル変数、特殊変数の確認が行える。

キャラクター変数やグローバル変数など、各種類がタブごとに分かれている。
作りたい種類のタブで、上のIDの部分に変数名を記入して追加を押すと、変数の宣言が完了する。

  • 配列変数を作りたい場合は「配列変数」にチェックを入れよう。
  • 同名の変数を複数宣言することはできない。
  • 一度宣言した変数IDの編集はできない。削除して宣言し直そう。

変数の操作コマンド

左上メニューのウィンドウ→イベントからイベントウインドウを開く。
同じくウィンドウ→コマンドからコマンドリストを開く。
これでイベント内にコマンドを記入できる。

  1. 変数を使いたいイベントのイベントエディットウィンドウ(編集画面)を開く。
  2. 変数操作コマンドを入れたい位置をクリックで選択。
  3. コマンドリストの変数→「変数の操作」をダブルクリックする。
    これで[変数の操作]のコマンドウィンドウが表示される。
  4. 変数IDの欄に使用する変数名、値の欄に代入したい数字なり文字なりを記入する。

変数の参照

変数は条件分岐コマンドで分岐する以外にも、様々な使い道がある。
各表記は以下の通り。

  • \v[変数ID]
  • %変数ID
    変数である変数IDの中の数値や文字がそのまま表示される。
    メッセージコマンド等、文章中の一部で表示したい場合は一番目を使おう。
  • \v[変数ID][インデックス]
    配列変数である変数IDの中のインデックス番目の数値や文字がそのまま表示される。
    メッセージコマンド等、文章中の一部で配列変数を参照したい場合にも使える。

以上の表記は、メッセージコマンドや条件分岐コマンドを始め、テキストを入力できる部分に記入すると反映される。
入れ子構造のような表記も可能。

ただし、指定した名前の変数が存在しない変数に値が入っていない(空欄である)場合、何も表示されない。
また、上記以外で配列変数の指定に誤りがある場合、XML表記がそのまま出力される。
インデックス指定があるか、[]が閉じているか等、記法が間違っていないか確認しよう。

狭い入力欄の場合、カーソルを入力欄に合わせた時に出る右側のフォルダのマークで、手書きせずとも変数記法を呼び出すことが可能。

 

共通事項

オプション「保存しない」

変数の操作時にオプションの「保存しない」を活用すると、通信制限に引っ掛かりにくくなる。
通信制限は30秒で100リクエストまでで、頻繁に変数の書き換えを行うなら格段に改善する。

ただし、仕様上マルチプレイ時は変数ずれが生じかねないので気を付けよう。
「保存しない」オプションで変更した変数は、再ログイン時に変更前の変数に戻る。
そのため、変更した変数を引き続き扱いたい場合は、元の変数に反映させる必要がある。

具体的な仕様はおそらく以下の通り。

保存しない:チェックなし
「保存しない」にチェックを入れない、デフォルトの状態。変数の変更が同期される。
個人イベント→実行者の変数が全員に共有される。
全員イベント→パーティオペレーターの変数が全員に共有される。
保存しない:チェックあり
変数の変更が同期されない。
個人イベント→実行者の変数のみが変わる。
全員イベント→パーティオペレーターの変数のみが変わる。

オプション「保存結果」

変数・配列変数の操作コマンドで宣言済みのグローバル変数を指定した場合に表示されるオプション。

変数の操作が完了したときにTrue、失敗したときにFalseが、指定した変数に取得される。
値の量や配列の数によって変数の変更がきかないことはまれにある。以上のオプションを使えば、ひと手間は増えるが「内容が長すぎます。」のタイミングで再処理することも可能。

数字と文字列

数字と文字列では「+」など一部の動作が異なる。
例えば「1+1」の結果は「2」に、「あ+い」の結果は「あい」になる。

この二つは自動で判別され、文字列の「あ01」から「あ」を除去すると、「01」という数字になる。

全員イベントでの変数の扱い

基本的にはボードオペレーターの変数が使用される。(条件分岐、スキルのエフェクトで確認済み。)
一方、メッセージの表示は個人のものが表示される。

例えば、自分自身のIDを取得する「\environment.OwnCharacterId」は……

  • メッセージで使うと各個人のキャラIDが表示される。
  • 条件分岐や判定者などで使うと、ボードオペレーターのものが使用される。