【解決済み】カスタムメニュー作成プラグインで、アイテムIDを取得する方法についての質問

mikoru

ユーザー
概要

トリアコンタン様『カスタムメニュー作成』プラグインについての質問です。
どうぞご協力をお願いします。



やりたい事

1, アイテム一覧が正常に表示された状態で、
2, 一覧のアイテムを選択すると、
3, 選択したアイテムのIDが任意の変数に格納される。

bandicam 2021-05-04 23-58-34-774.jpg




問題点


ツクマテにあった同じ質問を参考に以下の通りに項目を埋めました。


bandicam 2021-05-04 23-25-13-898.jpg

一覧取得スクリプト内容
$gameParty.allItems()[$gameVariables.value(1)].id

bandicam 2021-05-04 23-32-49-629.jpg


この後、同作者様の『メニューサブコマンド』プラグインを使用して、メニュー画面から作成したシーンを呼び出しました。

bandicam 2021-05-04 23-38-48-207.jpg


すると、以下のようになってしまい、一覧が取得できませんでした。

bandicam 2021-05-04 23-39-47-307.jpg





試した事


『メニューサブコマンド』プラグインを抜いてみる → 変化なし

全てのプラグインを抜いてみる → 変化なし

一覧取得スクリプトのプリセットの$gameParty.allItems();での一覧取得は可能か → 可能





環境

RPGツクールMV ver.1.6.3
 

chronicle

ユーザー
元記事は、変数にインデックス変数のアイテムIDを取得するスクリプトです。
スクリプト例にある通り、一覧取得スクリプトが「$gameParty.allItems()」でのみ動作します。

アイテムIDを取得するスクリプトを一覧取得スクリプトに設定した場合、アイテムID(初期だとポーションの1番)しか表示されないのは正常です。

まずは元記事通り、
一覧取得スクリプトが「$gameParty.allItems()」、任意の変数の操作のスクリプトで「$gameParty.allItems()[$gameVariables.value(1)].id」を設定してください。
決定後イベントを呼び出す形にすればその変数にアイテムIDが代入されます。
 

munokura

ユーザー
ほぼ、そのままの解説まとめがあります。

IDを取得するのは、下記で良いんじゃないかと思います。
◆変数の操作:#0001 = $gameVariables.value(1).id

サンプルシーン
下記画像のようにテキストタブに貼ってください。
SS01.png
SS02.png
コード:
{"Id":"ItemSelect","UseHelp":"true","HelpRows":"0","InitialEvent":"{}","WindowList":"[\"{\\\"Id\\\":\\\"ItemList\\\",\\\"x\\\":\\\"0\\\",\\\"RelativeWindowIdX\\\":\\\"\\\",\\\"y\\\":\\\"0\\\",\\\"RelativeWindowIdY\\\":\\\"\\\",\\\"width\\\":\\\"0\\\",\\\"height\\\":\\\"0\\\",\\\"ColumnNumber\\\":\\\"1\\\",\\\"RowNumber\\\":\\\"0\\\",\\\"ItemHeight\\\":\\\"0\\\",\\\"CommandList\\\":\\\"\\\",\\\"DataScript\\\":\\\"\\\",\\\"ListWindowId\\\":\\\"\\\",\\\"ListScript\\\":\\\"$gameParty.allItems(); // 所持アイテム\\\",\\\"FilterScript\\\":\\\"\\\",\\\"MappingScript\\\":\\\"\\\",\\\"ItemDrawScript\\\":\\\"[]\\\",\\\"IsEnableScript\\\":\\\"\\\",\\\"CommonHelpText\\\":\\\"\\\",\\\"DecisionEvent\\\":\\\"{\\\\\\\"CommandId\\\\\\\":\\\\\\\"0\\\\\\\",\\\\\\\"FocusWindowId\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"FocusWindowIndex\\\\\\\":\\\\\\\"-1\\\\\\\",\\\\\\\"Script\\\\\\\":\\\\\\\"SceneManager.goto(Scene_Map); // マップ画面に遷移\\\\\\\",\\\\\\\"SwitchId\\\\\\\":\\\\\\\"\\\\\\\"}\\\",\\\"CancelEvent\\\":\\\"\\\",\\\"CursorEvent\\\":\\\"{}\\\",\\\"FontSize\\\":\\\"0\\\",\\\"WindowSkin\\\":\\\"\\\",\\\"VisibleSwitchId\\\":\\\"0\\\",\\\"ShowOpenAnimation\\\":\\\"true\\\",\\\"RefreshSwitchId\\\":\\\"0\\\",\\\"IndexVariableId\\\":\\\"0\\\",\\\"ItemVariableId\\\":\\\"1\\\",\\\"Cancelable\\\":\\\"true\\\",\\\"ActorChangeable\\\":\\\"false\\\",\\\"HiddenNoFocus\\\":\\\"false\\\",\\\"MaskingText\\\":\\\"\\\"}\"]","Panorama":""}

