【解決済み】YEP_SkillCoreのスキル使用条件の記述について

アバター
IKOKA
記事: 14
登録日時: 2017年8月12日(土) 22:41

【解決済み】YEP_SkillCoreのスキル使用条件の記述について

投稿記事by IKOKA » 2017年8月22日(火) 05:01

初めまして、IKOKAと申します。

Yanfly様の YEP_SkillCore を利用して、使用に条件のあるスキルを実装しようとしているのですが、
少し困ったことがあるので皆様のお力を借りられればと存じます。

作成したいのは、格闘用の武器を装備していなければ使えないスキルです。

YEP_SkillCoreの仕様に従い、スキルに以下の条件をつけました。

<Custom Requirement>
if($dataWeapons[$gameActors.actor(4)._equips[0]._itemId].description.match(/格闘/)!=null){
value = true;
}
else {
if($dataWeapons[$gameActors.actor(4)._equips[1]._itemId].description.match(/格闘/)!=null){
value = true;
}
else{
value = false;
}
}
</Custom Requirement>

『説明文に『格闘』の文字を含む武器を装備していなければ使用不可』という条件です。

このままでも運用に問題はないのですが、できれば、「$gameActors.actor(4)」の部分をID4のアクターに限らず
スキルの使用者(所持者)全員に適用できる書き方にしたいと思っています(他のキャラクターも同様のスキルを
習得できるようにしたいため)。

しかし『不特定のアクター』をどのように記述すればよいのかがわかりません……

どなたか、ご教授頂けませんでしょうか……!? よろしくお願い申し上げます。
最後に編集したユーザー IKOKA on 2017年8月22日(火) 08:07 [ 編集 1 回目 ]

アバター
しぐれん
記事: 972
登録日時: 2017年3月28日(火) 22:22
連絡を取る:

Re: YEP_SkillCoreのスキル使用条件の記述について

投稿記事by しぐれん » 2017年8月22日(火) 05:50

格闘用武器というのであれば、デフォルトの必要武器の設定で解決できるようにも思えるのですが、それではダメすか?
剣に格闘用設定があったり無かったりするというのであれば、プラグインで解決しなくてはなりませんけども。

動かしていないのでわかりませんが、
条件指定の部分にuser.ほにゃららでスキルの使用者の状態を取得できるようです。
このuserはGame_Battler型です。(使用者そのものを表すクラス)

この場合ですと、以下の記述を条件式に書くことでできると思います。
ただし、全てのスキルにこれをコピペするのは行儀が悪いので、1関数だけ実装したプラグインを作っておくことをお勧めします。
また_(アンダースコア)で始まるメンバーに直接触るのはあまりお勧めしません。
プライベートメンバーといって、直接触られることを想定していないためです。
装備をチェックするのであれば、._equipsよりも .equips() で取得することをお勧めします。
また、説明文をチェックするのは、処理効率的によくないのでメモ欄に書く方が良いです。

これらをまとめると以下のようになります。

コード: 全て選択

//適当な.jsに以下の内容を書いてプラグインを作成します。

function  isFitghtWeapon(item){
return DataManager.isWeapon(item) && !!item.meta.格闘;
}

Game_Battler.prototype.equipedFightWeapon =function(){
var e = this.equips();
return isFitghtWeapon(e[0])||isFitghtWeapon(e[1]);
};



スキルのメモ欄には以下の記述をします。

コード: 全て選択

value = user.equipedFightWeapon();


武器にはメモ欄に<格闘>と記述をすることで、格闘扱いにできます。
現在、プラグイン依頼はお休み中です。
アバター
IKOKA
記事: 14
登録日時: 2017年8月12日(土) 22:41

Re: YEP_SkillCoreのスキル使用条件の記述について

投稿記事by IKOKA » 2017年8月22日(火) 08:06

しぐれん様、御返信ありがとうございます!

>デフォルトの必要武器
おっしゃる通り、格闘できる剣や弓などを作りたかったのが一番の目的です。
武器の種別の垣根を超えて、色んな武器を使えたらいいなぁと思いまして……
もうデフォルトで良くない……?となりつつありましたが、お陰様で助かりました!

そしてアドバイス&プラグイン、本当にありがとうございます!

実は私、RPGツクールを3週間前から使い始めたばかりの初心者でして、
プログラミング経験もほとんどなく(学生時代にC言語でHelloWorldした程度)
Javascriptも全く触ったことがないという有様です。
本当に右も左もわからず手探りでことを進めておりました。

↑↑の条件式はggりながらデバックモードで色々打ち込んでたらなんか上手くいった、というノリなので
プライベートメンバーや._equipsと.equips()の違い、処理効率に関してはもう何が何やら状態です\(^o^)/

しかし非常に興味深いので合間合間にJavascriptも触り始めました。
流石にノー知識で挑んで良い領域ではなかった……この川(RPGツクール)、深い……!

ただ、流石に説明文よりnoteを参照した方が効率が良さそうなことは察しがつきます。

前提条件を書くのを忘れていたのですが、YEP_SkillCoreと同様にYEP_ItemCoreも使っておりまして、
武器と防具は全て独立アイテムの扱いになっています。

そして、なぜかそれらの独立アイテムはオリジナルと異なりメモ欄がまっさらの状態という仕様だったので、
noteではなくdescriptionの方を参照していたというわけです。

が、これはYEP_ItemCoreのデフォルトの仕様で、いじればnoteも無事コピーされるようになっていたので
解決いたしました。

しぐれん様のプラグインも、.jsを導入し<Custom requirement>にvalue = user.equipedFightWeapon();を
記述すると理想的な結果となりました!

改めて、本当にありがとうございましたm(_ _)m 大変良い勉強になりました。

“MV:質問” へ戻る