ファイル構成

湊のゴーストは以下のファイルで構成されます。

ghost/master/
├── shiori.dll       ← minato.dll をリネーム
├── config.toml      ← キャラクター設定・動作設定
├── save.json        ← 永続データ(自動生成)
└── talks/
    ├── main.mnt     ← メインスクリプト
    └── *.mnt        ← include で分割可能

config.toml

キャラクターの設定と動作設定を書きます。詳細は設定を参照してください。

talks/

.mnt ファイルにトークとロジックを書きます。 main.mnt が必ず読み込まれます。ファイルが大きくなった場合は include で分割できます。

.mntファイルのトップレベルに書けるもの

トークや関数の { } の外(トップレベル)に書けるのは、次の4つだけです。

書けるもの例説明
トーク定義OnBoot => { ... }トーク定義
関数定義func greet(name) { ... }func定義と呼び出し
globalglobal save.count ?= 0global / save
includeinclude "events.mnt"include

コメントと空行は、どこに書いてもかまいません。

include "events.mnt"

global save.count ?= 0

func greet(name) {
    湊: ${name}さん、こんにちは。
}

OnBoot => {
    let name = "ユーザー"   // let はトークの中なら書ける
    greet(name)
}

セリフ、let、if、for、call などの文は、トークか関数の中にしか書けません。

let をトップレベルに書いたときは「let はトークや関数の中でしか使えません」というエラーになります。 それ以外の文をトップレベルに書くと「予期しないファイル末尾があります」というエラーになります。 このエラーが出たら、その行がトークや関数の { } の外にはみ出していないか確かめてください。

save.json

global save.* で保存したデータが自動的にここに書き込まれます。 手動で編集する必要はありません。

自動的に作られるその他のファイル

湊は、ゴーストのフォルダ(ghost/master/)に、次のファイルを作ることがあります。

ファイル内容
minato_load.logdebug_log = true のときの動作ログ(追記されます)
minato_request.logdebug_log = true のときの、直近にSSPから届いたリクエストの内容(イベントごとに上書きされます)
minato_debug.logdebug_log = true のときに、台本の log() が書き出すログ(追記されます)
save.json.corrupt.baksave.json が壊れていて読めなかったときに、元のファイルを退避したもの
save.json.panic.bak湊の内部エラーのあとに保存するとき、上書き前の save.json を退避したもの
save.json.panic.bak.notifiedsave.json.panic.bak について、警告をもう表示したことを示す空のファイル。これがあると、同じ退避について警告は繰り返し表示されません
save.json.tmpsave.json を保存している最中の一時ファイル。保存が終わると save.json に置き換わり、消えます
(ファイル名).minato.tmpfile_write() で書き込んでいる最中の一時ファイル。書き込みが終わると消えます

これらは湊が管理するファイルなので、手動で編集する必要はありません。 minato_ で始まるファイルは、台本の file_write() などからは書き込めません。 配布するときは、save.json や .bak などを含めないようにしてください。