【解決済み】変数に入れた装備IDまたは装備オブジェクトが武器か防具か判定して捨てるスクリプト

アバター
ドラムカン
記事: 178
登録日時: 2019年11月04日(月) 23:02

【解決済み】変数に入れた装備IDまたは装備オブジェクトが武器か防具か判定して捨てるスクリプト

投稿記事by ドラムカン » 2021年1月18日(月) 23:20

いつもお世話になります。

アイテムIDを変数に入れて
スクリプトでそのアイテムを捨てる場合は、
以下のようにすれば簡単に捨てられるのですが

$gameParty.loseItem($dataItems[アイテムID], 個数, false);

武器と防具を捨てる場合、それぞれ記述を分けなければならないかと思います。
$gameParty.gainItem($dataWeapons[1], -1, true) //武器廃棄
$gameParty.gainItem($dataArmors[1], -1, true)  //防具廃棄

$gameParty.equipItems(); などで
変数に入れた装備品IDや装備品オブジェクトが
武器なのか防具なのか判定して捨てるには
どのようなスクリプトが必要なのか
教えていただけませんでしょうか?

どうかよろしくお願いいたします。
最後に編集したユーザー ドラムカン on 2021年1月19日(火) 18:30 [ 編集 1 回目 ]

ecf5DTTzl6h6lJj02
記事: 467
登録日時: 2018年12月23日(日) 13:55

Re: 変数に入れた装備IDまたは装備オブジェクトが武器か防具か判定して捨てるスクリプト

投稿記事by ecf5DTTzl6h6lJj02 » 2021年1月19日(火) 01:14

こんばんは。
ドラムカン さんが書きました:いつもお世話になります。

アイテムIDを変数に入れて
スクリプトでそのアイテムを捨てる場合は、
以下のようにすれば簡単に捨てられるのですが

$gameParty.loseItem($dataItems[アイテムID], 個数, false);

武器と防具を捨てる場合、それぞれ記述を分けなければならないかと思います。
$gameParty.gainItem($dataWeapons[1], -1, true) //武器廃棄
$gameParty.gainItem($dataArmors[1], -1, true)  //防具廃棄

$gameParty.equipItems(); などで
変数に入れた装備品IDや装備品オブジェクトが
武器なのか防具なのか判定して捨てるには
どのようなスクリプトが必要なのか
教えていただけませんでしょうか?

どうかよろしくお願いいたします。

$gameParty.loseItem は、 武器や、防具を指定しても動作するはずですので、
装備品のオブジェクトが取得できていれば特にスクリプトで何かしなければいけないということはないはずです。
たとえば、

コード: 全て選択

$gameParty.loseItem($gameParty.equipItems()[0], 1, false)

というスクリプトを実行した場合、パーティーの装備品(武器・防具)を配列として取得して、先頭に入っている装備品を装備中のものを除いて1つ捨てるという動作をします。
アバター
ドラムカン
記事: 178
登録日時: 2019年11月04日(月) 23:02

Re: 変数に入れた装備IDまたは装備オブジェクトが武器か防具か判定して捨てるスクリプト

投稿記事by ドラムカン » 2021年1月19日(火) 01:52

ecf5DTTzl6h6lJj02様

早速ご回答いただきまして、ありがとうございます。
心から感謝いたします。

コード: 全て選択

$gameParty.loseItem($gameParty.equipItems()[0], 1, false)


この場合、[0]が配列ID(所持順のオートナンバー)になるかと思いますが、
変数に格納している装備品オブジェクトが、何番目にあるのか判定する方法が分からずにおります。

オブジェクト変数には、配列IDが含まれないため
どのように紐づけるのかが不明となっております。

無知で申し訳ございません。
具体例をいただけますと非常に幸いです。
ecf5DTTzl6h6lJj02
記事: 467
登録日時: 2018年12月23日(日) 13:55

Re: 変数に入れた装備IDまたは装備オブジェクトが武器か防具か判定して捨てるスクリプト

投稿記事by ecf5DTTzl6h6lJj02 » 2021年1月19日(火) 03:02

