第二十一回

アドベンチャーパート

システム変数

 

前回はアドベンチャーパートのアイコン設定や

ストーリーへの分岐などを紹介しました

今回は分岐で使うシステム変数を

キャラごとに桁数で分けることで

使う変数を少なるするスクリプトを

紹介していきたいと思います

 

変数の数字は-3万~+3万まで設定できます

とは言え勝利回数などの分岐に使う場合は

一勝すれば1代入 二勝なら2代入と

一桁だけ使う場合が多いかと思います

そうすると限りある変数を分岐の数だけで使用することになるので

これを

Aキャラに一勝なら+1 Bキャラに一勝+10

AキャラとBキャラに一勝なら+11と

桁を分けてカウントする方法をすれば

変数が5桁あるので一つの変数で

5キャラ分カウントすることもできます

しかしながら変数を+や-する設定はわりと簡単に行えますが

今どの桁にいくつの数字が入ってるかと判別するのは

スクリプトを組むことになるため結構めんどくさいです

今回は割と簡単に桁を判別できるスクリプトを紹介します

 

ざっくりと説明すると

判別したい桁より上を引き算して0にして

判別が終わったら引いた分を足して元に戻すというものです

たとえば 23456という数字の百の桁を判別したいとき

ます万の桁の2万を引いて 千の桁の3千を引きます

残った456の数字は400以上で500以下という設定で

百の桁に4の数字が入ってると判別できます

最後に引いた数字を元に戻すという感じです

 

今回紹介するスクリプトは最大百桁で一の桁を判別するものです

カウントは0~2を想定していて

数字の最大は222になってます

百桁で解説するのは桁が増えた場合でも

コピペで簡単に対応できるため

最低限必要なスクリプトを含む百桁で紹介とさせてもらいます

 

ではスクリプトの解説です

まずは百の桁を取り除くスクリプトから入ります

今回は判別なので「SG」でどこからか飛んでくることになります

最初のの部分で百の桁にシステム変数が幾つ入っているか判別して

青の部分で入っていたシステム変数をマイナスして

タスク変数の一の桁に引いた数字を足します

の部分は変数が0だった場合にここへきて

そのまま判別を終了違うスクリプトに飛びます

の部分での分岐は主に○○以下だったを使います

最初の[V]では±0と同じだったらの分岐を入れて

該当する場合は緑に飛ばします

次に対応するシステム変数が100以下だったらを設定します

これに該当する場合は0~99になるので

百の桁は0ということになり

あとで組む予定の「十の桁の判別」のスクリプトにとばします

3つ目の[V] では200以下だったらを設定します

これに該当するときのには100~199なので

百の桁を100マイナスする設定の青に飛ばす予定にして

青が完成後飛び先を設定します

赤最後の[SG]の設定は今回は変数の最大が222なので

この設定まで来てる場合200以上になっていることになり

百の桁を200マイナスする設定の青に飛ばします

カウントする数字が3や4などの場合は

最大数が上がるので[SG]の前に[V]で分岐を増すことで

対応する変数を増やすことができます

 

青の部分は数字処理を担当してます

の部分で変数を判別しているのでここで

マイナスなどしていきます

100~199と判別されてた場合は

システム変数をマイナス100して

その次の[V]で使ってないタスク変数に

システム変数で引いた数字の百の桁の数字と同じ数字を

タスク変数の一の桁に入れます

ここでは100引いてるので1をタスクに入れます

タスクには処理した順番で一の桁 十の桁 百の桁と

入れていってください

最大が千の桁や最大が十の桁の処理でも処理する順番に

一の桁 十の桁 百の桁を順番に

入れるようにしてください

そして[SG]で次に設定する予定のスクリプト

「十の桁の判別」にあとでつなげます

  

で200以上と判別された場合は

システム変数を200マイナスして

タスクの一の桁に2を入れます 

そして[SG]でこちらも次に設定する予定のスクリプト

「十の桁の判別」にあとでつなげます

300以上400以上の場合でも数字を変えて同じように組んでください

   

続いて十の桁を取り除くスクリプトです

スクリプトの内容はほぼ百の桁の処理と同じになってます

並べるとよくわかりますね

同じ部分はコピペでOKです

設定時にとび先を間違えないようには注意してください

 

では「十の桁の判別」のの解説です

最初の[V]では0と同じならを入れます

こちらの飛び先はこの後つくる

「一の桁の判別」に設定してください

次の[V]では

10以下ならを設定して

該当時にはこちらも「一の桁の判別」に飛ぶ設定します

3つ目の[V]で20以下の場合はを設定し

該当時の飛び先は10マイナスする設定の青のスクリプトに

次の[SG]では20マイナスする青のスクリプトに飛ばします

 

次は青の設定です

こちらもで判別した変数分

システム変数をマイナスしていきます

20以下に該当して飛んできた場合は

システム変数をマイナス10し

そしてタスクにプラス10します

2回目のタスクへの処理なので2桁目を使います

そして[SG]でこの後つくる

「一の桁の判別」にとび先を設定ます

の[SG]から飛んできた場合は

20以上なのでシステム変数をマイナス20して

タスクにプラス20して

「一の桁の判別に飛ばします」

 

そして「一の桁の判別」です

今までのスクリプトは数字を消すための処理でしたが

ここでは一の桁にどの数字が入っているかで分岐することになります

分岐にはキャラ変数を使っていき

このキャラ変数が分岐の設定の主な基準に

なっていきます

まずの部分です

最初の[V]は変数が0と同じならの設定を入れます

0の場合はカウントされてない状況ということになります

