お世話になっております。
今回はアイテムドロップ率について、調べ方をお伺いしたいと思います。
アイテムドロップ率、と言っても、データベースの敵キャラの設定で行うドロップ率ではなく、
ステートの特徴で「アイテム入手率2倍」というのがあると思うのですが、それが今何倍になっているか
を知る方法が知りたいと思っています。
というのも、アイテム入手率が2倍だけというのもつまらないな、と思い、下のような
アイテムドロップ率が倍々になってくようなプラグインを他のプラグイン様を見様見真似で作ってみたのです。
ですが、いざ、テストと思ったときに、アイテムドロップ率を知る方法が分からず詰んでしまいました。
ドロップ率がrpg_object.jsのGame_Enemy.prototype.dropItemRateで作られているらしいことは
プラグインを作る際に分かってはいるのですが、これを参照する方法が分かりません。
敵キャラの情報として経験値などなら、$dataEnemies[1].expで取れると
調べられたので、同じように$dataEnemies[1].dropItemRateとしてテストしてみたのですが、
返ってくる値は0でした。上記のプラグイン外して試しても同じでした。
Game_Enemy.prototype.dropItemRateを見る限りreturn $gameParty.hasDropItemDouble() ? 2 : 1;とあるので
最低でも返ってくる値は1ではないかと思うので、上手くdropItemRateを参照できていないように思われます。
しょぼしょぼの初心者な質問で申し訳ないのですが、どなたか分かればお教えいただけないでしょうか。
[解決済]敵のアイテムドロップ率について
[解決済]敵のアイテムドロップ率について
最後に編集したユーザー RefIzumi [ 2018年10月06日(土) 07:48 ], 累計 1 回
Re: 敵のアイテムドロップ率について
(多少ながらプログラムの心得があると仮定して解説させていただきます)
この状況に於いて$dataEnemies[1].dropItemRateが0を返す理由は以下の2つとなります。
1. $dataEnemies[1]はGame_EnemyタイプのObjectではない。よって$dataEnemies[1].dropItemRateはそもそも設定されておらず、空である。
2. .droprateと言う呼び出し方ではfunctionを実行しない。
たとえ空でなかったとして、
と言ったようなテキストが出力されるだけとなります。
ではどうすれば良いかと言うと、そちらのコードを観察する限り個別のenemyのデータは参照していないので…
で出せるかと思います(出先の為実際にコードを走らせて居らず、推定である事をご了承ください)
また、この場合出てくるのはドロップ率の「倍率」であって、個別アイテムの実際のドロップ率ではない事にご留意ください。
この状況に於いて$dataEnemies[1].dropItemRateが0を返す理由は以下の2つとなります。
1. $dataEnemies[1]はGame_EnemyタイプのObjectではない。よって$dataEnemies[1].dropItemRateはそもそも設定されておらず、空である。
2. .droprateと言う呼び出し方ではfunctionを実行しない。
たとえ空でなかったとして、
コード: 全て選択
function() {
var parameters = ....
ではどうすれば良いかと言うと、そちらのコードを観察する限り個別のenemyのデータは参照していないので…
コード: 全て選択
var dummy = new Game_Enemy(1, 0, 0);
var x = dummy.dropItemRate(); //←xがドロップ倍率となります
また、この場合出てくるのはドロップ率の「倍率」であって、個別アイテムの実際のドロップ率ではない事にご留意ください。
----
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
Re: 敵のアイテムドロップ率について
素早い返信ありがとうございます!
ご提示頂いた
のコードできちんとdropItemRateが倍々になっていることを確認できました!ありがとうございます。
今回のドロップ率の倍率はあくまでドロップしやすくなる倍率・・のようなもので、実際には
Game_Enemy.prototype.makeDropItemsで
if (di.kind > 0 && Math.random() * di.denominator < this.dropItemRate()) {
と書かれているので、各敵の各ドロップアイテムのドロップ率にランダム数掛けた値が今回のドロップ率の「倍率」を下回ればドロップする、なのかなぁと浅い理解ですが・・。
ごちゃごちゃ書いてしまいましたが、当初の目的の自作プラグインのテストはおかげさまで上手くできました!
細かく解説頂きありがとうございました!
$dataEnemiesとGame_Enemyは無関係だったのですね。剣崎 宗二 さんが書きました:1. $dataEnemies[1]はGame_EnemyタイプのObjectではない。
$dataEnemies.dropItemRate()も試したらis not Functionエラーが返されて、$dataEnemies.dropItemRateだと0が返ってきたので()なしのほうが正しいのかと思ってしまいました。空の何かが返ってきていただけだったのですね・・。そうですよね、呼び出し方が間違ってますね。(プログラミングの基礎のきができてないですね・・)剣崎 宗二 さんが書きました:2. .droprateと言う呼び出し方ではfunctionを実行しない。
ご提示頂いた
コード: 全て選択
var dummy = new Game_Enemy(1, 0, 0);
var x = dummy.dropItemRate(); //←xがドロップ倍率となります
はい、恐らく理解しております。剣崎 宗二 さんが書きました:また、この場合出てくるのはドロップ率の「倍率」であって、個別アイテムの実際のドロップ率ではない事にご留意ください。
今回のドロップ率の倍率はあくまでドロップしやすくなる倍率・・のようなもので、実際には
Game_Enemy.prototype.makeDropItemsで
if (di.kind > 0 && Math.random() * di.denominator < this.dropItemRate()) {
と書かれているので、各敵の各ドロップアイテムのドロップ率にランダム数掛けた値が今回のドロップ率の「倍率」を下回ればドロップする、なのかなぁと浅い理解ですが・・。
ごちゃごちゃ書いてしまいましたが、当初の目的の自作プラグインのテストはおかげさまで上手くできました!
細かく解説頂きありがとうございました!
Re: [解決済]敵のアイテムドロップ率について
解決したようで良かったです。
終わった後で追記して申し訳ないのですが、一点だけ後の人の為に注意を申しておきたい部分がありました。
Game_Enemy.prototype.enemyにより、$dataEnemiesを参照できます。
(なのでGame_Enemyが$dataEnemiesを内包しているという印象で私は居ますね)
$dataEnemiesは「エディタで設定された敵のデータ」になっております。
ですが、戦闘中に敵はHPやMPが減ったり、ステートやバフが掛かったり、(画面上で)場所が移動したりします。
また、同じ敵が2体出て来た場合、それらを区別する何かも必要となります。
これら「エディタ側で行わなかった設定や処理」を行っているのが、Game_Enemyです。
$dataEnemiesがテンプレートであり、Game_Enemyが実体…と言った認識ですね、私は。
($dataActorsとGame_Actorの関係性も同様)
終わった後で追記して申し訳ないのですが、一点だけ後の人の為に注意を申しておきたい部分がありました。
こちらは正確には「同じ物ではないが、関係はある」となります。RefIzumi さんが書きました: $dataEnemiesとGame_Enemyは無関係だったのですね。
Game_Enemy.prototype.enemyにより、$dataEnemiesを参照できます。
(なのでGame_Enemyが$dataEnemiesを内包しているという印象で私は居ますね)
$dataEnemiesは「エディタで設定された敵のデータ」になっております。
ですが、戦闘中に敵はHPやMPが減ったり、ステートやバフが掛かったり、(画面上で)場所が移動したりします。
また、同じ敵が2体出て来た場合、それらを区別する何かも必要となります。
これら「エディタ側で行わなかった設定や処理」を行っているのが、Game_Enemyです。
$dataEnemiesがテンプレートであり、Game_Enemyが実体…と言った認識ですね、私は。
($dataActorsとGame_Actorの関係性も同様)
----
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。