ツクール豆知識

Last-modified: 2022-07-28 (木) 22:00:01

このページは、RPGツクール2000に関する基礎的・発展的な情報をまとめています。
ゆめ2っき固有の情報は主にハウツーへまとめています。

お役立ちな情報があれば気軽に追加していってください。(分類に悩んだら「その他」で良いと思います)

 
 目次
 
 

テストプレイ

デバッグ用の特殊な機能

ツクールの▲マークで起動すると"テストプレイモード"になる
このモードはデバッグに役立つ様々な機能を搭載しているのだ!

キー効果
F9いつでもスイッチのON/OFFや変数の数値を変える事ができる
F10実行中のイベントをすべて中断させる 無限ループからの脱出用
F12強制的にタイトル画面に戻る 要するにリセットボタン
Ctrl押している間、地形を無視して移動できる

おおっと、F12キーはテストプレイモードじゃなくても使う事ができるぞ!

 

ランタイムパッケージ無しで起動する

実行ファイルと一緒に入っている"RPG_RT.ini"
これの末尾に

FullPackageFlag=1

…と書けば、RTPが無くても起動できるぞ!
ただし、一部のマップで正常に動かないから注意が必要だ!

 

マップ編集

通行設定の☆と×を両立させる

主人公は通れないけど、主人公よりも上に出したい!

そんな時は、☆判定として設定したあと、
「通行・4方向」で4方向すべてを通行不可にすると
☆判定と×判定を両立させることができるぞ。

 

遠景を見ながらマップ編集

マップの大きさと遠景の大きさがピッタリ同じで、
遠景が動かないように設定されていればエディター上に表示されるぞ!
"正体不明"のマップが分かりやすい例だ!

ちょっと詳しく書くと、
マップのサイズを16倍にした時の数値と、
遠景の画像サイズがぴったり同じであればエディター上に表示されるのだ。
(遠景をループさせる設定にしていると表示されないから気をつけよう!)

 

マップのシフトで、ループ部分の見栄えチェック

左下のマップ名を右クリックして「シフト(S)...」を選択すると、
マップ全体をまるごとズラすことができるぞ。

ループする設定のマップで、きちんとマップの端と端が繋がるか確認したい時に便利だ。

 

シフトキーでチップの形を変えない

マップ編集中、シフトキーを押しながら配置するか
シフキーを押しながら右クリックを押すと
自動地形生成システムというのを無視する事ができる。
現実部屋の壁などで試してみると分かりやすいぞ!

 

公式の画像付き解説ページ
https://tkool.jp/products/rpgvxace/lecture/002_008
(画像はVX Aceだが、ツクール2000でもほぼ同じようにできるぞ)

 

ショートカットキーを使いこなして製作スピードアップ?

一部の操作はキーボードでも可能なのだ!
慣れるとマウスだけで操作するより素早く製作できるかもしれないぞ!

イベント内容編集時
スペースキー選択しているイベントコマンドの編集
エンターキー選択している位置にイベントコマンドを挿入
Ctrl+Aそのページにあるイベントコマンドをすべて選択
Ctrl+X選択しているイベントコマンドを切り取り
Ctrl+C選択しているイベントコマンドをコピー
Ctrl+V切り取り・コピーしたイベントコマンドを貼り付け
Delete選択しているイベントコマンドすべてを削除
 
マップのイベント編集モード時
エンターキー選択している位置にイベント追加・編集
Ctrl+X選択しているイベントを切り取り
Ctrl+C選択しているイベントをコピー
Ctrl+V切り取り・コピーしたイベントを貼り付け
Delete選択しているイベントを削除
 
マップ編集時
Ctrl+Zマップの編集内容を1つ前に戻す
Ctrl+Sマップの編集結果を保存する
Ctrl+R最後に保存した状態に戻す
F9テストプレーを開始する
F8データベースを編集する
F7イベント編集モードにする
F6上層チップ編集モードにする
F5下層チップ編集モードにする
右ダブルクリック下層・上層チップ編集モードを切り替える
(イベント編集モードの時は無効)
右クリックカーソル位置にあるチップを選択する(スポイト機能)
(押したまま動かすと最大で6x6の範囲を選択可能)
 

優先度・エラー

バグの原因を探すときに役立つテクニック

どこまでが思っている通りに動いていて、どこから予想外な動きをしているか調べる時は
ハッキリと画面に変化がある◆文章の表示や、必ず音がする◆効果音の再生を入れることで
その位置まで思った通りに動いているかを確認することができる。

何回も入れる位置を変えて試すことで、怪しい部分をあぶりだす事も不可能ではないぞ。

