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

ネコニャーン
記事: 3
登録日時: 2016年11月13日(日) 16:50

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

投稿記事by ネコニャーン » 2016年11月13日(日) 16:59

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

奏ねこま
記事: 320
登録日時: 2016年1月20日(水) 20:04

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

投稿記事by 奏ねこま » 2016年11月13日(日) 18:17

勝手に手直ししてアップする気はないので、ツッコミだけ。

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

あと、計算式内ではaがthis.subject()と同じ意味で、bがtargetと同じ意味です。
なので、計算式に記述するときはthis.TypeAccordBunus(a, b)でOKです。
アバター
Trb
記事: 149
登録日時: 2015年11月15日(日) 19:26
連絡を取る:

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

投稿記事by Trb » 2016年11月13日(日) 18:22

こんにちは。プラグイン見てみました。

まずはじめに、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()を使うことになります。


とりあえず最低限ここまでで動くようにはなると思います。
ネコニャーン
記事: 3
登録日時: 2016年11月13日(日) 16:50

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

投稿記事by ネコニャーン » 2016年11月13日(日) 18:29

ご返信ありがとうございます。
言われたとおりに修正してみたところ、ちゃんと動作するようになりました。
本当にありがとうございます。
約束通りauthernameを任意の文字列に変更する権利を差し上げたいと思いますがいかがいたしましょうか?
アバター
Trb
記事: 149
登録日時: 2015年11月15日(日) 19:26
連絡を取る:

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

投稿記事by Trb » 2016年11月13日(日) 19:03

うまく出来たようで良かったです。
自分はただアドバイスをしただけなので結構です。
ネコニャーン
記事: 3
登録日時: 2016年11月13日(日) 16:50

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

投稿記事by ネコニャーン » 2016年11月13日(日) 19:08

とりあえず完成品をアップしておきます。
TypeAccordBonus.js
(913 バイト) ダウンロード数: 18 回

“MV:質問” へ戻る