[解決済み]HPが0になった際、回復するイベントを入れて戦闘を続行する処理

ratano
記事: 12
登録日時: 2019年5月27日(月) 16:36

[解決済み]HPが0になった際、回復するイベントを入れて戦闘を続行する処理

投稿記事by ratano » 2019年8月19日(月) 21:28

お世話になります。
表題についてご質問させていただきたいです。

戦闘で、主人公サイドのHPが全て0になった際、控えのキャラが倒れたメンバー全員の体力を回復し、戦闘を続行するイベントを作ろうとしています。
味方のHPが0になる→通常のマップ画面に戻り、控えキャラが「負けないで!」というかんじでメンバーのHPを回復する→戦闘が再開される(敵を倒すまではこの処理を繰り返す)
…というふうにしたいのですが、この場合は戦闘の処理を「敗北可」にするか、それとも他の方が配布してくださっているゲームオーバーにならないスクリプトなどで処理するのがいいでしょうか?
できれば、2回目以降の回復では台詞などを変えたいと思っております。
また、戦闘再開時には、そこまでの攻撃で削った敵のHPをそのまま、HPが減った状態で再開したいと思っていますが可能でしょうか。

よければご教授いただけると幸いです。
よろしくお願いいたします。
最後に編集したユーザー ratano on 2019年8月22日(木) 13:53 [ 編集 3 回目 ]

C_kochiya
記事: 7
登録日時: 2018年9月23日(日) 23:23

Re: HPが0になった際、回復するイベントを入れて戦闘を続行する処理

投稿記事by C_kochiya » 2019年8月20日(火) 00:21

僭越ながら回答させていただきます。
突き詰めていけば色々やりようはあるのかもしれませんが、『僕ならばこうやるだろう』という方法を書いていこうと思います。
参考になれば幸いです。


【全滅→回復して戦闘再開】
全滅したらマップに戻るのであれば、『敗北可』の戦闘にするのがやりやすいのではないかと思います。
そこで仲間の掛け合いやパーティーの全回復と言ったイベントを挟み、戦闘の処理でもう一度同じ敵と戦う…でおおまかな流れは出来るかと思います。

【2回目以降は台詞を変えたい】
あらかじめ、全滅した回数を記憶する変数を作り、全滅したら1加算します。
全滅後、その変数の値に合わせて条件分岐等で違う台詞やイベントを組み込んでみてはいかがでしょうか。

【敵の体力はそのまま継続で】
まずは『敵の残りHP』を記憶する変数を用意します。
続いて戦闘中のイベントとして、パーティーが全滅したタイミングで敵の残りHPを変数に代入する処理をします。
戦闘再開したときに、その変数から敵の最大HPを減算します。
敵キャラのHP増減から、変数の値を『増やす』処理をします。
これで実現可能だと思います。


以上の方法はどうでしょうか?
自分で試したわけではないので実際上手くいくかは分かりませんが、恐らく可能かと…
もし上手くいかなかったら申し訳ありません!
ratano
記事: 12
登録日時: 2019年5月27日(月) 16:36

Re: HPが0になった際、回復するイベントを入れて戦闘を続行する処理

投稿記事by ratano » 2019年8月20日(火) 14:28

C_kochiya様

丁寧にご返信いただき、ありがとうございます。
教えていただいたやり方で一度やってみようと思うのですが、この場合、主人公側が勝つまで戦闘を繰り返すにはループを入れる必要があるでしょうか?
ratano
記事: 12
登録日時: 2019年5月27日(月) 16:36

Re: HPが0になった際、回復するイベントを入れて戦闘を続行する処理

投稿記事by ratano » 2019年8月20日(火) 14:48

C_kochiya様

すみません、その後は変数を代入にしたらよかったですね。勘違いしておりました。
教えていただいたやり方で無事実装できそうです!
とても助かりました。ありがとうございます。
ratano
記事: 12
登録日時: 2019年5月27日(月) 16:36

Re: HPが0になった際、回復するイベントを入れて戦闘を続行する処理

投稿記事by ratano » 2019年8月20日(火) 15:56

C_kochiya様

たびたび申し訳ありません。回復イベントを入れることはできたのですが、敵のHP管理の処理で詰まっております。

1.png

2.png


画像のように設定したのですが、私の処理が間違っているようでうまくいきません。
もしよければ、どこが間違っているか教えていただけませんでしょうか…。
よろしくお願いいたします。
アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: HPが0になった際、回復するイベントを入れて戦闘を続行する処理

投稿記事by まっつUP » 2019年8月20日(火) 16:35

