【質問フォーム】
【重要!】 質問する前に必ず、過去に同じ質問がないか検索してください!
もし以下のケースで困った場合は、まずリンク先の文書内に答えがないか探してください。
・まずはこの中からお探し下さい → パーフェクトガイド
・バグかな?と思ったときは → よくある質問
・基本システムの設定方法が分からない場合 → 基本システム講座(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個以内の武器、防具は問題なく表示されています。
よろしくお願いします。
*この書き込みは、MFCについてなどの追記で、大幅に修正されています(同日12:55)
お手間を取らせるだけになってしまい、済みませんでした。
私も動作しない時は非常に難儀したので、Osさんのケースも早く解消してほしいですね…
私も再発が怖いので、正確な原因を把握しておきたいと思っています。
何か情報をお持ちの方がいたら、Osさんを助けてあげてください!
以下は、思い付いた対処法を疑いの濃さ(主観)順に、すべて書き連ねてみたものです。
ダメ元でもいい、という場合の参考になれば幸いです(望み薄だとは思うので、労力的にお勧めはしません)
▼アンチウィルスソフトが動作をブロックしている可能性
ご使用のセキュリティソフトがMS Defenderでない場合、個別に例外許可をする必要があるかもしれません。
(私は、以前動作しなかった頃に別のソフトを使用していましたが、それが原因かはわかりません)
▼MFCライブラリの不足の可能性
グラフィック合成器のアイコンがMFCアプリケーション特有の物のようなので、もしかしたらMFCライブラリが欠けている可能性もあるのですが、これ単体では配布していないようなんですよね…
(VC開発者向けのパックに再配布用が入っているのみ?転載サイトは安全性が疑わしい)
起動ドライブ内を”mfc*dll”で検索すると、ファイル名が”mfc100””mfc110””mfc120””mfc140”で始まるDLLが複数(言語別?)あると思うのですが、特定の番号がなかったら、それが原因の可能性があるかもしれません。
▼一度管理者権限で実行してみる
ソフトの置き場の違いや、OSの設定・バージョン等によって、管理者権限での実行が一度だけ必要な場合があります。
*ただ、この可能性は低いと思います。私の場合、以前の発生時にこれでは解消しませんでした。
▼Windowsの”ユーザー”を新たに作成し、そちらで実行してみる
クラッシュや停電などがあると、実感しにくい形でユーザー情報が壊れる事があります。
Windowsは極力受け取った情報を訂正して動作しているのですが、さらに不具合を増やさないために、元のユーザー情報をあえて修正しない仕様になっているようです。
この場合、正常なユーザーに切り替えないと特定のソフトは動作しない事があります。
▼合成器のフォルダを置く場所のパス(フォルダ名と上位のフォルダ名すべてを含む”住所”)に、処理上不適切な文字が含まれている
フォルダの移動は試したとの事ですが、ドライブ直下(”C:\グラフィック合成器”のような)等はどうでしょうか?
プログラムがどのような文字を処理できるかは、実装でソフトごとに異なるため、他のソフトで問題がない事は、判断材料にならないようです。
いわゆる1バイト文字(半角英数、記号は一部に制限される)以外は、何が原因になっているかわからず、(最悪複数の)上位フォルダの名前が原因の場合があります。
また、置き場のフォルダ階層が深い、フォルダ名が長いなどの原因で、”パスが長すぎる”だけで動作しない場合もあります。
*当然ですが、”グラフィック合成器”というフォルダ名単体には問題がないようです。
▼.ZIPがダウンロードや展開の際に破損している可能性がある
あまり知られていませんが、”特定のファイルのみがダウンロードや展開時に繰り返し破損する”ことは、結構な確率で発生します。
ISPに不具合がある、光回線の施工が不適切、ネットワークアダプタの経年劣化やドライバ破損といった環境において、”特定URLからのダウンロードのみが常時正常に行えない”事があります。
「最近、ダウンロードが開始しなかったり、ダウンロードしたファイルの破損が多い」というような事が起きていたら、これらを疑ったほうがいいかもしれません。
▼ZIPの展開に”7-Zip”を使ってみる
”日本で使われがちな圧縮・展開ソフトは(定番とされるものやWindows標準も含めて)、展開不能や破損を起こしやすい”事が知られており、そういったソフト使用されている場合は、ZIPの展開・閲覧に”7-Zip”を試されてもよいかもしれません。
このソフトはUnicode準拠であり、破損やアクセス不能に非常に強く作られているため、開発者の間で定番のオープンソースの圧縮・展開フリーソフトです。
一部で繰り返し話題になる「フリーの動画編集ソフト”AviUtl”の特定プラグインのZIPが展開できない」問題等は、7-Zipでは発生しません。
*悪質なマルウェア入り転載サイトがあるらしいので、URL欄に日本語版の公式サイトをリンクしておきました。
*他言語版が欲しい場合は、公式サイトの左側メニューから言語選択してください。