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

Project1

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

[已经解决] 关于魔力宝贝忍者暗杀的问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
325
在线时间
10 小时
注册时间
2012-3-21
帖子
4
跳转到指定楼层
1
发表于 2012-3-30 19:39:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
之前有看过纯白的幻想那一版的暗杀,但是不大明白是怎么实现的。
现在只做出了一个主动的暗杀技能,想求教该如何实现角色在普通攻击时有一定几率可以使用该技能,刚刚接触RM好多方面不清楚啊,求大神解答

Lv4.逐梦者

梦石
8
星屑
2794
在线时间
1610 小时
注册时间
2010-10-22
帖子
1059

极短25获奖

2
发表于 2012-3-30 20:11:11 | 只看该作者
本帖最后由 kangxi0109 于 2012-3-30 20:18 编辑

可以在Game_Battler 3里的
  1.   #--------------------------------------------------------------------------
  2.   # ● 应用通常攻击效果
  3.   #     attacker : 攻击者 (battler)
  4.   #--------------------------------------------------------------------------
  5. def attack_effect(attacker)
  6.     # 清除会心一击标志
  7.     self.critical = false
  8.     # 第一命中判定
  9.     hit_result = (rand(100) < attacker.hit)
  10.     # 命中的情况下
  11.     if hit_result == true
  12.       # 计算基本伤害
  13.       atk = [attacker.atk - self.pdef / 2, 0].max
  14.       self.damage = atk * (20 + attacker.str) / 20
  15.       # 属性修正
  16.       self.damage *= elements_correct(attacker.element_set)
  17.       self.damage /= 100
  18.       # 伤害符号正确的情况下
  19.       if self.damage > 0
  20.         # 会心一击修正
  21.         if rand(100) < 4 * attacker.dex / self.agi
  22.           self.damage *= 2
  23.           self.critical = true
  24.         end
  25.         # 防御修正
  26.         if self.guarding?
  27.           self.damage /= 2
  28.         end
  29.       end
  30.       # 分散
  31.       if self.damage.abs > 0
  32.         amp = [self.damage.abs * 15 / 100, 1].max
  33.         self.damage += rand(amp+1) + rand(amp+1) - amp
  34.       end
  35.       # 第二命中判定
  36.       eva = 8 * self.agi / attacker.dex + self.eva
  37.       hit = self.damage < 0 ? 100 : 100 - eva
  38.       hit = self.cant_evade? ? 100 : hit
  39.       hit_result = (rand(100) < hit)
  40.     end
  41.     # 命中的情况下
  42.     if hit_result == true
  43.       # 状态冲击解除
  44.       remove_states_shock
  45.       # HP 的伤害计算
复制代码
下面添加下面这段:

  1.       if attacker.is_a?(Game_Actor)#攻击方为角色的场合
  2.      if attacker.skills.include?(1) #攻击者学会了1号技能的情况下,这个1号可以改为其他的,即你那个暗杀的技能
  3.       m = rand(19)#m为随机数0~19
  4.            if m == 0 #当m为0时,即5%几率发动
  5.        self.damage = self.hp #对象的伤害值变为对象当前的hp值,即一击必杀,血量清零。
  6.       end
  7.         end
  8.       end
复制代码
就是这样,技能如果设定为“不能使用”,那就是纯粹的被动技能;如果你设置为其他的,即可以使用的话,就会变成类似DOTA IMBA里面的那种半主动半被动的技能了,这时主动和被动的效果结算将是是分开的,互不影响。
【2022.06.03】原本以为已经不可能再找回来的东西重新找回来了,原本一直念念不忘的坑终于再一次拿起铲子了。一别竟近10年,你好,我的世界我的梦。
【不可阻挡】异元-地劫黎明
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
325
在线时间
10 小时
注册时间
2012-3-21
帖子
4
3
 楼主| 发表于 2012-3-30 20:41:07 | 只看该作者
