特定の装備を強制的に解除する方法

返信する
sin
記事: 46
登録日時: 2016年9月29日(木) 21:49

特定の装備を強制的に解除する方法

投稿記事 by sin »

こんにちは。
現在YEP_ Equip Requirementsを使って、ある装備を装備しているときにだけしか装備できない装備を作成しております。
以下の図が例です。
新しいビットマップ イメージ.jpg
新しいビットマップ イメージ.jpg (56.76 KiB) 閲覧された回数 6246 回
新しいビットマップ イメージ1.jpg
新しいビットマップ イメージ1.jpg (50.53 KiB) 閲覧された回数 6246 回
 
上では「マガジンx5」を装備しているときだけ「弾x5」を装備でき、
マガジンx20」を装備しているときだけ、「弾x5」か、「弾x20」のどちらかを装備できる。という様に設定しています。

しかしここで問題が発生しまして、「マガジンx20」から、→「マガジンx5」に装備を変更するか、又は装備を外すと、
本来「マガジンx20」が装備中のときだけしか装備できない「弾x20」が残ったままになってしまいます。
↓ ↓ ↓
新しいビットマップ イメージ2.jpg
新しいビットマップ イメージ2.jpg (48.49 KiB) 閲覧された回数 6246 回
つまり「マガジンx5」でも「弾x20」を装備できてしまうことになってしまいます。
これを回避する方法はありますでしょうか?
特定の装備だけ解除するスクリプトでもあればと思ったのですが、調べてもわかりませんでした。

自分としましては、「マガジンx20」を外すか、他の装備に変更すると → いったん「弾x20」を解除する。
といったことができれば良いと思っています。

なるべく分かり易いようにカラーを入れて書いたつもりですが、余計に意味がわかりにくかったらすみません。

よければ解決策、またはこのようなことができるプラグインのリクエストをお願いします。
ちなみにプラグインはYEP_Equip CoreとYEP_ Equip Requirementsが入っております。
アバター
しぐれん
記事: 975
登録日時: 2017年3月28日(火) 22:22
連絡する:

Re: 特定の装備を強制的に解除する方法

投稿記事 by しぐれん »

軽くスクリプトを見てきました。
YEP_ Equip RequirementsはcanEquipを再定義することで、特定の装備を付けている時のみ装備可能な装備品を作っていました。

装備の切り替え処理を行うGame_ActorのchangeEquipは再定義していないので、ここを編集することになると思います。
大体の装備切り替え処理はchangeEquip()で処理されています。
番号で切り替えるchangeEquipById()もchangeEquip()で処理されています。
この処理が呼ばれる前にslotIdを確認して、それがマガジンのスロットタイプなら、弾のスロットタイプに対して装備を外す指示を出せばできます。
装備を外す場合、changeEquipById(slotId,0)でできます。
現在、プラグイン依頼はお休み中です。
sin
記事: 46
登録日時: 2016年9月29日(木) 21:49

Re: 特定の装備を強制的に解除する方法

投稿記事 by sin »

返信遅くなりすみません。
ご回答ありがとうございます。
あれからYEP_ Equip Requirementsの中身を編集しようとしましたが、ちんぷんかんぷんでした。
もっとスクリプト知識を理解できればjsの中を弄れるんですが、どこを弄ればいいのかわからず当分時間がかかりそうです。
で、しぐれん様のご助言を参考に以下のイベントを組んで見ることにしました。

◆条件分岐:ガンナーがハンドガンの弾x20を装備している
◆条件分岐:スクリプト:!$gameActors.actor(3).hasArmor($dataArmors[19])
◆スクリプト:$gameActors.actor(3).changeEquipById(6, 0)
◆文章:なし, ウィンドウ, 下
:  :マガジンx20を外したため、弾x20が解除されました

:それ以外のとき

:分岐終了

:それ以外のとき


:分岐終了

これを並列コモンイベントで組むことでマガジンx20をはずした時だけ弾x20を外すことができました。
コモンイベントなのですぐに反映されませんが、マップ上で反映されるということで問題はなさそうです。
本当にありがとうございます。

