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

Project1

 找回密码
 注册会员
搜索
楼主: 救世小树
打印 上一主题 下一主题

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
189 小时
注册时间
2013-1-26
帖子
72
1
发表于 2013-7-5 09:46:22 | 显示全部楼层
本帖最后由 ninesound 于 2013-7-5 09:47 编辑
救世小树 发表于 2013-5-24 10:51
这样就好做了,首先新建一个技能

然后脚本Game_Battler


成功,28号状态和145号技能自己设定吧;
相关脚本:

  def make_damage_value(user, item)
    value = item.damage.eval(user, self, $game_variables)
    if item.is_a?(RPG::Skill)
      case item.id
      when 145
        if self.state?(28)
           make_damage_extra(user,item)
        end
      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 145
        value = user.mat - self.mdf
        #↑↑↑↑↑↑↑↑写hp伤害的公式,底下的各种修正很据情况可删可留
        #user→a  self→b
        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)
      end
      @result.hp_damage = value.to_i
    end
  end


请问如果是多个技能都要这样子写该怎么办呢?

我照你的方法添加第二个技能
第一个就失效了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
189 小时
注册时间
2013-1-26
帖子
72
2
发表于 2013-7-5 12:56:53 | 显示全部楼层
救世小树 发表于 2013-7-5 11:16
那就再来一组状态/技能

谢谢回答
可是还有一些问题

when 235,236
        value = 公式1 if self.state?(29)   
        value = 公式2 if self.state?(29)

我是235,236两个技能
而我的目标状态都要同一个 29

不同技能打下去会不同公式

可是我235和236两个技能都只会用公式2去运算而已
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
189 小时
注册时间
2013-1-26
帖子
72
3
发表于 2013-7-6 14:18:31 | 显示全部楼层
本帖最后由 ninesound 于 2013-7-6 14:32 编辑
救世小树 发表于 2013-7-6 09:46
可以变通一下,用技能编号来分歧~注意各种细节上的变化~


非常感谢哦
如果要再加入判断武器
是不是我这样子写就可以了?


RUBY 代码复制
  1. def make_damage_value(user, item)
  2.     value = item.damage.eval(user, self, $game_variables)
  3.     if item.is_a?(RPG::Skill)
  4.       case item.id
  5.       when 101,102
  6.         if user.armors.include?($data_armors[50])
  7.            value 101= 1.5
  8.            end
  9.        if user.weapons.include?($data_weapons[51])
  10.           value 102 = 2.5
  11.         end
  12.       when 999
  13.       end
  14.     end #判断武器防具
  15. ####################
  16.       when 235
  17.         if self.state?(57)
  18.            make_damage_extra(user,item)
  19.          end
  20.          ####################
  21.       when 232
  22.         if self.state?(57)
  23.            make_damage_extra(user,item)
  24.         end
  25.       ####################
  26.       end
  27.     end
  28.     value *= item_element_rate(user, item)
  29.     value *= pdr if item.physical?
  30.     value *= mdr if item.magical?
  31.     value *= rec if item.damage.recover?
  32.     value = apply_critical(value) if @result.critical
  33.     value = apply_variance(value, item.damage.variance)
  34.     value = apply_guard(value)
  35.     @result.make_damage(value.to_i, item)
  36.   end
  37.   def make_damage_extra(user,item)
  38.         if item.is_a?(RPG::Skill)
  39.       case item.id
  40.       when 235
  41.         value = user.mat * 10
  42.       when 232
  43.         value =  ( a.atk* 5 + a.mat * 9 ) * 1.5
  44.         #↑↑↑↑↑↑↑↑写hp伤害的公式,底下的各种修正很据情况可删可留
  45.         #user→a  self→b
  46.     end
  47.       value *= item_element_rate(user, item)
  48.       value *= pdr if item.physical?
  49.       value *= mdr if item.magical?
  50.       value *= rec if item.damage.recover?
  51.       value = apply_critical(value) if @result.critical
  52.       value = apply_variance(value, item.damage.variance)
  53.       value = apply_guard(value)
  54.       @result.hp_damage = value.to_i
  55.     end   
  56.     end

点评

就是101号技能对应50号装备,102对应51号  发表于 2013-7-6 15:45
那个1.5,2.5我打错了,那个是伤害公式,这样子的话哪里还有问题吗  发表于 2013-7-6 15:41
所以也不是特别好帮你纠正~  发表于 2013-7-6 15:13
判断武器防具两个if是没错,但是里面的 value 101 = 1.5 是想表达什么,这式子是有问题的,还有外面的语句结构也有问题,我不是特别清楚你是什么意思  发表于 2013-7-6 15:12
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-14 13:01

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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