Project1

标题: 关于魔力宝贝忍者暗杀的问题 [打印本页]

作者: 甘蔗猪    时间: 2012-3-30 19:39
标题: 关于魔力宝贝忍者暗杀的问题
之前有看过纯白的幻想那一版的暗杀,但是不大明白是怎么实现的。
现在只做出了一个主动的暗杀技能,想求教该如何实现角色在普通攻击时有一定几率可以使用该技能,刚刚接触RM好多方面不清楚啊,求大神解答dsu_plus_rewardpost_czw
作者: kangxi0109    时间: 2012-3-30 20: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里面的那种半主动半被动的技能了,这时主动和被动的效果结算将是是分开的,互不影响。
作者: 甘蔗猪    时间: 2012-3-30 20:41
kangxi0109 发表于 2012-3-30 20:11
可以在Game_Battler 3里的下面添加下面这段:就是这样,技能如果设定为“不能使用”,那就是纯粹的被动技能 ...

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

  1. self.damage = self.hp #对象的伤害值变为对象当前的hp值,即一击必杀,血量清零。
复制代码
下面增加
  1. self.animation_id = 1 #攻击时对方显示1号动画
复制代码

作者: 甘蔗猪    时间: 2012-3-30 21:13
kangxi0109 发表于 2012-3-30 20:55
在下面增加

又有新问题了,这么加上去成功了,但触发效果时普通攻击的动画还会播放,这时候又该如何去除掉普通攻击的动画?
真是麻烦你了
作者: kangxi0109    时间: 2012-3-30 22:14
甘蔗猪 发表于 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.       # 行动方的战斗者是敌人的情况下
复制代码

作者: 甘蔗猪    时间: 2012-3-30 22:35
kangxi0109 发表于 2012-3-30 22:14
1.在Game_Battler 1脚本最上方添加2.在我给的脚本下方添加3.在Scene_Battle 4中,将更改为 ...

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




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1