モニスクレシピ_所持アイテムの消費表現
公開 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個いっぺんに増減することがあるので不安定かもしれません。
スゲーでっかいカエル
プロフィールページ
スゲーでっかいカエルです。javascriptでゲームを作ったりします。
最近の記事
モニスクレシピ_ストーリーの進行管理
ストーリーの進行管理 ストーリー進行用の変数を用意しておく # 単発のイベント(アイテムを持ってると道が通れるとか)…
2025/09/25 21:24
モニスクレシピ_定期的に復活する設置アイテム
一定時間で再取得可能になるアイテムのスクリプト 前記事の↓複数個取れるアイテムのスクリプトを流用します https://simb…
2025/09/24 08:40
モニスクレシピ_所持アイテムの消費表現
画像のように特定のアイテムを情報ボックスから消す方法 単純に[var:app_message_info アイテム名]とやってしまうと、どの…
2025/09/23 11:15
ツクセカ用モニスクレシピ
自分のマップで使ったモニスクのメモ。 もっと効率が良い方法もあると思いますので参考程度に。 間違いあったら教えてくだ…
2025/09/22 08:45
約5秒後に特定のマスのタイルを消すスクリプト(モニスク)
判定から5秒後に(0,0)(0,1)(0,2)(0,3)(0,4)のタイルを消す # 前面レイヤーを消すスクリプトになってるので任意で変更してくだ…
2025/09/10 12:39
hokug使ってみる_スプライトシートでフレームアニメーション
hokugで用意されているBlockクラスを使ってフレームアニメーションしようとすると、1コマにつき1画像ファイル使うので凝った動…
2025/08/06 22:18
hokug使ってみる_ツクセカのマップを利用する
ツクセカは2Dマップを作成して公開したりみんなで遊べたりするサービスです。 https://tsukuseka.com/ これで作ったマップ…
2025/08/04 22:26
hokug使ってみる_メモ3(Blockクラス)
hokugのBlockクラスについてメモ プロパティ # プロパティ:初期値 x:0 //x座標 y:0 //y座標 width:0 //幅 height:0 //…
2025/07/31 20:40
hokug使ってみる_メモ2(メソッド)
hokugのメソッドをメモ メソッドはオブジェクトが持ってる関数です。 今まで使ってたhokug.drawText() とかそういうやつ …
2025/07/29 23:25
hokug使ってみる_メモ(game.js)
前回までの記事まとめ 1)https://simblo.net/u/Nz7RmE/post/453297 2)https://simblo.net/u/Nz7RmE/post/457242 3)https://s…
2025/07/28 21:25
hokug(ホクジー)使ってみる_5
前回記事 https://simblo.net/u/Nz7RmE/post/463575 今回は画像を使ってみます。 ゲーム画面で画像を表示する # 画像の…
2025/07/27 18:05
hokug(ホクジー)使ってみる_4
前回記事 https://simblo.net/u/Nz7RmE/post/460515 今回はゲームっぽい要素を入れていきます。 今まで文字を動かしてい…
2025/07/26 13:25
hokug(ホクジー)使ってみる_3
前回記事 https://simblo.net/u/Nz7RmE/post/457242 前回の作ったファイルに続けて書き込んでいく感じになります。 今回は…
2025/07/24 14:51
hokug(ホクジー)使ってみる_2
前回記事 https://simblo.net/u/Nz7RmE/post/453297 前回の終わりで「次は条件分岐やループだ」と言ったがあれは嘘だ。 …
2025/07/22 18:31
hokug(ホクジー)使ってみる_1
hokug? # タイッツー開発でお馴染み「ほく」さんが開発したゲームエンジンです。 クソゲーが簡単に作れるらしいです。JavaScr…
2025/07/22 06:48
カエルマップエディタおまけの使いかた
↓基本的な使いかた https://simblo.net/u/Nz7RmE/post/363809 ↓少し高度な使いかた https://simblo.net/u/Nz7RmE/post/36904…
2025/05/22 14:39
カエルマップエディタのちょっと高度な使い方
基本的な使い方はこちら↓ https://simblo.net/u/Nz7RmE/post/363809 おまけのつかいかた↓ https://simblo.net/u/Nz7RmE/po…
2025/05/22 12:36
カエルマップエディタの簡単な使い方
なにそれ # https://sdkaeru.com/tilemap/ これです。タイルマップエディタってやつです。 ↓ちょっと高度な使いかた http…
2025/05/20 00:11
もっと見る
タグ
hokug(10)
javascript(10)
ゲーム制作(10)
MorningScript(4)
ツクセカ(4)
モニスク(4)
もっと見る