【解決済み】装備中の武器・防具を消費するスキル

ぼた餅
記事: 187
登録日時: 2016年7月17日(日) 20:22

【解決済み】装備中の武器・防具を消費するスキル

投稿記事by ぼた餅 » 2017年7月08日(土) 11:36

お世話になっております。


「自分が装備している武器・防具を消費することで発動するスキル」
が設定可能なプラグインを作っていただけないでしょうか。


以下、細かい仕様です。
・消費した武器または防具は消滅し、戦闘終了後も復活しない。
・武器または防具に設定された数値(攻撃力等)は、消費するとその場で差し引かれる。
・武器または防具に設定された特徴は、消費すると効果が発揮されなくなる。
・スキルが装備した武器または防具によって覚えたものの場合、発動後はそのスキルを使用者が忘れる。


YEP_X_SkillCostItemsというプラグインでも似たようなことはできますが、こちらでは消費するのが所持アイテムからで、装備中の武器・防具を設定することができません。

検討のほどよろしくお願いします。
最後に編集したユーザー ぼた餅 on 2017年7月09日(日) 18:04 [ 編集 1 回目 ]

アバター
ビービー
記事: 308
登録日時: 2016年1月12日(火) 18:40

Re: 装備中の武器・防具を消費するスキル

投稿記事by ビービー » 2017年7月09日(日) 02:37

こんばんは。

スクリプトを使用することでイベントコマンドでもできるようなので紹介しておきます。
武器破壊スキルの使用効果に以下のコモンイベントを設定してください。

武器破壊スキル作成例:
◆注釈:スキル使用者のアクターIDを変数1に代入。
◆変数の操作:#0001 スキル使用者 = $gameParty.inBattle() ? BattleManager._subject._actorId : $gameParty.menuActor()._actorId
◆注釈:スキル使用者の現在装備中の武器IDを変数2に代入
◆変数の操作:#0002 装備中武器ID = $gameActors.actor($gameVariables.value(1))._equips[1-1]._itemId
◆注釈:アクターID(変数1:スキル使用者)の武器をはずす。
:  :武器ID(変数2:装備中武器ID)を捨てる。

◆スクリプト:$gameActors.actor($gameVariables.value(1)).changeEquipById(1, 0);
:     :$gameParty.loseItem($dataWeapons[$gameVariables.value(2)], 1, true);
◆注釈:ここから下はアクターの数だけ必要になります。
◆注釈:スキル使用者がアクター1の場合

◆条件分岐:スキル使用者 = 1
◆変数の操作:#0003 スキル使用者のレベル = ハロルドのレベル
◆注釈:アクター1のレベルが10(武器破壊スキルを覚えるレベル)以下の場合武器破壊スキルを忘れる
◆条件分岐:スキル使用者のレベル ≤ 10
◆スキルの増減:ハロルド, - 武器破壊攻撃

:分岐終了

:分岐終了

防具の場合:
まず防具破壊のスキルとコモンイベントを別に作成してください。
◆変数の操作:#0002 装備中武器ID = $gameActors.actor($gameVariables.value(1))._equips[1-1]._itemId
この部分の1-1が装備している場所を指定しています。
1-1は一番上に装備している武器を指しています。
なので3番目に装備している防具を破壊するスキルの場合
3-1と変えてください。

◆スクリプト:$gameActors.actor($gameVariables.value(1)).changeEquipById(1, 0);
:     :$gameParty.loseItem($dataWeapons[$gameVariables.value(2)], 1, true);
この部分の一行目changeEquipById(1, 0);の1が装備タイプで0が武器IDなので
三番目に装備している防具を破壊するスキルの場合1を3に書き換えてください。
0は外すという意味なので変えないでください。
それと防具なので二行目の$dataWeaponsを$dataArmorsに書き換えてください。

以上でできるはずです。
制作頑張ってください。
------------------------------------------------------
Twitterやってます。
https://twitter.com/BB_ENTER
ブログもやってます。
http://bb-entertainment-blog.blogspot.jp/
ぼた餅
記事: 187
登録日時: 2016年7月17日(日) 20:22

Re: 装備中の武器・防具を消費するスキル

投稿記事by ぼた餅 » 2017年7月09日(日) 09:13

返信ありがとうございます。
トピック通りに動作しました。


ですが、私の環境では求めている動作ではなかったので、余力があれば対応していただけないでしょうか。
私の環境というのは、「HIME_EquipSlotsCore」というプラグインを使っていて、一つの装備タイプを複数装備できるようにしているのです。
なので、たとえば「頭」が破壊されるように設定しても、「頭」を複数装備していた場合、2番目の「頭」が破壊されてほしいにもかかわらず、1番目の「頭」が破壊されてしまいます。

そこで、一つの装備タイプを複数装備していた場合、破壊される対象を指定できるようにはしていただけないでしょうか。
プラグインを添付するので、必要であればご確認ください。
添付ファイル
1.png
2.png
3.png
HIME_EquipSlotsCore.js
(15.27 KiB) ダウンロード数: 2 回
アバター
ビービー
記事: 308
登録日時: 2016年1月12日(火) 18:40

Re: 装備中の武器・防具を消費するスキル

投稿記事by ビービー » 2017年7月09日(日) 12:47

武器のメモ欄に<break>と書かれている武器を破壊する方法を考えてみました。
二つの武器両方に<break>の記述がある場合装備枠が下の方が優先的に破壊されます。
※前回の返信から書き換えた部分のみの例です。

◆注釈:スキル使用者の現在一番上に装備中の武器IDを変数2に代入
:  :二番目に装備している武器を変数4に代入

