ページ 1 / 1
【解決済み】自作(ChatGPT 4o)プラグインでステートが重複される問題を解決したい
Posted: 2024年5月19日(日) 07:12
by こうこう
私自身JavaScriptの知識は皆無です。
AutoStateByVariable.jsの修正をしたいと思っています。
これは変数の値で、自動でステートが追加、解除されるプラグインです。
問題はマップ上でステートが追加されている状態で戦闘に入り、自動でステートが追加される変数の時、戦闘ターン終了時になると同じステートが重複されて表示されてしまうことです。
アクターID1に設定しています。
プラグインの変数条件は画像を添付します。
マップ上の自動ステート追加、解除の設定の画像も添付します。
拙い説明で申し訳ありません。まだ情報が足りなければ、言ってください。
プラグインの手直しか、コードのどこを書き直せばいいか回答をお願いします。
Re: 自作(ChatGPT 4o)プラグインでステートが重複される問題を解決したい
Posted: 2024年5月19日(日) 08:51
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));
};
Re: 自作(ChatGPT 4o)プラグインでステートが重複される問題を解決したい
Posted: 2024年5月19日(日) 10:18
by こうこう
すおう様回答ありがとうございます。
コードを書き換えたらうまくいきました。
これで自分の作りたいゲームに近づけることができます。
本当にありがとうございます。