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

Project1

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

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
49
在线时间
276 小时
注册时间
2011-6-5
帖子
133
41
 楼主| 发表于 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没啥可说的了,个人觉得你可以先去学一下脚本,至少把变量控制语句什么的搞清楚,再来修改脚本就事倍功半了,磨刀不误砍柴工嘛~
研表究明,汉字的序顺并不定一能影阅响读,比如当你看完这话句后,才发这现里的字全是都乱的
回复 支持 反对

使用道具 举报

david_ng223 该用户已被删除
42
发表于 2013-7-8 10:08:35 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1019 小时
注册时间
2012-4-25
帖子
799
43
发表于 2013-7-8 13:11:35 | 只看该作者
最近看到别人对于回避之后发生的事情,那么理论上,应该也能够做得出,当必杀发生时,会额外附加效果的吧。

点评

self.add_state(55) if @result.critical【】【】user.hp += user.mhp/20 if @result.critical  发表于 2013-7-9 12:37
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
48
在线时间
560 小时
注册时间
2012-12-29
帖子
1075
44
发表于 2013-7-8 18:00:44 | 只看该作者
给个范例不

点评

都是些零零碎碎的数据库设定加脚本修改,解决各种实际问题的,这要我怎么做范例啊。。。  发表于 2013-7-9 12:38
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1019 小时
注册时间
2012-4-25
帖子
799
45
发表于 2013-7-10 00:17:36 | 只看该作者
david_ng223 发表于 2013-7-8 10:08
我的遊戲中有數百個技能,
剛設置了個叫飛翔的狀態(各回避率+100%,即所有技能都不能擊中),
請問怎樣使敵 ...

那样直接写公式里可以?

点评

@救世小树 我的意思是,当某一技能暴击时会产生什么,但似乎暴击相关的数值只有SELF,而没有USER  发表于 2013-7-11 11:49
放在脚本里 value = apply_critical(value) if @result.critical 这一行的附近就行~  发表于 2013-7-11 11:36
回复 支持 反对

使用道具 举报

Lv3.寻梦者

火烧大神

梦石
0
星屑
1916
在线时间
954 小时
注册时间
2012-1-1
帖子
1781
46
发表于 2013-7-10 21:56:43 | 只看该作者
狮驼岭的技能也行吗?
就是一个技能要在某号状态下才能使用,没有这个状态就不能用。

点评

我怎么就没想到!!!谢谢了!  发表于 2013-7-11 13:03
最简单的方法是,在该状态设置一个添加该技能。这样只有该状态存在的情况下,才能使用该技能  发表于 2013-7-10 22:23

火兔游戏官网上线啦!!
戳 >>> www.huotuyouxi.com <<<戳
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
215
在线时间
54 小时
注册时间
2012-12-28
帖子
31
47
发表于 2013-9-5 11:11:35 | 只看该作者
既然可以透過
判定 是否能力強化、狀態 改變計算公式
可否做到判定 是否能力強化、狀態 等改變該技能命中率?

例: 對方敏捷上升時 命中率增加 else 命中率不變?

点评

現在是b.buff?(6) ? a.atk : (a.atk-b.def) 如果對方敏捷上升 無視防守 可是我想要的效果是: 如果對方敏捷上升 自己這次技能的命中率提升.如果做到,要怎麼改?   发表于 2013-9-5 12:46
可以用 if.state  发表于 2013-9-5 11:22
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1019 小时
注册时间
2012-4-25
帖子
799
48
发表于 2013-9-9 16:06:36 | 只看该作者
wai781300 发表于 2013-9-5 11:11
既然可以透過
判定 是否能力強化、狀態 改變計算公式
可否做到判定 是否能力強化、狀態 等改變該技能命中率 ...

关于增加暴击,增加命中率的方法不能在公式里直接实现,但可以实现,你可以爬爬楼,应该在3-4楼里我说过的。
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1702
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

49
发表于 2013-9-9 22:12:22 | 只看该作者
本帖最后由 精灵使者 于 2013-9-9 22:13 编辑

精灵温馨提示:RMXP等其他里面,战斗不能也可以做成一种状态(参考我做的即死魔法)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
70
在线时间
19 小时
注册时间
2006-12-27
帖子
30
50
发表于 2013-9-13 09:01:38 | 只看该作者
有用.好帖子
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-7-5 06:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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