宝箱イベントを変数で



コンセプト 宝箱のスイッチ作るの面倒なので。
完成すると システムさえ作れば1マップ2個の変数で管理可能




------------------------------------------------------------
■■コモンイベント[0037:シ:マップ別宝取得]
■■イベント開始条件
◇呼び出されたときのみ
------------------------------------------------------------
◆条件分岐:スイッチ[0064:宝処理中]がOFF [条件に当てはまらない場合の処理内容も設定する:×]
 ◆条件分岐:変数[0006:現在マップ:ID]が1と同値 [条件に当てはまらない場合の処理内容も設定する:×]
  ◆変数の操作:[0909:宝:2進]代入, 変数[0911:テストマップ]の値
  ◆
 :分岐終了
 ◆条件分岐:変数[0006:現在マップ:ID]が6と同値 [条件に当てはまらない場合の処理内容も設定する:×]
  ◆変数の操作:[0909:宝:2進]代入, 変数[0912:マリン部屋宝]の値
  ◆
 :分岐終了
 ◆変数の操作:[0902:宝:1〜0908:宝:1000000]代入, 変数[0909:宝:2進]の値
 ◆変数の操作:[0908:宝:1000000]除算, 1000000
 ◆変数の操作:[0907:宝:100000]除算, 100000
 ◆変数の操作:[0906:宝:10000]除算, 10000
 ◆変数の操作:[0905:宝:1000]除算, 1000
 ◆変数の操作:[0904:宝:100]除算, 100
 ◆変数の操作:[0903:宝:10]除算, 10
 ◆変数の操作:[0902:宝:1〜0908:宝:1000000]剰余, 10
 ◆
:分岐終了
◆ウェイト:0.1秒




------------------------------------------------------------

■■マップ[0001:MAP0001] マップイベント[0012:EV0012] 01ページ目
■■イベント出現条件
◇(なし)
■■グラフィック
◇オブジェクト1(位置:7 向き:下 パターン:MIDDLE 半透明:×)
■■移動タイプ
◇移動しない
◇移動頻度:3
■■イベント開始条件
◇決定キーが押されたとき
■■プライオリティタイプ
◇通常キャラと重ならない
◇別のイベントと重ならない:×
■■アニメーションタイプ
◇向き固定/足踏みなし
■■移動速度
◇3: 1/2倍速

■■マップ[0001:MAP0001] マップイベント[0012:EV0012] 02ページ目
■■イベント出現条件
◇変数[0902:宝:1]の値が[1]と同値
■■グラフィック
◇オブジェクト1(位置:7 向き:左 パターン:MIDDLE 半透明:×)
■■移動タイプ
◇移動しない
◇移動頻度:3
■■イベント開始条件
◇決定キーが押されたとき
■■プライオリティタイプ
◇通常キャラと重ならない
◇別のイベントと重ならない:×
■■アニメーションタイプ
◇向き固定/足踏みなし
■■移動速度
◇3: 1/2倍速



------------------------------------------------------------
◆スイッチの操作:[0064:宝処理中]をONにする
◆キャラクターの動作指定:このイベント [移動頻度:6, 動作を繰り返す:×, 移動できない場合は無視:×], 効果音の演奏[C@], 右を向く, 上を向く, 左を向く
◆指定動作の全実行
◆変数の操作:[0902:宝:1]代入, 1
◆イベントの呼び出し:コモンイベント[0038:シ:宝処理]
◆文章:「」を手に入れた。



------------------------------------------------------------
■■コモンイベント[0038:シ:宝処理]
■■イベント開始条件
◇呼び出されたときのみ
------------------------------------------------------------
◆変数の操作:[0910:宝から取得2進]加算, 変数[0902:宝:1]の値
◆変数の操作:[0910:宝から取得2進]加算, 変数[0903:宝:10]の値
◆変数の操作:[0910:宝から取得2進]加算, 変数[0904:宝:100]の値
◆変数の操作:[0910:宝から取得2進]加算, 変数[0905:宝:1000]の値
◆変数の操作:[0910:宝から取得2進]加算, 変数[0906:宝:10000]の値
◆変数の操作:[0910:宝から取得2進]加算, 変数[0907:宝:100000]の値
◆変数の操作:[0910:宝から取得2進]加算, 変数[0908:宝:1000000]の値
◆変数の操作:[0909:宝:2進]代入, 変数[0910:宝から取得2進]の値
◆イベントの呼び出し:コモンイベント[0039:シ:宝取得済み代入]
◆変数の操作:[0910:宝から取得2進]代入, 0
◆スイッチの操作:[0064:宝処理中]をOFFにする





------------------------------------------------------------
■■コモンイベント[0039:シ:宝取得済み代入]
■■イベント開始条件
◇呼び出されたときのみ
------------------------------------------------------------
◆条件分岐:変数[0006:現在マップ:ID]が1と同値 [条件に当てはまらない場合の処理内容も設定する:×]
 ◆変数の操作:[0911:テストマップ]代入, 変数[0909:宝:2進]の値
 ◆
:分岐終了
◆条件分岐:変数[0006:現在マップ:ID]が6と同値 [条件に当てはまらない場合の処理内容も設定する:×]
 ◆変数の操作:[0912:マリン部屋宝]代入, 変数[0909:宝:2進]の値
 ◆
:分岐終了
◆ウェイト:0.1秒




必要変数・スイッチ
・宝処理中スイッチ(宝取得中の誤動作防止)
・宝:2進(現在マップの宝取得状況)
・宝:1〜宝:1000000(宝:2進の分散格納用)
・マリン部屋宝(各マップの取得状況保存用)
・テストマップ(各マップの取得状況保存用)
・宝から取得2進(計算用)


まずは最低限やっておいてもらいたいイベント。

・現在マップID監視

これは「テク研」で紹介されていますので省略します。
これからの説明は上記監視イベントの
「現在マップIDが移動前マップIDと同値の条件分岐の「それ以外」」
の時の処理です。

では説明。

コモンイベント「マップ別宝取得」について

これは現在マップID別の条件分岐で変数「宝:2進」に「各マップの取得状況保存用」の値を代入する処理です。これは宝のあるマップの数だけ条件分岐します。
それを「宝:1〜宝:1000000」までの変数に分散格納する処理です。これも「テク研」様でやってます。


次は実際の宝箱のイベント

「宝処理中」スイッチをON。
次の「宝:1」変数に「1」を代入すること。この値は「位の値」つまり100の位なら「100」を代入する。
それと次から紹介するコモンイベントを呼び出す。
他は宝箱の動作やら文章やらの処理です。
2ページ目は変数「宝:1」で値は「1」にします。このとき注意しなければならないのは「10の位の変数でも「1」を指定する」ということです。どの位でも値は必ず1です。
変数が2003の場合は「100万の位まで」なので7個の宝を配置できます。
複数置く場合は「宝:1」を「宝:10」にして1ページ目の変数代入の値を「位と同じ数」にすればOKです。


次からのコモンイベントはマップの宝箱から呼び出されるコモンイベントです。

コモンイベント「宝処理」

「宝から取得2進」に「分散格納した変数」を全部「加算」していきます。
で、それを「宝:2進」に代入。次に紹介するコモンイベントを呼び出す
計算用の変数を「0」にしてスイッチをOFFにして終了


コモンイベント「宝取得済み代入」
これは先に実行した結果「宝:2進」をマップID別に格納してある変数に代入する処理です。
これを行わないと宝は無限に取得されるので注意。


なんちゃってMM体験版にこのテクニックを入れてありますので体験してください。







テンプレートのpondt