ドラムカン さんが書きました:
早速ご回答いただきまして、ありがとうございます。
心から感謝いたします。

コード: 全て選択

$gameParty.loseItem($gameParty.equipItems()[0], 1, false)


この場合、[0]が配列ID(所持順のオートナンバー)になるかと思いますが、
変数に格納している装備品オブジェクトが、何番目にあるのか判定する方法が分からずにおります。

オブジェクト変数には、配列IDが含まれないため
どのように紐づけるのかが不明となっております。

無知で申し訳ございません。
具体例をいただけますと非常に幸いです。


どの変数に、どんなデータが入っているのかや、そのデータをどのように扱いたいのかわからず返答ができません。
現状、どういう処理を行っていて、どういう挙動をさせたいと考えているのか教えてください。
アバター
ドラムカン
記事: 178
登録日時: 2019年11月04日(月) 23:02

Re: 変数に入れた装備IDまたは装備オブジェクトが武器か防具か判定して捨てるスクリプト

投稿記事by ドラムカン » 2021年1月19日(火) 08:44

ecf5DTTzl6h6lJj02様

ご連絡いただき、ありがとうございます。
ご説明不足で大変申し訳ございません。

現在、ショップ機能を使わずに装備品(アクターが装備していないもの)を売るシステムを実装中でして
装備品一覧(武器防具混在)からプレイヤーが選択したものを
オブジェクトとして変数に入れるところまではできたのですが
その選択した装備品を売るには、
所持している個数と値段、そして装備品が何なのかを変数に入れるスクリプトが必要なため
ご質問させていただいた次第でございます。

どうかよろしくお願いいたします。
ecf5DTTzl6h6lJj02
記事: 467
登録日時: 2018年12月23日(日) 13:55

Re: 変数に入れた装備IDまたは装備オブジェクトが武器か防具か判定して捨てるスクリプト

投稿記事by ecf5DTTzl6h6lJj02 » 2021年1月19日(火) 13:23

こんにちは。
ドラムカン さんが書きました:現在、ショップ機能を使わずに装備品(アクターが装備していないもの)を売るシステムを実装中でして
装備品一覧(武器防具混在)からプレイヤーが選択したものを
オブジェクトとして変数に入れるところまではできたのですが
その選択した装備品を売るには、
所持している個数と値段、そして装備品が何なのかを変数に入れるスクリプトが必要なため
ご質問させていただいた次第でございます。

どうかよろしくお願いいたします。

トリアコンタン様の カスタムメニュー作成プラグイン
https://triacontane.blogspot.com/2020/03/blog-post.html
を用いて、変数の1番にウィンドウで選択した項目オブジェクト(今回の場合は武器・防具)を格納したという仮定で書きます。

アイテム名は

コード: 全て選択

$gameVariables.value(1).name

で取得できます。

価格は

コード: 全て選択

$gameVariables.value(1).price

で取得できます。

パーティーの所持数(アクターの装備中を含まない)は

コード: 全て選択

$gameParty.numItems($gameVariables.value(1))

で取得できます。

変数の操作のオペランドでスクリプトを選択し、それぞれ、取得したいもののコードをコピペしてください。

イベントコマンドのスクリプトで、一回で設定することもできます。
その場合のコードは

コード: 全て選択

//$gameVaribales.value(1) と何回も書きたくないので、ローカル変数に代入
let itemData = $gameVariables.value(1);

//アイテム名を変数ID2に代入
$gameVariables.setValue(2, itemData.name);

//価格を変数ID3に代入
$gameVariables.setValue(3, itemData.price);

//所持数を変数ID4に代入
$gameVariables.setValue(4, $gameParty.numItems(itemData));

になります。
アバター
ドラムカン
記事: 178
登録日時: 2019年11月04日(月) 23:02

Re: 変数に入れた装備IDまたは装備オブジェクトが武器か防具か判定して捨てるスクリプト

投稿記事by ドラムカン » 2021年1月19日(火) 14:46

ecf5DTTzl6h6lJj02様

ご連絡いただき、ありがとうございます。
アイテムの場合は、全く同じ方法(カスタムメニュープラグインとご提示のスクリプト)で
既に自作できておりまして、
問題は、装備品の場合です。