とりあえず今はこれで行こうと思いますが、さらにこれを応用してjsに付け加えるならどこからどうすればよいでしょうか?。
解決方法ありましたら引き続きアドバイス、又はプラグインリクエストします。

しぐれん様、本当にどうもありがとうございました。
アバター
しぐれん
記事: 975
登録日時: 2017年3月28日(火) 22:22
連絡する:

Re: 特定の装備を強制的に解除する方法

投稿記事 by しぐれん »

試しに作ってみたら、できましたのでアップします。
これ単体で機能しますので、YEP_Equip CoreとYEP_ Equip Requirementsは、他の機能を使ってないのであれば削除しても大丈夫です。
マガジン20のメモに<Magazine:20>と書いて、弾20のメモに<Bullet:20>と書けば、そちらの希望した動きになると思います。
数字を変えていろいろ試してみてください。
なお、どの装備の欄に書いても機能します。
添付ファイル
Manosasayaki_bulletMagazine.js
(899 バイト) ダウンロード数: 21 回
現在、プラグイン依頼はお休み中です。
sin
記事: 46
登録日時: 2016年9月29日(木) 21:49

Re: 特定の装備を強制的に解除する方法

投稿記事 by sin »

しぐれん様、わざわざプラグインを作成していただき、ありがとうございます!
さっそく試したところ、TypeError: Cannot read property 'meta' of nullというエラーが出てしましました。
プラグインをOFFにしていくとYEP_Equip Coreと、YEP_ item Coreも入っておりまして、この二つが原因のようでした。
YEP_ item Coreが入っていたことは言いそびれてしまって申し訳ありません。
いったんプラグインを新しく更新してみましたがそれでもダメでした。

追記:ちなみに上記の二つを外したら装備シーンで望みどおりの装備解除効果が得られました。

せっかく作成していただいたのにYEP_Equip CoreとYEP_item Coreはノートタグの使用が多くて、外すかどうかちょっと悩みどころです。
何か良い方法はありますでしょうか?
アバター
しぐれん
記事: 975
登録日時: 2017年3月28日(火) 22:22
連絡する:

Re: 特定の装備を強制的に解除する方法

投稿記事 by しぐれん »

原因特定しました。
修正版をアップしました。

itemにnullが入ってくることがあるのが原因でした。
TypeError: Cannot read property 'meta' of nullというエラーはいわゆる「ぬるぽ」です。
何も入っていない変数からデータを読もうとすると発生します。
Cannot read property 'meta' of nullの内、'meta'というのは「どの変数か知らないけど、metaという変数を読めなくてエラーになっています」という意味です。
次にこのエラーに遭遇した場合、プラグイン内を「.meta」で検索してみると良いです。
添付ファイル
Manosasayaki_bulletMagazine.js
(1.02 KiB) ダウンロード数: 56 回
現在、プラグイン依頼はお休み中です。
sin
記事: 46
登録日時: 2016年9月29日(木) 21:49

Re: 特定の装備を強制的に解除する方法

投稿記事 by sin »

しぐれん様、修正ありがとうございます。
今ダウンロードして試しましたところ問題なく動作してくれました。
これで2つを外すこともなさそうです。
metaも少し勉強になりました。
もしまたmetaエラーに出くわした場合、しぐれん様のプラグイン内を参考にしつつ探っていきたいと思います。
本当に何度も対応ありがとうございました。

さっそく導入させていただきたいと思いますが、利用規約などどのようにすればよろしいでしょうか?
アバター
しぐれん
記事: 975
登録日時: 2017年3月28日(火) 22:22
連絡する:

Re: 特定の装備を強制的に解除する方法

投稿記事 by しぐれん »

利用規約は特に考えていませんでした。
特に制限となるような項目はつけません。
再配布等もOKです。
read meに名前があるとうれしいな、ぐらいです。
現在、プラグイン依頼はお休み中です。
sin
記事: 46
登録日時: 2016年9月29日(木) 21:49

Re: 特定の装備を強制的に解除する方法

投稿記事 by sin »

ありがとうございます。
了解しました.
read meにしぐれん様の名前を記載させていただきます。
ゲーム完成にはまだまだ時間がかかりそうですが、根気よくがんばります!
返信する

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