また、スイッチがONかOFFかを簡易的に調べたいだけであれば、
そのスイッチがONの時に◆効果音の再生をする定期的に並列処理のイベントを作れば良い。
ちょっとうるさいかもしれないが、確実に分かるぞ。

 

イベントのページ番号の優先度 / イベントID取得の優先度

マップイベントは数値が大きいページを優先して実行する。
(実は戦闘時の方は真逆なんだけど、ややこしくなるので割愛)

指定位置のイベントID取得を使う時もIDの数値が大きいイベントを優先して取得する。

 

画面に表示されるモノの表示優先度











メニュー画面など
画面の暗転 *1
文章の表示のテキストとウィンドウ, タイマー
戦闘アニメ, 画面のフラッシュ
ピクチャー番号:50番
ピクチャー番号: 1番




調




天候 (雨/雪)
主人公よりも上 に設定されているイベント
通行設定が の 上層 チップ
通行設定が ☆ □ の 下層 チップ
主人公および 主人公と重ならない に設定されているイベント
主人公よりも下 に設定されているイベント
通行設定が ○ × の 上層 チップ
通行設定が ○ × の 下層 チップ
遠景
 

通行設定の優先度




主人公と重ならない に設定されているイベント
上層チップの ○ ×
下層チップの ×
上層チップの に設定された 通行不可能な方向
下層チップの に設定された 通行不可能な方向
下層チップの

ちなみに、少しややこしいが
主人公の足元にある主人公と重ならない に設定されているイベントは移動に影響しないぞ。

 

併用できないコマンド

以下のコマンドは同時に使おうとすると、最後に実行されたものだけが動作するぞ。

  • ◆画面のフラッシュ
  • ◆戦闘アニメの表示
  • ◆キャラクターのフラッシュ
 

指定動作の全実行 に隠された弱点

◆キャラクターの動作指定 で指定した動きが終わるまで他の動きを止める ◆指定動作の全実行。
なんと、指定した動きが終わらない場合はゲームの進行が止まってしまう怖い弱点があるぞ。

ゆめ2っきではエフェクトを変えた時などに ◆指定動作の全実行 が使われているため、
◆キャラクターの動作指定 を使う時はちゃんとその動きができるか確認しよう。

……めんどくさいなら、"移動できない場合は無視"にチェックを入れよう。

 

"このイベント"を指定しているのに"無効なイベントが指定されました"となってしまう

場所移動でどこか別のマップへ移動させた場合、"このイベント"を指定している部分でエラーが出てしまう。
おそらく、場所移動した時点でどのイベントを実行しているかの記録が消えてしまうからだと思われる。

"EV0001"など、直接指定してあげればエラーも出ず、正しく動いてくれる。
きちんと気を付けて使えば"移動先のマップにあるイベントを動かす"こともできるぞ。

 

セーブデータを引き継ぐ処理の原理 / セーブデータに記録されないもの

当たり前ではあるが、セーブデータには「どこでセーブしたか」が記録されている。
「どのマップか」という意味の「どこ」が記録されているのはもちろん、
「どのイベントの処理中だったか」という意味の「どこ」も記録されているぞ。

だが、これはツクール。セーブした後にマップが七変化してもおかしくない。
そこで「そのマップが保存された回数」も一緒に記録しているのだ。
もし保存回数が食い違えば"マップに入りなおす"ことでムジュンを防ぐぞ。

ゆめ2っきのセーブデータ引継ぎはこの"マップに入りなおす"という部分を利用している。
セーブする直前に「セーブしている」というフラグを立てて、
そのフラグが折れないままマップに入りなおしたら更新されてたぞ!という処理なわけだ。

 

ちなみに、セーブデータには記録されないものがある。
◆マップチップの切り替え だ。

セーブする前に ◆マップチップの切り替え を実行しても、
セーブデータを読み込むと元のマップチップに戻ってしまう。
これを利用することで、ロード直後かどうか調べることも不可能ではないぞ。

 

イベント設置・編集

イベント開始条件の細かい違い

