## ※組み込み方 ## 拡張子を.kisに直して、templeteフォルダ配下にぶちこむ。 ## ## ※使い方 ##  ${sentence}を呼び出すとトークを行う。 ## 1回の起動中に各シナリオを1つづつ発話する。発話可能なシナリオがなければ埋め合わせトークをする。 ## 1回の起動中に1つのシナリオを1回以上トークさせる場合は、130行目あたりを参照。 ## ## ※注意事項 ## ゴースト終了時に下記の datasaveparam に記述されているエントリをセーブしておくこと。 ## なお、OpenKEEPSの場合は、コメントアウトを外してエントリを有効にするだけでOK。 ## ## ## OpenKEEPSでのデータセーブ指定(OpenKEEPSではコメントアウトをはずしてエントリを有効にする) ## OpenKEEPSを使わない場合、以下で指定されているエントリを終了時にセーブする処理を実装する。 ## :rem datasaveparam: 最終シナリオ到達フラグ datasaveparam: シナリオ1.発話トーク番号 datasaveparam: シナリオ2.発話トーク番号 datasaveparam: シナリオ3.発話トーク番号 datasaveparam: シナリオ4.発話トーク番号 datasaveparam: シナリオ5.発話トーク番号 datasaveparam: シナリオ6.発話トーク番号 datasaveparam: シナリオ7.発話トーク番号 datasaveparam: シナリオ8.発話トーク番号 datasaveparam: シナリオ9.発話トーク番号 datasaveparam: シナリオ10.発話トーク番号 datasaveparam: シナリオ11.発話トーク番号 datasaveparam: シナリオ12.発話トーク番号 datasaveparam: シナリオ13.発話トーク番号 :endrem # シナリオ全終了フラグ 最終シナリオ到達フラグ 0; # 各シナリオの次に話すトーク番号を初期化 シナリオ1.発話トーク番号 : 1 シナリオ2.発話トーク番号 : 1 シナリオ3.発話トーク番号 : 1 シナリオ4.発話トーク番号 : 1 シナリオ5.発話トーク番号 : 1 シナリオ6.発話トーク番号 : 1 シナリオ7.発話トーク番号 : 1 シナリオ8.発話トーク番号 : 1 シナリオ9.発話トーク番号 : 1 シナリオ10.発話トーク番号 : 1 シナリオ11.発話トーク番号 : 1 シナリオ12.発話トーク番号 : 1 シナリオ13.発話トーク番号 : 1 ## シナリオの数 シナリオ数 : 12 ## 各シナリオのトーク数 シナリオ1.シナリオ構成トーク数 : 10 シナリオ2.シナリオ構成トーク数 : 10 シナリオ3.シナリオ構成トーク数 : 10 シナリオ4.シナリオ構成トーク数 : 10 シナリオ5.シナリオ構成トーク数 : 10 シナリオ6.シナリオ構成トーク数 : 10 シナリオ7.シナリオ構成トーク数 : 10 シナリオ8.シナリオ構成トーク数 : 10 シナリオ9.シナリオ構成トーク数 : 10 シナリオ10.シナリオ構成トーク数 : 10 シナリオ11.シナリオ構成トーク数 : 10 シナリオ12.シナリオ構成トーク数 : 10 シナリオ13.シナリオ構成トーク数 : 10 ## 今回の起動中にシナリオのトークをしたかチェック シナリオ1.トーク済フラグ : 0 シナリオ2.トーク済フラグ : 0 シナリオ3.トーク済フラグ : 0 シナリオ4.トーク済フラグ : 0 シナリオ5.トーク済フラグ : 0 シナリオ6.トーク済フラグ : 0 シナリオ7.トーク済フラグ : 0 シナリオ8.トーク済フラグ : 0 シナリオ9.トーク済フラグ : 0 シナリオ10.トーク済フラグ : 0 シナリオ11.トーク済フラグ : 0 シナリオ12.トーク済フラグ : 0 シナリオ13.トーク済フラグ : 0 ## ## メニュー ## event.OnMouseDoubleClick: \t( \q[◇話を聞く  ","Talk]\n \q[◇終了    ","DXX]\n \q[◇なにもしない","TheEnd]\e ) # トークを要求 Select.Talk : ${sentence} # トーク処理 sentence : ( ## シナリオ1〜12が全て話し終わってなければ、それを進める $(if $[ ${最終シナリオ到達フラグ} == 1] ${最終シナリオ再生} else ${通常シナリオ再生};) ) # 全シナリオ終了時の会話 最終シナリオ再生 : $( .logprint "[最終シナリオ再生]"; if $[ ${シナリオ13.発話トーク番号} <= ${シナリオ13.シナリオ構成トーク数} ] $( .entry シナリオ13"."${シナリオ13.発話トーク番号}; .inc シナリオ13.発話トーク番号; return; ); .entry 埋め合わせトーク; ) # シナリオ展開中 通常シナリオ再生 : $( .logprint "[通常シナリオ再生]"; # 各シナリオのトークを話した数をチェック .clear @トーク可能シナリオリスト; .setstr @num 1; .setstr @トーク全終了チェック 1; while $[ ${@num} <= ${シナリオ数} ] $( .logprint "トーク数チェック シナリオ"${@num}"/"${シナリオ数}":"${シナリオ${@num}.発話トーク番号}":"${シナリオ${@num}.シナリオ構成トーク数}":"; if $[ ${シナリオ${@num}.発話トーク番号} <= ${シナリオ${@num}.シナリオ構成トーク数} ] $( # 話すことができるシナリオトークが残っているのでチェック外す .setstr @トーク全終了チェック 0; # 今回の起動中に既に該当シナリオに関してトークしているかチェック # 1回の起動中に2回以上1つのシナリオについてトークしていいなら、if文を外す if $[ ${シナリオ${@num}.トーク済フラグ} != 1 ] $( # まだトークしていないならばリストにいれる .logprint "シナリオ"${@num}"を候補に追加"; .adddict @トーク可能シナリオリスト ${@num}; ); ); .inc @num; ); # 全てのシナリオのトークが終了してしまった。 if $[ ${@トーク全終了チェック} == 1] $( .setstr 最終シナリオ到達フラグ 1; .entry 最終シナリオ再生; return; ); # 話すことができるシナリオの数を取得 .setstr @トーク可能シナリオ数 $[ $(size @トーク可能シナリオリスト) ]; .logprint "トーク可能シナリオ数"${@トーク可能シナリオ数}; # 今回の起動で話せるシナリオトークが存在しない場合 if $[ ${@トーク可能シナリオ数} == 0 ] $( .entry 埋め合わせトーク; return; ); # 話せるシナリオから1つ選んで話す .setstr @発話シナリオ $@トーク可能シナリオリスト[$(rand ${@トーク可能シナリオ数})]; .entry シナリオ${@発話シナリオ}"."${シナリオ${@発話シナリオ}.発話トーク番号}; .inc シナリオ${@発話シナリオ}.発話トーク番号; .setstr シナリオ${@発話シナリオ}.トーク済フラグ 1; ) # 実際のトーク シナリオ1.1 : \0シナリオ1の1個目のトーク\e シナリオ1.2 : \0シナリオ1の2個目のトーク\e シナリオ1.3 : \0シナリオ1の3個目のトーク\e シナリオ1.4 : \0シナリオ1の4個目のトーク\e シナリオ1.5 : \0シナリオ1の5個目のトーク\e シナリオ1.6 : \0シナリオ1の6個目のトーク\e シナリオ1.7 : \0シナリオ1の7個目のトーク\e シナリオ1.8 : \0シナリオ1の8個目のトーク\e シナリオ1.9 : \0シナリオ1の9個目のトーク\e シナリオ1.10 : \0シナリオ1の10個目のトーク\e シナリオ2.1 : \0シナリオ2の1個目のトーク\e シナリオ2.2 : \0シナリオ2の2個目のトーク\e シナリオ2.3 : \0シナリオ2の3個目のトーク\e シナリオ2.4 : \0シナリオ2の4個目のトーク\e シナリオ2.5 : \0シナリオ2の5個目のトーク\e シナリオ2.6 : \0シナリオ2の6個目のトーク\e シナリオ2.7 : \0シナリオ2の7個目のトーク\e シナリオ2.8 : \0シナリオ2の8個目のトーク\e シナリオ2.9 : \0シナリオ2の9個目のトーク\e シナリオ2.10 : \0シナリオ2の10個目のトーク\e シナリオ3.1 : \0シナリオ3の1個目のトーク\e シナリオ3.2 : \0シナリオ3の2個目のトーク\e シナリオ3.3 : \0シナリオ3の3個目のトーク\e シナリオ3.4 : \0シナリオ3の4個目のトーク\e シナリオ3.5 : \0シナリオ3の5個目のトーク\e シナリオ3.6 : \0シナリオ3の6個目のトーク\e シナリオ3.7 : \0シナリオ3の7個目のトーク\e シナリオ3.8 : \0シナリオ3の8個目のトーク\e シナリオ3.9 : \0シナリオ3の9個目のトーク\e シナリオ3.10 : \0シナリオ3の10個目のトーク\e シナリオ4.1 : \0シナリオ4の1個目のトーク\e シナリオ4.2 : \0シナリオ4の2個目のトーク\e シナリオ4.3 : \0シナリオ4の3個目のトーク\e シナリオ4.4 : \0シナリオ4の4個目のトーク\e シナリオ4.5 : \0シナリオ4の5個目のトーク\e シナリオ4.6 : \0シナリオ4の6個目のトーク\e シナリオ4.7 : \0シナリオ4の7個目のトーク\e シナリオ4.8 : \0シナリオ4の8個目のトーク\e シナリオ4.9 : \0シナリオ4の9個目のトーク\e シナリオ4.10 : \0シナリオ4の10個目のトーク\e シナリオ5.1 : \0シナリオ5の1個目のトーク\e シナリオ5.2 : \0シナリオ5の2個目のトーク\e シナリオ5.3 : \0シナリオ5の3個目のトーク\e シナリオ5.4 : \0シナリオ5の4個目のトーク\e シナリオ5.5 : \0シナリオ5の5個目のトーク\e シナリオ5.6 : \0シナリオ5の6個目のトーク\e シナリオ5.7 : \0シナリオ5の7個目のトーク\e シナリオ5.8 : \0シナリオ5の8個目のトーク\e シナリオ5.9 : \0シナリオ5の9個目のトーク\e シナリオ5.10 : \0シナリオ5の10個目のトーク\e シナリオ6.1 : \0シナリオ6の1個目のトーク\e シナリオ6.2 : \0シナリオ6の2個目のトーク\e シナリオ6.3 : \0シナリオ6の3個目のトーク\e シナリオ6.4 : \0シナリオ6の4個目のトーク\e シナリオ6.5 : \0シナリオ6の5個目のトーク\e シナリオ6.6 : \0シナリオ6の6個目のトーク\e シナリオ6.7 : \0シナリオ6の7個目のトーク\e シナリオ6.8 : \0シナリオ6の8個目のトーク\e シナリオ6.9 : \0シナリオ6の9個目のトーク\e シナリオ6.10 : \0シナリオ6の10個目のトーク\e シナリオ7.1 : \0シナリオ7の1個目のトーク\e シナリオ7.2 : \0シナリオ7の2個目のトーク\e シナリオ7.3 : \0シナリオ7の3個目のトーク\e シナリオ7.4 : \0シナリオ7の4個目のトーク\e シナリオ7.5 : \0シナリオ7の5個目のトーク\e シナリオ7.6 : \0シナリオ7の6個目のトーク\e シナリオ7.7 : \0シナリオ7の7個目のトーク\e シナリオ7.8 : \0シナリオ7の8個目のトーク\e シナリオ7.9 : \0シナリオ7の9個目のトーク\e シナリオ7.10 : \0シナリオ7の10個目のトーク\e シナリオ8.1 : \0シナリオ8の1個目のトーク\e シナリオ8.2 : \0シナリオ8の2個目のトーク\e シナリオ8.3 : \0シナリオ8の3個目のトーク\e シナリオ8.4 : \0シナリオ8の4個目のトーク\e シナリオ8.5 : \0シナリオ8の5個目のトーク\e シナリオ8.6 : \0シナリオ8の6個目のトーク\e シナリオ8.7 : \0シナリオ8の7個目のトーク\e シナリオ8.8 : \0シナリオ8の8個目のトーク\e シナリオ8.9 : \0シナリオ8の9個目のトーク\e シナリオ8.10 : \0シナリオ8の10個目のトーク\e シナリオ9.1 : \0シナリオ9の1個目のトーク\e シナリオ9.2 : \0シナリオ9の2個目のトーク\e シナリオ9.3 : \0シナリオ9の3個目のトーク\e シナリオ9.4 : \0シナリオ9の4個目のトーク\e シナリオ9.5 : \0シナリオ9の5個目のトーク\e シナリオ9.6 : \0シナリオ9の6個目のトーク\e シナリオ9.7 : \0シナリオ9の7個目のトーク\e シナリオ9.8 : \0シナリオ9の8個目のトーク\e シナリオ9.9 : \0シナリオ9の9個目のトーク\e シナリオ9.10 : \0シナリオ9の10個目のトーク\e シナリオ10.1 : \0シナリオ10の1個目のトーク\e シナリオ10.2 : \0シナリオ10の2個目のトーク\e シナリオ10.3 : \0シナリオ10の3個目のトーク\e シナリオ10.4 : \0シナリオ10の4個目のトーク\e シナリオ10.5 : \0シナリオ10の5個目のトーク\e シナリオ10.6 : \0シナリオ10の6個目のトーク\e シナリオ10.7 : \0シナリオ10の7個目のトーク\e シナリオ10.8 : \0シナリオ10の8個目のトーク\e シナリオ10.9 : \0シナリオ10の9個目のトーク\e シナリオ10.10 : \0シナリオ10の10個目のトーク\e シナリオ11.1 : \0シナリオ11の1個目のトーク\e シナリオ11.2 : \0シナリオ11の2個目のトーク\e シナリオ11.3 : \0シナリオ11の3個目のトーク\e シナリオ11.4 : \0シナリオ11の4個目のトーク\e シナリオ11.5 : \0シナリオ11の5個目のトーク\e シナリオ11.6 : \0シナリオ11の6個目のトーク\e シナリオ11.7 : \0シナリオ11の7個目のトーク\e シナリオ11.8 : \0シナリオ11の8個目のトーク\e シナリオ11.9 : \0シナリオ11の9個目のトーク\e シナリオ11.10 : \0シナリオ11の10個目のトーク\e シナリオ12.1 : \0シナリオ12の1個目のトーク\e シナリオ12.2 : \0シナリオ12の2個目のトーク\e シナリオ12.3 : \0シナリオ12の3個目のトーク\e シナリオ12.4 : \0シナリオ12の4個目のトーク\e シナリオ12.5 : \0シナリオ12の5個目のトーク\e シナリオ12.6 : \0シナリオ12の6個目のトーク\e シナリオ12.7 : \0シナリオ12の7個目のトーク\e シナリオ12.8 : \0シナリオ12の8個目のトーク\e シナリオ12.9 : \0シナリオ12の9個目のトーク\e シナリオ12.10 : \0シナリオ12の10個目のトーク\e シナリオ13.1 : \0シナリオ13の1個目のトーク\e シナリオ13.2 : \0シナリオ13の2個目のトーク\e シナリオ13.3 : \0シナリオ13の3個目のトーク\e シナリオ13.4 : \0シナリオ13の4個目のトーク\e シナリオ13.5 : \0シナリオ13の5個目のトーク\e シナリオ13.6 : \0シナリオ13の6個目のトーク\e シナリオ13.7 : \0シナリオ13の7個目のトーク\e シナリオ13.8 : \0シナリオ13の8個目のトーク\e シナリオ13.9 : \0シナリオ13の9個目のトーク\e シナリオ13.10 : \0シナリオ13の10個目のトーク\e # 埋め合わせトーク(ランダム) 埋め合わせトーク: \0埋め合わせトーク1\e 埋め合わせトーク: \0埋め合わせトーク2\e 埋め合わせトーク: \0埋め合わせトーク3\e 埋め合わせトーク: \0埋め合わせトーク4\e 埋め合わせトーク: \0埋め合わせトーク5\e 埋め合わせトーク: \0埋め合わせトーク6\e 埋め合わせトーク: \0埋め合わせトーク7\e