ページ 11

【解決済】アイテム消費武器&投擲武器

Posted: 2017年2月05日(日) 21:44
by 安曇野
初めて質問させていただきます。

件名の通り、アイテムを消費して使用する武器と、武器自体を投げて使用する武器(投げナイフなど)を
作りたいと思いましたが、それらしいプラグインもなかったので素人なりにスクリプトを書いてみました。

しかし、思うように動かないのが現状です。
スクリプトは以下の通りです。

------------------------ここから------------------------

(function() {

Game_Action.prototype.makeDamageValue = function(target, critical) {
var item = this.item();
var baseValue = this.evalDamageFormula(target);
var value = baseValue * this.calcElementRate(target);
if (this.isPhysical()) {
value *= target.pdr;
}
if (this.isMagical()) {
value *= target.mdr;
}
if (baseValue < 0) {
value *= target.rec;
}
if (critical) {
value = this.applyCritical(value);
}
value = this.applyVariance(value, item.damage.variance);
value = this.applyGuard(value, target);
value /= this.checkUseWeapon(target); //必要なアイテムが無い場合は攻撃力ダウン
value = Math.round(value);
return value;
};

Game_Action.prototype.checkUseWeapon = function(target) {
var weapon = target._equips[0]._itemId;
if (weapon.meta.use_item) {
if ($dataItems[weapon.meta.use_item] >= 1) {
$gameParty.loseItem($dataItems[weapon.meta.use_item], 1);
return 1;
} else {
return 4;
}
} else if (weapon.meta.use_weapon) {
$gameParty.loseItem($dataWeapons[weapon], 1, true);
return 1;
}
return 1;
};

})();

------------------------ここまで------------------------

補足ですが、武器のメモ欄に<use_item:1>として、アイテムの番号を指定します。
投擲武器の場合は<use_weapon>としています。

また、テストプレイにてアクターが攻撃しようとすると「Cannot read property '0' of undefined」と表示され、
エネミーが攻撃しようとすると「Cannot read property 'use_item' of undefined」と表示されます。
後者についてはアクターかエネミーかを判別して条件分岐すれば回避できそうな気もしますが……。

javascriptの知識も乏しく、限界を感じましたので、皆様のお力添えをいただきたいと思います。
どうぞよろしくお願いいたします。

Re: アイテム消費武器&投擲武器

Posted: 2017年2月05日(日) 21:46
by 安曇野
追記

書き忘れておりました。
テストプレイに関しては投擲武器を試してそこでつまづいてしまいましたので、
アイテム消費武器についてはチェックしておりません。

よろしくお願いします。

Re: アイテム消費武器&投擲武器

Posted: 2017年2月05日(日) 22:27
by まっつUP
安曇野様
お世話になります。

エラーが出るのはエネミーに装備が設定されていないからです。

Re: アイテム消費武器&投擲武器

Posted: 2017年2月06日(月) 02:51
by ぶちょー
こんばんは。

おそらく2つとも、「武器ごとに通常攻撃のIDを指定するプラグイン」と「アイテムを消費するスキルのプラグイン」で可能だと思います。

前者は特典のプラグインに WeaponSkill.js というのがあります。
後者は「ひきも記は閉鎖しました。」様(http://hikimoki.sakura.ne.jp/index.html)にスキルコスト拡張というプラグインがあるので、そちらを利用されると良いと思います。

Re: アイテム消費武器&投擲武器

Posted: 2017年2月06日(月) 23:52
by 安曇野
◆まっつUP様◆

早速の返信ありがとうございます。
コードの書き直しをしてみました。

コード: 全て選択

Game_Action.prototype.checkUseWeapon = function(target) {
	if (target.isActor()) {
		var weapon = target._equips[0];
		if (weapon.meta.use_item) {
			if ($dataItems[weapon.meta.use_item] >= 1) {
				$gameParty.loseItem($dataItems[weapon.meta.use_item], 1);
				return 1;
			} else {
				return 4;
			}
		} else if (weapon.meta.use_weapon) {
			$gameParty.loseItem($dataWeapons[weapon.item_Id], 1, true);
			return 1;
		}
	}	
	return 1;
};
また、以前は

コード: 全て選択

var weapon = target._equips[0]._itemId;
となっていましたが、これでは以降がおかしくなってしまうので修正しました。
ただ、これではエラーが出てうまく動きませんでした。
アクターかエネミーかを判別する方法は調べてもなかなか見つからず、おそらくこれだろうというところです。


◆ぶちょー様◆

プラグインの紹介ありがとうございます。
たしかに、教えてくださったプラグインでいけそうですね。

勉強がてら自分で作ってみたいので、紹介されたプラグインのスクリプトを参考にしてみようかと思います。

Re: アイテム消費武器&投擲武器

Posted: 2017年2月07日(火) 20:30
by ぶちょー
>>安曇野様
ご自身での制作の件、了解したしました。

答えを言うだけなのは簡単ですが、勉強されているということですので、
お節介ながら、いくつか助言をさせてください。

……書いてから、本当にお節介かもと思い、添付ファイルにまとめました。
不要であれば見なくても大丈夫です。

adivice.txt に助言が書いてあります。答えは書いてありません。
useItemOrWeapon.txt は私なりに書いたスクリプトです。

Re: アイテム消費武器&投擲武器

Posted: 2017年2月08日(水) 00:28
by 安曇野
ぶちょー様

アドバイスとスクリプトありがとうございます!
お節介だなど、とんでもございません。
さっそくアドバイスの方を読ませていただきました。これを参考に直していってみようと思います。
書いていただいたスクリプトは自分で完成させた暁に、もしくはどうしても行き詰った際に開こうかと思います。

私のために時間を割いていただき、ありがとうございました。

Re: アイテム消費武器&投擲武器

Posted: 2017年2月11日(土) 00:05
by ぶちょー
あ、良かったです。

私もJavascriptは勉強中でして、何かの足しになれば幸いです。