決定キーが押された時
こっちから話しかけると答える系。
通常キャラの下・上であれば重なって調べることで発動し、
通常キャラと重ならないであれば普通に話しかけることで発動する。
主人公から触れた時
こっちから触れる、話しかけると答える系。
通常キャラの下・上であればこっちから重なった時に発動し、
通常キャラと重ならないであればこっちから触れた時、話しかけた時に発動する。
なお、◆イベントの動作指定で主人公を動かしても触れたことにならない。
イベントから触れた時
お互いに触れられる、触れる、話しかけると答える系。
通常キャラの下・上であれば主人公と重なった時に発動し、
通常キャラと重ならないであれば触れた・触れられた・話しかけた時に発動する。
自動的に始まる
定期的に並列処理する以外のイベントが何も実行されていなければ答える系。
実行中は主人公をキー操作でほぼ動かせなくなる。
この自動的に始まるイベントが複数ある場合は順番に実行され、
同じ条件の自動的に始まるイベントがあった場合はマップイベント⇒コモンイベントの順に実行される。
定期的に並列処理する
出現条件さえ満たしていればすぐに動き出す系。
コモンイベントの場合は、出現条件のスイッチなどがOFFになって止まっても、
どこまで実行されていたかが記憶されていて、次はそこから再開される。*2
並列の文字通り複数ある場合はそれぞれが同時に動き出す。
また、上記4つと異なり順番待ちが起こらない。
 

場所移動イベントのちょっとした注意点

イベントの下のマップチップが移動できない(重なることの出来ない場所)で場所移動のイベントのプライオリティタイプが
通常キャラの下     → 場所移動ができない
通常キャラと重ならない → 場所移動できる!
通常キャラの上     → 場所移動ができない
 
イベントのしたのマップチップが移動できる(重なることの出来る場所)で場所移動のイベントのプライオリティタイプが
通常キャラの下     → 場所移動できる!
通常キャラと重ならない → 場所移動できる!
通常キャラの上     → 場所移動できる!

 

微妙な違い … 向き固定 と グラフィック完全固定

 動作指定で向き変更アニメ再開・停止※1
通常・足踏みあり(※2)
向き固定×
グラフィック完全固定××

(もうちょっと詳しく検証したいな……)
※1 イベントページを切り替えたとき、切り替え前の向きを保持できるかどうか
※2 移動ルートや動作指定で向き固定をしても、切り替え前の向きを保持する
  アニメーションタイプ「向き固定」と、アニメーションタイプ「通常」を向き固定したものの違いはこれ

 

微妙な違い … 主人公の歩行グラフィック変更 と キャラクターの動作指定:グラフィック変更

どちらを使っても主人公の見た目を変化させられるが、
キャラクターの動作指定:グラフィック変更で変えた場合、他のマップへ移動すると元のグラフィックに戻るぞ。

それ以降もその姿でいてほしいのか、一時的にその姿になってほしいのか、で使い分けるとエクセレント。

 

移動ルート指定の記憶?

移動ルートを設定したイベントページが切り替わったとき、
切替前と後の移動ルートが全く同じ場合は、どこまで移動したかを記憶しててうまくつないでくれる。
逆に移動ルートが少しでも違う場合は、移動ルートの先頭から始まるぞ。

「移動しない」など移動ルートが見かけ上設定されてないものであっても、
内部的には移動ルートを持っている扱いになってて、この法則通りに動くみたいだ。

ふみきりで移動ルートを設定したキャラを止めたとき、動きがおかしくなったらこの辺りを疑ってみよう。

 

イベントから触れたときの不思議な挙動

イベント開始条件をイベントから触れたときに設定したイベントが起動する瞬間に、
定期的に並列処理するイベントでスイッチがONになり、
ある自動的に始まるコモンイベントの出現条件を満たすと、イベントの動きが止まってしまう。
(ゆめ2っき的には、公園世界の黒魔女に捕まる寸前にシフトチェンジを起動すると再現できる)

この現象は、どのようなイベントの設定にしても、イベントの実行内容が何であっても起こってしまう。

この動きが止まった状態は、イベントページを切り替える、イベントに触れる、
キャラクターの動作指定(対象キャラを止まったイベント・移動ルートは何でもいい)…のいずれかで戻せる。

 

イベントコマンド

変数の操作 … X座標と画面Xの違い

X座標,Y座標はマップのどの位置に居るのか
画面X,画面Yは画面のどの位置に居るのか、を調べるぞ。

Xがヨコ、Yがタテだ。
ツクールの世界では左上に行くほど数値が減っていき、左上の隅っこは X:0,Y:0 になるぞ。

もし、画面Xが0~320のどこかで、画面Yが0~240のどこかなら、
そのイベントの足元が画面の中に入っている、ということになる。

なお、画面X/画面Yは-8辺りが最小値。
これは表示上、画面左上が外側1マス分しか存在していないため。

 

変数の操作 … 主人公が動いていないことを知る

これは"画面がスクロールしないマップ"で、
主人公が止まっていることを判定する処理だ。

◆変数の操作:[0001:変数1◆]代入, 主人公の画面X
◆変数の操作:[0002:変数2◇]代入, 主人公の画面Y
◆変数の操作:[0001:変数1◆]剰余, 16
◆変数の操作:[0002:変数2◇]剰余, 16
◆条件分岐:[0001:変数1◆]が8
 ◆条件分岐:[0002:変数2◇]が0
  ……

