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

Project1

 找回密码
 注册会员
搜索
查看: 2369|回复: 3
打印 上一主题 下一主题

[已经解决] 关于吸血攻击百分比吸收的问题,自己弄得一个土办法

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
61 小时
注册时间
2014-3-29
帖子
24
跳转到指定楼层
1
发表于 2014-4-29 23:25:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 shinsuzaku 于 2014-4-29 23:27 编辑

第一次发自己的心得,有错欢迎指正

这个问题查了很多帖子都没有很好的方式,自己琢磨一阵之后,鼓捣出一个土办法

首先修改Game_Battler类363行的make_damage_value函数
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 计算伤害
  3.   #--------------------------------------------------------------------------
  4.   def make_damage_value(user, item)
  5.     value = item.damage.eval(user, self, $game_variables)
  6.     value *= item_element_rate(user, item)
  7.     value *= pdr if item.physical?
  8.     value *= mdr if item.magical?
  9.     value *= rec if item.damage.recover?
  10.     value = apply_critical(value) if @result.critical
  11.     value = apply_variance(value, item.damage.variance)
  12.     value = apply_guard(value)
  13.     value = [value, 1].max unless item.damage.recover?
  14.     #新增——判断使用者以及使用的技能,如果两者皆符合要求,那么就改变吸收率drain_ratio
  15.     drain_ratio = 1
  16.     if user.name == $game_actors[3].name and item.id == 300
  17.       drain_ratio = 0.25
  18.     end
  19.     #make_damage函数有修改
  20.     @result.make_damage(value.to_i, item,drain_ratio)
  21.   end


而后修改Game_ActionResult类71行的make_damage函数

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 生成伤害
  3.   #--------------------------------------------------------------------------
  4.   def make_damage(value, item,drain_ratio)#drain_ratio即为上面的吸收率
  5.     @critical = false if value == 0
  6.     @hp_damage = value if item.damage.to_hp?
  7.     @mp_damage = value if item.damage.to_mp?
  8.     @mp_damage = [@battler.mp, @mp_damage].min
  9.     @hp_drain = (@hp_damage*drain_ratio).to_i if item.damage.drain?#使用drain_ratio,即吸血百分比
  10.     @mp_drain = @mp_damage if item.damage.drain?
  11.     @hp_drain = [@battler.hp, @hp_drain].min
  12.     @success = true if item.damage.to_hp? || @mp_damage != 0
  13.   end


PS:因为我是有用论坛中武器附加吸血效果的代码,所以我下面的判断有些不同,如果想直接设置技能的话,也可以加个else直接判断技能,如果要做吸魔,可以用吸收率,再加一个变量,在make_damage中进行判断

评分

参与人数 1星屑 +100 收起 理由
Sion + 100 感谢分享

查看全部评分

Lv1.梦旅人

梦石
0
星屑
50
在线时间
92 小时
注册时间
2013-2-23
帖子
130
2
发表于 2014-5-1 00:44:13 | 只看该作者
讨论的话你可以去技术区......

建议把【user.name == $game_actors[3].name】这一段换成【item.is_a?(RPG::Skill)】。
我认为不需要指定角色吧?要指定的话建议用【user == $game_actors[3]】,可以避免同名的情况......
要拿职业可以换成【user.class == $data_classes[ID]】。
后面是判断是否技能,因为道具也是用这些部分处理,不这样300号道具也会有相同的吸血量。
梦想是成为触手的新手DE☆SU(<ゝω·)绮罗星 ~☆
回复 支持 反对

使用道具 举报

Lv2.观梦者 (暗夜天使)

梦石
0
星屑
266
在线时间
2355 小时
注册时间
2009-3-13
帖子
2309

贵宾

3
发表于 2014-5-1 12:48:36 | 只看该作者
不愿意发布到技术区就发布到 这里吧:http://rpg.blue/forum-516-1.html,小教程积累多了我会制作一个索引的。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
61 小时
注册时间
2014-3-29
帖子
24
4
 楼主| 发表于 2014-5-1 12:51:24 | 只看该作者
Sion 发表于 2014-5-1 12:48
不愿意发布到技术区就发布到 这里吧:http://rpg.blue/forum-516-1.html,小教程积累多了我会制作一个 ...

因为一开始不知道要放哪个板块,所以就直接放这里了,烦请版主帮忙移动一下板块可以吗?

点评

那不是论坛板块,是我创建的群组,所以没有办法移动过去的  发表于 2014-5-1 12:53
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 14:59

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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