ページ 11

【解決済み】【RPGツクールMV】【スクリプト】戦闘開始時のエラー

Posted: 2017年12月17日(日) 16:43
by crescent
crescentと申します。

現在、戦闘開始時で恐らくスクリプトのエラーが出ていまして、
問題解決に試行錯誤していますが、解決できていませんのでご助力ください。

現象:ゲーム中の最初のバトルに突入した時下記エラーが出る。
「Type Error Cannot read property 'width' of undefined」

初動:各プラグインをOFFにしていき、「Battle Motion」をOFFにしたときに問題が解消。
※実は「Battle Motion」は最近バージョンが上がり、YanFlyとの競合解決をしたとのことで、
 本バージョンに切り替えた。前バージョンでは上記エラーはなかったが、
 別の場面で所望の動作が不可能だった。
 このプラグインが原因の一つ?

試したこと:
・プラグインの順序変更→修正されず
・js内を確認→ある程度830行目があやしいと推察
・前バージョンのBattle Motion.jsと比較→やはり830行目に変更があるが・・(添付参照)
・戦闘テスト上では正常に動作

製作環境:
OS:Windows 10 / 1703 / 15063.786
開発:RPGツクールMV ver1.5.1

導入プラグイン概要(関係がありそうなののみ)
 ・yanfly系
 ・BattleMotion @ Lib様
 ・MoveAnime2 @ trb様

F8のコンソール画面と、前バージョンとのjs内の比較画像を添付します。

何かわかりましたら、小さなことでも問題ありませんので
返信いただきたく、宜しくお願いいたします。

私も他のシチェーションでシミュレーションしてみます。

Re: 【RPGツクールMV】【スクリプト】戦闘開始時のエラー

Posted: 2017年12月17日(日) 17:06
by しぐれん
yep_x_animatedsvenemiesのバグですね。
配布元サイトから探そうとしましたが、見つからなかったので対応が難しいです。

updateSVFrameという名前の関数が重複してしまって問題を起こしていると思います。
異なるプラグインで同姓同名の違う関数を呼び合っている可能性があります。
こういう場合、関数名の後ろに何らかの文字列を追加して別の関数にする方法が考えられます。
updateSVFrame_yepXとかupdateSVFrame_BM2とか。
その場しのぎの対応ですが、考えられるのはこれぐらいです。
Ctrl+Hで一括置換が確実ですが、念のためにプラグインのバックアップを取ってから改造することをお勧めします。

undefinedでぬるぽしていますが、おそらく引数で発生していると思われます。

Re: 【RPGツクールMV】【スクリプト】戦闘開始時のエラー

Posted: 2017年12月17日(日) 19:47
by crescent
>>しぐれん様


早速の回答、有難う御座います。

記載いただいた内容を試してみまして、エラーは出なくなったのですが、
今度は正常動作がしなくなり・・・、

おそらく連携のために同名の関数にしてると思うのですが、
逆に崩すことで連携が解除されてしまうため、動作がおかしくなってしまうような?
(js未学習者の独断と偏見です)

他の箇所も色々いじってみましたが解決されず、といったところです。
取り敢えずは、プラグインを使わない方向で対策していますが、
まだ原因は探っています。

取り敢えず分かったことは、
 ・アニメ敵じゃないとエラーが出る(今回のエラー)
 ・アニメ敵にするとエラーは起きない、正常に動く
 ・さきほどの対処を行うと、エラーは起きないがアニメ敵が正常に動かない
といったところです。

アニメ敵はスプライト画像(png)ファイルを設定されたエネミーになります。
通常の敵は1枚絵なのでエラーが出ているような気がします。

ここはもう仕様な気もしてきました。

Re: 【RPGツクールMV】【スクリプト】戦闘開始時のエラー

Posted: 2017年12月17日(日) 22:14
by 剣崎 宗二
横から失礼します。

しぐれんさんの記載内容を試したという事をは、恐らくupdateSVFrameの名前を変更した物と考えますが…
関数名を変更したそのプラグインの中の、他の「updateSVFrame」も同じように書き換えましたでしょうか?

1か所だけを変更するとその関数を呼び出している各所が別プラグインのupdateSVFrameを呼ぶようになってしまうので…それはそれでおかしくなります。
なので『名前を変更したプラグイン内』の他のupdateSVFrameも同じように書き換えてみてください…

Re: 【RPGツクールMV】【スクリプト】戦闘開始時のエラー

Posted: 2017年12月19日(火) 01:29
by crescent
>>剣崎 宗二様

コメント有難うございます!

はい、確かに他の箇所の名前も変えました。
と言っても2箇所しかなかったんですけどね。


UpdateFrameも同様に変更してみましたが、
やはりダメでしたので・・

もうちょい調べてみまっす!

Re: 【RPGツクールMV】【スクリプト】戦闘開始時のエラー

Posted: 2017年12月19日(火) 18:43
by まっつUP
crescent様
このトピックにかいてある問題は解決済みであることは確認できていますか?
viewtopic.php?f=23&t=2927&p=9547&hilit=BattleMotion#p9547

Re: 【RPGツクールMV】【スクリプト】戦闘開始時のエラー

Posted: 2017年12月19日(火) 23:38
by crescent
>>まっつUP様

回答ありがとうございます!

該当のトピック、初めて知りました。
検索が甘かったですね・・・。

ただ、該当の箇所はすでにコメントアウト状態でございました。

恐らく作者様も気づかれたというところでしょうか?

何故か一応残っていましたが・・・。

Re: 【RPGツクールMV】【スクリプト】戦闘開始時のエラー

Posted: 2017年12月19日(火) 23:54
by crescent
>>しぐれん様、剣崎 宗二様、まっつUP様

crescentです。

皆様、様々なご意見有難うございました。

上記の問題ですが、解決しました。

結論からいうと、推測ですが、アニメじゃない敵がアニメの敵と同様に処理されていたようで、
その過程でエラーが起きていたようです。

作者様にも仕様を伺い、アニメじゃない敵の条件処理を加えることで修正したと思われます。

BattleMotion.js
437行目に下記を追加。
if (!bitmap) return;

現在、最新版がLib様のホームページからダウンロード可能となっています。

ご意見をくださった皆様、Lib様に大変感謝いたします。

貴重なお時間を有難うございました!


crescent