ウェーブ式戦闘を作りたい。

アバター
どくろん
記事: 16
登録日時: 2017年2月23日(木) 13:34
連絡を取る:

ウェーブ式戦闘を作りたい。

投稿記事by どくろん » 2017年2月25日(土) 10:32

新参のどくろんというものです。

敵パーティを全滅させたら第二波、第三波と次々と流れ込んでくる戦闘を作りたいなぁと思っています。

画面中央に『wave 1/3』という表示があると嬉しいです。


何か良いプラグインを作ってくださる方、若しくはこんなの知ってるよという方がいらっしゃると嬉しいです……お願い致します。

アバター
どくろん
記事: 16
登録日時: 2017年2月23日(木) 13:34
連絡を取る:

Re: ウェーブ式戦闘を作りたい。

投稿記事by どくろん » 2017年2月25日(土) 22:07

アバター
ビービー
記事: 308
登録日時: 2016年1月12日(火) 18:40

Re: ウェーブ式戦闘を作りたい。

投稿記事by ビービー » 2017年2月26日(日) 04:00

説明が難しいのですが一応デフォルトの機能とスクリプトで可能な方法があるので書いておきます。
※この方法で可能な敵の数は全WAVEで合計8体までです。

バトルイベント1
条件:ターン0 スパン:バトル
◆敵キャラのステート変更:敵グループ全体, + 不死身
◆変数の操作:#0061 WAVE1 = 0

バトルイベント2
条件:敵キャラHP (1) <= 0% スパン:バトル
◆注釈:一つのWAVEに敵が一体の場合、変数操作と条件分岐はいらない
◆変数の操作:#0061 WAVE1 += 1
◆敵キャラのステート変更:#1 ゾンビS, - 不死身
◆スクリプト:if(BattleManager._logWindow !== null){
:     : BattleManager._logWindow.push('addText', 'ゾンビSを倒した!');
:     : BattleManager._logWindow.push('clear');
:     :}
◆注釈:条件分岐の2の部分はWAVE1の敵の数だけ用意
◆条件分岐:WAVE1 = 2
◆スクリプト:BattleManager.endTurn();
◆ウェイト:60フレーム
◆敵キャラの出現:#2 スライム
◆注釈:画面全体アニメーションをWAVEの数だけ用意
◆スクリプト:if(BattleManager._logWindow !== null){
:     : BattleManager._logWindow.push('addText', '新たな敵が現れた!');
:     : BattleManager._logWindow.push('wait');
:     : BattleManager._logWindow.push('clear');
:     :}
◆戦闘アニメーションの表示:#2 スライム, 花粉
◆注釈:これより下は中間のWAVEのみ最終WAVEには必要なし
◆敵キャラのステート変更:#2 スライム, + 不死身

:分岐終了

バトルイベント3~
バトルイベント2を敵の数だけ作成。

こんな感じです。
少しデフォルトのバトルログの表示と変わってしまいますが、
だいたい動画のような事ができているかと思います。
------------------------------------------------------
Twitterやってます。
https://twitter.com/BB_ENTER
ブログもやってます。
http://bb-entertainment-blog.blogspot.jp/
アバター
どくろん
記事: 16
登録日時: 2017年2月23日(木) 13:34
連絡を取る:

Re: ウェーブ式戦闘を作りたい。

投稿記事by どくろん » 2017年2月26日(日) 15:12

>>ピーピーさん

お返事ありがとうございます!!!

SyntaxError: Unexpected token ILLEGAL
と出てしまったのですが、何処か調整した方がいいですかね?
アバター
ビービー
記事: 308
登録日時: 2016年1月12日(火) 18:40

Re: ウェーブ式戦闘を作りたい。

投稿記事by ビービー » 2017年2月26日(日) 16:12

んーなぜでしょうか??

スクリプトの打ち間違えかもしれませんのでコピペ用にコードを書いておきます。
日本語以外の部分は書き換えずにコピーしてください。

:idea: 敵を倒したというバトルログの表示

コード: 全て選択

if(BattleManager._logWindow !== null){
  BattleManager._logWindow.push('addText', '敵を倒した!');
  BattleManager._logWindow.push('clear');
}

:idea: ターン終了処理

コード: 全て選択

BattleManager.endTurn();

:idea: 敵が現れたときのバトルログの表示

コード: 全て選択

if(BattleManager._logWindow !== null){
  BattleManager._logWindow.push('addText', '新たな敵が現れた!');
  BattleManager._logWindow.push('wait');
  BattleManager._logWindow.push('clear');
}


