MVでいう「スクリプト」の使用について
連続投稿で申し訳ございません。
MVでは使用できた「スクリプト」の機能はないのでしょうか?
敵の(倒した時に得られる)経験値やゴールドなどを取得したいのです。
ですが、ゲームデータは、エディタでは取得できません。
MVでも同様にエディタからは取得はできないのですが、MVでは
$gameTroop.members()[i].enemy().gold
のようなスクリプトを使えば取得することができます。
しかしUNITEではこの「スクリプト」というのがないため、エディタで取得できないとなると、手詰まりです。(もっとも、仮にあったとしても
$gameTroop.members()[i].enemy().goldをUNITEではどうやって記述すればよいのかもわかりませんが・・・)
UNITEではMVの「スクリプト」に相当する機能はないのでしょうか?
もしくは別のやり方でも良いので、敵のゴールドなどを取得する方法はないのでしょうか?
もしないのであれば、せめて敵の全パラメータはエディタで取得できるようにしていただけると幸いです。
本件、是非ご教示いただけないでしょうか。何卒よろしくお願い申し上げます。
-
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 -
そこいじってたんですけど、そこで取得出来るのって戦闘中の敵のデータだったんで違うなと思って消しましたごめんなさい
エディタいじるのは危ないのでアドオン作ってみますね0 -
/*: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 -
rye様
返信が遅くなり申し訳ありません。アドオンまで作成していただき、誠にありがとうございました。
当初はアドオンコマンドで選択出来なかったのですが、一旦プロジェクトを作り直したらできるようになりました。
ただ、今度は主人公(アクター)が全く動かない状態です。
移動と決定ボタンが効かず、キャンセル(メニュー)は効く状態で、せっかくのアドオンが試せないのです・・・
なんだかRPG UNITEというものは、バグというかうまくいかない状況が多すぎますね・・・
もう一度プロジェクトを作り直してやってみます。ありがとうございました。
0 -
このアドオンでキー入力がおかしくなることはないと思いますの大丈夫です、
ただそのまいに行ったエディタを改造して項目を増やす奴は最終的に私は出来たんですが、
もっと書き換えないといけないところがあってスクリプトに詳しくない人がやるのは危険だなと思ったので
消しました。
(失敗するとプロジェクトが壊れる可能性がある、上手くできてもアップデートの時にも困る)
のでよろしくお願いします、
0 -
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 -
私のaddonをチャットGPTに見せて、
RPGMaker\Codebase\CoreSystem\Knowledge\DataModel\Troop\TroopDataModel.cs
とかも見せればトループ(戦闘中の敵グループ)のデータ構造も把握してくれます。
こういうアドオン作ってって言ったら大体の物は作ってくれますよ。0 -
rye様
お世話になります。
すごいっ!!ChatGPTというのを初めて使ったのですが、サクサクサクっと作ってくれますね。
ただ・・・
作ってはくれるのですが、肝心の「アドオンリスト」に載ってきません・・・(´;ω;`)
『/*:ja
* @addondesc エネミーの獲得ゴールドを変数に文字列として代入する』みたいなのがないからでしょうかね???
もう少しいじってみます。ありがとうございました。
0 -
『/*:ja
* @addondesc エネミーの獲得ゴールドを変数に文字列として代入する』
アドオンの場合はそこってコメントのように見せかけてすべてプログラムの一部です。
ちゃんと全部書かないと動きません。0 -
rye様
お世話になります。
アドオン出来ました!アドオンリストに載らなかったのは、初めにチャットGPTが作成したコードに誤りがあったからで、GPTに色々と見せていったら自身がそれに気づいて修正案を出してきました。
最終的には私自身で修正しましたが、無事に敵のステータスの取得、設定ができました。
チャットGPTすごいですね・・・
この度は誠にありがとうございました。
0
サインインしてコメントを残してください。
コメント
10件のコメント