|
|
【重要!】 質問する前に必ず、過去に同じ質問がないか検索してください!
もし以下のケースで困った場合は、まずリンク先の文書内に答えがないか探してください。
・まずはこの中からお探し下さい → パーフェクトガイド
・バグかな?と思ったときは → よくある質問
・基本システムの設定方法が分からない場合 → 基本システム講座(by 藤田るいふ氏)
・イベントコマンドなどの仕様が分からない場合 → 公式マニュアル
※書き込む前に少なくとも1日2日は、自分で探したり挑戦する努力をしてみてください。
上記のことを全部やってもどうしても分からなかった場合だけ、以下のフォームから質問してください。
| 記事No | : 21794 [関連記事] |
| タイトル | : Re: マップEVの接触範囲に反応するようにしたい |
| 投稿日 | : 2025/12/08 20:15 |
| 投稿者 | : てとら [rergOdg332] |
としこC様の提案(1)で上手くいきました。
座標は足元と前方のを取得。
足元の座標を確認後、取得した接触範囲に1マス分加算し反応範囲を拡大、
変数操作+の「通行可能(タイル・Ev両方)」で
前方座標の通行状態でEVIDを取得するか判断
としました。
さらに色々条件付け加えないと、イベントが隣接した際にバグが起きますが、
大雑把にはこのような処理となりました。
| 記事No | : 21793 [関連記事] |
| タイトル | : Re: マップEVの接触範囲に反応するようにしたい |
| 投稿日 | : 2025/12/06 21:54 |
| 投稿者 | : てとら [rergOdg332] |
ありがとうございます。
行き詰った際には、また何かしらのご助力頂けたらと思います。
| 記事No | : 21792 [関連記事] |
| タイトル | : Re: マップEVの接触範囲に反応するようにしたい |
| 投稿日 | : 2025/12/06 20:03 |
| 投稿者 | : としこC [eeierdr898] |
> 「起動範囲拡張X・Y」は、「接触範囲拡張」の事でよろしいでしょうか?
> こちらの機能の見落としなら、申し訳ございません。
私の記入ミスです.
ご指摘のとおり「接触範囲拡張X」「接触範囲拡張Y」の項目です
| 記事No | : 21791 [関連記事] |
| タイトル | : Re: マップEVの接触範囲に反応するようにしたい |
| 投稿日 | : 2025/12/06 17:59 |
| 投稿者 | : てとら [rergOdg332] |
としこCさま、お答え頂きありがとうございます。
提案(1)の方でやってみようと思うのですが、確認のためお尋ねしたいのですが、
「起動範囲拡張X・Y」は、「接触範囲拡張」の事でよろしいでしょうか?
こちらの機能の見落としなら、申し訳ございません。
| 記事No | : 21790 [関連記事] |
| タイトル | : Re: マップEVの接触範囲に反応するようにしたい |
| 投稿日 | : 2025/12/04 21:06 |
| 投稿者 | : としこC [eeierdr898] |
リスト化、同時複数検知は文字列ではなく、CDBの方が安全そう
| 記事No | : 21789 [関連記事] |
| タイトル | : Re: マップEVの接触範囲に反応するようにしたい |
| 投稿日 | : 2025/12/03 08:58 |
| 投稿者 | : としこC [eeierdr898] |
今すぐ思いつくのは2種類、
システムへの依存度に違いがあるので、用途に合わせて修正が必要かも
(1)処理に無駄は発生しますが、以下のような方法はあります。
コモンEvの並列実行から、決定キーが押された時、
マップ内の全マップEvのIDを取得してリスト化(マップに入った時点での事前作成可能)した上で、各IDに注目してループ処理
【変数操作+】から取得できる「起動範囲拡張X・Y」を誤差範囲として、
キー押下時の「各マップEv座標」と「主人公座標」の差で判定する.
(主人公の向きも加算するなら、視線先と足元で2度判定?)
判定に合致したマップEvのページ処理を呼び出す.
※【変数操作+】から「現在の起動ページ」を取得することで、ページ数を相対的に呼び出せば 同イベントIDに複数の処理を割り当て可能
※マップEvの全ID取得については、ID抜けを考慮するなら以下のような処理で確認可能
・【変数操作+】から「現在マップのマップイベント数」を取得
・変数を用いてID:0から順に【変数操作+】から「イベントID」を取得(存在しない場合-1が返る)
・発見数が前述の「現在マップのマップイベント数」に到達するまでループ
利点:マップEvの起動中ページや起動条件に左右されない
欠点:ある程度、ウディタのコマンド知識が必要
(2)あるいは、ユーザー側で書くコマンド数を少なくするなら、
全てのイベントの最上ページの起動条件を「イベントと接触」に設定、
イベント内容は、マップEvのIDを、*特定変数(複数判定なら文字列へ)に保存するものとする
コモンEvの並列実行から、決定キーを押した時に、*特定変数に保存されたマップEvのイベント内容を呼び出す(*特定変数は、フレーム毎に初期化が必須)
利点:作成が楽
欠点:マップEvの実行ページがほぼ固定されてしまう、主人公の向きが考慮されない
なお、これらについては、
マップEvのイベント内容の呼び出しは、【イベント挿入】から
別イベントの実行中に呼び出さないために、「システム変数13」を確認する必要もあります。
こんな感じでいかがでしょうか?
| 記事No | : 21788 [関連記事] |
| タイトル | : マップEVの接触範囲に反応するようにしたい |
| 投稿日 | : 2025/12/02 23:41 |
| 投稿者 | : てとら [rergOdg332] |
並列実行でキー入力を取得、キーを押した時点の主人公の座標を取得、
その座標からマップEVIDを取得し、コモンを起動という処理をしています。
マップEVが起動しては困るため、このような処理をしています。
しかし、この方法ではマップEVがある位置でしか起動せず、
設定した接触範囲に入っただけでは起動しません。
何かしらアドバイスを頂けたらと思います。
| 記事No | : 21787 [関連記事] |
| タイトル | : Re: 自作選択肢で、可変DBに値を変更してセーブデータに書き込み、初期化しない方法がわかりません |
| 投稿日 | : 2025/11/02 20:35 |
| 投稿者 | : ゆう [rLde561] |
Masaqq様、ナナシ様、YADO様(YADO様は素材投稿掲示板でしたが)
アドバイスありがとうございました!
皆様のおっしゃる通り、ここのコモンイベントの位置(決定キー後に置いていたのが更新されない原因)と、
ラベル地点「★おまけセーブ読込」 <<<<<<<<<<<<<<<<<<<<<<<<★
以下の変数呼び出し値や指摘されたDB書込になってないなどが原因でした。
素材投稿掲示板内でやり取りするのも問題かと思いまして、こちらにも書きます。
最終的には掲載した部分はこうなりました。
ただ、YADO様のおっしゃっていた、
>ゲーム開始時にセーブデータ「omake.sav」のデータを可変DB[25]へ読み込む処理が機能していないようです。
は、こちらでは確認できませんでした。
追記:別のデータで確認できましたが、手を尽くしましたがタイトル画面(スタート地点)で可変DBがセーブされるのは偶然みたいです。
私にはこれのサポートは心苦しいですが無理ですので、ここで書き込み等は終わらせていただきます。
できるようにした素材単体の配布などは自由です。申し訳ありません。
追記の追記;2025年11月5日
主にセーブ前にウェイトを1入れることで、セーブデータが安定してできたようです。
その他いろいろ修正したりコモンイベントを追加しました。
ここでの書き込みは本当に、今日で終わらせていただきます。ありがとうございました。
・おまけの選択肢下地、呼び出しのみ・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や予備変数などに値がセーブデータに保存されない理由が特定できません。
もう数日頑張ってみます。
| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |