いつも大変お世話になっております。誠にありがとうございます。
さて、今回は指定したアクターの最大レベルを上げる、という処理で困っております。
アクターは、
1:一郎
2:二郎
3:三郎
4:四郎
5:五郎
(数字はアクターID)というように登録してあります。
これをプレイ中に並び替えをして、
一郎
五郎
三郎
四郎
二郎
という順にした時、
$dataActors[5].maxLevel += 10; ←五郎の最大レベルを10上げる
とやると、五郎ではなく二郎(並び順で5番目のアクター)の最大レベルが上ってしまいます。
でも、
$gameMessage.add($dataActors[5].name);
とすると、「五郎」とちゃんと5番目に登録しているアクター名が表示されるのです。
同じ$dataActorsなのに、maxLevelの時だけアクターIDが並び順に準じてしまうのですが、
何か良い方法はないでしょうか?
ちなみに実際には、最大レベルを上げるアクターIDは、
$gameParty.targetActor().actorId() ←アップするアイテムを使用したアクター
にしています。
何卒、よろしくお願いいたします。
$dataActorsについて
Re: $dataActorsについて
$dataActorは初期値が設定されている部分です。
ポケモンでいえば種族値が格納されている部分と考えてください。
$dataActorではなく$gameActorを参照してみてください。
ポケモンでいえば種族値が格納されている部分と考えてください。
$dataActorではなく$gameActorを参照してみてください。
現在、プラグイン依頼はお休み中です。
Re: $dataActorsについて
しぐれん様
こんばんは。お世話になります。
実は$gameActorでもやってみたのですが、$gameActor.maxLevelだと、エラーになるのです…
それとも「.maxLevel」がいけないのでしょうか?
いずれにせよ、.nameだと登録されているIDを返すのに、
何故.maxLevelの時は並び順のIDなのかが解せないのです。
あるいは「指定したアクターの並び順」を返す方法はないでしょうかね?
こんばんは。お世話になります。
実は$gameActorでもやってみたのですが、$gameActor.maxLevelだと、エラーになるのです…
それとも「.maxLevel」がいけないのでしょうか?
いずれにせよ、.nameだと登録されているIDを返すのに、
何故.maxLevelの時は並び順のIDなのかが解せないのです。
あるいは「指定したアクターの並び順」を返す方法はないでしょうかね?
Re: $dataActorsについて
ソースコード見て調べてきました。
$gameActorに入っているデータは Game_Actorクラスですが、$gameActor[0].maxLevel()とカッコを付ければ取得できます。
ただ、レベルキャップを設定する方法ですとmaxLevel()を再定義するのが良いと思います。
以下のコードをプラグインにして導入してみてください。
この状態で、$gameActorに対して._maxLevelに数値を代入すれば望む結果が得られるかもしれません。
また、パーティの並び順に対応したデータが欲しい場合、$gameParty.members()[順番]で取得します。
先頭キャラが0で加入人数-1までの数でアクセスできます。
$gameActorに入っているデータは Game_Actorクラスですが、$gameActor[0].maxLevel()とカッコを付ければ取得できます。
ただ、レベルキャップを設定する方法ですとmaxLevel()を再定義するのが良いと思います。
以下のコードをプラグインにして導入してみてください。
この状態で、$gameActorに対して._maxLevelに数値を代入すれば望む結果が得られるかもしれません。
コード: 全て選択
(function(){
const Game_Actor_setup=Game_Actor.prototype.setup;
Game_Actor.prototype.setup(id){
Game_Actor_setup.call(this,id);
this._maxLevel = $dataActors[actorId].maxLevel;
}
Game_Actor.prototype.maxLevel =function(){
return this._maxLevel;
}
})();
先頭キャラが0で加入人数-1までの数でアクセスできます。
現在、プラグイン依頼はお休み中です。
Re: $dataActorsについて
しぐれん様
おはようございます。今回はご尽力いただき、本当にありがとうございます。
ご教示頂いたものをプラグインに組み込んでみたのですが、
やり方が悪いのか、エラーになってしまいます。以下、実際の構文です。
(念のため、他の組み込んでいるプラグインは無効にしてあります)
$gameActors[$gameVariables.value(11)]._maxLevel += 10;
(変数11には、アイテムを使用したアクターの「登録ID」が入っています。
実際の「並び順」ではありません)
↑とやると、「Cannot read property '_maxLevel' of undefined.」となります。
大変に申し訳ないのですが、例文をご教示いただけないでしょうか?
お手数をおかけいたしまして本当に申し訳ありません。
何卒よろしくお願いいたします。
おはようございます。今回はご尽力いただき、本当にありがとうございます。
ご教示頂いたものをプラグインに組み込んでみたのですが、
やり方が悪いのか、エラーになってしまいます。以下、実際の構文です。
(念のため、他の組み込んでいるプラグインは無効にしてあります)
$gameActors[$gameVariables.value(11)]._maxLevel += 10;
(変数11には、アイテムを使用したアクターの「登録ID」が入っています。
実際の「並び順」ではありません)
↑とやると、「Cannot read property '_maxLevel' of undefined.」となります。
大変に申し訳ないのですが、例文をご教示いただけないでしょうか?
お手数をおかけいたしまして本当に申し訳ありません。
何卒よろしくお願いいたします。
Re: $dataActorsについて
大変お世話になります。
お詫びです。
$dataActorsとかの問題ではなく、どうやら「レベルの脇に最大レベルも表示する」
といじった方がおかしかったようです。
(現在調査中です)
しぐれん様には、いらぬ混乱を招くようなことをしてしまい、
大変申し訳ありませんでした。
お詫びです。
$dataActorsとかの問題ではなく、どうやら「レベルの脇に最大レベルも表示する」
といじった方がおかしかったようです。
(現在調査中です)
しぐれん様には、いらぬ混乱を招くようなことをしてしまい、
大変申し訳ありませんでした。
Re: $dataActorsについて
古いセーブデータを読み込んだ時の処理を入れていなかったので、このままだと動きませんでした。
新規データ作成時には動きますか?
セーブデータ読み込み時に、データを再作成する処理を追加したので、前回のプラグインに追加してみてください。
新規データ作成時には動きますか?
セーブデータ読み込み時に、データを再作成する処理を追加したので、前回のプラグインに追加してみてください。
コード: 全て選択
const Scene_Load_onLoadSuccess=Scene_Load.prototype.onLoadSuccess;
Scene_Load.prototype.onLoadSuccess =function(){
Scene_Load_onLoadSuccess.call(this);
$gameActors.for_each(actor){
if(actor){
if(!actor._maxLevel){
actor._maxLevel = actor.actor().maxLevel;
}
}
});
};
現在、プラグイン依頼はお休み中です。
Re: $dataActorsについて
しぐれん様
お世話になります。
しぐれん様、誠にありがとうございました!
原因は↑お詫びにも書いたとおり、「レベルの脇に最大レベルも表示する」という
スクリプトの方だったのですが、それは今回しぐれん様にご教示頂いた構文のおかげで
解決したのです。
しぐれん様には的はずれな事をさせてしまい、本当に申し訳ありませんでした。
(結果的には、そのおかげで解決したのですが)
本当にありがとうございました。
お世話になります。
しぐれん様、誠にありがとうございました!
原因は↑お詫びにも書いたとおり、「レベルの脇に最大レベルも表示する」という
スクリプトの方だったのですが、それは今回しぐれん様にご教示頂いた構文のおかげで
解決したのです。
しぐれん様には的はずれな事をさせてしまい、本当に申し訳ありませんでした。
(結果的には、そのおかげで解決したのですが)
本当にありがとうございました。