ロートル元ゲーム開発者がツクールでゲームを作る|EST_Build_and_Decor_EXというプラグインについて

ツクールMVでどうぶつの森的なゲームを作るのに必須なプラグインがEST_Build_and_Decor_EXです。これは文字通り家具や建物の配置を可能にしてくれるプラグインなのですが、残念なことに作者が開発の継続を諸事情でリタイアしてしまいました。その後も唯一無二というか、同種の機能を持つプラグインは出ていないので、なんとか自力でプラグインの競合を回避して設置しなければなりません。というわけで、覚え書きをいくつか。

まず、EST_Build_and_Decor_EX.jsの下記のコードを書き換える必要があります。

$.Window_EventItem_includes = Window_EventItem.prototype.includes;
Window_EventItem.prototype.includes = function(item) {
    if($gameParty._decorType && item && $gameSystem.getDecorType(item)){
       return $gameParty._decorType.some(function(t){
           if(t.toUpperCase() == $gameSystem.getDecorType(item).toUpperCase()) {
               return true;
           }
        return false;
       });
    }
    return $.Window_EventItem_includes(this,item);
};

の一番下の部分を

return $.Window_EventItem_includes.call(this,item);

にします。
次に本体ではなく必須プラグインであるEST_Clone_Transform_Delete_Event.jsの240行目あたりのコードを書き換えます。

var eventData = JsonEx.makeDeepCopy(event);
 callback.call(this, eventData);

var eventData = JsonEx.makeDeepCopy(event);
 DataManager.extractMetadata(eventData);
 callback.call(this, eventData);

に。さらに同プラグインの277行目あたりのコードを書き換えます。

var eventData = JsonEx.makeDeepCopy(event);
 callback.call(this, eventData);

var eventData = JsonEx.makeDeepCopy(event);
  DataManager.extractMetadata(eventData);
  callback.call(this, eventData);

に書き換えます。これでようやく他のプラグインとの競合がなくなります。

さらに、自分の場合はアクションゲームの為、敵やそれ以外を検知する為に使っていたコモンイベントとも競合が発生してしまいましたので、そこを修正する必要が出てきてしまいました。該当コモンイベントの下記のスクリプトを書き換えます。

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

これを

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);
 }
}

上記のように書き換えます。敵だけでなくそれ以外やムシなんかを感知するスクリプトも同様に。これでようやく何の競合も発生せずにEST_Build_and_Decor_EXを使うことができるようになりました。今後、同プラグインを使いたいという人は参考にしてみてください。

#ゲーム #雑記 #開発 #JavaScript #RPGツクール #RPGツクールMV #プラグイン #EST_Build_and_Decor_EX

コーヒー代でも投げてくれると、作者が喜びます。