まず
■DB読込(可変): CSelf10[主人公ID] = 可変DB[ パーティー情報 : メイン設定 : CSelf11[○番目?] ] (6 : 0 : -)
が設定されていますが、戦闘中の処理では、主人公IDを使用しておらず、パーティの並び順がデータIDになっています。
そのため、サンプルゲームのウルファールは主人公ID[12]ですが、パーティの1人目にいるので、戦闘中はデータID[0]になります。
戦闘の処理で使う可変DBの中で、可変DB[10〜13]は、
データID[0〜5]=主人公(パーティの並び順)
データID[10〜16]=敵キャラ(ユーザーDB[13]の項目[0〜6])
と言った仕様になりますが、可変DB[14:×┣ コマンド処理リスト]は異なっており、
まずデータID[0]は一時保存用としてカウンターによる反撃を行う時に使われます。
データID[1]以降はターン内の行動順(敏捷性順)に設定されており、主人公1人、敵キャラ1体の場合で、主人公の方が敏捷性が高い場合は、
データID[1]=0(主人公)
データID[2]=10(敵キャラ)
となり、敵キャラの方が敏捷性が高い場合は、
データID[1]=10
データID[2]=0
となります。
固定では無いので、もしも技能IDがあるかどうかを調べる場合は、ループ処理でデータIDをすらしながらひとつずつ技能IDを調べていく必要があります。
可変DB[14]の設定は、戦闘不能や睡眠などの状態異常になって、技能が発動しなかった場合でも、発動技能の記録が残ります。
そのため、可変DB[14]を調べただけでは、技能を使ったかどうかまでは分かりません。
技能「みらいよち(開始)」をユーザーDB[0:技能]でどのように設定しているのかが分かりませんが、例えば…
項目[2]効果対象=イベント呼出(バトル)
項目[3](あれば)┗イベント番号指定=500215
などと設定し、コモンイベント[215]に
■変数操作: V97[開始ターン] = 1 + 0
■変数操作: V98[経過ターン] = 1 〜 3
■変数操作: V99[発動ターン] = V98[経過ターン] + 1
を設定すれば、可変DB[14]で技能を発動したかどうかを調べなくても、技能を使ったかどうかが分かります。
またこの時に発動者の情報(データID[0〜5])も変数に保存すれば、誰が使用したのかを調べる処理が必要なくなります。
技能「みらいよち(開始)」を複数の主人公が同時に使った場合や同じ主人公が2ターン連続で使った場合は、
現在の設定では技能を使う度に通常変数[97〜99]の値が初期化され、
最初に使った技能「みらいよち(開始)」が無効(SPを無駄に消費)になってしまいます。
また技能「みらいよち(開始)」を毎ターンごとに使った場合は、毎ターンごとに通常変数[97〜99]の値が初期化され、
いつまで経っても技能「みらいよち処理(仮名)」が発動しなくなります。
この仕様のままで良いのか、別の仕様にしたいのかなどによって、設定方法が変わってくるでしょう。
技能の発動は、以下の設定を行えば可能です。
■可変DB書込:DB[ ×┣ コマンド処理リスト : 1 : 発動者番号 ] (14 : : 0) = 0(発動する主人公のデータID[0〜5]を設定)
■可変DB書込:DB[ ×┣ コマンド処理リスト : 1 : 受け側番号 ] (14 : : 2) = -21(ランダムで敵キャラ一体を攻撃)
■可変DB書込:DB[ ×┣ コマンド処理リスト : 1 : 発動技能 ] (14 : : 3) = 38
■イベントの挿入[名]: ["X[戦]行動実行結果算出"] <コモンEv 164> / 1 / -1:通常処理 / 0:通常(カウンター有り
WoditorEvCOMMAND_START
[250][5,4]<0>(16,1,0,327680,0)("","×┣ コマンド処理リスト","","発動者番号")
[250][5,4]<0>(16,1,2,327680,-21)("","×┣ コマンド処理リスト","","受け側番号")
[250][5,4]<0>(16,1,3,327680,38)("","×┣ コマンド処理リスト","","発動技能")
[300][5,1]<0>(0,3,1,-1,0)("X[戦]行動実行結果算出")
WoditorEvCOMMAND_END
試しにコモンイベント[205:○[変更可]1ターン終了時処理]の0行目に設定して、ターン終了時に発動するかどうかを確認してみると良いでしょう。
> いつもお世話になっております。
> すごく初歩的なことかもしれないのですが、自分では上手くできなかったので
> 皆様のお力を貸していただければ幸いです…!
>
> [やりたいこと]
>
> 敵に追いかけられる鬼ごっこで、鬼に捕まった時にイベントを発生させたいのですが、
>
> ・プレイヤーを操作して、イベントに接触した際には「イベントが発生する」。
> ・プレイヤーを操作せずに、敵イベントから接触してきた場合「イベントが発生しない」。
>
> のような現象が起きてしまい、
> 「主人公が静止状態の際に敵から接触した場合イベントが発生しない」
> に困っています。
>
> 主人公を操作しない限り、周りを敵に囲まれても「ゲームオーバー」にならないのです。
>
> ちょっとでもプレイヤーが主人公を操作すれば、イベントが発生するのですが、
>
> 「敵から接触してきた場合でもイベントが発生する」方法が知りたいです。
>
> お知恵を貸していただける方がいましたら、よろしくお願いいたします!
マップイベントの起動条件を「イベント接触」に変えれば、
主人公から触れた時とマップイベントから触れた時の両方でイベントが実行します。
いつもお世話になっております。
すごく初歩的なことかもしれないのですが、自分では上手くできなかったので
皆様のお力を貸していただければ幸いです…!
[やりたいこと]
敵に追いかけられる鬼ごっこで、鬼に捕まった時にイベントを発生させたいのですが、
・プレイヤーを操作して、イベントに接触した際には「イベントが発生する」。
・プレイヤーを操作せずに、敵イベントから接触してきた場合「イベントが発生しない」。
のような現象が起きてしまい、
「主人公が静止状態の際に敵から接触した場合イベントが発生しない」
に困っています。
主人公を操作しない限り、周りを敵に囲まれても「ゲームオーバー」にならないのです。
ちょっとでもプレイヤーが主人公を操作すれば、イベントが発生するのですが、
「敵から接触してきた場合でもイベントが発生する」方法が知りたいです。
お知恵を貸していただける方がいましたら、よろしくお願いいたします!
[やりたいこと]
基本システム3の使用を前提として、技能の使用とSPの支払いを行ったターンから、数ターン後のターン終了時に効果が発動する技能を作成したいです。
仕様としてはポケモンのわざ「みらいよち」が近いと思います。(ただし敵がグループであることや、数ターン後の発動であることを考慮して対象は敵単体ランダムを想定しています。)
技能の使用キャラはその後のターンも普通に行動できるようにしたいです。可能であれば、技能の使用キャラが発動ターンに戦闘不能でも効果が発動するようにしたいです。(戦闘中のパーティーの入れ替え等は想定していないとします。)
[やってみたこと]
・技能の設定
実際に技能使用ターンに使用・SP消費を行う技能「みらいよち処理(開始)」と、実際に敵に効果を与える技能「みらいよち(発動)」の2つを、ユザーデータベース「0:技能」のデータIDに設定。
・コモンイベントの作成
技能「みらいよち(開始)」技能が使用されると、使用ターンから発動ターンまでターン数をカウントするコモン「みらいよち処理(仮名)」を作成。、「コモン205○[変更可]1ターン終了時処理」に挿入します。
コモン「みらいよち処理(仮名)」の中身は下記のような感じです↓
技能ID37=「みらいよち(開始)」、技能ID38=「みらいよち(発動)」
▼ 魔法発動後はカウント処理へ飛ぶ
■条件分岐(変数): 【1】 V97[開始ターン] が 1 以上
-◇分岐: 【1】 [ V97[開始ターン] が 1 以上 ]の場合↓
|▼ 開始ターンのカウントが発動ターンのカウントと同じになるまで足していく。
|■変数操作: V97[開始ターン] += 1 + 0
|■デバッグ文:開始ターン\v[97]\n経過ターン\v[98]\n発動ターン\v[99]
|●ラベル「発動後」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
|■
◇分岐終了◇
▼ 技能使用キャラの主人公IDを習得→コマンド処理された技能IDを習得
■変数操作: CSelf10[主人公ID] = 0 + 0
■変数操作: CSelf11[○番目?] = 1 + 0
■DB読込(可変): CSelf10[主人公ID] = 可変DB[ パーティー情報 : メイン設定 : CSelf11[○番目?] ] (6 : 0 : -)
■DB読込(可変): CSelf12[技能ID] = 可変DB[ ×┣ コマンド処理リスト : CSelf10[主人公ID] : 発動技能 ] (14 : - : 3)
▼ 技能が選択されていた場合処理開始
■条件分岐(変数): 【1】 CSelf12[技能ID] が 37 と同じ
-◇分岐: 【1】 [ CSelf12[技能ID] が 37 と同じ ]の場合↓
|▼ 開始ターンのカウントを1へ、経過ターンと発動ターンの決定
|■変数操作: V97[開始ターン] = 1 + 0
|■変数操作: V98[経過ターン] = 1 〜 3
|■変数操作: V99[発動ターン] = V98[経過ターン] + 1
|■デバッグ文:開始ターン\v[97]\n経過ターン\v[98]\n発動ターン\v[99]
|■
◇分岐終了◇
▼ 技能発動後(V97=1になった後)はこちらへ
●ラベル地点「発動後」 <<<<<<<<<<<<<<<<<<<<<<<<★
▼ 開始ターンのカウント=発動ターンのカウントになったら技が出る
■条件分岐(変数): 【1】 V97[開始ターン] が V99[発動ターン] と同じ
-◇分岐: 【1】 [ V97[開始ターン] が V99[発動ターン] と同じ ]の場合↓
|▼ 技能使用キャラを再度チェック
|■変数操作: CSelf10[主人公ID] = 0 + 0
|■変数操作: CSelf11[○番目?] = 1 + 0
|■回数付きループ [ 可変DB(18,4,0)[現在パーティー人数 数値 ] ]回
| |■DB読込(可変): CSelf10[主人公ID] = 可変DB[ パーティー情報 : メイン設定 : CSelf11[○番目?] ] (6 : 0 : -)
| |■イベントの挿入[名]: CSelf13[習得している?] = ["▲特殊技能の有無取得"] <コモンEv 25> / CSelf10[主人公ID] / 38:みらいよち(発動)
| |■条件分岐(変数): 【1】 CSelf13[習得している?] が 1 と同じ
| |-◇分岐: 【1】 [ CSelf13[習得している?] が 1 と同じ ]の場合↓
| | |▼ そのターンにすでに使用した発動技能IDを「みらいよち(発動)」に書き換え
| | |■DB読込(可変): CSelf12[技能ID] = 可変DB[ ×┣ コマンド処理リスト : CSelf10[主人公ID] : 発動技能 ] (14 : - : 3)
| | |■変数操作: CSelf12[技能ID] = 38 + 0
| | |▼ 再度技能を発動させる(ここからがわからない。)
| | |■
| |◇分岐終了◇
| |■
|◇ループここまで◇◇
|▼ 発動後ターンカウントリセット
|■変数操作: V97[開始ターン] = 0 + 0
|■変数操作: V98[経過ターン] = 0 + 0
|■変数操作: V99[発動ターン] = 0 + 0
|■デバッグ文:開始ターン\v[97]\n経過ターン\v[98]\n発動ターン\v[99]
|■
◇分岐終了◇
[やってみた結果、どううまくいかないか]
技能使用ターンから、ターン数をカウントして、発動ターンまで数えていく仕組み自体は作れました。(コモン004○回復・ダメージ処理などで、味方のHP・SP・ステータス状態を変更する処理のみであればこれでうまくいきます。)
しかし、「コモン205○[変更可]1ターン終了時処理」のタイミングで技能を発動させるための仕組みがうまく作れませんでした。「みらいよち(開始)」を習得しているかどうか確認→習得キャラのそのターンにすでに使用した別技能IDを「みらいよち(発動)」の技能IDに差し替え→技能使用キャラのみ再行動して技能使用という流れになると思うのですが、使用キャラのみ再行動させて、技能使用処理を行う流れが色々調べても方法がよくわからない状態です。
私がもう少し基本システムの戦闘処理を理解できれば解決するのかなとは思います。力不足で申し訳ないです。
ご助力いただけるとありがたいです。どうぞよろしくお願いいたします。
1の件 "サルヤンさん作 アイテム作成コモンイベント"は公開中止になっているみたいです。
追加されたアイテムがどのように保存されているかわかりませんが
アイテム図鑑はユーザDBのアイテムしか参照していないようなので、
→ 追加されるアイテムもユーザDBに非表示で登録しておいて、合成された時点(入手した時点)で表示されるように改造
または 追加されたアイテムが可変DBに保存されているのなら、アイテム図鑑のほうで両方のDBを参照するよう改造
2の件 上下キー入力を4方向に変更して、左右の分岐を追加するまではいいとして
ページスキップ(14項目スクロール)する方法がわかりませんでした。
・最初 右分岐の中に14回ループと下キーを押したときの処理を突っ込んでみました。
→ なぜだか1項目ずつしかスクロールしない
・とりあえず14個スクロールするよう改造
→ 残りアイテムが14個以下の時に右キーを押すとエラーが出る
→ 変数の値の整合性が取れなくなったのか、下キーを押した時 変な挙動をする
・名前の無いアイテムの除外も同時に行っていて複雑
小手先だけの改造ではページスキップできないのかなと思ってしましました。
でも他人が作成したコモンをじっくり読みたくない(理解するまで半年ぐらいかかりそう)。
もし自分が必要に迫られたらどうするか?
アイテムを表示している部分を万能ウィンドウで表示する (アイテム抽出時に名前の無いアイテムを除外できる)
ページスキップはコモンイベント集の "フォルトさん作 【改変】万能ウィンドウ選択実行・左右キーで大幅移動追加" を導入
(サンプルゲームのアイテム欄を改造したところ14個でも100個でもスクロールできそうです。残りアイテムが少なくてもエラーは出ません。)
アイテム図鑑を大幅に改造する必要があり、うまくいくかどうかもわかりません。
あまりうれしくない改造案だと思いますし、お勧めしません 参考まで。