【解決済み】攻撃時にMPを回復するシステムを作ったのですが

Dezwil
記事: 2
登録日時: 2016年9月19日(月) 18:19

【解決済み】攻撃時にMPを回復するシステムを作ったのですが

投稿記事by Dezwil » 2016年11月18日(金) 18:48

Yanfly氏のプラグインActSeqPackを使って攻撃時にターゲットにダメージを与えた場合MPを回復するシステムを作ったのですが、
初めからテストプレイしてみて戦闘中に何の問題も無く作動したのですが、続きからやって即戦闘を行った際
Type Error Cannot read property 'hp' of undefined とまれにエラーが発生します。
こちらがそのシステムなのですが

コード: 全て選択

eval: $gameVariables.setValue(1, $gameTroop.members()[BattleManager._subject._lastTargetIndex].hp) //変数1に現在のターゲットのHPを代入する
eval: $gameVariables.setValue(2, $gameTroop.members()[BattleManager._subject._lastTargetIndex].hp) //変数2に現在のターゲットのHPを代入する
action effect: target //ダメージ
eval: $gameVariables.setValue(2, $gameTroop.members()[BattleManager._subject._lastTargetIndex].hp) //変数2に現在のターゲットのHP(攻撃を当てた直後の)を代入する
if $gameVariables.value(1) > $gameVariables.value(2) //変数1が変数2より数値が大きかった場合
eval: $gameActors.actor(1).gainMp(10) //アクター1のMPを10増やす
end

エラータイミングはダメージが入る前です。
つまり自分はこの[BattleManager._subject._lastTargetIndex].hpに問題があると思ってるのですが、他にこれに代理できるものはあるでしょうか?
またはこれよりもっといい方法があるでしょうか?宜しくお願いします。
最後に編集したユーザー Dezwil on 2016年11月19日(土) 15:59 [ 編集 1 回目 ]

アバター
剣崎 宗二
記事: 681
登録日時: 2016年11月12日(土) 20:36
連絡を取る:

Re: 攻撃時にMPを回復するシステムを作ったのですが

投稿記事by 剣崎 宗二 » 2016年11月18日(金) 21:37

そのエラーですと、正確には
"$gameTroop.members()[BattleManager._subject._lastTargetIndex]"
が未定義である為hpの値を読み取れないと言う問題かと思われます。

ともかく、こちらでやるべき事を簡略化し、可能な限り既存のActionSequenceを使うようにみました。
Action Sequence Pack 1の導入は必須となります

コード: 全て選択

action effect: target
if target.result().hpDamage > 0
   MP +10: user, show
end


そちらの掲示した部分のコードを上記に変更して頂ければ動くかと思います。
ただ、眠い目を擦りながらテストした為、漏れがあるかも知れませんので、その際は再度ご連絡ください……
----
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
Dezwil
記事: 2
登録日時: 2016年9月19日(月) 18:19

Re: 攻撃時にMPを回復するシステムを作ったのですが

投稿記事by Dezwil » 2016年11月19日(土) 15:59

こちらで試した所問題なく動作しました!  :D
簡略もされてて使いやすかったです。
Targetだけで動作するとは思わなかった… :o
とりあえずこの件は解決済みとさせて頂きます! 本当にありがとうございました!
もし途中で問題が発生した場合再度質問します!

“MV:質問” へ戻る