コンテンツにスキップ

変数・関数・データ型

ワールドロジックのルールは、変数で値を記憶して計算します。スコア・残り試行回数・クエストの段階などの値に使います。関数は、複数のルールが共有するアクションのまとまりです。enum とデータ型は、値を決まった形にまとめます。

機能動作使う type
変数値を記憶します。アクション「変数を設定」(set_var)・条件「比較」(compare)・式 {名前}
関数他のアクションから呼ばれたときだけ実行されるルールです。トリガー「関数」(function)・呼び出しアクション 5 種
enum決まった値のうち 1 つだけを持つ型です。変数・データ型のフィールドの型
データ型複数のフィールドからなる型です(クラスに似ています)。変数の型
内容どこで
変数・enum・データ型ウィンドウワールドロジックパネル左上の「変数」ボタン
変数を設定・比較・関数の typeワールドロジックパネルの「アクションを追加」・「条件を追加」・トリガー type メニューの「変数 · 関数」グループ、またはロジックグラフのノードを追加ウィンドウ

プレイヤーごとにスコアを数え、10 点になったらタイトルを表示します。

  1. ワールドロジックパネルの「変数」を押します。
  2. 「変数」タブで「変数を追加」を押します。
  3. 名前 score、型 int、範囲「プレイヤー」、初期値 0 にします。
  4. 「適用」を押します(Ctrl+Z で 1 段階)。
  5. スコアを与えるルールに、アクション「変数を設定」を追加します。変数 score、計算 add、値 1 にします。
  6. 同じルールに、アクション「分岐(もし)」を追加します。左 {score}、比較 >=、右 10 にします。
  7. ロジックグラフで、「真なら」行の黄色のピンを空いている場所にドロップします。新しい「関数」ルール(func_1)が作成されます。
  8. その関数ルールに、アクション「画面タイトル」を追加します。

「変数」タブの 1 行が変数 1 つです。

欄意味
名前式の中では {名前} として使います。
型基本型・enum・データ型のいずれか
範囲グローバル(シーン 1 つに値 1 つ)・プレイヤー(プレイヤーごとに値 1 つ)
初期値空の場合は型のゼロ値です。
型値の例初期値(空のとき)
booltrue・falsefalse
int30
float2.50
stringこんにちは空の文字列
playerプレイヤー名空の文字列
actorアクター id空の文字列
positionx y z(空白で区切る)0 0 0
enumその enum の値の 1 つ最初の値
データ型フィールドごとの値(下記)フィールドごとの初期値

値はすべて文字列として保存されます。数値は小数第 3 位まで使います。

宣言していない名前も使えます。その名前はグローバルの文字列変数になります。条件「フラグ」・アクション「フラグを設定」と同じ保存領域を使います。宣言は、型・プレイヤー範囲・初期値が必要なときに行います。

値の欄(「変数を設定」の値、「比較」の左・右など)には式を書きます。

  1. {名前} をその値に置き換えます。
  2. 残った文字列が数値と + - * / % ( ) だけなら計算します(例: {score} * 2 + 1)。
  3. そうでなければ、置き換えた文字列をそのまま使います(例: {player} さん、ようこそ)。
  • 0 での割り算は 0 です。
  • 不明な名前は空の文字列になります。

名前を探す順序は、ローカル変数(関数の引数・{index})→ プレイヤー別変数 → グローバル変数 → 特別な名前です。

特別な名前値
{player}トリガーした人の名前
{player_x}・{player_y}・{player_z}トリガーした人の位置
{player_pos}トリガーした人の位置 x y z
{time}シーン開始からの経過秒数
{random}0〜1 のランダムな数
{index}「繰り返し」の中での現在の番号(0, 1, 2 …)

アクション「変数を設定」(set_var)の欄です。

欄値意味
変数名前データ型の変数なら、hero.hp のようにフィールドまで書きます。
範囲auto・global・player・localauto = 宣言どおり。宣言がない場合は、同じ名前のローカル変数があればローカル、なければグローバル。local = この実行の中だけ
計算下の表
値式
計算意味
set値で置き換えます。
add・sub・mul・div・mod足し算・引き算・掛け算・割り算・余り。0 で割ると 0 です。
min・max現在の値と比べて小さい方・大きい方
append文字列を後ろに付け足します。
toggletrue ↔ false を反転します(値は使いません)。

現在の値が数値でない場合、数値計算では 0 とみなします。

条件「比較」(compare)とアクション「分岐(もし)」は、左・比較・右の欄で比較します。

比較意味
==・!=両方が数値なら数値として、そうでなければ文字列として比較します(大文字・小文字を区別)。
<・<=・>・>=数値だけを比較します。数値でなければ偽です。
contains左の文字列に右の文字列が含まれる
starts_with左の文字列が右の文字列で始まる

関数は、トリガーが「関数」であるルールです。自動では起きません。呼び出しアクションが名前で呼んだときだけ実行されます。

