So-net無料ブログ作成

▼ラノベとテクノを愛するfuwafuwaがノベルゲームを作っています。あと日常のことなども

                                                                                                                                                                                                  spfd-banner.png
「未来探偵ソラとピヨちゃん」本サイト作りました。体験版やあらすじ、ショップ委託やDL販売、イベント参加予定など、入手情報はこちらからご覧ください

☆Nscripter ブログトップ

Nscripterで逆転裁判ふうのシステムを作る方法 [☆Nscripter]

expop100-3F.png
このたび
「エクストリーム取り調べ!ソラとピヨちゃん」
で逆転裁判ふうのシステムを作りました。

ダンガンロンパやいろいろなゲームでも取り入れられた、矛盾にツッコミを入れる謎解きシステムですが、これをどうやってNscripterでやるのか? という話です。

Nscripterはデフォルトで、文末のクリック待ちの時には割り込み判定がかけられるようになっています。
つまり、スクリプトの¥や@のところでクリック待ちをしているときに、サブルーチンに飛んでいろんな処理をさせることが出来ます。
これを利用したのが、システムカスタマイズで、たとえばデフォルトでは文章送りにはマウスクリックしか使えないところを、マウスホイールで出来るようにしたりできます。
(前作「未来探偵ソラとピヨちゃん」でも、いろいろなサイト様を参考にしながらここまでは実現していました)
ここのサブルーチンに、スプライトボタンを押すと反応する、という仕組みを入れてやると、アイテムのボタンをつけることが出来ます。
このようなボタンをつけることに関しては、Nscripter-tips様のサイトが詳しいです。
http://sorejyadamedarou.sakura.ne.jp/nscripter/system_customize2.htm

で、ここの*text_lb のサブルーチンの中に、スプライトボタンを押したらフラグを立て、同時に文章送りをするという処理を入れておきます。
たとえば、アイテムを6個用意して、%201から%206という変数にしておき、クリックしたらフラグが立つ(=%201に1を代入する(mov %201,1))、そして同時に文章送りをする、みたいにします。
そして本文のほうでは、犯人の会話をループさせます。そのループの中に、フラグが立っていたら脱出という判定を入れます。
以下はスクリプトの例です。(本当は¥は半角なのですが、ブログの仕様で全角で書いています)

*kaiwa1
【シイタケヤマ】
「おれ何もやってないし、何も身に覚えがないよ。『怪しいところ』なんか『神に誓って絶対にひとつもない』から帰してくれよー」¥
if %201=1 gosub *machigai0101
if %202=1 gosub *machigai0101
if %203=1 gosub *machigai0101
if %204=1 goto *seikai0101
if %205=1 gosub *machigai0101
if %206=1 gosub *machigai0101
goto *kaiwa1
 
文章の後の「¥」で、クリック待ちになり、その間サブルーチンに飛びます。
サブルーチンでアイテムのアイコンを押すと、対応する変数%201から%206のいずれかに1が代入され、「ボタンを押した」というフラグが立ちます。
そして同時に文章送りをさせますので(つまり、デフォルトでマウスを左クリックしたのと同じ処理)、フラグが立ったまま¥の次に戻ってきます。
そうすると、if文の羅列で、どのフラグが立ってるかを調べます。
上記のスクリプトでは4番目のアイテムが正解ということで、%204のフラグが立っている場合に、*seikai0101という分岐に飛びます。それ以外は、*machigai0101に飛ばされます。
*machigai0101では、間違い用の会話を表示させた後、returnで戻ってきます。
アイテムのボタンを押さずに普通に文章送りをしたときには、goto *kaiwa1で、会話の冒頭に戻り、正解のアイテムを突きつけるまで、証言がループする構造です。

おおまかにこのような仕組みにすることで、証言にアイテムを突きつけることで謎解きをする、というシステムが出来ます。
しかし、「エクストリーム取り調べ!ソラとピヨちゃん」では、以下のような仕組みも備わっているため、すごくややこしいです。

・アイテムをクリックすると、より詳しい説明の画像が出る
・説明の画像を「閉じるボタン」が出る
・説明画像が出てる間も、メインウインドウの文章はクリックで送ることが出来る
・説明の画像が出ているときに、「つきつけるボタン」を押すことで突きつけることが出来る
・「つきつけるボタン」はシナリオの進行で出たり消えたりする
・シナリオの進行度によって、アイテムのアイコンが増減する

これを、変数でフラグを立てて、if 文で判定して、というを何重にもやることで実現しています。作った本人もわけが分からなくなるほどです。本職のプログラマの方ならもっとスマートにいくのだと思いますが・・。

以上、個人的メモに近い覚え書きでした。
本当は余所様のサイトのようにスクリプトの実例を載せられればいいのですが、人に見せられるようなきれいなスクリプトではない(=本人が見ても謎の部分がある)ため、大まかな仕組みの解説となりました。

改訂版Nscripterオフィシャルガイドの正誤表 [☆Nscripter]

初心者はまずハウツー本だろと思い、「改訂版Nscripterオフィシャルガイド」という本を見ながら作ってるのですが、しかしこの本、誤植があります。
本のとおりに打ち込んでるのにうまく動かないよ~;;と悩んだ末に、
ネットで調べたら本のほうが間違ってた、ということがありました。
こういう場合、出版社とか、親切な誰かがネット上に正誤表作ってくれるんじゃないかと思ってぐぐったのですが、探し方が悪いのか見当たらず。
とりあえず、そのうちどこかの誰かの役にも立つかもしれないと思い、せっかくなので自分の見つけた分を書いておきます。

・正誤表

p56 lと1の間違い
誤 :1;
正 :l;

p98,99,100,101 lと1の間違い
誤 ":1/3,
正 ":l/3,

p181 ,がいらない
誤 print,2
正 print 2


また見つけたので追記
p42 例文の間違い
select
"表示したい文字",移動先ラベル名,  ←こっちの行末のカンマはいるけど
"表示したい文字",移動先ラベル名,  ←こっちの行末のカンマはいらない。少し先を読むと理由が分かる





手元に本があるとぺらぺらめくれていいのですが、ネットのハウツーサイトと併用するのがいいのかもしれません・・。

NScripterオフィシャルガイド―だれでもかんたん!ノベルゲームのつくりかた

NScripterオフィシャルガイド―だれでもかんたん!ノベルゲームのつくりかた

  • 作者: 畔田 英明
  • 出版社/メーカー: 秀和システム
  • 発売日: 2007/12
  • メディア: 単行本



☆Nscripter ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。