画面Xを16で割った余りが8、画面Yを16で割りきれる時。
この瞬間は主人公が止まっている。

 

しかし、これは"画面がスクロールしないマップ"でしか使えない。
画面がスクロールするのなら、主人公が歩いても画面Xが変わらないかもしれないからだ。

それを解決させたのが、この処理だ。

◆変数の操作:[0001:変数1◆]代入, 主人公の画面X
◆変数の操作:[0002:変数2◇]代入, 主人公の画面Y
◆条件分岐:小型船に乗っている
 ◆変数の操作:[0001:変数1◆]減算, 大型船の画面X
 ◆変数の操作:[0002:変数2◇]減算, 大型船の画面Y
 ◆
:それ以外の場合
 ◆変数の操作:[0001:変数1◆]減算, 小型船の画面X
 ◆変数の操作:[0002:変数2◇]減算, 小型船の画面Y
 ◆
:分岐終了
◆変数の操作:[0001:変数1◆]剰余, 16
◆変数の操作:[0002:変数2◇]剰余, 16
◆条件分岐:[0001:変数1◆]が0
 ◆条件分岐:[0002:変数2◇]が0
  ……

実は、小型船・大型船といった"乗り物"は、
そのマップに存在していなくても画面Xなどの座標を調べられる。
乗り物に乗っていない場合は当然、止まったまま動かない。

"止まったまま動かない"ことを利用したのが上記の処理。
乗り物の画面Xを16で割った余りが8、画面Yを16で割りきれる時。
この瞬間は画面がスクロールしていない、と言えるわけだ。

更にもう一工夫だ。
主人公の画面Xから乗り物の画面Xを引いた時。
ここまで出てきた"余り8"はこの引き算で打ち消される形になるぞ。
そして、もし主人公も乗り物も止まっているのなら、16で割りきれる。
ようやくこれで主人公が動いていないことを知ることができるようになった。

 

ゆめ2っきでは、Zキーの長押し処理などに同様のものが使われている。
というのも、"歩きながらティッシュを置く"なんてことをすると
タイミング次第ではイベントをすり抜けてしまうからだ。
バグ対策に密かな活躍をしているぞ。

 

変数の操作 … 曲の再生位置を知る

◆変数の操作:代入, MIDIの再生位置(Tick) を使えば、
wavやmp3ならどこまで再生したかの"秒数"、
midiなら演奏位置を示す"Tick"という数値が入るぞ。

長いエンディング曲の「30秒」の時に背景を変えたい!
などという時にちょっと便利な代物だ。

 

変数の操作 … とある桁だけを取り出す

変数の除算(割り算)では、小数点以下をバッサリ切り捨てる。
つまり 256÷10 の答えは 25 になるのだ。

変数の余剰(余り算)では、割り算の余りだけが残る。
つまり 10の余剰 は10で割り算した余り、0~9 になるのだ。
この二つを上手く使うことで、特定の桁だけを調べられるぞ。

 

下は変数の五桁目だけを取り出す一例だ。

◆変数の操作:[0001:便利変数01]代入,変数[適当なとこ]の値
◆変数の操作:[0001:便利変数01]除算,10000
◆変数の操作:[0001:便利変数01]余剰,10

そしてこっちは変数の一桁目だけを取り出す一例だ。

◆変数の操作:[0001:便利変数01]代入,変数[適当なとこ]の値
◆変数の操作:[0001:便利変数01]余剰,10
 

変数の操作 … 除算で小数点以下まで求める

19÷4 の答えは 4.75 だ。
しかし、ツクール2000では小数点以下切り捨てなので答えが 4 になる。

 

ここで、19÷4 の"余り"を出してみよう。余り 3だ。
これを10倍にして4で割る、すると 30÷4=7 となり、2が余る。
余った2をまた10倍にして4で割る、20÷4=5 となって、余りは0だ。

ここまで出てきた(余り以外の)計算結果を合わせると、7,5と並ぶ。つまり.75というわけ。
10倍にして割り直すと小数点以下の計算が疑似的にできるのだ。

 

変数の操作 … 正負を求める/絶対値を求める

あまり出番は無いかもしれないが、

◆変数の操作:[A]乗算,999999
◆変数の操作:[A]除算,999999

…とすることで、[A]のプラスマイナスを維持したまま絶対値を1にできる。
(元々0だった場合は0を維持する)

これを応用することで、変数の操作のみで絶対値の取得も可能だ。

