【解決済み】うなぎおおとろ様作の「AbilitySystem.js」について

白い人

ユーザー
お忙しい中、Q&Aを、見ていただきありがとうございます。
私は、うなぎおおとろ様・制作の「AbilitySystem.js」にスキルの並べ替え機能があればよいなと考えております。

なぜならば、ゲーム進行中に新しいスキルを覚えたりスキルを何度も着脱していると、そのキャラクターのスキルがどんどん増えていった場合、控えスキルの場所に外したスキルが記憶されて、固定されてしまい、ごちゃごちゃして見づらくなってしまうと感じたからです。

例えば、ファイアⅠ・Ⅱ・Ⅲなどを何度も着脱して、至る所にあったら見づらい。という感じです。

具体的には、画像の赤枠か青枠に「ソート機能のウインドウ」みたいなものを用意したいです。

そういった場合、このAbilitySystem.js内のデータをいじれば現実的に可能そうでしょうか?

so-to.png


それともステータスのスキルウインドウの部分をいじった方が現実的でしょうか?

もしするなら「こういった感じの方がいい」というのがあれば助力いただきたいです。

質問の内容は以上になります。
ここまで読んでいただき誠にありがとうございます。
 
はじめまして。
 私もうなぎおおとろ様が制作の「AbilitySystem.js」を利用しています。Q&Aに対する回答とならず申し訳ないですが、私の方で改造した内容を共有させていただき、ご参考になれば幸いです。
 念のため、以下の環境で検証しています。


RPGツクールMZ v1.8.1
AbilitySystem.js v1.5.0


 私のプロジェクトでは以下の機能を追加しています。

1. アビリティスキルの装備画面を開いた(シーンの開始)時に自動ソート。
2. 通常のスキル画面を開いた時に自動ソート。

 ※プラグインパラメータ「マップシーン全スキル使用可能有効化スイッチID」が有効。

 以上の仕様ではアビリティスキルの入れ替え時はごちゃごちゃしますが、アビリティスキルの装備画面を閉じて再度開くことで任意にソートできるようになります。繰り返し操作しているうちに感覚的にソートができることを学習できるであろう設計です。妥協の産物ではありますが、実装が非常に簡単です。



 ここからは具体的な実装方法です。実践する場合は任意のテキストエディタをご用意ください(メモ帳でも可。この場合は拡張子を「txt」に変えてから編集し、編集後「js」に戻します)。

 まず854行目に以下のコードを差し込みます。
JavaScript:
    this.actor()._hasAbilitySkills.sort((a, b) => a - b);
 アクターが所有するアビリティスキルをJavascriptのsortメソッドで並び替えます。これによりアビリティスキルの装備画面を開くとアビリティスキルが自動でソートされます。プラグインパラメータ「マップシーン全スキル使用可能有効化スイッチID」を有効にしない場合はこれだけで作業終了です。

 上記のコードで以下の画像のように動作します。

2025-11-18-01.png

1. イベントコマンドでアビリティスキルを表示されている順に習得しました。
2. データベースでの順番です。
3. アビリティスキルの装備画面を開くとデータベースでの順番通りに自動でソートされています。



 次は通常のスキル画面でのソート機能の実装です。こちらはプラグインパラメータ「マップシーン全スキル使用可能有効化スイッチID」を有効にしている場合、アビリティスキルの装備画面ではソートされる一方、スキル画面を開くとソートされていないという状態を防止します。
 ただし、こちらはコアスクリプトの関数を再定義するためプロジェクトによっては競合する恐れがあります。

 以下のコードをプラグイン内に書き込みます。
JavaScript:
    const _Scene_Skill_start = Scene_Skill.prototype.start;
    Scene_Skill.prototype.start = function() {
        _Scene_Skill_start.call(this);
        this.actor()._hasAbilitySkills.sort((a, b) => a - b);
    };
 追加位置はどこでもよいですが、位置によっては正しく機能しないこともあるので655行目辺りでよいと思います。

 上記のコードで以下のように動作します。

2025-11-18-02.png

 先ほどと同様にアビリティスキルをデータベースの順番と異なる順番で習得しましたが、スキル画面ではデータベースの順番にソートされています。

 実装作業は以上です。よろしければお試しください。



 本来のご要望の「ソート機能のウィンドウ」についてですが、機能面においてそちらでの実装が理想的かとは思います。しかし、実装面においては「ウィンドウ用のレイアウトの確保」と「ソート機能のボタン割り当て」を行う必要があり、やや複雑です。
 残念ながら私の技術力ではサポートできませんが、仕様とレイアウトを明確にしてご依頼されるとどなたかにご助力いただけるかもしれません。
 
はじめまして!

お返事いただきありがとうございます!
同じように「AbilitySystem.js」を利用している仲間と情報を共有できて非常にうれしく思います。

まず、結論から述べますと、非常に良いアイディアで助かりました!

こちらは動作環境
RPGツクールMZ v1.9
AbilitySystem.js v1.5.0

プラグインの数170以上使用

でしたが、こちらで競合も問題なく使用することが出来ました。

------------

私はツクールが初心者な方で、「ソート機能の切り替えウインドウ」があれば、ユーザー目線で変化が見て取れるので良いかな?と考えておりました。・・・ですが、そもそもソートを「使わない時ってどう状況だろう?」と、考えたときにご提案いただいた「自動ソート」で問題ないと感じました。※1
さらに製作者側の目線で「実装が容易」というのも非常に良かったです。

最初に854行目の未実装したところ問題なく動きまして、もうこれで十分にOKで解決でした。・・・ですが、いままで「マップシーン全スキル使用可能有効化スイッチID」の有効をオンにした事は無かったのですが、せっかくなのでこの機会にONにしてみて、通常の使用感を試した後に、655行目のコードを試めさせていただいたところ、その便利さがよくわかりました。
なので、この機会にONのままゲームを公開したいと思いました。

-----------------

希望していた「ソート機能のウィンドウ」については、※1の経緯があり、理想が一番複雑で、徐々に段階を落として、最終的に「NPCに話しかけるとソートできる」のようなものでも最悪よいと考えておりました。なので、非常にありがたい助言をいただき本当に助かりました。
質問の内容としては解決いたしましたので「解決済み」とさせていただきました。
最後まで丁寧な文章でお答えしていただきありがとうございます!とても助かりました…!
 
Back
トップ