kangxi0109 发表于 2012-3-30 20:11
可以在Game_Battler 3里的下面添加下面这段:就是这样,技能如果设定为“不能使用”,那就是纯粹的被动技能 ...

那如果我想在他触发这个效果的时候有动画(不是普通攻击时的动画)应该怎么实现
回复

使用道具 举报

Lv4.逐梦者

梦石
8
星屑
2794
在线时间
1610 小时
注册时间
2010-10-22
帖子
1059

极短25获奖

4
发表于 2012-3-30 20:55:29 | 只看该作者
甘蔗猪 发表于 2012-3-30 20:41
那如果我想在他触发这个效果的时候有动画(不是普通攻击时的动画)应该怎么实现 ...

  1. self.damage = self.hp #对象的伤害值变为对象当前的hp值,即一击必杀,血量清零。
复制代码
下面增加
  1. self.animation_id = 1 #攻击时对方显示1号动画
复制代码
【2022.06.03】原本以为已经不可能再找回来的东西重新找回来了,原本一直念念不忘的坑终于再一次拿起铲子了。一别竟近10年,你好,我的世界我的梦。
【不可阻挡】异元-地劫黎明
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
325
在线时间
10 小时
注册时间
2012-3-21
帖子
4
5
 楼主| 发表于 2012-3-30 21:13:43 | 只看该作者
kangxi0109 发表于 2012-3-30 20:55
在下面增加

又有新问题了,这么加上去成功了,但触发效果时普通攻击的动画还会播放,这时候又该如何去除掉普通攻击的动画?
真是麻烦你了
回复

使用道具 举报

Lv4.逐梦者

梦石
8
星屑
2794
在线时间
1610 小时
注册时间
2010-10-22
帖子
1059

极短25获奖

6
发表于 2012-3-30 22:14:52 | 只看该作者
甘蔗猪 发表于 2012-3-30 21:13
又有新问题了,这么加上去成功了,但触发效果时普通攻击的动画还会播放,这时候又该如何去除掉普通攻击的 ...

1.在Game_Battler 1脚本最上方添加
  1. $AS = 0
复制代码
2.在我给的脚本
  1. self.animation_id = 1 #攻击时对方显示1号动画
复制代码
下方添加
  1. $AS = 1
  2. else
  3. $AS = 0
复制代码
3.在Scene_Battle 4中,将
  1.   #--------------------------------------------------------------------------
  2.   # ● 生成基本行动结果
  3.   #--------------------------------------------------------------------------
  4.   def make_basic_action_result
  5.     # 攻击的情况下
  6.     if @active_battler.current_action.basic == 0
  7.       # 设置攻击 ID
  8.       @animation1_id = @active_battler.animation1_id
  9.       @animation2_id = @active_battler.animation2_id
  10.       # 行动方的战斗者是敌人的情况下
复制代码
更改为
  1.   #--------------------------------------------------------------------------
  2.   # ● 生成基本行动结果
  3.   #--------------------------------------------------------------------------
  4.   def make_basic_action_result
  5.     # 攻击的情况下
  6.     if @active_battler.current_action.basic == 0
  7.       # 设置攻击 ID
  8.       @animation1_id = @active_battler.animation1_id
  9.       if $AS == 0
  10.       @animation2_id = @active_battler.animation2_id
  11.       end
  12.       # 行动方的战斗者是敌人的情况下
复制代码
【2022.06.03】原本以为已经不可能再找回来的东西重新找回来了,原本一直念念不忘的坑终于再一次拿起铲子了。一别竟近10年,你好,我的世界我的梦。
【不可阻挡】异元-地劫黎明
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
325
在线时间
10 小时
注册时间
2012-3-21
帖子
4
7
 楼主| 发表于 2012-3-30 22:35:57 | 只看该作者
kangxi0109 发表于 2012-3-30 22:14
1.在Game_Battler 1脚本最上方添加2.在我给的脚本下方添加3.在Scene_Battle 4中,将更改为 ...

{:2_287:}成功了,真是太感谢了!
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-30 20:38

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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