Project1

标题: 一个几率反弹的被动技能 [打印本页]

作者: 兲才丶芜蜘    时间: 2012-9-21 19:06
标题: 一个几率反弹的被动技能
不要回帖骂我没搜索,我搜了2周了木有结果,也许是我视力有问题……
求高人帮忙做一个几率反弹的被动技能,绑定角色的技能。反弹的时机弄在受到伤害前,但是状态的变化不反弹。
脚本盲……
麻烦各位了!
作者: kangxi0109    时间: 2012-9-21 19:37
本帖最后由 kangxi0109 于 2012-9-29 20:55 编辑

我记得在五六月份的时候有几乎一模一样的问题...
这段脚本放在Game_Battler 3中普通攻击的部分,这个设置不与技能挂钩,而是与角色编号挂钩,但你可以设置一个不能使用的技能作解释用。


  1.     # 命中的情况下
  2.     if hit_result == true
  3.       # 状态冲击解除
  4.       remove_states_shock
  5. #=========================添加↓
  6.       if attacker.is_a?(Game_Enemy) && self.is_a?(Game_Actor)#攻击方为敌人的场合
  7.       if self.id == 1 or self.id == 2 #角色为一号或者二号的场合伤害反弹30%
  8. m = rand(10)#
  9. if m <= 4#50%几率触发反弹效果
  10.         if self.damage/30 >= attacker.hp
  11.           attacker.hp = 1
  12.         else
  13.           attacker.hp -= self.damage/30#反击30%伤害
  14.         end
  15.         self.damage -= self.damage/30#减免30%伤害
  16.         self.animation_id = 397 #攻击时对方显示的动画
  17.         attacker.animation_id = 396 #攻击者显示的动画
  18.       end
  19. end
  20. end
  21. #=========================添加↑
  22.       # HP 的伤害计算
复制代码
技能伤害反弹的话也在技能部分的对应位置复制添加就好,但要将其中的attacker改为user。
作者: 兲才丶芜蜘    时间: 2012-9-29 20:08
kangxi0109 发表于 2012-9-21 19:37
我记得在五六月份的时候有几乎一模一样的问题...
这段脚本放在Game_Battler 3中普通攻击的部分,这个设置不 ...

出错了……
“ if self.id = 1 or self.id = 2 #角色为一号或者二号的场合伤害反弹30%”

他说这一行发生了“NoMethodError”
作者: chd114    时间: 2012-9-30 15:29
关键是你用的是什么样的战斗系统···是XAS还是RTAB还是RMXP默认?
作者: 兲才丶芜蜘    时间: 2012-9-30 17:05
本帖最后由 兲才丶芜蜘 于 2012-10-4 11:21 编辑

。。。。。。。
作者: 兲才丶芜蜘    时间: 2012-10-4 11:21
kangxi0109 发表于 2012-9-21 19:37
我记得在五六月份的时候有几乎一模一样的问题...
这段脚本放在Game_Battler 3中普通攻击的部分,这个设置不 ...

一切都好
但有一点点美中不足
先出现反弹动画,然后出现攻击动画。
我不知道怎么该才能改成:先出现攻击动画,然后出现反弹动画。

还有我自己写的闪避动画也是这样:
先出现闪避动画,然后出现攻击动画,然后出现闪避的文字
我已经把动画脚本放在文字脚本后面了,还是这样……
作者: kangxi0109    时间: 2012-10-4 15:45
兲才丶芜蜘 发表于 2012-10-4 11:21
一切都好
但有一点点美中不足
先出现反弹动画,然后出现攻击动画。

这里修改的动画是显示在攻击动画播放之前的,即这段脚本会在动画显示之前就运行,正式的攻击动画在Scene_Battle 4末尾刷新的部分,可以在那里修改,比如在我的脚本里将显示动画改为某开关打开,然后在正式的攻击动画显示那里加个判定,当该开关打开时显示动画。
作者: 兲才丶芜蜘    时间: 2012-10-4 22:18
kangxi0109 发表于 2012-10-4 15:45
这里修改的动画是显示在攻击动画播放之前的,即这段脚本会在动画显示之前就运行,正式的攻击动画在Scene_ ...


呵呵呵、
不会{:2_271:}

我在scene步骤4里面加一个
s = 2
在动画前加一个
if s = 2
…… (动画脚本)
s = 1
end
结果什么都没发生
作者: 兲才丶芜蜘    时间: 2012-10-6 17:58
本帖最后由 兲才丶芜蜘 于 2012-10-12 22:33 编辑
kangxi0109 发表于 2012-10-4 15:45
这里修改的动画是显示在攻击动画播放之前的,即这段脚本会在动画显示之前就运行,正式的攻击动画在Scene_ ...


……我的回复在下面啦!!!!{:2_261:}