◆変数の操作:[B]代入,[A]
◆変数の操作:[B]乗算,999999
◆変数の操作:[B]除算,999999
◆変数の操作:[B]乗算,[A]

この場合、[A]の数値はそのまま、[B]には[A]の絶対値が入る。

 

変数の操作 … 細かい仕様まとめ

  • 上限値(999999),下限値(-999999)を超える演算 ⇒ 上限値(999999),下限値(-999999)になる
  • 除算
    オペランドを0にした場合、計算結果は操作する変数と変わらない。
    操作する変数オペランド計算結果
    n0n
    0m0
  • 剰余
    計算結果の符号は操作する変数の符号になる。要するにオペランドの符号に意味は無い。
    操作する変数オペランド計算結果
    n00
    0m0
    +n+m0以上+m未満の数
    +n-m0以上+m未満の数 (正の数になる)
    -n+m-mより大きい0以下の数 (負の数になる / 例:-10 剰余 3 ⇒ -1)
    -n-m-mより大きい0以下の数 (負の数になる / 例:-10 剰余 -3 ⇒ -1)
  • 一括操作のオペランドを乱数にすると、それぞれの操作ごとに新しい乱数が使われる
    ◆[0001~0002]代入, 乱数[0~9] ⇒ 変数1番に7、変数2番に3…みたいな
  • 一括操作の注意点
    ◆[0001~0004]代入, 変数[V[0004]]の値 ⇒ 正常に動く
    ◆[0001~0004]代入, 変数[V[0001]]の値 ⇒ 正常に動かない
 

画面切り替え方式の変更 … 無限ループする道を作る

どんなに歩いても進まない、恐ろしい無限ループの道を作るのだ。
やり方は簡単、以下のようなイベントを作ればOKだ!

◆画面切り替え方式の変更:場所移動/消去,消去しない
◆画面切り替え方式の変更:場所移動/表示,瞬間表示
◆場所移動:(ここにループの行き先を指定するのだ)
◆画面切り替え方式の変更:場所移動/消去,フェードアウト
◆画面切り替え方式の変更:場所移動/表示,フェードイン

画面を暗くせずに移動させるから、遊んでる時はなかなか気づかない。
ちなみに、一番上を「場所移動/消去,瞬間消去」にすると一瞬だけ暗くなるぞ。
ループしてる事をアピールしたい時には良い方法かもしれない。
他にも、上から二番目を変えるとまた違った演出ができるぞ!

 

画面の表示 … 暗転以外にもこんな演出

場所移動、ピクチャーの表示、遠景の変更などの直後
画面の表示を入れるとフェードインなどで表示できるぞ!
本家の起動直後に表示される説明書でも使われているようだ!

 

ピクチャーの表示と移動 … ピクチャー番号で決まること

ピクチャーの表示は画像を読み込んで指定した場所に表示するぞ!
この時に指定するピクチャー番号は数字が大きい物を上に表示するという仕様だ!
(ピクチャー番号が 5番の絵と10番の絵では、10番の絵が上に表示されるぞ)
また、前述のように読み込んで表示させるから連続で使うと重い!
1回表示させたらピクチャーの移動で操作した方が動作が軽いぞ!
あらかじめ表示させておくのも1つの方法かもだ!

余談ではあるが、場所移動するとピクチャーはすべて消えるぞ!

 

キャラクターの動作指定 … ジャンプの速さ

ジャンプは距離に関係なく移動速度が一定。
遠い場所にジャンプさせると速すぎて見えない事もあるぞ!

 

キャラクターの動作指定 … 対象キャラの指定動作だけを解除

キャラクターの動作指定で移動ルートを何も設定していない空っぽのコマンドをつくると、
対象キャラの指定動作を解除できるぞ。

指定動作の全解除はすべてのイベントやうろつきの動作まで中断してしまって扱いにくい…
というときに便利かもしれない。

 

指定動作の全実行・全解除

指定動作の全実行・全解除は
キャラクターの動作指定で指定した動きを更に制御できるのだ!

指定動作の全実行すべての指定した動きが終わるまでウェイト
指定動作の全解除すべての指定した動きを強制的に中断

つまり、キャラクターの動作指定の直後に指定動作の全実行をさせれば
すべてのキャラクターが移動し終わるまで待ってくれる、という事だな!

ただし、裏を返せばすべてのキャラクターが移動し終わるまでゲームが止まるとも言える。
上手く使いこなせないと最悪の場合、ゲームの進行そのものすら止まってしまうかもしれないぞ…!
(例:定期的に並列処理するイベントの中に、キャラクターの動作指定と一緒に入れる、など)

 

ウェイト … 0.0秒

