ヘビトンボ 2020/11/13 20:18

【ウディタ】アイテム生成コモンにnew表示を付ける!

ヘビトンボです('ω')

今回もまたウディタ関連の記事になります。
ツイッターの方でいただきました、アイテム生成コモンのnew表記について解説したいと思います~(VIR-LANDさんありがとうございます✨)

詳しくご説明いたしますと、ウディタ公式コモン集にて配布されている【アイテム生成コモンイベント】にて、新しく追加されたレシピの隣に「new!」の表記を行う、というものになります。


(拙作、ミカイルの大地より)

早速解説していきますね(-ω-)

可変データベースにnewであるか判定する変数を用意する

あ、ウディタ公式サイトより【アイテム生成コモンイベント】の導入方法に関しては割愛させていただきます💦
メインコモン及び追加ファイル導入を済ませた前提で解説していきますね。

それではまず、導入を済ませた可変データベースの【CDBアイテム作成】にそのレシピが新しく追加されたものであるか判断する変数「対象がnew?」を作っていきます!
【タイプの内容設定】から空いている項目、またはページを追加して変数を作りましょう!

「数値1」が「newと表示させる状態」、「数値0」が「既に表示済みの状態」という風に変数の内容を指定します。
この際、【データ内容の特殊設定】から【選択肢を手動作成】より、下記画像のように内部状態に説明を付けておくと、後で設定する際にわかりやすいですね( *´艸`)


レシピが表示されたタイミングで、変数をnew表示する状態に変更

今回はコモンイベント【レシピ操作[アイテム作成]】で「レシピを表示する(内部数値33)」の選択肢によってレシピが表示された場合にnew表示するようにしようと思います~
早速コモンイベント【レシピ操作[アイテム作成]】を見ていきましょう!

ここで使用されているコモンセルフ変数を簡単に解説いたしますと、

  • Cself 00:「レシピID」
    ・どのレシピの操作するかのID情報。

  • Cself 01:「どうする?」
    ・そのレシピに対してどの操作するかの情報。

  • Cself 10:「0か1」
    ・各操作に対して内部的な値を0か1かにする情報。

になっております。
では実際のイベントの内容ですが、ビットを満たすというちょっと難しいテクニックを使用しているので、ここでの詳しい解説は割愛いたします💦
(その辺りの解説も知りたい!!という方がおられましたら、コメントなどで教えていただけると嬉しいです~)
よって簡単に結果から説明いたしますと、条件分岐上から、

  • 「2のビットを満たす」
    ・名前秘匿に関する処理

  • 「4のビットを満たす」
    ・生成物秘匿に関する処理

  • 「8のビットを満たす」
    ・材料秘匿に関する処理

  • 「16のビットを満たす」
    ・触媒秘匿に関する処理

  • 「32のビットを満たす」
    ・レシピ表示に関する処理

  • 「64のビットを満たす」
    ・レシピ封印中に関する処理

となっており、それぞれCself10に0か1かの状態が入るようになっています。
Cself10の0か1かっていうのは、例えばレシピが表示されている状態が1、表示されていない状態が0、といった具合ですね。

今回行いたいことを整理すると、「レシピ表示が、レシピを表示するを選択された場合、newの表示状態を表示、すなわち1にする」 ということです。
よって上記分岐から「32のビットを満たす」内部に処理を書いていけばよいですね!
Cself10の「0か1」も、表示するなら1、しないなら0となるので利用できそうです。
【DB操作】より、
【DBタイプ番号】の【名前】から【CDBアイテム作成】を選択、
【データ番号】の【変数】から【CSelf0:レシピID】を選択、
【項目番号】の【名前】から先ほど追加した項目【対象がnew?】を選択します。
右辺には【=】の【変数/文字列】から【CSelf10:0か1】を選択し、【DBへ代入】を設定しましょう!



これでコモンイベント【レシピ操作[アイテム作成]】で「レシピを表示する(内部数値33)」の選択肢が選ばれた際、表示するように設定したレシピのnew状態をnew表示するように設定できました!

レシピ名の隣にnew表示を行う処理を作る

では表示するレシピ名の隣にnew表示を行う処理を作ります!
ここで行いたいことは、「表示したいレシピがnew表示する状態であれば、レシピ名の隣にnew!を表示する」ということです。
レシピ名を読み込むコモンイベント【アイテム作成一覧算出】に処理を追加します!
【アイテム作成一覧算出】コモンの行数92行目の分岐に文字列にレシピ名を読み込む処理がありますね!
ではその下に、「表示したいレシピがnew表示する状態であれば、」レシピ名を読み込んだ文字列に「new!」を加算する処理を作ります!
(102行目と103行目の間辺りに)

まずはレシピのnew状態を格納するコモンセルフ変数、10番(場所はどこでも良いですが今回は10番に!)に新しく変数「new表記する?」を作ります。

【DB操作】より、
【DBタイプ番号】の【名前】から【CDBアイテム作成】を選択、
【データ番号】の【変数】から【CSelf21:レシピID】を選択、
【項目番号】の【名前】から【対象がnew?】を選択します。
右辺には【=】の【変数/文字列】から先ほど作った【CSelf10:new表記する?】を選択し、【変数へ代入】を設定しましょう!

次に【条件(変数)】より、
【CSelf10:new表記する?が1と同じ】の条件を設定します。

先ほど設定した条件の内部に、
【文字列操作】より、
【CSelf5:<表示>レシピ名前】に【+=】、手動入力の【 new!】を設定します。
このとき、「new!」のカラーを変えたい場合は特殊文字「\c[XX]」を使ってカラーを変えましょう。
今回はシステムデータベース12の4番に黄色を追加してみたのでこれを使います。
お好きな色に設定してみてください(*'▽')b


こんな感じです✨

イベント終了時にnew表示をなくす処理を作る

一度newが表示されたあと、再度イベントを実行すると既読済みになってnewが表示されないようにするイベントを作ります!
イベントが終了したタイミングで、可変データベースの全てのレシピの「対象がnew?」の状態を一括で「new表示しない」ようにする処理を書きます~
イベントが終了するタイミングなので、コモンイベント【アイテム作成実行】の一番最後にしましょう!
(行数でいうと134行目ですネ)

まずは(例によって場所はどこでも良いですが)、コモンセルフ変数10番にレシピの総数を格納する変数「レシピ総数」を、次のコモンセルフ変数11番には、現在参照しているレシピIDを格納する変数「レシピID参照」を作ります!

今回はループ処理を使って、「レシピ総数」回のループを行いながら、「レシピID参照」を使って上から順番にデータを書き込んでいく、という作り方をしようと思います!

【DB操作】より、可変DBの名前から【CDBアイテム作成】を選択し、【データ数取得[数値]】にチェックを入れ、右辺に【=CSelf:10 レシピ総数】を設定して変数に代入します。
これによりCDBアイテム作成のデータ数、すなわちレシピの総数が取得できました。

ループ処理を入れる前にコモンセルフ変数11番「レシピID参照」を初期化しておきましょう!
コモンセルフ変数11番に0を代入しておきましょうね( *´艸`)

そしたら【イベント制御】より、【回数付きループ】、回数に変数呼び出し値「1600010」と入力してコモンセルフ変数10番を指定しましょう!

ループ内の処理を作ります。
【DB操作】より、可変DBの名前から【CDBアイテム作成】、【CSelf11:レシピID参照】、名前から【対象がnew?】を設定し、右辺には【=0】でDBへ代入を選択します。


最後に次のレシピを参照できるよう、「CSelf11:レシピID参照」に1を加算すれば完了です✨

これで、レシピ総数分のループ処理を行い、0番~XX番(CDBアイテム作成の最終番号)までのnew状態を一括で表示しないようにする処理ができあがりました!

動作の確認

アイテム作成コモンを呼び出すマップイベントと、選択肢によってレシピを表示するマップイベントを作ったので動作を確認します!

いい感じですね✨✨



いかがだったでしょうか!
また気が向いたら書きたいと思います(^^)♡

Ci-enのコメント欄やツイッターでも、「こういう記事が見たい!」というものがあればお声かけいただければまた書くかも…??チラッ笑

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

月別アーカイブ

記事を検索