查看: 2309|回复: 10

[已经解决] 求一份伤害加成类脚本,分别对应命中属性

[复制链接]
梦石
0
星屑
582
在线时间
310 小时
注册时间
2016-2-29
回帖
149
发表于 2016-10-27 15:51:35 | 显示全部楼层 |阅读模式

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

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

×
软件自带的伤害加成是减少自己所受伤害的,我想要一个能提高对应伤害脚本。如:
物理伤害加成x%:物理命中类技能伤害增加x%
魔法伤害加成x%:魔法命中类技能伤害增加x%
必中伤害加成x%:必中命中类技能伤害增加x%

点评

其实。。。默认那个可以填100以上…………不过必中的话…………  发表于 2016-10-27 17:24

梦石
0
星屑
9716
在线时间
2775 小时
注册时间
2008-9-5
回帖
3458

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

发表于 2016-10-27 17:27:42 | 显示全部楼层
本帖最后由 cinderelmini 于 2016-10-27 21:11 编辑

思考之后觉得这个大概不能用乘积的方式,
举个栗子的话:
角色默认物理伤害加成是0,
那么物理命中的伤害应该是:基础值 + 基础值 * 0 = 基础值
也就是没加成,如果这时候他穿了一件有20%的物理伤害加成的装备,
外加附加了一个增加50%物理伤害的状态,
那么就会变成:基础值 + 基础值 * (0.2 + 0.5)

所以得按照这个样子来计算对吧…………

在角色的备注栏填<物理伤害加成 数值>(魔法、必中同理)可以设定角色可以打出的对应伤害的基本加成值,
然后装备和状态也可以填,当角色穿上这些装备、附加了这些状态的话,
它们的伤害加成值会被叠加到角色的对应伤害加成值上。