あとどうでもいいんですが、ピーピー(PP)ではなくビービー(BB)です :lol:
------------------------------------------------------
Twitterやってます。
https://twitter.com/BB_ENTER
ブログもやってます。
http://bb-entertainment-blog.blogspot.jp/
アバター
どくろん
記事: 16
登録日時: 2017年2月23日(木) 13:34
連絡を取る:

Re: ウェーブ式戦闘を作りたい。

投稿記事by どくろん » 2017年2月26日(日) 17:05

>>ビービーさん
も、申し訳ないっ!!!失礼しました!

やったみたところ、エラー事態は起きなかったんですが、通常戦闘と変わりなかったです・・・

入力したスクショか何かありますか?
もしかしたら、導入の仕方事態間違えてるかもしれません・・・
アバター
ビービー
記事: 308
登録日時: 2016年1月12日(火) 18:40

Re: ウェーブ式戦闘を作りたい。

投稿記事by ビービー » 2017年2月26日(日) 17:27

WAVE1以降の敵も事前に戦闘グループに追加しておく必要があります。
追加したモンスターのグラフィックを右クリックすると「途中から出現」と表示されるのでクリックしてください。
すると半透明になります。
この状態の敵は戦闘開始時には出てこず、イベントコマンドの「敵キャラの出現…」でのみ戦闘に参加させることが可能です。
キャプチャ.JPG
キャプチャ.JPG (16.3 KiB) 閲覧数: 11704 回