0.0秒と指定されたウェイトは何の意味もない……わけではない!
なんと、0.0秒を指定すると1/60秒のウェイトになるぞ。いわゆる1フレームだ。

重い処理だけど、ちょっとくらい休んでもバレへんやろ……という時は
0.0秒ウェイトを置いておくとゲームの動作が軽快になるかもしれない。

 

ウェイトの詳細

◆画面の色調変更:(R200,G200,B200,S200), 10.0秒(W)
◆画面の色調変更:(R200,G200,B200,S200), 10.0秒
◆ウェイト:10.0秒

上記のイベントコマンドは等価(他のウェイトを付帯するイベントコマンドも同様)

◆ウェイト:0.1秒
◆ウェイト:0.0秒
◆ウェイト:0.0秒
◆ウェイト:0.0秒
◆ウェイト:0.0秒
◆ウェイト:0.0秒
◆ウェイト:0.0秒

上記のイベントコマンドは等価

なので、例えば並列処理するコモンイベントで◆ウェイト:10.0秒が3.0秒実行した後、
出現条件スイッチがOFFになってイベント実行が途中で中断され、
再び出現条件スイッチがONになって再開した場合、再開後は7.0秒分のウェイトを実行する

 

効果音の演奏 … 効果音を途中で切る

効果音が鳴っている時に ◆効果音の再生:(OFF) が実行されると、
鳴っている効果音がすべて途切れて止まるぞ。

わざと途中で効果音を切りたい時に便利な小技だ。

 

条件分岐 … イベントの向きで処理を切り替え

透明なグラフィックを指定したイベントでも、きちんと向きが存在する。
アニメーションタイプを向き固定にすれば、
◆キャラクターの動作指定でしか向きが変わらなくなるぞ。

更に、◆条件分岐:このイベントが下を向いている等と組み合わせることで、
スイッチや変数を使わずにイベントの処理を切り替えていくことができる。

 

……向きを変えるには時間がかかる(最短でも1/60秒)し、
他のマップへ行くと向きも戻ってしまうので、扱うのはちょっと難しいぞ。

 

条件分岐 … 実行されたくないけど残しておきたい時に

◆条件分岐:変数[0001]が変数[0001]以外 という条件にすれば、
イベントの処理を残しつつ、遊んでいる時には絶対に実行されないようにできるぞ。

古いイベントの内容を参考用に残しておきたい時や、
イベント内容の説明を残しておきたい時に、ちょっと役立つかもしれない。

 

条件分岐 … 決定キーでこのイベントを開始した

名前の通り、今編集しているイベントを決定キーで調べて発生させたかが分かるぞ。

……使い道が分からない?
例えば、イベントの開始条件を"主人公が触れた時"で"重ならない"にした時。
ぶつかってきた / 話しかけたきた、の2パターンでリアクションを変えることができる。
バイクでぶつかると痛がるけど、話しかければ返事をする……なんてことができるぞ。

 

階段イベントなどは触れた時に設定することになるが、そうすると階段に話しかけても上り下りしてしまう。
そんな時も、◆条件分岐:決定キーでこのイベントを開始した で分岐させてやれば、
階段に話しかけても何もしない、でも触れれば上り下り、ということが可能だ。

 

ちなみに。
イベントの呼び出しで呼び出された場合、決定キーで始まったことにはならない。
例え呼び出し元を決定キーで調べたとしても。

 

文章オプションの変更 … ウェイト中に他のイベントを移動させる

文章オプションの変更コマンドの ウェイト中に他のイベントを移動させる にチェックを入れると、
イベント開始条件「自動的に始まる」実行中などであっても、イベントが移動してくれるぞ。
(コマンド名が紛らわしいけど、この項目だけ文章以外の処理にめちゃくちゃ影響する)

ゆめ2っきでは長いこと、チェックを入れずに開発を続けてきた(…と思う)ので、
他のマップやイベントなどに設定の変更を持ち込むと、思わぬバグの原因になってしまうかも。

あと、文章表示中、他のイベントに文章オプションの変更コマンドがあると、そこで処理を止めてしまう。
「定期的に並列処理する」で文章オプションを使う場合、稀にこの仕様が響いてくることも。

 

エディターの仕様外のコマンド・仕様か怪しい挙動

ファイル名の相対パス指定

ピクチャーの表示などのファイル名指定は、"..¥¥pc_back.png"のような相対パス指定ができ、
"..¥¥Title¥¥Title.png"のように別フォルダのファイルも指定できる。

ただし、ツクール2000自体にはそれを可能とする機能がないため、TkoolBridgeなどの外部ツールによる改変が必須。
相対パス指定を補正する処理はないので、コピペ自体はツクール2000内でも可能。

 

