【質問フォーム】
【重要!】 質問する前に必ず、過去に同じ質問がないか検索してください!
もし以下のケースで困った場合は、まずリンク先の文書内に答えがないか探してください。
・まずはこの中からお探し下さい → パーフェクトガイド
・バグかな?と思ったときは → よくある質問
・基本システムの設定方法が分からない場合 → 基本システム講座(by 藤田るいふ氏)
・イベントコマンドなどの仕様が分からない場合 → 公式マニュアル
※書き込む前に少なくとも1日2日は、自分で探したり挑戦する努力をしてみてください。
上記のことを全部やってもどうしても分からなかった場合だけ、以下のフォームから質問してください。
  
 同versionおよび最新版で、イベント内容を実行してみましたが、書かれているような症状は確認できませんでした。
変数V2を条件とした、または他コモンorマップイベントに、エフェクト処理が割り当てられていないか。
あるいは、基本システム込みのウディタを別にダウンロードして、イベント内容を実行した場合でも同じ症状が発生するなら、PCなど実行環境依存の問題の可能性もありえます。
それ以上となると私では力不足です。
症状が起きているゲーム全体を添付すれば、もしかしたら助言できる方がいるかもしれません(添付は500kB上限あり)
 
 アドバイスありがとうございます!
点滅A、点滅B両方ですね。
デバッグ文も入れていますが、何度も実行されてるわけでは無さそうです。
以下、イベント内容を載せます。
>イベント1
■文章選択肢:/ 【1】主人公点滅A / 【2】主人公点滅B 
-◇選択肢:【1】 主人公点滅A                                   の場合↓
 |■キャラエフェクト:主人公[点滅A(明滅)] R70/G70/B70  [5]フレーム
 |■デバッグ文:点滅A
 |■変数操作: V2-0[点滅状態] = 0 + 1 
 |■
-◇選択肢:【2】 主人公点滅B                                   の場合↓
 |■キャラエフェクト:主人公[点滅B(自動フラッシュ)] R70/G70/B70  [5]フレーム
 |■デバッグ文:点滅B
 |■変数操作: V2-0[点滅状態] = 0 + 1 
 |■
-◇キャンセルの場合
 |■
◇分岐終了◇
>イベント2(並列実行 条件:V2-0[点滅状態]が1 )
■変数操作: このEvのSelf9 = 0 + 5 
■ループ開始
 |■ウェイト:60 フレーム
 |■変数操作: このEvのSelf9 -= 0 + 1 
 |■条件分岐(数値):  【1】 このEvのSelf9  が   0 と同じ 
 |-◇分岐: 【1】  [ このEvのSelf9  が  0 と同じ  ]の場合↓
 | |■ループ中断
 | |■
 |◇分岐終了◇
 |■
◇ループここまで◇◇
■キャラエフェクト:主人公[点滅A(明滅)] R0/G0/B0  [0]フレーム
■キャラエフェクト:主人公[点滅B(自動フラッシュ)] R0/G0/B0  [0]フレーム
■デバッグ文:点滅終了
■変数操作: V2-0[点滅状態] = 0 + 0 
 
 とりえあず、【キャラエフェクトの点滅A(明滅)】を使っているのかな?
常に赤い状態(赤+100)になるなら、キャラエフェクトのコマンドを毎フレーム実行している気がする。
タイマー開始時の一度のみエフェクトコマンドを実行すれば、正常に明滅するよ
 
 [やりたいこと]
主人公が点滅したまま動き、一定時間後(5秒後)に点滅しない状態にしたい
[やってみたこと]
主人公を点滅(点滅A、点滅Bどちらでも)→並列処理でタイマーを起動→5秒後に点滅解除
[やってみた結果、どううまくいかないか]
主人公を点滅させたまま動くことは出来ました。
だが、タイマーを起動すると主人公が点滅せずに赤くなりました。
タイマーはちゃんと作動して5秒後に赤い状態は解除されます。
赤くならないにはどうしたら良いのでしょうか?
(ver.3.626)
 
 返信が遅くなり申し訳ございません。
ウディタ本体ではできないので、どうしてもやるならランチャーアプリを作れば不可能ではないという感じなんですね。
私の技術力ではちょっと手を出せそうにないのであきらめようかと思います。
AIも全然使ったことないので……
こういうやり方もあるというのを教えてくださりありがとうございました。
 
 Masaqq様へ
