【ウディタメモ】セーブデータを確認して、進行具合で開始ページを変更したりしたい

「セーブデータが存在したら“続きから”を1番最初の選択肢に、なければ“初めから”を1番最初の選択肢にする」というのがやりかたったんです。

しかし、公式ヘルプや公式が推奨する解説サイトではよくわかりませんでした。検索した中で唯一あったのが以下。

質問スレッド


ざっくりまとめると、セーブデータの1番から最後まで、回数付きループを用い、総当りでシステム変数24番(9000024)の読み込みを行います。そして、読み込んだ数字を適当な変数に代入すればいいらしいです。(デフォは0なので、それ以外の数字なら何らかのプレイ跡があると判断できる。)


まあ公式のサンプルゲームの以下をコピーして流用すればよかったような気もしますが。(以下、そのサンプルのマップ「タイトル」の「タイトル用イベント」自動実行イベントから抜粋。)
▼ もし(コモン48 X[共]基本システム自動初期化)でセーブが見つかっていたら
▼ 次の選択肢の初期値を1(コンティニュー)に

■条件分岐(変数): 【1】Sys25:現在セーブデータ番号(0~) が 1以上
-◇分岐: 【1】 [ Sys25:現在セーブデータ番号(0~) が 1以上 ]の場合↓
|■変数操作: Sys7:選択肢次回初期位置(0,1,2...) = 1 + 0
|■
◇分岐終了◇



この記事をご覧の方で拙作「ライオンのうたげ」をプレイされた方はおそらくいらっしゃらないと思いますが、「ライオンのうたげ」では上記のリンク先の方法を用いて、「初めてのプレイでは操作方法が左上に書きだされる」とか「ある程度進めてからの“初めから”のプレイではオープニングを飛ばす選択肢が出てくる」とかやってあります。言わずもがな、毎回起動時に全セーブデータの特定変数を読み取って、0以外だったら既プレイ判断して変数に代入しているだけです。

ただ、この作業はPlicyさん的にNGなみたいで、読み込む際に一瞬、いやかなり気になるぐらいに止まります。また、普通のソフト動作でもマップイベントでやったら一瞬止まるので、暗転の時じゃないとダメみたいです。

PLiCyでの挙動について(ウディタ製「セシア危うし」)






「セシア危うし」に関しては「ブラウザ上でもなるべくつっかえないように」というのは意識したのですが、いかがでしょうか…?

効果音のところでちょっとつっかえるのはしょうがないかなあと思っているのですが、右下に出てくるメッセージウィンドウのキャラ画像もちょっと遅れますね。だいたい10kb~13kbなんですが、それでも環境によっては(?)重いようです。

アールグレイが死ぬ場面のアニメーションは、私がプレイする範囲内ではスムースです。あの演出画像は68kbの画像を使っているのですが、1枚の画像を分割して表示しているせいか、思ったよりつっかえません。ファイルサイズはもちろんですが、内部でダウンロードする回数も大事みたいですね。



お気づきかどうかわかりませんが、画面右あたりから出てくる古い紙と、相談コマンドで表示させる“向かい合っている画像”は、こっそりとゲーム起動時に表示させております。透明で表示させているので見えていないだけで、実は常に画像が表示されていたりするのです。呼び出し時は画像を呼び出し表示させるのではなく、画像の透明度を0にするので、つっかえないはずです。

そういった仕様のため、ゲーム操作が重たくなるんじゃないかとけっこう心配だったのですが、私がやったかぎりは特に重さを感じませんでした。この分ならピクチャーを何枚か表示させながらゲーム操作するようにしても、よっぽどの枚数でなければ大丈夫じゃないかと思っております。

少しでも重たさを感じさせたくなければ、最初になるべく表示する仕様がやっぱりいいのかな…?なんとも言えませんが。

ウディタのダッシュコモンEv+メッセージスキップコモンEvに挑戦してみました

公式サイト見て作りました。

参考1:特定キーで主人公の移動速度を上げる機能(ダッシュ機能)

参考2:
26番:文章表示追加 先頭
27番:文章表示追加 最後尾

 「文章の表示」を行う際、その文章の先頭と最後尾に付ける文字列を指定します。
 たとえば、26番に「AAA」と入れて文章の表示で「こんにちは!」と指定すると、実際に表示される文章は「AAAこんにちは!」という具合になります。

 使い方の例としては、サブキーを押している間だけ26番に「\>」(文章を瞬間表示する)、27番に「\^」(自動で文章を閉じる)を代入する並列イベントを作っておくことで、サブキーで文章スキップできる機能が作れます。

システム変数/文字列一覧




これでうまくいくかなあ。不安だ。ダメだったらコモンEv自体消したりすると思います。

Image

