2016年6月25日土曜日

テンプレートイベントプラグイン

 RPGツクールMVで使用可能な自作プラグイン「テンプレートイベントプラグイン」の紹介です。


プラグインの説明

 汎用的に使用するイベントをテンプレート化できます。テンプレート用のイベントは、専用に用意したマップに定義してください。実際のイベントのメモ欄に所定の記述をするだけで、テンプレートイベントと動的に置き換えることができます。

スクリーンショット

 実際のイベントの記述例です。

 テンプレートイベントの記述例です。

 宝箱や場所移動イベント等、汎用的なイベントかつ、一部だけ固有の処理をしたい場合に有効なプラグインです。外観や共通部分のイベント処理をテンプレートイベントに記述し、アイテム入手や場所移動先指定など固有部分だけを元のイベントに記述します。

 さらに、任意のマップイベントの指定したページをコモンイベントのように呼び出す機能も提供します。イベントIDおよびイベント名で呼び出すイベントを指定可能です。

ダウンロード

プラグインファイルはGithubで公開しています。

ダウンロード(Download)

利用規約

当プラグインはMITライセンスのもとで公開されています。作者に無断で改変、再配布が可能で、利用形態(商用、18禁利用等)についても制限はありません。このプラグインはもうあなたのものです。

http://opensource.org/licenses/mit-license.php

更新履歴

  • 2016/06/28 固有イベントのページ数がテンプレートイベントのページ数より少ない場合に発生するエラーを修正
  • 2016/06/25 初版

9 件のコメント:

  1. 質問失礼します。
    当方はアツマールの容量の投稿制限を回避するため、
    CommonEvents.jsonのサイズを縮小しようと思っております。

    そこでこのテンプレートプラグインを使って、
    CommonEvents.jsonの縮小が可能かもしれないと思ったのですが、
    他マップのイベントページをコモンイベントの代わりに
    呼び出すような使い方はできるでしょうか?

    返信削除
    返信
    1. こんにちは。
      テンプレート用に作成した特定のマップに対してのみ、他マップのイベントを呼び出すことが可能です。

      削除
  2. こんにちは。
    いつもトリアコンタン様のプラグインのお世話になっております、ありがとうございます。
    消すまでマップに残り続ける動的イベント(場所移動やエディタから新規イベントを追加しても消えない)が必要になり、海外の作者様のプラグインOrangeCustomEvents.jsを導入しましたら、TemplateEvent.jsと競合してエラーがでてしまいました。

    Uncaught TypeError:Cannot read property 'meta' of null

    動的に作成したイベントにmeta情報がなくてエラーがでるのかなと思うのですが、meta情報がない場合は処理を飛ばす仕様をTemplateEvent.jsに取り入れていただくことはできますでしょうか?
    お忙しいなか申し訳ありませんがご検討いただければ幸いです。
    どうぞよろしくお願いいたします。

    返信削除
    返信
    1. こんにちは!
      プラグインのご利用ありがとうございます!
      とりあえず回避するコードを追記してみました。記事のURLより再ダウンロードをお願いします。
      これでエラーが回避できるかどうか一度お試しください。

      イベント生成系のプラグインで発生する可能性のある競合を解消(ver1.0.2)

      削除
  3. トリアコンタン様、お時間を割いていただきありがとうございます。
    テストしてみますと次なるエラーが出てしまいました。

    Uncaught TypeError:Cannot read property 'pages' of null(357行目)

    問題となる動的イベントについて初心者ながら調べて、$gameMap.eventsでは「Game_Event」ではなく「Game_Custom_Event」であること、$dataMap.eventsではnullであること、テストプレイでは「$gameMap.event(eventId)._eventData.pages」でpagesを取得できることは突き止めました。
    ただ下記のように書き換えても上記のエラーが出て、テストプレイでは取得できてたのになぜなのかまだ理解が追いつきません。

    if($dataMap.events[this._eventId] === null) { return $gameMap.event(this._eventId - 1)._eventData.pages; }
    else { return $dataMap.events[this._eventId].pages; }

    自力で解決できず申し訳ありません。
    お時間かかるようでしたら、後は自力で頑張ってみますのでこの件はどうかお捨て置きくださればと思います。
    よろしくお願いいたします。

    返信削除
    返信
    1. 何箇所も変更してエラーは消せましたが、今度はメモにを書いたイベントのグラフィックが表示されなくなってしまいました。
      残念ですが該当プラグインの併用は断念致します。お忙しいなかご迷惑をおかけして申し訳ありませんでした。

      削除
  4. トリアコンタン様、いつもありがとうございます。
    ツクール神として君臨し続けるトリアコンタン様にまたお手間をとらすのは忍びないのですが、
    どうしてもプログラム的に自力でなんとかするには難しいと判断した為、お願いに参りました。
    スクリプトの勉強をしており簡単な改変は無い知識でなんとかしますが(上手くいかないことが殆どですが)
    トリアコンタン様がプログラムをアップデートすればそれは全て無駄なこととなってしまいます。
    ですのでお願いせずにいられませんでした。ホントは自分にもう少し知識があればと思うのですが…

    本題に入りますが現在「爆ダンジョン」というものを制作してましてyoutubeにアップしました。
    https://www.youtube.com/watch?v=m3cEbgan6Qo&feature=youtu.be
    これをみるとわかるのですが動的発生プラグインにより爆弾は「TE固有イベント呼び出し」により
    初め時間をずらしながら順番に爆発するのですがあくまで初めだけであとは
    個別にウェイトをずらしながら挿入したのを受けてずれていきます。
    これは毎回固有イベントが実行されることによるズレでこれがもし初回のみになればこのようなズレはなくなります。
    ですのでお願いしたいことはイベントのプラグインコマンドに初回のみのコマンドができたら嬉しいと思う次第です。
    残念ながらやはりプログラム上の改修は必要不可欠で自分にはどうしようもなくこのようなお願いに至りました。
    お忙しいところ少しの時間でも頂戴して申し訳なく思いますが願わくばどうかプログラムの改修を願えませんでしょうか。
    最近トリアコンタン様に向かってあまり考えず気軽に依頼していたように思います。
    それは本当に申し訳ございませんでした。今後考えを改めたいと思います。
    自分でも他の方法がないか度々チェックします。今回ばかりはすみませんでした。

    返信削除
    返信
    1. すみません、なんとか自力でスイッチをオンにして目的を達成することができました。
      しかしながらセルフスイッチではできなく通常のスイッチを使うことになりイベント数が
      増えれば増えるほどその分の数スイッチが必要になりますので効率の面からもできましたら
      上記のような1度しか実行しないコマンドがあれば嬉しく思います。
      やはりトリアコンタン様のプラグインは非常に使いやすく今後も活用していきます。
      ツクールの活用の幅がかなり増えました。プラグインナシでは考えられません。ありがとうございました。

      削除
    2. こんばんは!(休日はあまりブログを確認しないので返信が遅くなってすみません)
      おそらく方向性さえ分かれば、それほど機能追加は難しくないと思いますが、
      「一度しか実行しない」という仕様のイメージの共有がちょっと難しいです。

      現在のイベント内容が分かるキャプチャ等を用意して頂くことは可能でしょうか?
      ブログだと画像のアップロードができないので、どこかにあげていただくか、あるいは以下の非公式フォーラムのご利用もご検討ください。
      http://tm.lucky-duet.com/

      また、ご要望については今後もお気軽に行って頂いて全然OKですー!
      こちらもムリせず、マイペースで対応していく予定ですので。。

      削除