サンプル用コモンイベント

Last-modified: 2015-02-03 (火) 21:03:42 (1473d)
  • コモンイベントを自作するや改造するときなどに参考にするコード。
  • 要バックアップ。別途にWRPGを入れて使うのがいいか(?)。
  • ※こちらはテキストベースです。コモンファイルのものは自作コモンイベントに追加編集してください。

アニメーションのサンプル例

  • ピクチャ番号10000を使って5フレーム間隔でアニメーションさせるコモン。
  • ピクチャ番号や各Evセルフは必要に応じて変更。
入力は整数:4,文字列:1で
セルフ0,1が表示座標,2,3が画像の分割数,
5が画像ファイル名
■変数操作: このコモンEvセルフ4 = このコモンEvセルフ2 * このコモンEvセルフ3
■ピクチャ表示:10000 ファイル(このコモンEvセルフ5) X:このコモンEvセルフ0 Y:このコモンEvセルフ1 0(0)フレーム ※位置は中心,分割数は横このコモンEvセルフ2,縦このコモンEvセルフ3
■変数操作: このコモンEvセルフ10 = 1 + 0
■変数操作: このコモンEvセルフ11 = 0 + 0
■回数付きループ [ このコモンEvセルフ4 ]回
|■ピクチャ移動:10000 相対X:0 Y:0 0(このコモンEvセルフ11)フレーム ※パターンはこのコモンEvセルフ10,他は同値
|■変数操作: このコモンEvセルフ10 += 1 + 0
|■変数操作: このコモンEvセルフ11 += 5 + 0
|■
◇ループここまで◇
■ピクチャ消去:10000  0(このコモンEvセルフ11)フレーム
■

ロード時、最後にセーブしたデータに初期位置を合わせる改造例

  • コモンEV054 323行目に以下を追加(目印は「▼ セーブの場合」)
  • 各セーブデータのこの変数を比較し、最も数値の大きい位置にカーソルを合わせる。
|||■変数操作: このコモンEvセルフ51 = Sys77:現在の[年] * 10000
|||■変数操作: このコモンEvセルフ51 += Sys78:現在の[月] * 100
|||■変数操作: このコモンEvセルフ51 += Sys79:現在の[日] + 0
|||■変数操作: このコモンEvセルフ52 = Sys80:現在の[時] * 10000
|||■変数操作: このコモンEvセルフ52 += Sys81:現在の[分] * 100
|||■変数操作: このコモンEvセルフ52 += Sys82:現在の[秒] + 0

タイトル画面の前にロゴを表示してみる

  • 最初に読み出されるマップは0番なので0番のイベントから呼び出すなり書き込むなりする。
  • タイトルに戻るを選ぶと毎回ロゴが表示されて喧しいのでタイトル画面をマップ1番に指定している。
  • ピクチャ表示番号やウェイト数値は任意のものを指定する(サンプルは0番)。
Evセルフ5=ロゴファイルを指定
Evセルフ6=ブラックアウトなら黒塗り画像。ホワイトアウトなら白塗り画像を指定
■トランジションタイプ指定:[なんかのトランジション]100フレーム
■トランジション準備
■トランジション実行
■ピクチャ表示:0ファイル (このコモンEvセルフ5) X:0 Y:0 0(0)フレーム ※位置は中心
■ウェイト:100
■トランジション指定:[なんかのトランジション]100フレーム
■トランジション準備
■トランジション実行
■ピクチャ消去:0(0フレーム)
■ピクチャ表示:0ファイル (このコモンEvセルフ6) X:0 Y:0 0(0)フレーム ※位置は中心
■ウェイト:100
■ピクチャ消去:1(0フレーム)
■トランジションタイプ指定:[瞬間移動]50フレーム
■トランジション準備
■場所移動 マップ1番 位置適当
■トランジション実行
▼以降タイトル画面起動時のイベントをがちゃがちゃ挿入

