[CardWirth] 「複数PCの名前を一度に表示するサンプル」 1.00
- 2018/10/18 23:29
- カテゴリー:CardWirth, 作ってるモノ, シナリオ
- タグ:CWシナリオ@サンプル&リソース
2~3日ほど前。
だらだらとTwitterの画面を眺めていた自分の目の前を、複数PCの名前を1つのメッセージに云々……というツイートが流れていきました。
ぼんやりしていたので、詳細も、どんな流れだったかも思い出せません。半分寝ぼけた頭で、そう言えば昔は出来なくて困っていた人がいたなと、考えました。
今はNextで指定番号のPC名をメッセージに表示する特殊文字 $??Player1~6$ があるし、ステップの「特殊文字を展開」機能と合わせて使えば簡単です。
PyでもWsn.2で $??Player1~6$ によるPC名の表示ができるようになったし、ステップの特殊文字展開もあるので、Nextと同じやり方で全く問題ありません。
たぶん、以前は無理だったが簡単になったとかいう話だったんだろうな……。
と、そこで思い出したのが、HANDさんの「バージョン混在サンプル」です。
ひょっとして、NextやWsn.2対応エンジン(Py2(など))では一度に複数人の名前を呼ばせつつ、それ以外では良い感じに誤魔化した代替セリフを入れる、みたいなことができるのじゃなかろうか。
そう思ってやってみた結果、今回考えた方法では無理でした。
Next仕様との混在は可能でしたが、Wsn.2仕様を混在させた部分は上手く動きません。
【結論】
- Nextだけ複数PCの名前を呼ぶCW1.50・Next・Py三種対応シナリオを作ることは可能。
- Pyでもやりたければ、今のところ専用シナリオ(WSN形式)一択?
以上です。
最初にどのエンジンでも動く複数PCの名前を一度に表示するサンプルを目指して作り始めたので、そのままの名前で出してますが、今の内容では、Wsn.2で他の仕様との混在が上手くいかない例のサンプルと言った方が正確かもしれません。Next仕様との混在例としてならご利用頂けます。
※※※
上手く動かないというのは、どういうことかというと:
テスト用として作成したサンプルでは、Wsn.2対応エンジンではPackageフォルダ内にあるXML形式のパッケージが読み込まれますが、パッケージ内のセリフに含まれる文字列 $??Player1~6$ は、特殊文字として扱われません。そのため、セリフコンテントに「$??Player1$」と書いてあれば、PCの名前ではなく、そのまま「$??Player1$」と出力されます。
これは、バージョン2以降のPyエンジンが $??Player1~6$ を特殊文字として扱うかを判断する際、シナリオのサマリに書き込まれているシナリオデータバージョンを見ているためです。
XML形式のパッケージにもデータバージョンの情報は入っていますが、シナリオの土台がデータバージョン4のためサマリからシナリオのデータバージョンが読み取れず、Wsn.2シナリオと解釈されません。
ざっと見た感じでは、他にも、独自のシステム称号(@効果対象 など)周りがシナリオ側のデータバージョンチェック対象になっているようでした。クラシック形式やWsn.0、Wsn.1でも入力できてしまう部分に対しての、安全策なんでしょうかね。
一方で、Wsn.2対応ツールでXML形式で編集中でないと使えないものに関してはチェックが無いようです。簡単なところでメッセージのセンタリングを試してみたのですが、他の仕様と共存させても問題なく動きました。
(※混在ができない例外サンプルも作っています。良かったらどうぞ。)
うーん。意外な落とし穴が。
ともあれ、やってみた結果を晒します。
複数PCの名前を一度に表示するサンプル ver.1.00
→DLはこちら