クリア回数を記録したり、達成ENDを記録したりする際、
別のセーブデータに書き込んで管理する方法がありますが、
例えばセーブデータ21番を記録用として書き込んだ時、
次にロードすると、カーソル位置が
最後にプレイヤーがセーブしたデータではなく
セーブデータ21になってしまっている場合があります。
そんな時の問題解決法。

<例>
END1~5を達成次第、セーブデータ21に記録する。
各END達成後はロード画面が表示される(タイトル画面には戻らない)

<作り方>
ENDイベントの直後に、下記の手続きを入れます。
・現在の最新セーブデータ(カーソル位置)が何番かを調べ、Self9に入力
・次にセーブデータ21の通常変数に書き込みたいデータを書き込み、
・最後に最新セーブデータの通常変数にも同じ書き込みをする

■変数操作: このEvのセルフ変数9 = Sys25:現在セーブデータ番号(0~) + 0
えんd1

■セーブデータに書き込み:セーブデータ[21]の V2-3[END1] = 1
えんd2

■セーブデータに書き込み:セーブデータ[このEvのセルフ変数9]の V2-3[END1] = 1

えんd4

セーブデータ21に書き込んだ後、最新セーブデータに書き込んでいるので
カーソル位置は、プレイヤーが最後にセーブした箇所のままになります。
(正式セーブではなく、変数データ単独の書き込みなので、
プレイヤーの位置が変わったり、他データの変化はありません)

END達成後、ロード画面が表示されるタイプでは、
上記のコマンドが入ってないとエラーが出ますが、
END達成後、タイトル画面に戻ってやり直すタイプでは
セーブデータ21への書き込みコマンドのみでも
問題なく動作できる場合もあります。

ウディタデフォルトのマップでの毒ダメージは
1歩ごとに1ダメージ以上でしか設定できないため
少し歩くとすぐにHPが減ってあっという間に死んでしまいます。
なので5歩ごとや10歩ごとにダメージを食らう設定にする方法。
今回は10歩ごとにUDB状態異常で設定した毒ダメージを
1回分食らう設定で作ってみます。

通常変数「hpカウンタ」を作り、コモン076X[移]状態更新の36行目に
■変数操作: CSelf1[hpカウンタ] += 1 + 0
■条件分岐(変数): 【1】CSelf1[hpカウンタ] が 20以上
-◇分岐: 【1】 [ CSelf1[hpカウンタ] が 20以上 ]の場合↓
■可変DB書込:DB[主人公ステータス:CSelf20[処理中キャラID]:HP] += CSelf24[一歩のHP自然変動値]
■可変DB書込:DB[主人公ステータス:CSelf20[処理中キャラID]:HP] 上限 CSelf32[最大HP]
■可変DB書込:DB[主人公ステータス:CSelf20[処理中キャラID]:HP] 下限 0
■変数操作: CSelf13 = -2 - CSelf21[処理中順番]
■変数操作: CSelf1[hpカウンタ] = 0 + 0

◇分岐終了◇


と入れます(デフォルトの半歩移動で計算して20歩ごとのダメージにしています)
これで毒状態の時に、マップで歩くと10歩ごとに毒ダメージを食らうようになりました。
ただこの設定だけだと画面演出がないため、毒ダメージ感がありません。
毒ダメージ演出はお好みで■変数操作: CSelf1[hpカウンタ] = 0 + 0
の下に加えてもらえばOKですが、ここでは2通りの演出を挙げてみます。

<その1/画面が赤くフラッシュ+ダメージ音>
変数「動作指定対象」を作り、
■変数操作:CSelf13[動作指定対象] = -2 - CSelf21[処理中順番]
■イベントの挿入:コモン49:[X[共]システムSE再生] / 51:ダメージ音
■キャラエフェクト:キャラ[CSelf13[動作指定対象]][フラッシュ] R0/G-250/B0 (20)フレーム


<その2/ダメージ数をポップアップさせる>
変数「動作指定対象」を作り、
■変数操作:CSelf13[動作指定対象] = -2 - CSelf21[処理中順番]
■変数操作+: CSelf2 = キャラ[CSelf13] の 画面X座標
■変数操作+: CSelf3 = キャラ[CSelf13] の 画面Y座標
■変数操作: CSelf24[一歩のHP自然変動値] 絶対値= CSelf24[一歩のHP自然変動値] + 0
■イベントの挿入: コモン96:[ X[移]ダメージ・回復ポップアップ ] / CSelf2 / CSelf3 / CSelf24[一歩のHP自然変動値] / 0:HPダメージ


<注意>
パーティ人数が多く、複数人毒にかかってたりすると
上記毒演出がメンバー毎に発動されるので、移動中やかましくなったり
ポップアップで画面が見えにくくなったりするので
パーティ人数が多い場合は派手な毒演出はあまりおすすめしません。