画面の瞬間スクロール

V[4279]にX軸正の方向の画面スクロール量、V[4280]にY軸正の方向の画面スクロール量を代入してから、
CEV[0294:【呼】瞬間スクロール]を起動することで、
たった1フレームで、指定の量だけ画面スクロールさせることができる。

また、V[4279]とV[4280]の両方に0を代入してからCEV0294を起動すると、1フレームで画面スクロール量をリセットすることができる。

これを応用したコモンイベントとして、CEV[0295:(指定座標で画面固定)]がある。
このコモンイベントを用いれば、座標(V[4327]、V[4328])を中心として、2フレームで画面を固定することができる。

これらをうまく使ったイベントとして、MAP0481(710_冥府)(001,005)のイベントがある。
このイベントでは、うろつきがコウモリワープを使ったことを検知して、CEV0295を起動し
たとえ画面固定されるエリアと、そうでないエリアをコウモリで跨いだとしても、画面固定が正常になされるようになっている。

なお、この瞬間スクロールは正規の実行環境でないと期待通りの動作をしないことがある。
例えば、エミュレータのEasyRPGでは速度6の通常の画面のスクロールに置き換わる。

余談:なぜ「画面の瞬間スクロール」はコモンイベントから起動しないといけないの?

まず、どのようにして瞬間スクロールを実現しているのかを知っておこう。
これは、CEV[0294:【呼】瞬間スクロール]内で行われている処理の一部である。

◆画面のスクロール:左に1ずらす, 速度53
◆画面のスクロール:上に1ずらす, 速度53
◆画面のスクロール:位置を元に戻す, 速度53(W)

明らかに画面スクロールの速度が正常でない値"53"を取っていることがわかる。
この数値は、TkoolBridgeを用いて入力されている。

では、なぜ"53"にすると瞬間スクロールになるのか? それが判明していないのである。
この部分を他のいろいろな値に変更すると、実行時にRPG_RT.exeが強制終了したり、RPGデバッガー200Xがマップを読み込めなくなってしまう。
その中で、エラーを起こさずに画面の瞬間スクロールを発生させる一番小さい値が53だった、というだけなのだ。

正常でない値のまま動く理由が未知である以上、この処理によって思わぬエラーが引き起こされる可能性は0ではない。
さらに、イベントコマンド自体はRPGデバッガーを用いて検索することができないので、
もし、これが原因となる重大なバグが発見された時に、既にいろいろな箇所で使っていたとしたら、
使用箇所を全て探し出して修正するのは、途方もない作業量となる

そこで、qxy氏によって、これらの処理は全てCEV[0294:【呼】瞬間スクロール]から実行されるように変更された。
コモンイベントの使用箇所はRPGデバッガーで検索可能なので、これでもし上記のような事態が起こっても対応が可能になった。

まとめると、

  • 画面の瞬間スクロールコモンは、ツクール2000の想定外の挙動を利用している
  • この動作の安全性が未知数であるため、万が一のことがあっても対応できるようコモンイベントにまとめて管理されている

ということである。

 

その他

色々なデータの上限値

項目上限
マップ数不明
(1000以上)
マップサイズタテ500
ヨコ500
1つのマップに置けるイベント数5000
1つのイベントに作れるページ数100
変数5000
スイッチ5000
コモンイベント5000
地形ID5000
戦闘アニメ5000
1つの戦闘アニメの長さ99フレーム
(3.3秒)
 

指定してもエラーが出ないモノ

  • 存在しないファイル名のBGM・効果音 (※画像はすべてエラーが出る)
  • 範囲外の変数・スイッチ (0以下は無効化される?)
  • 範囲外・未使用のラベル番号
  • 何も表示していないピクチャー番号のピクチャー (移動・消去)
 

BGMファイルの有無を調べる小ネタ

上記の通り、存在しないファイル名のBGMを指定してもエラーは出ない。
そして存在しない場合は事実上の無音となり、再生位置は動かない。

◆変数の操作:代入, MIDIの再生位置(Tick)を使うことで
「ファイルが存在し、再生できているか?」を調べることもできる。
とはいえ、1秒以下の長さのmp3やwavだと調べられないが……。

 

プロジェクトからプロジェクトへ何かをコピー

イベント、マップチップ通行設定などをコピーした後、
別のプロジェクトを開いてもしっかりと貼り付けることができる。

作り置きしておいたものを最新版へと持っていく時に便利だ。

 

マップそのものをコピーするのなら、マップファイルそのものをコピーする方がラクだぞ。
詳しくはこの下を読んでみよう。

 

コモンイベント・マップチップ通行設定が記録されているファイル