「関数」トリガーの欄意味
関数名呼ぶときに使う名前です。
引数名カンマで区切った名前(例: amount, target)。呼ぶときに渡した値がローカル変数 {amount} になります。
  • 関数は、呼び出し元のトリガーした人を引き継ぎます。
  • 関数ルールの条件が偽の場合、その関数だけをスキップします。
  • 関数ルールでは、フィルター(1 回のみ・クールダウン・権限)は使われません。
アクションtype欄動作
関数を呼ぶcall関数・引数(名前=式, …)関数を実行し、終わったら次のアクションへ
順番に(シーケンス)sequence関数(カンマ区切り)複数の関数を順に実行。前の関数が終わってから次の関数
分岐(もし)branch左・比較・右・真なら・偽なら比較して関数を 1 つ呼ぶ。該当する側が空なら何もしない
繰り返しrepeat回数(1〜100)・関数関数を回数分だけ順に実行。{index} = 0, 1, 2 …
プレイヤーごとfor_each_player受け取る人・関数受け取る人ごとに、その人をトリガーした人として関数を順に実行
  • 呼んだ関数が「待機」に達すると、呼び出し元も一緒に待ちます。関数が終わってから次のアクションへ進みます。
  • 関数が関数を呼ぶ深さは 16 までです。超えると打ち切ってエラーを記録します(再帰ループ)。
  • 引数の式は呼び出し時に計算します。

0.9.11 以降: 呼び出し欄 1 つには関数を 1 つだけ書きます。複数の関数を書くと検査エラーになります。順に呼ぶには「順番に(シーケンス)」を使います。同じ名前の関数ルールが 2 つ以上ある場合も検査エラーになります。

関数シグナル
呼び出すアクション関数を呼ぶ・順番に・分岐・繰り返し・プレイヤーごとシグナルを送信
受け取る側その名前の「関数」ルール 1 つその名前の「シグナルを受けたとき」ルールすべて(ブロードキャスト)
待機関数が終わるまで待つ(wait を含む)待たない
グラフ黄色の関数ピン — ピン 1 つに線 1 本シグナルピン — 受け取るルールすべてに線

0.9.11 以降: 「変数」ウィンドウが 3 つのタブ(変数・enum・データ型)に変わりました。

「enum」タブで「enum を追加」を押します。

欄例
名前Job
値(カンマ区切り)warrior, mage, archer
  • 変数・データ型のフィールドの型として選べます。
  • その型の変数の初期値は、指定した初期値、なければ最初の値です。
  • enum にない初期値や「変数を設定」の値は、検査で注意が出ます。

「データ型」タブで「データ型を追加」を押し、「フィールドを追加」でフィールドを追加します。

欄例
データ型名Hero
フィールド名・フィールドの型・初期値hp・int・20 / job・Job / gold・int

フィールドの型は、基本型・enum・他のデータ型です。

データ型の変数は、フィールドごとの値に展開されます。変数 hero(型 Hero)は次のように使います。

使う場所例
式{hero.hp}・{hero.job}
「変数を設定」の変数欄hero.hp
「比較」の左{hero.job}
入れ子のデータ型{hero.stats.str}
  • 範囲は変数の宣言に従います。
  • hero 全体に「変数を設定」すると検査エラーになります。フィールドを指定します。
  • データ型の変数の初期値は、フィールドごとに(データ型タブで)指定します。変数の行の初期値は使われません。

「適用」を押すと検査し、問題を通知で表示します。

種類内容
エラー命名ルール(英字で始まり、英字・数字・_)・名前の重複(基本型・enum・データ型の間)・値のない enum・フィールドのないデータ型・存在しない型・自分自身を含むデータ型(ループ)・データ型全体への「変数を設定」・重複した変数宣言
注意enum にない初期値・enum にない「変数を設定」の値・データ型の変数の行の初期値

関数側の検査は次のとおりです。

種類内容
エラー存在しない関数名・同じ名前の関数ルール・呼び出し欄 1 つに複数の関数
注意呼び出しアクションのない関数・関数ルールでオンにしたフィルター

「ワールドロジック 変数・enum・データ型」ウィンドウのボタンです。

ボタン動作
変数を追加・enum を追加・データ型を追加新しい行を追加します。
フィールドを追加データ型にフィールドを追加します。
削除(ゴミ箱)その行・フィールドを削除します。
適用3 つのタブをまとめて保存します。元に戻すは 1 段階です。
閉じる保存せずに閉じます。
キー動作
Escウィンドウを閉じる(適用していない内容は破棄)
Ctrl+Z「適用」を元に戻す
  • 「適用」を押すまでは何も保存されません。
  • プレイ中の変数の値は、プレイのワールドロジック履歴(「変数名 = 値」の行)で確認できます。
  • サーバープラグインも同じルールで変数・関数を実行する必要があります。サーバー側の対応状況は、サーバープラグインのバージョンを確認してください。
  • サーバーでは、データ型の変数は展開した名前(hero.hp など)で保存されます。