◆毒ダメージ軽減案&ポップアップ法/情報提供byユウさん

決定キー実行イベントでは、
プレイヤーがどの方向から話しかけてくるかわかりませんが、
動作指定の関係で、どうしてもこの位置から話しかけてもらいたい!
という時、自然な感じで決まった方向から話かけてもらう方法

(例)女の子が景色を眺めている所に、後ろから主人公(プレイヤー)がやってきて
声をかけて一緒に並んで帰っていくイベント
42.png
通常だと4方向+半歩ズレた位置の、
全部で7つの位置から話しかけられる可能性があります。
これを今回は←↑からの2つの位置のみに絞ってみます。

●方法1:このマップのみ全歩移動にする
このマップへの移動イベントの中に
イベント制御→キャラ動作指定で主人公を全歩移動に設定
すると半歩の時の位置(オレンジ矢印)の可能性が消えます。
パーティが複数人の場合は仲間全員を全歩にし、
変数操作→Sys37から車間距離を詰める(-2)必要があります。
このマップを出る時に半歩に戻す&車間距離を戻すのを忘れずに

●方法2:主人公の向き取得でななめからのアプローチを無視
変数操作+の主人公向き取得で←↑の2方向からのみ
イベントが起こるように設定します。
並んで帰るための主人公の動作が少し変わりますので
それぞれの条件分岐の中で微妙に変える必要がありますが
2通りのみなのでそこまで大変ではありません。

●どうしても1方向のみに絞りたい場合
ちょっと不自然かもしれませんが、
・上記の主人公向き取得で強制的に1方向に絞る
・障害物を置いて1方向からしか話しかけられないようにする
45.png
・上記のように障害物と接触イベントを手前に置いて
接触イベントの中に会話や動作指定などを入れてしまう
などがあります。

文章が連続すると、突然選択肢が出てきた時に
誤ってエンターキー連打で押してしまうことがあります。
そんな時は選択肢の前にウェイトを入れると予防できますが、
ウェイトを入れると、事前のメッセージが消えてしまうため、
たとえばこのように説明文と一緒に表示したい時でも、
ScreenShot_2018_0328_22_18_49.png
ウェイトを入れるとこうなってしまうので↓
ScreenShot_2018_0328_22_19_08.png
あれ?左の道の先はどこだっけ?ってなりますよね。

なので、説明文も一緒に表示しつつ、
キー連打で誤って押さないための予防策としては
説明文メッセージの最後に『\!』を入れます。
\!…次のキー入力まで文章表示を停止させる
ま
これを入れておくと、説明文→キー押す→選択肢が出現(説明文そのまま)
になるので、誤って連打で押してしまうのを防げます。

戦闘画面の敵グラの位置をもう少し下にズラしたいな~
という場合の調整方法について、少し前に解説しましたが
ダメージ数字やメッセージが同じ場所にかぶって表示され
すごく見にくくなるという不具合を発見したので、
かぶらずに敵グラのみを少し下に表示するやり方を再掲します。

それと前回言い忘れてましたが、あまなつは
敵グラを原寸表示するコモンイベント(木犀様作)を常用していますので
原寸表示用のやり方の解説になります(デフォルトでは動作不確定です)

デフォルト表示の位置。
ScreenShot_2017_0803_02_27_19.png

調整後
ScreenShot_2017_0803_02_28_18.png
前回はHPバーも一緒に下にズレてきたため
見にくいことになってましたが、今回はHPバーの位置はそのままです。

<やり方>
変数「敵表示Y座標」を作り
コモン179のX[戦]敵キャラ_単体描画の138行目あたりに
条件分岐で敵表示Y座標=1の時、20ほど下にズラす設定を入れます
zrs.png
ピンク字のようにコピペして、+=20に変更。
(数字はお好みで変えてください。大きいほど下にいきます)

ボス戦の直前に変数操作で敵表示Y座標=1を入れ、
バトル終了直後に0に戻せば、
普段のザコ戦では通常通りの位置に表示、
ボスなどの大きい画像のみ、少し下に表示できます。

前回のやり方で、コモンをいじってしまった人は
申し訳ないですが、付け足した部分を消去してください。
コモン175のX[戦]敵キャラ_座標算出の一番下の
■条件分岐(変数): 【1】V27[敵表示Y座標] が 10と同じ
-◇分岐: 【1】 [ V27[敵表示Y座標] が 10と同じ ]の場合↓
|■可変DB書込:DB[基本システム用変数:38:0](ステータス欄表示先 座標Y:数値) = 150
|■
◇分岐終了◇

の部分を削除すればOKです。

敵のHPが0になったら違う敵に変身させたい時、
通常なら敵キャラ個体データの変身条件から設定できますが
ここのみの設定だと、もしオーバーキルしてしまった場合
変身イベントが起きる前にバトルが終了してしまいます。
なのでそんなことにならないように、
確実に変身してもらうための設定方法。

