【質問フォーム】
【重要!】 質問する前に必ず、過去に同じ質問がないか検索してください!
もし以下のケースで困った場合は、まずリンク先の文書内に答えがないか探してください。
・まずはこの中からお探し下さい → パーフェクトガイド
・バグかな?と思ったときは → よくある質問
・基本システムの設定方法が分からない場合 → 基本システム講座(by 藤田るいふ氏)
・イベントコマンドなどの仕様が分からない場合 → 公式マニュアル
※書き込む前に少なくとも1日2日は、自分で探したり挑戦する努力をしてみてください。
上記のことを全部やってもどうしても分からなかった場合だけ、以下のフォームから質問してください。
いつもお世話になっております。
すごく初歩的なことかもしれないのですが、自分では上手くできなかったので
皆様のお力を貸していただければ幸いです…!
[やりたいこと]
敵に追いかけられる鬼ごっこで、鬼に捕まった時にイベントを発生させたいのですが、
・プレイヤーを操作して、イベントに接触した際には「イベントが発生する」。
・プレイヤーを操作せずに、敵イベントから接触してきた場合「イベントが発生しない」。
のような現象が起きてしまい、
「主人公が静止状態の際に敵から接触した場合イベントが発生しない」
に困っています。
主人公を操作しない限り、周りを敵に囲まれても「ゲームオーバー」にならないのです。
ちょっとでもプレイヤーが主人公を操作すれば、イベントが発生するのですが、
「敵から接触してきた場合でもイベントが発生する」方法が知りたいです。
お知恵を貸していただける方がいましたら、よろしくお願いいたします!
[やりたいこと]
基本システム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個でもスクロールできそうです。残りアイテムが少なくてもエラーは出ません。)
アイテム図鑑を大幅に改造する必要があり、うまくいくかどうかもわかりません。
あまりうれしくない改造案だと思いますし、お勧めしません 参考まで。
現在、ウディタのバージョン2でゲームを作っています。
コモンイベント集にあるST様が制作したアイテム図鑑コモンについてです。
1.他コモンで入手したアイテムがアイテム図鑑に反映されないので、反映されるようにしたいです。他コモンはサルヤン様が制作した【アイテム制作コモンイベント】です。
2.左右キーを押すことで、画面左に表示されている作成物一覧ページを1ページ単位で飛ばしたり戻したりできる(ようにしたいです(1ページスキップ)。
アイテム図鑑コモンを改造されている方のコモンを導入して見比べてみたのですが、どこを弄ればいいのかわかりませんでした。
よろしくお願いします。
回答有り難うございます、
無念ながら現状の仕様で頑張ってみます。
数値しか入力できないようなので、計算結果を一旦変数へ代入して
変数呼び出し値で入力する必要があると思います。
ピクチャ番号欄に下記入力してみました。
\cself[0] → 整数を入力してください(?)みたいなダイアログが出る。
2*3 → 2 だけ入力される。
お世話になっております。
例えばピクチャ表示にて、
ピクチャ番号 = (変数A) + 1
X座標 = (変数B) + 2*(変数C) + 10
…
のように式を含む指示を行いたいのですが、可能でしょうか?
あるいは計算結果を一旦別の変数へ代入しなければダメでしょうか?
宜しくお願い致します。
下記変更で治らないでしょうか?
(1) 597行目の条件分岐を変更 "「上記以外の場合」を作成"にチェックマークを入れる
(2) 分岐:【3】の中にあるコマンドをすべてコピー
(3) コピーしたものを (1)で変更した 「上記以外」 の分岐部分に貼り付け
| | |■条件分岐(変数): 【1】 CSelf11[データ番号[表示]] が 9 以下 【2】 CSelf11[データ番号[表示]] が 99 以下 【3】 CSelf11[データ番号[表示]] が 999 以下
| | |-◇分岐: 【1】 [ CSelf11[データ番号[表示]] が 9 以下 ]の場合↓
| | | |▼ データ番号:\cself[11](9以下)
(途中省略)
| | | |■
| | |-◇分岐: 【2】 [ CSelf11[データ番号[表示]] が 99 以下 ]の場合↓
| | | |▼ データ番号:\cself[11](99以下)
(途中省略)
| | | |■
| | |-◇分岐: 【3】 [ CSelf11[データ番号[表示]] が 999 以下 ]の場合↓
| | | |▼ データ番号:\cself[11](999以下)
| | | |▼
| | | |■条件分岐(文字): 【1】 CSelf6[一時文字列A]が "" 以外
| | | |-◇分岐: 【1】 [ CSelf6[一時文字列A] "" 以外 ]の場合↓
| | | | |▼
| | | | |▼
| | | | |■条件分岐(変数): 【1】 CSelf16[入手判定] が 0 と同じ 【2】 CSelf16[入手判定] が 1 と同じ
| | | | |-◇分岐: 【1】 [ CSelf16[入手判定] が 0 と同じ ]の場合↓
| | | | | |▼ 未入手
| | | | | |■文字列操作:CSelf5[描写内容] += "No.\cself[11] ?????\n"
| | | | | |■
| | | | |-◇分岐: 【2】 [ CSelf16[入手判定] が 1 と同じ ]の場合↓
| | | | | |▼ 入手済み
| | | | | |■文字列操作:CSelf5[描写内容] += "No.\cself[11] \cself[6]\n"
| | | | | |■
| | | | |◇分岐終了◇
| | | | |▼
| | | | |▼
| | | | |▼
| | | | |■変数操作: CSelf11[データ番号[表示]] += 1 + 0
| | | | |■変数操作: CSelf76[現在のデータ数] += 1 + 0
| | | | |■
| | | |◇分岐終了◇
| | | |▼
| | | |▼
| | | |■
| | |-◇上記以外
| | | |▼ データ番号:\cself[11](9999以下)
| | | |▼
| | | |■条件分岐(文字): 【1】 CSelf6[一時文字列A]が "" 以外
| | | |-◇分岐: 【1】 [ CSelf6[一時文字列A] "" 以外 ]の場合↓
| | | | |▼
| | | | |▼
| | | | |■条件分岐(変数): 【1】 CSelf16[入手判定] が 0 と同じ 【2】 CSelf16[入手判定] が 1 と同じ
| | | | |-◇分岐: 【1】 [ CSelf16[入手判定] が 0 と同じ ]の場合↓
| | | | | |▼ 未入手
| | | | | |■文字列操作:CSelf5[描写内容] += "No.\cself[11] ?????\n"
| | | | | |■
| | | | |-◇分岐: 【2】 [ CSelf16[入手判定] が 1 と同じ ]の場合↓
| | | | | |▼ 入手済み
| | | | | |■文字列操作:CSelf5[描写内容] += "No.\cself[11] \cself[6]\n"
| | | | | |■
| | | | |◇分岐終了◇
| | | | |▼
| | | | |▼
| | | | |▼
| | | | |■変数操作: CSelf11[データ番号[表示]] += 1 + 0
| | | | |■変数操作: CSelf76[現在のデータ数] += 1 + 0
| | | | |■
| | | |◇分岐終了◇
| | | |■
| | |◇分岐終了◇
エラーが出た理由(たぶん)
変更前の条件分岐は999以下までであり
アイテムのデータベースIDが1114まであっても
CSelf76[現在のデータ数]が999以上に増えないので
572行目のループ中断が実行されず
580行目でデータベースID=1115のアイテム名を読みに行ったら
そのIDは存在しないとエラーが出たのではないでしょうか?
(アイテムを1000以上作成するのは大変なので動作確認はしていません。
治らない場合は原因が思い浮かばないので 他の人にも聞いてください。)
現在、ウディタのバージョン2でゲームを作っています。
コモンイベント集にあるST様が制作したアイテム図鑑コモンを導入したのですが、No.999以降は読み込まれず、下キーを入力すると『存在しないデータ番号を読みに行っています』と表示されてしまいます。
【ユーザーDB】エラー:タイプ2に存在しないデータ番号1115を読みに行っています
処理地点:【コモンEv 260 行580】 ※もし並行処理のエラーなら地点不明です
アイテム数だけ1000個を超えているのが影響でこのエラー文が出ているのだと思いますが、エラー文に書かれた行数付近を見に行ってもどこを直せばいいのかわかりません。アイテム数が1000個以内の武器、防具は問題なく表示されています。
よろしくお願いします。