バーク(叫び)
特定の状況で、キャラクターが頭上に表示する専用の会話をトリガーします。
これらの会話は 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と同一です。
シナリオ
シナリオは、複数選択肢の会話と追加アクションで構成される高度なインタラクションシステムです。
カスタムシナリオを定義するには、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を利用してカスタマイズされたヘルプページを提供できます。