いただいたスクリプトですと、
変数1が装備品のオブジェクトでも
アイテム側の同IDのパラメーターを取得してしまいますので
目的の装備品を参照してくれません。

装備品の場合、どのようなスクリプトにすればよいか
ご教示いただけますでしょうか?
よろしくお願いいたします。
ecf5DTTzl6h6lJj02
記事: 467
登録日時: 2018年12月23日(日) 13:55

Re: 変数に入れた装備IDまたは装備オブジェクトが武器か防具か判定して捨てるスクリプト

投稿記事by ecf5DTTzl6h6lJj02 » 2021年1月19日(火) 16:24

ドラムカン さんが書きました:
ご連絡いただき、ありがとうございます。
アイテムの場合は、全く同じ方法(カスタムメニュープラグインとご提示のスクリプト)で
既に自作できておりまして、
問題は、装備品の場合です。

いただいたスクリプトですと、
変数1が装備品のオブジェクトでも
アイテム側の同IDのパラメーターを取得してしまいますので
目的の装備品を参照してくれません。

装備品の場合、どのようなスクリプトにすればよいか
ご教示いただけますでしょうか?
よろしくお願いいたします。


カスタムメニュープラグインで、パーティーの所持している装備品をリスト選択するメニューを作成し、
下図のイベントを作成して、テストプレイを実行しました。
002.jpg

結果です。
003.jpg

御覧の通り、正しく、アイテム名や価格、所持数が表示されています。

カスタムメニュープラグインの設定内容が正しくないのかもしれません。
カスタムメニュプラグインの設定内容や、イベントのスクリーンショットを挙げてください。


追記
もしかして
https://tm.lucky-duet.com/viewtopic.php?f=23&t=9808
の内容をみて、

コード: 全て選択

$gameParty.allItems()[$gameVariables.value(インデックス格納変数のID)];

などと書いて、アイテム情報を取得していますか?
これだと、装備品の情報しかリストアップしていないウィンドウとインデックスが一致しないため、
ただしく情報が取得できません。

最新のカスタムメニュープラグインならば、この方法ではなく、
ウィンドウ一覧の設定項目の 選択項目格納変数 を設定すれば、設定した番号の変数に、
武器・防具のデータが直接入力されるので、それを使用してください。
アバター
ドラムカン
記事: 178
登録日時: 2019年11月04日(月) 23:02

Re: 変数に入れた装備IDまたは装備オブジェクトが武器か防具か判定して捨てるスクリプト

投稿記事by ドラムカン » 2021年1月19日(火) 17:30

ecf5DTTzl6h6lJj02様

丁寧に画像付きで載せていただいたおかげで
アイテムに変化してしまう問題は解決することができました、本当にありがとうございます。

あとは本題となる、その装備を削除するスクリプトですが
$gameParty.loseItem($dataItems[装備品ID], 個数, false);
これでは削除されませんでした。

どのようなスクリプトで削除可能でしょうか?
どうかご教示のほど、よろしくお願いいたします。
ecf5DTTzl6h6lJj02
記事: 467
登録日時: 2018年12月23日(日) 13:55

Re: 変数に入れた装備IDまたは装備オブジェクトが武器か防具か判定して捨てるスクリプト

投稿記事by ecf5DTTzl6h6lJj02 » 2021年1月19日(火) 17:52

ドラムカン さんが書きました:あとは本題となる、その装備を削除するスクリプトですが
$gameParty.loseItem($dataItems[装備品ID], 個数, false);
これでは削除されませんでした。

$dataItems[装備品ID] だと、使用アイテムのオブジェクトになってしまうので、
装備品が削除されるはずがないですよね?

前回の、書き込みの内容から、変数に正しく装備品のオブジェクトが入っているのであれば、
その変数をloseItemで指定すれば、装備品を捨てられるはずです。
具体的には

コード: 全て選択

// n は装備品のオブジェクトが格納されている変数のIDに直してください
// x は捨てたい数に直してください
$gameParty.loseItem($gameVariables.value(n), x, false);

で削除できるはずです。

“MV:質問” へ戻る