キーを押したときに動するイベントと押し続けた場合の変数を求める

  • サンプルでは「決定キー」となっているが変更すれば特定キーでイベントを起こせる。
  • 押された分の変数を求めているので求めた変数を用いて色々動かせる。

押しただけの場合を取り扱う一例

  • 「入力待ち」ではないので押しっぱなしにしても動く
コモンEvセルフ0は決定キー(10)が押されているか否か
コモンEvセルフ1は現在イベントを実行中か否か
■ループ開始
|■キー入力:このコモンEvセルフ変数0 / 決定(10)
|■条件分岐(変数):【1】このコモンEvセルフ0がこのコモンEvセルフ1以外
|◇分岐: 【1】[このコモンEvセルフ0がこのコモンEvセルフ1以外]の場合↓
||■条件分岐(変数): 【1】このコモンEvセルフ0が10と同じ
||◇分岐: 【1】[このコモンEvセルフ0が10と同じ]の場合↓
|||■処理実行
||◇分岐終了◇
||■
|◇分岐終了◇
|■変数操作: このコモンEvセルフ1 = このコモンEvセルフ0 + 0
|■ウェイト:1 フレーム
|■
◇ループここまで◇

押し続けていた場合の変数を求めてみる一例

  • 通常変数V0を用いてどれだけ決定キーが押されているかを調べるサンプル。
V0とは決定キーを押し続けていた場合に変動する変数(初期値0/上限2)
こちらは1ずつ加算される。
■キー入力:このコモンEvセルフ変数0 / 決定(10)
■条件分岐(変数): 【1】このコモンEvセルフ0が0と同じ
◇分岐: 【1】 [ このコモンEvセルフ0が0と同じ ]の場合↓
|■変数操作: V0[GetKey_Z] = 0 + 0
|■
◇上記以外
|■変数操作: V0[GetKey_Z] += 1 + 0
|■変数操作: V0[GetKey_Z] 上限= 2 + 0
|■
◇分岐終了◇

並列実行ならばシンプルに考えてこちらを先に動かしてしまうといいかもしれない。

V0とは決定キーが押されたフレーム数の分だけ10になる変数(押されていないときは0)
単純にキーが押されているかいないかだけを取りたいなら、
そのイベント内で別に入力待ち無しのキー入力コマンドを使用すればよい。
■ループ開始
|■変数操作:V0=0
|■キー入力:V0/決定キー(入力待ち)
|■
◇ループここまで◇

時間計測のサンプル例

  • フレームではなくミリ秒単位の時間計測をしてウェイトをかけるためのコモンです。
  • ミリ秒単位とは言っても、1フレームの長さより短い単位では計測できません。
  • FPSに左右されずにほぼ正確なウェイトがかけれるので、音楽と画面表示との同期などに使用できるかと思います。
入力は整数:2
セルフ0:処理内容(選択肢手動設定で、0:基点設定、1:指定時間までウェイト)
セルフ1:待ち時間(ミリ秒)
■条件分岐(変数): 【1】このコモンEvセルフ0が0と同じ 【2】このコモンEvセルフ0が1と同じ
 ◇分岐: 【1】 [ このコモンEvセルフ0が0と同じ ]の場合↓
|▼ 時間計測の基点を設定する。とりあえずここは現在のプレイ時間を保存するだけ
|■変数操作: このコモンEvセルフ10 = Sys29:[読]プレイ時間(1秒単位) + 0 
|■変数操作: このコモンEvセルフ11 = Sys30:[読]プレイ時間(ミリ秒単位) + 0 
|■
 ◇分岐: 【2】 [ このコモンEvセルフ0が1と同じ ]の場合↓
