戦闘中に1度しか使えないアイテムを作り方。

高原鈴
記事: 113
登録日時: 2016年4月16日(土) 15:43

Re: 戦闘中に1度しか使えないアイテムを作り方。

投稿記事by 高原鈴 » 2016年8月15日(月) 17:27

いえ、このプラグインが一番下に置いてあるのですが・・・。

高原鈴
記事: 113
登録日時: 2016年4月16日(土) 15:43

Re: 戦闘中に1度しか使えないアイテムを作り方。

投稿記事by 高原鈴 » 2016年8月15日(月) 17:32

ちなみにこのような並びになってます。
添付ファイル
sss2.png
sss.png
アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: 戦闘中に1度しか使えないアイテムを作り方。

投稿記事by まっつUP » 2016年8月15日(月) 17:57

いや、全く見当が付きませんね。
正直競合しているのは間違いないかと。
Game_Battler.prototype.useItem自体が呼び出されてない可能性がありますね。
アイテムとはいうもののスキル関係のプラグインにも影響を受けているかもしれません。
うーん、入手していないプラグインがあるので調べるのにも限界がありますね。
ConditionalItemとかRTK_ActionRateが怪しいですね。
YEP_CoreEngineは問題ないことは確認しました。
Reunion.js以外のプラグインをオフにした状態で正常に動くか確認できないでしょうか。
あとはコモンイベントにイベントコマンド「文章の表示」など入れて
コモンイベント自体起動しているかも確認して欲しいです。
RPGで笑顔を・・・

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ
アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: 戦闘中に1度しか使えないアイテムを作り方。

投稿記事by まっつUP » 2016年8月16日(火) 18:18

高原鈴様
もしかして、YEP_ItemCoreの個別アイテムシステムを適用しているのではないでしょうか。
また、その場合は既に個別アイテムシステムを適用していながらそのプレイを進めたセーブデータを
用いて「コモンイベントを付けた 戦闘中に1度しか使えないアイテム」を使っているのでしょう。
そのセーブデータではまだそのアイテムにはコモンイベントがついていないので
コモンイベント自体が起動していない可能性が高いです。(個別アイテム独自の仕様となります。)
したがって、ニューゲームからアイテムを獲得して試してみてください。

個別アイテムを使っている場合にこのプラグインを用いた場合
一度しか使えないという判定は個別に行われるとみています。
すなわち、ポーション、ポーション(それぞれ当トピックのコモンイベントが起動する)とある場合
それぞれのポーションが一回ずつ使えます。
何が言いたいかというと、コモンイベントをつけずに消耗を「する」にしたアイテムと
戦闘中に限ってはほとんど変わらない処理になるということですね。
こちらの場合はアイテムが戻ってはきませんが。

独立した同じIDの個別アイテムを一気にその戦闘中は使えなくするというのは
困難であるように思えます。
この件、高原鈴様に意見をいただきたいです。
RPGで笑顔を・・・

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ
高原鈴
記事: 113
登録日時: 2016年4月16日(土) 15:43

Re: 戦闘中に1度しか使えないアイテムを作り方。

投稿記事by 高原鈴 » 2016年8月18日(木) 00:07

こんばんは。試しにニューゲームから始めてやってみましたが、
結果は同じでした。何度でも無制限に使えてしまいました。
アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: 戦闘中に1度しか使えないアイテムを作り方。

投稿記事by まっつUP » 2016年8月18日(木) 00:33

以下の点は分かりますか。
「個別アイテムシステム」を使っていますか?
使用効果「コモンイベント」は起動していますか?
あと、プラグインをReunion.js以外をオフにしても正常に動かないでしょうか。

追記 プラグインをオフした上でニューゲームで正常に動くか試していただきたいです。

これらが分からないと原因の特定は難しいですね。
RPGで笑顔を・・・

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ
アバター
yamachan
記事: 107
登録日時: 2016年6月19日(日) 22:34

Re: 戦闘中に1度しか使えないアイテムを作り方。

投稿記事by yamachan » 2016年8月18日(木) 19:38

こんばんは! :D

ちょっと目的は違うのですが、アイテムの使用制限を付与するプラグインを作成していました。
例えば手裏剣は協力だけど、忍者クラスじゃないと投げられない、みたいな感じで。

試しにアイテムの利用上限を設定するタグを加えてみたので、もし良かったら参考にしてみてください。

