【解決済み】四捨五入される前の攻撃力を計算式に使用したいです

ぼた餅
記事: 187
登録日時: 2016年7月17日(日) 20:22

【解決済み】四捨五入される前の攻撃力を計算式に使用したいです

投稿記事by ぼた餅 » 2018年2月17日(土) 12:22

こんにちは。
連続でのトピック立てご容赦ください。


装備の特徴等によって攻撃力が「10.5」などと小数になった場合、
四捨五入されて「11」となりますが、
スキルの計算式で「11」ではなく「10.5」の数値を使う方法はないでしょうか?

たとえば計算式が「a.atk * 10」だと、「110」と「105」ではダメージが大きく異なってしまいます。
最後に編集したユーザー ぼた餅 on 2018年2月18日(日) 11:03 [ 編集 1 回目 ]

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

Re: 四捨五入される前の攻撃力を計算式に使用したいです

投稿記事by しぐれん » 2018年2月17日(土) 12:58

やや上級者向けですが、以下の部分を改造すれば四捨五入を無効化できます。

コード: 全て選択

Game_BattlerBase.prototype.param = function(paramId) {
    var value = this.paramBase(paramId) + this.paramPlus(paramId);
    value *= this.paramRate(paramId) * this.paramBuffRate(paramId);
    var maxValue = this.paramMax(paramId);
    var minValue = this.paramMin(paramId);
    return (value.clamp(minValue, maxValue));
//    return Math.round(value.clamp(minValue, maxValue));
};

表示に少数点が紛れ込んでくるのでそのあたりも要修正です。
(調整項目が多いので触れない)
現在、プラグイン依頼はお休み中です。
ぼた餅
記事: 187
登録日時: 2016年7月17日(日) 20:22

Re: 四捨五入される前の攻撃力を計算式に使用したいです

投稿記事by ぼた餅 » 2018年2月17日(土) 14:04

しぐれんさん

ありがとうございます、四捨五入の無効化を確認いたしました!
ですが、おっしゃる通り表示される桁数がとんでもないことになりますね…


本トピックは募集を継続させていただきます。
理想は装備画面で小数が表示されないことですが、小数点第一位までなら見た目もおかしくなさそうなので、
小数点第二位以下を四捨五入(10.5666→10.6)するような方法でも問題ありません。

(リクエストのほうにトピックを立て直すべきかもですが…あまり乱立するのもどうかと思うのでこちらで続けさせていただきます)
アバター
しぐれん
記事: 972
登録日時: 2017年3月28日(火) 22:22
連絡を取る:

Re: 四捨五入される前の攻撃力を計算式に使用したいです

投稿記事by しぐれん » 2018年2月18日(日) 00:21

他の方法として、「 四捨五入される前の攻撃力を取得」などの関数を作り、ダメージ式では常にそれを使うという方法があります。
その場合ダメージ式は「a.atkXXX()」などとなるでしょう。
(XXXは名前が思い浮かばないので適当に付けたものであり、より適したものがあると思います)

コード: 全て選択

Game_BattlerBase.prototype.paramNotRound = function(paramId) {
    var value = this.paramBase(paramId) + this.paramPlus(paramId);
    value *= this.paramRate(paramId) * this.paramBuffRate(paramId);
    var maxValue = this.paramMax(paramId);
    var minValue = this.paramMin(paramId);
    return (value.clamp(minValue, maxValue));
//    return Math.round(value.clamp(minValue, maxValue));
Game_BattlerBase.prototype.atkXXX=function(){
     return this.paramNotRound(2);
}


こんな感じですね。
現在、プラグイン依頼はお休み中です。
ぼた餅
記事: 187
登録日時: 2016年7月17日(日) 20:22

Re: 四捨五入される前の攻撃力を計算式に使用したいです

投稿記事by ぼた餅 » 2018年2月18日(日) 00:48

しぐれんさん

一度目ではなく新たに提示していただいたコードをjsファイルにして入れるってことですよね?
ダメージ計算式にて「a.atkXXX() * 10」としてみたところ相手にダメージが与えられませんでした。
おそらく私の記述がおかしいのだと思いますが、いったいどのように書けばいいのか教えていただけないでしょうか?
アバター
しぐれん
記事: 972
登録日時: 2017年3月28日(火) 22:22
連絡を取る:

Re: 四捨五入される前の攻撃力を計算式に使用したいです

投稿記事by しぐれん » 2018年2月18日(日) 01:52

すみません、寝ぼけて書き間違えてました。
正しくはこうです。

コード: 全て選択

Game_BattlerBase.prototype.paramNotRound = function(paramId) {
    var value = this.paramBase(paramId) + this.paramPlus(paramId);
    value *= this.paramRate(paramId) * this.paramBuffRate(paramId);
    var maxValue = this.paramMax(paramId);
    var minValue = this.paramMin(paramId);
    return (value.clamp(minValue, maxValue));
//    return Math.round(value.clamp(minValue, maxValue));
};
Game_BattlerBase.prototype.atkXXX=function(){
     return this.paramNotRound(2);
};

{}を正しい位置に入れるのを忘れてました。
現在、プラグイン依頼はお休み中です。
ぼた餅
記事: 187
登録日時: 2016年7月17日(日) 20:22

Re: 四捨五入される前の攻撃力を計算式に使用したいです

投稿記事by ぼた餅 » 2018年2月18日(日) 11:02

しぐれんさん

ありがとうございます!
完璧に私の希望する挙動を取っています!
ずっと頭を抱えていたことなので、解決できてとてもうれしいです。
感謝申し上げます^^

“MV:質問” へ戻る