返信ありがとうございます。
どうも、MOD(DLC)導入済みVerの配布や本体ファイルの改変を毛嫌いしているせいで、結果的に自分で面倒を増やしているようです。
――※私の投稿内容について、一部、誤情報がありました※―――
タイルセットの読み込みについては、ゲーム開始時から読み込みが入るため、
最初から画像ファイルが必須で、wolfファイルが優先され、外付けの画像は読み込まれません。
――――――――――――――――――――――――――――
MPSファイルについての記載は問題なく、
読み込みタイミングはマップ移動時であり、システムDB側の「0.マップ設定」を書き換えることで、拡張子の省略、Dataフォルダ外への参照が可能。
MPSファイル内容:
・マップサイズ情報
・マップレイヤ情報(ピクチャで表示するのであれば、csv読込でDB管理した方がいい)
・マップイベント情報
MPSファイルが露出しているウディタ製ゲームは、
名前をすり替えた別のMPSを読み込ませることで、
Editerを介さず、色々改変できるので、
新しいゲーム性を作れないか考えてみることにします。
X番の変数呼出により、システムDBのデータは動的に上書き可能なので、、
マップIDを浪費せず、複数パターンのマップサイズの空マップが生成できたり、
セーブ時点とロード再開時でマップを変えるといった動作の別解にはなるかもしれません。
 
 としこCさまへ
大体ご理解されてる通りなのかなという気もしますが
一応内容を、返すだけ返しておきます。
周囲の熟練使用者?にも聞いてみましたが
そもそも、ある程度のMOD作成ルールを
作者側が想定して事前用意しておく必要があったと考えます。
<先だし結論>
1)マップデータ&マップEv:事前に作者が想定して環境用意がないと無理。
2)タイルセット:事前に作者が想定して環境用意してないと無理。
3)外部コモンイベント:事前に作者が専用コモンを用意してないと無理
 
→外部MOD対応Verを作者が作ってリリースする。
 もしくは、本体とは別のMOD(DLC?)導入済みVerを作者がリリースする
 
<メイン内容>
・マップサイズ:ゲーム内から変更不可なので、上限サイズで未設置マップを事前用意する必要性あり。
・タイルセット:代用として、ピクチャ表示をタイルとして描写後
        〇×の付いた透明タイルでの移動範囲の処理や既にあるタイルで対処する
  ピクチャはXY配列に取り込んでおき、それをピクチャ表示すれば元ファイルが消えても表示はできる。
        一部のチップはピクチャ表示などで表示レイヤーを調整する
 【ピクチャ番号 -100000〜-199999 のピクチャ】
 --- キャラ・▲属性のマップチップ ---
 【ピクチャ番号 -200000〜-299999 のピクチャ】
・マップ内容:MOD作者がtxt(CSV形式など)でタイル番号や通行可能不可設定を作る→インポート用コモンで処理。
・マップイベント:隠しコードMAKE_EVENTで生成できるようになったため(ver3.5以降)、
         テキスト処理などで作ることはできる。
・独自コモンイベント:テキスト処理で、スクリプト的に処理させることで実装可能
 ※あらかじめ作者がテキスト処理するコモンを用意して何ができるか情報開示する必要があります。
  <スクリプト例>
        @cself=10
        self turn_player                /* 主人公を向く */
        speak "ここはMODダンジョンです" /* なにかセリフ */
<サブ内容> 
・平文テキストがイヤ→独自暗号化させる。またはBase64変換などで簡易なフィルタはかけられる。
   (Base64デコード機能はないので要コモン制作)
 .wolfなどが取り込める部分は独自検証して実装する
・ピクチャ類:Base64や
ゲーム内でMOD的な機能を実装するという案も
> ウディタ環境でできないこと
おっしゃる通り、動的な変更/追加はできませんが
作者が想定して用意してれば似たようなことは可能。
<その他の案>
あるいはMOD制作者には、Editor上で作成されたMPSファイル配布形式をとる。
(マップEvにコモンイベント呼出などが必要な場合は中身のないモックを渡す等する)
※モック……入出力設定とコモン名が合致するが実処理は入ってないもの
作者がソースコードを開示しても良いゲームならば
ウディタEditor上で自由に編集してもらうといった荒唐無稽な方法もありますが。
あとは、作者が追加コンテンツを作るだけならば
本体とは別ファイルを用意して作ればよい(コア部分の修正があったら同期する必要はある)気もしますが
その他の案は状況が分からない者の戯言とでも思ってください。
ウディタの機能制限部分もありますが
結局は“作者がどこまで事前に想定して環境を用意するか”に尽きるかと思います。
以上となります。
 
 【やりたいこと】