◆変数の操作:#0002 装備中武器ID = $gameActors.actor($gameVariables.value(1))._equips[1-1]._itemId
◆変数の操作:#0004 装備中武器2 = $gameActors.actor($gameVariables.value(1))._equips[2-1]._itemId
◆注釈:変数2もしくは変数4の武器のメモ欄に<break>と書かれていたら変数5に代入
:  :変数6にそれぞれの条件分岐に使用した変数の装備枠を代入

◆変数の操作:#0005 破壊する装備 = 0
◆変数の操作:#0006 破壊する装備の装備枠 = 0
◆条件分岐:スクリプト:$dataWeapons[$gameVariables.value(2)].meta['break']
◆変数の操作:#0005 破壊する装備 = 装備中武器ID
◆変数の操作:#0006 破壊する装備の装備枠 = 1

:分岐終了
◆条件分岐:スクリプト:$dataWeapons[$gameVariables.value(4)].meta['break']
◆変数の操作:#0005 破壊する装備 = 装備中武器2
◆変数の操作:#0006 破壊する装備の装備枠 = 2

:分岐終了
◆注釈:アクターID(変数スキル使用者)の武器(変数6:破壊する装備の装備枠)をはずす。
:  :武器ID(変数5:破壊する装備)を捨てる。

◆スクリプト:$gameActors.actor($gameVariables.value(1)).changeEquipById($gameVariables.value(6), 0);
:     :$gameParty.loseItem($dataWeapons[$gameVariables.value(5)], 1, true);

以上でできるはずです。
ただ試していないので、できなかったらすみません。
------------------------------------------------------
Twitterやってます。
https://twitter.com/BB_ENTER
ブログもやってます。
http://bb-entertainment-blog.blogspot.jp/
ぼた餅
記事: 187
登録日時: 2016年7月17日(日) 20:22

Re: 装備中の武器・防具を消費するスキル

投稿記事by ぼた餅 » 2017年7月09日(日) 14:35

迅速な対応ありがとうございます。
プラグインをオフにすると正常に動作するのですが、オンにすると添付した画像のエラーが表示されてしまいます。
タイミングとしては、スキルを使用して敵を倒した直後です。


完全な素人目ですが、プラグインと相性が悪いのだろうとは想像がつきます。
これ以上お手数をおかけするのも悪いので、面倒でしたらサポートはここで打ち切っていただいても構いません。
添付ファイル
4.png
アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: 装備中の武器・防具を消費するスキル

投稿記事by まっつUP » 2017年7月09日(日) 15:25

ぼた餅様
お世話になります。

◆変数の操作:#0001 = $gameParty.inBattle() ? BattleManager._subject._actorId : $gameParty.menuActor()._actorId
直後にイベントコマンド「スクリプト」で以下の内容を実行
var actor = $gameActors.actor($gameVariables.value(1));
var a = false;
actor.weapons().forEach(function(weapon) {
if(weapon.meta['break'] && !a){
actor.discardEquip(weapon);
a = true;
}
});

追記:HIME_EquipSlotsCoreの使い方と一行誤りがあることが分かったので追記です。
かなり便利なメソッドがあるのを見逃していました。
最後に編集したユーザー まっつUP on 2017年7月09日(日) 16:28 [ 編集 2 回目 ]
RPGで笑顔を・・・

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

github
https://github.com/mattuup/RPGMakerMZ
アバター
ビービー
記事: 308
登録日時: 2016年1月12日(火) 18:40

Re: 装備中の武器・防具を消費するスキル

投稿記事by ビービー » 2017年7月09日(日) 15:45

プラグインの機能がいまいちわからないので
最終手段として、同一の機能を持つプラグインに変えてみるのも手かもしれません。

ツクマテ記事(http://tm.lucky-duet.com/viewtopic.php?f=49&t=4083

鳥小屋.txtさん(http://torigoya.hatenadiary.jp/
のRPGツクールMV小物プラグイン集という記事の
同じ名前の装備タイプなら同じものを装備できるようにするプラグイン

などがおそらく似た機能だと思います。
------------------------------------------------------
Twitterやってます。
https://twitter.com/BB_ENTER
ブログもやってます。
http://bb-entertainment-blog.blogspot.jp/
アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: 装備中の武器・防具を消費するスキル

投稿記事by まっつUP » 2017年7月09日(日) 16:33

返信で書いたスクリプトはプラグインなしでも動きますのでお試しください。
ただし、複数の<break>タグのついた武器が装備されている場合は
スロットIDの小さいものを優先して破壊します。
RPGで笑顔を・・・

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

github
https://github.com/mattuup/RPGMakerMZ
ぼた餅
記事: 187
登録日時: 2016年7月17日(日) 20:22

Re: 装備中の武器・防具を消費するスキル

投稿記事by ぼた餅 » 2017年7月09日(日) 18:02

ビービー様

返信ありがとうございます。
提案していただいたプラグインを試したところ、こちらも変わらずエラーが出てしまいました。



まっつUP様

返信ありがとうございます。
最初、ビービー様のコモンイベントに差し込むのだと勘違いしていました。
これ単体でよかったのですね!お恥ずかしい限りです。
動作のほうは、私の求めている通りのものでした。
制作いただきありがとうございます。


最後に、ビービー様、まっつUP様、私のために時間を割いていただき心より感謝を申し上げます。
お二人からご教授いただいたことを活かして、よいゲームを作っていこうと思います。
このたびは改めて、ありがとうございました。



※追記
備忘録として、防具の場合だと…
スクリプトの
・weapons → armors
・weapon → armor
と書き換えれば防具用のコモンイベントが作れます。
変数の操作はそのままでOKみたいです。
私みたいにチンプンカンプンな人は参考にどうぞ!

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