赞 | 3 |
VIP | 0 |
好人卡 | 24 |
积分 | 0 |
经验 | 15951 |
最后登录 | 2016-1-17 |
在线时间 | 276 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 49
- 在线时间
- 276 小时
- 注册时间
- 2011-6-5
- 帖子
- 133
|
ninesound 发表于 2013-7-6 14:18
非常感谢哦
如果要再加入判断武器
是不是我这样子写就可以了?
额,其实问题还是不少,
第7行和第10行:value 101= 公式1
value 102= 公式2
这样的写法是不对的, value 就是计算结果,后面再加个101,102 什么的电脑就不认了,也没有必要加这玩意儿。
我们再来从头理一遍。
首先这个脚本修改是未来做一个法力燃烧的技能,这个技能造成mp伤害,当目标处在某状态时,额外在造成hp伤害。
然后我们想要把两个公式(hp伤害和mp伤害)写出来,这一段脚本中有两个方法,make_damage_value 和 make_damage_extra
其中 make_damage_value 是原本的计算伤害的公式,我们所编辑的技能的设定就是造成mp伤害,因此这里的value是mp伤害的计算,
这个公式是直接在技能编辑面板的公式框里写的,如果你是想写hp伤害的公式,就务必看下面那个
def make_damage_extra - end 。
运行原理是在计算伤害时施加判定,如果自身处于某种状态,那么就利用 make_damage_extra 来附加额外的hp伤害
然后是语句结构, if-end、case-end 是成对出现的,其中 when 只能出现在某对 case-end 之间,你脚本中的第一个 when 235 when 232 都是错误语句,运行会报错
我重新写了一下,注意注释
- def make_damage_value(user, item)
- value = item.damage.eval(user, self, $game_variables)
- if item.is_a?(RPG::Skill)
- #================================
- case item.id
- when 101,102
- if user.armors.include?($data_armors[50])
- value =公式1
- end
- if user.weapons.include?($data_weapons[51])
- value = 公式2
- end
- #这里的公式是101,102号技能的对mp伤害(如果你的技能面板就是那样设定的话)
- #并且覆盖了你在技能数据库里设定的101,102号技能的原公式,
- #如果不需要,请从case item.id 到 when 999 end都删除吧
- when 999
- end
- #================================
- if self.state?(57) or self.state?(58) #这里写下你需要的特殊状态
- make_damage_extra(user,item)
- end
- end
- value *= item_element_rate(user, item)
- value *= pdr if item.physical?
- value *= mdr if item.magical?
- value *= rec if item.damage.recover?
- value = apply_critical(value) if @result.critical
- value = apply_variance(value, item.damage.variance)
- value = apply_guard(value)
- @result.make_damage(value.to_i, item)
- end
- def make_damage_extra(user,item)
- if item.is_a?(RPG::Skill)
- case item.id
- when 235
- value = user.mat * 10
- when 232
- value = ( a.atk* 5 + a.mat * 9 ) * 1.5
- #↑↑↑↑↑↑↑↑写hp伤害的公式,底下的各种修正很据情况可删可留
- #user→a self→b
- when 101,102 #写在这里就算是hp伤害了
- if user.armors.include?($data_armors[50])
- value =公式1
- end
- if user.weapons.include?($data_weapons[51])
- value = 公式2
- else
- return#添加了这个,如果以上的情况都不符合,那么直接结束这个方法
- end
- value *= item_element_rate(user, item)
- value *= pdr if item.physical?
- value *= mdr if item.magical?
- value *= rec if item.damage.recover?
- value = apply_critical(value) if @result.critical
- value = apply_variance(value, item.damage.variance)
- value = apply_guard(value)
- @result.hp_damage = value.to_i
- end
- end
复制代码 emmm没啥可说的了,个人觉得你可以先去学一下脚本,至少把变量控制语句什么的搞清楚,再来修改脚本就事倍功半了,磨刀不误砍柴工嘛~ |
|