所持品のリストの最新物の名前を取得したい

MEIKOI
記事: 73
登録日時: 2018年9月22日(土) 20:13

所持品のリストの最新物の名前を取得したい

投稿記事by MEIKOI » 2019年11月10日(日) 23:45

こんにちは。

武器・防具・アイテム・大事な物など

入手した所持品の
「リストの一番最初にある物の名前(最新の入手品)」 を

スクリプトで取得する方法はありますか?

$gameParty._weaponsというものがあるみたいですが

これを使って取得できますか?

変数に代入して、文章で使いたいです。

よろしくお願いします。

MEIKOI
記事: 73
登録日時: 2018年9月22日(土) 20:13

Re: 所持品のリストの最新物の名前を取得したい

投稿記事by MEIKOI » 2019年11月11日(月) 21:01

色々ググってる内に

配列の要素数は、配列変数名. length で求めることができると言う事がわかったので

所持している武器の配列の最後に「最後に入手した武器の情報が格納されている」と思い

$gameParty._weapons($gameParty._weapons.length).nameと書いて

最後に入手した武器名を取得しようとしましたが

結果は「0」と表示されました。

根本的に間違えてますでしょうか?

アドバイス頂けると幸いですm(_ _)m
astral
記事: 95
登録日時: 2018年11月14日(水) 00:21

Re: 所持品のリストの最新物の名前を取得したい

投稿記事by astral » 2019年11月11日(月) 21:16

こんばんは。
要素数は、何種類の武器を所持しているかどうかしかわかりません。
記録されているのは、IDと所持数のみです。
アイテム入手と一覧はID順なので、入手順はなっていないと思うのですが、何かプラグインを導入しているのでしょうか。

最新の入手アイテムを記録するプラグインの作成は可能です。
MEIKOI
記事: 73
登録日時: 2018年9月22日(土) 20:13

Re: 所持品のリストの最新物の名前を取得したい

投稿記事by MEIKOI » 2019年11月11日(月) 21:39

astral様

ありがとうございます。

プラグインは、
YEP_ITEMCOREと
DreamX/Random Equipment Prefixes & Affixes
を入れてまして

入手したアイテムは、すべて固有アイテムとしてidが生成され所持している状況です。

Dream X/Random Equipment Prefixes & Affixesで生成した固有アイテムの名前は、Dreamxのjsの中で
newItem.nameと言う変数?で扱われているようなので

jsの中に、$gameVariables._data[n] = newItem.name;

と付け加えてゲーム変数に代入したのですが、

アイテムネームの取得が「できたりできなかったり」するので

Dream Xのjsを解読するのは、ひとまず諦めて

取得したアイテムが格納されている?配列変数から名前を得ようとしていました。

なぜ、取得できたりできなかったりするのかが、サッパリわからなくて

処理の重複などの問題か、処理が間に合っていないのかなと思ったり・・・混迷中です。

素人に毛が生えかかった程度の知識しかないもので・・・わかりにくくて申し訳ないです。

明確な回答にならずとも

何かヒントになる事でもわかれば、なんでも教えてください。

よろしくお願いしますm(_ _)m
astral
記事: 95
登録日時: 2018年11月14日(水) 00:21

Re: 所持品のリストの最新物の名前を取得したい

投稿記事by astral » 2019年11月11日(月) 22:04

ありがとうございます。
どちらも複雑な動作をするので、調べてみます。
MEIKOI
記事: 73
登録日時: 2018年9月22日(土) 20:13

Re: 所持品のリストの最新物の名前を取得したい

投稿記事by MEIKOI » 2019年11月11日(月) 22:42

ありがとうございます。

お時間の許すときでかまいませんので、何かわかりましたらよろしくお願いします。

ちなみに、補足です。

DreamX/Random Equipment Prefixes & Affixesの

1234 newItem.name = newItem.name.trim();

の下に

1235  $gameVariables._data[n] = newItem.name;
を付け加えて、アイテムの名前を取得したのですが

マップ上で戦闘するアクションゲームのため

敵が10や20も存在する事があり

アイテムの取得が連続するようなゲームです。

アイテムの取得は、敵を倒したらコモンイベントを呼び出し
$gameParty.gainItemで行っており

