【解決】VE Action States でエラー

アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

【解決】VE Action States でエラー

投稿記事by ムノクラ » 2020年5月16日(土) 12:25

viewtopic.php?t=9378
と、状況的には同じです。

VE Action States でエラーが出てしまいます。
https://victorenginescripts.wordpress.c ... on-states/

コード: 全て選択

rpg_managers.js:1949 TypeError: action.item is not a function
    at Object.VictorEngine.getAllElements (VE_BasicModule.js:443)
    at Game_Action.getActionStatesData (VE_ActionStates.js:350)
    at VE_ActionStates.js:331
    at Array.reduce (<anonymous>)
    at Game_Action.getActionStatesValues (VE_ActionStates.js:330)
    at Game_Action.applyActionSatesEffect (VE_ActionStates.js:281)
    at Game_Action.executeDamage (VE_ActionStates.js:277)
    at Game_Action.apply (rpg_objects.js:1659)
    at Function.BattleManager.invokeNormalAction (rpg_managers.js:2549)
    at Function.BattleManager.invokeAction (rpg_managers.js:2540)


動作環境
新規プロジェクト コア1.6.2

前提プラグイン
VE Basic Module
https://victorenginescripts.wordpress.c ... ic-module/

を入れました。

デフォルト設定のまま、戦闘を行ったら上記エラーが出ました。
プラグインの指定するタグを入れていない状態でも、バトラーが攻撃した時点でエラーが出ます。

プラグインの修正点をご指導いただきたく、お願いいたします。
最後に編集したユーザー ムノクラ on 2020年5月17日(日) 09:43 [ 編集 1 回目 ]

---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
アバター
Plasma Dark
記事: 669
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: VE Action States でエラー

投稿記事by Plasma Dark » 2020年5月16日(土) 15:40

ElemetSetのケースと全く同じ原因です。Game_Action型を渡すべきところ、actionが持つアイテム(スキル)データを渡してしまっています。

気になったので調べてみました。

まず、ActionStrengthen のページの書き込みに解決方法が記されています。

https://victorenginescripts.wordpress.com/rpg-maker-mv/action-strengthen/#comment-1648

I’m having two issues with this plugin.
1) It crashes when I try to use a skill. I actually figured out why this happened to me.

I had to change this line:
var elmtnValue = VictorEngine.getAllElements(subject, this).reduce(function(r, elementId) {

into:
var elmtnValue = VictorEngine.getAllElements(subject, item).reduce(function(r, elementId) {

And everything worked.


海外のフォーラムでも ActionStates で同様の問題に直面し、解決したポストがあるようです。

https://forums.rpgmakerweb.com/index.php?threads/ve_basicmodule-action-item-is-not-a-function.112476/

そして、アツマールの2017年6月版の利用プラグイン一覧に、 VE_BasicModule.js と VE_ActionStrengthen.js が含まれています。

https://ch.nicovideo.jp/indies-game/blomaga/ar1291466

アツマールの利用プラグイン一覧の中に書かれている VE_BasicModule.js のバージョンは1.22で、 VE_ActionStrengthen.js は1.05です。
ActionStrengthen は1.05が最新ですが、 BasicModule は1.23が最新で、2017年5月に公開されています。

v 1.23 - 2017.05.25 > Added functions for damage formula.


これは推測ですが、この更新で BasicModule の getAllElements メソッドに破壊的な変更が行われ、その他のプラグインが動作しなくなったのではないでしょうか。
アバター
Plasma Dark
記事: 669
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: VE Action States でエラー

投稿記事by Plasma Dark » 2020年5月16日(土) 15:44

BasicModule 等のベースプラグインを入れさせるような手法の問題点はここにあります。
メソッドの破壊的変更を行う際に、その他のプラグインをすべて対応させる必要がありますが、その対応が行き届かないことは往々にしてあります。

YEPプラグインが当たり前のようにやっているからか、それに追従するようにこういった形式を採ってしまう人もいますが、考えなしに採用すべき方式ではないですね。
アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

Re: VE Action States でエラー

投稿記事by ムノクラ » 2020年5月17日(日) 09:42

Plasma Dark さんが書きました:ElemetSetのケースと全く同じ原因です。Game_Action型を渡すべきところ、actionが持つアイテム(スキル)データを渡してしまっています。

気になったので調べてみました。

まず、ActionStrengthen のページの書き込みに解決方法が記されています。

https://victorenginescripts.wordpress.com/rpg-maker-mv/action-strengthen/#comment-1648

I’m having two issues with this plugin.
1) It crashes when I try to use a skill. I actually figured out why this happened to me.

I had to change this line:
var elmtnValue = VictorEngine.getAllElements(subject, this).reduce(function(r, elementId) {

into:
var elmtnValue = VictorEngine.getAllElements(subject, item).reduce(function(r, elementId) {

And everything worked.


海外のフォーラムでも ActionStates で同様の問題に直面し、解決したポストがあるようです。

https://forums.rpgmakerweb.com/index.php?threads/ve_basicmodule-action-item-is-not-a-function.112476/

そして、アツマールの2017年6月版の利用プラグイン一覧に、 VE_BasicModule.js と VE_ActionStrengthen.js が含まれています。

https://ch.nicovideo.jp/indies-game/blomaga/ar1291466

アツマールの利用プラグイン一覧の中に書かれている VE_BasicModule.js のバージョンは1.22で、 VE_ActionStrengthen.js は1.05です。
ActionStrengthen は1.05が最新ですが、 BasicModule は1.23が最新で、2017年5月に公開されています。

v 1.23 - 2017.05.25 > Added functions for damage formula.


これは推測ですが、この更新で BasicModule の getAllElements メソッドに破壊的な変更が行われ、その他のプラグインが動作しなくなったのではないでしょうか。


ご返信いただき、ありがとうございます。

両方を読み比べて、最新のコメント(フォーラムも同じ事を書いてますが)を見て、理解しました。
https://victorenginescripts.wordpress.c ... mment-1648
Ooops, my fix is the other way around. The original line in the script was~

var elmtnValue = VictorEngine.getAllElements(subject, item).reduce(function(r, elementId) {

I fixed the first issue by changing that into

var elmtnValue = VictorEngine.getAllElements(subject, this).reduce(function(r, elementId) {


353行目
var elmtnValue = VictorEngine.getAllElements(subject, item).reduce(function(r, elementId) {

var elmtnValue = VictorEngine.getAllElements(subject, this).reduce(function(r, elementId) {
に書き換えたところ、エラーが出なくなりました。
(詳細動作は未確認)

今後、エラー・不具合は似た箇所を調べて、挑戦してから質問するようにいたします。

ありがとうございました。
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。

“MV:質問” へ戻る