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

Project1

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

[已经过期] 求助,如何做到物理伤害反弹

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3298
在线时间
1120 小时
注册时间
2009-4-15
帖子
815
跳转到指定楼层
1
发表于 2013-8-30 11:14:16 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 tan12345 于 2013-8-30 11:19 编辑

如题,就是当状态A存在时,被物理技能攻击,先是受到伤害,然后将受到的伤害的50%反弹给技能使用者,就是说,当状态A存在时,敌人用物理技能打我掉100伤害,我先掉100的血,然后敌人掉50的血。求大神救助。

点评

我想你可能找的是这个:状态>>特性>>能力>>物理反击几率  发表于 2013-9-9 21:15

Lv1.梦旅人

梦石
0
星屑
55
在线时间
79 小时
注册时间
2013-1-15
帖子
100
2
发表于 2013-8-30 11:43:04 手机端发表。 | 只看该作者
设置你找下技能里有吗?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3298
在线时间
1120 小时
注册时间
2009-4-15
帖子
815
3
 楼主| 发表于 2013-8-30 12:32:59 | 只看该作者
qqabcc 发表于 2013-8-30 11:43
设置你找下技能里有吗?

技能里有,但是我是被攻击方,不是使用技能的那方;状态里只有物理反击,这个是指被敌人攻击时自己不受到伤害,然后进行一次普通攻击攻击敌人,达不到我的要求。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
665
在线时间
194 小时
注册时间
2012-6-1
帖子
720
4
发表于 2013-8-30 16:10:20 | 只看该作者
用公共事件=-=当主角状态A时被攻击,就反击=-=怎么做的,大雾=-=
死亡
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3298
在线时间
1120 小时
注册时间
2009-4-15
帖子
815
5
 楼主| 发表于 2013-8-30 21:37:15 | 只看该作者
1715063941 发表于 2013-8-30 16:10
用公共事件=-=当主角状态A时被攻击,就反击=-=怎么做的,大雾=-=

还是不行,这个只是受到伤害后反击,反击的伤害是普通攻击,做不到被伤害的一半……
回复 支持 反对

使用道具 举报

Lv2.观梦者

无节操

梦石
0
星屑
607
在线时间
795 小时
注册时间
2009-2-6
帖子
3939

开拓者贵宾

6
发表于 2013-9-9 21:07:10 | 只看该作者
tan12345 发表于 2013-8-30 21:37
还是不行,这个只是受到伤害后反击,反击的伤害是普通攻击,做不到被伤害的一半…… ...

数据库中技能的计算公式那里输入
  1. temp = (公式)/ 2 ; a.hp -= temp ; temp * 2
复制代码
其中公式是你自己定义的技能公式。 PS:以上未经测试,请自己实验
思想就是利用计算公式只返回最后一个结果当做伤害值。那么只要先算好二分之一的伤害就可以自由反伤给释放者。

点评

moy
仔细看了下还说到物理攻击,那么再加上状态,只要在前面加几个if啥的就可以了吧,详情可以参考 http://bbs.66rpg.com/thread-307316-1-1.html  发表于 2013-9-9 21:37
Brandnew day, Brandnew Life
                              实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3298
在线时间
1120 小时
注册时间
2009-4-15
帖子
815
7
 楼主| 发表于 2013-9-9 22:36:12 | 只看该作者
moy 发表于 2013-9-9 21:07
数据库中技能的计算公式那里输入其中公式是你自己定义的技能公式。 PS:以上未经测试,请自己实验
思想就 ...

那个帖子我看过,但是如果真的如你所说,那就是每个伤害技能都设置if b.stat(X) then a.hp -= temp;b.hp -= temp*2,是每个伤害技能都这样设定。

点评

