(解決済み)属性毎にMP消費率を変える方法を知りたいです。

名無し蛙
記事: 305
登録日時: 2015年11月23日(月) 02:46

Re: 属性毎にMP消費率を変える方法を知りたいです。

投稿記事by 名無し蛙 » 2021年12月29日(水) 19:16

あきまり さんが書きました:と書くとゲームが起動せずエラーが起きてしまいます。

あれっマジっすか。
単品起動が出来るのは勿論の事、競合する可能性も低いと踏んだんですが。
エラー文章見る限り特徴配列が存在しないメモ欄に<属性MP消費率:5, 200%>を書いたって事に…ってそうか :idea:
すみません。誤解を与える説明をしていたと思うので補足します。
名無し蛙 さんが書きました:オブジェクト(職業、武器、防具、ステート、パッシブスキル等)のメモ欄に以下のタグ付けを行う

ここでいうパッシブスキルとは既存のパッシブスキルプラグインとの併用を想定した発言であり
スキルのメモ欄に直接タグ付けしてもパッシブスキル化する訳ではありません。
自分のプラグインはあくまでも新しい特徴効果を付与するものに過ぎません。

なぴぃ氏のプラグインで今回の件は十分だと思うんですけど
せっかくなのでついでにパッシブスキルプラグインも投下しておきます。
これと併用すれば間接的にパッシブスキルとして運用可能だと思います。

①以下のプラグインをコピって以下略

コード: 全て選択

(() => {
    'use strict'

    const _Game_Actor_initSkills = Game_Actor.prototype.initSkills;
    Game_Actor.prototype.initSkills = function() {
        this._passiveSkills = [];
        _Game_Actor_initSkills.apply(this, arguments);
    };

    const _Game_Actor_learnSkill = Game_Actor.prototype.learnSkill;
    Game_Actor.prototype.learnSkill = function(skillId) {
        _Game_Actor_learnSkill.apply(this, arguments);
        if ($dataSkills[skillId].meta["パッシブ"] && !this._passiveSkills.includes(skillId)) {
            this._passiveSkills.push(skillId);
        }
    };

    const _Game_Actor_forgetSkill = Game_Actor.prototype.forgetSkill;
    Game_Actor.prototype.forgetSkill = function(skillId) {
        _Game_Actor_forgetSkill.apply(this, arguments);
        if ($dataSkills[skillId].meta["パッシブ"] && this._passiveSkills.includes(skillId)) {
            this._passiveSkills = this._passiveSkills.filter(_skillId => _skillId !== skillId);
        }
    };

    Game_Actor.prototype.passiveSkills = function() {
        return this._passiveSkills.map(skillId => $dataWeapons[Number($dataSkills[skillId].meta["パッシブ"])]);
    }

    const _Game_Actor_traitObjects = Game_Actor.prototype.traitObjects;
    Game_Actor.prototype.traitObjects = function() {
        return _Game_Actor_traitObjects.apply(this, arguments).concat(this.passiveSkills());
    };
})();

②パッシブ化したいスキルのメモ欄に以下のタグ付けを行う
<パッシブ:武器ID>
例:<パッシブ:4> // スキルを習得している間、武器ID4に設定された全ての特徴がアクターに適用されます。
注意点としては装備品やステート等の特徴を利用した
パッシブスキルの一時追加まではサポートしていません(循環参照が発生するので実装が面倒)
初期習得、レベルアップ、イベントコマンド「スキルの増減」等の通常習得、及び忘却のみ対応しています。

③パッシブスキルの紐づけ武器のメモ欄に<属性MP消費率:5, 200%>のタグ付けを行う

あきまり
記事: 48
登録日時: 2018年2月04日(日) 06:45

Re: 属性毎にMP消費率を変える方法を知りたいです。

投稿記事by あきまり » 2021年12月29日(水) 20:12

名無し蛙様追記ありがとうございます。

ここでいうパッシブスキルとは既存のパッシブスキルプラグインとの併用を想定した発言であり
スキルのメモ欄に直接タグ付けしてもパッシブスキル化する訳ではありません。


はい既存のモノと併用するのは心得ております、がパッシブスキルを書いて併用しないといけなかったんですね。
dsPassiveSkillを使わせて頂いてるので単品で試してみました。

ですがすみませんタイトル前にエラーが起きてしまいます。
Error
Uncaught TypeError: Cannot read property 'push' of undefined
と表示されてしまいます。

メモ欄には
<属性MP消費率:5, 200%>
<passivePBST1:15>
と書きましたもちろんパッシブスキル単体では動作しています。

rpg_managers.js:1919 Uncaught TypeError: Cannot read property 'push' of undefined
SceneManager.onError @ rpg_managers.js:1919
rpg_managers.js:1920 chrome-extension://odlameecjipmbmbejkplpemijjgpljce/js/plugins/zokuseisyouhiritu1.js 14
SceneManager.onError @ rpg_managers.js:1920
zokuseisyouhiritu1.js:14 Uncaught TypeError: Cannot read property 'push' of undefined
at Function.DataManager.extractMetadata (zokuseisyouhiritu1.js:14)
at Function.DataManager.onLoad (rpg_managers.js:142)
at XMLHttpRequest.xhr.onload (rpg_managers.js:86)
名無し蛙
記事: 305
登録日時: 2015年11月23日(月) 02:46

Re: 属性毎にMP消費率を変える方法を知りたいです。

投稿記事by 名無し蛙 » 2021年12月29日(水) 22:00

情報ありがとうございます。これは自分が浅学でしたね

現在dsPassiveSkill.jsは道楽氏のブログからDL不可なので直接確認した訳ではないですが
周辺情報を確認する限りパッシブスキルプラグインの細かい実装は勿論
設計・構造レベルでも作者によってまちまちで
既存の特徴システムを流用する、と自分が想定していた方法も亜流の一つに過ぎないようです。
この前提が異なるようなら便乗する事も出来ない訳で。仕様の違いという事でここまでとさせていただきます。

これ以上は話が散らかるので今回のトピックに関しては
問題無いようならなぴぃ氏のプラグインで解決してもらう事で。
必要以上にお手数おかけしました。

“MV:質問” へ戻る