|▼ 基点からの時間経過が待ち時間(ミリ秒)を超えるまでウェイトする
|■ループ開始
||■変数操作: このコモンEvセルフ12 = Sys29:[読]プレイ時間(1秒単位) - このコモンEvセルフ10 
||■変数操作: このコモンEvセルフ12 *= 1000 + 0 
||■変数操作: このコモンEvセルフ12 += Sys30:[読]プレイ時間(ミリ秒単位) - このコモンEvセルフ11 
||■条件分岐(変数): 【1】このコモンEvセルフ12がこのコモンEvセルフ1以上
|| ◇分岐: 【1】 [ このコモンEvセルフ12がこのコモンEvセルフ1以上 ]の場合↓
|||■ループ中断
|||■
||◇分岐終了◇◇
||■ウェイト:1 フレーム
||■
|◇ループここまで◇◇
|■
◇分岐終了◇◇
■

データベースコピーの例

  • 汎用性を付けたデータベースコピーのコモン。
  • コピー元udbタイプに100〜、300〜を指定することで、可変DB、システムDBからのコピーも可能。
入力は整数:4
セルフ0:コピー元udbタイプ
セルフ1:コピー元データNo.
セルフ2:コピー先cdbタイプ
セルフ3:コピー先データNo.
■DB読込(ユーザ): このコモンEvセルフ10 = ユーザDB[タイプこのコモンEvセルフ0の内容数]
■変数操作: このコモンEvセルフ11 = 1100000000 + 0 
■変数操作: このコモンEvセルフ11 += このコモンEvセルフ2 * 1000000 
■変数操作: このコモンEvセルフ11 += このコモンEvセルフ3 * 100 
■変数操作: このコモンEvセルフ12 = 0 + 0 
■回数付きループ [ このコモンEvセルフ10 ]回
|■DB読込(ユーザ): V[このコモンEvセルフ11] = ユーザDB[このコモンEvセルフ0:このコモンEvセルフ1:このコモンEvセルフ12]
|■変数操作: このコモンEvセルフ11〜このコモンEvセルフ12 += 1 + 0 
|■
◇ループここまで◇◇
■

データベースのデータ入れ替えの例

  • データ1とデータ2を入れ替えます。
入力は整数:3
セルフ0:可変DBタイプ番号
セルフ1:データ1
セルフ2:データ2
■DB読込(可変): このコモンEvセルフ10 = 可変DB[タイプこのコモンEvセルフ0の内容数]
■変数操作: このコモンEvセルフ11 = 1100000000 + 0 
■変数操作: このコモンEvセルフ11 += このコモンEvセルフ0 * 1000000 
■変数操作: このコモンEvセルフ11 += このコモンEvセルフ1 * 100 
■変数操作: このコモンEvセルフ12 = 0 + 0 
■回数付きループ [ このコモンEvセルフ10 ]回
|■変数操作: このコモンEvセルフ13 = V[このコモンEvセルフ11] + 0 
|■文字列操作:このコモンEvセルフ5 = "\cdb[\cself[0]:\cself[1]:\cself[12]]"
|■変数操作: V[このコモンEvセルフ11] = 0 + 0 
|■文字列操作:このコモンEvセルフ6 = "\cdb[\cself[0]:\cself[1]:\cself[12]]"
|■DB読込(可変): V[このコモンEvセルフ11] = 可変DB[このコモンEvセルフ0:このコモンEvセルフ2:このコモンEvセルフ12]
|■条件分岐(文字): 【1】このコモンEvセルフ変数6 が"" と同じ 【2】このコモンEvセルフ変数6 が"0" と同じ
| ◇分岐: 【1】 [ このコモンEvセルフ変数6 が"" と同じ ]の場合↓
||■可変DB書込:DB[このコモンEvセルフ0:このコモンEvセルフ2:このコモンEvセルフ12]  =  このコモンEvセルフ5
||■
| ◇分岐: 【2】 [ このコモンEvセルフ変数6 が"0" と同じ ]の場合↓
||■可変DB書込:DB[このコモンEvセルフ0:このコモンEvセルフ2:このコモンEvセルフ12]  =  このコモンEvセルフ13
||■
|◇分岐終了◇◇
|■変数操作: このコモンEvセルフ11〜このコモンEvセルフ12 += 1 + 0 
|■
◇ループここまで◇◇
■
  • 補足説明
    一見ではおそらく理解できないだろうと思います。この処理は一体何なんだろうと思うようなものがいくつかあるでしょう。
    データの型が文字列か整数かによって処理方法が変わるためにこのような方法を取っています。
    まずは6、7行目。この時点では、データの型は不明です。そこで、とりあえずバックアップを取っておきます。
    この代入方法では、型が違っていてもエラーは発生しません。ただし、文字列をセルフ13に代入しても0になるだけです。
    8行目では、バックアップを取ったデータに0を代入しています。
    この方法で文字列変数に数値を代入すると普通はエラーが発生しますが、なぜか0を代入したときに限ってエラーが発生しません。
    その代わり、文字列の内容は空になります。
    つまり、データ型が文字列の場合は内容が""に、整数の場合は0になるわけです。
    後はこれを文字列として比較することで、データ型の判別ができる、というわけです。