ゲーム内容の一部の外部ファイル化(MOD対応)
理想の動作としては、
ゲームの既存ファイルを上書きしない形で、
専用フォルダにファイルを任意で投下/削除することで、
ゲーム内容を追加/削除する、というものです。
【追加コンテンツの内容想定】
・(*1)マップデータ(&マップイベント)
・(*2)タイルセット
・(*3)コモンイベント
※データベース関連は、データ数を増やすことはあってもデータタイプを拡張しない
あるいは文字列で万能DBを設定できる
特に高負荷となりえるマップ描画は、ウディタ標準機能を活用したいです。
追加コンテンツを実装する場合に、
最低限の独自システムで、どこまで外部化できるか
現在versionでの技術限界を教えていただけると助かります。
【詳細】
※追記0907
※誤情報修正:タイルセットは、ゲームの起動タイミングに読み込まれるため、ファイルが実在する必要あり
※
(*1)マップデータと(*2)タイルセットについては、
該当マップに移動するタイミングで必要ファイルが読み込まれるため、逆を言えば、初期設定したファイル名が実在しなくても、ゲーム起動中にエラーは発生しない。
規則性のある名前を設定しておき、追加コンテンツ側のリソース名をそれに合わせることで、任意の追加/削除が可能になる。
ただし、リソース名を固定する都合で、ファイル不在エラーの回避のために、マップ上で使用しないタイル番号にもそれ専用の画像を用意する必要がある。
加えて、追加コンテンツのファイルを削除した場合でも、ロード時点で追加マップにいなければエラーは生じないことから、セーブ時には専用マップに一旦移動して、マップ番号&座標を保存し、ロード時には改めて追加コンテンツの有無を取得して、存在しないマップへの移動回避を行うことになる。
あとは、追加コンテンツで使用するマップ番号を本体側に認識させる用のテキストファイルを同封すれば、追加マップへの誘導が可能。
※追記0907
※誤情報修正:タイルセットは、ゲームの起動タイミングに読み込まれるため、ファイルが実在する必要あり
※
[Data]  バニラ環境は、Data.wolf暗号化して追加コンテンツを空Dataに投下
 ├[MapData]-(*マップ番号).mps
 ├[MapChip]-[*タイルセット番号].wolf(タイル画像)
 └[ModInfo]-[*任意].wolf(マップ番号を記したテキスト、チップ通行設定など)
マップ番号とタイルセット番号が不一致のため、一つの暗号化ファイルにまとめることはできず、チップ設定(通行など)は、マップへ侵入する度に「チップ処理」コマンドでバニラ設定から上書き更新する必要がある。
※マップ、タイルセット番号の重複には対応できない。
(*3)コモンイベントについては単体ファイルに保存されるため、後から追加はできない。
  テキスト→コマンドの変換実行コモンを本体に組み込むしかなさそう。
  ※現在versionでは外部.Commonを指定実行する機能が削除されている
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
標準のマップ描画システムを借りない場合は、文字列ピクチャを利用して、
アニメーションパターン数 * レイヤー数  個のピクチャ番号だけでマップを表現できますが、カウンター属性をピクチャ番号で表現するなら、マップイベントのグラフィックをピクチャリンクに置換する必要がありそう。
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
ウディタ環境でできないこと
・マップデータやタイルセット画像の参照パスの動的変更
・コモンイベントの動的追加
 ……くらいの理解度なのですが、
本体ファイルの上書きなし、ウディタのマップ処理システムを利用する場合、
かつ、ユーザー側の手間を最小限にする方法は、どのようなものになりますか?
ここまでするなら、DXライブラリ/C++で構築しろとも思うのですが、
JRPGに限れば、制作コストの見積もりで、ウディタを手放すのが惜しいです
 
 >> としこCさん、Masaqqさん、
としこCさんのエディターコモンの案と、Masaqqさんの透明マップチップの合わせワザでいこうと思います。
一時的にレイヤー4〜5を使って番号を振り分け、XY配列をcsvファイル出力or読み込みを活用しようと思います。
透明マップチップをそのまま使い続けるのはバグの元になりそうなので、csvファイルに直そうかと思います。
他のものも そうゆう方法もあるのかと目から鱗で、他の処で活用できそうで大変参考になりました。
お力添えいただいき、ありがとうございました。
 
 マップイベントと主人公の相対座標(X,Y)を文字列化して
それと合致する部分を切り出すことで、返却値を取り出せそうです
一マスの文字列データ『( X 、 Y ) 戻り値 \n 』 
マップイベントXYが(5,6)
主人公XYが(3,5)
当たり判定データ
(-3,5)3
(-2,-1)4
(0,1)3
とした場合、
相対座標(3,5)-(5,6)で (-2,-1)
文字列操作の「指定文字以降を切り出し」で
"(-2,-1)"以降の
「4\n(0,1)3\n」が切り出されて、※\nは改行
切り出された「4\n(0,1)=3\n」をそのまま数値に代入すれば、4だけ取得できます
反対に、設定しているマスを取得したい場合は、
一行ずつ切り出して括弧()の中の座標XYを取り出していくことになります
※0904_07:37修正