スポンサーサイト

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

ゲーム制作日記<39> ALQMEST制作日記9

op.png



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


今日は、現在制作中のRPG「ALQMEST」の進捗状況を報告します。


ようやく、ストーリーが少し進みました。
今月、最初で最後の報告ですね(笑)

何だかんだで、なかなかストーリー制作が出来なくて。
それよりも、システムばっかり閃いちゃうっていうね。


cr4-1.png


現在、妖精ロッテと出会ったアルト君。

ヘタレポンチと罵られながらも、成り行きで、ロッテのお母さんと会いにいきます。


てか、どんな成り行きだよっ!て感じですよね(笑)



それは、ゲームをプレイしてからのお楽しみです。


マップ上には、たくさんの採集ポイントが用意されていますので、アイテムは採り放題の作り放題です。

気の済むまで、やっちゃえるような仕様です(笑)


なので、やろうと思えば某スターオーシャンのように、最初の町で所持金MAXという攻略も可能です。


回復や金策にはあんまり困らない仕様となりますが、その分、回復のタイミングがややシビアだったり、装備品の重要性が高いゲーム性に仕上げる予定です。


まあ、それもアルトのクイックスキルや、ロッテのスピードがあれば、そこまで困らないかもしれませんが。ここから、敵にどうやってプレイヤーを攻略させようかなぁと画策中です。


もしかしたら、ボスがとんでもなく強くなるかも?(笑)





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





↓クリック応援をお願いします↓

にほんブログ村 ゲームブログ ゲーム制作へ
にほんブログ村
スポンサーサイト

ゲーム制作日記<38> 畑システム3

op.png



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



前々回の畑システム
前回の畑システム2
の続きです。



前回までの内容で、マップ内のイベント処理、メインとなるコモンイベントでの処理を説明しました。

今回が、ようやく最後の処理となります。


今回は、作物の成長に関わる処理の解説をしていきますね。


作物に水をあげた時の処理の最後に、スイッチの操作:#0261 【畑】ID:1給水 = ONというのがあったと思います。

このスイッチがONとなることで働くコモンイベントがあります。

それが、これです。

tc29-4.png

<実行内容>
ウェイト:60フレーム
変数の操作:#0141 【畑】ID:1_成長状況 += 10
変数の操作:#0161 【畑】ID:1_成長状況 += 【畑】ID:1_level
注釈:【INDEX】
注釈:ID:152=カンタリオン
注釈:ID:153=フラウラ
注釈:ID:154=ペンサミエント
注釈:ID:155=アヴェンダル
注釈:ID:156=ベルコル
注釈:ID:157=サリックス
注釈:ID:158=パドゥープ
条件分岐:【畑】ID:1_種ID = 152
条件分岐:【畑】ID:1_成長状況 ≥ 17999
条件分岐:【畑】ID:1_成長状況 ≤ 18097
スイッチの操作:#0261 【畑】ID:1給水 = OFF
変数の操作:#0161 【畑】ID:1_成長状況 = 18098

分岐終了

分岐終了
条件分岐:【畑】ID:1_成長状況 ≥ 36097
スイッチの操作:#0261 【畑】ID:1給水 = OFF

分岐終了

分岐終了
条件分岐:【畑】ID:1_種ID = 153
条件分岐:【畑】ID:1_成長状況 ≥ 17999
条件分岐:【畑】ID:1_成長状況 ≤ 18097
スイッチの操作:#0261 【畑】ID:1給水 = OFF
変数の操作:#0161 【畑】ID:1_成長状況 = 18098

分岐終了

分岐終了
条件分岐:【畑】ID:1_成長状況 ≥ 36097
スイッチの操作:#0261 【畑】ID:1給水 = OFF

分岐終了

分岐終了
条件分岐:【畑】ID:1_種ID = 154
条件分岐:【畑】ID:1_成長状況 ≥ 17999
条件分岐:【畑】ID:1_成長状況 ≤ 18097
スイッチの操作:#0261 【畑】ID:1給水 = OFF
変数の操作:#0161 【畑】ID:1_成長状況 = 18098

分岐終了

分岐終了
条件分岐:【畑】ID:1_成長状況 ≥ 36097
スイッチの操作:#0261 【畑】ID:1給水 = OFF

分岐終了

分岐終了
条件分岐:【畑】ID:1_種ID = 155
条件分岐:【畑】ID:1_成長状況 ≥ 17999
条件分岐:【畑】ID:1_成長状況 ≤ 18097
スイッチの操作:#0261 【畑】ID:1給水 = OFF
変数の操作:#0161 【畑】ID:1_成長状況 = 18098

分岐終了

分岐終了
条件分岐:【畑】ID:1_成長状況 ≥ 36097
スイッチの操作:#0261 【畑】ID:1給水 = OFF

分岐終了

分岐終了
条件分岐:【畑】ID:1_種ID = 156
条件分岐:【畑】ID:1_成長状況 ≥ 17999
条件分岐:【畑】ID:1_成長状況 ≤ 18097
スイッチの操作:#0261 【畑】ID:1給水 = OFF
変数の操作:#0161 【畑】ID:1_成長状況 = 18098

分岐終了

分岐終了
条件分岐:【畑】ID:1_成長状況 ≥ 36097
スイッチの操作:#0261 【畑】ID:1給水 = OFF

分岐終了

分岐終了
条件分岐:【畑】ID:1_種ID = 157
条件分岐:【畑】ID:1_成長状況 ≥ 17999
条件分岐:【畑】ID:1_成長状況 ≤ 18097
スイッチの操作:#0261 【畑】ID:1給水 = OFF
変数の操作:#0161 【畑】ID:1_成長状況 = 18098

分岐終了

分岐終了
条件分岐:【畑】ID:1_成長状況 ≥ 36097
スイッチの操作:#0261 【畑】ID:1給水 = OFF

分岐終了

分岐終了
条件分岐:【畑】ID:1_種ID = 158
条件分岐:【畑】ID:1_成長状況 ≥ 17999
条件分岐:【畑】ID:1_成長状況 ≤ 18097
スイッチの操作:#0261 【畑】ID:1給水 = OFF
変数の操作:#0161 【畑】ID:1_成長状況 = 18098

分岐終了

分岐終了
条件分岐:【畑】ID:1_成長状況 ≥ 36097
スイッチの操作:#0261 【畑】ID:1給水 = OFF

分岐終了

分岐終了



このコモンイベントによって操作される変数は、作物(種)イベントの条件に指定されている変数です。

変数の値が、前回の解説の時と違っているのは、気にしないでください(笑)

私だって、日々ゲームバランスを研究し、変化し続けているんです(笑)


内容としては、60フレーム毎に、成長用の変数に値を+していきます。

そして、条件分岐で、変数がある一定の値になったときに一旦タイマーを止めます

この操作により、「成長段階ごとに給水が必要である」という演出が可能となります。

その必要がなければ、この部分は削除して構いません。

条件分岐:【畑】ID:1_成長状況 ≥ 17999
条件分岐:【畑】ID:1_成長状況 ≤ 18097
スイッチの操作:#0261 【畑】ID:1給水 = OFF
変数の操作:#0161 【畑】ID:1_成長状況 = 18098

分岐終了

分岐終了


また、今回は畑レベルによって成長速度を補正していますので、数値にある程度のが生じます。その幅も考慮して、成長段階を止めます。

幅の範囲ですが、目安は「畑レベルが最大値の時の変化値を、最小値に足した値」です。

例えば、私の例では、畑レベルが最大99(100にしようかと思案中)の予定なので、1段階上がるための数値(17999)に109(基礎の10+99)を足して、18108までが予想される幅の範囲になります。

私はきちんと計算して、この実行内容のような値にしましたが、これについては広すぎても問題ありません。計算ミスしたりすると段階が変わっても成長が止まらない可能性があるので、少し過剰な方がちょうど良いかもしれませんね。


給水用のスイッチ=OFFにしたら、成長用の変数に値を代入して、範囲から出してあげましょう。

でないと、水をあげたとき範囲内に入っていた場合には、一瞬でまた成長が止まってしまいます


条件分岐:【畑】ID:1_成長状況 ≥ 36097
スイッチの操作:#0261 【畑】ID:1給水 = OFF

分岐終了


最終段階に到達した時は範囲の設定がいらないので、そのままスイッチ=OFFにして、給水を終了させます。



この設定は、種ごとに設定できます。

条件分岐を種IDにしているので、1つ作ったら、それをまるっとコピペして、条件の種IDを変更、停止時の変数を変更して、全ての種について設定していきます。

この操作により、タイマーは同じ速度にもかかわらず、各作物(種)により成長速度が違うことを演出できます。



次は、種の成長速度に影響を与えるコモンイベント:【畑】畑レベル処理について説明していきます。

tc29-3.png

<実行内容>
注釈:INDEX
注釈:ID=5:アルト家の畑
変数の操作:#0018 【取得情報】マップID = マップID
条件分岐:【取得情報】マップID = 5
条件分岐:【畑】ID:1_level = 99
文章:なし, ウィンドウ, 下
文章\n<アルト>「これ以上はレベルを上げれないぜ。

それ以外のとき
アイテムの増減:肥料 - 1
変数の操作:#0261 【畑】ID:1_EXP += 20
条件分岐:【畑】ID:1_EXP ≥ 100
変数の操作:#0261 【畑】ID:1_EXP = 0
変数の操作:#0221 【畑】ID:1_level += 1

分岐終了

分岐終了

分岐終了



このコモンイベントは、畑に肥料を与えるときの処理を行っています。


畑レベルが最大の時は、これ以上はあげられないというアナウンスを出し、最大でないとき畑の経験値をあげます。

畑の経験値が最大まで溜まったときは、畑のレベルを上げることが出来ます。


変数の操作:#0261 【畑】ID:1_EXP += 20
条件分岐:【畑】ID:1_EXP ≥ 100
変数の操作:#0261 【畑】ID:1_EXP = 0
変数の操作:#0221 【畑】ID:1_level += 1

分岐終了


肥料を1個上げればレベルがあがるという仕様であれば、この操作は不要です。

単純に、変数の操作:#0221 【畑】ID:1_level += 1だけで構いません。


また、ここの内容をいじることで、レベルUPまでの肥料をあげる回数を設定できます。

今回は、100経験値でレベル1UP肥料1回で20経験値が入る仕組みなので、レベルUPまでには5回あげる必要があります。


上限のレベルを操作したい場合は、条件分岐:【畑】ID:1_level = 99の数値をいじります。


今はまだ、マップ1個分の畑しかないのでこの処理だけですが、畑IDが増えていくたびに、この内容をコピペして、使用する変数を変えていきます。


これで、畑レベルの処理についても完了です。





以上、3回の記事に渡って、畑システムの解説をしていきました。

自分自身、作成してから「かなり大規模なシステムになったなぁ」と実感しています。


しかし、巨大に見えるようで、コピペで作っていける部分が多いです。システムのフォーマットが完成してしまえば、編集の方はだいぶ楽だったりします。(ただし、システムの構造を理解している必要があります)


これで、ソースは全て公開したので、
導入する場合は頑張ってください

私の使う範囲はここまでです。




それでは、皆さんも素敵な牧場ライフ……
もとい、素敵なツクールライフを!





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





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

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

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

ゲーム制作日記<37> 畑システム2

op.png



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



前回の畑システムの続きです。


前回は、コアとなる【畑】種選択の内容を詳しく解説しました。

【畑】種選択はどこのイベントに組み込まれていたかというと、

tc26-40.png

この赤枠の部分が、コアのイベントでした。
また、アイコンと、初回動作を兼ねています。
システム起動のための重要なイベントですね。