開平法によるルート計算

  • ほんの十数行でできるルート近似値の計算。
  • 入力値(開く数)=コモンEvセルフ0、結果=このコモンEvセルフ20
    ■変数操作: このコモンEvセルフ10 = -1 + 0 
    ■変数操作: このコモンEvセルフ20 = 0 + 0 
    ■ループ開始
    |■条件分岐(変数): 【1】このコモンEvセルフ0が0以下
    | ◇分岐: 【1】 [ このコモンEvセルフ0が0以下 ]の場合↓
    ||■ループ中断
    ||■
    |◇分岐終了◇◇
    |■変数操作: このコモンEvセルフ10 += 2 + 0 
    |■変数操作: このコモンEvセルフ0 -= このコモンEvセルフ10 + 0 
    |■変数操作: このコモンEvセルフ20 += 1 + 0 
    |■
    ◇ループここまで◇◇
    ■
  • 精度を高めたい場合は入力値としてこのコモンEvセルフ1を小数点以下桁数とし、一行目で
    ■変数操作: このコモンEvセルフ11 = 1 + 0 
    ■ループ開始
    |■条件分岐(変数): 【1】このコモンEvセルフ1が0以下
    | ◇分岐: 【1】 [ このコモンEvセルフ1が0以下 ]の場合↓
    ||■ループ中断
    ||■
    |◇分岐終了◇◇
    |■変数操作: このコモンEvセルフ11 *= 100 + 0 
    |■変数操作: このコモンEvセルフ1 -= 1 + 0 
    |■
    ◇ループここまで◇◇
    ■このコモンEvセルフ0 *= このコモンEvセルフ11 + 0 
     とでもしてやれば良い。
     ただし、あまり小数点以下桁数を増やすと開平中に1フレーム当たりの処理が50000を越えてしまうので、1000周に一回程度のウェイトを挟んでやると良いかもしれない。

感情アイコン表示の例

  • 感情アイコンをキャラの上に表示します。
  • 「主人公」の部分を変更すれば、仲間やイベントの上にもアイコンを表示できます。
  • 画像サイズを16×16で想定しています、 サイズやアイコンに合わせてピクチャ表示座標を微調整してください。
  • 分かりやすく簡単に変数設定しているので、この変数設定では「入力」に対応していません。
    対応させたい場合は説明書の「コモンイベントの設定」を参考に変数設定を変更してください。

アニメ無し版

