変身すると行動パターンが乱れる(行動しない、重複する)

初心者&質問者
記事: 148
登録日時: 2020年9月03日(木) 09:22

変身すると行動パターンが乱れる(行動しない、重複する)

投稿記事 by 初心者&質問者 »

スキル1~4を順番に1回ずつ使用し
5ターン毎に変身(元に戻る)を
繰り返す敵をつくろうとして
つまずいています。


――――――――――――――――

★「敵キャラ 行動パターン」

■変身前の行動パターン

・スキル1 ターン0
・スキル2 ターン1+10*X
・スキル3 ターン2+10*X
・スキル4 ターン3+10*X
・スキル1 ターン10+10*X

■変身後の行動パターン

・スキル1 ターン6+10*X
・スキル2 ターン7+10*X
・スキル3 ターン8+10*X
・スキル4 ターン9+10*X


★「敵グループ バトルイベント」 共にスパンは「ターン」

・条件 ターン 5+10*X
・条件 ターン 10+10*X

――――――――――――――――


上記のように設定しているのですが

・変身後の1ターン、何も行動しない
 (MP不足ではない)

・変身後、スキル3の次のターン変身前に戻ってしまう
 (スキル4を行わない)

・変身前に戻ると、スキル1を2回行う

のようにうまくいきません。

ターン数を変更してみたも
同じスキルを連続してしまったり
失敗します。

どのように改善すればよいか、ご助言いただければ幸いです。
よろしくお願いします。
ecf5DTTzl6h6lJj02
記事: 752
登録日時: 2018年12月23日(日) 13:55

Re: 変身すると行動パターンが乱れる(行動しない、重複する)

投稿記事 by ecf5DTTzl6h6lJj02 »

初心者&質問者 さんが書きました:スキル1~4を順番に1回ずつ使用し
5ターン毎に変身(元に戻る)を
繰り返す敵をつくろうとして
つまずいています。


――――――――――――――――

★「敵キャラ 行動パターン」

■変身前の行動パターン

・スキル1 ターン0
・スキル2 ターン1+10*X
・スキル3 ターン2+10*X
・スキル4 ターン3+10*X
・スキル1 ターン10+10*X

■変身後の行動パターン

・スキル1 ターン6+10*X
・スキル2 ターン7+10*X
・スキル3 ターン8+10*X
・スキル4 ターン9+10*X


★「敵グループ バトルイベント」 共にスパンは「ターン」

・条件 ターン 5+10*X
・条件 ターン 10+10*X

――――――――――――――――


上記のように設定しているのですが

・変身後の1ターン、何も行動しない
 (MP不足ではない)

・変身後、スキル3の次のターン変身前に戻ってしまう
 (スキル4を行わない)

・変身前に戻ると、スキル1を2回行う

のようにうまくいきません。

ターン数を変更してみたも
同じスキルを連続してしまったり
失敗します。

どのように改善すればよいか、ご助言いただければ幸いです。
よろしくお願いします。
戦闘中のターンは、戦闘開始時は0で、アクターの行動選択が終了して、行動が解決されるタイミングになると+1
される仕様になっています。
通常、エネミーの取れる行動のチェックがアクターの行動選択よりも前に行われているため、
そのターンに取れる行動かどうかをチェックしているときは、実際のターン数よりも1少ないターン数でチェックされています。
エネミーが変身した時、アクターの行動を決定しなおしますが、この時点で、イベント条件のターン数に0を指定している場合を除いて、ターンは+1されているので、
もし 5ターン目に変身した場合、 ターン数は 5 として計算されています。
上記のエネミーの使用スキルを見ると、 ターン 5 + n * X に該当する項目がありませんので、5 ターン目に使用できるスキルがありません。
また、 6 ターン目の使用可能スキルチェックの時に、ターン数が 5 として扱われるため、使用可能スキルがない状態となってしまいます。
10ターン目の変身のときは、 ターン 10 + 10 * X のスキルがあるため、スキルを使用しますが、
11ターン目の使用可能スキルのチェックの時に ターン数が 10 として扱われているため、このスキルを再使用してしまいます。

上記理由で、行動しなかったり、行動が重複しているのだとおもわれます。

敵キャラの行動パターンから、ターン 10 + 10 * X のスキルを抜いて、
変身の時に、行動の強制で、使用するスキルを設定するようにしてみると、
うまくいくかもしれません。(すいません未実証です)
ご参考になれば。

追記
行動の強制をすると、設定した行動を即実行してしまうのを忘れてました。
行動の強制の代わりにスクリプトで次のコードを実行してみてください。

コード: 全て選択

