バーク(叫び)
特定の状況で、キャラクターが頭上に表示する専用の会話をトリガーします。

これらの会話は CharaText テーブルに記述され、キャラクターは idText セルに対応する会話IDを入力してリンクさせます。

| セル | calm | fov | aggro | dead | kill |
|---|---|---|---|---|---|
| トリガー | 冷静時 | 視界内 | 敵対時 | 死亡時 | 撃破時 |
各エントリに カスタム音声 タグを挿入することもでき、音声付きの叫びにすることができます。例えば、「通過できない!!<sound=gandalf,0.8>」 とすると、この叫びがトリガーされた際に、80%の確率でIDが gandalf のオーディオが再生されます。
会話
キャラクターと話すための会話を追加するには、LangMod/**/Dialog/ フォルダ内に dialog.xlsx ファイルを準備します。
このテーブルの形式はゲーム内の Elin/Package/_Elona/Lang/_Dialog/dialog.xlsx と同じですが、unique テーブルとキャラクターIDに対応する行のみが必要です。

ここでのIDはキャラクターIDと同一です。
フォーマット
データはテーブルの5行目から開始します。
シナリオ
シナリオは、複数選択肢の会話と追加アクションで構成される高度なインタラクションシステムです。

カスタムシナリオを定義するには、addDrama_シナリオテーブル名 タグを使用します。CWLは自動的に該当シナリオを参照します。
カスタムシナリオテーブルは LangMod/**/Dialog/Drama/ フォルダに配置し、ファイル名はタグと一致させる必要があります。例:addDrama_drama_example には Dialog/Drama/drama_example.xlsx を対応させます。
重要: あなたは 1 つのシナリオ表を提供するだけでよく、それは任意の言語のサブフォルダーに配置できます。CWLは、同じ表内で多言語のローカライズをサポートしています。
作成時はゲーム内蔵のシナリオテーブル Elin/Package/_Elona/Lang/_Dialog/Drama や、テンプレートを含む「Tiny Mita」サンプルを参考にしてください:


ホットリロード
シナリオテーブルはゲーム実行中に編集・保存後、ホットリロードが可能です。
基本構造
シナリオテーブルは上から順に実行され、複数の「シナリオユニット」行で構成されます。各ユニットは以下の列を持ちます(ヘッダー行で定義):
step:次のstepが現れるまでの実行範囲の起点jump:実行時にジャンプするターゲットステップif/if2:実行条件。if2列が存在する場合は両条件を満たす必要ありaction:実行するアクションparam:アクションのパラメータactor:発言キャラクターID(複数キャラ会話用)。デフォルトtg。接尾辞?は名前???を表示しますid:テキスト行の一意識別子(テキスト行のみ必須)text_XX/text_JP/text_EN:実際の対話内容。XXは言語コードで、例えばtext_CN,text_ZHTW。text列は欠落している言語コードの代替として使用されます。
シナリオはステップで実行され、各ステップ内で会話/アクション/条件分岐を組み合わせられます。
main がデフォルト開始ステップ、end が終了ステップです。カスタムステップ名はアンダースコア _ や flag プレフィックスを避けてください。
シナリオアクション
テキスト行はプレイヤーの入力(クリック/キー操作)で次へ進み、アクション行(choice除く)は連続実行され、テキストと共存できません。
主なアクション:
| アクション | パラメータ | 説明 |
|---|---|---|
inject | Unique | 「話す」オプションと汎用ステップを挿入 |
choice | テキストに選択肢を追加(textとjumpと併用) | |
choice/bye | デフォルトの別れオプションを追加 | |
cancel | 右クリック/ESCキーの動作を設定(通常はendにjump) | |
setFlag | flag, 値(省略可) | flagを設定(デフォルト値1) |
reload | ストーリーを再読み込みし、現在のストーリーで行ったフラグの変更を適用します。通常はjumpと組み合わせて使用し、通常はmainです。これはホットリロードを指しているわけではなく、開発時のホットリロードはファイルの変更を保存し、再度ダイアログを開くだけで済みます | |
enableTone | 会話のトーン切り替えを有効化 | |
addActor | キャラクター識別子を追加(actor列に新ID入力時自動発動) | |
invoke | メソッド名 | メソッドを呼び出し |
setBG | 画像名(省略可) | 背景画像を設定(Textureフォルダのカスタムpng対応)、空で解除 |
BGM | BGM ID | BGMを変更(詳細はSound オーディオ/BGM参照) |
stopBGM | BGM停止 | |
lastBGM | BGM停止し、以前のBGMを復元 | |
sound | 効果音ID | 効果音再生 |
wait | 秒数 | 実行を一時停止(アニメーション待機用) |
alphaIn | 秒数 | フェードイン効果 |
alphaOut | 秒数 | フェードアウト効果 |
alphaInOut | 秒数, 待機, 秒数 | フェードイン→待機→フェードアウト |
fadeIn | 秒数, white/black | 画面を白/黒で徐々に表示 |
fadeOut | 秒数, white/black | 画面を白/黒で徐々に非表示 |
fadeInOut | 秒数, 待機, 秒数 | フェードイン→待機→フェードアウト |
hideUI | 遷移時間 | UIを非表示(シナリオ終了時復元) |
hideDialog | ダイアログを非表示(waitと併用) | |
end | シナリオを終了 | |
addKeyItem | キーアイテムID | キーアイテムを付与 |
drop | アイテムID | プレイヤー位置にアイテム生成 |
addResource | 資源タイプ, 数量 | ホーム資源追加 |
shake | 画面振動 | |
slap | シナリオ所有者を平手打ち | |
destroyItem | アイテムID | 指定アイテムを削除 |
focus | カメラをシナリオ所有者に即時フォーカス | |
focusChara | キャラID, 速度 | 同マップ内キャラにカメラ移動 |
focusPC | 速度(省略可) | プレイヤーにフォーカス |
unfocus | カメラリセット | |
destroy | キャラID | 同マップ内キャラを削除 |
save | セーブ | |
setHour | 時間数 | ゲーム内時間を設定 |
複数パラメータはカンマ区切り(スペースなし)。
トリガー条件
if/if2列で条件を追加:
| 条件 | パラメータ | 説明 |
|---|---|---|
hasFlag | flag | プレイヤーが非ゼロ値のflagを所持 |
!hasFlag | flag | プレイヤーがflag未所持または値ゼロ |
hasMelilithCurse | プレイヤーがメリリスの呪い所持 | |
merchant | プレイヤーが商人ギルド所属 | |
fighter | 戦士ギルド所属 | |
thief | 盗賊ギルド所属 | |
mage | 魔術師ギルド所属 | |
hasItem | アイテムID | 指定アイテム所持 |
isCompleted | クエストID | クエスト完了済み |
条件フォーマットは 条件,パラメータ。拡張式も可能:
=,test_flag,1
>,flag,5
,counter,20
!,flag,69基本的に if 列のみ使用。複雑な条件は if2 列を追加。
条件判定
if 列はストーリー表が読み込まれる際に一度だけ判定されます。これは、行を動的に有効/無効にすることができないことを意味します。reload または CWL の invoke* 拡張条件を使用してください。
拡張機能
スクリプトテーブル内蔵の action を使用して期待した効果が得られませんでしたか?追加の条件チェックが必要ですか?CWL は、DLL にカスタム拡張メソッドを追加し、スクリプトテーブル内でそれらを呼び出すことを許可します。
Mod Help集成
有时、プレイヤーにいくつかのヒントを提供して、あなたの素晴らしいストーリーをより良く体験してもらいたいと思うことがあります。CWLを使用してモジュールを作成することで、Mod Helpを利用してカスタマイズされたヘルプページを提供できます。
