イベント例

Last-modified: 2024-02-25 (日) 15:00:42
 

このページについて

マスター時によく使うイベントや、知っておくと便利なイベント例などを記載する。
やり方はこのページの例以外にもあるので、参考の一つにどうぞ。

 

tips

既存のクエストを参考にする

「あのクエストのあのイベントはどう作っているんだろう?」と思った際は、マスターで参加してみよう。
イベントの作りや変数、エネミーAIを確認できるので、制作の参考になる。

イベント内にコメントで解説を残してくれているクエストもあるが、製作者側でマスターの参加が不可に設定されているクエストもある。見れなくても泣かない。
また、パブリッククエストへのマスター参加は現在不可。

繰り返し処理

配列変数と合わせた繰り返し処理は使い所の多い便利なコマンドだ。

  • 全員に同じエフェクトを付与する
  • ボード内の特定の状態のPCにだけエフェクトを付与する
  • パーティ全員のオブジェクトを移動させる

様々な使い道がある。
慣れてきたら、工夫して使ってみるといいだろう。

 

基本のイベント例

入力内容を取得する

「プレイヤーに入力させ、その内容を変数に保存する」という基礎的なイベント。

  1. [メッセージ]タイプ:ウィンドウ ユーザー入力:テキスト・数字 変数ID:入力内容
  2. [メッセージ]コンテント:「\v[入力内容]と入力されました。」

入力後に変数「入力内容」を使って、答え合わせをしたり、他のプレイヤーに見せたりする。
二つ目のメッセージは入力した内容を表示するためのもの。

変数は宣言(作成)していないローカル変数でも可能。
他のイベントへ持ち越さないならローカルで十分だろう。

一定確率でイベントを分岐する

NPCに話しかける度にランダムで発言を変えたい、3割の確率でレアな会話イベントを起こしたい、等の時に。

  1. [条件分岐]10%の場合
    1. ここに内容
  2. [条件分岐]前の条件が合わず、50%の場合
    1. ここに内容
  3. [条件分岐]それ以外の場合
    1. ここに内容

トリガータイプは「確率」。
「分岐」と書かれたタブの右の+から条件を増やせる。
オプションの「偽文に分岐」にチェックを入れれば、「全てに当てはまらなかった時」の選択肢が作れる。

ランダムな数字を出す

ランダムな数字を出力するには「特殊変数」を用いる。

  1. [特殊変数の代入]変数ID:乱数の結果 種類:乱数 最大値:10
  2. [メッセージの表示]「\v[乱数の結果]が出ました。」

「乱数の結果」という名前の変数に、最大値が10の乱数を代入する。
ここで言う最大値は「最も大きくて10が出る」ではなく、「数字が10種類出る」という意味。
カウントのスタートは0からなので、最大値10の場合は0を含めて10個分、つまり最終結果は0~9のどれかとなる。

「乱数」の他に「乱数ダイス」という種類もあり、これは6面ダイスをいくつ振るかを設定する。

 

応用イベント例

扉内外への移動

「扉をクリックしたら部屋を出入りする」というイベント。
ボード移動ではないので、同一ボード内でオブジェクトの移動で表現をする。

今回は「下側のチップから上側のチップへ、一つの扉オブジェクトを使いたい」時の例。
扉を挟んだ上側の座標を[1,0]、下側の座標を[1,2]とする。

  1. [特殊変数の代入]変数ID:Y座標 種類:キャラクター キャラクターID:イベント起動者 タイプ:Y座標
  2. [条件分岐]変数[Y座標]が2以上の場合
    1. [オブジェクトの移動]対象ID:イベント起動者 位置:[1,0] オプションのジャンプ移動:チェック
  3. [条件分岐]それ以外の場合
    1. [オブジェクトの移動]対象ID:イベント起動者 位置:[1,2] オプションのジャンプ移動:チェック
