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

Project1

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

[已经解决] 怎么做一件装备具有反射伤害?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
70
在线时间
187 小时
注册时间
2006-9-3
帖子
175
跳转到指定楼层
1
发表于 2012-3-24 13:40:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
例如盾带有反射30%的伤害,衣服带20%这样,可以叠加的。(自身还是受到100%的伤害)


‘‘──he11120于2012-3-24 16:00补充以下内容

没人回我啊。。
’’
...........

Lv3.寻梦者

梦石
0
星屑
2768
在线时间
1604 小时
注册时间
2010-10-22
帖子
1058
2
发表于 2012-3-24 20:46:23 | 只看该作者
本帖最后由 kangxi0109 于 2012-3-25 16:32 编辑

可以在Game_Battler 3里面修改:
1.反射普通伤害的部分(attacker指攻击者,self指目标):

  1.       # 第二命中判定
  2.       eva = 8 * self.agi / attacker.dex + self.eva
  3.       hit = self.damage < 0 ? 100 : 100 - eva
  4.       hit = self.cant_evade? ? 100 : hit
  5.       hit_result = (rand(100) < hit)
  6.     end
  7.     # 命中的情况下
  8.     if hit_result == true
  9.       # 状态冲击解除
  10.       remove_states_shock
  11.       # HP 的伤害计算
  12. #===========================以下为修改的脚本
  13.    if attacker.is_a?(Game_Enemy)#攻击方为敌方的场合
  14.     if self.weapon_id == 1#装备的武器编号为1的场合
  15.       attacker.hp -= self.damage / 10 #反射10%伤害
  16.       self.damage  -= self.damage / 10 #减免10%伤害
  17.      end
  18.     if self.armor1_id == 1#装备的盾牌编号为1的场合
  19.       attacker.hp -= self.damage / 10 #反射10%伤害
  20.       self.damage  -= self.damage / 10 #减免10%伤害
  21.      end
  22.     if self.armor2_id == 2#装备的身体防具编号为2的场合
  23.       attacker.hp -= self.damage / 10 #反射10%伤害
  24.       self.damage  -= self.damage / 10 #减免10%伤害
  25.      end
  26.     if self.armor3_id == 3#装备的头部防具编号为3的场合
  27.       attacker.hp -= self.damage / 10 #反射10%伤害
  28.       self.damage  -= self.damage / 10 #减免10%伤害
  29.      end
  30.     if self.armor4_id == 4#装备的装饰品编号为4的场合
  31.       attacker.hp -= self.damage / 10 #反射10%伤害
  32.       self.damage  -= self.damage / 10 #减免10%伤害
  33.      end
  34.     end   
  35. #===========================以上为修改的脚本
  36.     self.hp -= self.damage
复制代码
2.技能反射部分(user指技能使用者,self指目标):


  1.     # 命中的情况下
  2.     if hit_result == true
  3.       # 威力 0 以外的物理攻击的情况下
  4.       if skill.power != 0 and skill.atk_f > 0
  5.         # 状态冲击解除
  6.         remove_states_shock
  7.         # 设置有效标志
  8.         effective = true
  9.       end
  10.       # HP 的伤害减法运算
  11.       last_hp = self.hp
  12.       #===========================以下为修改的脚本
  13.    if user.is_a?(Game_Enemy)#攻击方为敌方的场合
  14.     if self.weapon_id == 1#装备的武器编号为1的场合
  15.       user.hp -= self.damage / 10 #反射10%伤害
  16.       self.damage  -= self.damage / 10 #减免10%伤害
  17.      end
  18.     if self.armor1_id == 1#装备的盾牌编号为1的场合
  19.       user.hp -= self.damage / 10 #反射10%伤害
  20.       self.damage  -= self.damage / 10 #减免10%伤害
  21.      end
  22.     if self.armor2_id == 2#装备的身体防具编号为2的场合
  23.       user.hp -= self.damage / 10 #反射10%伤害
  24.       self.damage  -= self.damage / 10 #减免10%伤害
  25.      end
  26.     if self.armor3_id == 3#装备的头部防具编号为3的场合
  27.       user.hp -= self.damage / 10 #反射10%伤害
  28.       self.damage  -= self.damage / 10 #减免10%伤害
  29.      end
  30.     if self.armor4_id == 4#装备的装饰品编号为4的场合
  31.       user.hp -= self.damage / 10 #反射10%伤害
  32.       self.damage  -= self.damage / 10 #减免10%伤害
  33.      end
  34.     end   
  35. #===========================以上为修改的脚本
  36.     self.hp -= self.damage