コアのイベントが1つ完成したら、それをCtrl+Cでコピーし、畑の敷地内にCtrl+Vで敷き詰めていきます。

どれか1つが起動すれば、全部同時にページが変わるように作っているので、これでコアは完成。

こんな調子で、とにかく1個作って、それを複製していく……
そうやって作業を効率化させています。





さて、今回は、各マップで行う処理についてですね。

各マップでは、左側にある黄色枠部分のもっさりしたイベント群と、緑枠の1つだけのイベントが畑システムの処理を担っています。


まずは、黄色枠部分のイベント群を見てみましょう。
イベントの画像は、1番左上のものです。


tc28-1.png

<実行内容>
変数の操作:#0125 【畑】栽培X座標 = このイベントのマップX
変数の操作:#0126 【畑】栽培Y座標 = このイベントのマップY
指定位置の情報取得:【取得情報】リージョン, リージョンID, ({【畑】栽培X座標},{【畑】栽培Y座標})
条件分岐:【取得情報】リージョン = 0
セルフスイッチの操作:B = ON

それ以外のとき
変数の操作:#0141 【畑】ID:1_成長状況 = 1
セルフスイッチの操作:A = ON

分岐終了



イベントトリガーは自動実行です。

出現条件として、スイッチ【畑】ID1:使用中の時にします。

このスイッチは後ほど出てきますが、このマップの畑を使用中にして、他の処理を行わせないようにするためのフラグです。

このスイッチがONの時は、このイベントが中心となって処理を行います。

内容としては、まず、このイベントのX座標Y座標変数に格納し、指定位置情報の取得で、このイベントが居る箇所のリージョンIDを読み取ります。

この処理についても後で説明しますが、このイベントは自動で指定されたリージョン(畑の上)に移動させられるイベントとなります。

しかし、条件分岐によりこのイベントが移動させられないことがあるため、この処理によって、まず「このイベントが畑の上にいるかどうか?」という判定を行っています。


リージョンID=0のとき、というのは、畑の上に乗っていないときです。その場合は、セルフスイッチBをONにして、後述するページに飛ばします。

リージョンIDがそれ以外のとき(といっても、設定した値しかありませんが)、畑の上に乗っているはずなので、セルフスイッチAをONにするとともに、変数【畑】ID1:_成長状況=1にして、ページを切り替えます。



tc28-2.png

