アイテム選択の処理で格納したIDを利用してアイテム名を表示する方法

アバター
ram04
記事: 37
登録日時: 2018年10月14日(日) 21:50

アイテム選択の処理で格納したIDを利用してアイテム名を表示する方法

投稿記事by ram04 » 2019年2月04日(月) 01:25

ツクマテの皆様、いつも大変お世話になっております。
日々様々な問題に突き当たっていることもあり、たくさん質問をしてしまい大変申し訳ございません。
今回もよろしければお力添え頂けると嬉しいです。


現在、「ダンジョン探索にあたりダンジョン内に持ち込めるアイテム数に上限を設ける処理」を作っております。
「アイテム選択の処理」と変数を利用して、プレイヤーが選択した任意のアイテムを減らしたあと、別の場所で改めて増やす、といった感じです。
具体的な手順としましては、
 ①指定したアイテムをリュックに入れる(アイテムを減らす処理)
 ②現在持っているアイテムリストを変数に格納し、手持ちを無くす
 ③ダンジョン探索開始時にリュックに入れたアイテムを増やす
…と言った感じでして、これらの処理は無事に作ることができました。

今回、ユーザビリティの向上という意味で「リュックの中に入れたアイテムを確認する」という処理を作りたいと考えています。
正攻法で行く場合、アイテムの個数分条件分岐を作り変数に文字列を代入…という物量作戦になるかと思います。
ですが、流石にこれだと大変なので、何か他に良いアイディアや方法などがないか考えております。
アイテム選択の処理で選んだIDを、上記以外の何らかの方法で文字列として表示する、もう少し手軽な方法がありましたら、教えて頂けるとありがたいです。
どうぞよろしくお願いいたします。

(あまり参考にはなりませんが、奮闘の形跡を貼っておきます。トリアコンタン様の「動的文字列ピクチャ生成プラグイン」を利用してることを申し添えておきます。ちなみに氏のプラグイン内に使用できる制御文字「\item[n] n 番のアイテム情報(アイコン+名称))」も試しましたが、こちらもダメでした…)
添付ファイル
sankou].PNG

----------------------------------------------------------------
ツクールMV一年生です。
現在自身の創作をモチーフにしたゲームを製作中です。
家庭用はSFCの2とPSの3が大好きです。
astral
記事: 106
登録日時: 2018年11月14日(水) 00:21
連絡を取る:

Re: アイテム選択の処理で格納したIDを利用してアイテム名を表示する方法

投稿記事by astral » 2019年2月04日(月) 02:15

こんばんは。

画像2つ目のスクリプトを消して、
プラグインコマンドを
D_TEXT \item[\V[351]]
のみで出来ないでしょうか。

スクリプトの==は比較なのと、プラグインコマンドに半角スペースがあるとコマンドの区切りになります。

それと文章の表示で使う場合は、次の形で実現出来ます。
◆変数の操作:#0045 アイテム名 = $dataItems[$gameVariables.value(351)].name
◆変数の操作:#0046 アイテムアイコン = $dataItems[$gameVariables.value(351)].iconIndex
◆文章:なし, ウィンドウ, 下
:  :\I[\V[46]]\V[45]を選択しました

追記
1.プラグインコマンドを画像のみでチェックしていなかったので修正しました。

2.アイテム選択の処理の後に、条件分岐を入れてください。
アイテム選択をせずキャンセルした場合、変数が0になるため、$dataItems[$gameVariables.value(351)].nameでプロパティが読み取れずスクリプトエラーとなります。
◆条件分岐:リュックに入れる物1 > 0

:分岐終了
最後に編集したユーザー astral on 2019年2月04日(月) 03:15 [ 編集 1 回目 ]
奏ねこま
記事: 702
登録日時: 2016年1月20日(水) 20:04

Re: アイテム選択の処理で格納したIDを利用してアイテム名を表示する方法

投稿記事by 奏ねこま » 2019年2月04日(月) 02:28

>$gameVariables.value(352)==$dataItems[$gameVariables(351)].name

これだと変数352番とアイテム名を比較しているだけですね。変数352番にアイテム名を入れたいなら
$gameVariables.setValue(352, $dataItems[$gameVariables(351)].name)

>D_TEXT \v[352] \item[351]

プラグインコマンドの使い方が間違っている点はプラグインのヘルプを読んでもらうとして…
\item[351]だとアイテム番号351番のアイテム名になるだけじゃないですか?
変数351番の中身をアイテム番号として参照したいなら\item[\v[351]]じゃないかと。
アバター
くろうど
記事: 259
登録日時: 2016年1月22日(金) 20:52
お住まい: 東京都
連絡を取る:

Re: アイテム選択の処理で格納したIDを利用してアイテム名を表示する方法

投稿記事by くろうど » 2019年2月05日(火) 15:41

こんにちは。

私の理解だと、以下の図のようなデータの流れになっていると思うのですが、この場合、メニュー画面の「アイテム」を表示すれば、『リュックの中に入れたアイテムを確認する』事が出来るのではないのでしょうか?

ツクマテ質問190205B.png
ツクマテ質問190205B.png (8.85 KiB) 閲覧数: 4666 回


図とは違う場合、リュックをどのように作っているかが分かれば、より簡単な方法が見つかるかもしれません。
▼だいたいTwitterにいます。たぶん。
https://twitter.com/kuroudo119
アバター
にいやん
記事: 218
登録日時: 2016年7月02日(土) 00:38
お住まい: 地獄4丁目西のゴミ置き場
連絡を取る:

Re: アイテム選択の処理で格納したIDを利用してアイテム名を表示する方法

投稿記事by にいやん » 2019年2月06日(水) 01:18

動的文字列ピクチャ生成プラグインを使う場合はリュックのスペース分だけの変数を用意すればいいだけですね。本来だと内部でアイテムのIDを参照する変数と、文字列として格納する変数を1つずつ用意する(リュックのスペースが3つなら6個の変数)必要がありますが、動的文字列ピクチャ生成プラグインはアイテムIDを格納した変数から名前を表示する機能があります。

リュックに入れる物1(変数351)にアイテム選択の処理で選ばれたアイテムIDが格納された場合、他の方が言っているように

コード: 全て選択

D_TEXT \item[\V[351]]

とすればいいだけです。なのでそもそも別の変数を作る必要は無いと思います。

ただ、メッセージで表示させたいということであればアイテムIDとアイテム名で変数を倍作る必要があると思います。

あと、== は比較演算子で代入は = です。役割は全くの別物ですね。
変数351に格納されたアイテムIDを変数352にアイテム名として代入したい場合は

コード: 全て選択

$gameVariables.setValue(352, $dataItems[$gameVariables.value(351)].name)

となります。ただやはり動的文字列ピクチャ生成プラグインを使っている以上、この行自体が必要ないと思います。

余談ですが、変数nに0が入っている状態で D_TEXT \item[\V[n]] を実行するとアイテムIDの0001が参照されるようです。なしという表示にはならなかったです。私のプラグインのバージョンが1.8.5と古いのでそのせいかもしれません。

“MV:質問” へ戻る