Project1
标题: 伤害公式分歧 [打印本页]
作者: q119498229 时间: 2017-10-28 15:09
标题: 伤害公式分歧
计算的方法我上网找了挺多,但是有一点。比如我想做个被动技能,第一级技能伤害加10%,第二级伤害15%。这个伤害如何添加到技能伤害里去呢?技能公式里写了一个加成的10%,但是学会了第二级,或者更多级,怎么去改变技能里的伤害公式呢?
作者: tseyik 时间: 2017-10-28 16:34
本帖最后由 tseyik 于 2017-10-28 16:37 编辑
https://www6.atwiki.jp/pokotan/pages/3.html
[条件付きシリーズ] :
[条件付き○○ベース ver1.07 >条件脚本核心
[条件付き追加効果 ver1.04 >
[フェイズスキル特徴 ver1.06 >
以上是你各個問題的答案
其他機能
[条件付きスキル&アイテム変化 ver1.04 >
[条件付きドロップ ver1.04 >
[スキル使用条件 ver1.03 >
[行動決定前及びイベント判定前スイッチオン ver1.01 >
条件の設定方法
○○××
○○=対象
××=基本条件
◇◇=条件設定
○○で設定可能な対象
* 対象
* 味方
* 敵
* 討伐者
* (何もなし)
作者: 擦不完的水 时间: 2017-10-29 09:40
我也想知道技能怎么升级,跟魔力宝贝里面一样技能有等级的
作者: q119498229 时间: 2017-10-29 11:29
谢谢了。
作者: 芯☆淡茹水 时间: 2017-10-29 17:04
本帖最后由 芯☆淡茹水 于 2017-10-29 17:06 编辑
比如技能等级是 level 原算式是:a.atk * 4 - b.def * 2
那么就是:Math.floor((a.atk * 4 - b.def * 2) *((this.item().level - 1) * 5 + 110) / 100);
当然,物品也要加上等级属性,不然会报错。
作者: yang1zhi 时间: 2017-10-29 19:04
数据库里应该不行吧。
找到脚本里计算伤害的地方、if (result.idear()) {
if (this.item().damage.type > 0) {
//true为暴击
result.critical = (Math.random() < this.itemCri(target));
//伤害值计算
var value = this.makeDamageValue(target, result.critical);
//执行伤害
this.executeDamage(target, value);
}
this.item().effects.forEach(function(effect) {
this.applyItemEffect(target, effect);
}, this);
this.applyItemUserEffect(target);
}
}
if (result.idear()) {
if (this.item().damage.type > 0) {
//true为暴击
result.critical = (Math.random() < this.itemCri(target));
//伤害值计算
var value = this.makeDamageValue(target, result.critical);
//执行伤害
this.executeDamage(target, value);
}
this.item().effects.forEach(function(effect) {
this.applyItemEffect(target, effect);
}, this);
this.applyItemUserEffect(target);
}
}
这一段就是数据库里面的技能伤害部分
Game_Action.prototype.evalDamageFormula = function(target) {
try {
var item = this.item();
var a = this.subject();
var b = target;
var a_level = a._level
var b_level = b._level
var v = $gameVariables._data;
var sign = ([3, 4].contains(item.damage.type) ? -1 : 1);
var value = Math.max(eval(item.damage.formula), 0) * sign;
if (isNaN(value)) value = 0;
return value;
} catch (e) {
return 0;
}
};
Game_Action.prototype.evalDamageFormula = function(target) {
try {
var item = this.item();
var a = this.subject();
var b = target;
var a_level = a._level
var b_level = b._level
var v = $gameVariables._data;
var sign = ([3, 4].contains(item.damage.type) ? -1 : 1);
var value = Math.max(eval(item.damage.formula), 0) * sign;
if (isNaN(value)) value = 0;
return value;
} catch (e) {
return 0;
}
};
这个被我修改过一部分了,所以和原版的有点区别
作者: q119498229 时间: 2017-10-29 20:36
完全看不懂
作者: q119498229 时间: 2017-10-29 20:36
这个好像是物品等级?
作者: yang1zhi 时间: 2017-10-29 21:28
var value = this.makeDamageValue(target, result.critical);
前面的这个value 就是已经得出的伤害值。等号后面的是计算方法。
你想要伤害+15%。那就在下面添加一句
value *= 1.15
要加个判断条件,就用IF
作者: q119498229 时间: 2017-10-29 23:22
快帮我看看我的帖子,求帮助的那个,出错了。 哭死
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |