忍者ブログ

里々でイベントの再読機能を実装してみた

(※この記事は拙作「電子世界の虚像」の辞書の中身について触れています。ご注意ください)
イベントの再読機能について、ツイッター上でアンケートを取ってみたがある。最終的には投票者35票と、界隈の規模を考えれば決して少なくはない投票が集まった、と思う。
結果を見ると「日付イベントも好感度系/起動回数系イベントも欲しい」層が存外多く、また「好感度系/起動回数系イベントだけでも欲しい」層が多かったので、テスターにデータを渡していた当時、段階的に実装に踏み切ってみた。
さて、問題はどうやって実装するかである。
「電子世界の虚像」では初回起動イベントから選択肢が表示されて、会話が多少分岐するような作りになっている。これを、初回選択した方だけ再読可能にし、両方が再読可能な状態にさせたくはない、という思いが私にはあった。
つまり、再読機能が実行されている時のみ、初回起動で選択した方を再読できるようにしたい。その仕組み作りから始まった。

まず再読用機能のトークを作る。ここから選択して、飛ばせるようにする。まあ適当に「*再読機能」とかにしておく。
「*再読機能」は\b[2]で大バルーンを表示するようにもしておく。いらなかったら後で外せばいい。
さて。再読機能を実行している時を判別するのに便利なのは変数である。「電子世界の虚像」では「回想」変数が1で実行している、という事にする。
では、再読機能を実行した際に、共通の「回想」変数を1に書き換えて、イベントトークに飛ばすようにしよう。
この共通の「回想」変数を1にし、イベントトークに飛ばす部分を「*再読開始処理」にする。また、「*再読機能」では\q[イベントトーク名,再読開始処理]というボタンを作る。

そして(選択ラベル)でイベントトークに飛ぶようにする。つまり記述はこうなる。

*再読開始処理
$回想【タブ】1
>(選択ラベル)

とりあえずこれで、共通の「回想」変数を設定し、選択ラベル名と同じトークに飛ばすという処理ができた。
変数「回想」を0にし、イベント回想機能に戻る「*再読終了処理」も作っておこう。

*再読終了処理
$回想【タブ】0
>再読機能

そして、今回再読機能を実装したいイベントトークの終わりに、「回想」変数が1の時に「*再読終了処理」にジャンプする処理を入れる。つまり下記の通り。

>再読終了処理【タブ】(回想)==1

これでひとまず「読んでないイベントでも何でも再読できる機能」は完成した。初回起動で分岐しなかったり、分岐してても両方読んでもらっていい、という人ならばここまでで動くと思われる。

さて、次に、今回私が実装したい「初回起動時に選択した選択肢のみ選べるようにする部分」を作ろう。
まずは選択肢後の分岐でイベント再読用の変数を1にするようにしよう。これでどちらの選択肢を選んだかを判別する。「初回起動イベント再読A」「初回起動イベント再読B」ぐらいにしておき、両方の選択肢にそれぞれ割り当てる。

*初回起動選択肢A
$初回起動イベント再読A【タブ】1
:トーク内容~
>初回起動選択肢後トーク

*初回起動選択肢B
$初回起動イベント再読B【タブ】1
:トーク内容~
>初回起動選択肢後トーク

次に、再読用の選択肢を用意する。この選択肢へのジャンプは本来の選択肢直前に入れて、「回想」関数が1の時だけジャンプするようにしておく。つまり記述は以下の通りになる。

(イベントトーク)
>初回起動再読用選択肢【タブ】(回想)==1
(本来の選択肢A)
(本来の選択肢B)

そしてwhenlist関数(まあifでもwhenでもiflistでも機能するはずなので良いと思うのだが、私は何故かこの関数しか信用できていない)を用いて、先ほど割り当てたイベント再読用の変数が1の時だけ選べるようにする。

*初回起動再読用選択肢
:\![*](whenlist、(初回起動イベント再読A)==、1、\q[選択肢A,初回起動選択肢A]、選択肢A)
\![*](whenlist、(初回起動イベント再読B)==、1、\q[選択肢B,初回起動選択肢B]、選択肢B)

これで初回に選んだ方だけを選べるようになった。これでちゃんと再読できる機能が備わった、と言えるだろう。拙作の再読機能はそういう風にして完成した。


さて、ここでもう少し進んでみたい。拙作を起動して再読機能を見てくれた人は分かるやもしれないが、「読んでないものは再読機能で選べない」仕様になっている。初回起動ならば全員が見るものなので、先ほどのボタンの状態から何もしなくても良いだろう。しかし起動回数や好感度で発動するタイプのイベントなら、「再読機能」の名の通り、読んでないものは表示されないようにしたい。どうすればいいか。
例えば「起動回数イベントその1」を例に取ろう。これを再読機能のリストに入れたいという事は、「起動回数イベントその1」そのものは実装してある事だろうと思う。そこで、再読用の変数をまた入れよう。「起動回数イベントその1再読」とかにしておこうか。これを先ほどのように「起動回数イベントその1」のトークに入れる。

*起動回数イベントその1
$起動回数イベントその1再読【タブ】1
:トーク内容~

次に、「*再読機能」の中に、先ほどの「*初回起動再読用選択肢」のように「再読用の変数が1ならばボタンが表示され、そうでない場合は未読である事を伝える」感じで書く。つまりこうである。

*再読機能
:\![*](whenlist、(起動回数イベントその1再読
)==、1、\q[起動回数イベントその1,再読開始処理]、未読イベント)

これで「起動回数イベントその1」が未読の場合には選べず、読んでる場合に開放される仕組みになる。後は変数の設定のミスさえ起こさなければ、また複雑な処理を仕込まなければ、最低限の再読機能としての役割を果たせることかと思う。
PR
Comment
name
title
color
mail
URL
comment
pass   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
コメントの修正にはpasswordが必要です。任意の英数字を入力して下さい。
Clear