我想弄3个动画,我的闪避分男女和装备特效……可是不会!!
作者: kangxi0109    时间: 2012-10-6 18:09
本帖最后由 kangxi0109 于 2012-10-7 00:49 编辑
兲才丶芜蜘 发表于 2012-10-6 17:58
呵呵呵、不能认可答案、你就陪我耗着呗

我如果说还是不会呢?


【啊,事实上我会告诉你其实是我自己太懒的缘故么?】
Scene_Battle的动画显示方式跟Game_Battler不一样。
我写详细点吧...

  1.   #--------------------------------------------------------------------------
  2.   # ● 刷新画面 (主回合步骤 4 : 对像方动画)
  3.   #--------------------------------------------------------------------------
  4.   def update_phase4_step4
  5.     #刷新弹药窗口
  6.     #@ammo_window.refresh#这个窗口是自己另外做的,请无视。
  7.     # 对像方动画
  8.     for target in @target_battlers
  9. #==========================修改部分↓
  10. if $miss1 == true #开关$miss1为开时
  11.     target.animation_id =  1 #你设定的动画ID号,这里以1号动画为例
  12. elsif $miss2 == true #开关$miss2为开时
  13.     target.animation_id =  2 #播放2号动画
  14. else #这些开关都没开时
  15.       target.animation_id = @animation2_id
  16. end
  17. #==========================修改部分↑
  18.       target.animation_hit = (target.damage != "Miss")
  19.     end
  20.     # 限制动画长度、最低 8 帧
  21.     @wait_count = 8
  22.     # 移至步骤 5
  23.     @phase4_step = 5
  24.   end
复制代码

作者: kangxi0109    时间: 2012-10-13 00:10
兲才丶芜蜘 发表于 2012-10-6 17:58
……我的回复在下面啦!!!!

闪避...一题多问啦...不过在设置上(指动画)原理是一样的...
关于反弹的设置在脚本里了,在前面提到的两个部分里,测试是有效果的,要知道在下懒人一个(貌似秋天到了就更加懒了)...
注意反弹是有几率的,人品不好那我也没办法了,屏幕闪一下就说明反弹成功,对应动画在数据库动画的末尾,具体的自行设置吧。
范例-伤害反弹.zip (849.94 KB, 下载次数: 66)
作者: 兲才丶芜蜘    时间: 2012-10-13 11:50
kangxi0109 发表于 2012-10-13 00:10
闪避...一题多问啦...不过在设置上(指动画)原理是一样的...
关于反弹的设置在脚本里了,在前面提到的两 ...

那个if self.damage/30 >= attacker.hp
          attacker.hp = 1
是不是不能把人弹死了
我想要可以弹死的、但是很多种方法都不行
要么让战斗不能了但是体力还在,要么体力没了战斗图片还在……
作者: 兲才丶芜蜘    时间: 2012-10-13 12:36
kangxi0109 发表于 2012-10-13 00:10
闪避...一题多问啦...不过在设置上(指动画)原理是一样的...
关于反弹的设置在脚本里了,在前面提到的两 ...
  1. def update_phase4_step4
  2.     # 对像方动画
  3.     for target in @target_battlers
  4.       if $miss1 == true #开关$miss1为开时
  5.         target.animation_id =  138 #138
  6.       elsif $miss2 == true #开关$miss2为开时
  7.         target.animation_id =  139 #播放139号动画
  8.       elsif $miss3 == true
  9.         target.animation_id =  140 #播放140号动画
  10.       elsif $miss8 == true
  11.         target.animation_id =  133#八卦
  12.       elsif $tianxiang1 == true#反弹1
  13.         target.animation_id =  113
  14.       elsif $tianxiang2 == true#反弹2
  15.         target.animation_id =  114
  16.       else #这些开关都没开时
  17.         target.animation_id = @animation2_id
  18.       end
  19.       target.animation_hit = (target.damage != "Miss")
  20.     end
  21.     # 限制动画长度、最低 8 帧
  22.     @wait_count = 8
  23.     $miss1 = false
  24.     $miss2 = false
  25.     $miss3 = false
  26.     $miss8 == false
  27.     $tianxiang1 = false
  28.     $tianxiang2 = false
  29.     # 移至步骤 5
  30.     @phase4_step = 5
  31.   end
复制代码
你看是哪里错了,偶尔会出现,男的头上播放女的动画,……
作者: kangxi0109    时间: 2012-10-13 20:06
兲才丶芜蜘 发表于 2012-10-13 11:50
那个if self.damage/30 >= attacker.hp
          attacker.hp = 1
是不是不能把人弹死了

这个设置主要就是为了避免这种奇葩的错误啊...这个跟中毒死不一样的,中毒在其行动之前就已经生效,但这个是在行动过程中发生的,于是可能会发生某些特殊情况。
你看是哪里错了,偶尔会出现,男的头上播放女的动画,……

目测不是这段脚本的错误,应该是前面的开关没设置好。因为这段脚本的开关判断是串联的,不同开关的判定优先级不一样...如果同时开了两个开关,这里会以最先判定为true的开关对应动画为准。




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