|
|
【重要!】 質問する前に必ず、過去に同じ質問がないか検索してください!
もし以下のケースで困った場合は、まずリンク先の文書内に答えがないか探してください。
・まずはこの中からお探し下さい → パーフェクトガイド
・バグかな?と思ったときは → よくある質問
・基本システムの設定方法が分からない場合 → 基本システム講座(by 藤田るいふ氏)
・イベントコマンドなどの仕様が分からない場合 → 公式マニュアル
※書き込む前に少なくとも1日2日は、自分で探したり挑戦する努力をしてみてください。
上記のことを全部やってもどうしても分からなかった場合だけ、以下のフォームから質問してください。
| 記事No | : 21787 [関連記事] |
| タイトル | : Re: 自作選択肢で、可変DBに値を変更してセーブデータに書き込み、初期化しない方法がわかりません |
| 投稿日 | : 2025/11/02 20:35 |
| 投稿者 | : ゆう [rLde561] |
Masaqq様、ナナシ様、YADO様(YADO様は素材投稿掲示板でしたが)
アドバイスありがとうございました!
皆様のおっしゃる通り、ここのコモンイベントの位置(決定キー後に置いていたのが更新されない原因)と、
ラベル地点「★おまけセーブ読込」 <<<<<<<<<<<<<<<<<<<<<<<<★
以下の変数呼び出し値や指摘されたDB書込になってないなどが原因でした。
素材投稿掲示板内でやり取りするのも問題かと思いまして、こちらにも書きます。
最終的には掲載した部分はこうなりました。
ただ、YADO様のおっしゃっていた、
>ゲーム開始時にセーブデータ「omake.sav」のデータを可変DB[25]へ読み込む処理が機能していないようです。
は、こちらでは確認できませんでした。
・おまけの選択肢下地、呼び出しのみ・79行目に以下コピー、ラベル削除
■デバッグ文:■バグ取り開始
■変数操作: CSelf21[データ番号] = 0 + 0
■変数操作: CSelf47 = 3 + 0
■変数操作: CSelf45[おまけセーブ番号] = 1125000003 + 0
■文字列操作:S0[[サンプル]一時文字列] = "Save/omake.sav"
■回数付きループ [ 20 ]回
|■セーブデータの内容読込: CSelf46[0か1] = セーブデータ[S0[[サンプル]一時文字列]]の V[CSelf45[おまけセーブ番号]]
|■デバッグ文:\cself[45]:可変変数
|■DB書込(可変):可変DB[ "cin選択肢内容":CSelf21[データ番号]:CSelf47 ] (25:-:-) = CSelf46[0か1]
|■デバッグ文:\cself[46]:0か1\n\cdb[25:0:\cself[47]]=\cself[45]
|■変数操作: CSelf47 += 5 + 0
|■回数付きループ [ 0 ]回
| |■変数操作: CSelf45[おまけセーブ番号] += 0 + 0
| |■
|◇ループここまで◇◇
|■変数操作: CSelf45[おまけセーブ番号] += 5 + 0
|■
◇ループここまで◇◇
WoditorEvCOMMAND_START
[106][0,1]<0>()("■バグ取り開始")
[121][4,0]<0>(1600021,0,0,0)()
[121][4,0]<0>(1600047,3,0,0)()
[121][4,0]<0>(1600045,1125000003,0,4)()
[122][3,1]<0>(3000000,0,0)("Save/omake.sav")
[179][1,0]<0>(20)()
[221][4,0]<1>(1600046,3000000,1600045,1)()
[106][0,1]<1>()("\cself[45]:可変変数")
[250][5,4]<1>(25,1600021,1600047,65536,1600046)("","cin選択肢内容","","")
[106][0,1]<1>()("\cself[46]:0か1<\n>\cdb[25:0:\cself[47]]=\cself[45]")
[121][4,0]<1>(1600047,5,0,256)()
[179][1,0]<1>(0)()
[121][4,0]<2>(1600045,0,0,256)()
[0][0,0]<2>()()
[498][0,0]<1>()()
[121][4,0]<1>(1600045,5,0,256)()
[0][0,0]<1>()()
[498][0,0]<0>()()
WoditorEvCOMMAND_END
素材投稿掲示板にて全体の使い方のコモンイベント等のファイルを上げました(224、ノンフィールド系サンプルとおまけ画面0_02_ゆう)ので、もし気になる点がありましたらご確認ください。
おまけ画面がゲームを終わらせてもリセットされない件、解決できましたので、本当に皆様ありがとうございました。
| 記事No | : 21786 [関連記事] |
| タイトル | : Re: 自作選択肢で、可変DBに値を変更してセーブデータに書き込み、初期化しない方法がわかりません |
| 投稿日 | : 2025/10/31 22:00 |
| 投稿者 | : ナナシ [erprpgeOr361] |
横入り失礼します。
Masaqq様と同じ部分ではありますが、
気になった所を↑?の印でいくつか細かく指摘させていただきます。
●ラベル地点「★おまけセーブ読込」 <<<<<<<<<<<<<<<<<<<<<<<<★
■変数操作: CSelf21[データ番号] = 0 + 0
■変数操作: CSelf47 = 3 + 0
■変数操作: CSelf45[おまけセーブ番号] = 1125000003 + 0
■変数操作: CSelf45[おまけセーブ番号] = 可変DB[ 25:0:3 ] (選択肢001:解放されたら1) + 0
↑? CSelf45に呼び出し値を格納したのに、現在のゲームデータの可変DBの値を呼び出し上書きしている。
■文字列操作:S0[[サンプル]一時文字列] = "Save/omake.sav"
■DB読込(可変): CSelf46[0か1] = 可変DB[ "cin選択肢内容":CSelf21[データ番号]:CSelf47 ] (25:-:-)
■回数付きループ [ 20 ]回
|■セーブデータの内容読込: CSelf46[0か1] = セーブデータ[S0[[サンプル]一時文字列]]の V[CSelf45[おまけセーブ番号]]
↑? 上記でCSelf45の中身が何になってるか分かりませんが、変数呼び出し値でないなら無効となり0が代入される。
|■デバッグ文:\cself[45]:可変変数
↑? ここでデバッグに表示される値が変数呼び出し値になってるかしっかり確認。100万以上の桁ならOK。
|■DB読込(可変): CSelf46[0か1] = 可変DB[ "cin選択肢内容":CSelf21[データ番号]:CSelf47 ] (25:-:-)
|■デバッグ文:\cself[46]:0か1\n\cdb[25:0:\cself[47]]=\cself[45]
|■変数操作: CSelf47 += 5 + 0
|■変数操作: CSelf45[おまけセーブ番号] += 0 + 0
↑? 今後、読み込み先をずらす目的で置いてるならOK。しないなら消去。
|■
◇ループここまで◇◇
●ラベル「★おまけセーブ読込おわり」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
何はともあれ CSelf45 [おまけセーブ番号]の中の値が、
変数呼び出し値になっているのかどうか確認をして下さい。
| 記事No | : 21785 [関連記事] |
| タイトル | : Re: 自作選択肢で、可変DBに値を変更してセーブデータに書き込み、初期化しない方法がわかりません |
| 投稿日 | : 2025/10/28 00:19 |
| 投稿者 | : ゆう [rLde561] |
Masaqq様
返信ありがとうございます。
参考になります。先に記載したコマンドコードは、デバッグやコメントも消したので、本当はもっと汚いので……。?は確認しましたが、ゲームデータ内ではみないので安心してください。
付き合っていただきありがとうございます。
前回の【やってみた結果、どううまくいかないか】の1について
タイトル画面の■イベントの挿入: コモン240:[ おまけの選択肢下地 ]の下に、イベント処理中断を入れることで、キャンセルキーが1回だけでよくなり、正常に機能しました。
【やってみた結果、どううまくいかないか】の2について
自作選択肢のコモンイベントの表示非表示に関しては、問題ありません。
ただ、やはりセーブデータがおまけ画面だけセーブで残らないです。
コモンイベントの最後やコモンイベントを出る時も、セーブを置きました。破損等はしてないようです。(今は直接全部のセーブデータを置くのをタイトル画面のコモンイベントの下以外やめましたが、意味なさそうです)
F12などのリセットや再起動などで可変DBや予備変数1も初期値に戻っているようです。
(もしくはデータに記録されていない……わけはないのですが。セーブデータ読込で一度値が入っているのを確認しました)
同じ基本システムのデフォルトのセーブで行う通常変数は、問題なく記録されているので、可変DBや予備変数などに値がセーブデータに保存されない理由が特定できません。
もう数日頑張ってみます。
| 記事No | : 21784 [関連記事] |
| タイトル | : Re: 自作選択肢で、可変DBに値を変更してセーブデータに書き込み、初期化しない方法がわかりません |
| 投稿日 | : 2025/10/27 01:55 |
| 投稿者 | : Masaqq [FiprrgO824] |
ゆう様
私も正直、細かく読み取るのは苦手なので
ある程度推測で対応していて申し訳ないところではありますが
追加で推測と対応を書いてみました。
<推測と対応:1>
キャンセルを多く押す必要があることについて
マップEvの自動実行や並列実行などで場所移動したケース
あるいは、条件を満たさなくなった途端に処理が終わると思っているケースに多いのですが
後続処理により最後尾まで処理されている可能性があります。
場所移動の直後に「イベント処理中断」などで後続処理を切ることで
余計なキー入力待ちの処理がなくせるかもしれません。
あとは、謎のキー入力待ちや選択肢で止まっている状態で
[F8キー]機能で調べれば、何のイベント処理中か調べるのも有効かもしれません。
<推測と対応:2>
そもそも正常にセーブorロードが出来ていない可能性を考えます。
どのようにセーブ&ロードができていることを確認してますか?
Save/omake.savが正常にセーブ/ロードできているか確認をしてください。
セーブ前に書き込んだ内容の存在チェックをする必要もあるかもしれません。
Sys24のチェックはわりと有効です
ファイルが見つからなければそもそもロードできないのと
ファイルが見つかればほぼロードはできていると思われます。
ロードが出来ているなら、セーブが出来てないか
セーブはできているが確認方法が間違っているか
ロードしたうえで更に余計な処理をしているかです。
どこまで処理が通っているのか切り分けしてみてください。
<推測と対策:3>
確認用のパラメーター指定がそもそも間違っている
■デバッグ文:■バグ取り開始
■変数操作: CSelf21[データ番号] = 0 + 0
■変数操作: CSelf47 = 3 + 0
■変数操作: CSelf45[おまけセーブ番号] = 1125000003 + 0
?変数操作: CSelf45[おまけセーブ番号] = 可変DB[ 25:0:3 ] (選択肢001:解放されたら1) + 0
■文字列操作:S0[[サンプル]一時文字列] = "Save/omake.sav"
■DB読込(可変): CSelf46[0か1] = 可変DB[ "cin選択肢内容":CSelf21[データ番号]:CSelf47 ] (25:-:-)
■回数付きループ [ 20 ]回
|?セーブデータの内容読込: CSelf46[0か1] = セーブデータ[S0[[サンプル]一時文字列]]の V[CSelf45[おまけセーブ番号]]
|■デバッグ文:\cself[45]:可変変数
|■DB読込(可変): CSelf46[0か1] = 可変DB[ "cin選択肢内容":CSelf21[データ番号]:CSelf47 ] (25:-:-)
|■デバッグ文:\cself[46]:0か1\n\cdb[25:0:\cself[47]]=\cself[45]
|■変数操作: CSelf47 += 5 + 0
|?変数操作: CSelf45[おまけセーブ番号] += 0 + 0
|■
よくよく見ると上記行頭の■を?に変えた3行が気になります。
?1、CDB自体の値を取得している。1行前の式が正しいのではないか
?2、回数ループ内のセーブ読み込みでVが付いている(X番変数呼出)。
?3、おまけセーブ番号+=0になっている
?1コードを[Qキー]で一時的にコメントアウトしたり
?3の値を正常に加算したり
なにか勘違いしてないか確認してみてください。
基本的なデバッグ方法で地味な作業にはなりますが
書き込み前後で読み込み後にどのようにパラメーターを指定したかチェックする方法も有効です。
※[文章の表示](デバッグ)で使えるValWatch:ON=変数名の利用が有効な時もあります。
デバッグの雑例:
■デバッグ文: CSelf46[0か1] \cself[46] ( \cself[45] )
■デバッグ文:ValWatch:ON=1125000003
<その他>※あまり参考にならないかも
ゲームを起動ごとに初期化されている件?
どこかでCDBを初期化してる可能性か
あるいはomake.savをロードしたあとに適切な処理を行っていない可能性?
予備変数などにファイル識別値として格納して
omake.savをまるごとセーブしたあとに予備変数に書き込むことで
分岐処理しやすくなるかもしれません。
処理の雑例:
■変数操作: CSelf10 = 1 + 0
■データのセーブ: S0[システムファイル名]
■セーブデータに書き込み:セーブデータ[S0[システムファイル名]]の V1-0[セーブファイル識別] = CSelf10
→omake.savをロードしたあとに自動設定読み込みなどで
このV1[0]の値を見てCDB初期化部分をスキップ処理するなど
過去の現象で、一度ロード(読み込み)して失敗した場合などに
処理を高速化するためか次のロードでも既に読み込んだことになって失敗するケースはあった気がします。
(新しいウディタVerでは基本的に起きないとは思う)
あとは細かいことですが
変数のネーミングなどにも気を使うと自力読解しやすくなるかもしれません。
(人によりけりですが、文系っぽく読みやすくなる)
参考URL(ウディタの説明書)
■デバッグコマンド一覧
hhttps://silversecond.com/WolfRPGEditor/Help/01debug.html
以上になります。
| 記事No | : 21783 [関連記事] |
| タイトル | : Re: 自作選択肢で、可変DBに値を変更してセーブデータに書き込み、初期化しない方法がわかりません |
| 投稿日 | : 2025/10/26 23:36 |
| 投稿者 | : ゆう [rLde561] |
Masaqq様
迅速な返信ありがとうございます。
最初の書き込みをしてからまたいろいろといじくり回しました。
わかりにくい説明の中、丁寧な説明をありがとうございます。
Save/omake.savは、起動時に作るように閃きました。
【現在のコモンイベントの流れ】
今は、Save/omake.savで直接セーブ・ロードをして、可変DBの値を記録する方法に気付きましたが、四苦八苦しております。詳しくは【やってみた結果、どううまくいかないか】で。
まず下地を回数ループで作りまして、10×10で20個選択肢があり、カーソル移動もできて、中身も下記の状態で動くことができています。ここは説明不足でした、すみません。
まず、?????という文字列が可変DBで0の時に、無反応。正常です。
それ以外の1で決定キーを押すことで、別のコモンイベントで絵や文章表示をする、という処理をしています。
ウディタのデフォルトの選択肢では1つにつき基本10個までしか扱えないので、自作選択肢を選んだところです。
【やってみた結果、どううまくいかないか】
現在は大きく2つ。
1.基本システムのタイトル画面から別マップへ飛んで、自動実行したマップにコモンイベントで管理しています。
問題はキャンセルキーを起動後の最初は2回押さないと元のタイトル画面へ戻れないことです。ちょっと不便なので、これをどうにかしたい。
タイトル画面に戻るだと、初期化されるとのことなので別の方法を使っています。
2.Save/omake.savから直接ロードして値を記録しているはずなので、
セーブデータの値を丸ごと変更されているのにセーブされていない? ことです。
これはゲームを起動するごとに初期化されているようなので、こちらも四苦八苦中です。
Masaqq様の説明も受けて、最初にSave/omake.sav(共通セーブデータ)をスタートから、ではなく最初から用意すればいいと気付けました。ありがとうございます。
【おまけに関わるコマンドコード】
(変数名がないものは基本的に専用か汎用です)
1.タイトル画面、デフォルトの選択肢で4番目の、起動は自動実行のもの。
|■場所移動:主人公 ▲マップID4[load] X:0 Y:0 [トランジション + 暗転有り]
|■文字列操作:S0[[サンプル]一時文字列] = "Save/omake.sav"
|■回数付きループ [ 0 ]回
| |■DB読込(可変): このEvのSelf3 = 可変DB[ 25:0:8 ] (cin選択肢内容:選択肢001:解放されたら1)
| |■イベントの挿入: コモン240:[ おまけの選択肢下地 ]
| |■
|◇ループここまで◇◇
|■条件分岐(数値): 【1】 V0[] が 10 以外 【2】 V0[] が 10 と同じ
|-◇分岐: 【1】 [ V0[] が 10 以外 ]の場合↓
| |■イベントの挿入: コモン240:[ おまけの選択肢下地 ]
| |■データのロード: S0[[サンプル]一時文字列]
| |■変数操作: V0[] = 0 + 0
| |■
|-◇分岐: 【2】 [ V0[] が 10 と同じ ]の場合↓
| |■セーブデータの内容読込: V0[] = セーブデータ[S0[[サンプル]一時文字列]]の V0[]
| |■変数操作: V0[] = 0 + 0
| |■イベント処理中断
| |■
|◇分岐終了◇
|■イベントの挿入: コモン240:[ おまけの選択肢下地 ]
|■場所移動:主人公 ▲マップID0[タイトルマップ] X:9 Y:6 [トランジション + 暗転有り]
2.コモンイベント「おまけの選択肢下地」(メイン。長いため表示部分は省略します)
決定キーを押すと、別に用意したコモンが1の時、動きます。いろいろちょっと適当。
■文章選択肢:/ 【1】
-◇選択肢:【1】 の場合↓
|■
-◇キャンセルの場合
|■
◇分岐終了◇
■条件分岐(数値): 【1】 CSelf0 が 10 以外 【2】 CSelf0 が 10 と同じ
-◇分岐: 【1】 [ CSelf0 が 10 以外 ]の場合↓
|■データのロード: S0[[サンプル]一時文字列]
|■
-◇分岐: 【2】 [ CSelf0 が 10 と同じ ]の場合↓
|■
◇分岐終了◇
■変数操作: V0[] = 10 + 0
■変数操作: CSelf21[データ番号] = 0 + 0
■文字列操作:CSelf7[タイプ名] = "cin選択肢内容"
■DB読込(可変): CSelf5[下部説明文] = 可変DB[ "cin選択肢内容":CSelf21[データ番号]:1 ] (25:-:ヒント)
▼
▼
▼
●ラベル地点「★選択肢下地」 <<<<<<<<<<<<<<<<<<<<<<<<★
(表示系は動作に必要ないため、省略させていただきます。
必要であれば、コモンイベント添付します……お見苦しいですが)
■キー入力:CSelf0 [入力待ち【!】] 4方向 決定(10) キャンセル(11)
■条件分岐(数値): 【1】 CSelf0 が 11 と同じ 【2】 CSelf0 が 10 と同じ 【3】 CSelf0 が 2 と同じ 【4】 CSelf0 が 4 と同じ
-◇分岐: 【1】 [ CSelf0 が 11 と同じ ]の場合↓
|■変数操作: V0[] = 10 + 0
|▼ タイトルに戻るため、可変DBを初期化しないために自力で削除する。
|●ラベル地点「★おまけ削除!」 <<<<<<<<<<<<<<<<<<<<<<<<★
|■ウェイト:1 フレーム
|■ピクチャ消去:1 〜 999 / 0(0)フレーム
|▼ 全セルフ変数初期化
|■ウェイト:1 フレーム
|■変数操作: V0[] = 1600000 + 0
|■回数付きループ [ 99 ]回
| |■変数操作: V[V0[]] = 0 + 0
| |■変数操作: V0[] += 1 + 0
| |■
|◇ループここまで◇◇
|■ウェイト:1 フレーム
|■変数操作: V0[] = 10 + 0
|■データのセーブ: S0[[サンプル]一時文字列]
|■場所移動:主人公 ▲マップID0[タイトルマップ] X:19 Y:1 [トランジション + 暗転有り]
|■条件分岐(数値): 【1】 CSelf0 が 11 以外 【2】 CSelf0 が 11 と同じ
|-◇分岐: 【1】 [ CSelf0 が 11 以外 ]の場合↓
| |■
|-◇分岐: 【2】 [ CSelf0 が 11 と同じ ]の場合↓
| |■場所移動:主人公 ▲マップID0[タイトルマップ] X:11 Y:4 [トランジション + 暗転有り]
| |■イベント処理中断
| |■変数操作: V0[] = 0 + 0
| |■
|◇分岐終了◇
|■条件分岐(数値): 【1】 V0[] が 10 以外 【2】 V0[] が 10 と同じ
|-◇分岐: 【1】 [ V0[] が 10 以外 ]の場合↓
| |■
|-◇分岐: 【2】 [ V0[] が 10 と同じ ]の場合↓
| |■場所移動:主人公 ▲マップID0[タイトルマップ] X:11 Y:4 [トランジション + 暗転有り]
| |■イベント処理中断
| |■変数操作: V0[] = 0 + 0
| |■
|◇分岐終了◇
|▼
|▼
|▼
|▼
|■
-◇分岐: 【2】 [ CSelf0 が 10 と同じ ]の場合↓
|▼
(決定キーの処理、カーソル移動も問題ないため省略させていただきます)
|■
◇分岐終了◇
■条件分岐(数値): 【1】 V0[] が 10 以外 【2】 V0[] が 10 と同じ
-◇分岐: 【1】 [ V0[] が 10 以外 ]の場合↓
|■
-◇分岐: 【2】 [ V0[] が 10 と同じ ]の場合↓
|■場所移動:主人公 ▲マップID0[タイトルマップ] X:11 Y:4 [トランジション + 暗転有り]
|■イベント処理中断
|■変数操作: V0[] = 0 + 0
|■
◇分岐終了◇
■条件分岐(数値): 【1】 CSelf0 が 11 以外 【2】 CSelf0 が 11 と同じ
-◇分岐: 【1】 [ CSelf0 が 11 以外 ]の場合↓
|■
-◇分岐: 【2】 [ CSelf0 が 11 と同じ ]の場合↓
|■場所移動:主人公 ▲マップID0[タイトルマップ] X:11 Y:4 [トランジション + 暗転有り]
|■イベント処理中断
|■変数操作: V0[] = 0 + 0
|■
◇分岐終了◇
▼
▼
▼
▼
●ラベル地点「★おまけセーブ読込」 <<<<<<<<<<<<<<<<<<<<<<<<★
■デバッグ文:■バグ取り開始
■変数操作: CSelf21[データ番号] = 0 + 0
■変数操作: CSelf47 = 3 + 0
■変数操作: CSelf45[おまけセーブ番号] = 1125000003 + 0
■変数操作: CSelf45[おまけセーブ番号] = 可変DB[ 25:0:3 ] (選択肢001:解放されたら1) + 0
■文字列操作:S0[[サンプル]一時文字列] = "Save/omake.sav"
■DB読込(可変): CSelf46[0か1] = 可変DB[ "cin選択肢内容":CSelf21[データ番号]:CSelf47 ] (25:-:-)
■回数付きループ [ 20 ]回
|■セーブデータの内容読込: CSelf46[0か1] = セーブデータ[S0[[サンプル]一時文字列]]の V[CSelf45[おまけセーブ番号]]
|■デバッグ文:\cself[45]:可変変数
|■DB読込(可変): CSelf46[0か1] = 可変DB[ "cin選択肢内容":CSelf21[データ番号]:CSelf47 ] (25:-:-)
|■デバッグ文:\cself[46]:0か1\n\cdb[25:0:\cself[47]]=\cself[45]
|■変数操作: CSelf47 += 5 + 0
|■変数操作: CSelf45[おまけセーブ番号] += 0 + 0
|■
◇ループここまで◇◇
●ラベル「★おまけセーブ読込おわり」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
■条件分岐(数値): 【1】 V0[] が 10 以外 【2】 V0[] が 10 と同じ
-◇分岐: 【1】 [ V0[] が 10 以外 ]の場合↓
|■
-◇分岐: 【2】 [ V0[] が 10 と同じ ]の場合↓
|■場所移動:主人公 ▲マップID0[タイトルマップ] X:11 Y:4 [トランジション + 暗転有り]
|■イベント処理中断
|■変数操作: V0[] = 0 + 0
|■
◇分岐終了◇
■条件分岐(数値): 【1】 CSelf0 が 11 以外 【2】 CSelf0 が 11 と同じ
-◇分岐: 【1】 [ CSelf0 が 11 以外 ]の場合↓
|■
-◇分岐: 【2】 [ CSelf0 が 11 と同じ ]の場合↓
|■場所移動:主人公 ▲マップID0[タイトルマップ] X:11 Y:4 [トランジション + 暗転有り]
|■イベント処理中断
|■変数操作: V0[] = 0 + 0
|■
◇分岐終了◇
ここでコモンイベント終了です。呼び出しのみです。なぜ2回押さないとならないのかはいろいろ試し中です。
だいぶ省略しておりますが、その部分は関係ない、表示や決定キー後の処理のため関係ないと思った次第です。コモンイベント本体が必要でしたら、用意します。(配布目的で作っていますので)
| 記事No | : 21782 [関連記事] |
| タイトル | : Re: 自作選択肢で、可変DBに値を変更してセーブデータに書き込み、初期化しない方法がわかりません |
| 投稿日 | : 2025/10/26 19:04 |
| 投稿者 | : Masaqq [FiprrgO824] |
ゆう様
私が内容を正確に把握できているかどうか分かりませんが
何か参考になればと思い返信します。
<原因の推測>
1:処理順の問題
選択肢の表示内容を書き込む前に、選択肢が表示処理されている可能性。
イベントが実行される処理順(起動優先順)は以下のようになっています。
並列マップイベント→自動マップイベント→自動コモンイベント→並列コモンイベント
(ウディタの説明書より引用)
ウディタ内の暗黙の仕様(【4】イベントが実行される順番)
hhttps://silversecond.com/WolfRPGEditor/Help/01specifi.html
2:自己原因のバグや処理不足
自作部分でおかしいことに気づかないケースは高確率であります。
セルフチェックが難しそうな場合は、うまくいかない部分を提出したり
全体的な処理の流れを説明することも考えてください。
3:機能外の処理、またはバグ
全部のデータがセーブファイルから書き込み/読み込みできる訳ではありません。
下記説明書にいくつか注意書きがあるのでチェックしてみてください。
[セーブ・ロード操作]の説明書
hhttps://silversecond.com/WolfRPGEditor/Help/04ev_file.html
バグっぽい場合は、別のゲームデータで最小構成で組んで再現を確認してください。
バグならバグ報告掲示板で報告すれば喜ばれると思います。
<対応案>
作ろうとしている処理を推察するに、おまけフラグを検知して、
その選択肢表示のイベント内で
その表示前に選択肢を作る処理を組むのが無難な気はします。
S[0]=Save/omake.savのファイルが存在するかどうかSys24を取得して
条件分岐で処理した方が比較的安全と思います。
S0 は 3000000で指定可能
Sys24は 9000024で指定可能
〜イベントコードの雑例〜
■文字列操作:S0[システムファイル名] = "Save/omake.sav"
■セーブデータの内容読込: CSelf20[チェック] = セーブデータ[S0[システムファイル名]]の Sys24:[読]セーブデータ読込判定(1=成功 0=失敗)
■条件分岐(数値): 【1】 CSelf20[チェック] が 0 と同じ 【2】 CSelf20[チェック] が 1 と同じ
-◇分岐: 【1】 [ CSelf20[チェック] が 0 と同じ ]の場合↓
|▼ 読み込み失敗
|■ ※選択肢を削除処理〜
|■
-◇分岐: 【2】 [ CSelf20[チェック] が 1 と同じ ]の場合↓
|▼ 読み込み成功
|■ ※選択肢を追加処理〜
|■
◇分岐終了◇
■文章選択肢:/ 【1】スタート / 【2】コンティニュー / 【3】\cdb[25:*:5] / 【4】\cdb[25:*:10]
-◇選択肢:【1】 スタート の場合↓
|■
-◇選択肢:【2】 コンティニュー の場合↓
|■
-◇選択肢:【3】 \cdb[25:*:5] の場合↓
|■
-◇選択肢:【4】 \cdb[25:*:10] の場合↓
|■
-◇キャンセルの場合
|■
◇分岐終了◇
以上になります。
| 記事No | : 21781 [関連記事] |
| タイトル | : 自作選択肢で、可変DBに値を変更してセーブデータに書き込み、初期化しない方法がわかりません |
| 投稿日 | : 2025/10/26 10:54 |
| 投稿者 | : ゆう [rLde561] |
[やりたいこと]
自作選択肢で、可変DBに初期値から値を変更してセーブし、タイトル画面に戻っても値を保持したまま自作選択肢に反映させたい。
[やってみたこと]
基本システム(3.660)上で、自作セーブデータをタイトル画面に作りました。
直打ちではタイトル画面、コモンイベント上でもその場限りでは、セーブデータの書き込みや自作セーブデータでも書き込みされます。
自作選択肢も可変DBの初期値は反映されて表示や行動ができています。
[やってみた結果、どううまくいかないか]
セーブデータの書き込みに、変数を使うとセーブが書き込めなかったりできても処理が中途半端になり、それならと自作セーブデータで丸ごとセーブしたりしたのですが、可変DBが処理中断してタイトル画面に戻ると初期設定値に戻ってしまう。
タイトル画面に戻ると可変DBが初期化される仕様なのはわかりますが、ならなぜ他の基本セーブデータでは初期化されないのでしょうか。
一応、理由はわからないのですが、自作選択肢内でセーブデータの読み込みに成功したイベントを置いておきます。
書き込みのタイトル画面変遷での初期化だけは、理由も見当つかず、本当にお手上げです。
●ラベル地点「★おまけセーブ読込」 <<<<<<<<<<<<<<<<<<<<<<<<★
■変数操作: CSelf21[データ番号] = 0 + 0
■変数操作: CSelf47 = 3 + 0
■変数操作: CSelf45[おまけセーブ番号] = 1125000003 + 0
■変数操作: CSelf45[おまけセーブ番号] = 可変DB[ 25:0:3 ] (選択肢001:解放されたら1) + 0
■文字列操作:S0[[サンプル]一時文字列] = "Save/omake.sav"
■DB読込(可変): CSelf46[0か1] = 可変DB[ "cin選択肢内容":CSelf21[データ番号]:CSelf47 ] (25:-:-)
■回数付きループ [ 20 ]回
|■セーブデータの内容読込: CSelf46[0か1] = セーブデータ[S0[[サンプル]一時文字列]]の V[CSelf45[おまけセーブ番号]]
|■デバッグ文:\cself[45]:可変変数
|■DB読込(可変): CSelf46[0か1] = 可変DB[ "cin選択肢内容":CSelf21[データ番号]:CSelf47 ] (25:-:-)
|■デバッグ文:\cself[46]:0か1\n\cdb[25:0:\cself[47]]=\cself[45]
|■変数操作: CSelf47 += 5 + 0
|■変数操作: CSelf45[おまけセーブ番号] += 0 + 0
|■
◇ループここまで◇◇
●ラベル「★おまけセーブ読込おわり」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| 記事No | : 21780 [関連記事] |
| タイトル | : Re: XY配列の消し方 |
| 投稿日 | : 2025/10/22 05:17 |
| 投稿者 | : duck [eeirLLrOi392] |
教えて頂いた方法で、無事に不要な配列を削除する事が出来ました!
これで心置きなくXY配列を作ったり消したりできます!
(※消しかたが分からないから安易に増やすのやめとこう……名前付けルールを厳格に決めてから増やそう……でも作った後で名前変えたくなったら嫌だなぁ……とビクビクしながら増やしていた)
消し方の回答をくださったとしこC様、更に詳しい解説していただいたMasaqq様、お二人ともありがとうございました!
| 記事No | : 21779 [関連記事] |
| タイトル | : Re: XY配列の消し方 |
| 投稿日 | : 2025/10/21 16:23 |
| 投稿者 | : Masaqq [FiprrgO824] |
duck様
横から失礼します。
基本的に、としこC様の仰ってる通りと思います。
それでも解決しなかった時用に、少し補足しておきます。
・エディター上からはリストの削除や修正不可
現状最新Ver3.660のエディター上からでは
XY配列のドロップダウンリストの削除や修正はできません。
・ゲーム内部の配列削除
DB操作でXY配列の「配列の削除」にチェックを入れたものを
ゲーム内部(テストプレイ含む)で実行すれば
ゲーム内部的にはその作られたXY配列は削除されています。
(データ数や項目数が0になっていることで確認可能)
※添付画像参照
・『Editor_XY_array_Name.ini』でリスト編集
(拡張子が非表示の設定なら、.iniは表示されません)
このiniファイルはテキストファイルなので
メモ帳などで開いたり編集することができます。
不要なXY配列の名前の1行を削除することで
ドロップダウンリストからでなくなります。
<Editor_XY_array_Name.iniファイルの例>
- - - - - - - - - - - - - - - - - - - - - - - - -
[XY_Name_History]
XY_Array_Name_0=テスト
XY_Array_Name_1=TEST
- - - - - - - - - - - - - - - - - - - - - - - - -
しかし、エディター起動中にこれを編集しても、更新されない可能性が高いです。
更新されない場合は、一度エディターを閉じてから編集してください。
(あと、DB操作コードで入力した名前が残留していると復活する可能性はある)
この辺りの内容は
何かしらマニュアル(説明書)に足してもらうえないか
作者氏に申請しておきます。
以上、よろしくお願いいたします。
| 記事No | : 21778 [関連記事] |
| タイトル | : Re: XY配列の消し方 |
| 投稿日 | : 2025/10/21 08:09 |
| 投稿者 | : としこC [eeierdr898] |
エディタ上のXY配列操作のは名前呼び出しを行った場合であれば、
エディタが置かれているディレクトリ上に
【Editor_XY_array_Name.ini】というファイルが生成されていると思います。
そちらのファイルの中に名前参照時の対応が出力されているので、消したいものを行単位で削除してもらえれば、ドロップダウンリストに登場しなくなります。(数値呼び出しとは非互換)
バージョンアップ履歴の方では、Ver3.50の新更新には
>●【DB操作/新機能】「XY配列」機能が搭載されました。
> → エディター内では、使用したXY配列の名前が最新500個まで記憶されます。
> (Editor.exeの場所にある「Editor_XY_array_Name.ini」に名前が保存されています)
と書かれていますが、たしかに公式マニュアル側には記載がなさそうですね。
【バージョンアップ内容】
↓
【Ver3.50〜3.649大規模アップデート(修正点798個)】
↓
【全体の新機能(ゲーム・エディター両方)】
↓
◆コマンド関連
↓
●【DB操作/新機能】「XY配列」機能が搭載されました。
の方に記載があるので、直接確認してみてください。
| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |