アイテム使用回数【解決済み】

アバター
エコー
記事: 35
登録日時: 2016年6月14日(火) 09:25

アイテム使用回数【解決済み】

投稿記事by エコー » 2016年8月13日(土) 02:59

こんにちは!
どなたかアイテムの使用回数を制限できるプラグインをご存知ではないでしょうか?
10回使ったら消える。20回使ったら消える。というような回数が決められているものです。
変数を使えばなんとかいけそうですが、アイテムに砂糖ビンとかウェイパーとか食材系が多いので変数を使うと1ページの条件分岐に膨大な数を要すと思ったため、また他にも問題があるのでやはりプラグインが無難かと思ったわけですがいまだにそういったプラグインを見かけません。
心当たりあるかた、または作っていただける方、よろしくお願いします。
最後に編集したユーザー エコー on 2016年8月14日(日) 07:40 [ 編集 1 回目 ]

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

Re: アイテム使用回数

投稿記事by まっつUP » 2016年8月13日(土) 12:08

使用用途が分かりません、もっと詳しく説明して、どうぞ。

以下初期化、任意の箇所で処理してください。(2行以降はスクリプトコマンド)
◆変数の操作:#0010 = []
var j = $dataItems.length - 1
for(var i = 1; i <= j; i++){
$gameVariables._data[10][i] = 0
}

その次にデータベースのアイテムの設定で以下の点に留意してください。
あなたが使用制限を望むアイテムの設定を対象とします。
消耗は「しない」
使用可能時「使用不可」以外
メモに <Mtloselose: x> を入れる(使用回数がx以上になるとアイテムが一つ消失)
使用効果「コモンイベント」で次のコモンイベントを入れる(以下説明が入ります)

コモンイベントの実行内容
スクリプトコマンド(alertの行は消してもらって構いません。)
var i = $gameParty.lastItem().id
var j = $gameVariables._data[10][i]
var k = j + 1 //値が入っていないと正常に動作しない
var j = $dataItems[i].meta['Mtloselose']
$gameVariables._data[10][i] = k
alert(i) //最後に使用したアイテムのid
if(k >= j){
$gameParty.loseItem($dataItems[i], 1) //アイテムヘラス
$gameVariables._data[10][i] = 0
}

プラグインじゃないですがこれで動作しました。(トピックの趣旨に合うかは不明)
好ましくないidの変数を操作していると思ったら、変数の操作のところを
お好きなidの変数に代えて以降の10をそのidに代えてください。
間違えてたら、誰か修正して(小声)
RPGで笑顔を・・・

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

github
https://github.com/mattuup/RPGMakerMZ
アバター
エコー
記事: 35
登録日時: 2016年6月14日(火) 09:25

Re: アイテム使用回数

投稿記事by エコー » 2016年8月13日(土) 17:44

まっつUP様こんにちは。
処理コードを提示してくださりありがとうございます。
いま試したら無事動作を確認できました。

説明し忘れましたが、使用用途というのはドラクエでいう祈りの指輪のようなもので、何回でも使えるまあまあなレアアイテムなのですが20~30%の確率で破壊されるというものです。
アイテム破壊率を乱数として処理することができますが、これでは使用1回目で消滅する恐れがあります。
ゲームを本格的に作ってるつもりの自分としては、せっかく高いお金出して買ったアイテムが一瞬で消えるというのはあまり好ましくなかったし、「消耗しない」アイテムもアイテムの性能によってはチート過ぎると思うので最低でもn回しか使えないという制限を設けることによって金額に見合ったアイテムバランスが保たれるのではという考えに至りました。
しかしそういったアイテムがいっぱいあるのでアイテムごとに変数とコモンイベントを用意しなければならなく、それがデータベースを圧迫するという理由から何かいい手はないものかとトピックに投稿させていただいた次第です。
しかしまっつUP様が提示してくださったコードで決められた回数使うと消えるという望みどおりのアイテムシステムが実現できました。
本当にありがとうございました。

あとひとつだけ助言いただきたいのですが、アイテムが消えた際の「~が壊れた」などの表示をさせるにはどのようにすればいいでしょうか?
$gameMessage.add($dataItems[0].name+"が壊れた");とかver $dataItems[0].name = $gameVariables._data[10]のあとメッセージに\v[10]を入れるのような感じじゃないかと思いますが、上記ではいずれも最後に使ったアイテム名をうまく表示できませんでした。
アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: アイテム使用回数

投稿記事by まっつUP » 2016年8月13日(土) 21:55

エコー様
帰宅したので早速修正してみました。
そうですよね、レスポンスが足りないことを失念しておりました。

