メインコンテンツへスキップ

検索

MVでいう「スクリプト」の使用について

コメント

10件のコメント

  • aki

    rye

     

    お世話になります。早速ご教示いただき誠にありがとうございます。

    やってみたところ、確かに「所持金」の選択肢が増えました!

    ・・・が、それを選択すると左下に

    ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.Parameter name: index

    というのが出てしまい、イベントがおかしくなって(消える?)しまいました。

    何かの設定が悪いんでしょうか???

     

    ちなみに「所持金」が「"WORD_0581"」だというのは何を見ればわかるのですか?

    他に「経験値」とかも追加したいのですが。

    追加で図々しく質問してしまい、申し訳ございません。

    もしよろしければ是非ともご教示いただければと思います。

    0
  • rye

    そこいじってたんですけど、そこで取得出来るのって戦闘中の敵のデータだったんで違うなと思って消しましたごめんなさい
    エディタいじるのは危ないのでアドオン作ってみますね

    0
  • rye

    /*:ja
     * @addondesc エネミーの獲得ゴールドを変数に文字列として代入する
     * @author Author
     * @help 指定したエネミーIDの獲得ゴールドを取得し、指定した変数に代入します。
     * 
     * @command SetEnemyGoldToVariable
     *      @text エネミーの獲得ゴールドを変数に代入
     *      @desc エネミーのIDを指定し、そのエネミーの獲得ゴールドを変数に格納します。
     * 
     *  @arg enemyId
     *      @text エネミーID
     *      @desc ゴールドを取得するエネミーのIDを指定します。
     *      @type string
     * 
     *  @arg variableId
     *      @text 代入する変数ID
     *      @desc 獲得ゴールドを代入する変数のIDを指定します。
     *      @type string
     */
    using RPGMaker.Codebase.Runtime.Common;
    using UnityEngine;

    namespace RPGMaker.Codebase.Addon
    {
        public class EnemyGoldAddon
        {
            public void SetEnemyGoldToVariable(string enemyId, string variableId)
            {
                int enemyIndex = int.Parse(enemyId) - 1; // IDをリストのインデックスに変換
                int varIndex = int.Parse(variableId) - 1; // IDをリストのインデックスに変換

                var enemies = DataManager.Self().GetEnemyDataModels();
                if (enemyIndex < 0 || enemyIndex >= enemies.Count)
                {
                    Debug.LogError($"無効なエネミーID: {enemyId}");
                    return;
                }

                var enemyData = enemies[enemyIndex];
                if (enemyData == null)
                {
                    Debug.LogError($"エネミーデータが見つかりません: ID {enemyId}");
                    return;
                }

                var variables = DataManager.Self().GetRuntimeSaveDataModel().variables.data;
                if (varIndex < 0 || varIndex >= variables.Count)
                {
                    Debug.LogError($"変数ID {variableId} がリストの範囲外です。");
                    return;
                }

                variables[varIndex] = enemyData.gold.ToString();
                Debug.Log($"変数ID {variableId} に {enemyData.gold} を設定しました。");
            }
        }
    }

    0
  • aki

    rye様

     

    返信が遅くなり申し訳ありません。アドオンまで作成していただき、誠にありがとうございました。

    当初はアドオンコマンドで選択出来なかったのですが、一旦プロジェクトを作り直したらできるようになりました。

    ただ、今度は主人公(アクター)が全く動かない状態です。

    移動と決定ボタンが効かず、キャンセル(メニュー)は効く状態で、せっかくのアドオンが試せないのです・・・

    なんだかRPG UNITEというものは、バグというかうまくいかない状況が多すぎますね・・・

    もう一度プロジェクトを作り直してやってみます。ありがとうございました。

     

     

    0
  • rye

    このアドオンでキー入力がおかしくなることはないと思いますの大丈夫です、

    ただそのまいに行ったエディタを改造して項目を増やす奴は最終的に私は出来たんですが、

    もっと書き換えないといけないところがあってスクリプトに詳しくない人がやるのは危険だなと思ったので

    消しました。

    (失敗するとプロジェクトが壊れる可能性がある、上手くできてもアップデートの時にも困る)

    のでよろしくお願いします、

    0
  • aki

    rye様

    お世話になります。

    うまく出来ました。不具合の原因は、作成していただいたコードを「テキストエディタ」で保存していたためでした。VisualStudioで開いて、そのまま上書き保存したら問題なく動きました。

    〇〇〇.csのファイルは、最終的にはVisualStudioで保存するようにします。

     

    そうですか、パラメータをエディタ上で増やすのは難しいですか・・・

    私はBasicなら若干できるのですが、C#はどうにも理解ができなくて・・・

     

    ↓すみません、ここから余談です。

    実は私が作りたいと思っているのは、例えば1階から100階までのダンジョンがあって、

    上の階へ行くにつれ敵が強くなっていく(1Fなら敵のHP:10、2FならHP:20~のように)

    敵が強くなれば、当然得られる経験値やGoldも同様に増えていく・・・というものなのです。

    (よくありがちなやつです(;'∀'))

    マップは1フロアだけ作ればあとはそれの使いまわしで100階まで行けますし、敵も数種類作っておき、

    あとはそれのHPやら攻撃力等をフロアに合わせて変更していけば、数体の作成で済みます。

    先述の通り、MVなら$gameTroop.members()[i].enemy().goldみたいな感じで

    敵のステータスやら所持金等の取得・設定が可能なので、それが実現できるのですが、

    UNITEはスクリプトがなく、かと言ってrye様のようにアドオンは作れないため実現は不可能ですね。

    なのでエディタ上で他のパラメータ(最大HP、経験値、所持金等)の取得と設定が出来るようになっていると私にとっては一番ありがたいのですが・・・今後のバージョンアップに期待しましょう。

    この度は誠にありがとうございました。

     

    0
  • rye

    私のaddonをチャットGPTに見せて、
    RPGMaker\Codebase\CoreSystem\Knowledge\DataModel\Troop\TroopDataModel.cs
    とかも見せればトループ(戦闘中の敵グループ)のデータ構造も把握してくれます。
    こういうアドオン作ってって言ったら大体の物は作ってくれますよ。

    0
  • aki

    rye

     

    お世話になります。

    すごいっ!!ChatGPTというのを初めて使ったのですが、サクサクサクっと作ってくれますね。

    ただ・・・

    作ってはくれるのですが、肝心の「アドオンリスト」に載ってきません・・・(´;ω;`)

    『/*:ja
     * @addondesc エネミーの獲得ゴールドを変数に文字列として代入する』

    みたいなのがないからでしょうかね???

    もう少しいじってみます。ありがとうございました。

     

     

     

    0
  • rye

    『/*:ja
     * @addondesc エネミーの獲得ゴールドを変数に文字列として代入する』

    アドオンの場合はそこってコメントのように見せかけてすべてプログラムの一部です。
    ちゃんと全部書かないと動きません。

    0
  • aki

    rye

    お世話になります。

    アドオン出来ました!アドオンリストに載らなかったのは、初めにチャットGPTが作成したコードに誤りがあったからで、GPTに色々と見せていったら自身がそれに気づいて修正案を出してきました。

    最終的には私自身で修正しましたが、無事に敵のステータスの取得、設定ができました。

    チャットGPTすごいですね・・・

    この度は誠にありがとうございました。

     

     

    0

サインインしてコメントを残してください。