色々置き場 コミメカ2版


 質問答え用に考えてみたり、なんとなーく作ってみたりしたスクリプトです。
 コミックメーカー2用です。
順番入れ替え可能なバトルシステム
変数右寄せ表示



・順番入れ替え可能なバトルシステム

 他所様のサンプルスクリプト二つを参考に初めてのバトルいじり。
 質問答え用にオーダーメード(?)。もっと色んなアレンジも可能です。
 ただでさえ長いので細かい説明は端折らせていただきます……。

 味方4人AさんからDさん
 数値変数は[]、文字列変数は{}で囲っています。


順番を選択。

選択前
 {選択1}:A
 {選択2}:B
 {選択3}:C
 {選択4}:D
 {選択5}:(空白)
 {1}:(空白)
 {2}:(空白)
 {3}:(空白)
 {4}:(空白)
 「選択」に移動

選択
 [順番]=[順番]+1
 IF[順番]>1 {選択5}:終了
 メッセージの表示:%順番%人目を選んでください
 選択肢の表示
  &選択1& … 「A」
  &選択2& … 「B」
  &選択3& … 「C」
  &選択4& … 「D」
  &選択5& … 「確認」


 {選択}:&選択1&
 {選択1}:(空白)
 「追加」に移動


 {選択}:&選択2&
 {選択2}:(空白)
 「追加」に移動


 {選択}:&選択3&
 {選択3}:(空白)
 「追加」に移動


 {選択}:&選択4&
 {選択4}:(空白)
 「追加」に移動

追加
 IF[順番]=1 {1}:&選択&
 IF[順番]=2 {2}:&選択&
 IF[順番]=3 {3}:&選択&
 IF[順番]=4 {4}:&選択&
 IF[順番]=4 「確認」に移動
 「選択」に移動

確認
 [順番]OFF
 メッセージの表示:&1&、&2&、&3&、&4&の順番でよろしいですか?
 選択肢の表示
  はい … 進む
  いいえ … 選択前

進む
 {選択1}:(空白)
 {選択2}:(空白)
 {選択3}:(空白)
 {選択4}:(空白)
 {選択5}:(空白)
 「戦闘準備」に移動

戦闘準備
 (戦闘画面への画像切り替えなど)


味方
 [順番]=[順番]+1
 「次・戻る」に移動

次・戻る
 IF[順番]=1、{1}=A 「A戦闘」に移動
 IF[順番]=1、{1}=B 「B戦闘」に移動
 IF[順番]=1、{1}=C 「C戦闘」に移動
 IF[順番]=1、{1}=D 「D戦闘」に移動
 (IF[順番]=2〜4、{2〜4}を使い、同様に)
 IF[順番]=4、{4}=D 「D戦闘」に移動
 [順番]OFF
 「敵」に移動

「味方」「次・戻る」に分けているのは、下記にある「使用選択」で「やめる」を選択した時、それぞれの戦闘選択に戻る為。
敵が一度に二匹(もしくは二人)以上で、その組み合わせがいくつもある時は、「敵」は↑と同様にして、↑では二ページになっているのを一ページにまとめる。戦闘選択に戻ることはない為。
後は、味方それぞれのターン終了後に『「味方」へ移動』を入れる。
「敵」を「味方」同様にした時は敵もそれぞれターン終了後『「敵」へ移動』を入る。

味方に薬・治癒魔法などを使う時の選択は、{選択}{選択1}を再利用して、今誰のターンなのか、誰に何を使うのか判断させる。
{選択}が今ターンのキャラ、{選択1}が薬・治癒魔法使用対象キャラ。

A戦闘
 {選択}:A
 選択肢の表示
  攻撃 … 「A攻撃」に移動
  防御 … 「A防御」に移動
  薬を使用 … 「薬使用」に移動
  治癒魔法 … 「治癒使用」に移動


B戦闘〜D戦闘、「B〜D攻撃」「B〜D防御」を使用し、同様に。