复制代码
注意:这些脚本都是现打的,你试试看有没有效果。里面的装备编号、伤害减免率可以自己改,两段脚本可以分开使用。
self.damage就是伤害值,另外,删除
  1. self.damage  -= self.damage / 10 #减免10%伤害
复制代码
可以只反射伤害但不减免被攻击者的伤害。
还有,这里的伤害减免都是叠加的,如果希望不叠加,将除第一、二个if以外的所有if换为elsif,并且去除倒数第三到第六个end即可。


‘‘──kangxi0109于2012-3-25 16:30补充以下内容

反射伤害在目标受到伤害之前,能不能调到之后?

你注意到没有,增加的脚本都是在
  1. self.hp -= self.damage
复制代码
之前的?这段脚本就是目标伤害的脚本了,你可以掉个顺序试试...
当然,要把

  1. self.damage  -= self.damage / 10 #减免10%伤害
复制代码
这段去掉,因为这段脚本在目标伤害后面就无效了。
我想反射伤害统一计算的(10%+10%+10%),而不是先减去10%,再减去90%的10%

首先在我的脚本前面加一段变量定义:
  1. m = 0
复制代码
然后将以下这些段

  1.       attacker.hp -= self.damage / 10 #反射10%伤害
  2.     self.damage  -= self.damage / 10 #减免10%伤害
复制代码

  1.       user.hp -= self.damage / 10 #反射10%伤害
  2.     self.damage  -= self.damage / 10 #减免10%伤害
复制代码
换为
  1. m += 1
复制代码
再在我的脚本后面分别加上:

  1.       attacker.hp -= self.damage / 10 *m#反射m*10%伤害
  2.     self.damage  -= self.damage / 10  *m#减免m*10%伤害
复制代码

  1.       user.hp -= self.damage / 10 *m#反射m*10%伤害
  2.     self.damage  -= self.damage / 10  *m#减免m*10%伤害
复制代码


‘‘──kangxi0109于2012-3-25 16:36补充以下内容
能不能加个反弹伤害显示?(不要与其它伤害美化脚本有冲突的)。  

这个嘛,还在研究中,因为我做的那些诸如吸血之类技能现在都没能显示吸收的血量,还在纠结呢...
’’

点评

顺便换了也没用额,还是一样,还有把减伤放在受伤之前,反射放在受伤之后,这样就对了。  发表于 2012-3-25 19:35
变量随便设个都可以对不?例如(a,b,c,fdsd,)如果其它脚本有相同变量,会不会出错?  发表于 2012-3-25 18:40
还有捏,我想反射伤害统一计算的(10%+10%+10%),而不是先减去10%,再减去90%的10%。  发表于 2012-3-25 16:02
还有,反射伤害在目标受到伤害之前,能不能调到之后?麻烦了、、、  发表于 2012-3-25 01:49
嗯,谢谢,能不能加个反弹伤害显示?(不要与其它伤害美化脚本有冲突的)。  发表于 2012-3-25 01:34
【2022.06.03】原本以为已经不可能再找回来的东西重新找回来了,原本一直念念不忘的坑终于再一次拿起铲子了。一别竟近10年,你好,我的世界我的梦。
【不可阻挡】异元-地劫黎明
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-23 11:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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