查看: 1710|回复: 2

[已经解决] 如何修改伤害的计算方式

[复制链接]
梦石
0
星屑
60
在线时间
56 小时
注册时间
2012-12-23
回帖
58
发表于 2014-5-15 16:34:30 | 显示全部楼层 |阅读模式

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

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

×
怎么通过脚本修改伤害的计算方式
原来的那种VX的计算方式太过于复杂了
梦石
0
星屑
15075
在线时间
1581 小时
注册时间
2012-7-24
回帖
1246
发表于 2014-5-15 19:28:18 | 显示全部楼层
脚本里面关于战斗部分的脚本时可以修改的,但是VX的不太清楚,我是纯正的XP党

欢迎大家加我
回复

使用道具 举报

无节操

梦石
0
星屑
608
在线时间
795 小时
注册时间
2009-2-6
回帖
3910

开拓者贵宾

发表于 2014-5-15 23:08:06 | 显示全部楼层
在原脚本中,伤害值的计算是由Game_Battler中的两个方法作为核心的,这两个方法的名字分别是make_attack_damage_value和make_obj_damage_value,位于Game_Battler的第627行。
[pre lang="ruby" line="1"]  #--------------------------------------------------------------------------
  # ● 计算普通攻击伤害
  #     attacker : 攻击者
  #    计算结果赋值入 @hp_damage
  #--------------------------------------------------------------------------
  def make_attack_damage_value(attacker)
    damage = attacker.atk * 4 - self.def * 2        # 基础计算
    damage = 0 if damage < 0                        # 设负数伤害为 0
    damage *= elements_max_rate(attacker.element_set)   # 属性校正
    damage /= 100
    if damage == 0                                  # 若伤害为 0
      damage = rand(2)                              # 一半机率伤害为1
    elsif damage > 0                                # 若伤害为正数
      @critical = (rand(100) < attacker.cri)        # 会心一击判断
      @critical = false if prevent_critical         # 防止会心一击判断
      damage *= 3 if @critical                      # 会心一击校正
    end
    damage = apply_variance(damage, 20)             # 分散度
    damage = apply_guard(damage)                    # 防御校正
    @hp_damage = damage                             # 体力伤害
  end
  #--------------------------------------------------------------------------
  # ● 计算技能/物品伤害
  #     user : 技能或物品的使用者
  #     obj  : 使用的技能或物品
  #    计算结果赋值入 @hp_damage
  #--------------------------------------------------------------------------
  def make_obj_damage_value(user, obj)
    damage = obj.base_damage                        # 基础计算
    if damage > 0                                   # 若伤害为正
      damage += user.atk * 4 * obj.atk_f / 100      # 使用者攻击力关系度
      damage += user.spi * 2 * obj.spi_f / 100      # 使用者精神力关系度
      unless obj.ignore_defense                     # 除非无视防御力
        damage -= self.def * 2 * obj.atk_f / 100    # 目标攻击力关系度
        damage -= self.spi * 1 * obj.spi_f / 100    # 目标精神力关系度
      end
      damage = 0 if damage < 0                      # 设负数伤害为0
    elsif damage < 0                                # 若伤害为负
      damage -= user.atk * 4 * obj.atk_f / 100      # 使用者攻击力关系度
      damage -= user.spi * 2 * obj.spi_f / 100      # 使用者精神力关系度
    end
    damage *= elements_max_rate(obj.element_set)    # 属性校正
    damage /= 100
    damage = apply_variance(damage, obj.variance)   # 分散度
    damage = apply_guard(damage)                    # 防御校正
    if obj.damage_to_mp  
      @mp_damage = damage                           # 伤害魔力
    else
      @hp_damage = damage                           # 伤害体力
    end
  end
[/pre]
在这两个方法中,都是以damage作为关键的载体,鉴于默认脚本在这段几乎每行都有注释,我想你可以先试着自己改。记得在新页面改别玩脱了~

评分

参与人数 1星屑 +100 收起 理由
丿梁丶小柒 + 100 我很赞同

查看全部评分

Brandnew day, Brandnew Life
                             规 实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部