ExpeirnecedPlugin 1. はじめに ExperiencedPluginは、「現在までに通過したラベル」を保存し、後から そのラベルを通過したかどうか、何回通過したかを調査可能にする KAGプラグインである。 通過記録は「現在のセーブデータで」と「今まで全てのセーブデータで」の 二つに分けて記録され、双方利用可能である。 kag.mainConductor.onLabel()に寄生してラベル情報を保存するので、 かなりのワルと巷で評判気味。ナイフみたいに尖って、触るもの皆(略)。 2. 使用例 最初に一回だけ、KAGスクリプト(例えばfirst.ks)の頭で以下を実行。 [call storage="ExperiecedPlugin.ks"] そうすると、以下のように各機能が使用可能になる。 ; ラベル"*udetatefuse"を通過したことが無ければ「トゥーバッド!」と表示 [if_not_experienced target="*udetatefuse"] トゥーバッド![p] [endif] ; 全セーブデータ中一度でもラベル"*udetatefuse"を通過してれば「グレェト!」と ; 表示する [if_experienced_once target="*udetatefuse"] グレェト![p] [endif] ; ラベル"*udetatefuse"を通過したことがあれば"*fukkin"へジャンプ [jump target="*fukkin" cond="experienced('*udetatefuse')"] ; ラベル"*udetatefuse"の通過回数を表示 ラベル*udetatefuseは[emb exp="experienced('*udetatefuse')"]回通過済。 ; 現在の位置を通過したことがあれば「二回目以降」と表示 [if_experienced] 二回目以降[p] [endif] 3. KAGタグリファレンス [if_experienced target=] 説明: ラベルを指定し、そのラベルを「このセーブデータで」通過したか どうかを判断する。[if]タグと同じように使うので、最後に[endif] が必要。ラベルは、全シナリオで一意である必要があり、別 ストレージに同名のラベルがあった場合は、片方通過すると両方 通過したことになるので注意。 また、複合条件(「*label_aと*label_bを両方通過したとき」など)は 指定できない。後述するtjsを使うこと。 引数: target=ラベル 調査したいラベルを指定。 ラベルが省略された場合、「現在の位置」をあらわし、 初めての通過の時のみ偽になる。 使用例: [if_experienced target="*play_with_akane"] あかねと遊んだことがある。 [endif] [if_not_experienced target=] 説明: if_experiencedの逆。「このセーブデータで通過していなければ」。 引数: target=ラベル 調査したいラベルを指定。 ラベルが省略された場合、「現在の位置」をあらわし、 初めての通過の時のみ真になる。 [if_experienced_once target=] 説明: if_experiencedと同じだが、対象は「今までの全てのセーブ データで」。かつて一度でも通過していれば真となる。 引数: target=ラベル 調査したいラベルを指定。 ラベルが省略された場合、「現在の位置」をあらわし、 初めての通過の時のみ偽になる。 [if_not_experienced_once target=] 説明: if_not_experiencedの逆。「全てのセーブデータで一度も通過して いなければ」。 引数: target=ラベル 調査したいラベルを指定。 ラベルが省略された場合、「現在の位置」をあらわし、 初めての通過の時のみ真になる。 4. TJS関数リファレンス experienced("ラベル") 説明: このセーブデータ中での該当ラベルの通過回数を返す。通過して いなければ0。ラベルを省略すると、experienced_here() と 同じ動作をする。 experienced_once("ラベル") 説明: 全セーブデータ中での該当ラベルの通過回数を返す。通過して いなければ0。ラベルを省略すると、experienced_once_here() と 同じ動作をする。 experienced_here() 説明: このセーブデータ中での現在の位置の通過回数を返す。 初めての通過なら0(1ではないことに注意)、次の通過は1、 その次は2、のように。 experienced_once_here() 説明: 全セーブデータ中での現在の位置の通過回数を返す。 初めての通過なら0(1ではないことに注意)、次の通過は1、 その次は2、のように。 5. 複合条件の場合 複合条件("*label_a"と"*label_b"を両方通過したことがあればのような)の 場合、以下のようにTJS式を使えば指定できる。 [if exp="experienced('*label_a') && experienced('*label_b')"]