それとWAVE表示の方法をアニメーション以外にも可能だったので紹介しておきます。
◆ピクチャの表示:#1, Castle, 左上 (0,0), (50%,50%), 255, 通常
◆戦闘アニメーションの表示:#2 スライム, 水/全体3
◆文章:なし, 透明, 中
:  :\{\{\{\{\{\{ WAVE 2/3\.\.\.\.\|\^
◆ピクチャの消去:#1
この順番でイベントを組むとアニメーション終了と同時にピクチャが消えていい感じかと思います。
文章の表示は制御文字で2秒後に自動で消えるように設定してあるのでアニメーションの長さに応じて改造してください。

バトルイベントの組み方を全部スクショとるのは大変なのでとりあえず一枚置いときます。
添付ファイル
キャプチャ3.JPG
------------------------------------------------------
Twitterやってます。
https://twitter.com/BB_ENTER
ブログもやってます。
http://bb-entertainment-blog.blogspot.jp/
アバター
ビービー
記事: 308
登録日時: 2016年1月12日(火) 18:40

Re: ウェーブ式戦闘を作りたい。

投稿記事by ビービー » 2017年2月26日(日) 17:35

あ、スクショのハロルドに毒を付与しているのはスクリプトによるターンエンド処理でステートが機能しているかを試したものなので無視してください。

ちなみにちゃんとステートの効果が出ていたのでこのタイミングでアクターにリジェネ的なターン終了時に回復するステートなどを付与するとWAVEごとに回復という事も可能です。
------------------------------------------------------
Twitterやってます。
https://twitter.com/BB_ENTER
ブログもやってます。
http://bb-entertainment-blog.blogspot.jp/
アバター
どくろん
記事: 16
登録日時: 2017年2月23日(木) 13:34
連絡を取る:

Re: ウェーブ式戦闘を作りたい。

投稿記事by どくろん » 2017年2月26日(日) 22:15

うーん・・・何がいけないんでしょう・・・WAVE表示されるようになっただけで他はからないです・・・。
スクショを見ていただいても良いでしょうか?
添付ファイル
スクリーンショット 2017-02-26 22.12.46.png
スクリーンショット 2017-02-26 22.12.40.png
スクリーンショット 2017-02-26 22.12.29.png
スクリーンショット 2017-02-26 22.12.15.png
アバター
ビービー
記事: 308
登録日時: 2016年1月12日(火) 18:40

Re: ウェーブ式戦闘を作りたい。

投稿記事by ビービー » 2017年2月27日(月) 02:07

最初にスライムが二体出現する戦闘のようですが、
敵キャラのHPを条件にしているページが一つしかないのが一番の原因だと思います。
HPを条件にしているページは敵キャラの数だけ必要です。

それとバトルイベント1ページ目で全体の不死身を解除していますが、逆です。

2ページ目の三行目で敵全体の不死身を解除していますがこのページの条件になっている敵のみにしてください。
一度敵を不死身にしているのは、HP0を条件にしていても、現在いる敵がすべて戦闘不能になった場合即時に戦闘終了が呼び出されてしまうのを防ぐためなので、その敵自身のHPが0になってその敵のHPを条件にしたバトルイベントが呼び出されるまでは解除しないでおいてください。

あと2ページ目の最後にへんなのの不死身を解除していますが、こちらも逆に付加しないとバトルイベントが発生しなくなってしまいます。

バトルイベントの2ページ目をコピーし3ページ目を作成、
条件をもう一体のスライムのHPにしてみてください。

↓どくろんさんのスクショに似せつつ整理したイベント例です。
:idea: バトルイベント2ページ目
条件:ターン0 スパン:バトル
◆文章:なし, 透明, 中
:  :\{\{\{\{\{\{ WAVE 1/3\.\.\.\.\|\^
◆敵キャラのステート変更:敵グループ全体, + 不死身
◆変数の操作:#0061 WAVE1 = 0

:idea: バトルイベント2ページ目
条件:敵キャラHP (1) <= 0% スパン:バトル
ID1の敵のHPが0になったさいに一度だけ呼び出されるイベントです
◆注釈:一つのWAVEに敵が一体の場合、変数操作と条件分岐はいらない
◆変数の操作:#0061 WAVE1 += 1
WAVE1で倒した敵の数をカウントしています。
◆敵キャラのステート変更:#1 スライム, - 不死身
イベントが開始された後にID1の敵(このイベントの条件の敵)だけ不死身を解いています。
◆スクリプト:if(BattleManager._logWindow !== null){
:     : BattleManager._logWindow.push('addText', 'スライムを倒した!');
:     : BattleManager._logWindow.push('clear');
:     :}
◆条件分岐:WAVE1 = 2
↑この条件分岐でWAVE1の敵をすべて倒したかを判定し、倒している場合これ以降が実行されます。
◆スクリプト:BattleManager.endTurn();
◆ウェイト:60フレーム
◆敵キャラの出現:#3 へんなの
◆スクリプト:if(BattleManager._logWindow !== null){
:     : BattleManager._logWindow.push('addText', '新たな敵が現れた!');
:     : BattleManager._logWindow.push('wait');
:     : BattleManager._logWindow.push('clear');
:     :}
◆文章:なし, 透明, 中
:  :\{\{\{\{\{\{ WAVE 2/3\.\.\.\.\|\^
◆注釈:これより下は中間のWAVEのみ最終WAVEには必要なし
◆敵キャラのステート変更:敵グループ全体, + 不死身

:分岐終了

:idea: バトルイベント3ページ目
条件:敵キャラHP (2) <= 0% スパン:バトル
ID2の敵のHPが0になったさいに一度だけ呼び出されるイベントです
◆注釈:一つのWAVEに敵が一体の場合、変数操作と条件分岐はいらない
◆変数の操作:#0061 WAVE1 += 1
WAVE1で倒した敵の数をカウントしています。
◆敵キャラのステート変更:#2 スライム, - 不死身
イベントが開始された後にID2の敵(このイベントの条件の敵)だけ不死身を解いています。
◆スクリプト:if(BattleManager._logWindow !== null){
:     : BattleManager._logWindow.push('addText', 'スライムを倒した!');
:     : BattleManager._logWindow.push('clear');
:     :}
◆条件分岐:WAVE1 = 2
↑この条件分岐でWAVE1の敵をすべて倒したかを判定し、倒している場合これ以降が実行されます。
◆スクリプト:BattleManager.endTurn();
◆ウェイト:60フレーム
◆敵キャラの出現:#3 へんなの
◆スクリプト:if(BattleManager._logWindow !== null){
:     : BattleManager._logWindow.push('addText', '新たな敵が現れた!');
:     : BattleManager._logWindow.push('wait');
:     : BattleManager._logWindow.push('clear');
:     :}
◆文章:なし, 透明, 中
:  :\{\{\{\{\{\{ WAVE 2/3\.\.\.\.\|\^
◆注釈:これより下は中間のWAVEのみ最終WAVEには必要なし
◆敵キャラのステート変更:敵グループ全体, + 不死身

:分岐終了
------------------------------------------------------
Twitterやってます。
https://twitter.com/BB_ENTER
ブログもやってます。
http://bb-entertainment-blog.blogspot.jp/

“MV:プラグイン素材のリクエスト” へ戻る