手順としては、状態異常と敵行動AIを使って
変身キャラのHPが0になった瞬間
無敵体質になる状態異常を一番最初にかけておき
変身イベントが起こるまで絶対死なないようにします。


<やり方>
変身前の敵キャラ個体データの変身条件をこんな感じで設定。
変身時イベントはお好みで
hensin.jpg

UDBの状態異常設定の空いてる箇所に
「不死身」を作成。中身は
hujimi.jpg

もう一つ空いてる箇所に「無敵」を作成。
muteki.jpg
<2ページ目>
muteki2.jpg

技能の空いてる箇所に「不死身」を作成。中身は
muteki5.jpg
使用時文章はお好みで変えてください。
1ターン使ってこっそり状態異常を自分自身にかけるので
バレないような感じの文にしてください。

そしてこのスキル「不死身」を敵行動AIで
一番最初に使ってもらうように設定します。
muteki6.jpg
これで変身前の敵キャラが、変身するまで死なない体質になりました。


<変身がうまくいかない場合>
敵キャラ個体データの変身条件に
変身時イベントを挟むようにします。
コモンの空いてる箇所に「変身イベント」を作り
muteki8.jpg
コモン29で強制上書きします。
上の画像だとBGMの変更、フラッシュ、敵キャラ追加など
色々演出入ってますが、演出いらない場合は一番下の1行のみでOKです。

戦闘画面で、HPバーがモロ顔グラにかぶってるので
ちょっと位置を調整したい!という時の調整方法
ScreenShot_2017_0607_10_20_47_20170607105830923.png

コモン178のX[戦]味方欄_単体描画の77行目くらいの
|■変数操作: CSelf60[顔グラ位置X] = -14 + 0
|■変数操作: CSelf61[顔グラ位置Y] = -1 + 0

で顔グラの位置調整が可能

81行目くらいの
|■変数操作: CSelf66[HP位置X] = -8 + 0
|■変数操作: CSelf67[HP位置Y] = 1 + 0

でHP表示とバーの位置調整が可能

他、その辺りをいじってみると、細かく調整できます。
戦闘画面を見ながら少し調整してみると…
ScreenShot_2017_0607_10_57_20.png
さっきよりマシになりました\(^o^)/

1枚目で目にかぶっているHPという文字の位置調整は、
ユーザデータベースの15用語基本設定の7・8
HP名称という所のHPの前に空白を入れることで調整できました。
上の画像だと、3マス空白を入れています。

※コモンの数字を変える場合は、もし表示がおかしくなった時に戻すために
元の数字をメモっておくか、コモンごとコピペして保険をとっておいた方が良いです。

ウディタでマップやイベントを作る際に注意すること集。

<その1/接触範囲>
接触イベントは範囲を広めにしておく
×                   ○
スルー
チップ画像の都合などで接触イベントをいくつかに分けて設置する時、
左図のようにピッタリサイズで接触イベントを設置すると
ちょうど真ん中を通られた時に接触判定が起こらず
何事もなくスルーされてしまうことがあります。
なので確実に接触イベントを起こすには右図のように
ちょっと重なるくらい広めに接触範囲を確保すべし。

このような場所に接触or決定キーイベントを置く場合
↓通行×だと反応してくれない場合があります。
注意3
この場合も右図のように接触範囲を広げて置けば安心。

<その2/接触イベント2>
銭湯とか水のダンジョンとかで、
入水の時にのみチャポンという音を鳴らしたいみたいな時、
普通に接触イベントでSEを鳴らすのみだと
接触判定が何度も起こり何回も水音が鳴ってしまったり
接触ポイントを縦移動された時に水から出てないのに水音が鳴ったり
など動作が不自然になってしまうことがあります。
湯

なのでそのような演出を作りたい場合は2ページに分け
<1ページ目/プレイヤー接触>
■変数操作+: このEvのセルフ変数2 = 主人公 の 向き(1~9)
■条件分岐(変数): 【1】このEvのセルフ変数2 が 8と同じ 【2】このEvのセルフ変数2 が 2と同じ
-◇分岐: 【1】 [ このEvのセルフ変数2 が 8と同じ ]の場合↓
|■イベント処理中断
|■
-◇分岐: 【2】 [ このEvのセルフ変数2 が 2と同じ ]の場合↓
|■イベント処理中断
|■
-◇上記以外
|■サウンド:SE ファイル[SE/mizu01.wav] 音 100% 周 100% 再生 / 遅延:0フレーム
|■変数操作: このEvのセルフ変数0 = 1 + 0
|■
◇分岐終了◇


<2ページ目/セルフ0=1の時、並列実行>
■ウェイト:20 フレーム
■変数操作: このEvのセルフ変数0 = 0 + 0