文章の表示で
\V[n]で「〇〇を手に入れた」のように表示しているのですが
(むしろ、この表示を無くせば、何も悩む事はないのですが^^;;;)

手に入れたアイテムの名前が、更新されていない?のか
実際に今回手に入れたアイテム名になっておらず
前回の入手品の名前になっていたり
ちゃんと今回の入手品になっていたりします。

もしかしたら、プラグイン側の問題ではないかもしれないのですが・・・。

少なくとも正常に名前を取得できている時があるので

1235  $gameVariables._data[n] = newItem.name;

の記述は、間違ってはいないと自分では思っているのですが・・・。

すみません、わかりにくいと思いますが

ヒントが頂ければ、幸いです。

最新の入手アイテム名が取得できれば、プラグインをどうこうしなくても

解決できるのかとも思いますが・・・。

ありがとうございますm(_ _)m
astral
記事: 95
登録日時: 2018年11月14日(水) 00:21

Re: 所持品のリストの最新物の名前を取得したい

投稿記事by astral » 2019年11月12日(火) 09:08

実際にアイテム生成・入手を行っているのがYEP_ItemCoreなので、アイテムの場合と新規IDとなる武器・防具の場合で処理が必要ですね。
Random prefixes/suffixesで出来るのは、そのプラグインの機能を使用した場合に限られてきちゃいます。

確認ですが、最新1件のみの名前を変数に代入出来ればいいのでしょうか。
アイテム・武器・防具それぞれの最新物や、複数入手した場合、連続して撃破した場合、などは考慮しますか?
文章の表示を使うのも確定でしょうか。
アクションで連続して撃破するようだと、文章のウィンドウを表示される形だとバグも埋め込みやすいので。

仕様がわかれば、それに合わせてプラグイン化したいと思います。

追記:
ショップで購入した場合も同じ最新の入手アイテムとなります。
MEIKOI
記事: 73
登録日時: 2018年9月22日(土) 20:13

Re: 所持品のリストの最新物の名前を取得したい

投稿記事by MEIKOI » 2019年11月12日(火) 11:23

ありがとうございます!

流れとしては、

マップ上で敵を倒す

ドロップする/しないの分岐処理 →しないときは、そのまま敵を消去して終わり。

する場合は、セルフスイッチを切り替えて宝箱を表示

宝箱を空ける

武器や防具などを1つドロップする。

となっていまして。

宝箱が画面上にたくさん表示される状況はありますが

実際は、宝箱を空けてから入手アイテムを決める処理をコモンイベントで行うので

連続して撃破しても、アイテム入手の作業は1回ずつ個別に行う事になります。

また、敵は、複数のアイテムをドロップしないので、宝箱からは1つのアイテムのみ入手します。

ドロップが何なのかを見る事が楽しみな部分が大きいので

文章の表示で\v[n]の形で表示させる仕様が良いかと思ってます。
(または、変数をピクチャ化するプラグインも入ってますので、ピクチャで表示する方法も考えています。)

文章を表示中は、イベントの動きを止めるために
トリアコンタン様のCharacterFreeze.jsを使って
文章の表示の直前にストップして、表示終了直後に動けるようにしています。



長くなりましたがまとめますと

・入手品の最新1件の名前をゲーム変数に代入する形で取得したい。
(武器・防具・アイテム・大事なもの)

・複数種類入手と複数個数入手は、仕様上無し。

・連続撃破した場合も宝箱を空けるまで入手しないので、事実上連続入手にはならない。

・文章の表示、または文章をピクチャ化するプラグインにて表示予定

・今の所、ショップでの購入は無い予定です。

となります。

相談に乗っていただき感謝です。よろしくお願いいたしますm(_ _)m
アバター
ムノクラ
記事: 639
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

Re: 所持品のリストの最新物の名前を取得したい

投稿記事by ムノクラ » 2019年11月12日(火) 22:25

MEIKOI さんが書きました:ありがとうございます!

流れとしては、

マップ上で敵を倒す

ドロップする/しないの分岐処理 →しないときは、そのまま敵を消去して終わり。

する場合は、セルフスイッチを切り替えて宝箱を表示

宝箱を空ける

武器や防具などを1つドロップする。