薬使用([薬]は数値変数、薬の在庫数)
 IF[薬]=0 メッセージの表示:薬がありません。
 IF[薬]=0 「次・戻る」に移動
 「使用選択」に移動

治癒使用(○は治癒魔法使用時のMP消費量)
 IF[AMP]<○、{選択}=A メッセージの表示:MPが足りません。
 IF[AMP]<○、{選択}=A 「A戦闘」に移動
 IF[BMP]<○、{選択}=B メッセージの表示:MPが足りません。
 IF[BMP]<○、{選択}=B 「B戦闘」に移動
 IF[CMP]<○、{選択}=C メッセージの表示:MPが足りません。
 IF[CMP]<○、{選択}=C 「C戦闘」に移動
 IF[DMP]<○、{選択}=D メッセージの表示:MPが足りません。
 IF[DMP]<○、{選択}=D 「D戦闘」に移動
 {選択}:&選択&治癒
 「使用選択」に移動

使用選択(誰に向けて治癒・薬を使うかを選択)
 選択肢の表示
  &1& … 「1」に移動
  &2& … 「2」に移動
  &3& … 「3」に移動
  &4& … 「4」に移動
  やめる … 「次・戻る」


 {選択1}:&1&
 「選択一括」に移動


 {選択1}:&2&
 「選択一括」に移動


 {選択1}:&3&
 「選択一括」に移動


 {選択1}:&4&
 「選択一括」に移動

選択一括
 IF{選択}⊆治癒 「治癒一括」に移動
 「薬一括」に移動

薬一括(□は薬使用時のHP回復量)
 [薬]=[薬]−1
 IF{選択1}=A [AHP]=[AHP]+□
 IF{選択1}=B [BHP]=[BHP]+□
 IF{選択1}=C [CHP]=[CHP]+□
 IF{選択1}=D [DHP]=[DHP]+□
 サブルーチンコール「パワー表示」
 メッセージの表示:&選択1&はHPが□回復した。
 「味方」に移動

治癒一括(△は治癒魔法使用時のHP回復量)
 IF{選択}⊆A [AMP]=[AMP]−○
 IF{選択}⊆B [BMP]=[BMP]−○
 IF{選択}⊆C [CMP]=[CMP]−○
 IF{選択}⊆D [DMP]=[DMP]−○
 IF{選択1}=A [AHP]=[AHP]+△
 IF{選択1}=B [BHP]=[BHP]+△
 IF{選択1}=C [CHP]=[CHP]+△
 IF{選択1}=D [DHP]=[DHP]+△
 サブルーチンコール「パワー表示」
 メッセージの表示:&選択1&はHPが△回復した。
 「味方に移動」

治癒魔法の効果が魔法使用キャラによって違う場合には少し変わるが、基本はこんな感じ。
ABの順番の時、Aのターンで薬を選択、2番目のBを選択すると。
「A戦闘」({選択}A)→「薬使用」→「使用選択」→「2」({選択1}B)→「選択一括」→「薬一括」『BはHPが□回復した。』
Bのターンで治癒魔法を選択、1番目のAを選択すると。
「B戦闘」({選択}B)→「治癒使用」→「使用選択」→「1」({選択1}A)→「選択一括」→「治癒一括」『AはHPが△回復した。』&BMP消費

攻撃を受けるとキャラがチカチカするのはあり・棒グラフ式・体力などの表示とキャラ表示は被らない・敵が味方全員に攻撃することはあり、ということだったので↓。
棒グラフ作成は略。


キャラ1(一人目の位置に。表示効果なし・すぐに画面へ反映させるチェックなし)
 IF{1}=A グラフィックの表示:A.bmp
 IF{1}=B グラフィックの表示:B.bmp
 IF{1}=C グラフィックの表示:C.bmp
 IF{1}=D グラフィックの表示:D.bmp
 サブルーチンコール復帰

