11. 里々/YAYAにあるが湊にない機能

「使っている機能が湊にあるか」を確認するための一覧です。「なし」と書いたものは、代替手段があれば併記しています。

凡例: ✕ なし / △ 一部あり・自作が必要 / ○ 別の形である

里々にあって湊にない機能

辞書の書き方に関わるもの

里々の機能湊代替・備考
括弧展開 ()、入れ子の展開○${…} と call(5.、6.)
$ による代入・変数の自動保存△global save.…(5.)
単語群 @△配列、同名トークと return(6.)
ジャンプ >△call と return(4.)
選択肢 _△\q[ラベル,ID] と OnChoiceSelect(7.)
: による話者の自動交代✕話者を毎回書く
辞書ファイル名(dic*.txt)による自動読み込み✕main.mnt から include で明示する
採用条件を単語群・ジャンプにも付ける✕トーク定義の if(…) だけ
全角記号の演算子・関数名(+、== など)✕半角のみ
変数名の全角・半角の同一視✕A と A は別の名前

自動でやってくれていた処理

里々の機能湊代替・備考
自動挿入ウェイト、replace.txt / replace_after.txt✕\w を手書き、または replace() の関数(7.)
スコープ切り替え時の挿入($スコープ切り替え時)✕\n[half] などを自分で書く
$トーク開始時、$スクリプトの一番頭✕各トークの先頭に書く
$会話時サーフェス戻し、$デフォルトサーフェス○、$サーフェス加算値○✕トークごとに \s[…] を書く
重複回避の方式の切り替え($文「○」の重複回避 など)✕「一巡」に固定(4.)
$呼び出し回数制限、$ジャンプ回数制限✕固定値(下の制限一覧)
辞書の # コメント○// と /* … */

イベント・状態に関わるもの

里々の機能湊代替・備考
独自イベント(なでられ、つつかれなど)△自作(3.)
*OnSatoriLoad など、里々固有のライフサイクル✕main.mnt 直下の global 文がロード時に実行される
情報取得変数((現在時)、(起動回数)など)△now、reference、get_property()。起動回数などは自作(5.)
NOTIFY の自動保存($NOTIFYの自動保存、(導入済み○○))✕該当するイベントを自分で受けて、global に保存する
トーク予約($次のトーク)✕\![raise,…]、\![timerraise,…] などさくらスクリプトで
コミュニケート(→、$Value0)✕専用構文はない。受け取る側は OnCommunicate を普通のイベントとして書ける
アンカー辞書(自動アンカー)✕専用構文はない。\_a[ID] はさくらスクリプトなので使える
辞書リロード、$辞書フォルダ、マルチキャラ辞書切り替え✕include による静的な分割のみ
セーブ関連($手動セーブ、$自動セーブ間隔、$セーブデータ暗号化)✕保存は終了時と再読み込み時だけ(9.)

関数

里々の関数のうち、湊の組み込み関数で置き換えられるものです。

里々湊
(for,…) (while,…) (times,…)for、foreach、while
(set,変数,値)変数 = 値、global save.変数 = 値
(calc,式)式をそのまま書く
(sprintf,書式,…)format("書式", …)
(length,文字列)len(文字列)
(replace,文字列,前,後)replace(文字列, 前, 後)
(when,条件,真,偽)choose(条件, 真, 偽)
(iflist,…) (whenlist,…)if … else if、match
ssu.dll の substr split count replacesubstr split count replace(split は配列を返す)
ssu.dll の erase(消去)replace(文字列, 対象, "")
ssu.dll の compare==
ssu.dll の if unless switch nswitchif、match、choose

YAYAにあって湊にない機能

YAYAの機能の対応は付録Aにまとめています。主なものだけを挙げます。

YAYAの機能湊代替・備考
EVAL(文字列をコードとして実行)✕なし
名前空間(A.B のような関数名)✕トーク名や関数名に . は使えない
関数のオプション(: nonoverlap : sequential など)△nonoverlap に当たる動きは、同名トークで常に働く。順番に出すなら自作(6.)
型の判定(GETTYPE、ISINTEGER)○is_num()・is_str()・is_null()・type_of() など
ファイル操作(FOPEN FREAD FWRITE FDEL FENUM など)△file_read file_write file_append file_move のみ。1行ずつ読む処理、削除、フォルダの列挙はない
システム辞書(yaya_shiori3.dic)が提供する機能✕OnBoot などは自分で書く

湊の設定項目と、読まれない項目

config.toml の設定です。

項目内容
[characters]キャラ名とさくらスクリプトのタグ(必須)
[settings] talk_interval_secs talk_jitter_secsランダムトークの間隔。初回起動後は save.json が優先される(9.)
[settings] debug_logtrue でログを出す。同上
[settings] auto_newline話者に戻るときの自動 \n(既定 true)
[settings] shuffle_reset読み込まれるが、使われない。 設定しても動作は変わらない
[settings] encoding読み込まれるが、使われない。 通信は常に Shift_JIS

制限の一覧

湊には、暴走を防ぐための固定の上限があります。里々のように設定では変えられません。

対象上限超えたとき
for / while のループ回数2000回打ち切って警告
foreach の要素数2000個以降を無視して警告
再帰・入れ子の call の深さ約100(101段目まで)それ以上は呼ばれない
saori() と get_property() の合計1イベントあたり10回呼ばずに空の値を返す。警告が出るのは saori() だけ(get_property() はログのみ)
SAORIの応答待ち5秒打ち切り、そのSAORIは以後呼ばれない
台本の { } ( ) [ ] の入れ子の深さ200読み込みエラー
file_read で読めるファイルの大きさ1MB読めず(null)、警告
format の幅・精度10001000に丸められる

次は12. 湊だけで簡単になる書き方に進んでください。