moy
你的问题是被攻击攻击者反伤,而我脑子里想的是攻击别人自己反伤……所以才有上面的回复……  发表于 2013-9-9 22:47
moy
也可以自己在伤害脚本里改,这样就只要判定是否是物理,然后是否state?{n}就可以。我打回复的时候没过脑子,抱歉。  发表于 2013-9-9 22:46
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3298
在线时间
1120 小时
注册时间
2009-4-15
帖子
815
8
 楼主| 发表于 2013-9-9 22:48:40 | 只看该作者
moy 发表于 2013-9-9 21:07
数据库中技能的计算公式那里输入其中公式是你自己定义的技能公式。 PS:以上未经测试,请自己实验
思想就 ...

技能代码里自己改过了,不生效……如果你能让他生效,可以给我效仿下,谢谢了
回复 支持 反对

使用道具 举报

Lv2.观梦者

无节操

梦石
0
星屑
607
在线时间
795 小时
注册时间
2009-2-6
帖子
3939

开拓者贵宾

9
发表于 2013-9-9 23:41:29 | 只看该作者
tan12345 发表于 2013-9-9 22:48
技能代码里自己改过了,不生效……如果你能让他生效,可以给我效仿下,谢谢了 ...

去试了试,发现没跳伤害,但是实际造成了伤害,同时敌人尸体也不会消失。如果要像正常攻击那样跳数字,要改好多关于显示的脚本……
姑且先将刚才试验的脚本贴上来,等有时间我再完善吧……我看了下,默认脚本要改不少display……因为他一开始根本没有考虑过这么多,只是单纯的“对目标的影响”的显示,而没有对自身的。
  1. class Game_Battler < Game_BattlerBase

  2.   attr_accessor :is_physical              # 是否是物理伤害 added
  3.   #--------------------------------------------------------------------------
  4.   # ● 计算伤害
  5.   #--------------------------------------------------------------------------
  6.   def make_damage_value(user, item)
  7.     @is_physical = false              #added
  8.     value = item.damage.eval(user, self, $game_variables)
  9.     value *= item_element_rate(user, item)
  10.     value *= pdr if item.physical?
  11.     @is_physical = item.physical?                   #added
  12.     value *= mdr if item.magical?
  13.     value *= rec if item.damage.recover?
  14.     value = apply_critical(value) if @result.critical
  15.     value = apply_variance(value, item.damage.variance)
  16.     value = apply_guard(value)
  17.     @result.make_damage(value.to_i, item)
  18.   end

  19.   #--------------------------------------------------------------------------
  20.   # ● 处理伤害
  21.   #    调用前需要设置好
  22.   #    @result.hp_damage   @result.mp_damage
  23.   #    @result.hp_drain    @result.mp_drain
  24.   #--------------------------------------------------------------------------
  25.   def execute_damage(user)
  26.     on_damage(@result.hp_damage) if @result.hp_damage > 0
  27.     self.hp -= @result.hp_damage
  28.     self.mp -= @result.mp_damage
  29.     user.hp -= ( @result.hp_damage / 2 ).to_i if self.state?(5) && @is_physical   #added
  30.     user.hp += @result.hp_drain
  31.     user.mp += @result.mp_drain
  32.   end

  33. end
复制代码
标注#added的增加的东西,但我还是建议如果没有别的修改,还是暂时用外挂的方式使用。。。因为太粗暴……

评分

参与人数 1梦石 +1 收起 理由
熊喵酱 + 1 认可答案

查看全部评分

Brandnew day, Brandnew Life
                              实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3298
在线时间
1120 小时
注册时间
2009-4-15
帖子
815
10
 楼主| 发表于 2013-9-10 11:31:16 | 只看该作者
moy 发表于 2013-9-9 23:41
去试了试,发现没跳伤害,但是实际造成了伤害,同时敌人尸体也不会消失。如果要像正常攻击那样跳数字,要 ...

我之前也是这样改的,就是没跳伤害而且意识到后面的不好改才发的贴……不过还是谢谢了

点评

moy
抱歉没帮上忙~其实你可以在论坛搜搜技能脚本,我记得应该有的  发表于 2013-9-10 11:36
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 18:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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