■キー入力:このコモンEvセルフ変数0 / サブキー(12)
■条件分岐(変数): 【1】V1-0[ダッシュコモン] が 1以上 【2】V1-0[ダッシュコモン] が -1と同じ 【3】CSelf0 が 12と同じ
-◇分岐: 【1】 [ V1-0[ダッシュコモン] が 1以上 ]の場合↓
|■
-◇分岐: 【2】 [ V1-0[ダッシュコモン] が -1と同じ ]の場合↓
|■動作指定:主人公 / 移動速度を設定 => 3
|■文字列操作:SysS26[文章表示追加 先頭] = ""
|■文字列操作:SysS27[文章表示追加 最後尾] = ""
|■変数操作: V1-0[ダッシュコモン] = 1 + 0
|■
-◇分岐: 【3】 [ CSelf0 が 12と同じ ]の場合↓
|■動作指定:主人公 / 移動速度を設定 => 2
|■自動キー入力: 決定
|■文字列操作:SysS26[文章表示追加 先頭] = "\>"
|■文字列操作:SysS27[文章表示追加 最後尾] = "\^"
|■
-◇上記以外
|■動作指定:主人公 / 移動速度を設定 => 3
|■文字列操作:SysS26[文章表示追加 先頭] = ""
|■文字列操作:SysS27[文章表示追加 最後尾] = ""
|■
◇分岐終了◇


注意)
V1-0[ダッシュコモン] ←この部分は好きな変数・変数名で。

効果)
シフトキーを押してる間、移動速度が遅くなる逆ダッシュ機能です。普通にダッシュさせたい方はシフトキーを押してる間(CSelf XX が 12と同じ)場合に移動速度設定を速い設定にして下さい。

ついでにこのコモンにメッセージスキップを入れちゃいました。既読だろうが未読だろうが押している間は早送りします。実際にプレイしてみて誤爆してしまいやすいようならオプション制にしようか考え中。



以下、追記。

メッセージスキップに関しては今のところ上々なのですが、選択肢も自動決定するという不手際が置きてしまいました。選択肢前で無効用変数に1をぶち込んでおいてください。(自分へのメモ)

あと、メニュー画面でもシフトキー=エンターキーになってしまいました。まあここはそのままでもいい気がしますが、下記のようにメニューを開く度に無効命令を加えておきます。それから、メニュー閉じたら戻す設定も。(選択部分が追加命令です。)


WolfRPGEditor_dash_skip_20140903-1.pngWolfRPGEditor_dash_skip_20140903-2.png



追記、2。

結局シフトキーからは分離させて、Ctrlキー早送りにしました。ダッシュコモンの原理そのままです。



キー入力処理は「キーが押されるまで待つ」をオフで。左Ctrlキーがキーコード129、右Ctrlキーがキーコード257みたいです。

ただ、Ctrlキーを使うとPLiCyで使えないっぽい。まあそのあたりは妥協かなあ。

ウディタで一番最後に使用したアイテムの番号を取得したい

他にこんなことをしたがる方がいらっしゃるとは思えませんが、やってみました。あまりテストはしてませんけど、変数を調べて専用変数に書き込んでるだけなので多分大丈夫だと思います。

WolfRPGEditor_dash_skip_20140903-3.png
選択部分が追加命令。


ご覧のとおり、イベントを起動するアイテムの変数をとっているだけです。回復アイテムには対応しておりませんが、全体的にもっとうまくできる方法とかあると思いますので、適当にアレンジしてみて下さい。私が何に使うかはお楽しみに(?)。

ちなみに10000引いていますが、最初やってみたら「ユーザーデータベースのアイテム番号+10000」で出てきて、条件として使うにはちょいとめんどうくさかったからにすぎないです。

ウディタで備え付けの「ランダム変数」に頼らない自作ランダム変数を作りたい

元々言われていることですが、ウディタのランダム変数はロードで始めた時、常に同じ変数を出すという問題があります。(そういう仕様らしいです)

まあコモンイベント「並列実行(常時)」のところにこっそりと変数操作でランダム数を取得しておけば解決しちゃうんですが(一度ランダム変数を取得するとリセットするみたいです。多分)、どうもPLiCyさんは「乱数シードの利用ができません」とあり、絶対不要というわけでもなさそうなので、ここにやり方をメモ書きすることにしました。(というか、新作で改めてやろうとしたら、やり方忘れていました)




コモンイベントにこれだけです。終わり。使う時に呼び出しして、専用変数にぶっこむだけです。

現在秒の数値を変数2つに格納して、10の位を引き算で消しておしまい。見ての通り、10の位を割り算で1の位にして、その数に10をかけて、元の数の減算に使います。小学生でも考えられる幼稚なランダム計算イベントであります。

これで0~9のどれかというランダム数っぽいものができます。仕組みさえ知っていれば意図的に狙った数値を出すプレイヤーさんが出てくるかもしれませんが、まあ私の作るゲームでそんなことをする人はいないと思うのでセーフです。

「ランダム数で10個もいらないよ!」という人も多いかと思いますが、最終的に出た数値を割ったりして使って下さい。

ウディタのアイテム欄のアイテム個数を非表示にしたい

「一体そんなことする意味あるの?」という感じですが、やりたかったのでやりました。あんまり試験はしていないので不具合なく動くかどうかはわかりかねます。ごめんなさい。


コモンイベントの110番、「X[移]アイテム一覧算出」28行目…

| |■可変DB書込:DB[万能ウィンドウ一時DB:CSelf32[万能ウィンドウ登録位置]:残り個数/消費ポイント] = CSelf10[一時変数A]

を消します。終わり。



画像で赤線で囲ってる場所。



wolf_20141114-2.png
私は毎回条件分岐で隔離させています。失敗しても安心。