【VX Ace/RGSS3】 エネミー行動なかなか賢く ― 2012/07/08 08:05:40
VX Ace/RGSS3
Ver 0.7
以前公開した「エネミー行動ちょっと賢く」のリニューアルです。
中身は全然違います。今度は行動をリアルタイムにしました。
本来、データベースでエネミーの行動を指定する際の条件は、
そのエネミーがどのような状態か、です。
HP20%~60%などのように指定すると、そのエネミーのHPを参考にします。
このスクリプトでは、それを敵の味方(Troop)全体で判断します。
HP20%~60%のように指定すると、敵グループ内で該当者がいないかを探し、
いればその行動を、その該当者に対しておこなうようになります。
行動はリアルタイムでおこなわれます。
まだまだいろいろ問題があるかも知れません。
詳細はスクリプトおよびサンプルをご覧ください。
Scene_Battle の execute_action の部分を扱っている
スクリプトとは競合する可能性が高いです。
優先順位10の行動を、通常行動から確実に外すようにしました。
元々含まれないようですが、一応念のため。
ターゲットはデータベースのスキルの「効果範囲」で
指定した通りに動く (たぶん) よう改良しました。
敵数体ランダムは、回数分のアニメーションではなく、
1回のアニメーションでメッセージが回数分となってしまうようです。
ランダムターゲットスキルは本スクリプトの対象としない事をお勧めします...。
2012/11/15の更新で、アクターへのスキルに対応し、
また「使用しない条件」というのも追加しました。
それのスクリプトとサンプルです。
スクリプト (Ver 0.7)
http://web-friend.net/rgss3/moo_rgss3_enemy_clever_v070.txt
サンプル (Ver 0.7)
http://web-friend.net/rgss3/moo_rgss3_enemy_clever_v070.zip
まだまだ不具合があるかも知れませんので、
念のため前のバージョンも残しておきます。
スクリプト (Ver 0.43)
http://web-friend.net/rgss3/moo_rgss3_enemy_clever.txt
サンプル (Ver 0.43)
http://web-friend.net/rgss3/moo_rgss3_enemy_clever.zip
ヒストリー
2012/07/21 本体 Ver0.43 execute_action 部分を修正。
TYPE74RX-T 様の 連撃VX Ace が動かない事に気付き、
動くようにしました。
2012/11/15 本体 Ver 0.5 アクターへおこなうスキルにも対応。
使用しない条件も追加。詳細はスクリプト内参照。
2013/05/05 本体 Ver 0.6 優先度1が未設定の場合は正しく動かない。
優先度1が設定されていないエネミーの場合、
優先度10が設定されていても動作しないバグを修正。
2013/06/14 本体 Ver 0.7 優先度を無視してランダム要素を取り入れ。
優先度10の上から順番以外に、優先度10の中で
ランダムな行動をするパターンを取り入れました。
分かりづらい所に説明が書かれていますが、.
プログラム中の111行目にいろいろ書き加えてあります。
Ver 0.7
以前公開した「エネミー行動ちょっと賢く」のリニューアルです。
中身は全然違います。今度は行動をリアルタイムにしました。
本来、データベースでエネミーの行動を指定する際の条件は、
そのエネミーがどのような状態か、です。
HP20%~60%などのように指定すると、そのエネミーのHPを参考にします。
このスクリプトでは、それを敵の味方(Troop)全体で判断します。
HP20%~60%のように指定すると、敵グループ内で該当者がいないかを探し、
いればその行動を、その該当者に対しておこなうようになります。
行動はリアルタイムでおこなわれます。
まだまだいろいろ問題があるかも知れません。
詳細はスクリプトおよびサンプルをご覧ください。
Scene_Battle の execute_action の部分を扱っている
スクリプトとは競合する可能性が高いです。
優先順位10の行動を、通常行動から確実に外すようにしました。
元々含まれないようですが、一応念のため。
ターゲットはデータベースのスキルの「効果範囲」で
指定した通りに動く (たぶん) よう改良しました。
敵数体ランダムは、回数分のアニメーションではなく、
1回のアニメーションでメッセージが回数分となってしまうようです。
ランダムターゲットスキルは本スクリプトの対象としない事をお勧めします...。
2012/11/15の更新で、アクターへのスキルに対応し、
また「使用しない条件」というのも追加しました。
それのスクリプトとサンプルです。
スクリプト (Ver 0.7)
http://web-friend.net/rgss3/moo_rgss3_enemy_clever_v070.txt
サンプル (Ver 0.7)
http://web-friend.net/rgss3/moo_rgss3_enemy_clever_v070.zip
まだまだ不具合があるかも知れませんので、
念のため前のバージョンも残しておきます。
スクリプト (Ver 0.43)
http://web-friend.net/rgss3/moo_rgss3_enemy_clever.txt
サンプル (Ver 0.43)
http://web-friend.net/rgss3/moo_rgss3_enemy_clever.zip
ヒストリー
2012/07/21 本体 Ver0.43 execute_action 部分を修正。
TYPE74RX-T 様の 連撃VX Ace が動かない事に気付き、
動くようにしました。
2012/11/15 本体 Ver 0.5 アクターへおこなうスキルにも対応。
使用しない条件も追加。詳細はスクリプト内参照。
2013/05/05 本体 Ver 0.6 優先度1が未設定の場合は正しく動かない。
優先度1が設定されていないエネミーの場合、
優先度10が設定されていても動作しないバグを修正。
2013/06/14 本体 Ver 0.7 優先度を無視してランダム要素を取り入れ。
優先度10の上から順番以外に、優先度10の中で
ランダムな行動をするパターンを取り入れました。
分かりづらい所に説明が書かれていますが、.
プログラム中の111行目にいろいろ書き加えてあります。
コメント
_ てるま ― 2012/07/13 23:39:23
_ むー ― 2012/07/14 02:19:38
> てるまさん
HPが0%という条件が含まれるのであれば、そうなると思います。
特殊な事をしていない限り、戦闘不能=HPが0%ですからね。
なおサンプルは、それを考慮した設定になっております。
1%~99%の範囲で設定すれば、生存者に対してのみ
スキルを実行するようになると思います。
戦闘不能者に対して使う場合は、戦闘不能ステートが
付加されているかどうかで判断するようにしてください。
デフォルトだと、スキル使用者自身のHPがどうなっているかを基準にします。
この場合は、0%~であっても問題ありません。
HPが0%、つまり戦闘不能状態であれば、
使用者がスキルを使用できる状態ではないですので...。
HPが0%という条件が含まれるのであれば、そうなると思います。
特殊な事をしていない限り、戦闘不能=HPが0%ですからね。
なおサンプルは、それを考慮した設定になっております。
1%~99%の範囲で設定すれば、生存者に対してのみ
スキルを実行するようになると思います。
戦闘不能者に対して使う場合は、戦闘不能ステートが
付加されているかどうかで判断するようにしてください。
デフォルトだと、スキル使用者自身のHPがどうなっているかを基準にします。
この場合は、0%~であっても問題ありません。
HPが0%、つまり戦闘不能状態であれば、
使用者がスキルを使用できる状態ではないですので...。
_ hino ― 2012/11/10 09:29:51
こんにちは
すごいスクリプトですね!
状況に合わせて行動してくる厄介な敵も作れそうです
質問・・・というより要望なのですが
アクターの状態も条件にいれていただくことは可能でしょうか?
既に毒ステートにかかっているアクターに対して
毒ステート付加の攻撃は使用しない、とか
毒ステートにかかっているアクターを集中的に狙う、
HPが満タンなアクターを避ける、とか・・・。
ご一考いただければ幸いです
すごいスクリプトですね!
状況に合わせて行動してくる厄介な敵も作れそうです
質問・・・というより要望なのですが
アクターの状態も条件にいれていただくことは可能でしょうか?
既に毒ステートにかかっているアクターに対して
毒ステート付加の攻撃は使用しない、とか
毒ステートにかかっているアクターを集中的に狙う、
HPが満タンなアクターを避ける、とか・・・。
ご一考いただければ幸いです
_ むー ― 2012/11/12 22:13:25
> hinoさん
コメントありがとうございます。
あまり時間が取れないのですが、とりあえずやってみます。
でも、期待しないで...(T_T)
コメントありがとうございます。
あまり時間が取れないのですが、とりあえずやってみます。
でも、期待しないで...(T_T)
_ hino ― 2012/11/17 13:34:44
おお、ありがとうございます!
さっそく導入させていただきます!
設定を把握せねば・・・・・・
お忙しい中ありがとうございました!
さっそく導入させていただきます!
設定を把握せねば・・・・・・
お忙しい中ありがとうございました!
_ mamemame ― 2013/05/04 16:49:08
こんにちは。これはイイスクリプト…と導入してみたのですが、
どうにも上手く動きませんでした。
1.VXaceで新規プロジェクトを作成し、
2.スライムのHPを500、MPを20に設定
3.ヒール1の優先度を10、条件をHP1~80%で設定
4.スライムに200程度のダメージを与えても、一向にヒールを使わない。
5.スクリプトを外すと、自分のHPが減れば使う(当たり前ですが)
作成済のプロジェクトはスクリプトの不具合でHPパーセントの条件が動作しないのかも!?と思って試しましたが、スクリプトを導入しなければ攻撃も回復も条件どおりのHPになると使いました。
何かの競合かも、ということで新規で試してみたものの、以上のような結果に…。
何かやり方を間違っているのでしょうか?
どうにも上手く動きませんでした。
1.VXaceで新規プロジェクトを作成し、
2.スライムのHPを500、MPを20に設定
3.ヒール1の優先度を10、条件をHP1~80%で設定
4.スライムに200程度のダメージを与えても、一向にヒールを使わない。
5.スクリプトを外すと、自分のHPが減れば使う(当たり前ですが)
作成済のプロジェクトはスクリプトの不具合でHPパーセントの条件が動作しないのかも!?と思って試しましたが、スクリプトを導入しなければ攻撃も回復も条件どおりのHPになると使いました。
何かの競合かも、ということで新規で試してみたものの、以上のような結果に…。
何かやり方を間違っているのでしょうか?
_ むー ― 2013/05/05 11:29:11
> mamemameさん
ごめんなさい、バグでした。
優先度10に対して優先度1のスキルが設定されていないと
正常に動作しないというバグがありました(それ以外にもちょこっと)。
これを Ver 0.6 で修正しました。一応簡易的なテストはしましたが、
まだ気付かない不具合があるかも知れません。
その時はまた書き込みをお願いします(>_<)
ごめんなさい、バグでした。
優先度10に対して優先度1のスキルが設定されていないと
正常に動作しないというバグがありました(それ以外にもちょこっと)。
これを Ver 0.6 で修正しました。一応簡易的なテストはしましたが、
まだ気付かない不具合があるかも知れません。
その時はまた書き込みをお願いします(>_<)
_ mamemameman ― 2013/06/12 20:34:58
すみません。
導入してしばらく動かさずにいたのですが、使ってみたところ、再び質問したい箇所が出てきましたので書き込ませていただきます。
例:
ヒール HP1%~70% 優先度10
ファイア HP1%~100% 優先度10
と設定し、1ターン目の終了時にバトルイベントで敵のHPを1にします。
最初のターンはファイアを使ってきますが、次のターンは全員総出で
HPを1にしたモンスターが十分に回復しきるまでヒールを使い続けます。これは優先度1の設定の有無では変わりませんでした。
バグではなく仕様なのでしょうか?
>行動の優先順位は、行動一覧の上からになります。
この一文は、同時に条件を満たした場合、上にあるスキルほど優先的に使用するという意味に捉えていたものですから、
条件が満たされている限り同じ行動をひたすら繰り返すのには違和感がありました。
それに、例えば成功率があまり高くない補助技などを優先度10にした場合、ひたすらに効かない技を連打してしまいます。
プロジェクトはほぼ未改造のものを使用致しました。
可能でしたら条件を満たした優先度10スキルの中で上にあるものが優先されるor最悪でも同じ確率で使用するよう、改善を願いたいです。
よろしくお願いいたします。
導入してしばらく動かさずにいたのですが、使ってみたところ、再び質問したい箇所が出てきましたので書き込ませていただきます。
例:
ヒール HP1%~70% 優先度10
ファイア HP1%~100% 優先度10
と設定し、1ターン目の終了時にバトルイベントで敵のHPを1にします。
最初のターンはファイアを使ってきますが、次のターンは全員総出で
HPを1にしたモンスターが十分に回復しきるまでヒールを使い続けます。これは優先度1の設定の有無では変わりませんでした。
バグではなく仕様なのでしょうか?
>行動の優先順位は、行動一覧の上からになります。
この一文は、同時に条件を満たした場合、上にあるスキルほど優先的に使用するという意味に捉えていたものですから、
条件が満たされている限り同じ行動をひたすら繰り返すのには違和感がありました。
それに、例えば成功率があまり高くない補助技などを優先度10にした場合、ひたすらに効かない技を連打してしまいます。
プロジェクトはほぼ未改造のものを使用致しました。
可能でしたら条件を満たした優先度10スキルの中で上にあるものが優先されるor最悪でも同じ確率で使用するよう、改善を願いたいです。
よろしくお願いいたします。
_ むー ― 2013/06/13 20:01:41
> mamemamemanさん
まず確認ですが、スクリプトの注意点に書かれているとおり、
エネミーがエネミーにおこなうスキルの条件はエネミーの状態、
エネミーがアクターにおこなうスキルの条件はアクターの状態となっています。
ヒールの場合はエネミーの状態、ファイアの場合はアクターの状態に依存します。
これはOKでしょうか?
ターンの最後にエネミーのHPを1ににするならば、
そのターン内にエネミーがダ70%以下までメージを受けなければ、
かつアクターのHPが減れば、ファイアを使ってくるでしょう。
次のターンはエネミーのHPが1なので、ヒールを使う事になります。
全エネミーのHPが満タンになれば、アクターのHPが減っていればファイアを、
それ以外なら条件10以外の行動をランダムでおこなうと思います。
> この一文は、同時に条件を満たした場合、上にあるスキルほど
> 優先的に使用するという意味に捉えていたものですから、
これはその捉え方でOKです。
> 条件が満たされている限り同じ行動を
> ひたすら繰り返すのには違和感がありました。
これは仕様です。優先度10の中で行動のランダム制は設けていません。
上の方の条件に当てはまる限り、上の方を使い続けます。
まず確認ですが、スクリプトの注意点に書かれているとおり、
エネミーがエネミーにおこなうスキルの条件はエネミーの状態、
エネミーがアクターにおこなうスキルの条件はアクターの状態となっています。
ヒールの場合はエネミーの状態、ファイアの場合はアクターの状態に依存します。
これはOKでしょうか?
ターンの最後にエネミーのHPを1ににするならば、
そのターン内にエネミーがダ70%以下までメージを受けなければ、
かつアクターのHPが減れば、ファイアを使ってくるでしょう。
次のターンはエネミーのHPが1なので、ヒールを使う事になります。
全エネミーのHPが満タンになれば、アクターのHPが減っていればファイアを、
それ以外なら条件10以外の行動をランダムでおこなうと思います。
> この一文は、同時に条件を満たした場合、上にあるスキルほど
> 優先的に使用するという意味に捉えていたものですから、
これはその捉え方でOKです。
> 条件が満たされている限り同じ行動を
> ひたすら繰り返すのには違和感がありました。
これは仕様です。優先度10の中で行動のランダム制は設けていません。
上の方の条件に当てはまる限り、上の方を使い続けます。
_ mamemameman ― 2013/06/13 22:07:55
ご回答ありがとうございました。
仕様だったのですね。納得致しました。
仕様だったのですね。納得致しました。
_ むー ― 2013/06/13 22:49:25
> mamemamemanさん
とはいえ、ランダム制は面白いアイディアと思いますので、
時間がある時にちょっと作ってみたいと思います。
とはいえ、ランダム制は面白いアイディアと思いますので、
時間がある時にちょっと作ってみたいと思います。
_ むー ― 2013/06/14 08:16:06
> mamemamemanさん
優先度のランダム要素を加えてみました。
原則は上から順番ですが、それを無視してランダム化させる機能です。
優先度のランダム要素を加えてみました。
原則は上から順番ですが、それを無視してランダム化させる機能です。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※投稿には管理者が設定した質問に答える必要があります。
ご報告させていただきます。
敵同士の間で回復スキルを使うように設定する時に、
行動条件を「0%~」からにすると、戦闘不能状態でも回復スキルを使い続けてしまうようです。