コモンイベントの実行内容
スクリプトコマンド
$gameVariables.setValue(11,0) //アイテム名を消す
var i = $gameParty.lastItem().id //最後に使ったアイテムのid
var j = $dataItems[i].meta['Mtloselose']
var k = $gameVariables._data[10][i] + 1 //値が入っていないと正常に動作しない
$gameVariables._data[10][i] = k
alert(i) //最後に使用したアイテムのid
if(k >= j){
$gameParty.loseItem($dataItems[i], 1) //アイテムヘラス
$gameVariables._data[10][i] = 0
$gameVariables.setValue(11,$dataItems[i].name) //アイテム名
}
◆条件分岐:#0011 ≠ 0
◆文章:なし, ウィンドウ, 下
:  :\V[11]を破壊した!

:分岐終了

なお、おそらく戦闘開始前等に毎回初期化するわけではないとみました。
変数10の配列には1番目から(アイテムの項目最大数)番目まで0が入っています。
データベースの最大数の変更で最大数を増やさないようにしていただきたいです。
これを変えるためには変数10を操作する必要があります。
(ただし、増やしてもこのコモンイベントを使わないまたは別にイベントの実行内容で配列を
増やした分対応できるように初期化する場合は問題ありません。)

文章の表示はコモンイベントの特性を生かしてイベントコマンドでやってみました、どうでしょうか。
乱数の処理・判定は要望次第で対応を考えます。
(対応するとは言っていない)

追記
エコー様のプロジェクトでは「YEP_MessageCore」というプラグインをお使いでしょうか。
Yanfly様のプラグインなのですが、\ii[x]という制御文字が使えるようになります。
これで特定のidのアイテムの設定されたアイコングラフィックとアイテム名が表示できます。
つまり「文章の表示」中に\ii[\V[11]]と打つことでアイテム名の表示が実現できます。
このプラグインを使っている場合はスクリプトコマンド中の一行
$gameVariables.setValue(11,$dataItems[i].name)を
$gameVariables.setValue(11,i)を変えると名前が表示されます。
RPGで笑顔を・・・

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

github
https://github.com/mattuup/RPGMakerMZ
アバター
エコー
記事: 35
登録日時: 2016年6月14日(火) 09:25

Re: アイテム使用回数

投稿記事by エコー » 2016年8月14日(日) 07:39

おはようございます。
ご助言と修正ありがとうございます。
自分のプロジェクトにはYEP_MessageCoreも入っており、試したところ両方ともアイテム名の表示を確認できました。
(更新はしてるんですが、制御文字にそのような機能が追加されてるとは気づきませんでした。)
またアイテム最大数の変更については全然問題ありませんでした。
たぶんいまの状態だと限界突破はなさそうです。

まっつUP様のおかげで自分の思い通りのアイテムが実現できたのでこれ以上他に言うことはございません。
重ね重ね本当ににありがとうございました。
面白いゲームを目指して引き続き製作に取り組んでいきたいと思います。
このトピックはこれにて解決済みとさせていただきます。
また何かわからないことがあれば質問させていただきます。
アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: アイテム使用回数【解決済み】

投稿記事by まっつUP » 2016年8月14日(日) 13:19

エコー様
満足いただけたようで何よりです。
解決済みとのことでまたこのトピックの閲覧をするかは分かりませんが
売却時にアイテムの所持数が0になっても使用回数が0になりませんので
この問題を解決するためのプラグインを添付します。
(所持数が0になろうがならまいが売却した時点でそのアイテムの使用回数が0になります。)
特に規約はありませんが、あなたがゲーム公開時に同梱するreadmeにまっつUPの記述を
入れてもらえるとありがたいです。
念のためYEP系のプラグインより下に置いて設定をONにしてください。

ちなみに、メモ欄に何も書かずに上の使用効果コモンイベントを入れてもエラーは置きませんので
万が一編集時にミスしても大丈夫なんじゃないかと思います。
ただし、メモに使用制限の記述がなくとも使用回数は加算されていきますのでご注意を。
添付ファイル
SellConsumeExpansion.js
(1.22 KiB) ダウンロード数: 53 回
RPGで笑顔を・・・

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

github
https://github.com/mattuup/RPGMakerMZ
アバター
エコー
記事: 35
登録日時: 2016年6月14日(火) 09:25

Re: アイテム使用回数【解決済み】

投稿記事by エコー » 2016年8月14日(日) 19:08

まいどありうがとうございます!
なるほど、売却時の問題点には気づきませんでした。
確かにアイテム売却時に再度同じアイテムを購入すると回数がリセットされていないようでした。
さきほどダウンロードして正常に動作する事を確認しました。
ありがたく使わせてもらいます。

ゲーム完成時にはもちろんクレジット表記にまっつUP様の名前を記載させていただきます。
(まだまだ道のりはまだ長いですが)
この度は長々とお付き合いいただき本当にありがとうございました。

“MV:プラグイン素材のリクエスト” へ戻る