设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3392|回复: 14
打印 上一主题 下一主题

[已经过期] 如何让最低伤害设置为1而不是0?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
112 小时
注册时间
2008-12-9
帖子
166
跳转到指定楼层
1
发表于 2017-5-29 16:38:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
如果敌人比我们弱到一定程度后,打我们都是0血,这让人看着好不顺眼啊。
判定为闪避也行啊!我感觉伤害为1更好,可是不知道去哪里改!或者有什
么方法可以实现?求大佬们!

Lv1.梦旅人

梦石
0
星屑
50
在线时间
23 小时
注册时间
2016-7-23
帖子
35
2
发表于 2017-5-29 20:36:11 | 只看该作者
好像不行,伤害公式里面都要用a.atk-b.def,没法加
if(a.atk<b.def)
{dam=1;}
得改源码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
112 小时
注册时间
2008-12-9
帖子
166
3
 楼主| 发表于 2017-5-30 16:27:36 | 只看该作者
LostLeader 发表于 2017-5-29 20:36
好像不行,伤害公式里面都要用a.atk-b.def,没法加
if(a.atk

源码我们没办法改吗

点评

跪拜楼下大佬O(∩_∩)O,我只会java,js很菜  发表于 2017-5-30 17:21
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1409
在线时间
962 小时
注册时间
2012-4-30
帖子
1475

开拓者

4
发表于 2017-5-30 16:56:14 | 只看该作者
本帖最后由 铅笔描绘的思念 于 2017-5-31 14:16 编辑

JAVASCRIPT 代码复制
  1. Game_Action.prototype.makeDamageValue = function(target, critical) {
  2.     var item = this.item();
  3.     var baseValue = this.evalDamageFormula(target);
  4.     var value = baseValue * this.calcElementRate(target);
  5.     if (this.isPhysical()) {
  6.         value *= target.pdr;
  7.     }
  8.     if (this.isMagical()) {
  9.         value *= target.mdr;
  10.     }
  11.     if (baseValue < 0) {
  12.         value *= target.rec;
  13.     }
  14.     if (critical) {
  15.         value = this.applyCritical(value);
  16.     }
  17.     value = this.applyVariance(value, item.damage.variance);
  18.     value = this.applyGuard(value, target);
  19.     value = Math.round(value);
  20.     return value > 0? value:1;
  21. };
获取伤害的地方小改下就好


没考虑到恢复技能也是调用这玩意的
JAVASCRIPT 代码复制
  1. return value > 0? value:1;
改成
JAVASCRIPT 代码复制
  1. return value == 0? value:1;
这样应该就好了 不过建议参考楼下修改公式的 以免添加其他插件出问题 我也是第一次知道公式里也可以加方法
回复 支持 0 反对 1

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
112 小时
注册时间
2008-12-9
帖子
166
5
 楼主| 发表于 2017-5-30 17:46:10 | 只看该作者
本帖最后由 007dd007 于 2017-5-30 17:56 编辑
铅笔描绘的思念 发表于 2017-5-30 16:56
Game_Action.prototype.makeDamageValue = function(target, critical) {
    var item = this.item();
    ...


弄好了,非常感谢你!大神!!!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
112
在线时间
376 小时
注册时间
2015-1-26
帖子
203
6
发表于 2017-5-30 18:32:06 | 只看该作者
最简单粗暴的办法是所有伤害公式里直接+1
比如【a.atk * 4 - b.def *2】改成【a.atk * 4 - b.def *2 +1】

另外YEP插件也支持设置最小伤害值

点评

哦对对,加减法公式用这招是不管用的。  发表于 2017-5-30 20:31
这个方法我之前试过,没效果呀!我的伤害公式是a.atk/2-b.def/4 改成a.atk/2-b.def/4+1 伤害最小依旧是0 括号什么的加了也没用啊  发表于 2017-5-30 18:43
回复 支持 0 反对 1

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
216
在线时间
154 小时
注册时间
2017-2-27
帖子
167

开拓者

7
发表于 2017-5-31 12:43:57 | 只看该作者
伤害公式
Math.max(a.atk-b.def,1)

点评

公式还能这么写啊,实测有用!谢谢大神!  发表于 2017-5-31 14:12

评分

参与人数 1星屑 +30 收起 理由
铅笔描绘的思念 + 30 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2017-1-18
帖子
11
8
发表于 2017-5-31 13:52:59 | 只看该作者
铅笔描绘的思念 发表于 2017-5-30 16:56
Game_Action.prototype.makeDamageValue = function(target, critical) {
    var item = this.item();
    ...

你这有问题。恢复技能就不能用了,直接向上取整就行了。

点评

嗯。。是没想到恢复的伤害是负的。。改改  发表于 2017-5-31 14:11
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
25 小时
注册时间
2017-3-27
帖子
10
9
发表于 2017-6-3 11:01:29 | 只看该作者
本帖最后由 TTIAN 于 2017-6-3 11:10 编辑
Ajucaqiu 发表于 2017-5-31 12:43
伤害公式
Math.max(a.atk-b.def,1)


这个公式只是修改了伤害计算中的basevalue,伤害计算时还会在basevalue的基础上参考属性系数、类型增伤、数值浮动、暴击、防御来确定最后的数值,而且在最后的最后还会经历一次四舍五入。所以这个方法并不能确保最后得出的伤害最小值必定为1。

value = this.applyVariance(value, item.damage.variance);
value = this.applyGuard(value, target);
value = value > 0 ? Math.max(value, 1) : value;
value = Math.round(value);

4楼的方法是比较稳妥的,但逻辑不太严谨,把这行红色代码加进去应该就可以了。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
216
在线时间
154 小时
注册时间
2017-2-27
帖子
167

开拓者

10
发表于 2017-6-3 16:21:28 | 只看该作者
TTIAN 发表于 2017-6-3 11:01
这个公式只是修改了伤害计算中的basevalue,伤害计算时还会在basevalue的基础上参考属性系数、类型增伤、 ...

if (a.atk>b.def){a.atk-b.def;}else{b.gainHp(-1);b.startDamagePopup();0}
不过我觉得根据楼主的要求,Math.max()就够用了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-28 21:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表