ページ 11

【解決済み】プラグインを作っているのですが初めてなのでうまくいきません。

Posted: 2016年11月13日(日) 16:59
by ネコニャーン
始めまして。
ポケモンのタイプ一致ボーナスのように、使用者に設定した属性IDがスキルの属性IDと一致したときにダメージ量を増やす関数を導入したいと思っています。
そのためにこれまで一度も作ったことのないプラグイン作成に着手したのですが、これがなかなかうまくいきません。スキルのダメージ計算欄に(ダメージ計算) * this.TypeAccordBonus(this.subject(),target)と入れて関数を反映したいのですがダメージが0になってしまいます。
作りかけのプラグインをアップしました。もし問題を解決できる方がいたら勝手に手直ししてそれをアップしてください。どうかお力添えよろしくお願いいたします。
TypeAccordBonus.js
(1.14 KiB) ダウンロード数: 22 回

Re: プラグインを作っているのですが初めてなのでうまくいきません。

Posted: 2016年11月13日(日) 18:17
by 奏ねこま
勝手に手直ししてアップする気はないので、ツッコミだけ。

・TypeAccordBunusは引数を2つ取るようになっているのに、片方しか使っていないのは何故?
・アクターと敵キャラの両方で使うことを想定しているのに、「a.enemy()」となっているのは?

あと、計算式内ではaがthis.subject()と同じ意味で、bがtargetと同じ意味です。
なので、計算式に記述するときはthis.TypeAccordBunus(a, b)でOKです。

Re: プラグインを作っているのですが初めてなのでうまくいきません。

Posted: 2016年11月13日(日) 18:22
by Trb
こんにちは。プラグイン見てみました。

まずはじめに、19行目の

コード: 全て選択

var BonusRate = float(parameters['BonusRate'] || 1.5);

が違っているために、根本的にプラグインの取り込み自体に失敗してしまっています。
JavaScriptにはfloat()という関数は無くて、文字列を小数に変換したい時はparseFloat()と書きます。

なので上の部分は

コード: 全て選択

var BonusRate = parseFloat(parameters['BonusRate'] || 1.5);

にしてください。


それからもう一箇所、22行目の

コード: 全て選択

if((a.enemy().meta.type1 == this.item().damage.elementId)||(a.enemy().meta.type2 == this.item().damage.elementId)){

にも問題があります。
a.enemy()となっていますがenemy()はエネミー(敵キャラ)のデータを取得する関数なので、これだと味方側の攻撃の時にはenemy()が取得できずエラーになってしまいます。
味方側のデータを取得するにはa.actor()と書きますが、これだと今度は敵のデータが取得できないので、攻撃側が敵か味方かを判別してそれによってどちらを使うかを変えないといけません。

なので、色々なやり方がありますが例えば

コード: 全て選択

var subject = a.isActor() ? a.actor() : a.enemy();
if((subject.meta.type1 == this.item().damage.elementId)||(subject.meta.type2 == this.item().damage.elementId)){

こんなふうにするといいです。
a.isActor()というのはaがアクターかどうか判別する関数で、
○○ ? △△ : □□ ; というのは、○○が正しい時は△△、そうでない時は□□を取得するという構文です。
これによってaがアクターの時はa.actor()、そうでない時はa.enemy()を使うことになります。


とりあえず最低限ここまでで動くようにはなると思います。

Re: プラグインを作っているのですが初めてなのでうまくいきません。

Posted: 2016年11月13日(日) 18:29
by ネコニャーン
ご返信ありがとうございます。
言われたとおりに修正してみたところ、ちゃんと動作するようになりました。
本当にありがとうございます。
約束通りauthernameを任意の文字列に変更する権利を差し上げたいと思いますがいかがいたしましょうか?

Re: 【解決済み】プラグインを作っているのですが初めてなのでうまくいきません。

Posted: 2016年11月13日(日) 19:03
by Trb
うまく出来たようで良かったです。
自分はただアドバイスをしただけなので結構です。

Re: 【解決済み】プラグインを作っているのですが初めてなのでうまくいきません。

Posted: 2016年11月13日(日) 19:08
by ネコニャーン
とりあえず完成品をアップしておきます。
TypeAccordBonus.js
(913 バイト) ダウンロード数: 83 回