1.[特殊変数の代入]
変数ID:Y座標 種類:キャラクター キャラクターID:イベント起動者 タイプ:Y座標
上下どちらに移動させるべきなのかを判定するために、まず「今いるY座標」を取得する。
2.[条件分岐]
トリガータイプ:変数 変数ID:Y座標 タイプ:値 条件:>=2 偽文に分岐:チェック
Y座標が2以上(=下側にいる)で判定する。
i.[オブジェクトの移動]
対象ID:イベント起動者 位置:[1,0] オプションのジャンプ移動:チェック
上側に移動させる。
3.[条件分岐]それ以外の場合
i.[オブジェクトの移動]
対象ID:イベント起動者 位置:[1,2] オプションのジャンプ移動:チェック

「相対移動」にチェックを入れると座標を数えずにイベントを組める。
(上のイベント例だと相対移動の値は「0,-2」と「0,2」になる。)

掲示板イベント

「何かを書き込んだり、他プレイヤーの入力内容を一覧にして見れる」イベント。

掲示板への書き込み

  1. グローバル変数(配列)「掲示板」を作成。
  2. [メッセージの表示]
    1. [条件分岐]変数[記入内容]がない場合
      1. [イベントの操作]終了
  3. [配列変数の操作]ID:掲示板 操作:挿入
1.変数の宣言
グローバル変数(配列変数)「掲示板」を宣言。
2.[メッセージの表示]
タイプ:ウィンドウ ユーザー入力:テキスト入力 保存先変数ID:記入内容
  • ここで任意の内容を記入させる。
i.[条件分岐]
トリガータイプ:変数 変数ID:記入内容 タイプ:値 条件==(入力なし)
  • 変数「記入内容」が空欄(=プレイヤーが何も入力しなかった)場合、掲示板にも無駄な空欄が追加されてしまう。
    気になる場合はここで条件分岐を挟み、追加処理を中断する。
a.[イベントの操作]
タイプ:終了
3.[配列変数の操作]
変数ID:掲示板 タイプ:挿入 位置:0 値:\v[記入内容]
  • 配列の一番最初に記入内容を挟むコマンド。
    位置の数字が若いと記入内容も新しく、数字が大きいと古いということになる。
    挿入したい値は変数の中身なので、忘れず\v[]で囲うこと。

掲示板の読み取り

配列変数の内容が長い、あるいは個数が多い場合、「内容が長すぎます。」とログが表示され、配列の操作がなされないことがある。
この場合、「既にある内容を消去」する必要がある。

  • なお……
    変数の操作で宣言済みのグローバル変数を指定した場合、オプションに「保存結果:」という項目が増える。
    ここに任意の変数名を記入すれば、変数の操作が完了したときにTrue、失敗したときにFalseが取得される。ひと手間は増えるが「内容が長すぎます。」のタイミングで再処理することも可能。活用するといいだろう。

以下は繰り返し処理での一例。
タイミングはいつでもいいので、記入イベントのどこかに挟むといいだろう。

  1. [繰り返し処理]配列変数掲示板の個数が10より多い場合
    1. [配列変数の操作]ID:掲示板 操作:消去 位置:10
1.[繰り返し処理]
タイプ:条件 トリガータイプ:配列変数 変数ID:掲示板の個数が10個より多い場合
  • 個数が10個以下(0~9まで)なら繰り返し処理を行わない。
i.[配列変数の操作]
ID:掲示板 操作:消去 位置:10
  • 繰り返し処理と、配列変数の操作での指定の数字が噛み合っていないと、永遠に処理が終わらなくなる。注意すること。

掲示板を表示

上記のような掲示板の内容を表示するイベント例。

メッセージで\v[掲示板][0]\v[掲示板][1]……と並べる方法もある。
以下は繰り返し処理と文字コントロールで表示するイベントを例とする。

  1. [画像コントロールの操作]
  2. [変数の操作]ID:カウント 操作:代入 値:0
  3. [変数の操作]ID:Y座標 操作:代入 値:任意
  4. [繰り返し処理]配列変数:掲示板の要素
    1. [テキストコントロールの操作]ID:カウント
    2. [変数の操作]ID:カウント に+1
    3. [変数の操作]ID:Y座標
1.[画像コントロールの操作]
深度:テキストコントロールの深度より低い数字 他:任意
  • 文字の背景になる画像を配置する。
    白背景に黒背景、またはその逆等、見やすい組み合わせにしよう。
2.[変数の操作]
ID:カウント 操作:代入 値:0
  • 繰り返し回数が何回目か、を取得する変数。
    繰り返し処理のタイプが回数の場合は、テキストの指定にも使う変数となる。今回はテキストコントロールのIDに使用する。
3.[変数の操作]
変数ID:Y座標 タイプ:代入 値:任意(0~)
  • テキストコントロールの開始Y座標を決めるための操作。
    値が大きすぎると下に配置され、メッセージと被ったり、画面外に出たりするので、0~200くらいになるだろう。
4.[繰り返し処理]
タイプ:配列 変数ID:掲示板
  • 配列変数「掲示板」と同じ回数分以下を実行する。
i.[テキストコントロールの操作]
コントロールID:\v[カウント] 位置:X「任意」Y「\v[Y座標]」 テキスト:\e.Argument 深度:背景コントロールの深度より大きい数字
  • ここでテキストコントロールを設置する。
ii.[変数の操作]
変数ID:カウント タイプ:+ 値:1
iii.[変数の操作]
変数ID:Y座標 タイプ:+ 値:任意
  • 行間の隙間を決めるための操作。代入ではなく+であることに注意。
    文字サイズにもよるが、文字サイズ+αの数値を入れれば確実。

この繰り返し処理は「配列変数の中身と同じ回数」実行されるが、特定回数だけテキストを出したいならタイプ:回数でも可。
その場合、テキストコントロール内で使っている\e.Argumentの動作が変わるので、以下のように置き換えが必要になる。

  • \e.Argument → \v[掲示板][\e.Argument]

パーティ全員にアイテムを配布

全体イベントで普通にアイテム配布コマンドを入れても、パーティの一人にしか配布されない。
全員にアイテムを配るには以下の方法を取る。

1.個人イベントを挟む

全体イベントから、個人イベント(「キャラクターID:自分自身」を指定したアイテムの操作)を呼び出す。

2.全体イベント内で済ませる

公式フォーラム「パーティ全員にアイテムを配布する処理について」を参考とした。
イベント内の変数は全てローカル変数。

  1. [特殊変数の代入]パーティ
  2. [繰り返し処理]配列変数:パーティの要素
    1. [特殊変数の代入]NPCかどうか
    2. [条件分岐]変数[NPCかどうか]がFalseの場合
      1. [アイテムの操作]操作:入手 アイテムID:~
1.[特殊変数の代入]
変数ID:パーティ 種類:キャラクター キャラクターID:イベント起動者 タイプ:パーティ
  • これで、配列変数にパーティーメンバーのIDを取得し、以下のコマンドで使用する。
2.[繰り返し処理]
タイプ:配列 変数ID:パーティ
  • 1で代入した配列変数「パーティ」の中身(=パーティ人数)と同じ回数分、イベントを繰り返す。
    この繰り返し内での\e.Argumentは配列「パーティ」の回数番目の中身(=パーティメンバーID)を参照する。
i.[特殊変数の代入]
変数ID:NPCかどうか 種類:キャラクター キャラクターID:\e.Argument タイプ:NPCパーティ
  • NPCパーティーとはNPCのこと。
    NPCにアイテムを渡すと、パーティーリーダーが取得してしまう。
    なので、NPCでない場合だけ取得するようにNPCかどうかを判定する。
ii.[条件分岐]
トリガータイプ:変数 変数ID:NPCかどうか タイプ:値 条件:==False
  • キャラクターがNPCでない場合のみ、この中身を実行する。
a.[アイテムの操作]
キャラクターID:\e.Argument タイプ:入手 データ/アイテム:任意