$gameTroop.members()[エネミーのインデックス].action(0).setSkill(使用させたいスキルのID)
インデックスは先頭(#1)が 0 であることに注意してください。
初心者&質問者
記事: 148
登録日時: 2020年9月03日(木) 09:22

Re: 変身すると行動パターンが乱れる(行動しない、重複する)

投稿記事 by 初心者&質問者 »

どうも、ありがとうございます。
読ませていただきました。
非常に助かります。

理解に自信がないので、確認させていただければと思うのですが


ターン0は、敵グループで指定した敵の先制行動などで

「アクターの行動選択が終了して、行動が解決されるタイミングになると+1」というと
プレイヤー(アクター)がコマンドを選択完了した時点から、プレイヤーと敵の戦闘行動終了までが
1ターン目と、とらえられる理解で、よいでしょうか。

そして、プレイヤーがコマンドを選択するより前に
敵の行動選択のチェックが行われ
「実際のターン数よりも1少ないターン数でチェックされる」、というと

プレイヤーとしては2ターン目の行動を選択している時に
敵は、1ターン目に設定した戦闘行動を選択している
ということになるのでしょうか。


質問投稿で書いたサンプルは
敵は変身ターンには、変身以外の行動をしないように
5ターン目に関して
「敵キャラ」で設定した戦闘行動は空欄に
その代わりに「敵グループ」で変身するように
設定していたのですが

そのあたりが不具合のもとになっているようですね。

そのあたりが、いまいち、よく理解できず

「もし 5ターン目に変身した場合、 ターン数は 5 として計算されています。」
というのは、5ターン目でターン数5ならば問題ない、というように思ってしまうのですが

これは、本来ならば次のターンが6ターン目と数えられないといけないのに
変身のターンに「敵キャラ」で設定した行動が無いから5ターン目と数えられてしまい
何も設定していない5ターン目は行動が空白になってしまう

ということでしょうか。


頭が追い付かないため、よろしければ
とりあえず、ここまで確認させて下さい。
ecf5DTTzl6h6lJj02
記事: 752
登録日時: 2018年12月23日(日) 13:55

Re: 変身すると行動パターンが乱れる(行動しない、重複する)

投稿記事 by ecf5DTTzl6h6lJj02 »

こんにちは。
ターン0は、敵グループで指定した敵の先制行動などで

「アクターの行動選択が終了して、行動が解決されるタイミングになると+1」というと
プレイヤー(アクター)がコマンドを選択完了した時点から、プレイヤーと敵の戦闘行動終了までが
1ターン目と、とらえられる理解で、よいでしょうか。

そして、プレイヤーがコマンドを選択するより前に
敵の行動選択のチェックが行われ
「実際のターン数よりも1少ないターン数でチェックされる」、というと

プレイヤーとしては2ターン目の行動を選択している時に
敵は、1ターン目に設定した戦闘行動を選択している
ということになるのでしょうか。
大雑把で抜かしている手順もありますが、このような形で、戦闘が進行していると考えてください。
  1. 戦闘開始(0ターン)
  2. 条件がターン0になっているバトルイベントの実行
  3. 敵の行動決定
  4. パーティーコマンド選択
  5. アクターのコマンド選択
  6. ターン数 +1
  7. ターン開始時のイベントの実行
  8. 行動結果の表示(実ターン処理)
  9. ターン終了時の処理(ステートの解除やスリップダメージの処理)
  10. ターン終了時のイベントの実行
  11. 以下3~10の繰り返し
(間違ってたら、他の方、指摘お願いします)
「もし 5ターン目に変身した場合、 ターン数は 5 として計算されています。」
というのは、5ターン目でターン数5ならば問題ない、というように思ってしまうのですが

これは、本来ならば次のターンが6ターン目と数えられないといけないのに
変身のターンに「敵キャラ」で設定した行動が無いから5ターン目と数えられてしまい
何も設定していない5ターン目は行動が空白になってしまう

ということでしょうか。
5ターン目 の敵の行動決定時はまだターン数が+1されていないので、
この時点ではターン数を4として計算されるため、
ターン 4 + n * X のものが選択されるはずです。
前述の通り、敵は変身をしたときに、行動を再決定します。
変身は、ターン開始時のバトルイベントで行われているはずです。
上記の戦闘の進行手順から見ると、バトルイベントが実行される前にターン数が +1 されているので、
ターン数が5として計算され、
本来の行動決定時とは違い、 ターン 5 + n * X のものが選択されます。
そして、6ターン目 の行動決定時には まだターン数が+1されていないので、
ターン 5 + n * X のものが選択されます。
この説明は 10ターン目、11ターン目 に置き換えても同じです。

初心者&質問者様の行動パターンで見ると恐らく各ターン次の行動になるはずです。
  1. 変身前 スキル1使用
  2. 変身前 スキル2使用
  3. 変身前 スキル3仕様
  4. 変身前 スキル4仕様
  5. 変身、 変身後 スキル使用なし(使用できるスキルがない)
  6. 変身後 スキル使用なし(使用できるスキルがない)
  7. 変身後 スキル1使用
  8. 変身後 スキル2使用
  9. 変身後 スキル3使用
  10. 変身(変身前に戻る)、 変身前スキル1(ターン 10 + 10 * Xのスキル)使用
  11. 変身前 スキル1(ターン 10 + 10 * Xのスキル)使用
  12. 以降は2~11が繰り返される
ご理解いただけていますでしょうか。
ここまでで、わからない点などありましたら、ご質問ください。

追記:
敵の行動決定のタイミングが間違っていたので、直しました。
ecf5DTTzl6h6lJj02
記事: 752
登録日時: 2018年12月23日(日) 13:55

Re: 変身すると行動パターンが乱れる(行動しない、重複する)

投稿記事 by ecf5DTTzl6h6lJj02 »

サンプルプロジェクトを作ってみました。
(削除しました)

テストプレイで、初心者&質問者様の行動パターンを設定した敵、
想定している(と思われる)パターンで行動するように、行動パターンやバトルイベントを調整した敵、
の2通りの戦闘ができるようにしてあります。
また、F8 もしくは F12 で表示できるコンソール画面に、敵の行動決定時のログを表示するようにしてあるので、
これを見ると、敵の行動がどう決定されているのか、行動しなかったり行動の重複が起こるのか、
もう少しわかりやすくなるかもしれません。

プロジェクト(の中身全部)は再配布禁止させていただきます。
必要なくなったタイミングで削除しますので、よろしくお願いします。
最後に編集したユーザー ecf5DTTzl6h6lJj02 [ 2021年3月27日(土) 23:04 ], 累計 1 回
初心者&質問者
記事: 148
登録日時: 2020年9月03日(木) 09:22

Re: 変身すると行動パターンが乱れる(行動しない、重複する)

投稿記事 by 初心者&質問者 »

[quote="ecf5DTTzl6h6lJj02"]

遅くなってしまい、申し訳ありません。

詳しく、どうもありがとうございました。

特に戦闘時の進行の手順、ありがとうございます。

敵の行動決定とターン数加算のタイミングが
行動無しや行動の重複に関係している事は
何となく分かってきたのですが

どう「行動パターン」を組めばいいかが
まだ理解できず、試行錯誤しています。

アップロードして下さったデータなのですが
大変、申し訳ないことに
「Actors.jsonが読み込めません」
というエラーが出てしまい開けず
プログラムにうといため、テストプレイでのF8を開いても
プログラムが読めない状態です。


特に4~6ターン目だと思うのですが
どう行動パターンを書けばよいか
お手数おかけし、申し訳ないのですが
もしよろしければ、書いていただけないでしょうか。
ecf5DTTzl6h6lJj02
記事: 752
登録日時: 2018年12月23日(日) 13:55

Re: 変身すると行動パターンが乱れる(行動しない、重複する)

投稿記事 by ecf5DTTzl6h6lJj02 »

こんばんは。
初心者&質問者 さんが書きました:
ecf5DTTzl6h6lJj02 さんが書きました:
遅くなってしまい、申し訳ありません。

詳しく、どうもありがとうございました。

特に戦闘時の進行の手順、ありがとうございます。

敵の行動決定とターン数加算のタイミングが
行動無しや行動の重複に関係している事は
何となく分かってきたのですが

どう「行動パターン」を組めばいいかが
まだ理解できず、試行錯誤しています。

アップロードして下さったデータなのですが
大変、申し訳ないことに
「Actors.jsonが読み込めません」
というエラーが出てしまい開けず
プログラムにうといため、テストプレイでのF8を開いても
プログラムが読めない状態です。


特に4~6ターン目だと思うのですが
どう行動パターンを書けばよいか
お手数おかけし、申し訳ないのですが
もしよろしければ、書いていただけないでしょうか。
アップロードしたデータが読み込めない件、
こちらでダウンロードした時は、起動できたので、気づかず、申し訳ありません。
とりあえず、アップしていたプロジェクトは削除して、設定内容をこちらに書き込みます。

変身前の行動パターンの設定(Rの部分は省略)
  • スキル1   ターン 0
  • スキル1   ターン 10*X
  • スキル2   ターン 1+10*X
  • スキル3   ターン 2+10*X
  • スキル4   ターン 3+10*X
変身後の行動パターンの設定(Rの部分は省略)
  • スキル1   ターン 5+10*X
  • スキル2   ターン 6+10*X
  • スキル3   ターン 7+10*X
  • スキル4   ターン 8+10*X
変身した時の行動再設定の際に、次のターン(6ターンや11ターンなど)用に設定してあるスキルが設定されてしまうので、バトルイベントで、行動しないように処理を追加します。

5ターン毎のバトルイベント
条件: ターン 5+10*X  スパン: ターン

コード: 全て選択

◆敵キャラの変身:#1 変身前, 変身後
◆注釈:変身後に敵の行動が再設定されるので、
:  :行動してしまわないように、行動を空にする。
:  :また、変身を繰り返した時に、エネミーの名前に
:  :B、Cなどとアルファベットがくっついてしまうので、
:  :それを防止するための処理もする。
◆スクリプト:$gameTroop.members()[0].clearActions();
:     :$gameTroop._namesCount["変身前"] = 0;
10ターン毎のバトルイベント
条件: ターン 10+10*X  スパン: ターン

コード: 全て選択

◆敵キャラの変身:#1 変身前, 変身前
◆注釈:変身後に敵の行動が再設定されるので、
:  :行動してしまわないように、行動を空にする。
:  :また、変身を繰り返した時に、エネミーの名前に
:  :B、Cなどとアルファベットがくっついてしまうので、
:  :それを防止するための処理もする。
◆スクリプト:$gameTroop.members()[0].clearActions();
:     :$gameTroop._namesCount['変身後'] = 0;
上記の 『変身前』、『変身後』となっている部分は、エネミーの名前なので、適宜置き換えてください。
members()[0] の 0 の部分は、エネミーのインデックスです。
(敵キャラの変身などで、『敵キャラ:』の項目を選択するときに出てくる#1 とか #2 の番号部分
但し #1 を 0 とする)
必要があれば、置き換えてください。

こちらでテストする限り、この設定で、意図している行動パターンになると思います。

追記:
ダウンロードしたプロジェクトファイル、
もしかして、index.html からゲームを起動しようとしましたでしょうか?
Chrome や Firefox 等 ブラウザの仕様により、通常はindex.html から ゲームの起動はできないので、
index.html ではなく、 Game.rpgproject から、MVのエディタを起動して、テストプレイしてください。
初心者&質問者
記事: 148
登録日時: 2020年9月03日(木) 09:22

Re: 変身すると行動パターンが乱れる(行動しない、重複する)

投稿記事 by 初心者&質問者 »

とても丁寧に、どうもありがとうございます。

試してみて、またご報告させていただきます。
初心者&質問者
記事: 148
登録日時: 2020年9月03日(木) 09:22

Re: 変身すると行動パターンが乱れる(行動しない、重複する)

投稿記事 by 初心者&質問者 »

ecf5DTTzl6h6lJj02様

書いていただいたスクリプトを使い
正常に変身を繰り返す戦闘行動を
実行することができました。

戦闘時のシステムの仕組みなど
まだ完全に覚えきっていないのですが
いただいた内容を繰り返し読みながら
今後も制作していきたいと思います。

いろいろお手数おかけしましたが
どうも、ありがとうございました。
初心者&質問者
記事: 148
登録日時: 2020年9月03日(木) 09:22

Re: 変身すると行動パターンが乱れる(行動しない、重複する)

投稿記事 by 初心者&質問者 »

ecf5DTTzl6h6lJj02様

追加で質問なのですが
今回のように同じ敵キャラが、変身したり元の姿に戻ったりを繰り返すのではなく

①敵キャラが変身
②主人公があるスキルを使うと、変身が解ける(敵キャラが元の姿に戻る)
③ ②が行われない限りは、敵の変身は解けない。
(例えば、変身後は敵キャラをバリアが覆うイラストに変更になり、全てのダメージを受けなくなる。
 主人公が「バリア解除」のスキルを使うと、バリアが解除された事を表すため、元のイラストに戻り
 ダメージを与えられるようになる)

という場合、行動パターンの誤差を生じさせない事は
可能でしょうか。

(上記内容が、実際に制作で躓いている部分です)


それと、アップロードしていただいたサンプルですが
どうも、こちらのPCで、RPGツクールMVのフォルダのいくつかに
dateフォルダ内他の一部のファイル名が
勝手に変更されてしまうトラブルがあり

アップロードいただいたサンプルも
それが原因で開けなかったのだと思います。
ファイル名を直したら、改善しました。

せっかく作って下さったのに
さらに直接書いていただきもして
申し訳ありませんでした。
返信する

“MV:質問”に戻る