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