となっていまして。

宝箱が画面上にたくさん表示される状況はありますが

実際は、宝箱を空けてから入手アイテムを決める処理をコモンイベントで行うので

連続して撃破しても、アイテム入手の作業は1回ずつ個別に行う事になります。

また、敵は、複数のアイテムをドロップしないので、宝箱からは1つのアイテムのみ入手します。

ドロップが何なのかを見る事が楽しみな部分が大きいので

文章の表示で\v[n]の形で表示させる仕様が良いかと思ってます。
(または、変数をピクチャ化するプラグインも入ってますので、ピクチャで表示する方法も考えています。)

文章を表示中は、イベントの動きを止めるために
トリアコンタン様のCharacterFreeze.jsを使って
文章の表示の直前にストップして、表示終了直後に動けるようにしています。



長くなりましたがまとめますと

・入手品の最新1件の名前をゲーム変数に代入する形で取得したい。
(武器・防具・アイテム・大事なもの)

・複数種類入手と複数個数入手は、仕様上無し。

・連続撃破した場合も宝箱を空けるまで入手しないので、事実上連続入手にはならない。

・文章の表示、または文章をピクチャ化するプラグインにて表示予定

・今の所、ショップでの購入は無い予定です。

となります。

相談に乗っていただき感謝です。よろしくお願いいたしますm(_ _)m


横から申し訳ありません。

質問の経緯を読んでいて、最初の質問から現状のやりたいことのアプローチが全く違う角度から見えたので、アホのような提案をいたします。

入手アイテムを決めるコモンイベントに下記の記事にあるプラグインを使用したら解決しそうな気がしたのですが…

MVのランダム宝箱をプラグインで簡単設定
https://fungamemake.com/archives/339

▼ ランダムにアイテムを取得(kido様作)
https://plugin.fungamemake.com/archives/11803
ランダムにアイテムを取得

的外れでしたら、申し訳ございません。
参考になれば幸いです。
***
:!: 質問前に、過去ログを検索しましょう! :!:
:!: プラグインのエラーが出たらトリアコンタン様の記事を読もう!
https://qiita.com/triacontane/items/2e2 ... e9503a2c30
:!: 質問が解決できたら、スレッドタイトルに【解決】を追加しましょう!
:!: 自己解決した方は、解決した方法を書きましょう ;)

:arrow: プラグイン投稿・検索
https://plugin.fungamemake.com

:arrow: プラグイン翻訳等
https://fungamemake.com
MEIKOI
記事: 73
登録日時: 2018年9月22日(土) 20:13

Re: 所持品のリストの最新物の名前を取得したい

投稿記事by MEIKOI » 2019年11月12日(火) 23:03

ムノクラ様

こんばんは。
いつもホームページを拝見させていただいて
プラグインの情報他などで勉強させていただいております。
ありがとうございます。

今回のやりたい事の案件なのですが
YEP_ITEMCOREと
DreamX/Random Equipment Prefixes & Affixes
の2つのプラグインを使ってまして

アイテムを入手時に独立した固有のアイテム(id)が新しく生成される
(いわゆるランダムエンチャント的な物)なので
データーベースで最初から設定しているアイテムのように入手したアイテムを
特定する事ができませんので

「生成されたアイテムの最新のIDを調べて、そこから情報を取得する」

又は

「プラグインで生成された時にその場でアイテム名を所得する」

必要があるのではないかと、イメージしています。



そこで、DreamX/Random Equipment Prefixes & Affixesで

生成されたitem.nameを取得したのですが

取得できたりできなかったり、結局うまく行かなかったのですが、

実際は、YEP_ITEMCOREの方から取得するべきなのでは・・・

と言う所までが現在のイメージしている所であります。


それと、今日ツクマテをずっと検索してましたら
スクリプトで参照した値を変数に代入する方法について
viewtopic.php?t=357
と言う記事を見つけまして

考え方としては、これが近道になるのかなと思っている次第です。

今日は、ちょっと飲んでしまったので。また明日、勉強します(笑)

私の考えがまったく見当違いな場合は、お恥ずかしいく、申し訳ございません・・・^^;

ありがとうございますm(_ _)m

“MV:質問” へ戻る