<実行内容>
条件分岐:【畑】ID:1給水がOFF
コモンイベント:【会話】表示(左)
ピクチャの表示:#2, Alto_2, 左上 ({【画像】X座標},{【画像】Y座標}), (100%,100%), 0, 通常
ピクチャの移動:#2, 左上 ({【画像】X座標},{【画像】Y座標}), (100%,100%), 255, 通常, 20フレーム
文章:なし, ウィンドウ, 下
文章\n<アルト>「水をやれば、育ちそうだな。
選択肢の表示:水をやる, 何もしない (ウィンドウ, 右, #1, #2)
水をやるのとき
条件分岐:パーティが水を持っている
アイテムの増減:水 - 1
スイッチの操作:#0261 【畑】ID:1給水 = ON
コモンイベント:【会話】終了

それ以外のとき
文章:なし, ウィンドウ, 下
文章\n<アルト>「あ・\.・\.・\.\.
文章 水をもってねぇや。
コモンイベント:【会話】終了(フェード)

分岐終了

何もしないのとき
コモンイベント:【会話】終了

分岐終了

分岐終了


2ページ目が、指定したリージョンID(畑の上)に乗っているときに開かれるページです。

ここでは、を消費して作物を成長させるための処理を行います。

見かけ上、種がまかれたときは、このページに居る状態となります。
水が与えられるまでは、ずっとこのままです。


一度種を撒いたなら、最後まで責任をもって育てましょう。



tc28-3.png

<実行内容>
条件分岐:【畑】ID:1給水がOFF
コモンイベント:【会話】表示(左)
ピクチャの表示:#2, Alto_2, 左上 ({【画像】X座標},{【画像】Y座標}), (100%,100%), 0, 通常
ピクチャの移動:#2, 左上 ({【画像】X座標},{【画像】Y座標}), (100%,100%), 255, 通常, 20フレーム
文章:なし, ウィンドウ, 下
文章\n<アルト>「水をやれば、育ちそうだな。
選択肢の表示:水をやる, 何もしない (ウィンドウ, 右, #1, #2)
水をやるのとき
条件分岐:パーティが水を持っている
アイテムの増減:水 - 1
スイッチの操作:#0261 【畑】ID:1給水 = ON
コモンイベント:【会話】終了

それ以外のとき
文章:なし, ウィンドウ, 下
文章\n<アルト>「あ・\.・\.・\.\.
文章 水をもってねぇや。
コモンイベント:【会話】終了(フェード)

分岐終了

何もしないのとき
コモンイベント:【会話】終了

分岐終了

分岐終了


実は、内容は2ページ目と同じです。

2ページ目をコピペして、条件や画像をちょこちょこ変えればOKです。

条件の成長状況の数値によって、この段階に成長するまでの時間を設定できます。




tc28-4.png

<実行内容>
コモンイベント:【会話】表示(左)
ピクチャの表示:#2, Alto_2, 左上 ({【画像】X座標},{【画像】Y座標}), (100%,100%), 0, 通常
ピクチャの移動:#2, 左上 ({【画像】X座標},{【画像】Y座標}), (100%,100%), 255, 通常, 20フレーム
文章:なし, ウィンドウ, 下
文章\n<アルト>「お、収穫できそうだぜ。
選択肢の表示:収穫する, 何もしない (ウィンドウ, 右, #1, #2)
収穫するのとき
コモンイベント:【会話】終了
アイテムの増減:カンタリオン + 8
変数の操作:#0181 【畑】ID:1_種ID = 0
変数の操作:#0141 【畑】ID:1_成長状況 = 0
セルフスイッチの操作:A = OFF
スイッチの操作:#0221 【畑】ID:1使用中 = OFF
スイッチの操作:#0064 【畑】クリアタイム = ON

何もしないのとき
コモンイベント:【会話】終了

分岐終了


最終形態のページです。

ここまで成長すると、収穫できるようになります。


収穫されたら、使用していたスイッチやら変数やらをすべてリセットし、スイッチ【畑】クリアタイム=ONにします。

これをONにしないと、この下にあるコアのイベントが起動して、即座に種選択のメニューが出てきてしまいます。
忘れずに設定しておきましょう。



tc28-5.png

<実行内容>
条件分岐:【畑】ID:1使用中がOFF
セルフスイッチの操作:B = OFF

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


このページは、畑の上に行けなかった場合の分岐ページです。

畑が空くまで、ひたすらウエイトで待機状態にします。

畑が空いたら、セルフスイッチBを切って、もとに戻します。

(スイッチを切っただけでは最初のページの出現条件は満たせないため、実質的には一時消滅します)


ここまで見て頂いて気が付いたと思いますが、このイベントは、作物のイベントです。

あの黄色枠で囲った部分は、実は、すべて作物のイベントです(笑)

今回の設定では、畑に8個の種が撒かれるため、1種類の種につき同じイベントを8個用意する必要があります。

先ほどのイベントを1つ作ったら、それを必要な数だけコピペして複製しておきます。これで、ようやく1つの種イベントが完成です。

複数種類の種があったら、その種類の数だけ、同様にイベントを作ります。ただ、2種類目以降は比較的、簡単です。

先ほど作成したイベントをコピペし、名前や画像、出現条件、収穫後に増減するアイテムをちょちょっと手直しすれば完成。

そして、それをまた必要な分だけ複製。これの繰り返しで、どんどん作っていきます。



さて、これで種もできました。
起動用のイベントもできました。


ついでに、もう1つやっておくことがあります。

tc26-41.png


この画像のように、畑のある個所に適当なリージョンを敷いておいてください。

これから、このリージョンIDを使います。




それでは、最後に、緑枠部分のイベントを組み立てます。

tc28-6.png

<実行内容>
注釈:種の位置をリセットします。
イベントの位置設定:カンタリオン, (0,0)
イベントの位置設定:カンタリオン, (0,0)
イベントの位置設定:カンタリオン, (0,0)
イベントの位置設定:カンタリオン, (0,0)
イベントの位置設定:カンタリオン, (0,0)
イベントの位置設定:カンタリオン, (0,0)
イベントの位置設定:カンタリオン, (0,0)
イベントの位置設定:カンタリオン, (0,0)
イベントの位置設定:フラウラ, (0,0)
イベントの位置設定:フラウラ, (0,0)
イベントの位置設定:フラウラ, (0,0)
イベントの位置設定:フラウラ, (0,0)
イベントの位置設定:フラウラ, (0,0)
イベントの位置設定:フラウラ, (0,0)
イベントの位置設定:フラウラ, (0,0)
イベントの位置設定:フラウラ, (0,0)
イベントの位置設定:ペンサミエント, (0,0)
イベントの位置設定:ペンサミエント, (0,0)
イベントの位置設定:ペンサミエント, (0,0)
イベントの位置設定:ペンサミエント, (0,0)
イベントの位置設定:ペンサミエント, (0,0)
イベントの位置設定:ペンサミエント, (0,0)
イベントの位置設定:ペンサミエント, (0,0)
イベントの位置設定:ペンサミエント, (0,0)
イベントの位置設定:アヴェンダル, (0,0)
イベントの位置設定:アヴェンダル, (0,0)
イベントの位置設定:アヴェンダル, (0,0)
イベントの位置設定:アヴェンダル, (0,0)
イベントの位置設定:アヴェンダル, (0,0)
イベントの位置設定:アヴェンダル, (0,0)
イベントの位置設定:アヴェンダル, (0,0)
イベントの位置設定:アヴェンダル, (0,0)
イベントの位置設定:ベルコル, (0,0)
イベントの位置設定:ベルコル, (0,0)
イベントの位置設定:ベルコル, (0,0)
イベントの位置設定:ベルコル, (0,0)
イベントの位置設定:ベルコル, (0,0)
イベントの位置設定:ベルコル, (0,0)
イベントの位置設定:ベルコル, (0,0)
イベントの位置設定:ベルコル, (0,0)
イベントの位置設定:サリックス, (0,0)
イベントの位置設定:サリックス, (0,0)
イベントの位置設定:サリックス, (0,0)
イベントの位置設定:サリックス, (0,0)
イベントの位置設定:サリックス, (0,0)
イベントの位置設定:サリックス, (0,0)
イベントの位置設定:サリックス, (0,0)
イベントの位置設定:サリックス, (0,0)
イベントの位置設定:パドゥープ, (0,0)
イベントの位置設定:パドゥープ, (0,0)
イベントの位置設定:パドゥープ, (0,0)
イベントの位置設定:パドゥープ, (0,0)
イベントの位置設定:パドゥープ, (0,0)
イベントの位置設定:パドゥープ, (0,0)
イベントの位置設定:パドゥープ, (0,0)
イベントの位置設定:パドゥープ, (0,0)
コモンイベント:マップ範囲取得
注釈:選択されたIDの種を畑にまきます。リージョンIDを指定してください。
注釈:種を撒きたい箇所に、リージョンを敷いてください。
注釈:畑のセル数=移動残数となります。
注釈:ここで設定した数だけ、作物イベントが敷かれます。
注釈:▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
変数の操作:#0124 【畑】畑リージョン = 21
変数の操作:#0127 【畑】移動残数 = 8
注釈:▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
ループ
条件分岐:【畑】ID:1_種ID = 0
ループの中断

分岐終了
条件分岐:【畑】移動残数 = 0
ループの中断

分岐終了
指定位置の情報取得:【取得情報】リージョン, リージョンID, ({【畑】栽培X座標},{【畑】栽培Y座標})
条件分岐:【取得情報】リージョン = 【畑】畑リージョン
条件分岐:【畑】移動残数 = 1
条件分岐:【畑】ID:1_種ID = 152
イベントの位置設定:カンタリオン, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 153
イベントの位置設定:フラウラ, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 154
イベントの位置設定:ペンサミエント, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 155
イベントの位置設定:アヴェンダル, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 156
イベントの位置設定:ベルコル, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 157
イベントの位置設定:サリックス, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 158
イベントの位置設定:パドゥープ, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
変数の操作:#0127 【畑】移動残数 -= 1

分岐終了
条件分岐:【畑】移動残数 = 2
条件分岐:【畑】ID:1_種ID = 152
イベントの位置設定:カンタリオン, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 153
イベントの位置設定:フラウラ, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 154
イベントの位置設定:ペンサミエント, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 155
イベントの位置設定:アヴェンダル, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 156
イベントの位置設定:ベルコル, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 157
イベントの位置設定:サリックス, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 158
イベントの位置設定:パドゥープ, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
変数の操作:#0127 【畑】移動残数 -= 1

分岐終了
条件分岐:【畑】移動残数 = 3
条件分岐:【畑】ID:1_種ID = 152
イベントの位置設定:カンタリオン, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 153
イベントの位置設定:フラウラ, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 154
イベントの位置設定:ペンサミエント, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 155
イベントの位置設定:アヴェンダル, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 156
イベントの位置設定:ベルコル, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 157
イベントの位置設定:サリックス, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 158
イベントの位置設定:パドゥープ, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
変数の操作:#0127 【畑】移動残数 -= 1

分岐終了
条件分岐:【畑】移動残数 = 4
条件分岐:【畑】ID:1_種ID = 152
イベントの位置設定:カンタリオン, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 153
イベントの位置設定:フラウラ, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 154
イベントの位置設定:ペンサミエント, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 155
イベントの位置設定:アヴェンダル, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 156
イベントの位置設定:ベルコル, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 157
イベントの位置設定:サリックス, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 158
イベントの位置設定:パドゥープ, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
変数の操作:#0127 【畑】移動残数 -= 1

分岐終了
条件分岐:【畑】移動残数 = 5
条件分岐:【畑】ID:1_種ID = 152
イベントの位置設定:カンタリオン, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 153
イベントの位置設定:フラウラ, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 154
イベントの位置設定:ペンサミエント, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 155
イベントの位置設定:アヴェンダル, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 156
イベントの位置設定:ベルコル, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 157
イベントの位置設定:サリックス, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 158
イベントの位置設定:パドゥープ, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
変数の操作:#0127 【畑】移動残数 -= 1

分岐終了
条件分岐:【畑】移動残数 = 6
条件分岐:【畑】ID:1_種ID = 152
イベントの位置設定:カンタリオン, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 153
イベントの位置設定:フラウラ, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 154
イベントの位置設定:ペンサミエント, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 155
イベントの位置設定:アヴェンダル, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 156
イベントの位置設定:ベルコル, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 157
イベントの位置設定:サリックス, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 158
イベントの位置設定:パドゥープ, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
変数の操作:#0127 【畑】移動残数 -= 1

分岐終了
条件分岐:【畑】移動残数 = 7
条件分岐:【畑】ID:1_種ID = 152
イベントの位置設定:カンタリオン, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 153
イベントの位置設定:フラウラ, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 154
イベントの位置設定:ペンサミエント, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 155
イベントの位置設定:アヴェンダル, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 156
イベントの位置設定:ベルコル, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 157
イベントの位置設定:サリックス, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 158
イベントの位置設定:パドゥープ, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
変数の操作:#0127 【畑】移動残数 -= 1

分岐終了
条件分岐:【畑】移動残数 = 8
条件分岐:【畑】ID:1_種ID = 152
イベントの位置設定:カンタリオン, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 153
イベントの位置設定:フラウラ, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 154
イベントの位置設定:ペンサミエント, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 155
イベントの位置設定:アヴェンダル, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 156
イベントの位置設定:ベルコル, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 157
イベントの位置設定:サリックス, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
条件分岐:【畑】ID:1_種ID = 158
イベントの位置設定:パドゥープ, ({【畑】栽培X座標},{【畑】栽培Y座標})

分岐終了
変数の操作:#0127 【畑】移動残数 -= 1

分岐終了

分岐終了
条件分岐:【畑】栽培X座標 ≠ 【取得情報】マップ範囲X
変数の操作:#0125 【畑】栽培X座標 += 1

それ以外のとき
変数の操作:#0125 【畑】栽培X座標 = 0
条件分岐:【畑】栽培Y座標 ≠ 【取得情報】マップ範囲Y
変数の操作:#0126 【畑】栽培Y座標 += 1

それ以外のとき
変数の操作:#0126 【畑】栽培Y座標 = 0

分岐終了

分岐終了

以上繰り返し
条件分岐:【畑】ID:1_種ID = 0
スイッチの操作:#0221 【畑】ID:1使用中 = OFF

それ以外のとき
スイッチの操作:#0221 【畑】ID:1使用中 = ON

分岐終了
スイッチの操作:#0062 【畑】種まき = OFF



全部コピペしまくって作っているので、非常に分かりづらいですが。

同じ名前のものは連番のイベント(コピー)です。なので、ずらっと並んだイベントの名前は全て違うイベントIDです。


スクリプトを扱える方は、多分、スクリプトで記述してしまった方が早くてスッキリします。

多分ですよ?(スクリプトをよくわかっていないので)


私はスクリプトが分からなかったので、全部コマンドで打ち込みました。(コピペを駆使して)


さて、このイベントは何をしているかというと、種の位置を畑に移す処理をしています。

だから、最初に種を用意しておく必要があったわけです。


後から種を追加する場合には、面倒くさいですが、必要な箇所に足していってください。

同じような形がたくさん並んでいるので、適当なのをコピペして、それらしいところに貼り付けて、ちょいちょい変えればOKです(笑)



では、イベントの解説に入りましょう。


まず、最初にずらっと並んだイベントの位置指定ですが、これは、全ての作物(種)イベントを、リージョンIDが指定されていない適当な箇所に集めています。

次に、マップ範囲を取得し、任意のリージョンIDを指定種を撒く数を指定します。


以下はループ処理です。

最初の条件分岐:【畑】ID1_種ID=0というのは、種選択画面でキャンセルされた場合の処理です。撒く種がないので、ループを終了します。

次の条件分岐:【畑】移動残数=0というのは、全ての種を撒き終わった場合の処理です。もう撒けないので、ループを終了します。

その下は、まだ撒ける種がある状態なので、ここから、種を撒く処理が始まります。


まず、( 変数X 、 変数Y )のリージョンIDを読み取ります。

初期値は(0,0)となりますが、以降はどこにあるか分かりません。でも、気にしなくて良いです。必ず(0,0)から始めなければならないわけではないので。

そして、そこが畑として指定したリージョンIDの時、イベントを移動させる処理を行います。

【畑】移動残数=1の時【畑】移動残数=8の時までの処理がありますので、番号が若い順から作ってください。

移動残数は処理中に-1ずつしていくので、若い順から作っていけば、残数が変更されても他の条件分岐が動かなくなります。(逆にすると、一瞬で残数がなくなって終了し、1マスにしか移動されないので気を付けましょう)

で、条件分岐の中身は、種IDアイテム選択の処理で選ばれたアイテムIDの時に、それに該当する作物(種)イベントを1個選択し、(変数X変数Y)に持ってきます。

これを、全ての種についてコピペし、イベントIDやら条件分岐のIDやらを変更して、作成していきます。


全ての作物の分を作り終えたら、最後に変数の操作【畑】移動残数を-1します。



ここまで終わったら、大元の条件分岐:【畑】移動残数=1の時丸ごとコピーし、その下に貼り付けて、【畑】移動残数=2の時に変更します。

そして、作物イベントの箇所を同じ種類の別イベント(コピーイベント)に変更していきます。


この作業を、【畑】移動残数=最初に設定した数になるまでやっていきます。


正直、面倒くさいです。頑張ってください。



これで、取得したリージョンID=指定したリージョンID(畑の上)の時の処理ができました。


この条件分岐の外にあるのは、(変数X変数Y)を移動させる処理です。


条件分岐:【畑】栽培X座標 ≠ 【取得情報】マップ範囲X
変数の操作:#0125 【畑】栽培X座標 += 1

それ以外のとき
変数の操作:#0125 【畑】栽培X座標 = 0
条件分岐:【畑】栽培Y座標 ≠ 【取得情報】マップ範囲Y
変数の操作:#0126 【畑】栽培Y座標 += 1

それ以外のとき
変数の操作:#0126 【畑】栽培Y座標 = 0

分岐終了

分岐終了



私のブログを読んでいた方なら分かるかと思いますが、これ、同じ形が無限ミミックシンボルエンカウントにもありました。

この処理は、マップを端から1マスずつ調べていく処理になります。

全く同じことをやっていますので、詳しくは上のリンクを参考にしてください。


このループ処理により、種をすべて並べ終えるまで処理を行い続けます。

どこかでミスすると、無限ループに陥ったり、変な箇所が空いたりしますので、気を付けてください。



そして、最後に条件分岐で【畑】ID1_種ID=0かどうかを見ておきます。

【畑】ID1_種ID=0でない時は、何かしか種が選択されているときなので、【畑】使用中=ONにします。


そして、自分自身のスイッチを切って処理終了です。



この作物(種)イベント移動処理は、最初の【畑】種選択の中にあるスイッチの操作:種まき=ONにより、起動されます。

流れとしては、

 コモンイベント:【畑】種ID取得処理
アイテム選択の処理:【畑】種ID, 隠しアイテムB
コモンイベント:【畑】種ID取得後処理
コモンイベント:【畑】種まき準備
スイッチの操作:#0062 【畑】種まき = ON
作物(種)イベント移動処理
→作物(種)の育成開始

となるわけです。



また、このイベントが別途用意されていて、種IDをマップ用に格納しておいたのは、もう1つ理由があります。

種の移動処理を行いましたが、マップを出ると、イベントの位置が初期化されてしまいます。

そうすると、戻ってきたときには畑の作物があらぬところに生えている……という事態が起きます。


それを防ぐために、マップに入ると同時に、スイッチの操作:種まき=ONを行ってください。


そうすると、マップ用に記憶していた種IDを利用して、種まきイベントが勝手に畑の上に作物(種)イベントを敷き詰めておいてくれます。

スイッチ1つで手軽に場所記憶させるためのイベントでもあるわけです。



これで、畑イベントの配置までが終わりました。
やっとです(笑)


これを、畑を増やす度にやらなきゃいけないのですから、結構シンドイです。

早めに手を打つとしたら、イベントIDが同じになるように、作っておくと良いでしょう。

例えば、マップを作製したら、ストーリーなどに必要なイベントの前に、畑用イベントを先に並べちゃう、など。

イベントIDが同じであれば、全てのイベントを順番にコピペして、変数をちょちょっと変えれば完了です。


予め、ID○~○番は畑用と決めておいて、空イベントを複製するなどしてIDを調節した方が、コピペしてイベントIDをいじくるよりはるかに楽な気がします。


また、イベント移動の処理はスクリプトで出来るよ~、という方が居ましたら、教えてください

コピペで困るのはイベントIDが関わってくる部分だけなので、ここをスクリプト処理で数字をちょこちょこ変えるだけで出来るのであれば、だいぶ楽な気がします。


ついでに、スクリプトを使えるなら、これをプラグイン化してください(笑)

私が、そのプラグインを使わせていただきます(笑)



それでは、次回は作物の成長に関わる部分を解説させていただきます。

ほんとに、このシステムを導入するのは大変です(笑)




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





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

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

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

ゲーム制作日記<36> 畑システム

op.png



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


すみません、最近、激務過ぎて、ブログの更新がおっつきませんでした。
で、激務ついでに新システムができたので、発表します(笑)


今回紹介するシステムは、名付けて「畑システム」です。


イメージとしては、牧場物語?ルーンファクトリー?
そんな感じの、を導入します。


イメージが湧かないかもしれないので、今回も、まずは画像で説明しましょう。


tc26-17.png


目の前に、っぽい敷地があります。


tc26-33.png


そして、手持ちのアイテムはこんな感じ。
肥料を持っています。


tc26-19.png


に踏み入って決定ボタンを押すと、このように「種を撒ける」ことをにおわすアナウンスが流れます。


tc26-20.png


そして、畑レベルの確認と、行動を選択できます。
畑レベルについては、後述します。


tc26-21.png


『種をまく』を選択すると、このように、手持ちの種一覧が表示され、撒きたい種を選択できます。


tc26-22.png


種を撒いてみました。
種の画像は、御味噌屋さんからいただきました。
ありがとうございます。


tc26-23.png


種のある個所で決定ボタンを押すと、今度は、水を撒くことが選択できます。


tc26-24.png


水をやると、このように、給水中の画像が出てきてアナウンスしてくれます。ここには水を撒いてますよ、みたいな。

この画像も、御味噌屋さんからいただきました。
本当に、ありがとうございます。


tc26-25.png


一定時間が経つと、このように成長しました。
まだ、雑草っぽいです。


tc26-26.png


どうやら、まだ水を与えることが出来るようですね。
早速、水を与えてみましょう。


tc26-27.png


給水中のアイコンが表示されました。

ちなみに、手持ちの水は消費されていきますので、水を持っていないと、作物を育てることができません。気を付けましょう。


tc26-28.png


さて、お話ししている間に、が咲きました。
良い感じで成長してきましたね。


tc26-29.png


おや?
どうやら、収穫できるようです。


tc26-30.png


今回はカンタリオンの種を撒いたので、カンタリオンという花を収穫できました。


tc26-34.png


アイテムボックスを見ると、この通り。
カンタリオンの種を1つ消費し、水を2つ消費しました。

その代わり、カンタリオンが8つ増えています。


tc26-32.png


ちなみに、肥料を撒きまくると、このように畑レベルを上げることが出来ます。

畑レベルが上がると、作物の成長速度が速くなり、収穫までの時間を短縮することが出来るようになります。



以上が、畑システムの実際の挙動でした。



仕様を簡潔にまとめると、
・作物を育てて収穫するまでには、種、水が必要です。
・畑があれば、そこに好きな種を撒くことができます。
・作物は、畑に撒いた数だけ収穫できます。(今回は8つにしています)
・作物に水をあげ、しばらく放っておくと成長します。
・成長段階が上がるたびに、水が必要となります。
・畑にはレベルがあり、レベルが高い畑では作物が早く育ちます。


ざっと、こんな感じの仕様です。

ちょっと地味かもしれませんが、放置でアイテムを増やすことのできる、今時なアイテム生成システムです。


しかし、これだけのシステムを作るのに、大変苦労しました(笑)

一見すると、そこまで難しくなさそうなシステムですが……
意外と、シンドイ内容だったりします。


というのも、いろんなパターンで改変できるよう自由度を高めた結果、システムが複雑になりまして。


制作者側としての機能ですが、ある程度コピペで作れ、さらに、好みに合わせて改変が出来るように仕上げました。

制作者側に対する具体的な仕様ですが、

・畑の形は自由に作ることが出来る。(飛び石状も可能)
・畑の大きさは自由に変更できる。
・撒ける種の種類は自由に増やせる。
・作物ごとの成長速度を設定できる。
・作物ごとに成長段階を設定できる。
・畑レベルの上限を設定できる。
・畑レベルを上げるために必要な肥料撒きの回数を設定できる。

こんな感じです。


基本的なシステムはコピペコモンイベントで行い、細かい設定は、複製して中身をいじることで設定可能としています。

ただ、あまりいじり倒すとかなり大規模なイベントシステムになりますので、必要最小限の機能にとどめておいても良いかもしれません。今回の例は、最大限にいじりまくっているので、かなり複雑で大掛かりなものとなっています。


ちょっとだけ、覚悟しておいてください。


また、このシステムにはデメリットが幾つか存在します。プラグインで解消できるものもいくつかありますが、それなら、もう全てをプラグインで作ってもらいたいというのが正直なところです(笑)

・イベントを大量に用意する必要があります。
・変数を大量に使用する可能性があります。
・スイッチを大量に使用する可能性があります。
・並列処理を多用する可能性があるため、重くなるかも?
・畑は1マップにつき1つまで(大きさ、範囲は自由です)
・畑には1回で全撒きになります(飛び石状の畑でも、全部に撒かれます)

まあ、普通の畑を1個2個作る分には、まず問題ないです。
大規模なモノや特殊なモノを作る場合は、ちょっと都合が悪いかもしれません。




それでは、先ずは必要なモノの確認からいきましょう。


【必須】
・コモンイベント ×5(コアとなる物です)
・スイッチ ×3(コア用)
・変数 ×10(コア用)
・リージョンID ×1
・イベント ×1(コア用)

・コモンイベント ×1×畑の数(畑のあるマップ数です)
・スイッチ ×3×畑の数(畑のあるマップ数です)
・変数 ×4×畑の数(畑のあるマップ数です)
・イベント ×畑のセル数(マスの数)×種の種類×畑の数

・イベント ×畑のセル数(マスの数)


【推奨】
・コモンイベント(マップ範囲取得用)
・コモンイベント(必要であれば、会話用にいくつか)




【推奨】のコモンイベントは、以下のような内容です。

コモンイベント: マップ範囲取得
tc26-35.png

変数の操作:#0029 【取得情報】マップ範囲X = $gameMap.width() -1
変数の操作:#0030 【取得情報】マップ範囲Y = $gameMap.height() -1



変数の操作で、スクリプトを書き込めます。
これにより、マップの大きさを取得できるので、テンプレートとして用意しておくと良いでしょう。

なお、得られる数値は1から始まりますが、実際の座標は0から始まるので、座標を変数で入力する際の都合上、あらかじめ-1しておきます。



コモンイベント: 【会話】表示(右)
tc26-36.png

変数の操作:#0013 【画像】X座標 = 415
変数の操作:#0014 【画像】Y座標 = 23



会話などでグラフィックを表示させる場合には、こういった座標を指定しておくテンプレートを用意しておくと、楽です。

使用する画像は同じ大きさで作成し、あらかじめちょうど良い位置に調整しておいて、X座標とY座標を変数に代入しておきます。

ピクチャの移動や表示の際に、表示先の座標を変数で指定できるので、このテンプレートを差し込むだけで都合の良い場所に表示させることが出来て便利です。




それでは、畑イベントに使用するイベントの構造を説明します。

イベントは、大きく分けると3つの構造に分かれています。


1つ目は、コアとしての機能を担当するイベント群です。
種を撒くための処理だったり、分岐だったり、アイテムの表示を担当しています。
改変・修正するときにまとめて行えるよう、主にコモンイベントを使用しています。

2つ目は、それぞれのマップにある畑を管理するイベント群です。
条件分岐を多用しますが、大部分はコピペで作ることができます。
ただ、作業自体は単純ですが、ちょいちょい内容変えるのが面倒くさいです。

3つ目は、畑そのもののイベントです。
アイコンや初期の動作を担当しています。


構造的には3つに分類されますが、結構、あちこちに処理が点在しています。どこから手を付けていいか悩ましいところですが、まずは下準備から行きましょうか。


まず、アイテムを準備しましょう。
機能として最低限必要なモノは、種アイテムです。

tc26-37.png

tc26-38.png


種アイテムは、通常アイテムとして表示する用のものと、別枠で使用するダミーを用意しておく必要があります。
ダミーは、通常アイテムコピペして作ります。


ちなみに、私のゲームでは、

通常アイテム : フィールドや戦闘などで使用できる消耗品。
大事なもの  : イベントで必要となるアイテム。
隠しアイテムA: 非表示の、システム・イベント上必要となる物。
隠しアイテムB: 都合上、一時的に格納する必要があるアイテム。

といった分類をしています。


ダミー用の種アイテムは、選択肢表示する際、一時的に種だけを格納したいため、隠しアイテムBに分類されるものとなっています。


あとは、拡張機能用として、肥料を用意しています。

水や肥料を使用せず、撒いて放置するだけで良い場合は、必須のアイテムではありません。



それでは、まずはコアの内容から説明していきましょう。


tc26-40.png


このマップでのイベント配置はこんな感じになっています。
畑システムで利用しているイベントは色枠で囲った部分です。

そして、コアとなるのは、赤枠で囲った部分です。


では、コアのイベントの中身を見てみましょう。


tc26-43.png

<実行内容>
条件分岐:【畑】ID:1使用中がOFF
コモンイベント:【畑】種選択

それ以外のとき

分岐終了


1ページ目は、畑の上で決定ボタンを押したときの処理です。

その畑が使用中でなければ、最初に紹介した畑メニュー画面を表示させます。

畑メニュー画面の処理はコモンイベントで編集していますので、後ほど解説します。


tc26-44.png


2ページ目は、畑に水をあげた時のアイコン表示用ページです。
これは表示だけで、内容は特にありません。
赤枠の部分を設定しておきましょう。


tc26-45.png

<実行内容>
ウェイト:5フレーム
スイッチの操作:#0064 【畑】クリアタイム = OFF


3ページ目は、ウエイトタイムです。

処理の都合上、一瞬だけこの時間を設けないと収穫後に連続して畑メニュー画面が出てしまうためです。





次に、1ページ目の内容にあるコモンイベント:【畑】種選択の解説をしていきます。

tc26-46.png

<実行内容>
コモンイベント:【会話】表示(左)
ピクチャの表示:#2, Alto_2, 左上 ({【画像】X座標},{【画像】Y座標}), (100%,100%), 0, 通常
ピクチャの移動:#2, 左上 ({【画像】X座標},{【画像】Y座標}), (100%,100%), 255, 通常, 20フレーム
変数の操作:#0121 【畑】種ID = 0
文章:なし, ウィンドウ, 下
文章\n<アルト>「この場所は、種を撒けそうだな。
ループ
文章:なし, ウィンドウ, 下
文章\n<アルト>「この畑のレベルは\c[17]\v[221]\c[0]だぜ。
選択肢の表示:種をまく, 肥料をまく, 何もしない (ウィンドウ, 右, #1, #3)
種をまくのとき
コモンイベント:【畑】種ID取得処理
条件分岐:【畑】種不所持がON
文章:なし, ウィンドウ, 下
文章\n<アルト>「あ・\.・\.・\.\.
文章 種をもってねぇや。
コモンイベント:【会話】終了(フェード)
ループの中断

それ以外のとき
プラグインコマンド:KeyItemNumber 4 1
アイテム選択の処理:【畑】種ID, 隠しアイテムB
コモンイベント:【会話】終了

分岐終了
コモンイベント:【畑】種ID取得後処理
コモンイベント:【畑】種まき準備
スイッチの操作:#0062 【畑】種まき = ON
ループの中断

肥料をまくのとき
条件分岐:パーティが肥料を持っている
コモンイベント:【畑】畑レベル処理

それ以外のとき
文章:なし, ウィンドウ, 下
文章\n<アルト>「あ・\.・\.・\.\.
文章 肥料をもってねぇや。
コモンイベント:【会話】終了(フェード)
ループの中断

分岐終了

何もしないのとき
コモンイベント:【会話】終了
ループの中断

分岐終了

以上繰り返し



(処理中にあるプラグインコマンドですが、これは神無月サスケさんのKeyItemNumberというプラグインで、隠しアイテムBにおいても個数表示をさせるためのコマンドです。このプラグインを導入していないなら、必要ない処理です。)


このコモンイベントは、メニュー用の内容となっています。
ざっくり内容を説明すると、会話処理で畑レベルをアナウンスし、次にどうするかの選択分岐を行います。

さて、このコモンイベントの中に、さらに沢山のコモンイベントが散りばめられています。会話用のコモンイベントは都合上扱いやすいようにと作ったので、これはさておき。

畑システムのためのコモンイベントがいくつかありますので、今度はこれらを紹介していきます。

・【畑】種ID取得処理
・【畑】種ID取得後処理
・【畑】種まき準備
・【畑】畑レベル処理


以上の4つが、メインの処理を行っているコモンイベントです。


まずは、【畑】種ID取得処理から説明していきます。

tc26-48.png


<実行内容>
スイッチの操作:#0103 Js.小窓 = OFF
注釈:種の数をカウントし、選択肢用のリストを作成します。
ループ
条件分岐:パーティがカンタリオンの種を持っている
アイテムの増減:カンタリオンの種 - 1
アイテムの増減:カンタリオンの種 + 1
変数の操作:#0123 【畑】種所持判定 += 1

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

分岐終了

以上繰り返し
ループ
条件分岐:パーティがフラウラの種を持っている
アイテムの増減:フラウラの種 - 1
アイテムの増減:フラウラの種 + 1
変数の操作:#0123 【畑】種所持判定 += 1

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

分岐終了

以上繰り返し
ループ
条件分岐:パーティがペンサミエントの種を持っている
アイテムの増減:ペンサミエントの種 - 1
アイテムの増減:ペンサミエントの種 + 1
変数の操作:#0123 【畑】種所持判定 += 1

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

分岐終了

以上繰り返し
ループ
条件分岐:パーティがアヴェンダルの種を持っている
アイテムの増減:アヴェンダルの種 - 1
アイテムの増減:アヴェンダルの種 + 1
変数の操作:#0123 【畑】種所持判定 += 1

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

分岐終了

以上繰り返し
ループ
条件分岐:パーティがベルコルの種を持っている
アイテムの増減:ベルコルの種 - 1
アイテムの増減:ベルコルの種 + 1
変数の操作:#0123 【畑】種所持判定 += 1

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

分岐終了

以上繰り返し
ループ
条件分岐:パーティがサリックスの種を持っている
アイテムの増減:サリックスの種 - 1
アイテムの増減:サリックスの種 + 1
変数の操作:#0123 【畑】種所持判定 += 1

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

分岐終了

以上繰り返し
ループ
条件分岐:パーティがパドゥープの種を持っている
アイテムの増減:パドゥープの種 - 1
アイテムの増減:パドゥープの種 + 1
変数の操作:#0123 【畑】種所持判定 += 1

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

分岐終了

以上繰り返し
注釈:種を1種類でも持っているかどうかの判定を行います。
条件分岐:【畑】種所持判定 ≥ 1
スイッチの操作:#0061 【畑】種不所持 = OFF

それ以外のとき
スイッチの操作:#0061 【畑】種不所持 = ON

分岐終了
変数の操作:#0123 【畑】種所持判定 = 0



(処理中にあるスイッチ操作:Js.小窓=OFFの処理は、神無月サスケさんのTinyGetInfoWndを利用している場合に必要な処理です。このプラグインで使用されているスイッチをOFFにしておかないと、ループ処理により大量の小窓が出現します。プラグインを導入していなのであれば、不要な処理です)


内容は長く見えますが、内容は単純です。
カンタリオンの処理を例に、説明していきますね。


まず、カンタリオンの種を持っているかどうかの条件分岐を組みます。

そして、アイテムの増減を行いますが、アイテムの増減が2つありますね。

同じものが選択されて-1+1されているように見えますが、実は違うアイテムです。

まず、条件分岐では通常アイテムのカンタリオンの種を持っているときという条件分岐を組み、通常アイテムのカンタリオンの種を-1します。
そして、ダミーのカンタリオンの種を+1します。

さらに、種が1個でもダミーと入れ替えられた時の判定のために、フラグ用の変数+1させます。これは、スイッチで代用しても構いません。

この処理をループで囲み、手持ちのカンタリオンの種(通常アイテム)が無くなるまでループさせます。種が無くなったら、この部分の処理を中断します。


そのあとをつらつらっと見てみると、ループ処理がたくさん見えると思います。

これらは、カンタリオンの処理をコピペして、内容をフラウラの種、ペンサミエントの種・・・と変えていっているだけです。

全てのループを終えたら、最後に条件分岐で【畑】種所持判定を行っています。

この値が1以上の時、すなわち、1つでも種が通常アイテム→ダミー用の隠しアイテムBに交換された場合は、何かしらの種を持っていることになるので、スイッチ【畑】種不所持をOFFにします。

種を全く持っていない場合には、この値がのままになるので、スイッチ【畑】種不所持をONにします。

そして、処理が終わったので変数【畑】種不所持判定=0にリセットしておきます。(スイッチを使う場合は、これをOFFにしておきます)


以上が、コモンイベント【畑】種ID取得処理となります。

自分で名前をつけといてなんですが、種IDはこの時点では取得していません(笑)

リストを作る処理でした。

種IDの取得は、【畑】種選択の中で、この処理を行った後に行われるアイテム選択の処理で取得されます。





次に、【畑】種ID取得後処理について説明します。

tc26-49.png

<実行内容>
注釈:リスト作成に使用された種を、通常アイテムに戻します。
ループ
条件分岐:パーティがカンタリオンの種を持っている
アイテムの増減:カンタリオンの種 + 1
アイテムの増減:カンタリオンの種 - 1

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

分岐終了

以上繰り返し
ループ
条件分岐:パーティがフラウラの種を持っている
アイテムの増減:フラウラの種 + 1
アイテムの増減:フラウラの種 - 1

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

分岐終了

以上繰り返し
ループ
条件分岐:パーティがペンサミエントの種を持っている
アイテムの増減:ペンサミエントの種 + 1
アイテムの増減:ペンサミエントの種 - 1

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

分岐終了

以上繰り返し
ループ
条件分岐:パーティがアヴェンダルの種を持っている
アイテムの増減:アヴェンダルの種 + 1
アイテムの増減:アヴェンダルの種 - 1

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

分岐終了

以上繰り返し
ループ
条件分岐:パーティがベルコルの種を持っている
アイテムの増減:ベルコルの種 + 1
アイテムの増減:ベルコルの種 - 1

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

分岐終了

以上繰り返し
ループ
条件分岐:パーティがサリックスの種を持っている
アイテムの増減:サリックスの種 + 1
アイテムの増減:サリックスの種 - 1

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

分岐終了

以上繰り返し
ループ
条件分岐:パーティがパドゥープの種を持っている
アイテムの増減:パドゥープの種 + 1
アイテムの増減:パドゥープの種 - 1

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

分岐終了

以上繰り返し



ここでは、注釈にある通り。
ダミーにされた種をもとの通常アイテムの種に戻します。


先ほどの【畑】種ID取得処理コピペして、内容をちょこちょこいじります。

今度は、ダミー→通常アイテムに戻す処理なので、条件分岐はダミーの種を持っているときに変更し、アイテムの増減では

ダミー用の種-1
通常アイテム用の種+1

というように、符号を逆にしていきます。
(加算と減算のチェックを入れ替えてあげればOKです)


種所持判定は行っても良いですが、既に行っているので、ここでは消しています。

残していても余計な処理が少し行われるだけなので、不都合はそんなに無いかもしれません。




それでは、今度は【畑】種まき準備に参りましょう。

tc26-50.png

<実行内容>
注釈:取得した種IDにより、種まき処理へと移行するための準備を行います。
注釈:ID:152=カンタリオン
注釈:ID:153=フラウラ
注釈:ID:154=ペンサミエント
注釈:ID:155=アヴェンダル
注釈:ID:156=ベルコル
注釈:ID:157=サリックス
注釈:ID:158=パドゥープ
条件分岐:【畑】種ID = 152
アイテムの増減:カンタリオンの種 - 1

分岐終了
条件分岐:【畑】種ID = 153
アイテムの増減:フラウラの種 - 1

分岐終了
条件分岐:【畑】種ID = 154
アイテムの増減:ペンサミエントの種 - 1

分岐終了
条件分岐:【畑】種ID = 155
アイテムの増減:アヴェンダルの種 - 1

分岐終了
条件分岐:【畑】種ID = 156
アイテムの増減:ベルコルの種 - 1

分岐終了
条件分岐:【畑】種ID = 157
アイテムの増減:サリックスの種 - 1

分岐終了
条件分岐:【畑】種ID = 158
アイテムの増減:パドゥープの種 - 1

分岐終了
スイッチの操作:#0103 Js.小窓 = ON
変数の操作:#0018 【取得情報】マップID = マップID
注釈:取得された現在のマップID・種IDにより、変数を指定された畑へ格納します。
注釈:以下、畑のあるマップIDを条件として分岐させ、コピペして内容を変更してください。
注釈:▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
条件分岐:【取得情報】マップID = 5
変数の操作:#0181 【畑】ID:1_種ID = 【畑】種ID

分岐終了
注釈:▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲



ここでの処理は、種の消費種IDの受け渡しを行っています。


まず、選択された種IDにより、消費させる種を条件分岐で選択します。

種IDは0、もしくは、任意のアイテムIDが1つしか入らないので、その他の分岐を作る必要はありません。

これも、カンタリオンの処理を作った後に、コピペで複製して、条件分岐のアイテムをちょこちょこ変えただけです。


種消費の処理が終わったら、変数の操作でマップIDを取得します。

取得したマップIDは、これから種を撒こうとする畑のあるマップを指します。


条件分岐を組み、そのマップ専用の種IDを格納する変数に、先ほど取得した種IDをつっ込んでおきます。





長くなったので、ここで一旦解説を中断させていただきます。

【畑】畑レベル処理は、肥料をあげる場合の拡張機能の処理ですので、肥料を使わない場合は不要な処理です。

なので、メインのコア部分の処理はここまでとなります。



最初に言った通り、なかなかに大規模なシステムでしょ?(笑)

こんなのがまだまだ続くんです(^^;


次回は、各マップで行う処理を説明していきますね。




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





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

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

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

ゲーム制作日記<35> 討伐クエスト

op.png



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



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


今回ご紹介するシステムは、みなさん大好き
「討伐クエストシステム」です。


仕様としては、モンスター討伐の依頼を受注し、指定モンスターが討伐された数をカウントします。

討伐数が目標数以上に達したら、イベントクリアのメッセージを出現させ、プレイヤーにアナウンスします。

また、フィールド上で指定したキー(PgUp)を押すことで、現在の討伐数と目標までの数をメッセージで表示させます。

討伐クエストのクリア報告をすると、報酬をもらうことが出来ます。

討伐クエストは複数受注可能で、それぞれのクエストが受注されていない場合は、討伐数にカウントされません

一度クリアしたクエストでも、再受注は可能です。


今回の仕様はこんな感じとなっていますが、あとは、お好みで改変してください。

細かいイベントの仕様までは、こちらで作りきれないので(^^;



それでは、実際にどういった挙動なのかを確認してみましょう。




tc27-4.png

ここに、討伐クエストを受注できるギルドがあります。



tc27-5.png

ものすっごく感じの悪いやつでした。
なんで、こんなギルドに入っちゃったんだろう。



tc27-6.png

まあ、四の五の言っても仕方がないので、
先ずはクエストを受注しましょう。

とりあえず、今回は一番上の、ホーネットの討伐に挑んでみます。



tc27-7.png

なるほど。
3匹倒して来ればいいのね。

腕試しには、ちょうど良さそうなクエストです。

しっかし、こいつの口の利き方は何とかならんのか?(笑)



tc27-8.png

頑張ってくれたまうよ、畜生め。



tc27-11.png

では、ちょうど横に、飛んで火に入るなんちゃらさんがおりますので、さっそく狩ってきましょう



tc27-9.png

おお、ちょうど良さそうな構成ですね。
一気に2体狩れちゃいます。



tc27-25.png

サクッとぶっ飛ばしまして。



tc27-10.png

PgUpキー(Fn+↑)で討伐数を確認してみると、こんな感じ。



tc27-9.png

で、目標までもうちょっとなので、もう1回狩ります。


tc27-25.png

難なく勝利しました。


tc27-15.png

お、討伐目標を達成したようです。
それでは、帰って報告しましょう。

でも、あいつと話すのやだなぁ(笑)



tc27-16.png

ほんっとにコイツは!(笑)
開口一番、出てくる台詞がそれかよっ!



tc27-17.png

一応、ちゃんと仕事はしているみたいですね。
選べる項目は、それなりにしっかりしています。

それでは、今回は目標を達成したので、討伐報告をしましょう。



tc27-18.png

ぁあん?!



tc27-19.png

思ってても、口にすんなっ!
てか、顧客に対してなんてことを思ってんだっ!



tc27-20.png

もう、早く報告を済ませて帰りたい・・・



tc27-21.png

きちんと、仕事はしてくれるみたいですね。
そこは、意地悪しないようです。



tc27-22.png

だから、一言余計なんだよ(笑)



tc27-23.png

なんで、コイツこんなに上から目線なの?(笑)



tc27-24.png

ようやく、お目当ての報酬がもらえました。

このピータというアイテムは、私の作品で登場するオリジナルの回復アイテムです。FFでいうポーション的な物です。



と、挙動はこんな感じです。

会話に成功報酬の説明など入れてもいいですし、工夫はいろいろ。
今回はひな形として、こんな具合にしてみました。

とりあえず、良いものをくれるとしても、
あいつの依頼はもう受けたくないですね(笑)



それでは、まず必要なモノの確認から。


【必須】
・スイッチ ×(3×討伐モンスターの種類)
・変数 ×(2×討伐モンスターの種類)
・スイッチ ×2
・変数 ×2
・コモンイベント ×1
・受注クエストの受付イベント ×1




さて、今回の討伐システムは、受付イベントを作る前に、いくつか準備が必要となります。

まず、ゲーム開始した後、どこかで何も受注していないことをフラグ付けするためのスイッチ(ここでは、【討伐クエ】無登録)をONにしておきましょう。理由は後述します。



次に、敵グループでのバトルイベントの設定です。

tc27-26.png

まず、討伐対象となる全ての敵キャラについて、「HP<=0の時」という条件で、討伐数を+1するイベントを組みます。討伐イベントを受注してないときに討伐数が増えないように、もう1つ条件付けをするのを忘れないように。


実行内容はこんな感じ。

条件分岐:【討伐クエ】ホーネットがON
変数の操作:#0172 【討伐数】ホーネット += 1
変数の操作:#0176 【討伐】目標ホーネット -= 1

分岐終了




tc27-13.png

まず、一つ目の条件として、バトルイベントの「条件」という箇所をクリックすると、このように表示されます。

敵キャラHPにチェックを入れ、#○と書いてあるところをクリックすると、


tc27-14.png

このように、そのグループ内の敵を選択することが出来ます。
HPは0%以下に設定すれば、その敵が倒された瞬間に条件を満たし、中身のイベントが起動します。

しかし、クエストを受注していないのに討伐数が増えるとウマくないので、条件分岐で討伐クエスト受注用のスイッチを条件にしましょう。

イベントの中身は、討伐数を増やすと同時に、討伐目標数を減らします。



次に、コモンイベントの設定です。

tc27-27.png

トリガーは並列処理、条件のスイッチは適当に名前を付けて設定しましょう。ここでは【討伐クエ】判定という名前にしています。

以下、実行内容です。

条件分岐:【討伐クエ】判定ホーネットがON
条件分岐:【討伐数】ホーネット ≥ 3
文章:なし, 暗くする, 中
文章
文章討伐クエスト【ホーネット討伐】の討伐数を達成しました!
文章ミクダ=シオに話しかけて、アイテムを貰いましょう!
スイッチの操作:#0302 【討伐クエ】判定ホーネット = OFF

分岐終了

分岐終了
条件分岐:【討伐クエ】判定スパイダーがON
条件分岐:【討伐数】スパイダー ≥ 4
文章:なし, 暗くする, 中
文章
文章討伐クエスト【スパイダー討伐】の討伐数を達成しました!
文章ミクダ=シオに話しかけて、アイテムを貰いましょう!
スイッチの操作:#0304 【討伐クエ】判定スパイダー = OFF

分岐終了

分岐終了
条件分岐:【討伐クエ】ホーネットがON
変数の操作:#0175 【討伐】未達成 += 1

分岐終了
条件分岐:【討伐クエ】スパイダーがON
変数の操作:#0175 【討伐】未達成 += 1

分岐終了
条件分岐:【討伐】未達成 = 0
スイッチの操作:#0306 【討伐クエ】判定 = OFF

分岐終了
変数の操作:#0175 【討伐】未達成 = 0
条件分岐:ボタン[ページアップ]が押されている
条件分岐:【討伐クエ】ホーネットがON
条件分岐:【討伐クエ】判定ホーネットがON
文章:なし, 暗くする, 中
文章
文章現在の討伐数
文章ホーネット:\c[2]\v[172]\c[0]体
文章目標まで、あと\v[176]体

それ以外のとき
文章:なし, 暗くする, 中
文章
文章現在の討伐数(目標達成済み)
文章ホーネット:\c[2]\v[172]\c[0]体

分岐終了

分岐終了
条件分岐:【討伐クエ】スパイダーがON
条件分岐:【討伐クエ】判定スパイダーがON
文章:なし, 暗くする, 中
文章
文章現在の討伐数
文章スパイダー:\c[2]\v[173]\c[0]体
文章目標まで、あと\v[177]体

それ以外のとき
文章:なし, 暗くする, 中
文章
文章現在の討伐数(目標達成済み)
文章ホーネット:\c[2]\v[173]\c[0]体

分岐終了

分岐終了

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



内容としては、いくつかのパートに分かれています。

まず、各モンスターの討伐クエストをクリアしているかをスイッチで条件付けしています。

ちょっと紛らわしいですが、クリアしていない場合はON、クリアしている場合はOFFになります。

クエストをクリアしておらず、かつ、討伐数が指定の数値以上の場合、クリアメッセージを表示し、クリア判定のスイッチをOFFにします。そうでない場合は、飛ばされます。


次に、受注中で未達成のクエストがいくつ残っているかの判定を行います。

まず、受注中クエストの判定をスイッチ条件付けします。
これは、ONなら受注中で、OFFなら受注していないことになります。

受注中(目標達成していても未報告のもの)がある場合は、変数:未達成を+1します。これを、各クエストについて評価していきます。

そして、受注中のものが1つもない(未達成=0)の場合には、このコモンイベントのスイッチを切って、処理を終了させます。

この処理はスイッチがONである限り無限にループして、常に条件を満たしているか監視していますので、最後に変数:未達成=0にしてリセットするのを忘れないようにしましょう。



最後のパートは、PgUpキー(Fn+↑)を押したときの処理です。現在の討伐数は、討伐クエストの条件が達成済みかどうかで変えています。

討伐クエストが達成済み(【討伐クエ】判定モンスター名がOFFの時)は、目標までの残りを表示しないメッセージとし、未達成の場合は目標までの残りを表示します。

これを、各討伐クエストについて作っていきます。
複数モンスターを狩るクエストを作ったときは、ちょっと面倒くさい形になりそうです。




これで、受付イベントの前準備ができました。
既に疲労困憊かもしれませんが、最後の大仕事です。


それでは、受付イベントの内容に参りましょう。


tc27-1.png


tc27-2.png


内容は2ページありますが、1回目(初対面)に話したときと2回目では会話が違う方が良いかなと思い、分けているだけです。また、初回はクエスト報告もないので、不要な選択肢を消しています。

なので、今回は2ページ目の内容だけ解説していきます。

スイッチ等の条件やトリガーは、普通の会話イベントと同じ作りなので、割愛させていただきます。


以下、実行内容です。

文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「おや、まだいたのか。
ループ
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「今回は何をするんだい?
選択肢の表示:ホーネットを討伐, スパイダーを討伐, 討伐報告, 討伐をあきらめる, なんでもない (ウィンドウ, 右, #1, #5)
ホーネットを討伐のとき
条件分岐:【討伐クエ】ホーネットがON
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「おや、既に登録済みのようだね。
文章 こんなところで油売ってないで、
文章 さっさと討伐してきてくれよ。

それ以外のとき
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「討伐数が3を超えたら、報酬をくれてやる。
文章 ホーネット討伐に挑戦するのかい?
選択肢の表示:はい, いいえ (ウィンドウ, 右, #1, #2)
はいのとき
スイッチの操作:#0301 【討伐クエ】ホーネット = ON
スイッチの操作:#0302 【討伐クエ】判定ホーネット = ON
スイッチの操作:#0306 【討伐クエ】判定 = ON
変数の操作:#0176 【討伐】目標ホーネット = 3
スイッチの操作:#0305 【討伐クエ】無登録 = OFF
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「それじゃあ、頑張ってくれたまえ。
ループの中断

いいえのとき

分岐終了

分岐終了

スパイダーを討伐のとき
条件分岐:【討伐クエ】スパイダーがON
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「おや、既に登録済みのようだね。
文章 こんなところで油売ってないで、
文章 さっさと討伐してきてくれよ。

それ以外のとき
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「討伐数が4を超えたら、報酬をくれてやる。
文章 スパイダー討伐に挑戦するのかい?
選択肢の表示:はい, いいえ (ウィンドウ, 右, #1, #2)
はいのとき
スイッチの操作:#0303 【討伐クエ】スパイダー = ON
スイッチの操作:#0304 【討伐クエ】判定スパイダー = ON
スイッチの操作:#0306 【討伐クエ】判定 = ON
変数の操作:#0177 【討伐】目標スパイダー = 4
スイッチの操作:#0305 【討伐クエ】無登録 = OFF
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「それじゃあ、頑張ってくれたまえ。
ループの中断

いいえのとき

分岐終了

分岐終了

討伐報告のとき
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「え、君みたいな奴が?
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「おっと、ごめんよ。
文章 心の声が漏れてしまったよ。
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「それじゃあ、報告を聞こうか。
条件分岐:【討伐クエ】無登録がON
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「おや?
文章 何も登録してないじゃないか。
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「適当なこと言っちゃだめだよ、君?

それ以外のとき
条件分岐:【討伐クエ】ホーネットがON
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「現在のホーネット討伐数は\c[2]\v[172]\c[0]だね。
条件分岐:【討伐数】ホーネット ≥ 3
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「おめでとう。目標達成だ。
文章 正直、ここまで出来るとは思ってなかったよ。
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「これが、報酬だ。
文章 持っていきなさい。
アイテムの増減:ピータ + 1
文章:なし, 暗くする, 中
文章
文章          \c[4]ピータ\c[0]を手に入れた。
変数の操作:#0172 【討伐数】ホーネット = 0
スイッチの操作:#0301 【討伐クエ】ホーネット = OFF

分岐終了

分岐終了
条件分岐:【討伐クエ】スパイダーがON
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「現在のスパイダー討伐数は\c[2]\v[173]\c[0]だね。
条件分岐:【討伐数】スパイダー ≥ 4
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「おめでとう。目標達成だ。
文章 正直、ここまで出来るとは思ってなかったよ。
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「これが、報酬だ。
文章 持っていきなさい。
アイテムの増減:クォーレ + 1
文章:なし, 暗くする, 中
文章
文章         \c[4]クォーレ\c[0]を手に入れた。
変数の操作:#0173 【討伐数】スパイダー = 0
スイッチの操作:#0303 【討伐クエ】スパイダー = OFF

分岐終了

分岐終了
注釈:未達成がある場合の処理です。
条件分岐:【討伐クエ】ホーネットがON
変数の操作:#0175 【討伐】未達成 += 1

分岐終了
条件分岐:【討伐クエ】スパイダーがON
変数の操作:#0175 【討伐】未達成 += 1

分岐終了
条件分岐:【討伐】未達成 ≥ 1
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「それじゃあ、引き続き頑張ってくれたまえ。
変数の操作:#0175 【討伐】未達成 = 0

それ以外のとき
スイッチの操作:#0305 【討伐クエ】無登録 = ON

分岐終了
注釈:クエスト受注処理を終了します。
ループの中断

分岐終了

討伐をあきらめるのとき
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「あ、そう。
文章 ま、君みたいな奴にはどれも荷が重いからね。
文章 仕方ないよ。
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「それじゃあ、登録状況を確認するから、
文章 ちょっと待ちたまえ。
文章 今、君が討伐登録しているのは・・・
条件分岐:【討伐クエ】無登録がON
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「おや?
文章 何も登録してないじゃないか。
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「適当なこと言っちゃだめだよ、君?

それ以外のとき
条件分岐:【討伐クエ】ホーネットがON
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「ホーネットの討伐クエストを諦めるかい?
選択肢の表示:はい, いいえ (ウィンドウ, 右, #1, #2)
はいのとき
スイッチの操作:#0301 【討伐クエ】ホーネット = OFF
スイッチの操作:#0302 【討伐クエ】判定ホーネット = OFF
変数の操作:#0172 【討伐数】ホーネット = 0
変数の操作:#0174 【討伐】キャンセル数 += 1

いいえのとき

分岐終了

分岐終了
条件分岐:【討伐クエ】スパイダーがON
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「スパイダーの討伐クエストを諦めるかい?
選択肢の表示:はい, いいえ (ウィンドウ, 右, #1, #2)
はいのとき
スイッチの操作:#0303 【討伐クエ】スパイダー = OFF
スイッチの操作:#0304 【討伐クエ】判定スパイダー = OFF
変数の操作:#0173 【討伐数】スパイダー = 0
変数の操作:#0174 【討伐】キャンセル数 += 1

いいえのとき

分岐終了

分岐終了
条件分岐:【討伐】キャンセル数 > 0
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「オッケー。
文章 討伐登録を削除したよ。
変数の操作:#0174 【討伐】キャンセル数 = 0
注釈:受注中のクエストがないか判定します。
条件分岐:【討伐クエ】ホーネットがON
変数の操作:#0175 【討伐】未達成 += 1

分岐終了
条件分岐:【討伐クエ】スパイダーがON
変数の操作:#0175 【討伐】未達成 += 1

分岐終了
条件分岐:【討伐】未達成 ≥ 1
変数の操作:#0175 【討伐】未達成 = 0

それ以外のとき
スイッチの操作:#0305 【討伐クエ】無登録 = ON

分岐終了

それ以外のとき
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「君、もしかして冷やかしかい?
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「僕は君と違って、忙しいんだ。
文章 冷やかしならあっちに行っててくれないかい?
ループの中断

分岐終了

分岐終了

なんでもないのとき
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「なんだ、冷やかしかい?
文章 用がないなら、話しかけないでくれたまえ。
ループの中断

分岐終了

以上繰り返し



選択肢やら条件分岐やらがいっぱいで、ごちゃごちゃしてます(^^;

内容が濃厚なので、かいつまんで説明させていただきますね。


あと、最初のデモ画像では語られなかったやり取りが幾つか載っていますので、もし良かったら読んでみてください(笑)



まず、選択肢全体をループで囲っているのは、何かしらをキャンセルなどした後の処理のためです。

何度も話しかけるのは面倒なため、元の選択肢表示の画面に戻ってくるための処理になります。



次に、クエストを受注する選択肢を選んだ場合ですが、スイッチをたくさんONにする必要があります。

クエスト受注フラグのスイッチ
判定フラグのスイッチ
各クエストクリア判定フラグのスイッチ


この3つをONにします。これらのフラグは、先ほどの準備で使用されています。

また、討伐目標の変数を設定しておきます。
(残り○体と表示するための変数になります)

そして、何も登録されていないときのフラグ(【討伐クエ】無登録)をOFFにします。


このフラグの役割ですが。
仮に、このフラグを作らない場合を想定してみましょう。

何も受注していない状態を判定するためには、全ての受注クエストがあるかどうかを見なければなりません。
それら全てが否定された場合に、初めて”受注なし”となります。

例えば”受注なし”の場合のメッセージとして「何も登録されていません」を出したいと思ったとき、この方法ではかなり面倒くさい条件分岐を組むことになります。(具体的には、最終的にゲームが完成した後で、全ての受注可能クエストの条件がOFFであるときの条件分岐をひたすらつなげることになります。場合によっては100個以上になるかもしれません)

それは、あまりにも現実的な方法ではないため、このフラグが必要となります。

これがあれば、”受注なし”フラグがONの時、という条件分岐を1個組めば、それで完了です。



次に、討伐報告の時の選択肢ですが。

報告時は、まず”受注なし”フラグが立っていないかを見ます。(条件分岐:【討伐クエ】無登録がON)

これがONなら、受注クエストは無いため、他の処理をすべてすっ飛ばします。


各クエストクリア時の処理としては、適当な会話と報酬を入れて、討伐数=0にリセットし、討伐クエスト受注フラグを外します。

他のONにしていたスイッチ類は、コモンイベントの処理によりクエストクリア時にOFFになっているので、これだけでOKです。


そして、選択肢分岐の最後に未達成クエストがあるかどうかで「引き続き頑張ってくれ」という台詞を言わせたいために、未達成クエストがあるかどうかの判定処理を行っています。

条件分岐で、残っている受注フラグの数だけ変数:【討伐クエ】未達成を+1し、未達成が1以上なら「引き続き頑張って」という台詞が入ります。もし、この条件を満たせない(未達成=0の時、すなわち受注なし)の場合には、”受注なし”フラグ(【討伐クエ】無登録)をONにしておきます。



次に、討伐クエストの依頼をキャンセルする場合です。

実行中クエストを検索して、1つ1つキャンセルするか尋ねていきます。

このサンプルでは、キャンセルが1つも無い場合の分岐を作りたかったので、キャンセルフラグとして変数:【討伐クエ】キャンセル数を設定しておきました。何もキャンセルしなかった場合には嫌味を言われます(笑)


選択肢分岐の最後に、受注中のクエストが無いかを判定します。何もなくなってしまった場合には、”受注なし”フラグ(【討伐クエ】無登録)をONにしておきます。



最後の選択肢「なんでもない」は、単に、会話キャンセルの選択肢です。




以上が、討伐クエストの内容でした。

思った以上に、やっている処理が多いことに気が付くと思います。


ここまで面倒くさいと、プラグインにしてもらいたくなりますね(笑)






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





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

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

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

ゲーム制作日記<34> ALQMEST製作状況8

op.png



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



最近は、残業と子育てでほとんどゲーム制作が進みません(´;ω;`)
いつも亀速度ですが、さらに亀速度で何とかやっている状況です。

今年度中には出したいんですが、何とかなるじゃろか・・・



cr3.png



現在の進捗状況ですが、とりあえず、基本の武器と防具のステータスは決まったので、戦闘テストをしているところです。
初期からだいたい100前後のダメージが飛び出します。

高いダメージの応酬になりますので、回復アイテムはガンガン手に入るようにする予定です。
というか、回復アイテム以外もガンガン手に入ります。


だって、アルトは錬金術師ですもん。
アイテムを使って、調合しまくりますもん。

コレクション要素も作っていきたいんですが、結構シンドイです(笑)
アイテム、どのくらい用意すればいいんだろう……




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





↓クリック応援をお願いします↓

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

ゲーム制作日記<33> 火炎放射器トラップ

op.png



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



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



今回ご紹介するシステムは、『火炎放射器トラップ』です。


tc25-1.png


挙動は、この画像を見ただけで何となく分かるかと思います。
真ん中の魔法使いから、火の玉がぽぽぽっと飛び出していきます。


tc25-2.png


この火の玉に触れると、ダメージを受けます。
あぶられ続けると、その分、たくさんダメージを受けます。
早く逃げましょう。



今回は固定砲台を「魔法使い」としましたが、発射台のイベントはなんだってOKです。

それこそ、重火器のグラフィックを置いたりしたらそれっぽく見えるかもしれません。



それでは、今回のシステムを解説していきましょう。

まずは、必要なモノの確認から。


【必須】
固定砲台用イベント
火炎イベント × 必要な数だけ(この数が射程距離となります)
スイッチ × 火炎イベントの数
変数 × (5 + 火炎イベントの数×2)


【推奨】
・プレイヤー情報取得用のコモンイベント
・イベント位置情報取得用のコモンイベント



コモンイベント : プレイヤー情報取得用
tc25-7.png

<実行内容>
変数の操作:#0004 プレイヤーの位置X = プレイヤーのマップX
変数の操作:#0005 プレイヤーの位置Y = プレイヤーのマップY
変数の操作:#0002 プレイヤーの向き = プレイヤーの向き




コモンイベント : イベント位置情報取得用
tc25-8.png

<実行内容>
変数の操作:#0006 イベントの位置X = このイベントのマップX
変数の操作:#0007 イベントの位置Y = このイベントのマップY
変数の操作:#0003 イベントの向き = このイベントの向き





以前も紹介したかもしれませんが、この手の位置情報を取得するコモンイベントがあると、結構便利です。
結構、いろんなところで使えます。

今回は使用せずに作ってみましたが、これと同じ内容が出てきます。



それでは、今回のシステムに使うイベントの内容を見てみましょう。


イベント : 固定砲台用
tc25-3.png

<実行内容>
ループ
移動ルートの設定:このイベント (ウェイト)
移動ルートの設定:◇右に90度回転
変数の操作:#0006 イベントの位置X = このイベントのマップX
変数の操作:#0007 イベントの位置Y = このイベントのマップY
条件分岐:このイベントが下を向いている
イベントの位置設定:EV002, ({イベントの位置X},{イベントの位置Y}) (向き: 下)
イベントの位置設定:EV003, ({イベントの位置X},{イベントの位置Y}) (向き: 下)
イベントの位置設定:EV004, ({イベントの位置X},{イベントの位置Y}) (向き: 下)
変数の操作:#0007 イベントの位置Y += 1
指定位置の情報取得:地形タグ, 地形タグ, ({イベントの位置X},{イベントの位置Y})
条件分岐:地形タグ = 1
スイッチの操作:#0074 A = OFF
スイッチの操作:#0075 B = OFF
スイッチの操作:#0076 C = OFF
ラベルジャンプ:処理終了

それ以外のとき
移動ルートの設定:EV002 (飛ばす)
移動ルートの設定:◇一歩前進
スイッチの操作:#0074 A = ON

分岐終了
変数の操作:#0007 イベントの位置Y += 1
指定位置の情報取得:地形タグ, 地形タグ, ({イベントの位置X},{イベントの位置Y})
条件分岐:地形タグ = 1
スイッチの操作:#0075 B = OFF
スイッチの操作:#0076 C = OFF
ラベルジャンプ:処理終了

それ以外のとき
移動ルートの設定:EV003 (飛ばす)
移動ルートの設定:◇一歩前進
移動ルートの設定:◇一歩前進
スイッチの操作:#0075 B = ON

分岐終了
変数の操作:#0007 イベントの位置Y += 1
指定位置の情報取得:地形タグ, 地形タグ, ({イベントの位置X},{イベントの位置Y})
条件分岐:地形タグ = 1
スイッチの操作:#0076 C = OFF
ラベルジャンプ:処理終了

それ以外のとき
移動ルートの設定:EV004 (飛ばす)
移動ルートの設定:◇一歩前進
移動ルートの設定:◇一歩前進
移動ルートの設定:◇一歩前進
スイッチの操作:#0076 C = ON

分岐終了

分岐終了
条件分岐:このイベントが右を向いている
イベントの位置設定:EV002, ({イベントの位置X},{イベントの位置Y}) (向き: 右)
イベントの位置設定:EV003, ({イベントの位置X},{イベントの位置Y}) (向き: 右)
イベントの位置設定:EV004, ({イベントの位置X},{イベントの位置Y}) (向き: 右)
変数の操作:#0006 イベントの位置X += 1
指定位置の情報取得:地形タグ, 地形タグ, ({イベントの位置X},{イベントの位置Y})
条件分岐:地形タグ = 1
スイッチの操作:#0074 A = OFF
スイッチの操作:#0075 B = OFF
スイッチの操作:#0076 C = OFF
ラベルジャンプ:処理終了

それ以外のとき
移動ルートの設定:EV002 (飛ばす)
移動ルートの設定:◇一歩前進
スイッチの操作:#0074 A = ON

分岐終了
変数の操作:#0006 イベントの位置X += 1
指定位置の情報取得:地形タグ, 地形タグ, ({イベントの位置X},{イベントの位置Y})
条件分岐:地形タグ = 1
スイッチの操作:#0075 B = OFF
スイッチの操作:#0076 C = OFF
ラベルジャンプ:処理終了

それ以外のとき
移動ルートの設定:EV003 (飛ばす)
移動ルートの設定:◇一歩前進
移動ルートの設定:◇一歩前進
スイッチの操作:#0075 B = ON

分岐終了
変数の操作:#0006 イベントの位置X += 1
指定位置の情報取得:地形タグ, 地形タグ, ({イベントの位置X},{イベントの位置Y})
条件分岐:地形タグ = 1
スイッチの操作:#0076 C = OFF
ラベルジャンプ:処理終了

それ以外のとき
移動ルートの設定:EV004 (飛ばす)
移動ルートの設定:◇一歩前進
移動ルートの設定:◇一歩前進
移動ルートの設定:◇一歩前進
スイッチの操作:#0076 C = ON

分岐終了

分岐終了
条件分岐:このイベントが上を向いている
イベントの位置設定:EV002, ({イベントの位置X},{イベントの位置Y}) (向き: 上)
イベントの位置設定:EV003, ({イベントの位置X},{イベントの位置Y}) (向き: 上)
イベントの位置設定:EV004, ({イベントの位置X},{イベントの位置Y}) (向き: 上)
変数の操作:#0007 イベントの位置Y -= 1
指定位置の情報取得:地形タグ, 地形タグ, ({イベントの位置X},{イベントの位置Y})
条件分岐:地形タグ = 1
スイッチの操作:#0074 A = OFF
スイッチの操作:#0075 B = OFF
スイッチの操作:#0076 C = OFF
ラベルジャンプ:処理終了

それ以外のとき
移動ルートの設定:EV002 (飛ばす)
移動ルートの設定:◇一歩前進
スイッチの操作:#0074 A = ON

分岐終了
変数の操作:#0007 イベントの位置Y -= 1
指定位置の情報取得:地形タグ, 地形タグ, ({イベントの位置X},{イベントの位置Y})
条件分岐:地形タグ = 1
スイッチの操作:#0075 B = OFF
スイッチの操作:#0076 C = OFF
ラベルジャンプ:処理終了

それ以外のとき
移動ルートの設定:EV003 (飛ばす)
移動ルートの設定:◇一歩前進
移動ルートの設定:◇一歩前進
スイッチの操作:#0075 B = ON

分岐終了
変数の操作:#0007 イベントの位置Y -= 1
指定位置の情報取得:地形タグ, 地形タグ, ({イベントの位置X},{イベントの位置Y})
条件分岐:地形タグ = 1
スイッチの操作:#0076 C = OFF
ラベルジャンプ:処理終了

それ以外のとき
移動ルートの設定:EV004 (飛ばす)
移動ルートの設定:◇一歩前進
移動ルートの設定:◇一歩前進
移動ルートの設定:◇一歩前進
スイッチの操作:#0076 C = ON

分岐終了

分岐終了
条件分岐:このイベントが左を向いている
イベントの位置設定:EV002, ({イベントの位置X},{イベントの位置Y}) (向き: 左)
イベントの位置設定:EV003, ({イベントの位置X},{イベントの位置Y}) (向き: 左)
イベントの位置設定:EV004, ({イベントの位置X},{イベントの位置Y}) (向き: 左)
変数の操作:#0006 イベントの位置X -= 1
指定位置の情報取得:地形タグ, 地形タグ, ({イベントの位置X},{イベントの位置Y})
条件分岐:地形タグ = 1
スイッチの操作:#0074 A = OFF
スイッチの操作:#0075 B = OFF
スイッチの操作:#0076 C = OFF
ラベルジャンプ:処理終了

それ以外のとき
移動ルートの設定:EV002 (飛ばす)
移動ルートの設定:◇一歩前進
スイッチの操作:#0074 A = ON

分岐終了
変数の操作:#0006 イベントの位置X -= 1
指定位置の情報取得:地形タグ, 地形タグ, ({イベントの位置X},{イベントの位置Y})
条件分岐:地形タグ = 1
スイッチの操作:#0075 B = OFF
スイッチの操作:#0076 C = OFF
ラベルジャンプ:処理終了

それ以外のとき
移動ルートの設定:EV003 (飛ばす)
移動ルートの設定:◇一歩前進
移動ルートの設定:◇一歩前進
スイッチの操作:#0075 B = ON

分岐終了
変数の操作:#0006 イベントの位置X -= 1
指定位置の情報取得:地形タグ, 地形タグ, ({イベントの位置X},{イベントの位置Y})
条件分岐:地形タグ = 1
スイッチの操作:#0076 C = OFF
ラベルジャンプ:処理終了

それ以外のとき
移動ルートの設定:EV004 (飛ばす)
移動ルートの設定:◇一歩前進
移動ルートの設定:◇一歩前進
移動ルートの設定:◇一歩前進
スイッチの操作:#0076 C = ON

分岐終了

分岐終了
ラベル:処理終了
ウェイト:120フレーム

以上繰り返し



挙動としてはそれほど多くないのですが、条件分岐を多用するため、大分長い内容となっています。


大まかな内容としては、向きを120フレームごとに変更し、向いている方に火炎をぶっ放します

また、移動先の条件として火炎イベントの移動先が地形タグ「1」であるかを判定し、そうでなければ固定砲台から発射する、といった内容となっています。

地形タグ「1」は移動できないマップに設定しておくと、プレイヤーが移動不可の場所(壁など)には火炎を放たないようになります





以下、火炎イベントABCです。
今回は射程3マスなので、火炎イベントは3つ用意しました。

これら3つは、ほとんど同じ内容です。
格納する位置情報の関係で、使っている変数が違うくらいですね。


イベント : 火炎A
tc25-4.png

<実行内容>
変数の操作:#0004 プレイヤーの位置X = プレイヤーのマップX
変数の操作:#0005 プレイヤーの位置Y = プレイヤーのマップY
変数の操作:#0148 Aの位置X = このイベントのマップX
変数の操作:#0149 Aの位置Y = このイベントのマップY
条件分岐:Aの位置X = プレイヤーの位置X
条件分岐:Aの位置Y = プレイヤーの位置Y
注釈:ここに仕様を書き込みます。
注釈:▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
画面のフラッシュ:(255,51,51,170), 5フレーム
SEの演奏:Attack2 (90, 100, 0)
HPの増減:パーティ全体, - 5
ウェイト:5フレーム
注釈:▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

分岐終了

分岐終了



イベント : 火炎B
tc25-5.png

<実行内容>
変数の操作:#0004 プレイヤーの位置X = プレイヤーのマップX
変数の操作:#0005 プレイヤーの位置Y = プレイヤーのマップY
変数の操作:#0150 Bの位置X = このイベントのマップX
変数の操作:#0151 Bの位置Y = このイベントのマップY
条件分岐:Bの位置X = プレイヤーの位置X
条件分岐:Bの位置Y = プレイヤーの位置Y
注釈:ここに仕様を書き込みます。
注釈:▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
画面のフラッシュ:(255,51,51,170), 5フレーム
SEの演奏:Attack2 (90, 100, 0)
HPの増減:パーティ全体, - 5
ウェイト:5フレーム
注釈:▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

分岐終了

分岐終了




イベント : 火炎C
tc25-6.png

<実行内容>
変数の操作:#0004 プレイヤーの位置X = プレイヤーのマップX
変数の操作:#0005 プレイヤーの位置Y = プレイヤーのマップY
変数の操作:#0152 Cの位置X = このイベントのマップX
変数の操作:#0153 Cの位置Y = このイベントのマップY
条件分岐:Cの位置X = プレイヤーの位置X
条件分岐:Cの位置Y = プレイヤーの位置Y
注釈:ここに仕様を書き込みます。
注釈:▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
画面のフラッシュ:(255,51,51,170), 5フレーム
SEの演奏:Attack2 (90, 100, 0)
HPの増減:パーティ全体, - 5
ウェイト:5フレーム
注釈:▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

分岐終了

分岐終了



内容としては、火炎イベントとプレイヤーの位置を取得して、位置が同じであればダメージを与える、という記述です。




この手のトラップは、色々と応用が効きます。
触れると動きを止められるとか、ブロックがせり出してきて押し出されるとか……

仕様の部分を変えて、いろんなトラップを作ってみましょう。




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





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

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

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

≪連絡用掲示板≫

コメント掲載用の記事です。
ふりーむ!投稿のゲームなど、メイン記事以外に関するコメントなどは、こちらにお願いします。
プロフィール

猫民のんたん

Author:猫民のんたん

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

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


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

毎週曜日にブログ更新予定♪

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

この人とブロともになる

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