【解決】マンカインド様のMKR_MapItemSlot.jsプラグインについて_'setobject'of undefined

てるてる坊主
記事: 22
登録日時: 2018年10月09日(火) 19:01

【解決】マンカインド様のMKR_MapItemSlot.jsプラグインについて_'setobject'of undefined

投稿記事by てるてる坊主 » 2019年11月12日(火) 23:39

お世話になります。

今回マンカインド様のMKR_MapItemSlot.js使用時にエラーが発生したため、
解決方法をお聞きしたいと思います。

スロットに登録した武器を、アイテムに入れ替えてメニューを抜け出すと、
'setobject'of undefined というエラーが発生し、ゲームが止まってしまいました。

スロットから装備をアイテムに置き換えてから、メニューから装備欄を確認すると、
スロットから外したばかりの装備が装備されたままになっており、外すこともできない状態になっていました。

尚、登録時点ではエラーは発生せず、メニュー画面においても自由に操作可能です。
メニューを抜けて通常のマップ画面に戻るボタンを押した瞬間にエラーとなりました。

添付ファイルには、当エラー画面を添付しておきます。
追記:FTKR_ExEquipSlotがエラー画面に表示されていますが、これを外してもエラーが出ました
添付ファイル
エラー.png
最後に編集したユーザー てるてる坊主 on 2019年11月14日(木) 12:55 [ 編集 1 回目 ]

ecf5DTTzl6h6lJj02
記事: 456
登録日時: 2018年12月23日(日) 13:55

Re: マンカインド様のMKR_MapItemSlot.jsプラグインについて_'setobject'of undefined

投稿記事by ecf5DTTzl6h6lJj02 » 2019年11月13日(水) 14:02

こんにちは。

https://tm.lucky-duet.com/viewtopic.php?f=23&t=8383
このトピックの内容と少し関係があるのですが、
アクターが装備しているアイテムが登録されている、アイテムスロットに対し、
登録をアイテムに入れ替えた時に、アクターの装備がはずされないため、
マップに戻ってからのアイテムスロットの処理で、
アクターに該当の(装備アイテムがあった)アイテムスロットに登録されているアイテムを装備させようとし、
装備品ではないために、装備部位の取得ができず(undefinedが返ってくる)、
エラーとなってしまうようです。
(ちょっと分かりにくい文章になっていますが、ごめんなさい)

製作者であるマンカインドさまに連絡して、きちんと修正を行ってもらったほうが良いと思いますが、
一応、エラー回避対策として。

MKR_MapItemSlot.jsの1514行目あたりから SetItemSlot という関数が始まっているのですが、
その関数内、1537行目あたりに
if (item && index >= 0 && index < Params.SlotNumber[0]) {
という記述があるのでその下に次のコードを挿入してください。
(ファイルの変更を行う前に、MKR_MapItemSlot.jsのバックアップを取っておいてください)

コード: 全て選択

            //【マップ画面に戻った時のエラー回避用】
            //登録変更するスロットのアイテムをアクターが装備していた場合、アクターの装備を解除する
            //----------------------↓ここから↓----------------------------------
             let lastItem = null;
             if(Params.SlotSetW[0] && this.getItemSlot(index) != null && this.getItemSlotType(index + 1) == "weapon"){
               lastItem = $dataWeapons[this.getItemSlotId(index + 1)];
            }
            else if(Params.SlotSetA[0] && this.getItemSlot(index) != null && this.getItemSlotType(index + 1) == "armor"){
               lastItem = $dataArmors[this.getItemSlotID(index + 1)];
            }
            if(lastItem && actor.isEquipped(lastItem)){
               actor.changeEquipById(lastItem.etypeId, 0);
            }
            //----------------------↑ここまで↑----------------------------------

簡易的なテストしかしていない(自環境で正しく動いてるように見えるまでのチェックしかしていない)ので、不具合がでたらごめんなさい。
てるてる坊主
記事: 22
登録日時: 2018年10月09日(火) 19:01

Re: マンカインド様のMKR_MapItemSlot.jsプラグインについて_'setobject'of undefined

投稿記事by てるてる坊主 » 2019年11月13日(水) 20:13

エラーなく無事にアイテムスロットが変更できました!
私の環境でも問題なく動作します。

マンカインド様への連絡は……良く分からないのでとりあえず待ってみます。

速やかな対応による修正に感謝します。
有難うございました。

“MV:質問” へ戻る