コモンイベントやマップチップの通行設定など、
データベースで設定したものはすべて"RPG_RT.ldb"に記録されるぞ。
……なに?ファイル名の後ろに .ldb なんて書かれてないって?
右クリック→[プロパティ]でファイルの種類を確認してごらん。

ちなみに、他のファイルに記録されているのは大体こんな感じの情報だ。

ファイル名記録されてるもの
Map0001.lmu *3マップID:0001に置いてあるイベント全て、どんな地形のマップか、
"マップの設定"の項目のうちマップ描画に関わる設定 (下の画像の青色の項目)
RPG_RT.ldb *4主人公のパラメーター、アイテム名、
マップチップの通行設定、コモンイベントなど、"データベース"の項目全般、
スイッチ・変数の名前と最大数
RPG_RT.lmt *5マップの並び順と、
"マップの設定"の項目のうち「マップ名」「BGM」など (下の画像の緑色の項目) *6
RPG_RT.ini *7ゲームの名前、編集時のズーム倍率、RTP同梱か否かのフラグなど
Save01.lsd *81番目のセーブデータそのもの
名前の数字部分を変えれば別の番号にできる
 
  • マップの設定
    青色の項目が Map****.lmu に、緑色の項目が RPG_RT.lmt に記録されている。
 

ファイル名のイニシャルで頭出し

BGMや画像を選んでいる時、キーボードのアルファベットや数字を押すことで
その文字で始まるファイルのところまで自動的にスクロールするぞ。

例えば、キーボードの「s」を押せば
「syujinkou」「system」など、sで始まるファイルの所までスクロールしてくれる。

ファイル数が膨大な2っきでは地味に役立つ機能だ。

 

インポートを省略する

インポートをしなくても、素材の入っているフォルダにコピーすれば
同じようにツクールで使う事ができるのだ!
ただし、それぞれ特徴があるので用途に合わせて使い分けるのが良いだろう!

 インポートコピー
容量微妙に減る変わらない
画像の大きさ大きすぎると怒られる大きさは無関係
手間少しメンドウラクラク
 

古い体験版向けの情報

マップやイベントの作成数に制限がついていた頃の体験版で役立つ情報。
かつてスレのテンプレとして書かれていたものをそのままコピペ。

Q 体験版だとデータベースで最大数が変えられない
A 増やしたい項目を選択し、適当な場所(空データは×)で右クリック。
  複数コピーを選択し、適当な数のコピー項目数を選択する。
  増やしたい項目の一番下で貼り付けをする。

Q 他人の作ったマップにイベント追加できない
A イベント三百個のマップを用意。「イベントを増やしたいマップ」と
  イベント三百個のマップを全く同じにする。
  Map(xxxx).lmu(イベントを増やしたいマップ)をフォルダの外へ捨てる。
  Map(yyyy).lmu(イベント三百個のマップ)の名前をMap(xxxx).lmuと同じにする。

Q スイッチと変数増やしたい
A まず2003体験版でプロジェクト作成
  今作ってるゲームのRPG_RT.ldbをそのプロジェクトのRPG_RT.ldbに上書き。
  その後データベースを開き、キャンセル、そして一回開いたら、
  データベースが今作っているゲームと同じになる。
  後はスイッチ変数増やしまくりんぐ
  OKすると確認画面出るが承知でやってるのでOK。
  後はそのプロジェクトのRPG_RT.ldbをコピーして自分のゲームに上書きして終わり

Q 体験版でもピクチャーを50枚使いたい
A まず、2k3体験版でプロジェクト作って、適当なピクチャーをインポートする。
  んで、データベースのコモン(もしくはマップイベント)を開き
  「ピクチャーの表示」で21~50番のピクチャー表示のコマンドを一個づつ作る。
  続いて21~50番のピクチャーの消去、ピクチャーの移動のコマンドを作る。
  んで全選択してコピー。2kに貼り付ければ完璧
  後はコピーしてきた奴を弄くればおk。
  ピクチャー番号いじらなければその後も設定変更し放題
 

◆豆知識EX 非参加者むけ
ショートカットを上手く使うとツクールを入れなくても
デバッグモードで起動できる。ただ、ツクールを入れるついでに
参加したいという人を増やすため、あえてやり方は割愛する。


*1 メニュー画面を開閉すると、画面の暗転が解除される
*2 本当に"そこから再開"される。つまりイベント内の条件分岐を満たさない場合でも分岐の中から再開するケースがある。
*3 LcfMapUnit
*4 LcfDataBase
*5 LcfMapTree
*6 コレが破損するとツクールで開けなくなる
*7 INItialization
*8 LcfSaveData