RPGツクール2000/2003 - アイテム・敵一覧
はじめに
RPGツクール2003/2000 のデータベースファイルに直接イベントを書き込みます。
自作メニュー・自作戦闘・エンカウント処理などでは嫌と言うほど定型処理を繰り返す事になります。というのは2000/2003では関数・引数という概念が基本的にないから... そのような部分は外部スクリプトで書いた方が良いのではないか、という事で作ってみました。
特に文字を引数として渡す方法が無くて、べた書きしかありませんでしたからとか...
対応している命令が少なくて、上記用途以外では多分全く役に立ちません。
サンプル
一部データベースに直接値を代入できます。ただし下の例にある通り、ごく一部の命令にしか対応していません。このツールだけでRPGを作ることは絶対不可能です。あくまでRPG2kの補助的な役割です。自作戦闘などで大量の変数データをExcelなどから持ってきたいときにはマクロを組み合わせて使えるかもしれません。
1: #================================================# 2: # スクリプトのサンプル # 3: # 2004.01.22 ほっしー (hossy@hossy.info) # 4: #================================================# 5: 6: # この # で始まる行や、# に続く文字列は注釈文です。 7: 8: // C言語風の注釈文を入れた場合 9: // このテキストがそのまま渡されたり 10: 11: #|| まずは代入文(変数)から 12: # ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 13: v[1] = 2 # v[1] に2を代入。v[0] は使えない 14: v2=-3 # [] はあってもなくてもどちらでも。負数可 15: v[3] = v[v[4]] # v[v[4]] は、v[4]の番号の変数 (ポインタ) 16: v[5..6] = r[7..8] # v[5]~v[6] を、7~8の乱数に 17: v[v[7]] = vv[8] # 略記法 18: 19: #|| 次に代入文(スイッチ) 20: # ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 21: s[2] = 1 # true。0=false, 1=true のみ有効 22: # s[4]=4 # こういう値を書き込むとエラー 23: s[2].true # .true, .up, .on でスイッチ ON 24: s[3] = false # .false, .down, .off で OFF。= でも OOP ぽく . でも 25: s[5..7].swap # ON/OFF切り替え。swap, toggle, change, not が有効 26: 27: #|| お次に IF 文 28: # ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 29: if (v[1] == 2) # ==(一致), >, <, >=, <=, !=(不一致) が使えます 30: if (v[3] != 4) # 入れ子もおっけー 31: puts ("ふぇん") 32: end # else 未対応(--; 33: if (v[5] != v67) # なお、v[2]>1 は OK ですが、1>v[2]はダメ 33: puts ("ふぉん") 34: end 35: end 36: if (s[1].true?) # OOP 的。 v[1].equal?(v[2]) を実装していないのは手抜き(--; 37: if (s[2] == false) # C的。スイッチでは比較は == しか使えません(--; 38: puts ("みょん") 39: break # 処理の中断 40: end 41: end 42: 43: #|| テキストの入力 44: # ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 45: puts << EOS # 一番簡単なのは、このヒアドキュメント形式 46: [ほっしー] はじめまして。 47: このテキストは、スクリプトのサンプルです 48: 49: 空行が会話ウィンドウの切れ目になっています。 50: 最大4行まで連続して書けます。 51: 横側の長さについてはさっぱり見ていません。 52: もし縦側がいっぱいになった場合は、 53: このように次のテキストに自動的に移されます。 54: 行の最初の半角空白は完全に無視されます。 55: 最初 << EOF と書いた場合、EOF な行が最後です。 56: Perl/Ruby なヒアドキュメントの真似ですね 57: EOS 58: 59: puts <<- kokomade # 一番簡単なのは、このヒアドキュメント形式 60: <<- な場合、行頭のスペースも含まれます。 61: え? ウィンドウ内に空行が欲しい場合は? 62: 63: “ ”を書いてごまかして下さい(弱 64: kokomade 65: 66: if s[1].false? 67: puts ("ヒアドキュメント形式の他に") 68: puts2 "一行だけ書き込む命令もあります" # puts2 が同じウィンドウ 69: puts2('" を使いたい場合、' で括ってください') 70: end 71: 72: unknown(method) # こういう知らない命令は綺麗さっぱり無視されます 73: 74: # だいたいこんな所です。 75: # これによって起こるトラブルには一切責任を持ちません(--; 76: # 自己責任によるご使用をお願いします。 77: # もしも使い方が不明な場合、機能追加の要望などは 78: # 適当にお願いします。
このスクリプトが次のようになります。
このスクリプトとは少し違いますが、直接 ldb や lmt を書き換えられると言うことは、AirRPG2.25→2.52のようなメッセージスキップを実現するにあたり、このスクリプトを使っての半自動処理だとしてでも同等の物が作れるという事になります。
最後に
ツクールXPではRubyに関数をがんがん定義できます。こういうスクリプトによる似非マクロ展開を用いなくても素直にすらすら書けます。良い世の中になったものです、いやほんと。