メモ欄の取得のやり方(装備やステートから同時に取得)

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

メモ欄の取得のやり方(装備やステートから同時に取得)

投稿記事by しぐれん » 2017年3月28日(火) 23:10

トリアコンタンさんのCounterExtend.jsやRuたんさん(鳥小屋.txt)のTorigoya_SkillChangeTo.jsを参考に、ステート・装備・アクターなどのメモ欄からまとめて情報を取得する方法を調べようとしているのが、なかなか理解できません。
単純に取得するのであればactor.noteで取得できるように見えるのですが、CounterExtend.jsではステートでも装備でもどこにメモを書いても動くので、なぜそうなるかが気になっています。
traitObjects()がそれっぽいのですが、よくわからないです。

最終的に以下のようなことをやりたいと思っています。
特定の属性を封印
<SEAL_EX:skill.elementid == 1>
HPダメージスキルを封印
<SEAL_EX:skill.isDamage()>

条件式の判定はTorigoya_SkillChangeTo.jsがメモ欄の式を評価しているので、それの応用でできるように思います。
装備・ステートどれに付けても効果があるようにするには、CounterExtend.jsの方法が応用できると思います。

現在、プラグイン依頼はお休み中です。
アバター
トリアコンタン
記事: 2311
登録日時: 2015年11月10日(火) 21:13
お住まい: きのこ王国
連絡を取る:

Re: メモ欄の取得のやり方(装備やステートから同時に取得)

投稿記事by トリアコンタン » 2017年3月28日(火) 23:39

こんばんは!

「traitObjects」というメソッドは、対象バトラーの保持している特徴を一度に取得するために用意されている仕組みです。
具体的には、以下の要素を持つ配列が取得できます。

アクターの場合:アクター、職業、武器(※1)、防具(※1)、ステート(※2)
敵キャラの場合:敵キャラ、ステート(※2)

※1 装備しているもの全て
※2 有効なステート全て

私が公開しているプラグインの中で「特徴を有するデータベースのメモ欄」と表記しているものは
この仕組みをメモ欄の値を取得するのに流用しています。

コード: 全て選択

var tagValue = null;
this.traitObjects().forEach(function(traitObject) {
    tagValue = traitObject.meta['タグ名'];
});

※投稿当初記述が間違っていたのでnote→metaに修正しました。

上記のコードで、特徴を有するデータベースを全て調べて「タグ名」という記述のあるものの値を取得することができるようになります。(forEachなので、複数存在した場合は、後の値で上書きされるのでそこは注意です)
プラグイン関連のトラブルが発生した際の切り分けと報告の方法です。
http://qiita.com/triacontane/items/2e227e5b5ce9503a2c30

[Blog] : http://triacontane.blogspot.jp/
[Twitter]: https://twitter.com/triacontane/
[GitHub] : https://github.com/triacontane/
アバター
しぐれん
記事: 974
登録日時: 2017年3月28日(火) 22:22
連絡を取る:

Re: メモ欄の取得のやり方(装備やステートから同時に取得)

投稿記事by しぐれん » 2017年3月29日(水) 00:52

トリアコンタンさん、返信ありがとうございます。

返ってくるのが配列と分かったので、noteから情報を取得できました。
metaはタグから情報を取得する方法というのがわかりました。
同時にCounterExtend.jsで比較演算子が&gt,&ltになっている理由もわかりました。

わからないことが別に出てきたら改めて質問します。
現在、プラグイン依頼はお休み中です。

“MV:質問” へ戻る