【解決】VE Element Set でエラー

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

【解決】VE Element Set でエラー

投稿記事by ムノクラ » 2020年5月14日(木) 18:56

VE Element Set でエラーが出てしまいます。
https://victorenginescripts.wordpress.c ... ement-set/

コード: 全て選択

rpg_managers.js:1949 TypeError: action.item is not a function
    at Object.VictorEngine.getAllElements (VE_BasicModule.js:443)
    at Object.VictorEngine.getAllElements (VE_ElementSet.js:158)
    at Game_Action.calcElementRate (VE_ElementSet.js:187)
    at Game_Action.makeDamageValue (rpg_objects.js:1671)
    at Game_Action.apply (rpg_objects.js:1658)
    at Function.BattleManager.invokeNormalAction (rpg_managers.js:2549)
    at Function.BattleManager.invokeAction (rpg_managers.js:2540)
    at Function.BattleManager.updateAction (rpg_managers.js:2522)
    at Function.BattleManager.update (rpg_managers.js:2253)
    at Scene_Battle.updateBattleProcess (rpg_scenes.js:2265)


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

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

を入れました。

デフォルト設定のまま、戦闘を行ったら上記エラーが出ました。
バトラーが攻撃した時点でエラーが出るので、属性計算を失敗しているような気がします。

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

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

Re: VE Element Set でエラー

投稿記事by Plasma Dark » 2020年5月14日(木) 21:21

VE_BasicModule.js と VE_ElementSet.js で VictorEngine.getAllElements の引数の型が違いますね。

BasicModule が期待する通り、 Game_Action 型を渡してあげるのが一番マシなやり方かなと思います。

コード: 全て選択

    VictorEngine.ElementSet.getAllElements = VictorEngine.getAllElements;
-    VictorEngine.getAllElements = function(subject, item) {
-        var result = VictorEngine.ElementSet.getAllElements.call(this, subject, item);
-        return result.concat(item.elementSet);
-    };
+    VictorEngine.getAllElements = function(subject, action) {
+        var result = VictorEngine.ElementSet.getAllElements.call(this, subject, action);
+        return result.concat(action.item().elementSet);
+    };
...
    VictorEngine.ElementSet.calcElementRate = Game_Action.prototype.calcElementRate;
    Game_Action.prototype.calcElementRate = function(target) {
-        elements = VictorEngine.getAllElements(this.subject(), this.item())
+        elements = VictorEngine.getAllElements(this.subject(), this);
        if (elements.length > 1) {
            return this.elementsMaxRate(target, elements);
        } else {
            return VictorEngine.ElementSet.calcElementRate.call(this, target);
        }
    };
アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

Re: VE Element Set でエラー

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

Plasma Dark さんが書きました:VE_BasicModule.js と VE_ElementSet.js で VictorEngine.getAllElements の引数の型が違いますね。

BasicModule が期待する通り、 Game_Action 型を渡してあげるのが一番マシなやり方かなと思います。

コード: 全て選択

    VictorEngine.ElementSet.getAllElements = VictorEngine.getAllElements;
-    VictorEngine.getAllElements = function(subject, item) {
-        var result = VictorEngine.ElementSet.getAllElements.call(this, subject, item);
-        return result.concat(item.elementSet);
-    };
+    VictorEngine.getAllElements = function(subject, action) {
+        var result = VictorEngine.ElementSet.getAllElements.call(this, subject, action);
+        return result.concat(action.item().elementSet);
+    };
...
    VictorEngine.ElementSet.calcElementRate = Game_Action.prototype.calcElementRate;
    Game_Action.prototype.calcElementRate = function(target) {
-        elements = VictorEngine.getAllElements(this.subject(), this.item())
+        elements = VictorEngine.getAllElements(this.subject(), this);
        if (elements.length > 1) {
            return this.elementsMaxRate(target, elements);
        } else {
            return VictorEngine.ElementSet.calcElementRate.call(this, target);
        }
    };


ありがとうございます。
エラー無く動作させることが出来ました。

しかし、動作テストすると、プラグインパラメータ Element Multiplier を変更しても計算方法がデフォルトのままのように感じます。
デフォルトは「multiply」と同じですよね?
変更しても、ダメージの結果が変わらないので、働いていないのでしょうか?

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

Re: VE Element Set でエラー

投稿記事by Plasma Dark » 2020年5月15日(金) 12:36

デフォルトは「multiply」と同じですよね?


いいえ。デフォルトは highest です。
RPGツクールMVのダメージ計算式では、攻撃属性の中で最も有効な属性を計算に用います。

ちなみに、multiplyとadditionだけであればわたしの DarkPlasma_MultiElementRate.js でも代用が可能です。

https://github.com/elleonard/RPGtkoolMV-Plugins/blob/master/plugins/DarkPlasma_MultiElementRate.js

スキルに属性を複数付与する と 属性ダメージ計算の方式を変更する は一緒に用いたい気持ちはとてもよくわかりますが、機能としては別なので、私個人の意見では分割されていてほしいですね。
アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

Re: VE Element Set でエラー

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

Plasma Dark さんが書きました:
デフォルトは「multiply」と同じですよね?


いいえ。デフォルトは highest です。
RPGツクールMVのダメージ計算式では、攻撃属性の中で最も有効な属性を計算に用います。

ちなみに、multiplyとadditionだけであればわたしの DarkPlasma_MultiElementRate.js でも代用が可能です。

https://github.com/elleonard/RPGtkoolMV-Plugins/blob/master/plugins/DarkPlasma_MultiElementRate.js

スキルに属性を複数付与する と 属性ダメージ計算の方式を変更する は一緒に用いたい気持ちはとてもよくわかりますが、機能としては別なので、私個人の意見では分割されていてほしいですね。


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

“MV:質問” へ戻る