RPGツクールMVのイベントコマンドのテキストデータをJSONに変換できるか

f:id:aoitaku:20200213222004p:plain
コンテキストメニュー内の「テキストとしてコピー」

イベントコマンドをテキストとしてコピーできる機能がある。「HTMLとしてコピー」の方はエディタ上の見た目を維持したまま、掲示板などに貼り付けるための機能で、フォーラムなどではこれがあると確かに便利だろうと思う。

本当は一番欲しい機能は JSON としてコピー / ペーストできる機能なんだけど、それはない。実は内部的には JSON でやりとりをしている。RPGツクールMV同士なら、JSON でコピーペーストできる。で、Everett のコピーはRPGツクールMVと同じ形式でクリップボードにコピーするので、RPGツクールMVのエディタ上にペーストできる。逆はできない。できるようにしたら便利だろうとは思っているのでそれはいずれやるとして。

Everett は Electron 製なので、クリップボードの操作がある程度自由にできるんだけど、ブラウザではそうもいかない。たとえばフォーマットを指定することができない。 Chrome なら Chrome からコピーしましたよという情報で固定される。Chrome から不正なデータをクリップボードにコピーして意図しないアプリケーションにペーストできないようにとかそういうセキュリティ上の理由だと思う。RPGツクールMVは当然RPGツクールMVからコピーされたデータしか受け付けない。EverettはRPGツクールMVと同じデータですよと言い張ってるのでコピーできる。

フォーラムなどで、テキストとしてコピーでエクスポートされたデータを、逆にツクールのデータに戻したいことがあったりするかもしれない。ウディタはコモンイベントをプラグインっぽく配布してやりとりできる。ツクールではこれはできない。できたほうが便利だと思ってるんだけど、なかなかそうもいかない。

ツクールのイベントデータをテキストとしてコピーしたものは、決まった書式があるので、パーサを書けば JSON に変換できそうに見える。

試しにやってみようと思って、全イベントコマンドのテキストのサンプルを集めようとしてみたんだけど……

変数の操作の時点でで無理ということがわかった。百聞は一見にしかず。

変数の操作:#0001 一時変数 = ポーションの数
変数の操作:#0001 一時変数 = 剣の数
変数の操作:#0001 一時変数 = 盾の数
変数の操作:#0001 一時変数 = ハロルドのレベル

アイテム名からアイテム番号を取得するのはデータベースを見ればいいのでともかくとして、剣という名前のアイテムが複数あったとき、どのアイテムにマッチさせるのがいいのか。剣という名前の防具やふつうのアイテムの可能性だってあるわけだ。 アクターとエネミーにも同じことが言えて、アクターとエネミーで同じ名前のキャラがいるとどっちなのかわからなくなる。アクター内で同じ名前のときも、まず困る。 アクターに関しては名前の変更コマンドが使えるので、データベース上では一意な名前をつけておいて、ゲーム開始時に名前を変えるということをすればなんとかなるかもしれない。でもそれはそのように対策をしているデータでのみ、正確にパースできるという話になる。

これは断念するしかないかなあ。

まあそもそもフォーラムにアップされたテキストデータだけからは絶対に変換できない、最低限データベースも一緒に必要、っていうことになるので、そこでも現実的ではないんだけど。

ローカルで動くアプリだったら、別にテキストでコピーじゃなくて普通に JSON でやりとりすればいいので、今回はボツということで。