ratano様

敵のHP増減のイベントコマンドを使っていますがイベントコマンドの戦闘の処理が実行された瞬間
該当の敵グループは全回復してしまうので
バトルイベント(データベースの敵グループのところ)で条件が満たされているときに
敵のHP増減のイベントコマンドが実行されるようにした方がよいと思います。
RPGで笑顔を・・・

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ
アバター
radio05
記事: 85
登録日時: 2019年6月05日(水) 06:07
連絡を取る:

Re: HPが0になった際、回復するイベントを入れて戦闘を続行する処理

投稿記事by radio05 » 2019年8月20日(火) 16:48

敵の残りHPは
スクリプトを使ってますか?

//敵キャラのHP
$gameTroop.members()[敵グループ内敵キャラID].hp

↑ こういうやつです これを用意した変数に一度いれて保管しないと
同じ値で移動しあってるだけなので

みたかんじではEV022は
#0010変数に10000をいれて
負けた時は変数#0010に10000があるだけです

次に一度敗北したあと

変数#0010は―10000でプラマイ0になっただけです
それを戦闘前に敵のHPへ配布している形なっているだけなんです
戦闘前だとリセットされているので無駄配布です

まっつUPさんのおっしゃる通り 戦闘がはじまってから敵HPを―10000削る
もしくは前回の残りHPデータを敵に代入しないと

あと敵グループ バトルイベントでHP増減の処理を組むので同じ敵キャラでも
1戦目敵グループと、敗北後にする2戦目以降の敵グループといった感じで
別々の敵グループ作るのが良いかと思います
sally
記事: 119
登録日時: 2019年8月06日(火) 05:11

Re: HPが0になった際、回復するイベントを入れて戦闘を続行する処理

投稿記事by sally » 2019年8月20日(火) 19:22

横から失礼します。

敗北からの再戦闘には、ラベルを使えばスムースになるかと思います。

------------イベント
変数:xxxx敵HP = 10,000
ラベル:戦闘開始
戦闘の処理:ラスボス
 勝ったとき:
 負けたとき:
  変数:xxxx敵HP = 敵HP
  変数:xxxy戦闘回数 += 1
  ラベルジャンプ:戦闘開始
-------------バトルイベント
条件>ターン0 スパン>バトル
敵HP -= 99999
敵HP += xxxxの値
条件分岐:変数xxxy >=1
敵HP -= 1
 ┗回復で敵HPが1高くなるので、減算処理で調整
ratano
記事: 12
登録日時: 2019年5月27日(月) 16:36

Re: HPが0になった際、回復するイベントを入れて戦闘を続行する処理

投稿記事by ratano » 2019年8月20日(火) 22:58

皆様、ご返答いただき、本当にありがとうございます。
ひとまず、まっつUP様やradio05様が教えてくださった「敵グループ内で敵HPを削る」処理をしてみようと思ったのですが、

1.png

2.png

3.png

4.png

こういうこととは違ったでしょうか…。
この場合だと二度目の戦闘の際、敵が問答無用で一撃死してしまったので、おそらくまた自分はどこかの処理を間違っていると思ったのですが、それがどこか判別できておりません。
申し訳ありませんが、またどなたかお手すきの際、教えていただけるとうれしいです。
アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: HPが0になった際、回復するイベントを入れて戦闘を続行する処理

投稿記事by まっつUP » 2019年8月21日(水) 00:10

恐らく敵の最大HPが一万以下だったんでしょうね。
あと、敵キャラのHP増減は「減らす」で処理するようにした方がよいのではないかと思います。

敵キャラのHPは変数の操作のゲームデータから取得できます。
◆変数の操作:#0001 = #1のHP
分岐の内「負けたとき」の中で処理すれば間違いないと思います。

バトルイベント中では
同様に最大HPも取得して、
最大HPから「負けたとき」の中で代入したHPの値を引いた数だけ
敵キャラのHP増減「減らす」で処理するとよいと思います。
追記:変数の計算は全て終わらせてから敵キャラのHP増減「減らす」を「一回」行って下さい。

貼っていただいた画像について、
仮で置いているのでしょうが10000の代入と減算は要らないと思います。
また、イベントページ(バトルイベントではない方)は1枚で十分だと思います。
もしセリフ等の変化があれば「負けたとき」の中で
さらに全滅した回数変数で分岐すればよいと思います。
この場合、そのイベントページにおいて戦闘の処理以下をループで囲めばよいと思います。
勝った時にでもループの中断をすればよいです。
RPGで笑顔を・・・

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ

“MV:質問” へ戻る