ページ 11

【解決済】EST_Build_And_Decor_EXプラグインについて

Posted: 2018年10月14日(日) 15:35
by Sekkyonist
いつもお世話になっております。
EST_Build_And_Decor_EXプラグインを使って家具を配置した後、
家具に向かってボタンを押すとシステムエラーになってしまいます。
ボタンを押す時に下記のようなコモンイベントを走らせており、
ノートタグを取得しているのですが、その際にCannot read property 'note' of nullエラーが出ます。

コード: 全て選択

var targetID = $gameVariables.value(13);
if(targetID != 0 && ~$dataMap.events[targetID].note.indexOf("[対象者]")){
 var mapID = this._mapId;
 if(!$gameSelfSwitches.value([mapID, targetID, "B"])){
  $gameSelfSwitches.setValue([mapID, targetID, "A"], true);
 }
}

テンプレートに家具イベントを配置し、そこからイベントをコピーしてくるタイプのプラグインなので、
家具のイベントに対してノート欄および名前欄に[対象者以外]のタグを記入してみましたが、
それでもエラーが発生します。どうすればエラーを解消できるか、お知恵を貸していただけると助かります。
よろしくお願いいたします。

Re: EST_Build_And_Decor_EXプラグインについて

Posted: 2018年10月14日(日) 19:15
by tubo
まず変数に何が入っていて何のイベントを参照したいのかがわからないので、正確な解決方法は提示できないです。
エラー内容はnoteが見つからないという意味なので、変数かイベント取得方法が間違っています。
現在マップのイベントのデータを取得するのであれば、$gameMap.event(targetID).event()で取得できます。
$dataMapはエディタで設定した現在マップの情報が入っているので、テンプレートマップの情報は取得できません。

Re: EST_Build_And_Decor_EXプラグインについて

Posted: 2018年10月14日(日) 23:15
by Sekkyonist
ご返事ありがとうございます。
スクリプトの最初に以下の一文が抜けていました。

コード: 全て選択

◆指定位置の情報取得:対象者ID, イベントID, ({攻撃X},{攻撃Y})

変数番号13番が『対象者ID』をあらわします。
スクリプトの内容としては、自分の一つ左・左上・前・右上・右の順番で{攻撃X},{攻撃Y}に座標を代入してイベントがあるかどうかを判断し、ある場合はそのイベントのnoteに[対象者]の記述があるかどうかを判断してスイッチを切り替えるというものでした。
取り急ぎ、アドバイスを参照して下記のように書き換えたところ、エラーが出なくなりました。
ありがとうございます!

コード: 全て選択

◆指定位置の情報取得:対象者ID, イベントID, ({攻撃X},{攻撃Y})
var targetID = $gameVariables.value(13);
if(targetID != 0 && ~$gameMap.event(targetID).event().note.indexOf("[対象者]")){
 var mapID = this._mapId;
 if(!$gameSelfSwitches.value([mapID, targetID, "B"])){
  $gameSelfSwitches.setValue([mapID, targetID, "A"], true);
 }
}