キャラ2(二人目の位置に。表示効果なし・すぐに画面へ反映させるチェックなし)
 IF{2}=A グラフィックの表示:A.bmp
 IF{2}=B グラフィックの表示:B.bmp
 IF{2}=C グラフィックの表示:C.bmp
 IF{2}=D グラフィックの表示:D.bmp
 サブルーチンコール復帰

キャラ3(三人目の位置に。表示効果なし・すぐに画面へ反映させるチェックなし)
 IF{3}=A グラフィックの表示:A.bmp
 IF{3}=B グラフィックの表示:B.bmp
 IF{3}=C グラフィックの表示:C.bmp
 IF{3}=D グラフィックの表示:D.bmp
 サブルーチンコール復帰

キャラ4(四人目の位置に。表示効果なし・すぐに画面へ反映させるチェックなし)
 IF{4}=A グラフィックの表示:A.bmp
 IF{4}=B グラフィックの表示:B.bmp
 IF{4}=C グラフィックの表示:C.bmp
 IF{4}=D グラフィックの表示:D.bmp
 サブルーチンコール復帰

数値変数[HP][MP]共に初期値0を追加。

パワー表示
 サブルーチンコール「1P」
 IF{2}≠(空白) サブルーチンコール「2P」
 IF{3}≠(空白) サブルーチンコール「3P」
 IF{4}≠(空白) サブルーチンコール「4P」
 サブルーチンコール復帰

1P
 IF {1}=A [HP]=[AHP]
 IF {1}=A [MP]=[AMP]
 IF {1}=B [HP]=[BHP]
 IF {1}=B [MP]=[BMP]
 IF {1}=C [HP]=[CHP]
 IF {1}=C [MP]=[CMP]
 IF {1}=D [HP]=[DHP]
 IF {1}=D [MP]=[DMP]
(一人目の位置に[HP][MP]の棒グラフ)
 サブルーチンコール復帰

2P
 IF {2}=A [HP]=[AHP]
 IF {2}=A [MP]=[AMP]
 IF {2}=B [HP]=[BHP]
 IF {2}=B [MP]=[BMP]
 IF {2}=C [HP]=[CHP]
 IF {2}=C [MP]=[CMP]
 IF {2}=D [HP]=[DHP]
 IF {2}=D [MP]=[DMP]
(二人目の位置に[HP][MP]の棒グラフ)
 サブルーチンコール復帰

3P、4P同様。

残るは敵からの攻撃の設定。
仮に、敵の行動は「全員攻撃」「回復」「1攻撃」「2攻撃」「3攻撃」「4攻撃」の6つ、確率は均等とする。
他の所で乱数を使っているとまた変わって来るが、仮に他の所では乱数は使っておらず、乱数の上限値は最初の1000のままとする。
敵キャラによっても変わるが、下は仮に固定キャラ1匹だけの場合。
数値変数[敵]初期値0(他の数値変数リサイクル可)


 [敵]=[@乱数]mod3
 IF{2}≠(空白) [敵]=[@乱数]mod4
 IF{3}≠(空白) [敵]=[@乱数]mod5
 IF{4}≠(空白) [敵]=[@乱数]mod6
 IF[敵]=0 「全員攻撃」に移動
 IF[敵]=1 「回復」に移動
 IF[敵]=2 「1攻撃」に移動
 IF[敵]=3 「2攻撃」に移動
 IF[敵]=4 「3攻撃」に移動
 「4攻撃」に移動

味方をチカチカさせる。キャラ表示をサブルーチンコールするが、この時に一工夫。
キャラ1〜4は「表示効果なし・すぐに画面へ反映させるチェックなし」になっている。この後で戦闘場面のフレーム画像を、隅っこをほんの少しだけ「すぐに画面へ反映させる」にチェックして表示することで、一気にキャラ1〜4を描画させる。5×5もあれば充分。
キャラの上に一瞬現れる画像をチカチカ.bmpとする。