ここではあとで設定する「十の桁復元」に飛ばしてますが

0の場合でもキャラ変数を入れる設定を組んでも問題ありません

次の[V]ではシステム変数が1と同じならに設定して該当した場合

青の部分で1の時に対応した変数を入れます

[SG]まで行った時は変数が2なので

こちらも青に飛ばして対応する変数を入れてください

 

そしてこの判別は桁でキャラを分けてますので

十の桁を判別などの場合もあります

その場合は最初の[V]は0とおなじだったら設定になりますが

2つ目の[V]では10以下だったらを入れます

この場合は復元に飛ばしてください

そして3つ目にもう一つ[V]を設定して

20以下ならを作り該当した場合は

10~19なので10の桁には1の数字が入っていることが分ります

そこで青では10の桁の数字が1の場合の処理を行ってください

百の桁の判別などでも桁が増えるだけなので

0を追加して桁数を増やしてください

3、4、5とカウントが増える場合は

[SG]の前に[V]で分岐を増やして対応数をふやしてください

 

では青の処理です

青では赤で判別したシステム変数に対応したキャラ変数を入れます

数字は何を入れてもOKなので分岐で分かりやすいものを

他と被らないように設定すればいいです

キャラ変数を入れた後の[SG]の飛び先は

この後設定する「十の桁復元」に飛ばします

 

続いて「十の桁復元」のスクリプトに入ります

こちらも形は今までとほぼ同じです

今度は今までプラスしてきたタスクを判別してその数字分

システム変数をプラスしていきます

ではの部分の説明に入ります

まず最初の[V]では対応のタスク変数が0と同じだったらを設定して

該当時の飛び先はこの後つくる

「百の桁の復元」に飛ばします

2つ目の[V]ではタスク変数が

10以下だったらを設定します

これに該当した場合も「百の桁の復元に飛ばします」

ここでのタスク変数の判別は

一番大きな桁数を判別してください

今回は百の桁から始めてますが

千の桁から始めた場合はタスクには3回数字が足されてるので

100の桁から判別することになります

 

そして3目の[V]では

タスク変数が20以下だったらを設定して

該当した場合はタスクが10~19なので

青に飛ばした後タスクをマイナス10してシステム変数をプラス10します

最後の[SG]では20以上が該当になるのでこちらも青のに飛ばす設定をします

 

次は青の設定です

青ではタスク変数が20以下に該当して飛んできた場合は

タスクをマイナス10してシステム変数をプラス10します

そして[SG]で次に作る予定の「百の桁の復元」に飛ばします

の[SG]から飛んできた場合はタスク変数が20以上なので

タスク変数をマイナス20してシステム変数をプラス20します

こちらも「百の桁を復元」に飛ばしまて完了です

 

そして最後は百の桁の復元です

復元処理では最後の段階になると

タスクが一桁になるので

処理が少し変わります

まずはの処理です

最初の[V]ではタスクが0と同じ場合だったらに設定して

該当した場合は復元処理が完了してるので

ストーリーの分岐処理など判別完了後に飛ばす予定の

スクリプトに飛ばしてください

次の[V]ではタスク変数が1と同じだったらに設定して

該当する場合はタスク変数をマイナス1して

システム変数をプラス100してください

[SG]の時はタスク変数が2になるので

こちらはタスク変数をマイナス2してシステム変数をプラス200してください

どちらもプラスの処理が終わったら

判別終了後に飛ばす予定スクリプトにとび先を設定してください

 

 

これで判別のスクリプト解説は終了です

今回は最大百の桁の内の一の桁を判別するスクリプトの説明を書きました

判別のスクリプトは

はじめに飛ぶスクリプト 途中に処理のスクリプト 判別のスクリプト

の3パターンになってます

最大百の桁なので百の桁を判別する場合は

いきなり 判別するスクリプトの設定を組みます

最大百の桁で十の桁を判別したい場合は

はじめに飛ぶスクリプト 判別するスクリプト

の2パターンになります

最大が千や万の桁の場合は

途中に処理するスクリプトの段を増やしてください

復元はマイナス処理した回数だけ作ってください

 

今回は変数分岐で使うシステム変数を節約するためのスクリプトでした

アドベンチャーパートはあくまでアクセントなので

システム変数を使い過ぎで本編の格闘で

やれることが少なくなっては元も子もないですからね~

出来るだけ節約しておきたいとこです

この方法を使えばアドベンチャーパート以外でも

変数を節約したりもできます

スクリプトの説明では

結構同じようなことを書いてましたね

かなりコピペが効くので

段を多くしたり新たに他の桁の判別処理などでも

楽に進められると思います

一応弱点もあります

それは[I]の画像呼出から次の[I]に行くまでに

[SG]や[V]などで飛ぶ回数が250辺りを超えると

強制的にスクリプトが終了してしまうというものです

今回のスクリプトでは一つあたり2回なので

最大万の桁から初めて1の桁を処理しても

飛ぶ回数は20回あたりですが

そのまま[I]を踏まずに他の桁の処理や

違う桁の処理を行っていると

飛ぶ回数の上限をオーバーしてしまうこともあるので

注意してください

 

今回も長めになってしまいました

アドベンチャーパートのこれで大体解説も完了です

シルフルでもキャラの立ち絵もそろって組み込み開始です

これから新たに追加したり

思いついたりしたことがあれば書いていきたいですね~

ゲームの方はあとはほぼ組み込みだけなので

ドンドンすすめていきたいとこですね~

次回は何を書くかまだ考えてませんが

組み込みのさいで思いついたことがあったら書いていきたいですね~

 

 

inserted by FC2 system