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

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: 救世小树
打印 上一主题 下一主题

[原创发布] 我跟你讲,VA的计算公式,赞!通过公式实现一些功能

[复制链接]

Lv1.梦旅人

梦石
0
星屑
49
在线时间
276 小时
注册时间
2011-6-5
帖子
133
11
 楼主| 发表于 2013-7-6 09:46:42 | 显示全部楼层
ninesound 发表于 2013-7-5 12:56
谢谢回答
可是还有一些问题

可以变通一下,用技能编号来分歧~注意各种细节上的变化~

  1.   def make_damage_extra(user,item)
  2.     if item.is_a?(RPG::Skill)
  3.       case item.id
  4.       when 235
  5.         value = user.mat - self.mdf if self.state?(29)   
  6.       when 236
  7.         value = 2*user.mat - self.mdf if self.state?(29)
  8.       end
  9.       value *= item_element_rate(user, item)
  10.       value *= pdr if item.physical?
  11.       value *= mdr if item.magical?
  12.       value *= rec if item.damage.recover?
  13.       value = apply_critical(value) if @result.critical
  14.       value = apply_variance(value, item.damage.variance)
  15.       value = apply_guard(value)
  16.       @result.hp_damage = value.to_i
  17.     end
复制代码
研表究明,汉字的序顺并不定一能影阅响读,比如当你看完这话句后,才发这现里的字全是都乱的
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
49
在线时间
276 小时
注册时间
2011-6-5
帖子
133
12
 楼主| 发表于 2013-7-6 17:44:31 | 显示全部楼层
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 都是错误语句,运行会报错



我重新写了一下,注意注释

  1. def make_damage_value(user, item)
  2.     value = item.damage.eval(user, self, $game_variables)
  3.     if item.is_a?(RPG::Skill)

  4. #================================
  5.       case item.id
  6.       when 101,102
  7.         if user.armors.include?($data_armors[50])
  8.           value =公式1
  9.        end
  10.        if user.weapons.include?($data_weapons[51])
  11.          value = 公式2
  12.        end
  13.       #这里的公式是101,102号技能的对mp伤害(如果你的技能面板就是那样设定的话)
  14.       #并且覆盖了你在技能数据库里设定的101,102号技能的原公式,
  15.       #如果不需要,请从case item.id 到 when 999 end都删除吧
  16.       when 999
  17.       end
  18. #================================

  19.       if self.state?(57) or self.state?(58)  #这里写下你需要的特殊状态
  20.         make_damage_extra(user,item)
  21.       end

  22.     end

  23.     value *= item_element_rate(user, item)
  24.     value *= pdr if item.physical?
  25.     value *= mdr if item.magical?
  26.     value *= rec if item.damage.recover?
  27.     value = apply_critical(value) if @result.critical
  28.     value = apply_variance(value, item.damage.variance)
  29.     value = apply_guard(value)
  30.     @result.make_damage(value.to_i, item)
  31.   end
  32.   def make_damage_extra(user,item)
  33.     if item.is_a?(RPG::Skill)
  34.       case item.id
  35.       when 235
  36.         value = user.mat * 10
  37.       when 232
  38.         value =  ( a.atk* 5 + a.mat * 9 ) * 1.5
  39.         #↑↑↑↑↑↑↑↑写hp伤害的公式,底下的各种修正很据情况可删可留
  40.         #user→a  self→b
  41.       when 101,102  #写在这里就算是hp伤害了
  42.         if user.armors.include?($data_armors[50])
  43.           value =公式1
  44.        end
  45.        if user.weapons.include?($data_weapons[51])
  46.          value = 公式2
  47.       else
  48.         return#添加了这个,如果以上的情况都不符合,那么直接结束这个方法
  49.       end
  50.       value *= item_element_rate(user, item)
  51.       value *= pdr if item.physical?
  52.       value *= mdr if item.magical?
  53.       value *= rec if item.damage.recover?
  54.       value = apply_critical(value) if @result.critical
  55.       value = apply_variance(value, item.damage.variance)
  56.       value = apply_guard(value)
  57.       @result.hp_damage = value.to_i
  58.     end   
  59.   end
复制代码
emmm没啥可说的了,个人觉得你可以先去学一下脚本,至少把变量控制语句什么的搞清楚,再来修改脚本就事倍功半了,磨刀不误砍柴工嘛~
研表究明,汉字的序顺并不定一能影阅响读,比如当你看完这话句后,才发这现里的字全是都乱的
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-15 01:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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