所持品ではなく「装備品」を対象とした防具を減らす方法(解決済)

アバター
ram04
記事: 37
登録日時: 2018年10月14日(日) 21:50

所持品ではなく「装備品」を対象とした防具を減らす方法(解決済)

投稿記事by ram04 » 2018年11月25日(日) 15:40

こんにちは、いつもお世話になっております。
ゲーム制作に行き詰ってしまったので、お知恵を貸して頂けると嬉しいです。


現在、ローグライク+TRPGライクのゲームを作成しております。
作中のアイテムを、カテゴリ上「アイテム」ではなく「防具」に設定することで、アイテム(防具)を所持(装備)することができる、そんなシステムを考えております。
アイテム(防具)には、「ランタン」や「携帯食糧」などを作り、ダンジョン探索において利用するつもりでいます。

これらのシステムを作る上で、「装備品」を対象とした防具を増減できないか、悩んでおります。
通常、防具の増減は、所持品に加え装備品も含めての減はできるのですが、ピンポイントで装備品だけを減らすことはできないため、疑似的な方法でも良いので何か教えて頂けると嬉しいです。
(同じアイテム(防具)を装備しているアクターが複数いる場合、どのアクターでも減らす対象となって問題ありません)

作中での具体的な利用方法としては、ダンジョン探索中に空腹の処理が発生→パーティーのうち誰かがアイテム(防具)「携帯食糧」を装備している場合、それを消費して空腹を回避する、といった具合です。
「パーティーの誰かが携帯食糧を装備している」という判定はmoto様の「Conditional_branch_in_Partymember」というプラグイン(パーティー内の誰かが○○の時…という条件分岐を設定できる)を利用しクリアできたのですが、「装備品を減らす」という処理が分かりませんでした。


先ほど、下記のような方法を思いついたのですが、その場合また新たな問題が発生してしまいます。
------------
①パーティーの誰かが特定のアイテムを装備しているか判定
②そのアクターの装備品を外す
③所持品を減らす

①の「パーティーの誰かが」という判定は、前述したmoto様のプラグインを利用すれば処理できます。
ただし、このプラグインでは、「どのアクターが対象か」という情報は取得できません。

②の「そのアクターの装備品を外す」も、スクリプトを利用した方法を調べましたが、勉強不足のため分かりませんでした。

もう一つネックなのが、現在フトコロ様の「FTKR_ExEquipSlot」というプラグインを利用していることです。
こちらのプラグインは、同じ装備タイプの装備を2つ以上装備できるようにするものなので、装備を外す処理を行う場合に「アクターとスロットを指定して外す」といった処理を行うのが難しいのではないか、ということです。


ご相談内容は以上です。説明内容が分かりにくかったら申し訳ありません。
参考用に画像データも貼らせて頂きますので、何か良いアイディア等ありましたら、ご教示頂けると幸いです。
どうぞよろしくお願いいたします。
添付ファイル
image_20181125_151642.png
キャプチ    ャ.PNG
キャプ   チャ.PNG
最後に編集したユーザー ram04 on 2018年11月25日(日) 23:15 [ 編集 1 回目 ]

----------------------------------------------------------------
ツクールMV一年生です。
現在自身の創作をモチーフにしたゲームを製作中です。
家庭用はSFCの2とPSの3が大好きです。
アバター
WTR
記事: 205
登録日時: 2015年12月22日(火) 19:14

Re: 所持品ではなく「装備品」を対象とした防具を減らす方法

投稿記事by WTR » 2018年11月25日(日) 18:03

防具を1つ減らすのは

コード: 全て選択

$gameParty.loseItem($dataArmors[ArmorId], 1, true);


で出来ます。
装備しててもしてなくても無理やり減らします。

誰かが装備しているとき、は判定できるということなので上記で事足りるのではないでしょうか。
複数装備している場合、アクターIDの若い順、スロットIDの若い順に減ると思います。(予想
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
アバター
WTR
記事: 205
登録日時: 2015年12月22日(火) 19:14

Re: 所持品ではなく「装備品」を対象とした防具を減らす方法

投稿記事by WTR » 2018年11月25日(日) 18:18

嘘でした
装備から減らさないといけないのですね。

誰かが防具1を装備しているとき、それを外して消費するには

コード: 全て選択

var armorId = 1;

outside:
for (var i = 0; i < $gameParty.members().length; i++) {
    for (var j = 0; j < $gameParty.members()[i]._equips.length; j++) {
        if (($gameParty.members()[i]._equips[j]._dataClass == "armor") && ($gameParty.members()[i]._equips[j]._itemId == armorId)) {
            $gameParty.members()[i].changeEquip(j, 0);
            $gameParty.loseItem($dataArmors[armorId], 1, true);
            break outside;
        }
    }
}


なんかセンスないのがヒシヒシと伝わってきますがとりあえず減ると思います。。
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
アバター
ram04
記事: 37
登録日時: 2018年10月14日(日) 21:50

Re: 所持品ではなく「装備品」を対象とした防具を減らす方法

投稿記事by ram04 » 2018年11月25日(日) 23:15

WTR様

いつもお世話になっております、迅速な対応ありがとうございます。
教えて頂いたスクリプトを使用ところ、思い通りの処理になりました!!
1人で考えても解決できなかったため、非常に感謝です。
教えて頂き、どうもありがとうございました!

ちなみに、最初「}」を一つ閉じ忘れてしまい、うまく動きませんでした…(笑)
スクリプトって難しいです…!
----------------------------------------------------------------
ツクールMV一年生です。
現在自身の創作をモチーフにしたゲームを製作中です。
家庭用はSFCの2とPSの3が大好きです。

“MV:質問” へ戻る