モニスクレシピ_所持アイテムの消費表現
公開 2025/09/23 11:15
最終更新
2025/09/24 21:46

画像のように特定のアイテムを情報ボックスから消す方法
単純に[var:app_message_info アイテム名]とやってしまうと、どのアイテムを持っているか判定できないので判定用の変数や表示用の変数を設定していきます。
1種類につき1個所持可能(手持ちがなくなると再取得可)なスクリプトです。
1回のみ限定と1種類で複数個所持の方法も最後に載せます。
変数の初期設定 #
画面表示用の変数、表示用アイテム名の変数、アイテム所持判定の変数をロード時のスクリプトで初期設定しておきます。//ロード時のスクリプト
//アイテムの表示用
[var:disp_item]
//アイテム名の設定
[var:item_1_name アイテムA]
[var:item_2_name アイテムB]
[var:item_3_name アイテムC]
//アイテム所持フラグ(所持数)の設定
[var:item_1_count 0]
[var:item_2_count 0]
[var:item_3_count 0]
取得地点の設定 #
次にモブかアクションポイント(マップの各マス)にアイテムを取得するスクリプトを設定します。下はitem_1を取得するスクリプトです。//アクションポイント(アイテム取得場所)のスクリプト
//item_1が未所持だったらitem_1を取得
[if var:item_1_count = 0]
[var:item_1_count 1]
//toast表示
[var:msg var:item_1_name]
[concat var:msg を手に入れた!]
[var:app_toast_short var:msg]
[endif]
//ここから表示用の処理
//表示用変数をリセット
[reset var:disp_item]
//item_1を持っていたら(item_1_countが0より上だったら)
[if var:item_1_count > 0]
//表示用変数にitem_1の名前を結合
[concat var:disp_item var:item_1_name]
//改行を結合
[concat var:disp_item [br]]
[endif]
//以下item_2,item_3についても同様に判定
[if var:item_2_count > 0]
[concat var:disp_item var:item_2_name]
[concat var:disp_item [br]]
[endif]
[if var:item_3_count > 0]
[concat var:disp_item var:item_3_name]
[concat var:disp_item [br]]
[endif]
//アイテムの表示
[var:app_message_info var:disp_item]
アイテムに変化がある度に表示をリセットして持っているアイテムを再表示する感じ別のポイントにitem_2、item_3を取得するスクリプトも設定します。
item_1のスクリプトをコピーして取得部分の変数名item_1をitem_2やitem_3に書き換え(表示部分は変更無し)
使用地点の設定 #
アイテムを使用するマスの設定です。item_2を使用するコードを書きますが好きに設定してみてください。ここでも表示部分の処理は同じです。//アクションポイント(アイテム使用場所)
//item_2を持っていたら(item_2_countが0より上なら)
[if var:item_2_count > 0]
//★★★★★★★★★★
//アイテム使用結果のスクリプトをここに入れる(マップの通行止めを解除等)
//★★★★★★★★★★
//item_2_countを0に
[var:item_2_count 0]
//メッセージ設定
[var:msg var:item_2_name]
[concat var:msg を使った!]
[var:app_toast_short var:msg]
[endif]
//ここから表示用の処理
//表示用変数をリセット
[reset var:disp_item]
//item_1を持っていたら
[if var:item_1_count > 0]
//表示用変数にitem_1の名前を結合
[concat var:disp_item var:item_1_name]
//改行を結合
[concat var:disp_item [br]]
[endif]
//以下item_2,item_3についても同様に判定
[if var:item_2_count > 0]
[concat var:disp_item var:item_2_name]
[concat var:disp_item [br]]
[endif]
[if var:item_3_count > 0]
[concat var:disp_item var:item_3_name]
[concat var:disp_item [br]]
[endif]
//アイテムの表示
[var:app_message_info var:disp_item]
表示処理を定期実行にまとめる #
アイテム数や取得地点が数個の場合はこのままでもそんなに問題ありませんが、数が増えてくると修正が非常に面倒になってきます。例えばitem_4を後から追加したくなった場合、全ての箇所で表示用スクリプトに修正が必要になります。
共通の表示用処理は定期実行スクリプトにまとめておくのがオススメ
(取得から表示までのタイムラグが出る等デメリットもありますが)
実行間隔は1秒に設定。
各アクションポイントではアイテムの取得処理のみにし表示処理を定期スクリプトにコピー
//アクションポイントのスクリプト
//item_1が未所持だったらitem_1を取得
[if var:item_1_count = 0]
[var:item_1_count 1]
//toast表示
[var:msg var:item_1_name]
[concat var:msg を手に入れた!]
[var:app_toast_short var:msg]
[endif]
//定期スクリプト
//表示用変数をリセット
[reset var:disp_item]
//item_1を持っていたら
[if var:item_1_count > 0]
//表示用変数にitem_1の名前を結合
[concat var:disp_item var:item_1_name]
//改行を結合
[concat var:disp_item [br]]
[endif]
//以下item_2,item_3についても同様に判定
[if var:item_2_count > 0]
[concat var:disp_item var:item_2_name]
[concat var:disp_item [br]]
[endif]
[if var:item_3_count > 0]
[concat var:disp_item var:item_3_name]
[concat var:disp_item [br]]
[endif]
//情報ボックスにアイテム表示
[var:app_message_info var:disp_item]
これで表示の修正時は定期実行スクリプト1箇所だけで済みます。限定アイテムにする場合 #
ここまでのスクリプトだとアイテムを使って未所持になると取得ポイントで再び手に入ります。再取得不可にするには所持数を0にしている[var:item_2_count 0]の部分を[var:item_2_count -1]に変更します。
[if var:item_2_count > 0]
//★★★★★★★★★★
//アイテム使用結果のスクリプトをここに入れる(マップの通行止めを解除等)
//★★★★★★★★★★
//item_2_countを-1に
//⬛︎⬛︎⬛︎⬛︎↓ここを0から-1に変更⬛︎⬛︎⬛︎⬛︎
[var:item_2_count -1]
//メッセージ設定
[var:msg var:item_2_name]
[concat var:msg を使った!]
[var:app_toast_short var:msg]
[endif]
アイテム取得できる判定は[var:item_2_count]が0使用と表示の判定では0より上なら使用(表示)にしているで、これで再取得不可にできます。
使用後も表示を消さないようにする場合は表示判定を[if var:item_2_count != 0](0以外)に
1種類を複数持てるようにする #
同じアイテムを複数取れるようにするには※1,未所持の判定を無くす
※2,所持数の変数[var:item_1_count]で直接1を設定している部分を加算にする
※3,表示用スクリプトに所持数も設定
//アクションポイントのスクリプト
//item_1が未所持だったらitem_1を取得
//※1★★[if var:item_1_count = 0]★★ここを無効化
//※2★★[var:item_1_count 1]★★↓のように変更
[plus var:item_1_count 1]
//toast表示
[var:msg var:item_1_name]
[concat var:msg を手に入れた!]
[var:app_toast_short var:msg]
//※1★★[endif]★★ここを無効化
item_1だけを抜き出していますが他のアイテムも複数所持可にする場合は同様にしてください。
//定期実行スクリプト
//表示用変数をリセット
[reset var:disp_item]
//item_1を持っていたら
[if var:item_1_count > 0]
//表示用変数にitem_1の名前を結合
[concat var:disp_item var:item_1_name]
//※3★★↓↓ここから
[concat var:disp_item ×]
[concat var:disp_item var:item_1_count]
//※3★★↑↑ここまで
//改行を結合
[concat var:disp_item [br]]
[endif]
複数所持のアイテムを使用する場合は使用ポイントで所持数を減算([minus var:item_1_count 1])します実際には取得や使用のポイントでインターバルの設定などをしないと2個いっぺんに増減することがあるので不安定かもしれません。
