FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2018/8/29 進捗

みなさん、こんばんは。
ネコタです。

最近は雨で、涼しいですね。このまま夏が終わってくれないかな。
さて、今日のツクールMV制作の進捗ですが、コラボイベント用ゲームのダンジョンに宝箱を設置するイベントを組んでいました。

コラボイベントは、アツマールに投稿なので、できるだけマップを多く使いたくない。そして、マップを使いまわすとなると、オブジェクトの配置をどのようにして変えていくかが問題になるんです。

というわけで、宝箱をあっちこっちに自動で移動させるイベントを組んでいたわけでした。

ではでは、今日はこの辺で。


pixiv FANBOX
https://www.pixiv.net/fanbox/creator/19846130
↑こちらもよろしくお願いします。
スポンサーサイト

ゲーム制作日記<55> 簡易シンボルエンカウント

op.png



みなさん、こんにちは。
ネコタです。



いやぁ、暑いですね。というかもう、熱いですね。
溶けそう。

そんな中、なかなか更新できない日が続いておりますが、今日は暇を見つけて更新。


で、今回も恒例の『 コモンイベントで作るちょっとしたシステム 』 のご紹介でございます。


今回ご紹介するのは、『簡易シンボルエンカウント』です。

シンボルエンカウントは過去にも作ってみました(http://nekotaminontan.blog.fc2.com/blog-entry-31.html)が、結構複雑な内容だったと思います。

そこで、今回はもっと機能を簡素に、そして手軽にシンボルエンカウントを導入できる方法は無いかを模索してみました。




仕様


今回紹介するシンボルエンカウントの特徴ですが、以下の機能を備えています。

・単純にプレイヤーへ近づきます。触れたら戦闘開始です。

・倒したら、その場で30フレームかけて消えます。300フレーム(5秒)後に、同じところに出現します。出現時には音が出ます。

・逃走した場合、その場で180フレーム(3秒)半透明になって停止します。3秒経つと元に戻って索敵を開始します。

・敵はプレイヤーの平均レベルによって自動的に選択されます。シンボルの見た目とはあまり関係ありません。その代わり、コピペだけでどこのダンジョンにも配置が可能です。


(拡張機能)
・索敵ページ、戦闘ページ、勝利後処理ページ、逃走後処理ページの4つに分けて作成しているため、それぞれのページで改変可能です。やろうと思えば、索敵ページを編集したり、移動を制御するイベントを設置することで高度な索敵を可能にすることもできます。

・コモンイベントの内容を編集することで、もっと細かなグループ選択を設定できます。

・コモンイベントの内容を編集することで、出現時や消失時の演出を設定できます。


今回の仕様は以上となります。
一見それなりの機能がありそうですが、内容は大分簡単です。


それでは、まずは準備するものを確認していきましょう。



準備するもの


【必須】
・イベント
・コモンイベント ×4
・変数 ×3(+1)


【推奨】
・創作工房春巻様のデータベースサンプル・ネオ


今回のブログ公開にあたり、創作工房春巻様よりデータベースサンプル・ネオの紹介許可を戴いております。このデータベースサンプル・ネオですが、アクターやエネミーデータ、アイテムや装備、マップデータといった基本的なデータベースが整っており、中編規模の作品をすぐに作れるように用意してあるという優れものです。

そして、今回のシンボルエンカウント作成は、これをそのまま使っておりますので、真似していただければすぐにシンボルエンカウントを導入できるようになっております。

ぜひ、併せてご利用くださいませ。



作り方


それでは、イベントの内容と作り方を説明していきます。まずは、コモンイベントから作っていきます。


コモンイベント
tc39-006.png


コモンイベントは全部で4つ。それぞれの役割ですが、

・【戦闘】トループ決定・・・敵のIDを振り分ける。
・【戦闘】平均レベル算出・・・パーティの平均レベルを算出する。
・【エフェクト】ゆっくり消失・・・イベントの消失演出の処理。
・【エフェクト】ゆっくり出現・・・イベントの復活演出の処理。

となっています。

では、順番に説明していきます。


コモン:【戦闘】トループ決定

≪実行内容≫
条件分岐:【仲間】平均レベル ≤ 4
変数の操作:#0011 【戦闘】トループID = 乱数 2..7
ラベルジャンプ:①

分岐終了
条件分岐:【仲間】平均レベル ≤ 8
変数の操作:#0011 【戦闘】トループID = 乱数 11..16
ラベルジャンプ:①

分岐終了
条件分岐:【仲間】平均レベル ≤ 12
変数の操作:#0011 【戦闘】トループID = 乱数 20..25
ラベルジャンプ:①

分岐終了
条件分岐:【仲間】平均レベル ≤ 16
変数の操作:#0011 【戦闘】トループID = 乱数 29..34
ラベルジャンプ:①

分岐終了
条件分岐:【仲間】平均レベル ≤ 20
変数の操作:#0011 【戦闘】トループID = 乱数 38..43
ラベルジャンプ:①

分岐終了
条件分岐:【仲間】平均レベル ≤ 24
変数の操作:#0011 【戦闘】トループID = 乱数 47..52
ラベルジャンプ:①

分岐終了
条件分岐:【仲間】平均レベル ≤ 28
変数の操作:#0011 【戦闘】トループID = 乱数 56..59
ラベルジャンプ:①

分岐終了
条件分岐:【仲間】平均レベル ≤ 32
変数の操作:#0011 【戦闘】トループID = 乱数 65..70
ラベルジャンプ:①

分岐終了
条件分岐:【仲間】平均レベル ≤ 36
変数の操作:#0011 【戦闘】トループID = 乱数 74..79
ラベルジャンプ:①

分岐終了
注釈:パーティ平均レベルが 37 以上の時
変数の操作:#0011 【戦闘】トループID = 乱数 83..88
ラベル:①


今回、使用しております創作工房春巻様のデータベースサンプル・ネオにおける敵グループデータでは、レベルごとにグループ作成されております。上記コモンイベントの内容はそれに合わせてIDの振り分けを行っています。

内容ですが、算出した平均レベルによって敵グループIDをランダムに選択しています。なお、敵グループにある「ミミック」は宝箱の罠として利用することを考慮して選択肢から除外させていただいてます(ID:60-61)。



コモン:【戦闘】平均レベル算出

≪実行内容≫
変数の操作:#0012 【仲間】レベル = 0
変数の操作:#0013 【仲間】人数 = 0
条件分岐:ハロルドがパーティにいる
変数の操作:#0012 【仲間】レベル += ハロルドのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:アレンがパーティにいる
変数の操作:#0012 【仲間】レベル += アレンのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:テレーゼがパーティにいる
変数の操作:#0012 【仲間】レベル += テレーゼのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:リョウがパーティにいる
変数の操作:#0012 【仲間】レベル += リョウのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:ヴァイスがパーティにいる
変数の操作:#0012 【仲間】レベル += ヴァイスのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:フレデリックがパーティにいる
変数の操作:#0012 【仲間】レベル += フレデリックのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:エリザがパーティにいる
変数の操作:#0012 【仲間】レベル += エリザのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:セリーヌがパーティにいる
変数の操作:#0012 【仲間】レベル += セリーヌのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:マーシャがパーティにいる
変数の操作:#0012 【仲間】レベル += マーシャのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:ルキウスがパーティにいる
変数の操作:#0012 【仲間】レベル += ルキウスのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:ウェンディがパーティにいる
変数の操作:#0012 【仲間】レベル += ウェンディのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:ノエルがパーティにいる
変数の操作:#0012 【仲間】レベル += ノエルのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:イリアがパーティにいる
変数の操作:#0012 【仲間】レベル += イリアのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:ダグラスがパーティにいる
変数の操作:#0012 【仲間】レベル += ダグラスのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:アヤメがパーティにいる
変数の操作:#0012 【仲間】レベル += アヤメのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:レオナがパーティにいる
変数の操作:#0012 【仲間】レベル += レオナのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:オリバーがパーティにいる
変数の操作:#0012 【仲間】レベル += オリバーのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:ピーターがパーティにいる
変数の操作:#0012 【仲間】レベル += ピーターのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
条件分岐:アニエスがパーティにいる
変数の操作:#0012 【仲間】レベル += アニエスのレベル
変数の操作:#0013 【仲間】人数 += 1

分岐終了
変数の操作:#0012 【仲間】レベル /= 【仲間】人数
変数の操作:#0014 【仲間】平均レベル = 【仲間】レベル


今回使用しております創作工房春巻様のデータベースサンプル・ネオのアクター全員の条件分岐を記載しています。これにより、作中でどのアクターがパーティーに居ても、現時点でのパーティーにおける平均レベルを算出できるように作っております。なので、作中で全員を使うことが無くとも、とりあえずこの通りに内容を入れておけば、勝手に計算してくれます。

最初の変数操作で、変数の内容を0にリセットするのを忘れずに。

あと、最後に平均レベルを別の変数にしていますが、変数【仲間】レベルをそのまま使用しても構いません。その場合は、【戦闘】トループ決定の条件分岐で使う変数も修正してください。

一応、ここでは他のイベントなどでレベル関連を扱うことがあるかもしれないと思い、念のため変数を分けているだけです。


コモン:【エフェクト】ゆっくり消失

≪実行内容≫
移動ルートの設定:このイベント (ウェイト)
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:252
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:244
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:231
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:213
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:190
移動ルートの設定:◇すり抜けON
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:162
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:129
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:91
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:48
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:0


イベントを30フレームかけて、ゆっくりと消失させていく演出用コモンイベントです。好みに合わせて編集して構いません。

さりげなく、「すり抜けON」が入っておりますが、これはイベントの組み方次第ではなくても大丈夫です。一応、透過度が低いときにすり抜けられると変かな、と思って途中でいれてるだけだったりします。



コモン:【エフェクト】ゆっくり出現

≪実行内容≫
移動ルートの設定:このイベント (ウェイト)
移動ルートの設定:◇不透明度:3
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:11
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:24
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:42
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:65
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:93
移動ルートの設定:◇すり抜けOFF
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:126
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:164
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:207
移動ルートの設定:◇ウェイト:3フレーム
移動ルートの設定:◇不透明度:255


イベントを30フレームかけてゆっくり出現させる演出用コモンイベントです。好みに合わせて編集して構いません。

これも、さりげなく「すり抜けOFF」が入っていますが、透明度が高いうちに通れなくなると不自然かなと思って途中に挟んでいるだけです。


コモンイベントの説明は、以上になります。



それでは、シンボルエンカウントの作り方に入りましょう。


今回のシンボルエンカウントは、全部で4ページ構成です。


EV:1ページ目
tc39-001.png

<トリガー>
イベントからの接触

<実行内容>
注釈:索敵ページ
セルフスイッチの操作:A = ON


任意の画像に設定し、<トリガー>をイベントからの接触に変えておきます。

今回の自律移動タイプは「近づく」にしております。頻度や速度は初期設定なので、何となくプレイヤーに向かってノロノロ歩いてきます。ここを「ランダム」にすると、ただウロウロするだけになります。ここは、好みで変更してください。

プレイヤーに接触すると、イベントの内容が走りセルフスイッチAをONにします。

セルフスイッチAがONになると、戦闘用のページに切り替わります。



EV:2ページ目
tc39-009.png

<トリガー>
自動実行

<実行内容>
注釈:戦闘処理ページ
移動ルートの設定:このイベント (ウェイト)
移動ルートの設定:◇プレイヤーの方を向く
コモンイベント:【戦闘】平均レベル算出
コモンイベント:【戦闘】トループ決定
戦闘の処理:{【戦闘】トループID}
勝ったとき
SEの演奏:Collapse1 (90, 100, 0)
コモンイベント:【エフェクト】ゆっくり消失
セルフスイッチの操作:B = ON

逃げたとき
セルフスイッチの操作:C = ON

分岐終了


イベントがプレイヤーに接触することで切り替わるページです。ここでは、戦闘する敵グループを決定し、戦闘を開始します。

最初に向き変更の操作を入れていますが、稀にバグで、チラッと接触した後に元の方向を向きなおすことがあるので、念のためこのコマンドを入れておいてます。

内容は、最初に作成したコモンイベントでパーティの平均レベルを算出、その後に戦闘グループのIDを決定して、イベントコマンドで戦闘を開始します。雑魚戦闘を想定していますので、基本的には下の画像のように、逃走可にチェックを入れておきます。

tc39-010.png

この時、敗北可にチェックを入れておけば、負けても全滅しないでイベントを起こす仕様にできます。今回の仕様では、敗北可にチェックを入れていませんので、負けたらゲームオーバーとなります。

あとは、それぞれ勝った時と逃走した時で演出を入れ、セルフスイッチで分岐させます。

勝ったときには適当なSEを入れ、最初に作成した演出用コモンイベントを入れた後にセルフスイッチBをONにして、復活待機ページに移行させます。なお、消失演出はこのページに記述してください。理由は後述します。


逃走した時は、そのままセルフスイッチCをONにします。逃走した場合の演出もありますが、今回はページ切り替え後に演出を入れております。理由は後述します。


EV:3ページ目
tc39-008.png

<トリガー>
並列処理

<実行内容>
注釈:戦闘勝利後ページ
移動ルートの設定:このイベント (ウェイト)
移動ルートの設定:◇不透明度:0
移動ルートの設定:◇すり抜けON
ウェイト:300フレーム
SEの演奏:Darkness2 (50, 100, 0)
コモンイベント:【エフェクト】ゆっくり出現
セルフスイッチの操作:A = OFF
セルフスイッチの操作:B = OFF


戦闘勝利後のページです。ここでは、復活までウエイトで待機させ、時間になったら効果音と共に現れるようにしています。

内容としては、まず不透明度を0にし、すり抜けONをかけておきます。

その理由ですが、この待機ページの状態でプレイヤーがマップ移動を行った場合を想定しなければならないからです。

ウエイト中にプレイヤーがマップ移動を行い再び戻ってきた時、イベントは待機状態から開始されることとなります。ここの最初に消失演出を入れている場合、何もしていないのに消失演出が開始されてしまいます。また、最初に不透明度0+すり抜けON処理をしないと待機中のシンボルエンカウントが突っ立っていることになります。

なので、上記の不透明度0+すり抜けON処理を忘れずに入れておきましょう。

一応、イベントが開始した瞬間はチラッと居ることにはなるのですが、並列処理なのでフェードインしている間に消えてくれると思います。もし、この不具合が不安であれば、初期位置を画面外になるように調節しておくと、一瞬で処理してくれることなのでチラッと見えることも無いでしょう。


で、その後の処理ですが、ここで入れるウエイトが再出現までの時間になります。プラグインなどで弄っていなければ60フレーム=1秒ですので、300フレーム=5秒となります。短いと思えばフレームを増やせばいいでしょうし、長いと思えば短くすることでインターバルを調節できます。

あとは、演出でSEとコモンイベントを入れています。上記のとおりに入力すれば、効果音と共にゆっくり出現してくれると思います。

最後に、セルフスイッチをOFFにして最初のページに戻してあげてください。



EV:4ページ目
tc39-004.png

<トリガー>
並列処理

<オプション>
向き固定
すり抜け

<実行内容>
注釈:逃走後ページ
移動ルートの設定:このイベント (ウェイト)
移動ルートの設定:◇不透明度:120
ウェイト:180フレーム
移動ルートの設定:このイベント (ウェイト)
移動ルートの設定:◇不透明度:255
セルフスイッチの操作:A = OFF
セルフスイッチの操作:C = OFF


逃走後に移行するページです。半透明の状態で3秒待機します。3秒後に、元の状態に戻って再度プレイヤーに向かってノロノロ歩き出します。

一応、すり抜け状態なので向き固定を入れなくても大丈夫だと思いますが、念のため入れてます。すり抜けなのに向きが変わると嫌なので。でも、忘れても困らないはず。

このページの最初に、半透明にする処理を入れていますが、これも先に述べた通り。この処理が入らないと、マップ移動後に戻って来たとき半透明になっていないためです。

今回は、逃走後のインターバルをウエイト180フレーム(=3秒)としていますが、これも調節していただいて構いません。あまり短いと、逃げたのに即戦闘となってしまって厄介なので、少なくとも60フレーム(1秒)はあった方が良いと思います。

あとは、時間になったら元の不透明度に戻して、セルフスイッチをOFFにし最初のページに戻してあげます。



以上、シンボルエンカウントの作り方でした。



終わりに


今回のシンボルエンカウントの作り方講座は、いかがでしたでしょうか。

一番大変なところは、戦闘グループIDの振り分けだけで、他は記述も少ないし、比較的簡単な仕様だと思います。

私は、こんな感じに、ただウロウロして倒したら一定時間で戻ってきてくれる程度のシンボルエンカウントで十分だと思っています。やろうと思えば、○マス以内に近づいてきたときに追いかけて――なんてこともできなくはないと思いますが。面倒くさいので、そういうのはいらない派です(笑)

ちなみに、複製するときはコピペするだけです。画像は適宜変えてください。今回の仕様だと、実際に戦うエネミーの画像とシンボルエンカウントの画像がリンクしていないため、マップの雰囲気に合わせた画像を使うだけです。

もし、ダンジョンやエネミーのタイプで画像を変えたい場合には、コモンイベントの【戦闘】トループ決定の内容を編集したり、複数の敵グループ選択用のコモンイベントを作り適宜内容を変更するなどすると良いでしょう。そこら辺は、好みの問題ですね。

ちなみに、敵グループをトループと呼んでいるのは、ツクールXPの名残だったりします(笑)
”隊”、”群れ”という意味らしいです。



ではでは、今日はこの辺で。
ネコタでした。





↓お役に立ちましたら、クリックをお願いします↓
にほんブログ村 ゲームブログへ
にほんブログ村

にほんブログ村 ゲームブログ ゲーム制作へ
にほんブログ村

ブログランキング・にほんブログ村へ
にほんブログ村

ゲーム制作日記<54> デフォルト計算式

みなさん、こんばんは。
ネコタです。


最近、ご無沙汰していますが、細々とツクツクしております。
とは言っても、いろんなものが中途半端ですけどね(笑)

さて、中途半端とはいえ、いろんなものが出来てきたので、そろそろ戦闘関連にメスを入れ始めようかと思いました。


今、デフォルト素材だけで作るプロジェクトを進めているのですが、戦闘もデフォルト計算式にこだわりたい。

ということで、ダメージの計算式は、デフォルトの式である

a.ATK*4-b.DEF*2

に決定。この計算式は、凄くシンプルで分かりやすい。
けど、シンプル故に、ユーザーは割といじりたがる(笑)


今回は、このデフォルト計算式のお話をしようかと思います。



■ツクールMVデフォルト計算式


RPGツクールMVの基本ダメージ計算式は、先ほど示した通り。

a.ATK*4 - b.DEF*2


さて、まずはこの計算式の意味ですが、とっても単純な構造をしています。

・ユーザーの攻撃力が1上がる→ダメ―ジは4増える。

・対象の防御力が1上がる→ダメージは2減る。


これだけ。

ダメージを完璧に相殺するには、相手の攻撃力に対して2倍の防御力があれば良い計算になります。

分かりやすいですね。



しかし、戦闘の計算は、これで完結するわけではありません。
ダメージの処理には、他にもいくつかの処理が関わっているんですね。

それらをちゃんと把握していないと、上手いゲームバランスを組み立てることが難しいんです。


では、他にどんな処理があるのか見てみましょう。

・命中判定と回避判定(命中率)
・会心率(クリティカルによるダメージUP)
・バフ・デバフによる強化・弱体化
・分散(ダメージのブレ幅)


これらの処理が、どのように行われているか、ご存知でしょうか?

実は、デフォルト戦闘の設計には、これらが固定で設定されています。

順番に見ていきましょう。


命中率
攻撃の命中判定は、命中率による命中判定の後に、回避率による回避判定を行います。

具体的には、ユーザーの命中率95%、ターゲットの回避率5%とした場合、

命中判定:95%の確率で命中
回避判定:(100%-5%)で命中


命中率による命中判定を先に処理しますので、まずは、命中率を計算します。

命中率①:100%×95%=95%

このフィルターを通ったものに対して、さらに回避判定による命中率計算を行います。

命中率②:95%×(100%-5%)=0.95*0.95=0.9025

したがって、トータルした命中率は、90.25%の命中率となるわけですね。

命中率と回避率は、職業や敵キャラで設定されているので、その数値を変更すれば良いのですが、この計算式自体は固定となります。

※参照するのは、ユーザーの命中率と対象の回避率の組み合わせとなります。


簡略化したいときは、回避率を削除するいか、命中率を100%にすればどちらか一方だけの計算となるため、分かりやすくなります。


会心の一撃
固定で3倍のダメージです。変更するためには、スクリプトを弄るかプラグインの導入が必要となります。


バフ、デバフについて
バフ・デバフによる数値変化は1段階につき25%です。そして、2段階までとなっています。

1段階バフ・デバフをかけると、数値が25%増減して計算されます。

この幅や重ねがけの回数を変更するためには、スクリプトを弄るか、プラグインの導入が必要となります。


分散
ダメージの幅です。

たとえば、分散20%、ダメージ計算の結果が100の場合、実際のダメージは100から前後20%(80~120)の値になります。


以上が、戦闘に関わる固定設定です。


あとは、防御しているかどうかもありますが、これは防御状態の時に応じて最終ダメージに50%を掛け算したりします。


で、これらの仕様が分かるとですね。

実際にテストプレイをしなくても、Excelなどの表計算ソフトを利用してシミュレートすることが出来ます。

計算に必要な設定項目は、以下の通りです。

・a.ATK(スキル使用者の攻撃力)
・b.DEF(ターゲットの防御力)
・命中率(ユーザー)
・回避率(ターゲット)
・分散
・会心率
・バフ・デバフ効果(25%)


これらを使うと、ダメージの期待値を割り出すことが出来ます。



■期待値計算


まずは、期待値が何なのかというと、

ここで言う期待値とは「無限回数この計算式で攻撃した場合において、ミス(0ダメージ)やクリティカル(3倍ダメージ)も含む、毎回の平均ダメージ」を言います。

期待値の数式的な定義ですが、

(数値*発生確率)の総和

です。理屈は簡単ですね。

これを計算できると、実際にテストをしなくても、計算だけでおおよその戦闘の経過をシミュレートでき、実際に組んでから数回テストするだけで済みます。

なので、計算できるようになっておくとすごく便利。


で、さっそく期待値を出したいんですが。

これを出すために、まずは各攻撃の発生確率を調べなければなりません。


各攻撃って何かというと、

・通常のヒットした時(1倍ダメージ)
・攻撃がミスした時(0ダメージ)
・クリティカルヒットした時(3倍ダメージ)


この3つですね。それぞれが、どのくらいの確率で発生するかを考えていきます。



●攻撃がミスした時

まず、攻撃がミスした時を考えてみましょう。

攻撃がミスする場合というのは、命中判定で命中しなかった場合を考えます。

即ち、先ほど出した命中率を全体から引いた値ですね。

全体は100%で、トータル命中率は90.25%でしたね。


ミス発生率:100%-90.25%=9.75%


よって、9.75%の確率で0ダメージとなります。



●クリティカルヒットの時

次に、クリティカルヒットの時の発生確率を出してみましょう。

クリティカルヒットは、攻撃が命中した場合に、会心率の確率で発生します。

会心率は、デフォルトだと4%に設定されているので、これで計算してみましょう。


まずは、攻撃が命中する確率ですが、


命中率:90.25%


これに対して、会心率は4%ですので、


会心発生率:90.25%*4%=3.61%


よって、この攻撃をしたときの会心発生率は3.61%の確率となります。



●通常の攻撃ヒット時

さて、通常のヒット時について発生率を考えてみましょう。

これは、ミスでもクリティカルでもないときには通常のヒットとなりますから、全体から今までのものを差し引くことで計算できます。

全体の確率は100%、ミスは9.75%、クリティカルは3.61%ですので、


100%-9.75%-3.61%=86.64%


すなわち、通常のヒットは86.64%の確率で発生することが分かりました。



さて、以上でそれぞれの発生率が分かりましたので、下に一旦まとめておきましょう。

・通常ヒット:86.64%
・ミス:9.75%
・クリティカルヒット:3.61%



それでは、いよいよ期待値の計算です。

今回は、a.atk=120、b.def=80として計算します。

まず、デフォルトのダメージ計算式からダメージを計算します。


 a.ATK*4-b.DEF*2=120*4-80*2
=480-160
=320


次に、それぞれ通常ヒット時、ミス時、クリティカルヒット時の倍率を掛け算します。


・通常ヒット時:320*1=320
・ミス時:320*0=0
・クリティカルヒット時:320*3=960


そして、それぞれに発生確率を掛け算します。


・通常ヒット時:320*0.8664=277.248
・ミス時:0*0.0975=0
・クリティカルヒット時:960*0.0361=34.656


最後にこれらを全て足し算します。


277.248+0+34.656=311.904
≒312


よって、期待値は312ダメージとなります。


●期待値計算結果

RPGツクールMVのデフォルト計算式である、下記計算式

a.ATK*4-b.DEF*2

について、

命中率:95%
回避率:5%
会心率:4%
a.atk:120
b.def:80

上記の条件において攻撃を行った場合には、平均すると

約312ダメージ

が、毎回入ると考えられます。


これを基に、例えば、1回の戦闘を平均3ターン程度としたい場合には、

312*3=936

敵のHPを936程度に設定すると、大体3ターンで倒せるということになります。


今回は1対1の戦闘を想定しましたが、このように、期待値を用いて実際の戦闘をシミュレートすることで、戦闘テストを何度も行わずに、平均的な戦闘結果を知ることが出来ます。

また、この考え方を応用すれば敵のHP・ATK・DEFの決定にも利用できます。

少し難しい話だったかもしれませんが、ぜひ試してみてくださいね。



■デフォルト計算式用サンプル


私が考えた、デフォルト計算式用の基本設定サンプルをここに提示しておきます。どうしようか迷ったら、参考にしてみてください。

ちなみに、期待値の計算結果が元の計算式になるようになっていますので、この設定にしておくと、期待値計算をしなくても数値を把握できるようになっています。


●標準型
命中率:98%
回避率:3%
会心率:3%

(トータル命中率: 約95%です)


●ギャンブル型
命中率:95%
回避率:5%
会心率:6%

(トータル命中率: 約90%です)


●安定型
命中率:99%
回避率:1%
会心率:1%

(トータル命中率: 約98%です)



■分散


スキルに分散を設定しておくと、計算結果に対してダメージの値に範囲を持たせることが出来ます。

例えば、基準となるダメージが100、分散が20%だった場合、ダメージは100±20の範囲で決定されます。

分散がどのくらいになろうとも、平均ダメージは概ね計算式の通りとなりますが、実際にダメージがばらつくとプレイヤーの印象が変わってきます。

例えば、先ほどの例の場合には、最低ダメージが80で、最高ダメージが120となりますから、設定した側からすればたった20%のつもりでも、プレイヤーからすると80と120で1.5倍ほどのブレがあるように見えるわけです。

なので、設定する分散の値によって、どのくらいの振れ幅になるのかは把握しておいた方が良いでしょう。


ざっと、一覧を載せてみますので、参考にしてみてください。
個人的にオススメは5%です。


●分散範囲一覧
分散・・・範囲 (プレイヤー視点の範囲格差)
1%・・・99%~101% (2%差)
3%・・・97%~103% (6%差)
5%・・・95%~105% (10%差)
10%・・・90%~110% (22%差)
15%・・・85%~115% (35%差)
20%・・・80%~120% (50%差)
25%・・・75%~125% (67%差)
30%・・・70%~130% (86%差)
33%・・・67%~137% (2倍差)
50%・・・50%~150% (3倍差)
60%・・・40%~160% (4倍差)
67%・・・34%~167% (5倍差)
72%・・・28%~172% (6倍差)
75%・・・25%~175% (7倍差)
78%・・・22%~178% (8倍差)
80%・・・20%~180% (9倍差)
82%・・・18%~182% (10倍差)
91%・・・9%~191% (21倍差)
94%・・・6%~194% (32倍差)
95%・・・5%~195% (39倍差)
96%・・・4%~196% (49倍差)
100%・・・0%~200% (カオス)



■バフ・デバフを考慮した能力値設定


RPGツクールMVには、ステートとは別にバフ・デバフというものがあります。

バフ:数ターンの間、能力値が上がる。1段階につき25%UPする。(最大2段階)

デバフ:数ターンの間、能力値が下がる。1段階につき25%DOWNする。(最大2段階)



バフとデバフは、それぞれ各能力値に付与することができますが、とりわけATK(MAT)やDEF(MDF)は計算式に直接かかわってくるため、この影響は無視できません。

最大で50%~150%まで変動させることが出来るので、何も考えずにバフ・デバフを付与できるようにすると、戦闘バランスが大きく崩れることになります。

そこで、バフとデバフの影響があるときの、基本ダメージ式の変化を見てみましょう。

ここでは、a.ATKとb.DEFについてのみ考えてみます。


●a.ATKを強化(バフ)

基本式: a.ATK*4-b.DEF*2

a.ATKが関わるのはa.ATK*4の部分ですね。ここがバフによって変化します。

1段階:a.ATK*4*1.25=a.ATK*5
2段階:a.ATK*4*1.5=a.ATK*6

a.ATKにバフをかけると、ダメージがa.ATKの値ずつ増えていくことになります。結構な影響力ですね。


次に、a.ATKにデバフをかける場合を見てみましょう。

●a.ATKを弱体化(デバフ)

1段階:a.ATK*4*0.75=a.ATK*3
2段階:a.ATK*4*0.5=a.ATK*2

このように、デバフをかけていくと、a.ATKの値ずつダメージが減っていきます。2段階もかかると、計算式がb.defと同じになってしまうため、値が同じ場合にはダメージが0となってしまいますね。


このことから、a.ATKはb.DEFよりも大きい値の方が良いと分かります。同じ値以下だと、デバフで完封されかねないということになりますから、慎重に導入する必要が出てくるわけですね。


次に、b.DEFに注目してみましょう。

●b.DEFを強化(バフ)

基本式: a.ATK*4-b.DEF*2

b.defが関わるのはb.DEF*2の部分ですね。ここがバフによって変化します。

1段階:b.DEF*2*1.25=b.DEF*2.5
2段階:b.DEF*2*1.5=b.DEF*3

b.DEFにバフをかけると、元数値の50%ずつダメージが減少していきます。a.ATKの時に比べて効果は小さくなりますので、実はb.DEFを操作するバフ・デバフは単純に考えるとa.ATKに対するバフ・デバフの劣化版となるんですね。


では、同様にb.DEFにデバフをかける場合を見てみましょう。


●b.DEFを弱体化(デバフ)

1段階:b.DEF*2*0.75=b.DEF*1.5
2段階:b.DEF*2*0.5=b.DEF*1

もう分かるかと思いますが、b.DEFの50%ずつ減少ダメージが減っていくので、結果として、b.DEFの50%ずつダメージが上がっていきます。





さて、ここまで見て来ると、バフとデバフが最大の効果を発揮する状況というのが、想像できてこないでしょうか。

すなわち、

・a.ATKに2段階のバフをかけ、b.DEFに2段階のデバフをかけた場合
・a.ATKに2段階のデバフをかけ、b.DEFに2段階のバフをかけた場合


この2つの状況ですね。

これらについて、確認してみましょう。

●a.ATKに2段階のバフ&b.DEFに2段階のデバフ

a.ATKに2段階バフ:a.ATK*4→a.ATK*6
b.DEFに2段階デバフ:b.DEF*2→b.DEF*1

よって、ダメージ式は、

a.ATK*6-b.DEF*1

上記のように変化して計算されます。能力値の差によって、カッチリ何倍になるという比は出せないのですが、

・a.ATK=b.DEFの場合:2.5倍
・a.ATKがb.DEFの1.5倍:2倍
・a.ATKがb.DEFの2倍:1.7倍

というように、a.ATKがb.DEFに対して大きくなっていく毎に、バフ・デバフによる効率は減っていきます。



次に、a.ATKに2段階のデバフをかけ、b.DEFに2段階のバフをかけた場合を見てみましょう。


●a.ATKに2段階のデバフ&b.DEFに2段階のバフ

a.ATKに2段階デバフ:a.ATK*4→a.ATK*2
b.DEFに2段階バフ:b.DEF*2→b.DEF*3

よって、ダメージ式は、

a.ATK*2-b.DEF*3

上記のように変化して計算されます。こうなると、a.ATKとb.DEFの関係が逆転していますので、もともとのa.ATKがb.DEFの1.5倍は無いとダメージが通らなくなってしまいますね。


よって、a.ATKはb.DEFに対して、少なくとも1.5倍よりは大きくないと、バフ・デバフだけで封殺される可能性が出てきます。


このギミックをあえて仕込むのも一興ですが、意識していないと思わぬ落とし穴となりそうな問題です。

バフ・デバフを導入する場合には、能力値についても注意しておく必要があります。



■おわり


以上、RPGツクールMVのダメージ計算式について、現時点での考察でした。


世の中には、いろんなダメージ計算式があります。

自分が扱う計算式の特徴をしっかりと理解することが、戦闘バランス調整の第一歩となります。

どの数値がどのように変化するのか。
それによって、ダメージにどの程度の変化がもたらされ、どの程度期待されるのか。

きちんと把握して、より良い戦闘バランスになるよう心がけたいものですね。


ではでは、今日はこの辺で。
ネコタでした。

ゲーム制作日記<53> キャラクター選択画面

op.png



みなさん、こんばんは。
ネコタです。



今回も恒例の『 コモンイベントで作るちょっとしたシステム 』 のご紹介。


今回紹介するのは、『パーティキャラクター選択画面』です。一部演出のためにプラグインを使用していますが、システムとしてはほとんどコモンイベントを利用して作っています。


それでは、どんな感じの内容か見てみましょう。


tc38_001s.png

現在制作中のキャラクター選択画面です。真ん中のキャラクターが今カーソルが合っているキャラクターで、右上に簡単な説明テキストが表示されています。


tc38_002s.png

決定ボタンを押すと、キャラクターのバストアップが表示されて簡単なお話しが出来ます。


tc38_003s.png

その後、このキャラクターを仲間に加えるかどうかの選択肢が表示されます。


tc38_004s.png

「はい」を選択すると、キャラクターが仲間となり、左側に仲間になったキャラクターを簡易表示させます。

一度選択したキャラは、仲間にいる限り再度選択しても、ブザー音が鳴るだけで選択することができません。


tc38_005s.png

カーソルを右に動かす(→キーを押す)と、画像達がくるっと右回りに回転して、中心のキャラクターが入れ替わります。右上のテキストもそのキャラクターのものになります。

左に動かした(←キーを押した)場合は、同様に左回りとなります。この後も、決定を押せば同じような挙動で仲間を選択できるという仕組みです。

ちなみに、キャンセルボタンを押すと左側にいるちびキャラは消えて再選択できるようになります。


tc38_006s.png

で、メンバーを全員選択すると、最終確認のアナウンスが表示されます。

「これでOK」を選択すると、キャラクター選択メニューが終了してマップに戻ります。

「ちょっと待って」を選択すると、1つ前(最後のキャラ選択)に戻ります。

「最初から考え直す」にすると、全キャラの選択がリセットされて、最初から選び直しとなります。


今回は、このような仕様となっています。
いかがでしょうか。


これから作り方を紹介していきますが、ぶっちゃけ、内部の処理は結構複雑です。なので、全然ちょっとしたシステムじゃなかったりします(苦笑)

あと、表だっては出てこないのですが、機能として以下の仕様も組み込んでいます。

・イベントによってキャラクター選択画面にメンバーを追加する場合ですが、スイッチのみで管理できます。

・システム的には増やせるアクターの上限が無いため、後から追加編集もできます。




それでは、まず最初に必要なものを確認していきましょう。


【準備】
・FTKR_PopupSpriteMessage.js(→ツクールフォーラム
・コモンイベント *15
・変数 *15
・スイッチ *(アクターの数)
・画像 *(背景やキャラクターなど必要な分だけ)

今回使用しているプラグインは、ツクールフォーラムでフトコロさんが投稿してくださった「テキストを画像で表示する」プラグインです。カラーを選択したり、画像として動かしたりできます。

今回の仕様に関わっているプラグインはこれだけで、他の挙動は全てツクールの機能で作っています。コモンイベントをかなり多用していますが、実は、大部分はまとめられます。ただ、行数が長くなって編集するのが大変になるので、分けて作っている部分が多いです。


【推奨】
・画像編集ソフト


ゲームと直接は関係ありませんが、ツクールの中に入っている画像(特に背景画像)を使う場合には、ちょっと加工しないと使いづらいです。私は無料で使えるGIMPを利用しました。

例えば背景画像ですが、フォルダbattlebacks1に入っているCastle2(1000*740)とフォルダbattlebacks2に入っているCastle3(1000*740)を使っています。しかし、そのまま使うと縮小表示しなければなりませんので、GIMPで縮小加工を施してフォルダpicturesに保存し、利用しています。

あと、GIMPを通すと、そのままの拡縮でもファイルが軽くなったりします(仕組みはよく分からないのですが、画質が落ちるのかな?)




さて、準備はこれで終了です。

それでは、実際の制作手順を紹介していきます。

ちなみに、今回は1人のキャラクターにつき全身立ち絵バストアップ歩行グラフィックの3種類を用意して作っています。


まずは、コアとなるイベントの作成です。

これは自動実行のイベントで作っても構いませんし、コモンイベントにして呼び出せるようにしても構いません。

なお、セルフスイッチを使っている場面がありますが、コモンイベントだと多分セルフスイッチが使えないと思うので、別途スイッチを用意する必要があります。


注釈:フラグの初期化
変数の操作:#0012 仲間選択数 = 0
コモンイベント:パーティ全削除
注釈:背景の設定
ピクチャの表示:#1, BG_Castle2_c, 左上 (0,0), (100%,100%), 255, 通常
ピクチャの表示:#2, BG2_Castle3_c, 左上 (0,0), (100%,100%), 255, 通常
注釈:キャラクター画像の初期設定
変数の操作:#0004 画像03 = 10
スイッチの操作:#0011 【アクター】10(妖精1) = ON
コモンイベント:パーティ選択(4右)
変数の操作:#0005 画像04 = 8
スイッチの操作:#0009 【アクター】08(悪魔1) = ON
コモンイベント:パーティ選択(3右)
変数の操作:#0008 画像07 = 5
スイッチの操作:#0006 【アクター】05(動物1) = ON
コモンイベント:パーティ選択(2右)
変数の操作:#0006 画像05 = 13
スイッチの操作:#0014 【アクター】13(人2) = ON
コモンイベント:パーティ選択(4左)
変数の操作:#0007 画像06 = 14
スイッチの操作:#0015 【アクター】14(人3) = ON
コモンイベント:パーティ選択(3左)
変数の操作:#0009 画像08 = 21
スイッチの操作:#0022 【アクター】21(人10) = ON
コモンイベント:パーティ選択(2左)
変数の操作:#0010 画像09 = 1
スイッチの操作:#0002 【アクター】01(エルフ1) = ON
コモンイベント:パーティ選択(先頭)
スイッチの操作:#0013 【アクター】12(人1) = ON
注釈:以下、選択画面処理内容
ループ
ループ
注釈:キャラクター決定時
条件分岐:ボタン[決定]が押されている
コモンイベント:キャラクター選択確認
条件分岐:セルフスイッチ AがOFF
文章:なし, 暗くする, 下
文章この子を連れていきますか?
選択肢の表示:はい, いいえ (暗くする, 右, #1, #2)
はいのとき
コモンイベント:パーティ追加

いいえのとき
ピクチャの消去:#10

分岐終了

それ以外のとき
セルフスイッチの操作:A = OFF

分岐終了
ループの中断

分岐終了
注釈:選択中キャラクター取りやめ
条件分岐:ボタン[キャンセル]が押されている
ラベル:→ちょっと待って
コモンイベント:パーティ削除
ループの中断

分岐終了
注釈:キャラクター選択(右回り)
条件分岐:ボタン[右]が押されている
ピクチャの移動:#3, 左上 (461,90), (85%,85%), 130, 通常, 10フレーム
ピクチャの移動:#4, 左上 (361,100), (95%,95%), 180, 通常, 10フレーム
ピクチャの移動:#7, 左上 (251,105), (100%,100%), 255, 通常, 10フレーム
ピクチャの移動:#6, 左上 (91,80), (85%,85%), 0, 通常, 10フレーム
ピクチャの移動:#8, 左上 (41,90), (85%,85%), 130, 通常, 10フレーム
ピクチャの移動:#9, 左上 (141,100), (95%,95%), 180, 通常, 10フレーム (ウェイト)
コモンイベント:右押時画像変更
ループの中断

分岐終了
注釈:キャラクター選択(左回り)
条件分岐:ボタン[左]が押されている
ピクチャの移動:#4, 左上 (411,80), (85%,85%), 0, 通常, 10フレーム
ピクチャの移動:#7, 左上 (461,90), (85%,85%), 130, 通常, 10フレーム
ピクチャの移動:#5, 左上 (41,90), (85%,85%), 130, 通常, 10フレーム
ピクチャの移動:#6, 左上 (141,100), (95%,95%), 180, 通常, 10フレーム
ピクチャの移動:#8, 左上 (251,105), (100%,100%), 255, 通常, 10フレーム
ピクチャの移動:#9, 左上 (361,100), (95%,95%), 180, 通常, 10フレーム (ウェイト)
コモンイベント:左押時画像変更
ループの中断

分岐終了
ウェイト:2フレーム

以上繰り返し
注釈:フラグ管理
条件分岐:仲間選択数 ≥ 4
プラグインコマンド:PSM_ERASE_POPUP 1 0
プラグインコマンド:PSM_ERASE_POPUP 2 0
プラグインコマンド:PSM_ERASE_POPUP 3 0
プラグインコマンド:PSM_ERASE_POPUP 4 0
プラグインコマンド:PSM_ERASE_POPUP 13 0
プラグインコマンド:PSM_ERASE_POPUP 14 0
プラグインコマンド:PSM_ERASE_POPUP 15 0
プラグインコマンド:PSM_ERASE_POPUP 16 0
ループの中断

分岐終了
ラベル:→最初から考え直す
ウェイト:15フレーム

以上繰り返し
注釈:キャラクター選択終了時処理
文章:なし, 暗くする, 下
文章連れていくメンバーは、この4人でよろしいですか?
選択肢の表示:これでOK, ちょっと待って, 最初から考え直す (暗くする, 右, #1, #2)
これでOKのとき
プラグインコマンド:PSM_ERASE_POPUP 5 0
プラグインコマンド:PSM_ERASE_POPUP 6 0
プラグインコマンド:PSM_ERASE_POPUP 7 0
プラグインコマンド:PSM_ERASE_POPUP 8 0
プラグインコマンド:PSM_ERASE_POPUP 9 0
プラグインコマンド:PSM_ERASE_POPUP 10 0
プラグインコマンド:PSM_ERASE_POPUP 11 0
プラグインコマンド:PSM_ERASE_POPUP 12 0

ちょっと待ってのとき
コモンイベント:パーティ選択(先頭)
ラベルジャンプ:→ちょっと待って

最初から考え直すのとき
変数の操作:#0012 仲間選択数 = 0
ピクチャの消去:#11
ピクチャの消去:#12
ピクチャの消去:#13
ピクチャの消去:#14
コモンイベント:パーティ全削除
プラグインコマンド:PSM_ERASE_POPUP 5 0
プラグインコマンド:PSM_ERASE_POPUP 6 0
プラグインコマンド:PSM_ERASE_POPUP 7 0
プラグインコマンド:PSM_ERASE_POPUP 8 0
プラグインコマンド:PSM_ERASE_POPUP 9 0
プラグインコマンド:PSM_ERASE_POPUP 10 0
プラグインコマンド:PSM_ERASE_POPUP 11 0
プラグインコマンド:PSM_ERASE_POPUP 12 0
コモンイベント:パーティ選択(先頭)
ラベルジャンプ:→最初から考え直す

分岐終了
ピクチャの消去:#1
ピクチャの消去:#2
ピクチャの消去:#3
ピクチャの消去:#4
ピクチャの消去:#5
ピクチャの消去:#6
ピクチャの消去:#7
ピクチャの消去:#8
ピクチャの消去:#9
ピクチャの消去:#10
ピクチャの消去:#11
ピクチャの消去:#12
ピクチャの消去:#13
ピクチャの消去:#14
セルフスイッチの操作:B = ON


コモンイベントがたくさん出てきてますね。

後で解説していくので、とりあえず枠を13個くらい押さえておいてください。(これに加えて、コモンイベント内でさらに2つ使います)

では、上から順番に説明していきます。


注釈:フラグの初期化
変数の操作:#0012 仲間選択数 = 0
コモンイベント:パーティ全削除

まず、フラグとなる変数12を0に初期化しておきます。
そして、コモンイベントを1つ入れます。このコモンイベントでは、一旦パーティを全員解雇しています。


注釈:背景の設定
ピクチャの表示:#1, BG_Castle2_c, 左上 (0,0), (100%,100%), 255, 通常
ピクチャの表示:#2, BG2_Castle3_c, 左上 (0,0), (100%,100%), 255, 通常

ここでは、背景の画像を設定しています。

あらかじめ画面サイズ(816*624)に合わせておいた背景画像を、2枚貼り付けます。

なお、ピクチャは数字が大きいものが手前に来るため、順番に気を付けてください。


注釈:キャラクター画像の初期設定
変数の操作:#0004 画像03 = 10
スイッチの操作:#0011 【アクター】10(妖精1) = ON
コモンイベント:パーティ選択(4右)


次に、キャラクター画像の初期設定を行っています。

ここのコモンイベントでは変数4~10を使って画像を自動設定するように作っていきますので、ここでは変数を設定しています。

ここで使うスイッチは、パーティ選択可否を切り替えるフラグとなっています。初期で仲間に選択できるキャラはスイッチも一緒にONしておきましょう。

変数の操作:#0005 画像04 = 8
スイッチの操作:#0009 【アクター】08(悪魔1) = ON
コモンイベント:パーティ選択(3右)
変数の操作:#0008 画像07 = 5
スイッチの操作:#0006 【アクター】05(動物1) = ON
コモンイベント:パーティ選択(2右)
変数の操作:#0006 画像05 = 13
スイッチの操作:#0014 【アクター】13(人2) = ON
コモンイベント:パーティ選択(4左)
変数の操作:#0007 画像06 = 14
スイッチの操作:#0015 【アクター】14(人3) = ON
コモンイベント:パーティ選択(3左)
変数の操作:#0009 画像08 = 21
スイッチの操作:#0022 【アクター】21(人10) = ON
コモンイベント:パーティ選択(2左)
変数の操作:#0010 画像09 = 1
スイッチの操作:#0002 【アクター】01(エルフ1) = ON
コモンイベント:パーティ選択(先頭)

ここら辺は、構造的には先ほどのものと一緒です。ただし、コモンイベントの内容がそれぞれでちょっとずつ違うので、注意してください。

ここには記述されておりませんが、コモンイベントの内容でピクチャ番号3~9まで使用されます。

ピクチャ番号は大きいものが手前に表示されますので、レイアウトの都合上、最も大きい9番が先頭の画像となります。

後の順番は好きにして構いませんが、がぶっている箇所が出来てしまう場合には、重なり方を考慮して番号付けしなければならないので注意してください。

ちなみに、今回は先頭が9番で、右側奥から3→4→7、左側奥から5→6→8の順となっています。

ところで、ここで設定している画像は7つありますが、最初の仕様紹介画像では5人しか表示されていません。

実は、奥に2つ透明な画像があります。レイアウトの都合上、必要な措置となっていますので、キチンと設定しておきましょう。


スイッチの操作:#0013 【アクター】12(人1) = ON


さりげなく、1人だけあぶれているスイッチがあります。

今回の例では、初期メンバーは8人から選べる仕様となっていますが、画像設定は7人分までです。それ以上の人員については、このようにスイッチをONしておくだけで構いません。コモンイベントの内容で選択肢に自動的に入ってきます。


さて、初期設定はここまで。

次に、ループ処理を2重で囲った部分を解説していきます。ここからが、挙動の本体となります。

まず、外側のループ構造から解説していきます

ループ

  (中略)

注釈:フラグ管理
条件分岐:仲間選択数 ≥ 4
プラグインコマンド:PSM_ERASE_POPUP 1 0
プラグインコマンド:PSM_ERASE_POPUP 2 0
プラグインコマンド:PSM_ERASE_POPUP 3 0
プラグインコマンド:PSM_ERASE_POPUP 4 0
プラグインコマンド:PSM_ERASE_POPUP 13 0
プラグインコマンド:PSM_ERASE_POPUP 14 0
プラグインコマンド:PSM_ERASE_POPUP 15 0
プラグインコマンド:PSM_ERASE_POPUP 16 0
ループの中断

分岐終了
ラベル:→最初から考え直す
ウェイト:15フレーム

以上繰り返し


(中略)のループ構造を抜けた場合の処理ですが、(中略)でパーティ決定していきますが、操作1回ごとに中断してループを抜けます。

中のループではボタンが押されるまでの処理を担当し、外側のループではボタンが押された後のインターバルと全員決定されたかの判定を行う処理となっています。

仲間選択数が4以上(すなわち、4人が決定されている場合)にはプラグインコマンドでテキストのポップを消して、終了処理へ進むためにループ中断して抜けます。そうでない場合には、15フレームのインターバルを設けます。

このインターバルが無いと、ボタンを押したときの処理が終了した直後にボタンを押したときの処理がストックされてしまうため、大体10~20フレーム程度のウエイトが必要となります。


それでは、中のループ構造を見ていきましょう。

注釈:キャラクター決定時
条件分岐:ボタン[決定]が押されている
コモンイベント:キャラクター選択確認
条件分岐:セルフスイッチ AがOFF
文章:なし, 暗くする, 下
文章この子を連れていきますか?
選択肢の表示:はい, いいえ (暗くする, 右, #1, #2)
はいのとき
コモンイベント:パーティ追加

いいえのとき
ピクチャの消去:#10

分岐終了

それ以外のとき
セルフスイッチの操作:A = OFF

分岐終了
ループの中断

分岐終了

まずは、決定ボタンが押されたときの処理です。

コモンイベントの内容は後述しますが、最初の画像でフォリアが「私を連れてってくれるの?」と言っていた部分の処理が入っています。選ばれた画像によって出てくるものが変わるように作りますので、中身は結構長いです。

で、その後にセルフスイッチで囲った部分ですが、これはコモンイベントの内容で、すでに仲間として選択されている場合にはフラグとしてセルフスイッチをONにしています。決定ボタンを押されたキャラがすでに仲間になっていれば、スイッチがONとなっているためスイッチOFFの操作だけの分岐へ飛び、そうでなければ仲間にするか尋ねる選択肢へ飛びます。

仲間にするかどうかの選択肢で「はい」を選んだ場合には、コモンイベントでパーティを追加する処理を行います。ここの内容では、選択された画像によって自動的に仲間になるキャラを指定する内容を組んでいます。

「いいえ」を選んだ場合には、出てきているバストアップ画像(ピクチャ10番)を削除します。このバストアップ画像も、コモンイベントで自動設定されて出てくるように組んでいます。


注釈:選択中キャラクター取りやめ
条件分岐:ボタン[キャンセル]が押されている
ラベル:→ちょっと待って
コモンイベント:パーティ削除
ループの中断

分岐終了

次に、キャンセルボタンが押されたときの処理です。

ここでは、コモンイベントによって画面左側に表示していたちびキャラを消去する処理を行っています。同時に、パーティから外れるようにしています。


注釈:キャラクター選択(右回り)
条件分岐:ボタン[右]が押されている
ピクチャの移動:#3, 左上 (461,90), (85%,85%), 130, 通常, 10フレーム
ピクチャの移動:#4, 左上 (361,100), (95%,95%), 180, 通常, 10フレーム
ピクチャの移動:#7, 左上 (251,105), (100%,100%), 255, 通常, 10フレーム
ピクチャの移動:#6, 左上 (91,80), (85%,85%), 0, 通常, 10フレーム
ピクチャの移動:#8, 左上 (41,90), (85%,85%), 130, 通常, 10フレーム
ピクチャの移動:#9, 左上 (141,100), (95%,95%), 180, 通常, 10フレーム (ウェイト)
コモンイベント:右押時画像変更
ループの中断

分岐終了

ここは、→キーが押された場合の処理です。ピクチャ3~9番を右回りになるように移動させています。

奥で透明になっている画像は、ここで透明度を下げて出てくるようになっています。

逆方向にある画像は消去されてしまいますが、ここらへんの処理はコモンイベントが行っています。移動後の画像を再決定して、更新する処理が入っています。


注釈:キャラクター選択(左回り)
条件分岐:ボタン[左]が押されている
ピクチャの移動:#4, 左上 (411,80), (85%,85%), 0, 通常, 10フレーム
ピクチャの移動:#7, 左上 (461,90), (85%,85%), 130, 通常, 10フレーム
ピクチャの移動:#5, 左上 (41,90), (85%,85%), 130, 通常, 10フレーム
ピクチャの移動:#6, 左上 (141,100), (95%,95%), 180, 通常, 10フレーム
ピクチャの移動:#8, 左上 (251,105), (100%,100%), 255, 通常, 10フレーム
ピクチャの移動:#9, 左上 (361,100), (95%,95%), 180, 通常, 10フレーム (ウェイト)
コモンイベント:左押時画像変更
ループの中断

分岐終了

ここでは、←キーが押されたときの処理を行います。

内容的には、→キーを押したときと挙動が逆方向になるようになっていますので、先ほどの処理に準じます。コモンイベントの中身もそんな感じです。


ウェイト:2フレーム

一応、最後に2フレーム置くことで重くならないようにしています。


さて、これでキャラクター選択の処理が終わりました。

ここからが最終確認と終了処理となります。

注釈:キャラクター選択終了時処理
文章:なし, 暗くする, 下
文章連れていくメンバーは、この4人でよろしいですか?
選択肢の表示:これでOK, ちょっと待って, 最初から考え直す (暗くする, 右, #1, #2)
これでOKのとき
プラグインコマンド:PSM_ERASE_POPUP 5 0
プラグインコマンド:PSM_ERASE_POPUP 6 0
プラグインコマンド:PSM_ERASE_POPUP 7 0
プラグインコマンド:PSM_ERASE_POPUP 8 0
プラグインコマンド:PSM_ERASE_POPUP 9 0
プラグインコマンド:PSM_ERASE_POPUP 10 0
プラグインコマンド:PSM_ERASE_POPUP 11 0
プラグインコマンド:PSM_ERASE_POPUP 12 0

ちょっと待ってのとき
コモンイベント:パーティ選択(先頭)
ラベルジャンプ:→ちょっと待って

最初から考え直すのとき
変数の操作:#0012 仲間選択数 = 0
ピクチャの消去:#11
ピクチャの消去:#12
ピクチャの消去:#13
ピクチャの消去:#14
コモンイベント:パーティ全削除
プラグインコマンド:PSM_ERASE_POPUP 5 0
プラグインコマンド:PSM_ERASE_POPUP 6 0
プラグインコマンド:PSM_ERASE_POPUP 7 0
プラグインコマンド:PSM_ERASE_POPUP 8 0
プラグインコマンド:PSM_ERASE_POPUP 9 0
プラグインコマンド:PSM_ERASE_POPUP 10 0
プラグインコマンド:PSM_ERASE_POPUP 11 0
プラグインコマンド:PSM_ERASE_POPUP 12 0
コモンイベント:パーティ選択(先頭)
ラベルジャンプ:→最初から考え直す

分岐終了

ここの選択肢は、最終確認の処理ですね。

さりげなくあちこちにラベルがあったと思いますが、アレは、ここの分岐で飛ばされるラベルでした。

「これでOK」を選んだ場合は、プラグインコマンドでテキストを消していきます。

「ちょっと待って」を選んだ場合は、1つ手前に戻したいので、素直にキャンセルボタンを押したときの処理へ返します。直前に入れてるコモンイベントは、説明テキストを復活させるために入っています。

「最初から考え直す」を選んだ場合には、色々とフラグを消しておく必要があるので、変数12=0に初期化し、右側にいる画像たちを消去し、パーティを全員解雇して、先頭の画像を再表示させ、ループの中に戻してやります。


「これでOK」を押した場合には、ループに返らず終了処理へ進みます。

ピクチャの消去:#1
ピクチャの消去:#2
ピクチャの消去:#3
ピクチャの消去:#4
ピクチャの消去:#5
ピクチャの消去:#6
ピクチャの消去:#7
ピクチャの消去:#8
ピクチャの消去:#9
ピクチャの消去:#10
ピクチャの消去:#11
ピクチャの消去:#12
ピクチャの消去:#13
ピクチャの消去:#14

表示している全てのピクチャを消去して終わりです。


セルフスイッチの操作:B = ON

今回の内容は自動実行イベントで作っているので、セルフスイッチをONにして終了してページを切り替えています。



コアの内容は以上ですが、中々大変ですね。
でも、まだまだ終わりじゃありませんよ。


それでは、お待ちかね(?)のコモンイベント群の内容に参りましょう。

これから、まだまだ長い奴が15個あるんです。頑張ってください。


コモンイベント:パーティ選択(先頭)

条件分岐:画像09 = 1
変数の操作:#0015 Level = フォリアのレベル
変数の操作:#0016 Exp = フォリアの経験値
プラグインコマンド:PSM_SHOW_POPUP 1 4 816 54 -1 \N[1]
プラグインコマンド:PSM_SHOW_POPUP 2 5 816 88 -1 \_\_Lv.\v[15]\_EXP.\v[16]
プラグインコマンド:PSM_SHOW_POPUP 3 5 816 142 -1 活発で、体を動かすことが好き。
プラグインコマンド:PSM_SHOW_POPUP 4 5 816 162 -1 楽天家で怖い物知らずな性格が災い
プラグインコマンド:PSM_SHOW_POPUP 15 5 816 182 -1 し、とかく危険に突っ込みがち。
プラグインコマンド:PSM_SHOW_POPUP 16 5 816 202 -1 洗練されたナイフ捌きを見せる。
プラグインコマンド:PSM_SHOW_POPUP 13 3 816 54 -1 種族:エルフ
プラグインコマンド:PSM_SHOW_POPUP 14 3 816 68 -1 属性:木
ピクチャの表示:#9, St_ElfA_01, 左上 (251,105), (100%,100%), 255, 通常

分岐終了
条件分岐:画像09 = 5
変数の操作:#0015 Level = シェンメイのレベル
変数の操作:#0016 Exp = シェンメイの経験値
プラグインコマンド:PSM_SHOW_POPUP 1 4 816 54 -1 \N[5]
プラグインコマンド:PSM_SHOW_POPUP 2 5 816 88 -1 \_\_Lv.\v[15]\_EXP.\v[16]
プラグインコマンド:PSM_SHOW_POPUP 3 5 816 142 -1 勝ち気でプライドが高く、負けず嫌
プラグインコマンド:PSM_SHOW_POPUP 4 5 816 162 -1 いな性格。負けると泣くほど悔しが
プラグインコマンド:PSM_SHOW_POPUP 15 5 816 162 -1 る。俊敏な動きと強力な打撃で相手
プラグインコマンド:PSM_SHOW_POPUP 16 5 816 162 -1 を打ち倒す。
プラグインコマンド:PSM_SHOW_POPUP 13 3 816 54 -1 種族:獣
プラグインコマンド:PSM_SHOW_POPUP 14 3 816 68 -1 属性:火
ピクチャの表示:#9, St_pugilist, 左上 (251,105), (100%,100%), 255, 通常

分岐終了
条件分岐:画像09 = 8
変数の操作:#0015 Level = ディーヴァのレベル
変数の操作:#0016 Exp = ディーヴァの経験値
プラグインコマンド:PSM_SHOW_POPUP 1 4 816 54 -1 \N[8]
プラグインコマンド:PSM_SHOW_POPUP 2 5 816 88 -1 \_\_Lv.\v[15]\_EXP.\v[16]
プラグインコマンド:PSM_SHOW_POPUP 3 5 816 142 -1 15文字
プラグインコマンド:PSM_SHOW_POPUP 4 5 816 162 -1 15文字
プラグインコマンド:PSM_SHOW_POPUP 15 5 816 162 -1 15文字
プラグインコマンド:PSM_SHOW_POPUP 16 5 816 162 -1 15文字
プラグインコマンド:PSM_SHOW_POPUP 13 3 816 54 -1 種族:悪魔
プラグインコマンド:PSM_SHOW_POPUP 14 3 816 68 -1 属性:闇
ピクチャの表示:#9, St_devilgirl, 左上 (251,105), (100%,100%), 255, 通常

分岐終了
条件分岐:画像09 = 10
変数の操作:#0015 Level = リーフィアのレベル
変数の操作:#0016 Exp = リーフィアの経験値
プラグインコマンド:PSM_SHOW_POPUP 1 4 816 54 -1 \N[10]
プラグインコマンド:PSM_SHOW_POPUP 2 5 816 88 -1 \_\_Lv.\v[15]\_EXP.\v[16]
プラグインコマンド:PSM_SHOW_POPUP 3 5 816 142 -1 15文字
プラグインコマンド:PSM_SHOW_POPUP 4 5 816 162 -1 15文字
プラグインコマンド:PSM_SHOW_POPUP 15 5 816 162 -1 15文字
プラグインコマンド:PSM_SHOW_POPUP 16 5 816 162 -1 15文字
プラグインコマンド:PSM_SHOW_POPUP 13 3 816 54 -1 種族:妖精
プラグインコマンド:PSM_SHOW_POPUP 14 3 816 68 -1 属性:風
ピクチャの表示:#9, St_rhythm-fairy, 左上 (251,105), (100%,100%), 255, 通常

分岐終了
条件分岐:画像09 = 12
変数の操作:#0015 Level = スミレのレベル
変数の操作:#0016 Exp = スミレの経験値
プラグインコマンド:PSM_SHOW_POPUP 1 4 816 54 -1 \N[12]
プラグインコマンド:PSM_SHOW_POPUP 2 5 816 88 -1 \_\_Lv.\v[15]\_EXP.\v[16]
プラグインコマンド:PSM_SHOW_POPUP 3 5 816 142 -1 15文字
プラグインコマンド:PSM_SHOW_POPUP 4 5 816 162 -1 15文字
プラグインコマンド:PSM_SHOW_POPUP 15 5 816 162 -1 15文字
プラグインコマンド:PSM_SHOW_POPUP 16 5 816 162 -1 15文字
プラグインコマンド:PSM_SHOW_POPUP 13 3 816 54 -1 種族:人
プラグインコマンド:PSM_SHOW_POPUP 14 3 816 68 -1 属性:土
ピクチャの表示:#9, St_Fencer, 左上 (251,105), (100%,100%), 255, 通常

分岐終了
条件分岐:画像09 = 13
変数の操作:#0015 Level = コクリコのレベル
変数の操作:#0016 Exp = コクリコの経験値
プラグインコマンド:PSM_SHOW_POPUP 1 4 816 54 -1 \N[13]
プラグインコマンド:PSM_SHOW_POPUP 2 5 816 88 -1 \_\_Lv.\v[15]\_EXP.\v[16]
プラグインコマンド:PSM_SHOW_POPUP 3 5 816 142 -1 15文字
プラグインコマンド:PSM_SHOW_POPUP 4 5 816 162 -1 15文字
プラグインコマンド:PSM_SHOW_POPUP 15 5 816 162 -1 15文字
プラグインコマンド:PSM_SHOW_POPUP 16 5 816 162 -1 15文字
プラグインコマンド:PSM_SHOW_POPUP 13 3 816 54 -1 種族:人
プラグインコマンド:PSM_SHOW_POPUP 14 3 816 68 -1 属性:闇
ピクチャの表示:#9, St_GothicLolita_02, 左上 (251,105), (100%,100%), 255, 通常

分岐終了
条件分岐:画像09 = 14
変数の操作:#0015 Level = クロードのレベル
変数の操作:#0016 Exp = クロードの経験値
プラグインコマンド:PSM_SHOW_POPUP 1 4 816 54 -1 \N[14]
プラグインコマンド:PSM_SHOW_POPUP 2 5 816 88 -1 \_\_Lv.\v[15]\_EXP.\v[16]
プラグインコマンド:PSM_SHOW_POPUP 3 5 816 142 -1 15文字
プラグインコマンド:PSM_SHOW_POPUP 4 5 816 162 -1 15文字
プラグインコマンド:PSM_SHOW_POPUP 15 5 816 162 -1 15文字
プラグインコマンド:PSM_SHOW_POPUP 16 5 816 162 -1 15文字
プラグインコマンド:PSM_SHOW_POPUP 13 3 816 54 -1 種族:人
プラグインコマンド:PSM_SHOW_POPUP 14 3 816 68 -1 属性:無
ピクチャの表示:#9, St_Lady-butler, 左上 (251,105), (100%,100%), 255, 通常

分岐終了
条件分岐:画像09 = 21
変数の操作:#0015 Level = コハルのレベル
変数の操作:#0016 Exp = コハルの経験値
プラグインコマンド:PSM_SHOW_POPUP 1 4 816 54 -1 \N[21]
プラグインコマンド:PSM_SHOW_POPUP 2 5 816 88 -1 \_\_Lv.\v[15]\_EXP.\v[16]
プラグインコマンド:PSM_SHOW_POPUP 3 5 816 142 -1 15文字
プラグインコマンド:PSM_SHOW_POPUP 4 5 816 162 -1 15文字
プラグインコマンド:PSM_SHOW_POPUP 15 5 816 162 -1 15文字
プラグインコマンド:PSM_SHOW_POPUP 16 5 816 162 -1 15文字
プラグインコマンド:PSM_SHOW_POPUP 13 3 816 54 -1 種族:人
プラグインコマンド:PSM_SHOW_POPUP 14 3 816 68 -1 属性:水
ピクチャの表示:#9, St_little Fencer, 左上 (251,105), (100%,100%), 255, 通常

分岐終了
プラグインコマンド:PSM_MOVE_POPUP 1 516 54 10
プラグインコマンド:PSM_MOVE_POPUP 2 516 88 10
プラグインコマンド:PSM_MOVE_POPUP 3 516 142 10
プラグインコマンド:PSM_MOVE_POPUP 4 516 162 10
プラグインコマンド:PSM_MOVE_POPUP 15 516 182 10
プラグインコマンド:PSM_MOVE_POPUP 16 516 202 10
プラグインコマンド:PSM_MOVE_POPUP 13 712 54 10
プラグインコマンド:PSM_MOVE_POPUP 14 712 68 10

このコモンイベントでは、先頭にあるピクチャ9番の設定を行っています。

変数10の値を参照し、それによって表示する内容(キャラクター)をそれぞれ決定しています。

構造的には全部一緒ですので、1人分の内容を作ったらコピペしてテキストやら参照するキャラクターやら画像やらを弄っていきます。

全員分をここで記述しておきますので、仲間がたくさんいるゲームでは設定が大変です。

最後のプラグインコマンドたちは、演出です。テキストの初期表示場所は画面外に設定してあるので、最後のプラグインコマンドで画面の横からシュッとスライドして出てくるような設定となっています。


はい、これで1つ終わり。
さくさく行きましょー。


次に、コモンイベント:パーティ選択(2左)を見ていきましょう。
条件分岐:画像08 = 1
ピクチャの表示:#8, St_ElfA_01, 左上 (141,100), (95%,95%), 180, 通常

分岐終了
条件分岐:画像08 = 5
ピクチャの表示:#8, St_pugilist, 左上 (141,100), (95%,95%), 180, 通常

分岐終了
条件分岐:画像08 = 8
ピクチャの表示:#8, St_devilgirl, 左上 (141,100), (95%,95%), 180, 通常

分岐終了
条件分岐:画像08 = 10
ピクチャの表示:#8, St_rhythm-fairy, 左上 (141,100), (95%,95%), 180, 通常

分岐終了
条件分岐:画像08 = 12
ピクチャの表示:#8, St_Fencer, 左上 (141,100), (95%,95%), 180, 通常

分岐終了
条件分岐:画像08 = 13
ピクチャの表示:#8, St_GothicLolita_02, 左上 (141,100), (95%,95%), 180, 通常

分岐終了
条件分岐:画像08 = 14
ピクチャの表示:#8, St_Lady-butler, 左上 (141,100), (95%,95%), 180, 通常

分岐終了
条件分岐:画像08 = 21
ピクチャの表示:#8, St_little Fencer, 左上 (141,100), (95%,95%), 180, 通常

分岐終了

ここでは、先頭から2番目(左側)であるピクチャ8番の設定を行っています。

変数9の値によって表示する画像を振り分けているだけでした。

以上。


次、コモンイベント:パーティ選択(左3)です。
条件分岐:画像06 = 1
ピクチャの表示:#6, St_ElfA_01, 左上 (41,90), (85%,85%), 130, 通常

分岐終了
条件分岐:画像06 = 5
ピクチャの表示:#6, St_pugilist, 左上 (41,90), (85%,85%), 130, 通常

分岐終了
条件分岐:画像06 = 8
ピクチャの表示:#6, St_devilgirl, 左上 (41,90), (85%,85%), 130, 通常

分岐終了
条件分岐:画像06 = 10
ピクチャの表示:#6, St_rhythm-fairy, 左上 (41,90), (85%,85%), 130, 通常

分岐終了
条件分岐:画像06 = 12
ピクチャの表示:#6, St_Fencer, 左上 (41,90), (85%,85%), 130, 通常

分岐終了
条件分岐:画像06 = 13
ピクチャの表示:#6, St_GothicLolita_02, 左上 (41,90), (85%,85%), 130, 通常

分岐終了
条件分岐:画像06 = 14
ピクチャの表示:#6, St_Lady-butler, 左上 (41,90), (85%,85%), 130, 通常

分岐終了
条件分岐:画像06 = 21
ピクチャの表示:#6, St_little Fencer, 左上 (41,90), (85%,85%), 130, 通常

分岐終了

ここでは、先頭から3番目(左側)であるピクチャ6番の画像設定を行っています。

内容は先ほどのものに準じます。変数7を条件分岐に、画像の座標、拡大率、透明度を編集してください。

以上。


次は、コモンイベント:パーティ選択(4左)です。
条件分岐:画像05 = 1
ピクチャの表示:#5, St_ElfA_01, 左上 (91,80), (85%,85%), 0, 通常

分岐終了
条件分岐:画像05 = 5
ピクチャの表示:#5, St_pugilist, 左上 (91,80), (85%,85%), 0, 通常

分岐終了
条件分岐:画像05 = 8
ピクチャの表示:#5, St_devilgirl, 左上 (91,80), (85%,85%), 0, 通常

分岐終了
条件分岐:画像05 = 10
ピクチャの表示:#5, St_rhythm-fairy, 左上 (91,80), (85%,85%), 0, 通常

分岐終了
条件分岐:画像05 = 12
ピクチャの表示:#5, St_Fencer, 左上 (91,80), (85%,85%), 0, 通常

分岐終了
条件分岐:画像05 = 13
ピクチャの表示:#5, St_GothicLolita_02, 左上 (91,80), (85%,85%), 0, 通常

分岐終了
条件分岐:画像05 = 14
ピクチャの表示:#5, St_Lady-butler, 左上 (91,80), (85%,85%), 0, 通常

分岐終了
条件分岐:画像05 = 21
ピクチャの表示:#5, St_little Fencer, 左上 (91,80), (85%,85%), 0, 通常

分岐終了

ここでは、先頭から4番目(左側)であるピクチャ5番の画像設定を行っています。
もういいですよね?

座標と透明度、拡大率を確認してください。
ちなみに、変数6を使ってます。


次は、コモンイベント:パーティ選択(2右)です。
条件分岐:画像07 = 1
ピクチャの表示:#7, St_ElfA_01, 左上 (361,100), (95%,95%), 180, 通常

分岐終了

  (以下省略)


面倒くさいので、もう省略してます。
1人作ったら、あとは表示画像を変えるだけです。

ここでは、先頭から2番目(右側)であるピクチャ7番の設定(変数8を(以下略)


次は、コモンイベント:パーティ選択(3右)です。
条件分岐:画像04 = 1
ピクチャの表示:#4, St_ElfA_01, 左上 (461,90), (85%,85%), 130, 通常

分岐終了

  (以下省略)


ここでは、先頭から3番目(右側)であるピクチャ4番(変数5(以下略)


コモンイベント:パーティ選択(4右)
条件分岐:画像03 = 1
ピクチャの表示:#3, St_ElfA_01, 左上 (411,80), (85%,85%), 0, 通常

分岐終了

  (以下省略)


ここでは、先頭から4番目(右側)であるピクチャ3番(変数4(以下略)


以上、とりあえず駆け足でコモンイベント7つ紹介しました。

ぶっちゃけ、パーティ選択(先頭)以外は分けずに1つにしても構いません。ただ、編集するとき(キャラクター追加するとき)に探すのが面倒くさくなるので、コモンイベントの枠に余裕があれば分けていた方が便利です。


それでは、次にコモンイベント:右押時画像変更を見てみましょう。

プラグインコマンド:PSM_ERASE_POPUP 1 0
プラグインコマンド:PSM_ERASE_POPUP 2 0
プラグインコマンド:PSM_ERASE_POPUP 3 0
プラグインコマンド:PSM_ERASE_POPUP 4 0
プラグインコマンド:PSM_ERASE_POPUP 13 0
プラグインコマンド:PSM_ERASE_POPUP 14 0
プラグインコマンド:PSM_ERASE_POPUP 15 0
プラグインコマンド:PSM_ERASE_POPUP 16 0
変数の操作:#0006 画像05 = 画像06
変数の操作:#0007 画像06 = 画像08
変数の操作:#0009 画像08 = 画像09
変数の操作:#0010 画像09 = 画像07
変数の操作:#0008 画像07 = 画像04
変数の操作:#0005 画像04 = 画像03
変数の操作:#0011 画像XX = 画像03
コモンイベント:画像決定(右回り)
変数の操作:#0004 画像03 = 画像XX
コモンイベント:パーティ選択(先頭)
コモンイベント:パーティ選択(2左)
コモンイベント:パーティ選択(3左)
コモンイベント:パーティ選択(4左)
コモンイベント:パーティ選択(2右)
コモンイベント:パーティ選択(3右)
コモンイベント:パーティ選択(4右)

ここでは、→キーを押して画像を移動させた後の、再表示を行っています。

一応、プラグインによるテキストを削除しておき、変数を1つずつ渡していきます。これらの変数は、画像と同期させるための変数ですので、画像の動きに合わせて渡していきます。
変数の操作:#0006 画像05 = 画像06
変数の操作:#0007 画像06 = 画像08
変数の操作:#0009 画像08 = 画像09
変数の操作:#0010 画像09 = 画像07
変数の操作:#0008 画像07 = 画像04
変数の操作:#0005 画像04 = 画像03

この部分までは、順当に隣の画像の変数を移していくだけですが、
変数の操作:#0011 画像XX = 画像03
コモンイベント:画像決定(右回り)
変数の操作:#0004 画像03 = 画像XX

ここだけ、一時保管用の変数11に移しておき、コモンイベントを挟んでいます。

ちなみに、ピクチャ3番は右奥4番目の画像ですので、これが左に1個ずれる際に、新しい画像が現れるんですね。

すぐに後述しますが、コモンイベント:画像決定(右回り)では、この新しく現れる画像を決定しています。

で、その下
コモンイベント:パーティ選択(先頭)
コモンイベント:パーティ選択(2左)
コモンイベント:パーティ選択(3左)
コモンイベント:パーティ選択(4左)
コモンイベント:パーティ選択(2右)
コモンイベント:パーティ選択(3右)
コモンイベント:パーティ選択(4右)

これは、先ほど駆け足で紹介したコモンイベントです。表示されている全ての画像を、新しく設定した画像(変数)で再表示させます。

これにより、画像が1つ横にずれる→もとの位置に戻す(しかし、画像自体は1つずれた状態)という操作が行われ、結果として隣のピクチャ番号へ画像だけを渡した形となります。

この操作によって、ピクチャ番号を変えたり増やしたりすることなく、次々と新しい画像を表示させることが可能となっている訳ですね。


では、先ほど出てきたコモンイベント:画像決定(右回り)を見ていきましょう。

条件分岐:画像XX = 24
ラベルジャンプ:セレクト01

分岐終了
条件分岐:画像XX = 23
ラベルジャンプ:セレクト24

分岐終了
条件分岐:画像XX = 22
ラベルジャンプ:セレクト23

分岐終了
条件分岐:画像XX = 21
ラベルジャンプ:セレクト22

分岐終了
条件分岐:画像XX = 20
ラベルジャンプ:セレクト21

分岐終了
条件分岐:画像XX = 19
ラベルジャンプ:セレクト20

分岐終了
条件分岐:画像XX = 18
ラベルジャンプ:セレクト19

分岐終了
条件分岐:画像XX = 17
ラベルジャンプ:セレクト18

分岐終了
条件分岐:画像XX = 16
ラベルジャンプ:セレクト17

分岐終了
条件分岐:画像XX = 15
ラベルジャンプ:セレクト16

分岐終了
条件分岐:画像XX = 14
ラベルジャンプ:セレクト15

分岐終了
条件分岐:画像XX = 13
ラベルジャンプ:セレクト14

分岐終了
条件分岐:画像XX = 12
ラベルジャンプ:セレクト13

分岐終了
条件分岐:画像XX = 11
ラベルジャンプ:セレクト12

分岐終了
条件分岐:画像XX = 10
ラベルジャンプ:セレクト11

分岐終了
条件分岐:画像XX = 9
ラベルジャンプ:セレクト10

分岐終了
条件分岐:画像XX = 8
ラベルジャンプ:セレクト09

分岐終了
条件分岐:画像XX = 7
ラベルジャンプ:セレクト08

分岐終了
条件分岐:画像XX = 6
ラベルジャンプ:セレクト07

分岐終了
条件分岐:画像XX = 5
ラベルジャンプ:セレクト06

分岐終了
条件分岐:画像XX = 4
ラベルジャンプ:セレクト05

分岐終了
条件分岐:画像XX = 3
ラベルジャンプ:セレクト04

分岐終了
条件分岐:画像XX = 2
ラベルジャンプ:セレクト03

分岐終了
条件分岐:画像XX = 1
ラベルジャンプ:セレクト02

分岐終了
条件分岐:使用不可がON
ラベル:セレクト01
条件分岐:【アクター】01(エルフ1)がON
変数の操作:#0011 画像XX = 1
ラベルジャンプ:決定

分岐終了
ラベル:セレクト02
条件分岐:【アクター】02(エルフ2)がON
変数の操作:#0011 画像XX = 2
ラベルジャンプ:決定

分岐終了
ラベル:セレクト03
条件分岐:【アクター】03(エルフ3)がON
変数の操作:#0011 画像XX = 3
ラベルジャンプ:決定

分岐終了
ラベル:セレクト04
条件分岐:【アクター】04(エルフ4)がON
変数の操作:#0011 画像XX = 4
ラベルジャンプ:決定

分岐終了
ラベル:セレクト05
条件分岐:【アクター】05(動物1)がON
変数の操作:#0011 画像XX = 5
ラベルジャンプ:決定

分岐終了
ラベル:セレクト06
条件分岐:【アクター】06(動物2)がON
変数の操作:#0011 画像XX = 6
ラベルジャンプ:決定

分岐終了
ラベル:セレクト07
条件分岐:【アクター】07(動物3)がON
変数の操作:#0011 画像XX = 7
ラベルジャンプ:決定

分岐終了
ラベル:セレクト08
条件分岐:【アクター】08(悪魔1)がON
変数の操作:#0011 画像XX = 8
ラベルジャンプ:決定

分岐終了
ラベル:セレクト09
条件分岐:【アクター】09(悪魔2)がON
変数の操作:#0011 画像XX = 9
ラベルジャンプ:決定

分岐終了
ラベル:セレクト10
条件分岐:【アクター】10(妖精1)がON
変数の操作:#0011 画像XX = 10
ラベルジャンプ:決定

分岐終了
ラベル:セレクト11
条件分岐:【アクター】11(妖精2)がON
変数の操作:#0011 画像XX = 11
ラベルジャンプ:決定

分岐終了
ラベル:セレクト12
条件分岐:【アクター】12(人1)がON
変数の操作:#0011 画像XX = 12
ラベルジャンプ:決定

分岐終了
ラベル:セレクト13
条件分岐:【アクター】13(人2)がON
変数の操作:#0011 画像XX = 13
ラベルジャンプ:決定

分岐終了
ラベル:セレクト14
条件分岐:【アクター】14(人3)がON
変数の操作:#0011 画像XX = 14
ラベルジャンプ:決定

分岐終了
ラベル:セレクト15
条件分岐:【アクター】15(人4)がON
変数の操作:#0011 画像XX = 15
ラベルジャンプ:決定

分岐終了
ラベル:セレクト16
条件分岐:【アクター】16(人5)がON
変数の操作:#0011 画像XX = 16
ラベルジャンプ:決定

分岐終了
ラベル:セレクト17
条件分岐:【アクター】17(人6)がON
変数の操作:#0011 画像XX = 17
ラベルジャンプ:決定

分岐終了
ラベル:セレクト18
条件分岐:【アクター】18(人7)がON
変数の操作:#0011 画像XX = 18
ラベルジャンプ:決定

分岐終了
ラベル:セレクト19
条件分岐:【アクター】19(人8)がON
変数の操作:#0011 画像XX = 19
ラベルジャンプ:決定

分岐終了
ラベル:セレクト20
条件分岐:【アクター】20(人9)がON
変数の操作:#0011 画像XX = 20
ラベルジャンプ:決定

分岐終了
ラベル:セレクト21
条件分岐:【アクター】21(人10)がON
変数の操作:#0011 画像XX = 21
ラベルジャンプ:決定

分岐終了
ラベル:セレクト22
条件分岐:【アクター】22(人11)がON
変数の操作:#0011 画像XX = 22
ラベルジャンプ:決定

分岐終了
ラベル:セレクト23
条件分岐:【アクター】23(人12)がON
変数の操作:#0011 画像XX = 23
ラベルジャンプ:決定

分岐終了
ラベル:セレクト24
条件分岐:【アクター】24(人13)がON
変数の操作:#0011 画像XX = 24
ラベルジャンプ:決定

分岐終了
ラベルジャンプ:セレクト01

分岐終了
ラベル:決定

若干ネタバレになりますが、今回の例では、実はキャラクターが24人います(笑)

で、ここの内容では、先ほど一時保管させたピクチャ3番と連動している変数次の画像を検索する処理となっています。

例えば、ピクチャ3番に割り当てられている変数4=10だった場合。

10の次は普通に考えれば11です。しかし、11番のキャラクターが選択できない状態の場合は、12番を探さなければいけません。12番もダメなら13番・・・という風に、物語の中ではどの番号のキャラが現時点で仲間に出来る状態なのか分かりません。

そこで、このコモンイベントでは、アクターごとに割り振られたスイッチをフラグにして振り分けを行っています。

ピクチャ3番(変数4=10)なら、ラベルジャンプで11番以降の条件分岐が書かれた地点まで飛ばし、順番にスイッチの状態を見ていきます。ONのものが見つかった時点で、その画像()を選択して、最後のラベルに飛ばします。最後まで行っても見つからない場合は、また1番目に戻って探し直します。

ここで、一時変数11を再設定したら、前のコモンイベント変数4にその数値を渡して、新しい画像に更新。これで、新しい画像が画面上に出てくるという仕組みです。


では、次。コモンイベント:左押時画像変更を見ていきましょう。
プラグインコマンド:PSM_ERASE_POPUP 1 0
プラグインコマンド:PSM_ERASE_POPUP 2 0
プラグインコマンド:PSM_ERASE_POPUP 3 0
プラグインコマンド:PSM_ERASE_POPUP 4 0
プラグインコマンド:PSM_ERASE_POPUP 13 0
プラグインコマンド:PSM_ERASE_POPUP 14 0
プラグインコマンド:PSM_ERASE_POPUP 15 0
プラグインコマンド:PSM_ERASE_POPUP 16 0
変数の操作:#0004 画像03 = 画像04
変数の操作:#0005 画像04 = 画像07
変数の操作:#0008 画像07 = 画像09
変数の操作:#0010 画像09 = 画像08
変数の操作:#0009 画像08 = 画像06
変数の操作:#0007 画像06 = 画像05
変数の操作:#0011 画像XX = 画像05
コモンイベント:画像決定(左回り)
変数の操作:#0006 画像05 = 画像XX
コモンイベント:パーティ選択(先頭)
コモンイベント:パーティ選択(2左)
コモンイベント:パーティ選択(3左)
コモンイベント:パーティ選択(4左)
コモンイベント:パーティ選択(2右)
コモンイベント:パーティ選択(3右)
コモンイベント:パーティ選択(4右)

内容的にはコモンイベント:右押時画像変更に準じますが、今度は逆回転になるので、そうなるように変数を受け渡していきます。

今回、新しい画像が出てくるのはピクチャ5番(左奥)ですので、ここの変数が一時保管されてコモンイベント:画像決定(左回り)で検索され、設定され直されるわけですね。


というわけで、次。コモンイベント:画像決定(左回り)です。
条件分岐:画像XX = 24
ラベルジャンプ:セレクト23

分岐終了
条件分岐:画像XX = 23
ラベルジャンプ:セレクト22

分岐終了
条件分岐:画像XX = 22
ラベルジャンプ:セレクト21

分岐終了
条件分岐:画像XX = 21
ラベルジャンプ:セレクト20

分岐終了
条件分岐:画像XX = 20
ラベルジャンプ:セレクト19

分岐終了
条件分岐:画像XX = 19
ラベルジャンプ:セレクト18

分岐終了
条件分岐:画像XX = 18
ラベルジャンプ:セレクト17

分岐終了
条件分岐:画像XX = 17
ラベルジャンプ:セレクト16

分岐終了
条件分岐:画像XX = 16
ラベルジャンプ:セレクト15

分岐終了
条件分岐:画像XX = 15
ラベルジャンプ:セレクト14

分岐終了
条件分岐:画像XX = 14
ラベルジャンプ:セレクト13

分岐終了
条件分岐:画像XX = 13
ラベルジャンプ:セレクト12

分岐終了
条件分岐:画像XX = 12
ラベルジャンプ:セレクト11

分岐終了
条件分岐:画像XX = 11
ラベルジャンプ:セレクト10

分岐終了
条件分岐:画像XX = 10
ラベルジャンプ:セレクト09

分岐終了
条件分岐:画像XX = 9
ラベルジャンプ:セレクト08

分岐終了
条件分岐:画像XX = 8
ラベルジャンプ:セレクト07

分岐終了
条件分岐:画像XX = 7
ラベルジャンプ:セレクト06

分岐終了
条件分岐:画像XX = 6
ラベルジャンプ:セレクト05

分岐終了
条件分岐:画像XX = 5
ラベルジャンプ:セレクト04

分岐終了
条件分岐:画像XX = 4
ラベルジャンプ:セレクト03

分岐終了
条件分岐:画像XX = 3
ラベルジャンプ:セレクト02

分岐終了
条件分岐:画像XX = 2
ラベルジャンプ:セレクト01

分岐終了
条件分岐:画像XX = 1
ラベルジャンプ:セレクト24

分岐終了
条件分岐:使用不可がON
ラベル:セレクト24
条件分岐:【アクター】24(人13)がON
変数の操作:#0011 画像XX = 24
ラベルジャンプ:決定

分岐終了
ラベル:セレクト23
条件分岐:【アクター】23(人12)がON
変数の操作:#0011 画像XX = 23
ラベルジャンプ:決定

分岐終了
ラベル:セレクト22
条件分岐:【アクター】22(人11)がON
変数の操作:#0011 画像XX = 22
ラベルジャンプ:決定

分岐終了
ラベル:セレクト21
条件分岐:【アクター】21(人10)がON
変数の操作:#0011 画像XX = 21
ラベルジャンプ:決定

分岐終了
ラベル:セレクト20
条件分岐:【アクター】20(人9)がON
変数の操作:#0011 画像XX = 20
ラベルジャンプ:決定

分岐終了
ラベル:セレクト19
条件分岐:【アクター】19(人8)がON
変数の操作:#0011 画像XX = 19
ラベルジャンプ:決定

分岐終了
ラベル:セレクト18
条件分岐:【アクター】18(人7)がON
変数の操作:#0011 画像XX = 18
ラベルジャンプ:決定

分岐終了
ラベル:セレクト17
条件分岐:【アクター】17(人6)がON
変数の操作:#0011 画像XX = 17
ラベルジャンプ:決定

分岐終了
ラベル:セレクト16
条件分岐:【アクター】16(人5)がON
変数の操作:#0011 画像XX = 16
ラベルジャンプ:決定

分岐終了
ラベル:セレクト15
条件分岐:【アクター】15(人4)がON
変数の操作:#0011 画像XX = 15
ラベルジャンプ:決定

分岐終了
ラベル:セレクト14
条件分岐:【アクター】14(人3)がON
変数の操作:#0011 画像XX = 14
ラベルジャンプ:決定

分岐終了
ラベル:セレクト13
条件分岐:【アクター】13(人2)がON
変数の操作:#0011 画像XX = 13
ラベルジャンプ:決定

分岐終了
ラベル:セレクト12
条件分岐:【アクター】12(人1)がON
変数の操作:#0011 画像XX = 12
ラベルジャンプ:決定

分岐終了
ラベル:セレクト11
条件分岐:【アクター】11(妖精2)がON
変数の操作:#0011 画像XX = 11
ラベルジャンプ:決定

分岐終了
ラベル:セレクト10
条件分岐:【アクター】10(妖精1)がON
変数の操作:#0011 画像XX = 10
ラベルジャンプ:決定

分岐終了
ラベル:セレクト09
条件分岐:【アクター】09(悪魔2)がON
変数の操作:#0011 画像XX = 9
ラベルジャンプ:決定

分岐終了
ラベル:セレクト08
条件分岐:【アクター】08(悪魔1)がON
変数の操作:#0011 画像XX = 8
ラベルジャンプ:決定

分岐終了
ラベル:セレクト07
条件分岐:【アクター】07(動物3)がON
変数の操作:#0011 画像XX = 7
ラベルジャンプ:決定

分岐終了
ラベル:セレクト06
条件分岐:【アクター】06(動物2)がON
変数の操作:#0011 画像XX = 6
ラベルジャンプ:決定

分岐終了
ラベル:セレクト05
条件分岐:【アクター】05(動物1)がON
変数の操作:#0011 画像XX = 5
ラベルジャンプ:決定

分岐終了
ラベル:セレクト04
条件分岐:【アクター】04(エルフ4)がON
変数の操作:#0011 画像XX = 4
ラベルジャンプ:決定

分岐終了
ラベル:セレクト03
条件分岐:【アクター】03(エルフ3)がON
変数の操作:#0011 画像XX = 3
ラベルジャンプ:決定

分岐終了
ラベル:セレクト02
条件分岐:【アクター】02(エルフ2)がON
変数の操作:#0011 画像XX = 2
ラベルジャンプ:決定

分岐終了
ラベル:セレクト01
条件分岐:【アクター】01(エルフ1)がON
変数の操作:#0011 画像XX = 1
ラベルジャンプ:決定

分岐終了
ラベルジャンプ:セレクト24

分岐終了
ラベル:決定

非常にややこしいですが、こちらも逆回りなので、数字の動きも逆方向となります。

右回り時は1→24の方向に書き込んでいきましたが、左回り時は24→1の方向となります。

紛らわしいですが、コピペして書き換えで頑張りましょう。


さて、残すところあと4つ。

次は、コモンイベント:キャラクター選択確認です。


変数の操作:#0011 画像XX = 画像09
条件分岐:画像XX = 1
条件分岐:フォリアがパーティにいる
SEの演奏:Buzzer1 (90, 100, 0)
セルフスイッチの操作:A = ON

それ以外のとき
ピクチャの表示:#10, Elf-A-01, 左上 (383,238), (10%,10%), 0, 通常
ピクチャの移動:#10, 左上 (157,31), (100%,100%), 255, 通常, 15フレーム
文章:なし, ウィンドウ, 下
文章\c[6]\n[1]\c[0]
文章「私を連れてってくれるの?

分岐終了

分岐終了
条件分岐:画像XX = 5
条件分岐:シェンメイがパーティにいる
SEの演奏:Buzzer1 (90, 100, 0)
セルフスイッチの操作:A = ON

それ以外のとき
ピクチャの表示:#10, fantasy-heroine-girl pugilist01, 左上 (383,238), (10%,10%), 0, 通常
ピクチャの移動:#10, 左上 (157,31), (100%,100%), 255, 通常, 15フレーム
文章:なし, ウィンドウ, 下
文章\c[6]\n[5]\c[0]
文章「にゅふふ~。アタイの力が必要かな?

分岐終了

分岐終了
条件分岐:画像XX = 8
条件分岐:ディーヴァがパーティにいる
SEの演奏:Buzzer1 (90, 100, 0)
セルフスイッチの操作:A = ON

それ以外のとき
ピクチャの表示:#10, fantasy-heroine-girl devilgirl01, 左上 (383,238), (10%,10%), 0, 通常
ピクチャの移動:#10, 左上 (157,31), (100%,100%), 255, 通常, 15フレーム
文章:なし, ウィンドウ, 下
文章\c[6]\n[8]\c[0]
文章「小生なんかでよろしいのですか?

分岐終了

分岐終了
条件分岐:画像XX = 10
条件分岐:リーフィアがパーティにいる
SEの演奏:Buzzer1 (90, 100, 0)
セルフスイッチの操作:A = ON

それ以外のとき
ピクチャの表示:#10, fantasy-heroine-girl rhythm-fairy01, 左上 (383,238), (10%,10%), 0, 通常
ピクチャの移動:#10, 左上 (157,31), (100%,100%), 255, 通常, 15フレーム
文章:なし, ウィンドウ, 下
文章\c[6]\n[10]\c[0]
文章「私で良ければ、力を貸すよ~?

分岐終了

分岐終了
条件分岐:画像XX = 12
条件分岐:スミレがパーティにいる
SEの演奏:Buzzer1 (90, 100, 0)
セルフスイッチの操作:A = ON

それ以外のとき
ピクチャの表示:#10, fantasy-heroine-girl Fencer01, 左上 (383,238), (10%,10%), 0, 通常
ピクチャの移動:#10, 左上 (157,31), (100%,100%), 255, 通常, 15フレーム
文章:なし, ウィンドウ, 下
文章\c[6]\n[12]\c[0]
文章「あら、ワタクシを連れて行ってくださるのですか?

分岐終了

分岐終了
条件分岐:画像XX = 13
条件分岐:コクリコがパーティにいる
SEの演奏:Buzzer1 (90, 100, 0)
セルフスイッチの操作:A = ON

それ以外のとき
ピクチャの表示:#10, Gothic-Lolita-01, 左上 (383,238), (10%,10%), 0, 通常
ピクチャの移動:#10, 左上 (157,31), (100%,100%), 255, 通常, 15フレーム
文章:なし, ウィンドウ, 下
文章\c[6]\n[13]\c[0]
文章「・・・私に何か、用?

分岐終了

分岐終了
条件分岐:画像XX = 14
条件分岐:クロードがパーティにいる
SEの演奏:Buzzer1 (90, 100, 0)
セルフスイッチの操作:A = ON

それ以外のとき
ピクチャの表示:#10, fantasy-heroine-girl Lady-butler01, 左上 (383,238), (10%,10%), 0, 通常
ピクチャの移動:#10, 左上 (157,31), (100%,100%), 255, 通常, 15フレーム
文章:なし, ウィンドウ, 下
文章\c[6]\n[14]\c[0]
文章「私にご用命であれば、いつでもお申し付けください。

分岐終了

分岐終了
条件分岐:画像XX = 21
条件分岐:コハルがパーティにいる
SEの演奏:Buzzer1 (90, 100, 0)
セルフスイッチの操作:A = ON

それ以外のとき
ピクチャの表示:#10, fantasy-heroine-girl little Fencer01, 左上 (383,238), (10%,10%), 0, 通常
ピクチャの移動:#10, 左上 (157,31), (100%,100%), 255, 通常, 15フレーム
文章:なし, ウィンドウ, 下
文章\c[6]\n[21]\c[0]
文章「あたしの出番? はりきっちゃうよぉ~っ!

分岐終了

分岐終了

ここでは、先頭の画像によって表示されるバストアップ画像と、簡単な会話を設定しています。

最初に一時変数11へ先頭画像と同期している変数10の値を入れます。

あとは、この変数の値をフラグとして、選択されているキャラクターが誰なのかを判別します。

そのキャラクターが仲間になっているかどうかで条件分岐させ、既に仲間となっていた場合は選択できないので、ブザーだけを鳴らしてセルフスイッチをONにします。前述しましたが、このスイッチがONの時は「連れていきますか?」というアナウンスが出ないように作っていましたね。

選択されたキャラクターが仲間になっていない場合には、バストアップ画像を表示して会話を出します。

これを全キャラクター分作っていきます。今回の例では8人だけですが、条件分岐をまるっとコピペして条件の数値と中身を書き換えることで、キャラクターを追加していけます。


次は、コモンイベント:パーティ追加ですね。
変数の操作:#0012 仲間選択数 += 1
条件分岐:仲間選択数 = 1
変数の操作:#0013 画像 X座標 = 0
変数の操作:#0014 画像 Y座標 = 240

分岐終了
条件分岐:仲間選択数 = 2
変数の操作:#0013 画像 X座標 = 0
変数の操作:#0014 画像 Y座標 = 288

分岐終了
条件分岐:仲間選択数 = 3
変数の操作:#0013 画像 X座標 = 0
変数の操作:#0014 画像 Y座標 = 336

分岐終了
条件分岐:仲間選択数 = 4
変数の操作:#0013 画像 X座標 = 0
変数の操作:#0014 画像 Y座標 = 384

分岐終了
変数の操作:#0011 画像XX = 画像09
条件分岐:仲間選択数 = 1
条件分岐:画像XX = 1
ピクチャの表示:#11, FH_elf1, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:フォリアを加える

分岐終了
条件分岐:画像XX = 5
ピクチャの表示:#11, FH_pugilist, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:シェンメイを加える

分岐終了
条件分岐:画像XX = 8
ピクチャの表示:#11, FH_devilgirl, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:ディーヴァを加える

分岐終了
条件分岐:画像XX = 10
ピクチャの表示:#11, FH_rhythm-fairy, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:リーフィアを加える

分岐終了
条件分岐:画像XX = 12
ピクチャの表示:#11, FH_Fencer, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:スミレを加える

分岐終了
条件分岐:画像XX = 13
ピクチャの表示:#11, FH_gothicLolita, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:コクリコを加える

分岐終了
条件分岐:画像XX = 14
ピクチャの表示:#11, FH_Lady-butler, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:クロードを加える

分岐終了
条件分岐:画像XX = 21
ピクチャの表示:#11, FH_little Fencer, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:コハルを加える

分岐終了
プラグインコマンド:PSM_SHOW_POPUP 5 0 50 240 -1 \p[1]
プラグインコマンド:PSM_SHOW_POPUP 6 1 50 270 -1 \_\_Lv.\v[15]\_EXP.\v[16]

分岐終了
条件分岐:仲間選択数 = 2
条件分岐:画像XX = 1
ピクチャの表示:#12, FH_elf1, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:フォリアを加える

分岐終了
条件分岐:画像XX = 5
ピクチャの表示:#12, FH_pugilist, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:シェンメイを加える

分岐終了
条件分岐:画像XX = 8
ピクチャの表示:#12, FH_devilgirl, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:ディーヴァを加える

分岐終了
条件分岐:画像XX = 10
ピクチャの表示:#12, FH_rhythm-fairy, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:リーフィアを加える

分岐終了
条件分岐:画像XX = 12
ピクチャの表示:#12, FH_Fencer, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:スミレを加える

分岐終了
条件分岐:画像XX = 13
ピクチャの表示:#12, FH_gothicLolita, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:コクリコを加える

分岐終了
条件分岐:画像XX = 14
ピクチャの表示:#12, FH_Lady-butler, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:クロードを加える

分岐終了
条件分岐:画像XX = 21
ピクチャの表示:#12, FH_little Fencer, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:コハルを加える

分岐終了
プラグインコマンド:PSM_SHOW_POPUP 7 0 50 288 -1 \p[2]
プラグインコマンド:PSM_SHOW_POPUP 8 1 50 318 -1 \_\_Lv.\v[15]\_EXP.\v[16]

分岐終了
条件分岐:仲間選択数 = 3
条件分岐:画像XX = 1
ピクチャの表示:#13, FH_elf1, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:フォリアを加える

分岐終了
条件分岐:画像XX = 5
ピクチャの表示:#13, FH_pugilist, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:シェンメイを加える

分岐終了
条件分岐:画像XX = 8
ピクチャの表示:#13, FH_devilgirl, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:ディーヴァを加える

分岐終了
条件分岐:画像XX = 10
ピクチャの表示:#13, FH_rhythm-fairy, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:リーフィアを加える

分岐終了
条件分岐:画像XX = 12
ピクチャの表示:#13, FH_Fencer, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:スミレを加える

分岐終了
条件分岐:画像XX = 13
ピクチャの表示:#13, FH_gothicLolita, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:コクリコを加える

分岐終了
条件分岐:画像XX = 14
ピクチャの表示:#13, FH_Lady-butler, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:クロードを加える

分岐終了
条件分岐:画像XX = 21
ピクチャの表示:#13, FH_little Fencer, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:コハルを加える

分岐終了
プラグインコマンド:PSM_SHOW_POPUP 9 0 50 336 -1 \p[3]
プラグインコマンド:PSM_SHOW_POPUP 10 1 50 366 -1 \_\_Lv.\v[15]\_EXP.\v[16]

分岐終了
条件分岐:仲間選択数 = 4
条件分岐:画像XX = 1
ピクチャの表示:#14, FH_elf1, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:フォリアを加える

分岐終了
条件分岐:画像XX = 5
ピクチャの表示:#14, FH_pugilist, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:シェンメイを加える

分岐終了
条件分岐:画像XX = 8
ピクチャの表示:#14, FH_devilgirl, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:ディーヴァを加える

分岐終了
条件分岐:画像XX = 10
ピクチャの表示:#14, FH_rhythm-fairy, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:リーフィアを加える

分岐終了
条件分岐:画像XX = 12
ピクチャの表示:#14, FH_Fencer, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:スミレを加える

分岐終了
条件分岐:画像XX = 13
ピクチャの表示:#14, FH_gothicLolita, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:コクリコを加える

分岐終了
条件分岐:画像XX = 14
ピクチャの表示:#14, FH_Lady-butler, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:クロードを加える

分岐終了
条件分岐:画像XX = 21
ピクチャの表示:#14, FH_little Fencer, 左上 ({画像 X座標},{画像 Y座標}), (100%,100%), 255, 通常
メンバーの入れ替え:コハルを加える

分岐終了
プラグインコマンド:PSM_SHOW_POPUP 11 0 50 384 -1 \p[4]
プラグインコマンド:PSM_SHOW_POPUP 12 1 50 414 -1 \_\_Lv.\v[15]\_EXP.\v[16]

分岐終了
ピクチャの消去:#10

ここでは、選択されたキャラクターを仲間にする処理と、右側に表示されるちびキャラ画像、レベル、経験値を表示する処理を行っています。

構造としては、仲間の数を表すフラグ変数12を+1して、現在の仲間の数によって表示するピクチャのX座標とY座標を指定しておきます。

次に、一時変数11に先頭画像と同期している変数10の値を代入し、仲間にするキャラクターを探させます。仲間の数によって使われるピクチャ番号が違うため、条件分岐ごとに書いていかなければならないのが面倒くさいです。コピペと編集でぼちぼちやっていきましょう。

仲間にしたら、バストアップ画像(ピクチャ10番)は邪魔なので消去しておきましょう。


次に、コモンイベント:パーティ削除です。
変数の操作:#0011 画像XX = 0
条件分岐:仲間選択数 = 1
ピクチャの消去:#11
プラグインコマンド:PSM_ERASE_POPUP 5 0
プラグインコマンド:PSM_ERASE_POPUP 6 0
変数の操作:#0011 画像XX = パーティメンバー1番のアクターID

分岐終了
条件分岐:仲間選択数 = 2
ピクチャの消去:#12
プラグインコマンド:PSM_ERASE_POPUP 7 0
プラグインコマンド:PSM_ERASE_POPUP 8 0
変数の操作:#0011 画像XX = パーティメンバー2番のアクターID

分岐終了
条件分岐:仲間選択数 = 3
ピクチャの消去:#13
プラグインコマンド:PSM_ERASE_POPUP 9 0
プラグインコマンド:PSM_ERASE_POPUP 10 0
変数の操作:#0011 画像XX = パーティメンバー3番のアクターID

分岐終了
条件分岐:仲間選択数 = 4
ピクチャの消去:#14
プラグインコマンド:PSM_ERASE_POPUP 11 0
プラグインコマンド:PSM_ERASE_POPUP 12 0
変数の操作:#0011 画像XX = パーティメンバー4番のアクターID

分岐終了
条件分岐:画像XX = 1
メンバーの入れ替え:フォリアを外す

分岐終了
条件分岐:画像XX = 5
メンバーの入れ替え:シェンメイを外す

分岐終了
条件分岐:画像XX = 8
メンバーの入れ替え:ディーヴァを外す

分岐終了
条件分岐:画像XX = 10
メンバーの入れ替え:リーフィアを外す

分岐終了
条件分岐:画像XX = 12
メンバーの入れ替え:スミレを外す

分岐終了
条件分岐:画像XX = 13
メンバーの入れ替え:コクリコを外す

分岐終了
条件分岐:画像XX = 14
メンバーの入れ替え:クロードを外す

分岐終了
条件分岐:画像XX = 21
メンバーの入れ替え:コハルを外す

分岐終了
条件分岐:仲間選択数 = 0

それ以外のとき
変数の操作:#0012 仲間選択数 -= 1
SEの演奏:Cancel1 (90, 100, 0)

分岐終了

構造的には、パーティ追加の場合と逆方向になりますが、処理の仕方が結構違います。

とりあえず、一時変数11は初期化しておきます。

仲間にしている数で、消去する画像を選択し、アクターIDを一時変数11に代入します。

あとは、このアクターIDのキャラクターをパーティから外します。

仲間の数が0の時は、何もすることがありませんが、1以上の時は、最後に仲間の数を1減らしておく必要があります。忘れずに、最後の条件分岐も書き込んでおきましょう。分かりやすく、キャンセル音も鳴らしておくと親切です。


それでは、いよいよ最後のコモンイベント:パーティ全削除です。
メンバーの入れ替え:フォリアを外す
メンバーの入れ替え:シェンメイを外す
メンバーの入れ替え:ディーヴァを外す
メンバーの入れ替え:リーフィアを外す
メンバーの入れ替え:スミレを外す
メンバーの入れ替え:コクリコを外す
メンバーの入れ替え:クロードを外す
メンバーの入れ替え:コハルを外す

何のことはありません。問答無用で全員を解雇するだけです。



以上、今回のシステムの構造を解説いたしました。

大分長い内容でした、理解できたでしょうか?

正直、かなり複雑で大変ですよね(笑)


ですが、割と見栄えが良いので、作ってみる価値はあると思いますよ。

画像もいっぱい必要だし、入力する量も多いので、導入は大変ですけどね・・・。





ではでは、今日はこの辺で。
ネコタでした。





↓お役に立ちましたら、クリックをお願いします↓
にほんブログ村 ゲームブログへ
にほんブログ村

にほんブログ村 ゲームブログ ゲーム制作へ
にほんブログ村

ブログランキング・にほんブログ村へ
にほんブログ村

テーマ : フリーゲーム
ジャンル : ゲーム

ゲーム制作日記<51> ポイントカードシステム

op.png



みなさん、こんばんは。
ネコタです。



今回も恒例の『 コモンイベントで作るちょっとしたシステム 』 のご紹介です。

が、今回はぶっちゃけコモンイベントを使っていません(笑)

ただ、内容的にはコモン化して使ってもよさそうなので、ここでご紹介させていただきます。


さて、今回紹介させていただくシステムは、
『ポイントカードシステム』です。

今時、大体のお店はポイントカードやスタンプカードってありますよね。会員になって、ある程度買い物したら割引してくれる、みたいなサービス。

平たく言うと、アレっぽいものをショップに導入します。



それでは、実際の例を見てみましょう。

tc37-001.png

現在、新しいプロジェクトを立ち上げて制作しています。

長編物を作っていて思ったんですが、開発が大変すぎる(笑)

いつ完成できるか分からない事態になっています。

子供もまだ小さくて、肝心のプラグイン作成できる妻もプロジェクトを休止していますし。

ちょっと、今のところ目途が立たなくなってきたんですね。

そこで、短編物で少し色んなことを試してから、再度作っていこうと思いました。

べ、別にエターなったわけじゃないんだからね!


ということで。

画像の武器屋は、試験的に導入してみたポイントカードシステムを入れたショップです。

tc37-002.png

まずは、普通にお買い物してみましょう。

tc37-003.png

とりあえず、お金はいっぱいあるので全部1個ずつ購入しました。
持っている数は、プラグインの設定の関係でバグってます(笑)

このブログを書こうと画像を撮っていたら、気が付きました。
そのうち、直った画像が出てきます。

tc37-004.png

で、実例紹介を続けますね。
今回、武器屋の利用が初めてですので、初回イベントが働きました。

tc37-005.png

どうやら、何か貰えるようです。

tc37-006.png

予想できていたと思いますが、ポイントカードを貰いました。
これがないと始まりませんからね。

あとは、ポイントカードのシステムについて店員さんがつらつらと説明してくれます。

とりあえず、説明を載せておきますね。

tc37-007.png

tc37-008.png

tc37-009.png

tc37-010.png


はい。説明は以上です。

今回の例では、700G以上のお支払いで1P付与され、5Pたまったら700Gキャッシュバックというシステムとなっております。

ただし、アイテムを売るとその分が買い物金額から差し引かれてしまいます。お店の利益を考えたら当然かもしれません。

tc37-011.png

とりあえず、今回の買い物では1P付与されたみたいです。


tc37-012.png

これで、お買い物終了です。



今回の例では、ポイントがたまると一部の金額をキャッシュバックというシステムにしましたが、ちょっと頑張れば割引もできます。

システムが分かれば、付与されたポイント(変数)を条件分岐にできますので。分岐先で金額を再設定したショップを開くという方法があります。が、結構面倒です。なので、やりません(笑)


それでは、挙動を確認できましたので、準備するものを確認しましょう。


【準備】
変数 ×6


はい、これだけです(笑)
単に、変数の操作でポイントと金額を計算するだけですので。


【推奨】
コモンイベント(ショップの処理)


今回は、ショップの処理をコモンイベントで作っています。
実行内容は下のような感じ。


【実行内容】
条件分岐:【req】progress ≥ 8
ショップの処理:ショートソード
ショップの処理:ロングソード
ショップの処理:ファルシオン
ショップの処理:ミスリルソード
ショップの処理:ドラゴンブレード
ショップの処理:ウッドスタッフ
ショップの処理:マジックワンド
ショップの処理:フォースワンド
ショップの処理:ミスリルロッド
ショップの処理:ドラゴンスタッフ
ショップの処理:ショートスピア
ショップの処理:ロングスピア
ショップの処理:ハルバード
ショップの処理:ミスリルスピア
ショップの処理:ドラゴンスピア
ショップの処理:ストーンフレイル
ショップの処理:ブロンズフレイル
ショップの処理:モーニングスター
ショップの処理:ミスリルフレイル
ショップの処理:ドラゴンフレイル
ラベルジャンプ:終了

分岐終了
条件分岐:【req】progress ≥ 6
ショップの処理:ショートソード
ショップの処理:ロングソード
ショップの処理:ファルシオン
ショップの処理:ミスリルソード
ショップの処理:ウッドスタッフ
ショップの処理:マジックワンド
ショップの処理:フォースワンド
ショップの処理:ミスリルロッド
ショップの処理:ショートスピア
ショップの処理:ロングスピア
ショップの処理:ハルバード
ショップの処理:ミスリルスピア
ショップの処理:ストーンフレイル
ショップの処理:ブロンズフレイル
ショップの処理:モーニングスター
ショップの処理:ミスリルフレイル
ラベルジャンプ:終了

分岐終了
条件分岐:【req】progress ≥ 4
ショップの処理:ショートソード
ショップの処理:ロングソード
ショップの処理:ファルシオン
ショップの処理:ウッドスタッフ
ショップの処理:マジックワンド
ショップの処理:フォースワンド
ショップの処理:ショートスピア
ショップの処理:ロングスピア
ショップの処理:ハルバード
ショップの処理:ストーンフレイル
ショップの処理:ブロンズフレイル
ショップの処理:モーニングスター
ラベルジャンプ:終了

分岐終了
条件分岐:【req】progress ≥ 2
ショップの処理:ショートソード
ショップの処理:ロングソード
ショップの処理:ウッドスタッフ
ショップの処理:マジックワンド
ショップの処理:ショートスピア
ショップの処理:ロングスピア
ショップの処理:ストーンフレイル
ショップの処理:ブロンズフレイル
ラベルジャンプ:終了

分岐終了
ショップの処理:ショートソード
ショップの処理:ウッドスタッフ
ショップの処理:ショートスピア
ショップの処理:ストーンフレイル
ラベル:終了


条件の【req】progressですが、これは、ゲーム上でストーリーが進行した時に増える変数です。つまり、進行度ですね。

ゲーム制作における1つの方法ですが、私は、進行度用の変数を1個作っておくようにしています。

メインのストーリーの分岐や、今回のようにショップの処理を進行度によって分岐する、といった用途で使えるので、あると便利です。イベント管理をしやすくする工夫の1つです。



それでは、ショップの準備が整いましたので、実際のイベント内容を見てみましょう。


【実行内容】
変数の操作:#0057 【Shop】stamp_moment = 0
変数の操作:#0054 【Shop】Money_b = 所持金
スイッチの操作:#0022 【req】Map21-Ev4 = ON
文章:People1(2), ウィンドウ, 下
文章武器屋の男性
文章「いらっしゃいませ。
文章 どうぞ見ていってください。
コモンイベント:【Shop】武器屋
条件分岐:セルフスイッチ AがOFF
文章:People1(2), ウィンドウ, 下
文章武器屋の男性
文章「おや、武器屋のご利用は初めてですね。
文章:People1(2), ウィンドウ, 下
文章武器屋の男性
文章「これを差し上げますので、よろしければご利
文章 用ください。
SEの演奏:Item3 (90, 100, 0)
文章:なし, ウィンドウ, 中
文章
文章\>       \c[21]武器屋ポイントカード\c[0]をもらった。
文章:People1(2), ウィンドウ, 下
文章武器屋の男性
文章「お買い物の際、当店のポイントカードをご提
文章 示いただければ\c[21]700G\c[0]につき\c[29]1P\c[0]付与させ
文章 ていただきます。
文章:People1(2), ウィンドウ, 下
文章武器屋の男性
文章「\c[29]5P\c[0]につき\c[21]700G\c[0]返金いたします。
文章 どうぞご利用ください。
文章:People1(2), ウィンドウ, 下
文章武器屋の男性
文章「ただし、ポイントの付与は\c[27]売買した結果\c[0]の金
文章 額に対してお付けしております。
文章:People1(2), ウィンドウ, 下
文章武器屋の男性
文章「品物をお売りいただいた場合、金額によって
文章 はポイントが付与されないことがあります。
文章 お気を付けください。
セルフスイッチの操作:A = ON

分岐終了
変数の操作:#0055 【Shop】Money_a = 所持金
変数の操作:#0054 【Shop】Money_b -= 【Shop】Money_a
ループ
条件分岐:【Shop】Money_b ≥ 700
変数の操作:#0057 【Shop】stamp_moment += 1
変数の操作:#0054 【Shop】Money_b -= 700

それ以外のとき
ループの中断

分岐終了

以上繰り返し
条件分岐:【Shop】stamp_moment ≥ 1
条件分岐:パーティが武器屋ポイントカードを持っている
文章:People1(2), ウィンドウ, 下
文章武器屋の男性
文章「いつもありがとうございます。
文章 今回は\c[29]\v[57]P\c[0]お付けいたしますね。

それ以外のとき
文章:People1(2), ウィンドウ, 下
文章武器屋の男性
文章「それでは、今回は\c[29]\v[57]P\c[0]お付けいたしますね。

分岐終了
変数の操作:#0058 【Shop】stamp_weapon += 【Shop】stamp_moment

分岐終了
条件分岐:【Shop】stamp_weapon ≥ 5
変数の操作:#0062 【Shop】momentNumber = 【Shop】stamp_weapon
変数の操作:#0058 【Shop】stamp_weapon /= 5
変数の操作:#0061 【Shop】momentGold = 700
変数の操作:#0061 【Shop】momentGold *= 【Shop】stamp_weapon
文章:People1(2), ウィンドウ, 下
文章武器屋の男性
文章「今回のお買い物で\c[29]\v[62]P\c[0]になりましたので、
文章 \c[21]\v[61]G\c[0]お返しいたしますね。
所持金の増減:+ {【Shop】momentGold}
SEの演奏:Coin (90, 100, 0)
文章:なし, ウィンドウ, 中
文章
文章\>           \c[21]\v[61]G\c[0]もらった。
変数の操作:#0062 【Shop】momentNumber %= 5
変数の操作:#0058 【Shop】stamp_weapon = 【Shop】momentNumber
文章:People1(2), ウィンドウ, 下
文章武器屋の男性
文章「残りのポイントは\c[29]\v[58]P\c[0]になりました。

分岐終了
文章:People1(2), ウィンドウ, 下
文章武器屋の男性
文章「ありがとうございました。
文章 また、いらしてください。
条件分岐:パーティが武器屋ポイントカードを持っている

それ以外のとき
アイテムの増減:武器屋ポイントカード + 1

分岐終了
スイッチの操作:#0022 【req】Map21-Ev4 = OFF



(ちなみに、スイッチの操作:#0022 【req】Map21-Ev4ですが、気にしなくていいです。このマップでは自立動作しているイベントがいるので、そいつの挙動をこのスイッチで制御させているために、入っています)


処理の詳細を解説する前に、まずは処理の内容をザックリ説明しますね。

・所持金を変数に代入します。
・お買い物します。
・所持金の差額を求めます。
・差額に応じて、スタンプの計算処理を行います。
・スタンプ数に応じて、返金額を計算します。
・返金処理を行います。


こんな流れとなります。



それでは、上から順番に解説していきましょう。

変数の操作:#0057 【Shop】stamp_moment = 0
変数の操作:#0054 【Shop】Money_b = 所持金


変数57はとりあえず初期化しておきます。
そして、変数54所持金を代入します。


文章:People1(2), ウィンドウ, 下
文章武器屋の男性
文章「いらっしゃいませ。
文章 どうぞ見ていってください。
コモンイベント:【Shop】武器屋


ここで、適当な会話とショップの処理ですね。

条件分岐:セルフスイッチ AがOFF
文章:People1(2), ウィンドウ, 下
文章武器屋の男性
文章「おや、武器屋のご利用は初めてですね。
文章:People1(2), ウィンドウ, 下
文章武器屋の男性
文章「これを差し上げますので、よろしければご利
文章 用ください。
SEの演奏:Item3 (90, 100, 0)
文章:なし, ウィンドウ, 中
文章
文章\>       \c[21]武器屋ポイントカード\c[0]をもらった。
文章:People1(2), ウィンドウ, 下
文章武器屋の男性
文章「お買い物の際、当店のポイントカードをご提
文章 示いただければ\c[21]700G\c[0]につき\c[29]1P\c[0]付与させ
文章 ていただきます。
文章:People1(2), ウィンドウ, 下
文章武器屋の男性
文章「\c[29]5P\c[0]につき\c[21]700G\c[0]返金いたします。
文章 どうぞご利用ください。
文章:People1(2), ウィンドウ, 下
文章武器屋の男性
文章「ただし、ポイントの付与は\c[27]売買した結果\c[0]の金
文章 額に対してお付けしております。
文章:People1(2), ウィンドウ, 下
文章武器屋の男性
文章「品物をお売りいただいた場合、金額によって
文章 はポイントが付与されないことがあります。
文章 お気を付けください。
セルフスイッチの操作:A = ON

分岐終了


ショップの処理の後にあるこの会話は、ポイントカードを持っていないときの処理です。

初回説明の処理ですので、不要であれば省略して構いません。

変数の操作:#0055 【Shop】Money_a = 所持金
変数の操作:#0054 【Shop】Money_b -= 【Shop】Money_a
ループ
条件分岐:【Shop】Money_b ≥ 700
変数の操作:#0057 【Shop】stamp_moment += 1
変数の操作:#0054 【Shop】Money_b -= 700

それ以外のとき
ループの中断

分岐終了

以上繰り返し


お買い物が終わったら、その時点での所持金変数55に代入します。

そして、最初の変数54から変数55引き算することで、差を出します。

その後のループ処理ですが、何となく変数が分かりづらくなりそうだったので、あえて変数を分ける処理にしました。

結果的には、このちょっとした処理は必要なくて、単純に変数を700で割り算するだけで良かったんですけどね(笑)

一応、ここでは何をやっているかといいますと、差額から700を何回引いているかをカウントしています。
ここでは700Gにつき1P付くので、変数55(お買い物金額)が700(G)以上かを確認し、700(G)以上なら、ここから700(G)を差し引いて、変数57+1(1P付与)します。これをループ(700より小さくなるまで繰り返)させることで、何P付与されたかを計算しています。


条件分岐:【Shop】stamp_moment ≥ 1
条件分岐:パーティが武器屋ポイントカードを持っている
文章:People1(2), ウィンドウ, 下
文章武器屋の男性
文章「いつもありがとうございます。
文章 今回は\c[29]\v[57]P\c[0]お付けいたしますね。

それ以外のとき
文章:People1(2), ウィンドウ, 下
文章武器屋の男性
文章「それでは、今回は\c[29]\v[57]P\c[0]お付けいたしますね。

分岐終了
変数の操作:#0058 【Shop】stamp_weapon += 【Shop】stamp_moment

分岐終了


で、付与するP数が決まったので、付与できるポイントが1P以上ある場合に、ポイント付与されたことをアナウンスします。

そして、手持ちのポイントカード(変数58)にポイントを加算します。


条件分岐:【Shop】stamp_weapon ≥ 5
変数の操作:#0062 【Shop】momentNumber = 【Shop】stamp_weapon
変数の操作:#0058 【Shop】stamp_weapon /= 5
変数の操作:#0061 【Shop】momentGold = 700
変数の操作:#0061 【Shop】momentGold *= 【Shop】stamp_weapon
文章:People1(2), ウィンドウ, 下
文章武器屋の男性
文章「今回のお買い物で\c[29]\v[62]P\c[0]になりましたので、
文章 \c[21]\v[61]G\c[0]お返しいたしますね。
所持金の増減:+ {【Shop】momentGold}
SEの演奏:Coin (90, 100, 0)
文章:なし, ウィンドウ, 中
文章
文章\>           \c[21]\v[61]G\c[0]もらった。
変数の操作:#0062 【Shop】momentNumber %= 5
変数の操作:#0058 【Shop】stamp_weapon = 【Shop】momentNumber
文章:People1(2), ウィンドウ, 下
文章武器屋の男性
文章「残りのポイントは\c[29]\v[58]P\c[0]になりました。

分岐終了


ポイントカードに今回のお買い物で得られたポイントが付与されましたので、最後にポイントを精算します。

今回のショップでは5P以上の時に精算されます。

始めに、変数58を一時的に変数62へ入れておきます。

この後の処理で変数58を計算するのですが、この値はその更に後(会話の中、返金後の処理)で必要となるため、一時的に別な場所にも保存しておきます。

返金額の計算方法ですが、5Pにつき1単位(700G)返金するため、まずは変数58を5で割り算します。

また、変数61は700に設定しておきます。これが、1単位あたりの金額(G)です。

これで、返金される単位数と金額が出ましたので、変数61変数58を掛け算します。返金額が計算できました。

それをプレイヤーに取得させて返金処理は完了。今度はポイントの精算に移ります。

ポイントは変数62に一時保管しておきましたので、これの剰余を出します(剰余とは、割り算した余りの事です)。

今回は5Pにつき1単位精算されているので、ポイント(変数62)を5で割ったときの余りが残ったポイントとなります。

それを、ポイントカード(変数58)に戻して、精算完了です。

プレイヤーには、残りのポイントをアナウンスしておくと親切でしょう。

文章:People1(2), ウィンドウ, 下
文章武器屋の男性
文章「ありがとうございました。
文章 また、いらしてください。


ショップ終了の会話を入れて、クローズします。


条件分岐:パーティが武器屋ポイントカードを持っている

それ以外のとき
アイテムの増減:武器屋ポイントカード + 1

分岐終了


最後の最後にポイントカード取得の処理を入れているのは、その前でポイントカードを持っているかどうかで会話を分岐させているためです。

初回の買い物ではポイントカードを持っていないはずなので、最初の解説の直後に取得させてしまうと、ポイントカードを持っているときの処理となってしまうため、最後に持ってきています。


処理内容は以上です。

ではでは、今日はこの辺で。
ネコタでした。





↓お役に立ちましたら、クリックをお願いします↓
にほんブログ村 ゲームブログへ
にほんブログ村

にほんブログ村 ゲームブログ ゲーム制作へ
にほんブログ村

ブログランキング・にほんブログ村へ
にほんブログ村
プロフィール

猫民のんたん

Author:猫民のんたん

ネコタ:ゲーム作りが趣味の薬剤師。本職とゲーム作りの2足の草鞋を履きこなそうと日々奮闘。

毎週曜日or曜日に更新予定。
-------------------------

ミノン:ゲーム作り初心者で2児の母。前職はSE/PG。子育てをしながらゲーム作りを行おうと、日々奮闘中。

育児中のため活動休止中

最新記事
最新コメント
月別アーカイブ
カテゴリ
フリーエリア
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。