1攻撃(■は味方のダメージ)
 グラフィックの表示:チカチカ.bmp(一人目の位置・表示効果なし・すぐに画面へ反映させるチェックあり)
 サブルーチンコール「キャラ1」
 グラフィックの表示:フレーム.bmp(隅・表示効果なし・すぐに画面へ反映させるチェックあり)
 グラフィックの表示:チカチカ.bmp(一人目の位置・表示効果なし・すぐに画面へ反映させるチェックあり)
 サブルーチンコール「キャラ1」
 グラフィックの表示:フレーム.bmp(隅・表示効果なし・すぐに画面へ反映させるチェックあり)
 IF{1}=A [AHP]=[AHP]−■
 IF{1}=B [BHP]=[BHP]−■
 IF{1}=C [CHP]=[CHP]−■
 IF{1}=D [DHP]=[DHP]−■
 メッセージの表示:&1&は■のダメージを受けた!
 サブルーチンコール「1P」
 「味方」に移動

2攻撃、3攻撃、4攻撃も同様に。位置や変数を変えて。
全員攻撃の時は、チカチカ.bmpの表示にもフレーム.bmpの隅を使う。


全員攻撃
 グラフィックの表示:チカチカ.bmp(一人目の位置・表示効果なし・すぐに画面へ反映させるチェックなし)
 IF{2}≠(空白) グラフィックの表示:チカチカ.bmp(二人目の位置・表示効果なし・すぐに画面へ反映させるチェックなし)
 IF{3}≠(空白) グラフィックの表示:チカチカ.bmp(三人目の位置・表示効果なし・すぐに画面へ反映させるチェックなし)
 IF{4}≠(空白) グラフィックの表示:チカチカ.bmp(四人目の位置・表示効果なし・すぐに画面へ反映させるチェックなし)
 グラフィックの表示:フレーム.bmp(隅・表示効果なし・すぐに画面へ反映させるチェックあり)
 サブルーチンコール「キャラ1」
 IF{2}≠(空白) サブルーチンコール「キャラ2」
 IF{3}≠(空白) サブルーチンコール「キャラ3」
 IF{4}≠(空白) サブルーチンコール「キャラ4」
 グラフィックの表示:フレーム.bmp(隅・表示効果なし・すぐに画面へ反映させるチェックあり)
 (↑繰り返し。ダメージ計算。略)
 「味方」に移動

敵キャラの順番、敵の行動の確率、ダメージの度合いなども関係してもっとページ分けをしたり色々ありますが、基本は以上。

 ……い、一応使えます。(汗)



・変数右寄せ表示

 数値を右寄せ表示(っぽく)したいが、桁が変わると表示が上手くいかない。
 ということでしたので、桁別に表示位置を設定すればいいかも?と考案。
 以下、数値は通常描画という設定で。微妙に手を加えました。

数値が-1〜-9と0〜9だけなら、

グラフィックの表示:(ポイント表示消去・覆いきる!)
IF[ポイント]=>0 メッセージの表示:%ポイント%(プラスポイント表示位置)
IF[ポイント]<0 メッセージの表示:%ポイント%(マイナスポイント表示位置)

数値が-10以下、10以上もある時はマイナスの二桁も判断しなければならない。
数値変数判断にはマイナスが使えないので、こちらでマイナスの判断数値を作っておく。数値変数[判断]初期値0を設定し、スタートページに
[判断]=0-10
を入れる。これで、[判断]=-10に。

グラフィックの表示:(ポイント表示消去)
IF[ポイント]=>0 メッセージの表示:%ポイント%(0〜9表示位置)
IF[ポイント]=>10 グラフィックの表示:(ポイント表示消去)
IF[ポイント]=>10 メッセージの表示:%ポイント%(10〜99表示位置)
IF[ポイント]<0 メッセージの表示;%ポイント%(-1〜-9表示位置)
IF[ポイント]<=[判断]グラフィックの表示:(表示位置消去)
IF[ポイント]<=[判断] メッセージの表示:%ポイント%(-10〜-99表示位置)

表示位置は右端を同じに揃え、後は左端を一桁分・二桁分・三桁分にそれぞれ伸ばすだけ。
 以上。