WOLF RPGエディター 質問スレ 其の11 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
フリーソフトのRPG製作ソフトWOLF RPGエディターの質問者のためのスレッドです。
教えられる方はできる範囲で教えてあげてください。
・ここは質問スレです。質問者や回答者を煽るようなレスは禁止です。
・もしあなたが憤りを感じたり荒らしだと思っても、放置もしくは>>1とだけレスしてください。
それ以上のことを書くと、それ自体が『荒らし行為となります』。ご注意ください。
・質問者もマナーを守り、回答がつきやすい質問の仕方をしましょう。
【良い質問の例】
・〜がやりたくて・・・までしたのですが、〇〇がうまくいきません。
【悪い質問の例】
・〜できますか → 大概できます。問題は「どうすればできるか」のはずです。実のない質問はやめましょう。
・〜のようなことがやりたい → 丸投げはやめましょう。1から全部教えてくれる人はまずいません。
何が分からないか分かるまで努力しましょう。全部分からないのなら、まずは講座サイトで勉強しましょう。
・コモンイベント集から○○のコモンイベントをダウンロードしましたがエラーが出ますor使い方が分かりませんor動きません等
→まずはそのコモンイベントの作者と連絡を取って下さい。ここにはそのコモンイベントの内容を詳しく理解している人が居ないため、あなたが望むような回答はできません。
◆WOLF RPGエディター公式サイト
http://www.silversecond.com/WolfRPGEditor/
◇本スレ
【ウディタ】WOLF RPGエディター 其の65 [無断転載禁止]©2ch.net
http://mevius.2ch.net/test/read.cgi/gamedev/1502397455/
◇前スレ
WOLF RPGエディター 質問スレ 其の10 [無断転載禁止]©2ch.net
http://mevius.2ch.net/test/read.cgi/gamedev/1463812471/
次スレは>>980が立てて下さい。
立てられない場合は質問を自重して本スレに報告して下さい。 特定のファイル名のピクチャが表示されている時だけ反応するイベントを作りたいのですが
表示しているピクチャのファイル名を文字列変数として取得する方法はありますか? >>172
通常の描画と透過率・色彩変更の処理が被ってるんだろうからディレイ見直すとかかね
まぁ処理内容わからんしデバッグ文使用して自分で探るしかないよ
>>173
特定のピクチャなら表示・消去するときにフラグ管理すればいい
ピクチャ番号指定して一発で取得するようなコマンドはないはず シンボルエンカウトを作ってます
正面、側面、背面で先制攻撃やバックアタックの判定をしたいのですが、
モンスター(マップイベント)や主人公がそれぞれどの方向から接触したかを取得する命令は無いですよね?
無ければイベントの方向とイベントの座標を取得して自作するしかないでしょうか?
こちらだと主人公とモンスターの方向(4×4)と座標の比較(×4)で条件分岐だけで56通りになり大変なので、他に方法がないか悩んでおります ・キャラ画像4方向移動方向4方向の場合
マップイベントの方向 + 主人公の方向 が10の場合は正面同士の接触
マップイベントの方向 = 主人公の方向 の場合は正面&背面の接触(バックアタック)
それ以外は正面&側面での接触(サイドアタック)
あとは主人公の座標+向いている方向から、正面1マスの座標を取得。そこに対象のマップイベントがいれば主人公側の↑の処理
いなければマップイベント側の↑の処理
・キャラ画像4方向移動方向8方向の場合
(1) マップイベントに対して主人公がどの方向にいるかを角度で算出する(arctanを使うのが一番簡単)
(2) マップイベントの向いている方向を角度に変換(2の場合は90等。自力で打ち込み作業)
(1)と(2)の角度の差θからマップイベントが主人公に対して前面、背面、側面のどちらを向いているか判断(-45≦θ≦45なら前面など)
前面以外は主人公側からの接触。バックアタックやサイドアタックなど
前面での接触だった場合、主人公側について(1) (2)の作業をして前面、側面、背面のどの方向を向けているか調べる
※ちなみにウディタのマップイベントは起動時に自動的にプレイヤーの方向を向くため、
方向固定解除→1マス移動→方向固定 のルーチンでマップイベントを移動させないと、マップイベントとの接触時の互いの向きによる判定ができない
だけど何故かマップイベントのカスタムルート設定からだとこのルーチンが組めなくて
コモンイベントからのイベント制御だとこのルーチンが組める
そのためマップイベントの移動なんかをコモンイベントで一括で行わないといけない >>177
衝突判定はそれでバッチリ行けました!
行数もスッキリして感動です
詳しい説明ありがとうございます
で、次は衝突時にマップイベントが主人公側を向くのを改造するところでつまずきました
解説いただいたように下記の並列処理のコモンを作って動かしたのですが、
---
■動作指定:Ev0 / 向き固定OFF / 主人公に接近 / 向き固定ON
---
今度はマップイベント側の起動条件「イベント接触」が起動しなくなりました
現状では主人公側から接触すると起動するけど、モンスター側からは起動せずずっと主人公の後を付いてくるだけになってます 【5】イベントに複数のページを設定したんですが、最後のページしか実行されません
マップのイベントは、番号の大きいページを優先して実行しようとします。
そのため、最後のページの起動条件が満たされてしまうと、
小さい番号のページは実行されません。 >>178
あ、ごめん忘れてた
コモンイベントの動作指定の場合、接触範囲拡張+イベント接触以外だとイベント側からの起動ができないんだった
マップイベントのカスタムルートで
移動頻度を設定 => 0 (以降の処理を毎フレーム処理)
向き固定OFF
主人公に接近
向き固定ON
移動頻度を設定 => 3 (任意の移動速度に戻す)
でできるはず
と思ったけど、半歩移動の設定の時に、イベントが上側から接触した場合は起動しないバグって治ってないんだな 軽く作っただけだから想定通りの動作するかわからんけど
テストした感じでは多分問題なく動くので、後は自分で汎用性高めてやってみて。これだと1マップイベントしか動かないし、プレイヤーを発見している状態での動きだけだから
一応このコモンイベントの動作で起動する場合は敵側からの接敵判定、 マップイベントのプレイヤー接触からの起動の場合はプレイヤー側からの接敵判定 って分けられるはず。
コモンイベント(並列実行)
■条件分岐(変数): 【1】 Sys13:イベント実行中?(1=ON) が 0 と同じ
-◇分岐: 【1】 [ Sys13:イベント実行中?(1=ON) が 0 と同じ ]の場合↓
|■変数操作: CSelf10 = 23 + 0
|■変数操作+: CSelf11 = キャラ[CSelf10] の 現在の起動ページ 0=ナシ 1〜=起動ページ
|■条件分岐(変数): 【1】 CSelf11 が 1 以上
|-◇分岐: 【1】 [ CSelf11 が 1 以上 ]の場合↓
| |■動作指定:キャラ[CSelf10] / 向き固定OFF / 主人公に接近 / 向き固定ON
| |■変数操作+: CSelf12 = キャラ[CSelf10] の 移動中?[1=YES 0=NO / ※主人公のみ1フレ以上停止時のみ0]
| |■条件分岐(変数): 【1】 CSelf12 が 0 と同じ
| |-◇分岐: 【1】 [ CSelf12 が 0 と同じ ]の場合↓
| | |■デバッグ文:停止中(進行方向に障害物有り)
| | |▼ 障害物有りで進行不可 = 移動先に主人公が存在する可能性有
| | |▼ 後は移動先に主人公が存在するか調べる
| | |▼ 主人公が存在する場合は接敵判定に移行
| | |■
| |◇分岐終了◇
| |■
|◇分岐終了◇
|■ウェイト:20 フレーム (移動頻度に合わせてウェイトを設定する)
|■
◇分岐終了◇ |■変数操作: CSelf10 = 23 + 0
ああそうだ、この処理は、単に俺がマップイベント23をテストに用いただけ >>179
後々のメンテナンスを考えて1ページしか使ってなかったです
エスパーさせてしまってすみません >>181
行けました!
つまりこれはモンスターに移動命令を出したのに移動してないということは障害物があるんだから接触判定をしろってことですね
汎用性もあるのでこれを元に組んで行こうと思います
マップイベント内での処理だと後々に仕様変更したときにメンテナンスが大変なので、これだとコモン側で処理をコントロールできるのも素晴らしいです
加えてデバッグ文の使い方もこれで分かったので感謝感謝です! 質問です
ウディタのピクチャ番号の割り当てについてです
各コモンの処理時にいくつかのピクチャ番号をバラバラに割り当てたいのですが
(例:STGの各弾それぞれに加えて同時にレーザーやボムも複数放てるような感じのもの)
こういったときはピクチャ表示がされているか判定して
そこから通常変数にピクチャ番号割り当てて
各イベント\cself[a番]で取り出して使用、と言う方法を考えついたものの
実際やってみるとどうも上手く行きません
方法としてもう少し分かり易いもの、参考になるやり方などあったら教えて頂けたら幸いです ぱっと見だと問題ないように見えるけど(通常変数に割り当てているのに、コモンセルフ変数で取り出しているっぽい説明なのはよくわからんが)
何が上手く行かんの
処理が重いの? ピクチャが表示されないの? ピクチャの移動が上手く行かないの? 割り当てた通常変数を初期化した際に挙動がおかしくなるの? ピクチャの空き番号調べる処理と空いてる番号にピクチャ表示させる処理が別のコモンで
空きピクチャ番号のやり取りに通常変数挟んでるのかな?
コモンの返り値でやってみては
返り値ってのはコモンイベントの設定のトコの「結果を返す」で指定する値のことね
見当違いのこと言ってたらごめんね
詳しいやり方はヘルプ見てちょ 質問内容だとワイの頭では回答できないのでワイのピクチャの管理方法
自機や敵やシンボルなどメインで扱うピクチャは、基本値に追加ピクチャ番号を足した絶対値
例)自機基本値(1000)+バリア(100)+ポッド(10)等々
弾やエフェクトなど一定後に消えるものは、弾を追加する際にそのピクチャ番号が使用されてるか判定して若い番号から埋めていく
例)弾基本値(2000)+弾追加値(1)→ピクチャ2001が空いていれば描画、空いていなければ更に+弾追加値(1)を繰り返してサーチ
参考にもならなかったらごめん 回答ありがとうございます
>>188
返り値、まだ若干使い方を理解していないのでこの機会に調べてやってみますね
>>189
ちゃんと絶対値で設定しておいた方が確実そうで良いですね 公式のコモンでちょくちょくあるテキストファイル読み込みからのスクリプトコモンが起動方法がわかりません。
りどみに書いてるとおりに導入してるつもりなんですけどもどうやってもエラーすら起こらずに無反応。
とりあえず適当なマップイベに起動条件決定キーで目的のコモン挿入して、コモンEv入力(文の項目にパス入力しても無反応。
とにかくのれんに腕押しって感じの手詰まり感で困ってます。
このスクリプト読み込み系のコモンはどうすれば導入できるのでしょうか。
ちなみにウディタのバージョンは1番新しいヤツです。 >>187
見逃してましたすみません!
回答どうもです
連打する事で一定番号に至ったらピクチャ自体が消えたりとかしないかなと
でも今の所無事に機能するようになったので大丈夫だと思います >>190
ワイも最初は返り値スルーしてコモン組んでたけどこれ覚えると便利だよ
プログミングでもGET関数とかで当たり前に使われるし、通常変数をあまり使わずにcselfで組むようにすれば変数の管理もしやすくなる >>191
他作コモンについては基本>>1
どうしても誰かに検証してもらいたいならエスパーしなくて済むように他作コモンやソースを貼るなりしないと解答は出来ないと思う
ちなみに俺は他作コモンの使い方の時点で無理ごめん >>194
スクリプトは諦めることにします
ありがとうございました >>194
まぁwwせめて、コモン名ぐらいおしえてほしいよなぁwww > テキストファイル読み込みからのスクリプトコモン
これって会話文とかをテキストファイルで作ってウディタで実行するってことだろ?
自分で作った方が使いやすいだろ マシナリウムみたいなの作るのは厳しいですか?
unityでもいいんですが 厳しくはないけどunityでいいならunityにした方が良いんじゃない?
確か画面見ながら仮置きとかできたはずだから、一枚絵の背景でキャラクターを動かす形なら、そっちの方が楽だと思う >>197
データ系の他人が作ったコモンなんて解読、利用コストが高すぎて実用性ないよな
ここで聞きながら作ったほうが早いまである
れっつ自作ワールド >>713
質問スレで裸待機してるで!
http://mevius.2ch.net/test/read.cgi/gamedev/1503240024/
エスパーすぎると1読めって返されるのと抽象的過ぎると高度な返答来てエターナルから、
処理内容コピペするなりで質問したらちゃんと解決すると思うよ jrpg作るのってunityとかだと厳しいんですか 全く中身の伴わない質問はするだけ時間の無駄だぞ
unityの質問はunityのコミュニティでやれと言いたいが、あっちでも邪険に扱われそう 並んでる箱に1〜9までの数値を番号の重複無しでランダムで入れたいんだけど簡単に入れていく方法ありますかね?
今やってるのだと20行くらいは使ってます 簡単にやる方法ねぇぞ。やっていると思うけど、やるとしたら、こんな感じじゃあない?
WoditorEvCOMMAND_START
[121][4,0]<0>(1600010,1600020,0,4)()
[179][1,0]<0>(9)()
[170][0,0]<1>()()
[121][4,0]<2>(1600010,1,9,24592)()
[121][4,0]<2>(1600016,1600010,0,32)()
[121][4,0]<2>(1600011,1600010,1600020,4104)()
[121][4,0]<2>(1600012,0,0,0)()
[121][4,0]<2>(1600015,0,0,0)()
[179][1,0]<2>(1600011)()
[121][4,0]<3>(1600013,1600020,1600012,4)()
[121][4,0]<3>(1600014,1600013,0,32)()
[111][4,0]<3>(1,1600014,1600016,2)()
[401][1,0]<3>(1)()
[121][4,0]<4>(1600015,1,0,0)()
[499][0,0]<3>()()
[121][4,0]<3>(1600012,1,0,256)()
[498][0,0]<2>()()
[111][4,0]<2>(1,1600015,0,2)()
[401][1,0]<2>(1)()
[171][0,0]<3>()()
[499][0,0]<2>()()
[498][0,0]<1>()()
[121][4,0]<1>(1600010,1,0,256)()
[498][0,0]<0>()()
[106][0,1]<0>()("\cself[20] \cself[21] \cself[22] \cself[23] \cself[24] \cself[25] \cself[26] \cself[27] \cself[28]")
WoditorEvCOMMAND_END WoditorEvCOMMAND_START
[121][4,0]<0>(1600010,1600020,0,4)()
[121][4,0]<0>(1600011,1,0,0)()
[179][1,0]<0>(9)()
[121][4,0]<1>(1600010,1600011,0,16)()
[121][5,0]<1>(1600010,1,0,65792,1)()
[498][0,0]<0>()()
[179][1,0]<0>(50)()
[121][5,0]<1>(1600012,1600020,1600028,90124,1)()
[121][4,0]<1>(1600014,1600012,0,32)()
[121][4,0]<1>(1600012,1600013,0,48)()
[121][4,0]<1>(1600013,1600014,0,16)()
[0][0,0]<1>()()
[498][0,0]<0>()()
[106][0,1]<0>()("\cself[20] \cself[21] \cself[22] \cself[23] \cself[24] \cself[25] \cself[26] \cself[27] \cself[28]")
WoditorEvCOMMAND_END ▼ 初期設定
■変数操作: CSelf10[配列数] = 9 + 0
■変数操作: CSelf11[配列先頭[vPtr]] = 1600050 + 0
▼ 配列に1〜9の値を順番に入れておく
■変数操作: CSelf20[i] = 0 + 0
■回数付きループ [ CSelf10[配列数] ]回
|■変数操作: CSelf30[tmp] = CSelf11[配列先頭[vPtr]] + CSelf20[i]
|■変数操作: V[CSelf30[tmp]] = CSelf20[i] + 1
|■変数操作: CSelf20[i] += 1 + 0
◇ループここまで◇◇
▼ fisher-yatesによるシャッフル
■変数操作: CSelf20[i] -= 1 + 0
■回数付きループ [ CSelf10[配列数] ]回
|■変数操作: CSelf30[tmp] = 0 〜 CSelf20[i]
|■変数操作: CSelf37[配列1[vPtr]] = CSelf11[配列先頭[vPtr]] + CSelf20[i]
|■変数操作: CSelf38[配列2[vPtr]] = CSelf11[配列先頭[vPtr]] + CSelf30[tmp]
|■変数操作: CSelf39[HOLD] = V[CSelf37[配列1[vPtr]]] + 0
|■変数操作: V[CSelf37[配列1[vPtr]]] = V[CSelf38[配列2[vPtr]]] + 0
|■変数操作: V[CSelf38[配列2[vPtr]]] = CSelf39[HOLD] + 0
|■変数操作: CSelf20[i] -= 1 + 0
◇ループここまで◇◇
▼ 確認
■変数操作: CSelf20[i] = 0 + 0
■回数付きループ [ CSelf10[配列数] ]回
|■変数操作: CSelf30[tmp] = CSelf11[配列先頭[vPtr]] + CSelf20[i]
|■変数操作: CSelf30[tmp] = V[CSelf30[tmp]] + 0
|■デバッグ文:cself[\cself[20]] = [\cself[30]]
|■変数操作: CSelf20[i] += 1 + 0
◇ループここまで◇◇
■デバッグ文:------------------------ >>207が簡潔でいいね 11行か
運任せな16行が限界だったわ
WoditorEvCOMMAND_START
[122][2,1]<0>(1600005,0)("1,2,3,4,5,6,7,8,9")
[170][0,0]<0>()()
[121][4,0]<1>(1600011,1600020,8000008,4)()
[121][4,0]<1>(1600010,1600011,0,32)()
[111][4,0]<1>(1,1600010,0,2)()
[401][1,0]<1>(1)()
[121][4,0]<2>(1600011,1600005,0,16)()
[122][2,1]<2>(1600005,2816)(",")
[112][2,4]<2>(1,1600005)("<<NotFound>>","","","")
[401][1,0]<2>(1)()
[171][0,0]<3>()()
[0][0,0]<3>()()
[499][0,0]<2>()()
[0][0,0]<2>()()
[499][0,0]<1>()()
[0][0,0]<1>()()
[498][0,0]<0>()()
[106][0,1]<0>()("\cself[20] \cself[21] \cself[22] \cself[23] \cself[24] \cself[25] \cself[26] \cself[27] \cself[28]")
WoditorEvCOMMAND_END なんか大喜利みたいになってんな
とりあえず簡単に解説しとくと
>>206
変数に1~9のランダムな数を入れる
今まで入れた変数と中身が被ったらもう一度ランダムな数を入れ直す
被らなかったら次の変数へ
>>207
9つの変数に1~9の数を順番に入れておく
無作為に選出した変数同士の中身を入れ替える。十分な回数シャッフルすればきちんと混ざるだろうという理屈
>>208
基本的な考え方は207と同じ
順番に選ばれた変数と無作為に選ばれた変数を入れ替える。必ず全ての変数がシャッフル対象に選ばれるのが特徴
>>210
変数を基準に数字を無作為に選ぶ207と逆に、数字を基準に変数を無作為に選ぶ。既に選出された変数を選んだ場合はもう一度変数を選び直す
ただこれは変数を初期化していないので、初回以外はループを抜け出せない。実際に使う場合は変数を初期化する処理を追加しておくように × 変数を基準に数字を無作為に選ぶ207
○ 変数を基準に数字を無作為に選ぶ206 まさに206〜の同じ流れで208に辿り着いたとこでしたw
どうしてもループ回数を最小限に抑えたい病なのと他の処理も噛ませるので大元のソースは出来るだけシンプルなのが良いので208方式で行こうと思います
210は発想に無かったので参考になりました
解説も助かりました
とりあえず自分の考えた処理がそこまでみんなと逸脱してないと確認できただけで収穫ですありがとでした! 文字列変数に値一覧入れて、ランダムで行を引っこ抜くというのも、思いついたけど、
これ、ウディタのデフォだけの文字列操作だけだと、行が長くなるだよなぁ
というか、正規表現を使った置換欲しいなぁ・・・ ・箱に順番にランダム値を被りなしで入れていく方法
・箱に1〜から順番に値を入れて行き無作為にシャッフルする方法
・箱に1〜から順番に値を入れて箱の順番で総当たりして交換先を無作為に選んでシャッフルする方法(ループは箱の数だけで済む)
・文字列変数に値を入れ無作為に箱に入れていく方法
色々な方法があるなぁ >>115
これ、セーブしてからテストプレイになるってウディタマニュアルのイベントマップのところにはっきり書いてあるわ 質問です。
並列処理にてキー入力の連打を阻止して長押しに対応するコモンを作ったのですが、
キャンセルキーの方は機能するのですが、決定キー(下記参照)の方が機能してくれません。
どのようにしたら機能するでしょうか。
(キャンセルキーの方は長押し対応させてるので別コモンでの処理にしています)
決定キーでは長押しじゃなく連打処理をさせないような形にしたいです。
| | | |▼ キー入力判定
| | | |■キー入力:変数V40[キー入力A] / 決定(10) キャンセル(11)
| | | |■条件分岐(変数): 【1】 V40[キー入力A] が 0 と同じ
| | | |-◇分岐: 【1】 [ V40[キー入力A] が 0 と同じ ]の場合↓
| | | | |■変数操作: V41[キー入力確認B ] = 0 + 0
| | | |◇分岐終了◇
| | | |▼ Bが0ならばキー入力確認
| | | |■条件分岐(変数): 【1】 V41[キー入力確認B ] が 0 と同じ 【2】 V41[キー入力確認B ] が 1 と同じ 【3】 V41[キー入力確認B ] が 2 と同じ
| | | |-◇分岐: 【1】 [ V41[キー入力確認B ] が 0 と同じ ]の場合↓
| | | | |
| | | | |■条件分岐(変数): 【1】 V40[キー入力A] が 10 と同じ 【2】 V40[キー入力A] が 11 と同じ
| | | | |-◇分岐: 【1】 [ V40[キー入力A] が 10 と同じ ]の場合↓
| | | | | |■変数操作: V41[キー入力確認B ] = 2 + 0
| | | | | |■イベントの挿入: コモン99:[ 攻撃 ]
| | | | | |■ウェイト:10 フレーム
| | | | |-◇分岐: 【2】 [ V40[キー入力A] が 11 と同じ ]の場合↓
| | | | | |■変数操作: V41[キー入力確認B ] = 1 + 0
| | | | | |■
| | | | |◇分岐終了◇
| | | | |■
| | | |-◇分岐: 【2】 [ V41[キー入力確認B ] が 1 と同じ ]の場合↓
| | | | |■
| | | |-◇分岐: 【3】 [ V41[キー入力確認B ] が 2 と同じ ]の場合↓
| | | | |■
| | | |◇分岐終了◇ パッと見だと特に問題ないけど
V41って通常変数だっけ? 別のコモンで書き換えている可能性あるんじゃない? 回答どうもです。
v41は通常変数ですね。
別コモンでも動作させる為にわざと通常変数使用してます。
攻撃のコモンだけ決定キーを押しっぱなしだと
勝手に二段三段と攻撃してしまうのでそこを何とか改善したいのです。
改善出来る箇所があったら教えて頂けたらと思ってます。 いや、だから別のコモンでV41を0に書き換えているんじゃない?
提示された範囲に限って言えば問題ないよ 確認してみましたが0にするような処理も見当たらなかったです
並列処理だからなんでしょうか 同じように作ってもやっぱり問題ないし、別の部分が悪さしてるよ
デバッグ文使って、値を見て自分で調べるか
他人にデバッグして欲しいならゲームデータ丸ごとアップロードした方が早い
並列処理だからとかは全く関係ない すみません、別コモンで操作を受付無いようにしていた事が原因でした。
無事解決です。
親切に回答ありがとうございました。 質問です。
マップチップの通行設定で困っています。
「▲」チップ座標より後ろに行くとキャラがマップチップの裏側に入るについて
階段の手すりを作ろうと
チップより手前側に居る時はキャラクターより後ろ、
チップより奥側にいる時はキャラクターより手前に表示されるようにしたのですが
▲でもつねにチップがキャラクターの後ろ側に表示されるようになってしまい
反映がなされていないように見えます。
(MAP遷移して確認したり
ゲームを起動しなおして最初から確認しても直りません)
過去このような事象が起きた方、解決法など教えていただけると嬉しいです。 すみません!!
チップの前面判定なんていじった覚えもないのに変だと思い
上から全イベント洗っていたらキャラクターの動作指定させた時に誤クリックしたのか
表示が最前面ONになってました……自己解決しました…… 基本的な質問で悪いんだけど
AIのアクションを判定ってどういうこと?
アクション12を判定にしたら12の後に必ずやるってことなの? アクション12 を判定にしたら、そらその通り、アクション12を判定するんでしょ
アクション12の条件(5%の確率で実行とか)を満たしているかどうかの判定を行うってこと
んで満たしていた場合はアクション12に設定されている行動を行って、満たしていない場合は、次に設定されているアクションの判定を行う 初心者ですが質問です
現在マップのBGMをコモンセルフに格納しようと試行錯誤したのですがやり方が分かりません…
現在再生中のBGMではなく現在マップのBGMを取得するにはどうしたらいいのでしょうか? 今確認できる状況じゃないからあやふやだけど
確かsysDB0のマップ設定に、使用するBGM番号を格納している所がある
現在いるマップ番号は変数操作+のその他から取得できる 初心者ですが質問です。
ロード後に同じ場所で敵が出るのを回避するために並列のコモンにcself0〜0を入れて乱数を無駄遣いしてみたのですが
それでも同じ位置が敵がでます・・・
ロード直後に同じところで敵がでないようにするためにはどこを変更するべきでしょうか 同じ場所? 同じ歩数ってこと?
コモン37のことだと仮定して話すと、乱数が介入するのはエンカウントした後に初期化するときだから、エンカウントするまでは乱数進めても意味ないよ
累積値が一定以上溜まった場合にエンカウントする仕組みだから、ロードから復帰した時にこれに乱数代入すれば良いんじゃね。累積値はCDB18のID65 コモン37です。説明が欠けてました、すみません
ロード後のエンカウント値に乱数を入れればよかったんですね。
ありがとうございます たびたびすみません。コモン37の続きです。
ロード直後の処理はコモン131のセーブ欄実行で行われてると思い、
コモン131のデータのロードCself12[対象のセーブデータ]の後にエンカウント値に乱数を入れてみました。
でも反映されてないみたいで・・・ロード処理の場所はここではないのでしょうか なぜ反映されてないのかを突き止めよう
エンカウント値を可視化して
毎回同じ値になるのか
ロード直後に乱数入れるまではうまくいってるのか
どこかでミスをしてないか、何が悪さしてるのか考えよう ロード後に見てみると毎回同じ値になってますね・・
マップ内で乱数を取るイベント置いて、値を呼び出してみるとエンカウント累積値が変化してるので、
ロード時に乱数を挟む位置が違うみたいです。
ありがとうございます。もう少し調べてみますね ロード直後のみに実行されるコモンイベントつくりゃええねん
udbはセーブデータに反映されないから、それ専用の項目作って、そのudbの初期値の値の場合に実行されるようにすりゃいい
udb書き換える時に必須の変数呼び出し値については公式見て.イベントコード書き換えでもいいけど
例)udb[18: 0: 0]が0の場合に実行
■変数操作: CSelf10[呼び出し値] = 1018000000 + 0
■変数操作: CSelf11[判断] = V[CSelf10[呼び出し値]] + 0
■条件分岐(変数): 【1】 CSelf11[判断] が 0 と同じ
-◇分岐: 【1】 [ CSelf11[判断] が 0 と同じ ]の場合↓
|▼ ロード直後実行のなんか
|■変数操作: V[CSelf10[呼び出し値]] = 1 + 0
|■
-◇上記以外
|■ウェイト:999999 フレーム
|■
◇分岐終了◇ 書き忘れてたけどコモンイベントの設定は並列実行(常時) ロード直後に呼び出すコモンを作る必要があったんですね。
長時間いじりまわしてできなかったので助かりました。
ここで質問してよかった・・ありがとう 初心者です
基本システム使ってます
顔グラを1倍の大きさにして左下に移すことはできたのですが、画面の一番下から少し上にずらすことができません
コモン63の数値をいじったりしてるのですが、全く変化しなかったり顔グラが消えたり上から下に落ちてきたりで上手くいきません 161〜163行目のX座標とY座標が最終的に表示される座標
どんな処理してんの? ってのは前スレ>>56辺りから見たらわかる。以前のverの説明だから、ちょい行数はズレてるけど ん?
左下に移すことができたなら、そこから更に位置をずらすことぐらい造作もないような気がするけど 左下に移すのはわかりやすいサイトがあったのでその通りやったらできました
だから根本はあんまりわかってないです
>>244
アドバイスありがとうございました
おかげで上手くいきました! ウディタのメッセージ欄の記号の質問なんですが、
♡のように、白抜きハートってどうやったらだせますか?
アイコンはうまく作れず、フォントはいいのが見つからず… ウディタはunicodeに対応していないから、普通にフォントで出そうとしても無理でしょ
数値参照文字はHTMLだけで使えるものだし
素直にアイコン描くか、絵文字用のフォント入れた方がいいよ 誰かいたら聞きたいんだけど
イベントが主人公から逃げるコモンを自分で作ろうとしてたんだけど、
壁に当たって動けなかったら指定した動きをするってシステムにしようとして、
1イベントの座標をCSelfに入れる
2キャラクターの動作指定でイベントを主人公から離れさせる
3もう一度別のCSelfにイベントの座標を入れる
4「1」の座標と「3」の座標が同じなら決めた動きをする
っていう風にしたら、なぜか壁に当たった時に主人公から離れて、
動けるときに決めた動きをするようになったんだけど、どうしてかわかる? 2の動作指定の時に動作完了までウェイトにチェックを入れれば普通に動くんだけど、
一つのコモンで大量のイベントを動かすために回数付きループを使ってて、
それでウェイトを入れちゃうとイベントが順番にしか動かないから
何とかしようとしてたら気づいたんだけど、なんでこうなってるのか理解できない。
一応このままでも動きを逆にすれば機能しそうだけど、できれば理解したい。 >>249
了解しました…できるだけ粘ってみます。 >>251
ウディタの仕様からの予想と俺なりの解釈なんで、間違っていたらすまん。と最初に言っておく
間違ってたら誰か修正してくれ
ウディタの動作指定の仕様は、【一次予約】と【二次予約】から成り立っているんや。
(A) キャラクターが動いていない(チップの間にいない)状況の場合(移動中?の変数が0の場合)
1. 移動処理が当たるまで処理を実行する
2. 移動処理が入っていた場合は移動先のマスが空いているかの確認
3. 移動先のマスが空いていた場合、Evの座標をそこへ移して、Evの移動処理を【一次予約】に書き込む。変数操作+の、対象Evの移動中?の変数を1にする
4. まだ行が残っていた場合、【二次予約】へ書き込む
※これはコモンEvの場合の処理。マップEvの場合、移動以外の処理にも頻度が影響するため、一番最初の行以外は【二次予約】行き(のハズ)
(B) キャラクターが動いている(チップの間にいる)状況の場合(移動中?の変数が1の場合)
1. 既に【二次予約】が存在していた場合は、全て消去
2. 全ての新しい動作指定を【二次予約】へ書き込む
んでウディタの処理順番は大雑把に言うと
マップ並列実行→自動実行→コモン並列実行→ウディタ側の処理→画面更新
って感じ。んでキャラクターを実際に画面上で移動させたりしているのが、このウディタ側の処理なのよ。
このウディタ側の処理がどんな感じで動いているかと言うと
1. 【一次予約】が残っていた場合は処理を行う
2. 【一次予約】の処理分が、この処理で終わった場合、【二次予約】から(A)の処理を行う
3. 既に何も残っていない場合、対象Evの移動中?の変数を0にする
ここで【二次予約】から【一次予約】への移し替えがあるわけ。しかも動作完了と同時に行われる。この処理が、全ての処理が終わった後に行われるっていうのがミソでな。
並列実行や自動実行、呼び出しなんかでは、【一次予約】は書き換えられないんだけど、【二次予約】は書き換えられるので、
キャラクターが動いていない場合は、最初の動作は一次予約に書き込まれるので、「先に実行された処理が優先」されて、キャラクターが動いている場合には「後に実行された処理が優先」される
ように見えるんや だから、250の処理を簡単のために
(I)逃げる処理、(II)行き止まり処理と割り振って説明すると
(A)の状況では、動けるために(I)の処理が【一次予約】に入れられる
(B)の状況では、(I)の処理が【二次予約】に入れられるが、(移動中で動けないために)同じ座標に存在するため(II)が【二次予約】に上書きされる
って感じで、最初の一歩は(I)の処理が実行されるけど、それ以降は(II)の処理が実行され続ける って感じになる
これを回避するために用いるのが変数操作+の移動中?って変数なんよ
だから、座標が同じ = 壁際 じゃなくて、 対象のEv移動中?の変数が0 = 壁際 って考えて処理するのが良い
もしくは移動中?の変数が0の場合のみ250の処理をするか のどちらか すぐ答えられなくてごめん
丁寧に説明してくれたおかげでかなり理解できたと思う。
移動中?の変数を使ったらうまく動かせたよ!
親身に対応してくれてありがとう!
ゲーム作りがんばるよ! >>253
こうすればレスを指定できるのか
本当にありがとう!
メモに残して似たようなことがあったら見れるようにしておくよ 質問です
基本システムのメニュー画面に新しく文字画像を追加したいのですが、
何故か追加した画像が背景の後ろに表示されてしまいます
これはどうやらコモンイベントで呼び出した際に起こる現象のようで、
直接(コモンEv88に)書き込んだ場合はそのような不具合は起こりませんでした
ですが、コモンEv88に書き込むと今度はメニューカーソルが正しく表示されなくなってしまいます
(キー入力の有無に関わらずずっと追加した画像に焦点を当て続けている)
どうにかしていずれかの不具合をなくしたいのですが、正直お手上げ状態です
誰か分かる方いたらお願いします
バージョンは2.21です ピクチャ番号が被ってんだろ
基本システム2 ピクチャ番号 で検索したら基本システムで使用しているピクチャ番号載せているブログとかあるから、そこ見て被らないように番号調整しろ 一応コモン88の最初の方のコメント文で使っている番号が説明されているから、それ見てもいいぞ。メニューのだけだけど
カーソルは基本ピクチャ番号+2って書いてあるから、多分10002のピクチャ番号使ってたんだろうな >>258
>>259
解決しました、ありがとうございます!
蓋を開けてみたらバカみたいに単純なことですね… 物事はえてしてそんなもんだよ
論理だてて推測しよう、という姿勢は凄く良いから頑張れ 質問です
変数の中身によって呼びだす変数を変えたいのですがうまくいきません
例えば変数0が11ならば変数11の値を表示するという処理の場合です
変数0=2000000+変数0としても22にしかならないです
変数0は0〜99の値をとる予定です
変数0によって分岐、呼びだす変数を指定する以外にどういったものがあるでしょうか? それでええやん
V[0] = 2000000 + V[0]
V1[0] = V[V[0]]
でV1[0]の値書き出せばいい なんで2000000を加算しているのに22が出てくるのかわからんけど そもそも変数100個も使うなら可変DB使ったほうがいい
呼び出し値使わなくてもDB操作けで値持ってこれるし
あと値取らなくてもよくて表示するだけなら特殊文字でいける
\v1[\v[0]]とか、\cdb[0:0:\v[0]]とか 実は表示だけじゃなくて変数によって処理を変えたいんです
262の例とは数字が異なってしまうのですが以下のような処理を試しました
V0[]=2+0
V1[]=2000000+V0[]
右辺の2000000の部分で『データを呼ばない』にチェックを入れると2000002が、入れないとV0[]+V0[]となってしまい4が表示されます
実際はV2[]を表示したいのです
この後V2[]の値によって処理を変える予定です
可変DBは使ったことがなかったので思いつきませんでした
これを機に使い方を勉強してみます >>267
データを呼ばないで変数呼出値を変数に入れてから、その呼出値の入った変数でX番の変数呼出をする必要がある
V0[]=2+0
V1[]=2000000+V0[] データを呼ばないにチェック
V1[]=V[V1[]] X番の変数呼出にチェック
これで通常変数1番に通常変数2番の中身の値が入る
と、まぁこんな感じでややこしいから基本的にDB使ったほうがいい https://i.imgur.com/Oh8EUzo.png
この機能は変数操作とセーブ・ロードでしか使えないから、
条件分岐なんかで用いたい場合は、一度別の変数に値を入れるなどしてワンクッション置く必要がある お二人とも詳しくありがとうございます
私が想定していた処理は>>268で書いていただいたものでした!
また、X番の変数呼出についても勘違いしていたようです
>>269の画像のおかげで少しわかったような気がします
可変DBも含めて色々試してみたいと思います
ありがとうございました 質問です。
ピクチャAを用いてピクチャ番号x〜yのいくつかを表示し
それぞれを時間差だったりでパターン変更(アニメーション)させながら表示したいのですが、やり方がなかなか思いつきません。
何か上手い方法無いでしょうか?
教えて頂けたら幸いです。 言ってることの意味がよくわからなくて何がしたいのか全く伝わってこないけど、
ピクチャを表示するときに発動ディレイを入れたら表示を遅らせることができるし、
イベントコマンドのエフェクトのとこにピクチャの自動パターン切替っていうのがある ■ このスレッドは過去ログ倉庫に格納されています