ページ 11

(解決済)クリティカルダメージの変更について

Posted: 2016年6月12日(日) 16:19
by SS327
攻撃スキルのメモ欄にタグをいれて
タグの内容によってクリティカル時のダメージ計算を変更するプラグインをつくろうとしています
クリティカルダメージの変更方法はわかったのですが
つかったスキルのタグの内容を取得する方法がわかりません
他の人がつくったプラグインの中身をみてパク… オマージュしようかと思ったんですがうまくいきません
ReferenceErrorとかでます おのれ…!

うまいやりかたをご教授願えませんでしょうか
もしくはそれを実現できるプラグインとかありませんか 探したんですけど見当たらなくて…

あと攻撃を回避したときにノーダメージじゃなくて本来受けるダメージの半分を受けるというプラグインも作りたいのですが
これも実現できそうなのがないか情報がほしいです

よろしくおねがいします

Re: クリティカルダメージの変更について

Posted: 2016年6月12日(日) 18:49
by Trb
使ったスキルのスキルIDまでは取得できていますか?
スキルIDが分かるなら、メモ欄の取得は$dataSkills[スキルID].note または meta で出来ます。
note と meta の違いは、たとえばメモ欄に
< a : 10 >
< b : 20 >
という風に書かれていた場合、noteは書かれているものをそのまま丸ごと取得します。
meta の方は自動的に< >で分割した形に変換されているので
$dataSkills[スキルID].meta.a や $dataSkills[スキルID].meta.b というように取得できます。

metaの方が扱いが簡単ですが、noteの方が自由に使えるので使い方次第で複雑なことができると思います。

Re: クリティカルダメージの変更について

Posted: 2016年6月12日(日) 21:07
by SS327
>Trbさん
返信ありがとうございます
早速試してみたのですが、どうやらできないみたいです

そもそも取得したスキルIDがいくつになってるのか見ようと思ってスキルIDの数値がそのままクリティカルのダメージになるようにして動かしても同じようにReferenceErrorとでました
どうやらタグの数値以前にスキルIDの取得が最初からできてないみたいでした
使ったスキルIDの取得の部分は他の人が作ったプラグインからパク…リスペクトした部分なので問題ないかと思っていたのですが…

Re: クリティカルダメージの変更について

Posted: 2016年6月12日(日) 22:29
by Trb
うーん・・・、リファレンスエラーというのは参照した変数が存在していない時に出るエラーのようなので、もしかしたら参考にしてるプラグインでは独自の方式でスキルのデータを扱ってるのかもしれませんね。

今どういう風にやっているのか書いて頂けたら分かるかもしれません。

Re: クリティカルダメージの変更について

Posted: 2016年6月12日(日) 23:15
by SS327
>trbさん

yanaさんが作ったクリティカル計算式変更のプラグインと
神無月サスケさんが作った武器ごとに通常攻撃のスキルIDを変更するプラグインからパク…インスパイアして書いてるものなので掲示板とかで公開していいものかどうなのかですが
ダウンロードすれば誰でも見れる部分だしきっと大丈夫ってことで…!

コード: 全て選択


(function(){
	var parameters = PluginManager.parameters('Critical_l');
	var crdm1 = String(parameters['Crdm1'] || 'd * 8');
	
/*	var skill = this.skill()[0]; 
 	var t_id = skill.meta.s_type_id;
    にんじん ゴールデンカレー ほんだし 銀のスプーンのおおきいやつ
	*/
	

/*ここから*/



  Game_Actor.prototype.attackSkillId = function() {
    
    var normalId = Game_BattlerBase.prototype.attackSkillId.call(this);
    if(this.hasNoWeapons()){
      return normalId;
    }
    var skills = this.skills()[0];
    var id = skills.meta.s_type_id;
    return id ? Number(id) : normalId;
  };


var t_id = $dataSkills[id].s_type_id;





/*ここまで*/


	
	var __GAction_makeDamageValue = Game_Action.prototype.makeDamageValue;
	Game_Action.prototype.makeDamageValue = function(target, critical) {
		this._currentTarget = target;
		return __GAction_makeDamageValue.call(this,target,critical);
	};
	
	Game_Action.prototype.applyCritical = function(damage) {
		var a = this.subject();
		var b = this._currentTarget;
		var v = $gameVariables._data;
		var d = t_id
		/*var d = damage;*/
		
		if(t_id == 20){
			d = 29999;
		}
    	return eval(crdm1);
	};
}());

こんなノリでやってます

テストで使うスキルのメモに<s_type_id:20>と書いて取得できてればめっちゃダメージ増える的な処理のつもりです

スキルID取得の部分はパク…引用元からのなごりで武器をもってるかもってないか的な意味がありそうなif文がはいってますが
どうせ武器はずせないようにしてるしほっといていいか!変に触ってわけわかんなくなると困るし!と思ってそのままになってます

PHPとかsqlとかフラッシュのアクションスクリプトとかは触ったことあるんですが
javaスクリプトはよく知らなくて…
面倒をかけますがいい方法教えて下さいませ

Re: クリティカルダメージの変更について

Posted: 2016年6月13日(月) 00:41
by Trb
なるほどなるほど。
結論だけ言ってしまうとこんな感じでいいと思います。

コード: 全て選択

(function(){
   var parameters = PluginManager.parameters('Critical_l');
   var crdm1 = String(parameters['Crdm1'] || 'd * 8');
   
   var __GAction_makeDamageValue = Game_Action.prototype.makeDamageValue;
   Game_Action.prototype.makeDamageValue = function(target, critical) {
      this._currentTarget = target;
      return __GAction_makeDamageValue.call(this,target,critical);
   };
   
   Game_Action.prototype.applyCritical = function(damage) {
      var a = this.subject();
      var b = this._currentTarget;
      var v = $gameVariables._data;
      var t_id = $dataSkills[this.item().id].meta.s_type_id;
      var d = damage;
      
      if(t_id == 20){
         d = 29999;
      }
       return eval(crdm1);
   };
}());
これで t_id に s_type_id の値が取得でき、<s_type_id:20>と書いてあるスキルはクリティカルの時めっちゃでかいダメージになります。

もし詳しい説明が必要でしたら、今日はもう遅いので後日にさせてください;

Re: クリティカルダメージの変更について

Posted: 2016年6月13日(月) 20:47
by SS327
>Trbさん

すいません
よい子は寝る時間なので寝てました

さっそく試してみたらできました!
私の髪の毛の総数より多いであろうめっちゃおおいダメージでました!
ありがとうございます このTrbさんのコードをパク…サンプリングして超大作をつくります

コードの意味はjavaスクリプトの勉強もかねて自分で調べてみます インターネッツで