■変数操作+: このコモンEvのセルフ0 = 主人公 の 画面昇舵
■変数操作+: このコモンEVのセルフ1 = 主人公 の 画面Y座標
■変数操作: このコモンEvのセルフ0 -= 3 + 0
■変数操作: このコモンEvのセルフ1 -= 32 + 0
■ピクチャ表示:1(ピクチャ番号)ファイル「任意の画像を読み込んでください」:1600000(このコモンEVのセルフ0)
Y:1600001(このコモンEvのセルフ1) 0(0)フレーム ※位置を左上に設定してください。
■ウェイト: 60 フレーム
■ピクチャ消去:1(消去するピクチャ番号)0(0)フレーム
■
  • 1・2行目の「変数操作+」で主人公の現在位置(画面昇舵犬伐萍味拑舵検砲鬚修譴召譴離札襯嬖竸瑤紡綟します。
  • そのままだと、感情アイコンがキャラと重なってしまうので、
    3・4行目の「変数操作」で適切な位置修正を行います。
    アイコンの形やサイズが合わずピクチャ表示座標を変更したい場合は、 引く数値を適切な数値に変更してください。
    画像が少し大きい程度でしたら、ピクチャ表示の時 拡大率を減らしてみてください。
  • 「ウェイト」は「ピクチャ消去」を実行するまでの待機時間です。
    長くしたければ数値を増やし、短くしたければ減らしてください。
  • 最後のピクチャ消去でピクチャを消去します。
    これを入れないと、いつまでもピクチャが表示され続けます。

アニメ有り版

  • 分割数が横2縦1の場合のコードです。
    分割数に応じて、「ループ回数」、「条件分岐」、「ウェイト」を変更してください。
    ■変数操作+: このコモンEvのセルフ0 = 主人公 の 画面昇舵
    ■変数操作+: このコモンEVのセルフ1 = 主人公 の 画面Y座標
    ■変数操作: このコモンEvのセルフ0 -= 3 + 0
    ■変数操作: このコモンEvのセルフ1 -= 32 + 0
    ■ピクチャ表示:1(ピクチャ番号)ファイル「任意の画像を読み込んでください」:1600000(このコモンEVのセルフ0)
    Y:1600001(このコモンEvのセルフ1) 0(0)フレーム ※位置を左上に設定してください。
    ■変数操作: このコモンEvのセルフ2 = 1 + 0
    ■回数つきループ[6]回
    |■条件分岐(変数)【1】このコモンEvのセルフ2が3と同じ
    | ◇分岐:【1】[このコモンEvのセルフ2が3と同じ]の場合↓
    ||■変数操作: このコモンEvのセルフ2 = 1 + 0
    ||■
    |◇分岐終了◇◇
    |■ピクチャ移動:1(移動するピクチャ番号):1600000(このコモンEvのセルフ0)Y:1600001(このコモンEvのセルフ1) 0(0)フレーム 
    (パターンを1600002(このコモンEvのセルフ2)にする)
    |■変数操作: このコモンEvのセルフ2 += 1 + 0
    |■ウェイト:20 フレーム
    |■
    ◇ループここまで◇◇
    ■ピクチャ消去:1(消去するピクチャ番号)0(0)フレーム
    ■
  • 5行目の「ピクチャ表示」まで「アニメ無し版」と同じです。
  • 「回数つきループ」でアイコンを表示する時間を調節しています。
    時間を長くしたければループ回数を増やし、短くしたければ減らしてください。
  • 「条件分岐(変数)」で、表示するピクチャパターン数の上限を制限しています。
    必ず分割数の一つ上の数字を設定してください。
  • 15行目の「変数操作」で、「このコモンEvのセルフ2」に1を加算することによって、
    次に表示するピクチャパターンを2.3.4...と変えています。
  • 「ウェイト」は、次に表示されるピクチャパターンへ変わるまでの待機時間(正確には、ループ開始地点に戻るまでの待機時間)です。
    ピクチャパターンが変わる時間を長くしたければ数値を増やし、短くしたければ減らしてください。

このページに関するQ&A

このページに関する疑問等ございましたらこちらへどうぞ。 回答は期待しないでください。

  • イベント中に感情アイコンを表示するやり方が分かりません… -- パスタ? 2015-02-03 (火) 11:12:57
  • イベント中に感情アイコンを表示するやり方が分かりません… -- パスタ? 2015-02-03 (火) 21:03:42