制作物

Misc.

最終更新日: 2004/01/22

メニュー

index
Ruby / PHP
スタイルシート切り替え for PHP (IE6 などに)
感謝バナー v0.1 (逆リンク対応型)
逆リンク一覧 (準備中)
Windows
たぐ☆あしすと v1.1 (画像タグ埋め込み支援)
なんぷれますたー v2.21a(ナンバープレース/数独 9×9, 16×16 自動解答)
ツクール2000インストーラ (半ボツ)
その他
RPG
ツクール2000 デバッグ用スクリプト(配布なし:紹介と逆人材募集関係)
次期RPGエンジン製作協力者募集中(powered by はちみつくまさん)
Misc.
CLANNAD BGM抽出
琥珀さんドット絵
戻る

いろんな同人サークルで人材募集をしているのを見て、アマチュアサークルさんへの逆人材募集なんてやってみます(^^;

ツクール2000 デバッグ用スクリプト

デバッグ環境?

ツクール2000はあんまり大きすぎる作品のデバッグ性は高くないです。装備品とか耐性とか、数が数百を超えると「毒と猛毒の確率が全然ばらばらだよ」みたいに整合性が取れなくて困ってしまいます。たぶんKanonRPG まにあっくすみたいに一望できるとデバッグがしやすいのではないかなぁと。

ツクール2000作品の攻略ページ作成をたくさん行っていたり、デバッグツールも充実している事もあって、上のかのGページくらいなら、取り込み中でなければ最近なら片手間がてらに1日もあればできてしまいます。Romancing Kanon (はちみつくまさん) の合計1万に届きそうなアイテム・魔法等々の確認(^^; も、こちらで確認していたりします。

以下、対応していませんという文字がたくさん出てきます。需要がないから対応していないだけで、そんなに作るのが大変というわけではないと思います。たぶん。

クラス構造

あまり綺麗な構造ではない... いちおう動く程度で。

クラス名親クラス概要
Rpg2k RPG2k/2k3 ldb(データベース)解析 旧バージョン
└ DbText イベントのテキストファイル化にまつわること、命令○○は戦闘開始とか
  └ DbName 共通の表記法、フラグを On, Off で書くなど
    └ DbDict ldb ごとに定義される辞書、フラグ1~1000の名前など
  RpgItem 各要素を内部保持
  RpgItem2RpgItemその2
  RpgItem3RpgItemその3
Rpg2kMapRpg2klmt(各マップファイル)解析
Rpg2kTreeRpg2klmu(マップツリー)解析
Rpg2kSubTree マップツリー各要素
Rpg2kMapFigure マップの歩ける位置の画像を描く
└ Bmp 24bitBMPを扱うみに汎用クラス
Rpg2k3Main RPG2k/2k3 汎用読み書きツール 新バージョン
└ Rpg2k3Item 要素を保持
Rpg2k3Common いろいろな所から呼び出す関数群
Rpg2k3Config コンフィグ

例1

台詞一覧とそのマップ・イベント列挙。今のところこんな感じの、RPG 内の全データを1つにまとめたテキストファイルになります。ウィンドウ枠に入っているかどうかの確認もできるかも。

マップイベント、コモンイベント、戦闘イベントに対応しています。ただし一部命令や一部イベント発生条件には対応していません。

例えば、全シナリオファイルをテキスト化したもの。一気に読んでみたいとき(誤字脱字のチェック)や、アイテムの検索などに使えます。

../../Romancing_Kanono_Test/map0007.lmu-MAP0007-0005 (003,010)-0001
◆処理:呼出 [c018:5桁NEXT分解]
◆

../../Romancing_Kanono_Test/map0007.lmu-MAP0007-0006 (000,001)-0001
◆処理:呼出 [c123:顔・舞]
◆表示:舞
:  :………
◆処理:呼出 [c127:顔・佐祐理]
◆表示:佐祐理
:  :ほら、舞。¥.
:  :元気だそうよ

そして、この出力に対し別のスクリプトをかけることで、誤字脱字の位置を完全に特定したり、拾えるアイテムの位置を自動的に抽出したりできます。下の画像はロマカノの誤字脱字チェックの時に使ったものと、アイテム一覧チェック用です。

例2

武器や技などが一瞬でこうなります。属性のグループ化などについて、ちょっとした辞書ファイルが必要です。

(ツールのC++→Ruby以降に伴い一時的に非対応になっています)

番号名前説明MP状態成功属性
1501天使の矢(魔力L1)純粋な破壊エネルギーによる攻撃4  {魔-}
1502天使の矢(魔力L2)純粋な破壊エネルギーによる攻撃4  {魔-}
1503天使の矢(魔力L3)純粋な破壊エネルギーによる攻撃4  {魔-}
1504天使の矢(魔力L4)純粋な破壊エネルギーによる攻撃4  {魔-}
1505天使の矢(魔力L5)純粋な破壊エネルギーによる攻撃4  {魔-}
1541碁石(毒L1)毒のダメージと微毒を負わす6微2微3 {毒-}
1542碁石(毒L2)毒のダメージと毒を負わす6毒2毒3 {毒-}
1543碁石(毒L3)毒のダメージと毒を負わす6毒2毒3 {毒-}
1544碁石(毒L4)毒のダメージと猛毒を負わす6猛2猛3 {毒-}
1545碁石(毒L5)毒のダメージと致死毒を負わす6致2致3 {毒-}

例3

一部データベースに直接値を代入できます。ただし下の例にある通り、ごく一部の命令にしか対応していません。このツールだけで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.50のようなメッセージスキップを実現するにあたり、このスクリプトを使っての半自動処理だとしてでも同等の物が作れるという事になります。

例4

マップの中で歩けるところと歩けないところを4×4サイズで表示します(RPG2kの1/8表示)。本来歩けないところが歩けるというのを調べられるかもしれません。↓ は縮尺さらに1/2で、色々な色の●があるのはちょっと無視してください。

だいたいはイストワールメモ帳のマップが作れる程度です。例1のスクリプトを組み合わせるとSVGなマップ例ができ、これを Illustrator などでちょこちょこと加工すると全体マップになります。

なお、ゲーム画像と同等のものを得ることはできません(png の展開方法、透明パレットの扱いなどが大変そうで)。気合いでキャプチャしてください(汗。

例5

セーブデータの解析が出来ます(フラグとか変数とか各キャラのレベルとか)

当サイトでのRomancing Kanonデータ登録、Nepheshelデータ登録はこちらを用いております。

現在進行中

使い道があまりないため開発を休止中です。

利用条件

今のところフリーウェア・シェアウェア・同人ソフトなどのツクール2000作品について、製作のご協力という形でのみ提供させて頂きます。プレイヤーが攻略の補助としたり解析データを攻略ページなどとして公開するために入手するのはお控え下さい。

Rubyのスクリプトで、本来自分専用のため使い方はかなり複雑(というか無駄が多い)です。もしかしたらサーバーの下で WEB アプリケーションとして動かしたり、一本のソフトウェアとしてまとめるかもしれません。それまでは、ゲームプロジェクトフォルダにある最新の「RPG_RT.ldb, RPG_RT.lmu, Map????.lmu」と辞書ファイルさえ頂ければ、そして「技一覧が欲しい」等とご連絡頂ければ、ある程度の期間で(早ければ1日以下で)対応させて頂きます。

以下、当面の扱いです。

次期RPGエンジン製作協力者募集中

サークルはちみつくまさんの募集にもあります通り、RPG システムの開発をまったりと行っています。宜しければちょっと覗いてみてください。


ほっしー
hossy@hossy.info