【ウディタ】いろんな戦績を記録してみる④

4回目の戦績記録よ。未読の方は以前の投稿から読んでね。

こんにちは、レビニアよ。今回は基本システムを改造して戦績を記録してみるわ。 とりあえず記録する戦績は↓よ(項目はまた後で増やすかもしれないわ)。 総戦闘回数 戦闘勝利...
前回に続いて、基本システムを改造した戦績の記録を解説するわ。前回投稿で説明した知識も必要になるから、未読の方はまずは前回から読んで頂戴。 そして今回追加する戦績だけど...
3回目の戦績記録よ。未読の方は前回、前々回から読んでね。 そして今回追加する戦歴項目は↓。 最大与ダメージ 最大被ダメージ 敵撃破数 ...

おそらく最後になる戦績関連の解説だけど、追加項目はこちら↓。

  • 総歩数
  • 総プレイ時間

今までのプレイで歩いた歩数とプレイ時間の累計ね。「戦績」とはちょっと違う気もするけどまぁ気にしないで。

戦績格納用の可変DBに項目を追加


今回も可変DBに項目を追加するわね。


ただし「総プレイ時間」は時分秒の単位まで格納するから「文字列」を指定して頂戴。
→項目10:項目名「総歩数」、設定方法「変数」、初期値「0」
→項目11:項目名「敵プレイ時間」、設定方法「文字列」

可変DBはこれでOKよ。

コモンイベントを改造&新規作成する

それじゃコモンイベントの方にとりかかりましょうか。まずは総歩数の記録だけど、


改造するのは「126-X[移]歩行時_並列キー処理」。移動中のキー入力を受け付けてメニューを開いたりしているコモンよ。

いつもならコモンをコピーするけど今回は×よ。なぜならこのコモンは起動条件が呼び出しではなく「並列実行」だからよ。

今までコピーしてそちらを改造していたのは「コモンを名前呼び出しで実行した時、同一名のコモンがあるとIDが大きい方が実行されるから」よ。だから元コモンをバックアップとして残すためにコピーしても大丈夫だったの。

でも自動実行や並列実行の場合は名前呼び出しで実行するわけではないから、同一名コモンが複数あると二重実行されてしまうわ。だからコピーはNGなのね。


とはいえバックアップはした方がいいから、代わりに下部のファイル出力欄にある「単体保存」をクリックしてコモンをファイル出力しておくといいわ。ファイルは自分が分かるところに保存しておいてね。

話を戻してコモンの改造に入りましょう。


100行目あたりに主人公の座標をチェックしている部分があるわね。前回座標と今回座標を読み取って差異がある(1歩でも動いている)場合に処理を行うようになっている部分よ。


ここに歩数をカウントするDB書込を追加すればOKよ。X座標とY座標の両方に入れてね。
→可変DB書込:戦績の総歩数+1を入力(X座標とY座標の部分両方に入力)

これで総歩数の記録はOKよ。あとは総プレイ時間の記録だけど、


実は総プレイ時間はシステム変数に記録されているの。ただ記録されているのは秒(とミリ秒)単位だから、これを戦績記録用に時分秒へ変換する必要があるわ。


時分秒への変換は新規にコモンイベントを作成して行いましょう。空きIDに以下の通りコモンを作成して頂戴。
→名前:総プレイ時間算出
→起動条件:呼び出しのみ


短いコモンになるけど一応セルフ変数に名前をつけておきましょう。↑の画像のとおりに設定してね。


まず「時」の算出だけど、これは総プレイ時間を3600で割ればいいわね。
→変数操作:セルフ変数10番に「システム変数29番 / 3600」を入力する


次に「分」の算出だけど、これは総プレイ時間を3600で割った余りを60で割ればOK
→変数操作:セルフ変数11番に「システム変数29番 % 3600」を入力する
→変数操作:セルフ変数12番に「セルフ変数11番 / 60」を入力する


「秒」は総プレイ時間を3600で割った余りを60で割った余りになるわね(ややこしい?)。つまり時の余りを60で割った余りを出せばいいわ。
→変数操作:セルフ変数13番に「セルフ変数11番 % 60」を入力する

これで総プレイ時間(時分秒)の算出はOK。


後は算出した時分秒を〇時間〇分〇秒の文字列に変換して、それを可変DBの戦績に格納するの。
→文字列操作:セルフ文字列5番に「\cself[10]時間\cself[12]分\cself[13]秒」を入力する
→可変DB書込:戦歴の総プレイ時間にセルフ文字列5番を書き込む

これでコモンの改造と新規作成は完了よ。

歩数とプレイ時間が記録されているか確認する


確認はいつもどおり文章表示で行うわ。ただし総プレイ時間の記録には算出用コモンを実行する必要があるから、文章表示の前にコモン呼び出しを入力しておいてね。


総プレイ時間は文字列で格納されているけど、特殊文字での呼び出し方は今までどおりで大丈夫よ。

それじゃ確認してみましょう。


スタート地点からサンプルマップBまで歩いたところ。ちゃんと歩数とプレイ時間が記録されているわね。


30秒ほど歩き回ってからもう一度確認。大丈夫そうね。

次はちゃんと「分」が計算されて記録されているか確認しましょう。


5分経過後に確認。問題なさそうね。

※バックグランド動作時のプレイ時間のズレについて
ちなみにゲーム基本設定を「非アクティブ時は停止」の状態でバックグラウンドで放置した場合、実際より少ないプレイ時間が表示されてしまうんだけど、これはおそらく実プレイ時間がシステム変数に反映されるのに多少時間がかかっているからね。ゲームを操作(アクティブに)してから数秒待てば正しい時間が反映されるから、実際のプレイで記録する分には特に問題はないと思うわ。

あとは「時」ね。1時間ほど放置してからまた確認するわ。


1秒前。設定を間違っていたらまた1時間放置して確認しなきゃになるのだけど……。


成功! 歩数もプレイ時間も問題なく記録できているわ。

というわけでプレイ時間と歩数記録の解説は以上よ。お疲れ様でした。

戦績の記録については多分これで終了かしら。以降は記録した戦績を表示したり活用する方法を解説していく予定よ。