【三种伤害加成】
  1. class RPG::BaseItem
  2.   #--------------------------------
  3.   # ○ 获取物理命中的伤害加成备注信息(通用)
  4.   #--------------------------------
  5.   def physical_dmg_add
  6.     return (self.note =~ /<物理伤害加成\s?(.*)?>/ ? $1.to_i : 0)
  7.   end
  8.   #--------------------------------
  9.   # ○ 获取魔法命中的伤害加成备注信息(通用)
  10.   #--------------------------------
  11.   def magical_dmg_add
  12.     return (self.note =~ /<魔法伤害加成\s?(.*)?>/ ? $1.to_i : 0)
  13.   end
  14.   #--------------------------------
  15.   # ○ 获取必定命中的伤害加成备注信息(通用)
  16.   #--------------------------------
  17.   def certain_dmg_add
  18.     return (self.note =~ /<必中伤害加成\s?(.*)?>/ ? $1.to_i : 0)
  19.   end
  20. end


  21. class Game_Actor < Game_Battler
  22.   #--------------------------------
  23.   # ○ 获取物理命中的伤害加成值(角色)
  24.   #--------------------------------
  25.   def physical_dmg_add
  26.     rate = actor.physical_dmg_add
  27.     rate += damage_add_plus(:physical)
  28.     return (rate / 100.0)
  29.   end
  30.   #--------------------------------
  31.   # ○ 获取魔法命中的伤害加成值(角色)
  32.   #--------------------------------
  33.   def magical_dmg_add
  34.     rate = actor.magical_dmg_add
  35.     rate += damage_add_plus(:magical)
  36.     return (rate / 100.0)
  37.   end
  38.   #--------------------------------
  39.   # ○ 获取必定命中的伤害加成值(角色)
  40.   #--------------------------------
  41.   def certain_dmg_add
  42.     rate = actor.certain_dmg_add
  43.     rate += damage_add_plus(:certain)
  44.     return (rate / 100.0)
  45.   end
  46.   #--------------------------------
  47.   # ○ 获取状态和装备对各种伤害的加成值
  48.   #--------------------------------
  49.   def damage_add_plus(type)
  50.     plus_items = self.states + self.weapons + self.armors
  51.     case type
  52.     when :physical
  53.       return plus_items.inject(0) {|r, item| r += item.physical_dmg_add}
  54.     when :magical
  55.       return plus_items.inject(0) {|r, item| r += item.magical_dmg_add}
  56.     when :certain
  57.       return plus_items.inject(0) {|r, item| r += item.certain_dmg_add}
  58.     end
  59.   end
  60. end


  61. class Game_Enemy < Game_Battler
  62.   #--------------------------------
  63.   # ○ 获取物理命中的伤害加成值(敌人)
  64.   #--------------------------------
  65.   def physical_dmg_add
  66.     rate = enemy.physical_dmg_add
  67.     rate += self.states.inject(0){|r, s| r += s.physical_dmg_add}
  68.     return (rate / 100.0)
  69.   end
  70.   #--------------------------------
  71.   # ○ 获取魔法命中的伤害加成值(敌人)
  72.   #--------------------------------
  73.   def magical_dmg_add
  74.     rate = enemy.magical_dmg_add
  75.     rate += self.states.inject(0){|r, s| r += s.magical_dmg_add}
  76.     return (rate / 100.0)
  77.   end
  78.   #--------------------------------
  79.   # ○ 获取必定命中的伤害加成值(敌人)
  80.   #--------------------------------
  81.   def certain_dmg_add
  82.     rate = enemy.certain_dmg_add
  83.     rate += self.states.inject(0){|r, s| r += s.certain_dmg_add}
  84.     return (rate / 100.0)
  85.   end
  86. end



  87. class Game_Battler < Game_BattlerBase
  88.   #--------------------------------
  89.   # ○ 计算伤害
  90.   #--------------------------------
  91.   def make_damage_value(user, item)
  92.     value = item.damage.eval(user, self, $game_variables)
  93.     value *= item_element_rate(user, item)
  94.     value *= pdr if item.physical?
  95.     value *= mdr if item.magical?
  96.     value *= rec if item.damage.recover?
  97.     # 各种伤害类型加成计算
  98.     value = applay_add_damage(user, item, value)
  99.     #----------------
  100.     value = apply_critical(value) if @result.critical
  101.     value = apply_variance(value, item.damage.variance)
  102.     value = apply_guard(value)
  103.     @result.make_damage(value.to_i, item)
  104.   end
  105.   #--------------------------------
  106.   # ○ 应用各种伤害加成
  107.   #--------------------------------
  108.   def applay_add_damage(user, item, value)
  109.     p "之前:#{value}"
  110.     if item.physical?
  111.       p "#{user.name} 物理加成:#{user.physical_dmg_add}"
  112.       value += (value * user.physical_dmg_add)
  113.     end
  114.     if item.magical?
  115.       p "#{user.name} 魔法加成:#{user.magical_dmg_add}"
  116.       value += (value * user.magical_dmg_add)
  117.     end
  118.     if item.certain?
  119.       p "#{user.name} 必中加成:#{user.certain_dmg_add}"
  120.       value += (value * user.certain_dmg_add)
  121.     end
  122.     p "之后:#{value}"
  123.     return value
  124.   end
  125.   
  126. end
复制代码

点评

...是自身的伤害提高,不是伤害减免,默认的没翻译好,比如自身伤害加成150%=对敌方造成的伤害*150%  发表于 2016-10-27 18:53
魔法傷害加成* (打錯字0.0)  发表于 2016-10-27 18:07
必中傷害加成, 可以的話,參考一下物理傷害加成和模仿傷害加成吧  发表于 2016-10-27 18:06
其實,妳寫的這個腳本使用起來,實際上並不怎麼理想…… 妳可以測試一下下 0w0  发表于 2016-10-27 18:05

评分

参与人数 2星屑 +260 梦石 +1 收起 理由
RaidenInfinity + 250 + 1 楼主认可的回答
是猪别乱叫 + 10 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
582
在线时间
310 小时
注册时间
2016-2-29
回帖
149
 楼主| 发表于 2016-10-27 18:56:58 | 显示全部楼层
是自身伤害提高

点评

于是上边更新了一坨代码……  发表于 2016-10-27 21:12
想了一下这个效果应该是各种加成数值累加的和才对……  发表于 2016-10-27 20:45
只需要人物带这个属性还是装备和状态都有乘积效果?  发表于 2016-10-27 20:35
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部