* スキル・アイテムのメモ:
* <condition switch:n> # n番スイッチがONのときだけ戦闘で利用できる
* <condition actor:n,m,,> # n,m,,番のアクターだけが戦闘で利用できる
* <condition class:n,m,,> # n,m,,番のクラスだけが戦闘で利用できる
* <condition max:n> # 1度の戦闘でn回だけ利用できる
*
* 単独の数値 n の前に "v" を付与すると、その番号が示すゲーム変数の値が代わりに利用される
* 例) <condition switch:v10> は変数10番に入っている値に対応するスイッチがONのときだけ利用できる
* 例) <condition actor:v10> は変数10番に入っている値に対応するアクターだけが利用できる

RTK_ActionLimit.js
(5.77 KiB) ダウンロード数: 13 回
(ver1.01)

アイテムのノート欄に <condition max:1> と記入すれば、戦闘で1度しか使えない(2度目以降は選択欄に出てこない)、という仕様になっています。
既存の関数を置き換えずにフックしているだけなので、なるべく最後のほうに配置いただけると競合しにくいとオモイマス。

【同日 21:20 追記】
アイテムを使用時にカウントしているので、同じターンに該当アイテムを複数回「選択」できてしまうという欠点に気がつきました… :oops:
実行時のチェックにひっかかるようで、実際にアイテムが使用されるのは1回で、消費される個数も1つです。
とりあえずの現在はこの仕様としておき、あとで対応策を考えてみます。

【同日 23:16 追記】
同じターンに該当アイテムを制限より多く「選択」できてしまう問題に対応しました。
またスキルにも max 指定ができるようになりました。
上記 js ファイルを差し替えましたので、申し訳ありませんが ver1.01 の再ダウンロード をお願いします。

ではでは。
最後に編集したユーザー yamachan on 2016年8月18日(木) 23:17 [ 編集 3 回目 ]
Toshio Yamashita (yamachan)
Plugin https://github.com/yamachan/jgss-hack/blob/master/README.ja.md
Twitter https://twitter.com/yamachan360

私が作成して本サイトに投稿したコードは著作権を放棄し、利用・改変・配布など全て自由です。
ただし同じ投降内に制限を明記している場合はそちらが優先します。
アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: 戦闘中に1度しか使えないアイテムを作り方。

投稿記事by まっつUP » 2016年8月18日(木) 20:13

yamachan様
なるほど、RTK_ActionLimit.jsはすばらしいプラグインですね。
これならコモンイベントなんぞに頼らずに使用制限のあるアイテムが設定できますね。

Reunion.jsではGame_Battler.prototype.useItemで処理を追加しているのですが
そちらのプラグインのようにGame_Party.prototype.consumeItemで
処理を追加した方がいいのでしょうか。
Reunion.jsでは他の部分で競合していたら
コモンイベントの発動時にエラー落ちすると思うので
問題があるとしたらおそらくここなんですよね。
もしよろしければいいのでご教授願いたいです!
RPGで笑顔を・・・

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ
アバター
yamachan
記事: 107
登録日時: 2016年6月19日(日) 22:34

Re: 戦闘中に1度しか使えないアイテムを作り方。

投稿記事by yamachan » 2016年8月18日(木) 21:13

まっつUPさん、こんばんは! :D

関数をフック可能な箇所は何か所かあるので、好みかもしれませんね。

ただ Game_Battler.prototype.useItem はスキル使用でも呼び出されます。
なのでこちらを利用する場合には、スキルであるかどうかチェックが必要だとおもわれます。

MVのコード中、item という変数名は実際には他を含んでいたり、item や skill の上位クラスみたいになってて、ちょっと紛らわしいんですよね…
itemBase とかにして欲しかったかも? ;)

ということで、どちらも異なった関数をフックしたプラグインらしいので、どちらかが競合しないで使えると良いのですが…

ではでは。
Toshio Yamashita (yamachan)
Plugin https://github.com/yamachan/jgss-hack/blob/master/README.ja.md
Twitter https://twitter.com/yamachan360

私が作成して本サイトに投稿したコードは著作権を放棄し、利用・改変・配布など全て自由です。
ただし同じ投降内に制限を明記している場合はそちらが優先します。
アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: 戦闘中に1度しか使えないアイテムを作り方。

投稿記事by まっつUP » 2016年8月18日(木) 22:13

yamachan様
解答ありがとうございます。
とても勉強になりました。
やはりアイテムやスキルの仕様を理解するのは難しいですね。
すでにアイテムかどうかの判定がついているconsumeItemで
フックしたほうが良いようですね。
ただ、スキルに当トピックのコモンイベントを付けなければ
配列の0番目にスキルのIDが入るだけで処理が終わるはずなので
競合箇所が確定するまではReunion.jsはそのままにしたいと思います。
うーん、一体何が原因なのか・・・。
RPGで笑顔を・・・

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ

“MV:質問” へ戻る