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
tseyik 发表于 2017-10-28 16:34
https://www6.atwiki.jp/pokotan/pages/3.html
[条件付きシリーズ] :
[条件付き○○ベース ver1.07 >条件脚 ...

谢谢了。
作者: 芯☆淡茹水    时间: 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
数据库里应该不行吧。
找到脚本里计算伤害的地方、
JAVASCRIPT 代码复制
  1. if (result.idear()) {
  2.         if (this.item().damage.type > 0) {
  3.                         //true为暴击
  4.             result.critical = (Math.random() < this.itemCri(target));
  5.                         //伤害值计算
  6.             var value = this.makeDamageValue(target, result.critical);
  7.  
  8.                         //执行伤害
  9.             this.executeDamage(target, value);
  10.         }
  11.         this.item().effects.forEach(function(effect) {
  12.             this.applyItemEffect(target, effect);
  13.         }, this);
  14.         this.applyItemUserEffect(target);
  15.     }
  16.         }


这一段就是数据库里面的技能伤害部分
JAVASCRIPT 代码复制
  1. Game_Action.prototype.evalDamageFormula = function(target) {
  2.     try {
  3.         var item = this.item();
  4.         var a = this.subject();
  5.         var b = target;
  6.                 var a_level = a._level
  7.                 var b_level = b._level
  8.         var v = $gameVariables._data;
  9.         var sign = ([3, 4].contains(item.damage.type) ? -1 : 1);
  10.         var value = Math.max(eval(item.damage.formula), 0) * sign;
  11.                 if (isNaN(value)) value = 0;
  12.                 return value;
  13.     } catch (e) {
  14.         return 0;
  15.     }
  16. };




这个被我修改过一部分了,所以和原版的有点区别

作者: q119498229    时间: 2017-10-29 20:36
yang1zhi 发表于 2017-10-29 19:04
数据库里应该不行吧。
找到脚本里计算伤害的地方、    if (result.idear()) {
        if (this.item().dam ...

完全看不懂
作者: q119498229    时间: 2017-10-29 20:36
芯☆淡茹水 发表于 2017-10-29 17:04
比如技能等级是 level 原算式是:a.atk * 4 - b.def * 2
那么就是:Math.floor((a.atk * 4 - b.def * 2) *( ...

这个好像是物品等级?
作者: yang1zhi    时间: 2017-10-29 21:28
q119498229 发表于 2017-10-29 20:36
完全看不懂

var value = this.makeDamageValue(target, result.critical);
前面的这个value 就是已经得出的伤害值。等号后面的是计算方法。
你想要伤害+15%。那就在下面添加一句
value *= 1.15
要加个判断条件,就用IF
作者: q119498229    时间: 2017-10-29 23:22
yang1zhi 发表于 2017-10-29 21:28
var value = this.makeDamageValue(target, result.critical);
前面的这个value 就是已经得出的伤害值。 ...

快帮我看看我的帖子,求帮助的那个,出错了。 哭死




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1