これでだいたい上記の不自然さは解消されるはず・・

<その3/マップチップ設定が変になるパターン>
空き地に後日屋台が建ちますという設定。
注意4

でもチップ処理の上書きで一個ずつ屋台チップを設定していくのは
面倒なので、レイヤー2にあらかじめ屋台を描いておき
レイヤー3に地面を書いて隠しておき、
後日レイヤー3を5×5マスで一気に消してはどうだろう
という試みをして撃沈したパターン。
ScreenShot_2015_0728_21_30_09.png
一見何の変哲もない地面に見えますが、屋台のあった場所にキャラが入ると
レイヤー2の屋根の設定がレイヤー3にも適用されてしまうようで
地面がキャラの上に表示されてしまいます。
上に表示されるものの上に下表示のものを置くと表示がおかしくなる模様。
このような場合は地道に一個ずつチップ設定するか、
もしくはあらかじめ屋台を描いておき、
並列のチップ処理でレイヤー2の屋台部分を消しておくか、
又はキャラが立ち入らない場所なら上記のような方法も可です。

<その4/遅延の悲劇>
例えばOPムービーをBGMにピッタリ合わせて作ってたとしても
自分のPCではスムーズに再生されていたのに
他の人のPCでは動作もっさりで、音とピクチャのタイミングがバラバラの
訳わからないムービーになってしまうという悲劇が起こることがあります。
これは実況動画を見ていて気付いたんですが、
実況動画では画面を録画しながらプレイするため
かなり遅延が起こってしまい、動画はもっさり、キャラの動きも
戦闘アニメも全てが通常よりスローリーになってしまうため
遅延を考慮して作る必要があります。

自分のゲームはOPやEDが長い長いと言われてたんですが
ピクチャを多用していたため2倍くらいの遅さになってしまっており
結果的に再生に倍の時間がかかって遅い・長いという印象を与えてしまったようです。
遅延の傾向は特に画像関係が重く、音の方はBGMはほとんど遅延なし、
SEはファイルサイズがデカいと一瞬固まったり遅延ありという感じ。

現在ウディタでは動画再生機能は搭載されていたないため
(パラパラアニメの原理で動画に見せかけるコモンもありますが
こちらも画像と音は別々なので遅延ズレの心配あり)
遅延ズレの心配のない動画を作るのは、ウディタでは難しいのが現状なようです。
多少音ズレしても問題の無い動画にするか、
ツクールの最近のVerだと動画再生機能もあるようですので
思い切って乗り換えるか、ウディタの今後の実装に期待して気長に待つか・・

余談ですが、ツクールのVXやAceなど最近のものだと多種多様な機能や
デフォルト素材が大量に付いてくるけど値段が1万越えで高いのが難点
という声も聞きますが、ウディタで1から素材屋回って自分で加工して
著作表記を一個ずつチェックして・・という作業を何度もやってる自分としては
それらの作業と心労が免除されるなら1万なんて全然高くないと思います。
著作表記忘れがあるかも・・規約見落としがあるかも・・
という心労は毎回絶えません。動画入りのゲームを作りたい、
システムに拘りは特にない、王道RPGを作りたいという場合は
ツクールを検討してみるのもいいかも。

キーボード入力の際、半角英数字は大丈夫だけど
かな入力にすると黒くつぶれて見えない
なんて時があったりします
ScreenShot_2015_0227_10_51_24.jpg

そんな時はシステムデータベース12文字色の
10のID名に[Sys]入力文字色
11に[Sys]変換中背景
12に[Sys]入力下線
13に[Sys]ルビ用文字色
と入れて文字色を指定すればその色で表示されるようになり
ちゃんと見えるようになります。

でももう一つ難点として漢字変換中に
選択中のカーソルが表示されないので(うちだけかも?)
どの漢字を選んでるかわからず入力しにくいので
キーボードからの漢字入力はちょっと敷居高いかも。
なのでプレイヤーに名前入力してもらう際には
名前入力コモンを使うのがおすすめです。

<使用コモン>
FC版ドラクエ風『名前入力』コモン by ゼロ☆様

このコモンでは漢字は使えませんが
変換中に見えなくなったりすることもないので
プレイヤーも安心して入力できます。

このコモンのデフォルト設定では、入力した文字は
システムデータベース4の文字列変数0番に入るようになっています。
名前入力が一人だけならそのまま\s[0]で文章表示できますが
2人分の名前を入力したい!という時は
一人目を入力してもらった直後に文字列操作で
■文字列操作:S2[] = S0[]
0番から2番(どこでも)に名前を移動させてから
次の名前を入力してもらうようにします。
S0[] = S2[]と逆すると消えてしまうので注意)
で、文章中に名前表示する時は
\s[X] (文字列変数X番)で表示できます。
2番なら\s[2]\s[002]でもOK。