【解決済み】自作(ChatGPT 4o)プラグインでステートが重複される問題を解決したい

返信する
こうこう
記事: 14
登録日時: 2021年2月15日(月) 19:22

【解決済み】自作(ChatGPT 4o)プラグインでステートが重複される問題を解決したい

投稿記事 by こうこう »

私自身JavaScriptの知識は皆無です。
AutoStateByVariable.jsの修正をしたいと思っています。
これは変数の値で、自動でステートが追加、解除されるプラグインです。
問題はマップ上でステートが追加されている状態で戦闘に入り、自動でステートが追加される変数の時、戦闘ターン終了時になると同じステートが重複されて表示されてしまうことです。

アクターID1に設定しています。
プラグインの変数条件は画像を添付します。
マップ上の自動ステート追加、解除の設定の画像も添付します。

拙い説明で申し訳ありません。まだ情報が足りなければ、言ってください。
プラグインの手直しか、コードのどこを書き直せばいいか回答をお願いします。
添付ファイル
スクリーンショット 2024-05-19 071125.png
スクリーンショット 2024-05-19 065657.png
スクリーンショット 2024-05-19 065657.png (27.8 KiB) 閲覧された回数 653 回
スクリーンショット 2024-05-19 065643.png
スクリーンショット 2024-05-19 065643.png (28.13 KiB) 閲覧された回数 653 回
AutoStateByVariable.js
これを修正したい
(4.03 KiB) ダウンロード数: 2 回
最後に編集したユーザー こうこう [ 2024年5月19日(日) 10:18 ], 累計 1 回
すおう
記事: 38
登録日時: 2024年5月17日(金) 08:30

Re: 自作(ChatGPT 4o)プラグインでステートが重複される問題を解決したい

投稿記事 by すおう »

戦闘のプラグインはほとんど触ってないので間違ってたらごめんなさい
一応以下の修正でうまくいったと思います

79行目からの

コード: 全て選択

                if (meetsCondition) {
                    if (!actor.isStateAffected(varCond.stateId)) {
                        statesToAdd.add(varCond.stateId);
                    }
                } else {
                    if (actor.isStateAffected(varCond.stateId)) {
                        statesToRemove.add(varCond.stateId);
                    }
                }
 
の部分を次のように変えてください

コード: 全て選択

                const stateId = parseInt(varCond.stateId);
                if (meetsCondition) {
                    if (!actor.isStateAffected(stateId)) {
                        statesToAdd.add(stateId);
                    }
                } else {
                    if (actor.isStateAffected(stateId)) {
                        statesToRemove.add(stateId);
                    }
                }
何やってるのかというと、ステート付加のとき例えば毒であればステートのIDが4という『数値』なのですが
前のままだとIDが"4"という『文字』情報で付加してしまい、4と"4"が別々のステート扱いで判定されて
重複が起きていました。そこで付加前に文字情報を数値に変換しています。

ついでにおせっかいになりますが、たぶん以下の部分は何も働いていません。
そのままにしても問題ないと思いますが、コメントアウトくらいはしておいたほうがいいかも

104行目から

コード: 全て選択

    const _Game_Actor_update = Game_Actor.prototype.update;
    Game_Actor.prototype.update = function() {
        _Game_Actor_update.call(this);
        checkConditions(this);
    };

    const _Game_Party_update = Game_Party.prototype.update;
    Game_Party.prototype.update = function() {
        _Game_Party_update.call(this);
        this.members().forEach(member => checkConditions(member));
    };
こうこう
記事: 14
登録日時: 2021年2月15日(月) 19:22

Re: 自作(ChatGPT 4o)プラグインでステートが重複される問題を解決したい

投稿記事 by こうこう »

すおう様回答ありがとうございます。
コードを書き換えたらうまくいきました。
これで自分の作りたいゲームに近づけることができます。
本当にありがとうございます。
返信する

“MZ:質問”に戻る