イベント
コード:
◆変数の操作:#0001 = 0
◆スクリプト:SceneManager.callCustomMenu('ItemSelect');
◆変数の操作:#0001 = $gameVariables.value(1).id
◆文章:なし, ウィンドウ, 下
:  :\v[1]
 
最後に編集:

mikoru

ユーザー
元記事は、変数にインデックス変数のアイテムIDを取得するスクリプトです。
スクリプト例にある通り、一覧取得スクリプトが「$gameParty.allItems()」でのみ動作します。

アイテムIDを取得するスクリプトを一覧取得スクリプトに設定した場合、アイテムID(初期だとポーションの1番)しか表示されないのは正常です。

まずは元記事通り、
一覧取得スクリプトが「$gameParty.allItems()」、任意の変数の操作のスクリプトで「$gameParty.allItems()[$gameVariables.value(1)].id」を設定してください。
決定後イベントを呼び出す形にすればその変数にアイテムIDが代入されます。
ほぼ、そのままの解説まとめがあります。

IDを取得するのは、下記で良いんじゃないかと思います。
◆変数の操作:#0001 = $gameVariables.value(1).id

サンプルシーン
下記画像のようにテキストタブに貼ってください。
View attachment 10847
View attachment 10848
コード:
{"Id":"ItemSelect","UseHelp":"true","HelpRows":"0","InitialEvent":"{}","WindowList":"[\"{\\\"Id\\\":\\\"ItemList\\\",\\\"x\\\":\\\"0\\\",\\\"RelativeWindowIdX\\\":\\\"\\\",\\\"y\\\":\\\"0\\\",\\\"RelativeWindowIdY\\\":\\\"\\\",\\\"width\\\":\\\"0\\\",\\\"height\\\":\\\"0\\\",\\\"ColumnNumber\\\":\\\"1\\\",\\\"RowNumber\\\":\\\"0\\\",\\\"ItemHeight\\\":\\\"0\\\",\\\"CommandList\\\":\\\"\\\",\\\"DataScript\\\":\\\"\\\",\\\"ListWindowId\\\":\\\"\\\",\\\"ListScript\\\":\\\"$gameParty.allItems(); // 所持アイテム\\\",\\\"FilterScript\\\":\\\"\\\",\\\"MappingScript\\\":\\\"\\\",\\\"ItemDrawScript\\\":\\\"[]\\\",\\\"IsEnableScript\\\":\\\"\\\",\\\"CommonHelpText\\\":\\\"\\\",\\\"DecisionEvent\\\":\\\"{\\\\\\\"CommandId\\\\\\\":\\\\\\\"0\\\\\\\",\\\\\\\"FocusWindowId\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"FocusWindowIndex\\\\\\\":\\\\\\\"-1\\\\\\\",\\\\\\\"Script\\\\\\\":\\\\\\\"SceneManager.goto(Scene_Map); // マップ画面に遷移\\\\\\\",\\\\\\\"SwitchId\\\\\\\":\\\\\\\"\\\\\\\"}\\\",\\\"CancelEvent\\\":\\\"\\\",\\\"CursorEvent\\\":\\\"{}\\\",\\\"FontSize\\\":\\\"0\\\",\\\"WindowSkin\\\":\\\"\\\",\\\"VisibleSwitchId\\\":\\\"0\\\",\\\"ShowOpenAnimation\\\":\\\"true\\\",\\\"RefreshSwitchId\\\":\\\"0\\\",\\\"IndexVariableId\\\":\\\"0\\\",\\\"ItemVariableId\\\":\\\"1\\\",\\\"Cancelable\\\":\\\"true\\\",\\\"ActorChangeable\\\":\\\"false\\\",\\\"HiddenNoFocus\\\":\\\"false\\\",\\\"MaskingText\\\":\\\"\\\"}\"]","Panorama":""}

イベント
コード:
◆変数の操作:#0001 = 0
◆スクリプト:SceneManager.callCustomMenu('ItemSelect');
◆変数の操作:#0001 = $gameVariables.value(1).id
◆文章:なし, ウィンドウ, 下
:  :\v[1]

御二方とも、分かり易いご指導をありがとうございます。

なるほど、変数操作の方に記入すべきスクリプトだったのですね。
恥ずかしながら、一覧取得で記入しなければならないと勘違いしておりました:kaoswt2:

ムノクラ様の記事も、制作に当たって何度も読ませて頂いている筈なのですが、記事の情報を掛け合わせた判断にまで至れず不甲斐ないばかりです。


ご協力のおかげで、思った通りのシーンの追加が叶いました。
このスレッドを解決済みとしまして、挨拶に代えさせて頂きます。
 
トップ