【MZ】畑システム-実行処理作り編1-
執筆者:神凪洸
さぁ今回から、実行処理を作っていくっす!
この実行処理作り編では、サンプルプロジェクト内で書ききれなかった解説を
載せてるのでサンプルプロジェクトを弄りながら読むのを薦めるっす!
◆ルール作りの話
まず、この畑システムは殆どのデータを変数に代入してその中身を参照し
あらゆる条件分岐をして判定を行います。そのため、ある程度ルールを作ります。
基本の変数は数値が入りますが、0が初期値ですね。
0はゼロ!なんもない状態ということで、畑で何も育ててないとか水はやってないとか収穫できるまで育ってないとか……とにかく、なんもなってない状態は全て0にしてるっす。
そして、何かしらの状態になってる時は1以上の数値が入る!
以下詳細。
・【配列】畑状況
種を植えてからどの程度の日数分成長してるか?
今回のシステムでは一日2ずつ増加。種を撒いた初日は0日目と数える。
例:かぶの種 水を毎日あげる前提で収穫できるまでの日数は3日。
0=種無し 2=種を植えた初日 4=芽が出る1日目 6=2日目 8=収穫可の3日目
(´・ω・`){なんで2ずつ増加?
(;・∀・){元は偶数奇数で水を与えてたら奇数、そうじゃなかったら偶数みたいな感じにする予定だったけど、システム構築段階で不要になったっす。ただの名残っすね。
(´・ω・`){つまり、1ずつの増加にしてもいいって事?
(;・∀・){うん、その方が分かりやすいと思う。なんなら種無しを-1にして種撒いた初日を0にすればもっと分かりやすいっすね……
※サンプルは元の自作品用プロジェクトからコピペで作ってるので、改修するなら自力でガンバレ
・【配列】作物種のID
育てる作物の種のアイテムIDを入れる変数。
収穫できる作物アイテムのIDではなく、植えた種のIDである事に注意。
・【配列】畑水やり
各畝が水やり済か否かを入れる変数。0=水なし 1=水あり
・【配列】畑肥料
各畝に肥料があるか否かを入れる変数。0=肥料なし 1~=撒いた肥料アイテムのID
アイテムIDが入る事に注意。
・【配列】作物状況
各畝の作物の状態を入れる変数。
0=変化なし 1=収穫できる状態 10=収穫は出来るが枯れる寸前 11=枯れてる
(´・ω・`){1~10の間が空いてるのはどうして?
(;・∀・){例えば、収穫できるようになってから数日放置すると別の作物に派生する作物とか連作できる作物の収穫回数に限度を設けるとか。
この間があることで作りやすく(判定しやすく)する為の未来への投資になるっす。
・【判定】状況汎用A
各配列のどこを指定するか判定する為に配列番号を代入する用の変数。
配列の事はもう理解してるっすか?
[12,5,0,9,20,3];とあったら、「12」の部分は配列0番目!
畝を調べた時に代入する重要な変数っす!ここを間違えるとおかしな事になるぞ!
・【判定】状況汎用B~D
各配列の指定された場所のデータを一時的に取り出しておくようの変数。
なんでも取り出せるように「汎用」という名前。
・【判定】水残量
じょうろの残量を入れる変数。
・【代入】系
代入系の変数は、「状況汎用B~D」と同じで色んなデータを一時的に
保存しておく為の変数。それぞれの変数に何が入るかはサンプルプロジェクトの名前通りなので割愛。
・作物が収穫できるまでに必要な日数と収穫可能になってから枯れるまでの日数
準備編でも決めておけ!と指示した話をここでも改めて。
種を植えた日をゼロ日目と数えるを基本に各作物の育つまでに必要な日数を決めるっす。
例:
かぶなら3日!にんじんなら10日!金のかぶなら30日!!
収穫できた日から3日経つと枯れる!
ポイントヽ(`Д´)ノ
あまり長期間かかる作物はオススメしない!
30日でも多いっす……。
理由としては、期間日数分のコモンイベントを作成するシステム仕様なのであんまり長いと設定が大変っす。そんな作業も何のその!苦行を乗り越えてみせるぜ!って気力のある方はご自由にいくらでも。ガンバレヨ。
ポイントヽ(`Д´)ノ
枯れるまでの日数は全作物共通!!
収穫可能になってから枯れるまでの日数は全作物で共通にしてくださいっす。
作物毎に変える場合を考慮してないので、コモンイベント作成でめんどくさい事になると思うっす。
さて、ルールの話は以上。次から実行処理となるコモンイベント作成っす!
◆種植え/肥料/水やり/収穫判定
【サンプルプロジェクト コモンイベントID2】
このイベントは畝を調べた時にどんな畑作業を行うかの選択肢のイベントっす。
選択肢拡張プラグインは入れたっすか?これはここで活躍っす!
■最初に必要なデータを各変数に代入しておく
畑の作業は、種植え・水まき・肥料まき・収穫の4種類。
それぞれの作業が終わってたら選択出来ないようにする為には
作物を育てているか?水がまかれているか?肥料がまかれているか?収穫できる状態か?
の情報が必要っすね。つまり配列のデータを各汎用変数に代入っす!
■選択肢の表示
必要なデータを取り出したら、選択肢を表示するっす。
プラグインの設定に沿って、各選択肢に条件を記入しましょう。
■選択肢「種を植える」
なんの種を植えるか?ここで便利なのが「アイテム選択の処理」
ここでまたも便利なプラグイン「アイテム選択処理拡張」!
プラグインの設定に沿うことで種アイテムだけの中から選べるようになるぞ!
種を選択したらアイテムIDが指定変数(【代入】種ID)に入るっす。
ここで条件分岐。0以外だったら何かしらの種を選択した事になるので
種を選んだ場合の処理を作りましょう。
種IDを所定の配列に入れてあげましょう。そしてちゃんと種も一個減らしておくっす。
はい! これで、変数上は畝に種を植えたことになるっす!
画像の変更は別のコモンイベントにまとめておいて、ここでは呼び出すだけっすよ。
■選択肢「水をあげる」
条件分岐で、【判定】水残量が必要な量残っていたら? と設定してあげましょう。
水やり処理の実行は、ここでも所定の配列に代入処理っす。
そして、もう一つ条件分岐を追加。
作物の成長状況に応じて、画像の指定が行われるっす。
水がなかった時の処理も作ってあげてね。
■選択肢「肥料をあたえる」
アイテム選択の処理で肥料アイテムのIDを取得し、所定の配列に代入。
もちろん、肥料アイテムを一個減らす処理も忘れずに!
■選択肢「収穫」
選択肢作成の段階で、収穫出来る状態になったらこの選択肢が現れるようになってるので
ここでは作物の成長度に応じて、呼び出す収穫コモンを決めるっす。
◆画像変更用に必要なデータを代入するコモンイベントの作成
【サンプルプロジェクト コモンイベントID1、ID3~14】
ここからは地味で地獄な作業っす。根気だファイトだ。
■画像データ代入
水まきや種IDのデータを取り出しておこう。
各画像データ代入系コモンイベントでそれぞれの代入で何を入れてるかはサンプルプロジェクトの通りなので割愛。
ここではキャラクター画像(通称:キャラチップ)の仕様について説明するぞ。
■データ代入処理の後は実際に画像を変更する処理を呼び出す
【サンプルプロジェクト コモンイベントID4】
サンプルプロジェクトでは、コモンイベントを呼び出してるっす。イベント実行内容の可読性を少しでもあげる為にわざと処理を分けてるだけなので、気にしない人はそのまま入れちゃってもおk。
id = $gameVariables.value(16);//畑イベントID
gazoa = $gameVariables.value(12);//画像ファイル名
gazob = $gameVariables.value(13);//画像インデックス
muki = $gameVariables.value(14);//歩行グラ画像の向き
character = this.character(id);//畑イベントID
//↑わざわざ、idとかgazoaに代入してるのは$gameVariables.setValue~ってのが長くて分かりづらいから
//↓実際のキャラクター画像変更処理スクリプト。こう書くんだってだけの認識でヨロシ
character.forceMoveRoute({
"list":[{"code":muki},
{"code":41,"parameters":[gazoa,gazob]},
{"code":0}], //必須処理
});
■最長日数分の画像データ代入コモンイベントを作る
作物の中で最も長い期間を要する日数+枯れるまでの日数分のコモンイベントを
コピペでどんどん増やしましょう。
最終日は、あらゆる作物は全て枯れてる事になってるよ。
◆コモンイベント「画像変更コモンへ」
このイベントは新しい一日が始まった時や畑のあるMAPに移動してきた時に
各作物の成長日数によってどの画像データ代入コモンイベントを呼び出すかを決定するイベントっす。
※MAPの画像更新イベントで、直接コモンイベントを呼び出すスクリプトで処理も可能だが、長ったらしい上に上記のように日数分のコモンが存在するので、わざわざこういう処理にしている。
◆手動水やり時のコモン判別
【サンプルプロジェクト コモンイベントID25】
畝を調べて作業をした際に呼び出されるイベント。中身はMAPに作った更新イベントのスクリプトと同じ。
更新イベントでは全ての畝を対象にするが、こちらは一つの畝を対象にするので
別のコモンイベントとして作っている。
◆畑成長更新代入
【サンプルプロジェクト コモンイベントID31】
実際のゲームだと、常に畑MAPで翌日を迎えるわけじゃないっすよね。
家の中だったり、ダンジョンだったり……。ベッドで寝て起きたり。
プレイの仕方によってはその日一回も畑MAPに行かない場合もあるっす。
これは、畑MAPに行かなくても、畝の状況が
ちゃんと更新できるようにする為のイベントっす。
呼び出されるタイミングは、作物が成長するタイミング!
その時に指定のスイッチをONにする事で自動実行させるっすよ。
次回はついに収穫処理を作っていくぞ!
0コメント