Project1

标题: rmxp 异常状态免疫法术如何用状态+公用事件处理 [打印本页]

作者: 89444640    时间: 2014-7-30 13:55
标题: rmxp 异常状态免疫法术如何用状态+公用事件处理
被打了N种异常状态后,想想,除了装备上可以+xx免疫的能力
可否只使用状态+公用事件制作增加N回合异常状态免疫的法术或道具呢?
另外可否只使用状态+公用事件制作N次绝对防御或者N次物理(魔法)防御的法术或道具呢?
脚本冲突太多实在是不敢用,不过有相关脚本的话可以试试。
作者: 芯☆淡茹水    时间: 2014-7-30 15:03
  1. #==============================================================================
  2. class Game_Actor < Game_Battle
  3. #----------------------------------------------------------------------------
  4. #下面设置:状态ID => [所防御的状态ID] .比如下面的 13=>[4,5,6] ,表示如果角色有
  5. # 13 号状态,那么该角色就防御 4号,5号,6号 状态。
  6. STATE_GUARD = {13=>[4,5,6], 14=>[8,9]}
  7.   #--------------------------------------------------------------------------
  8.   def state_guard?(state_id)
  9.     for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  10.       armor = $data_armors[i]
  11.       if armor != nil
  12.         if armor.guard_state_set.include?(state_id)
  13.           return true
  14.         end
  15.       end
  16.     end
  17.     for id in STATE_GUARD.keys
  18.       if state?(id)
  19.         return true if STATE_GUARD[id].include?(state_id)
  20.       end
  21.     end
  22.     return false
  23.   end
  24. end
  25. #==============================================================================
复制代码

作者: 1335557777    时间: 2014-7-30 15:19
本帖最后由 1335557777 于 2014-7-30 15:22 编辑

可以啊,在
数据库-》队伍-》(选择你想要让自己免疫的敌人队伍)-》开始条件-》战斗 N 回合后-》(把它打开)
然后在
数据库-》队伍-》(选择你想要让自己免疫的敌人队伍)-》(事件编辑区)-》(变量操作:【0001:血量】=【001:阿尔西斯:hp】)-》(完全恢复)-》(体力增减:代入【0001:血量】)
测试一下,这样可以的
作者: RyanBern    时间: 2014-7-30 16:08
本帖最后由 RyanBern 于 2014-8-3 11:07 编辑

第一个问题,要好好利用数据库的功能,无需使用脚本。方法如下:
设置一个状态,这个状态的作用是“抵抗所有其他状态”(当然战斗不能除外)。然后把右侧【状态变化】一栏里面的所有你需要抵抗的状态都打上“-”号。这样该状态就可以完全防御其他状态了。
第二个问题,如果是完全防御,需要动用脚本才行。但是如果仅仅是防御(伤害减半)的话,也可以通过数据库设置。方法是在数据库->状态一栏的【属性防御】勾选√即可。不过,这样防止不了纯物理攻击(这是因为敌人的物理攻击没有属性这一说)。
状态完全防御攻击脚本实现:
  1. class Game_Battler
  2.   alias old_attack_effect attack_effect
  3.   def attack_effect(attacker)
  4.     # 如果1号状态能够防御主角2号属性的普通攻击
  5.     if self.state?(1) && attacker.is_a?(Game_Actor) && attacker.weapon_id != 0 && $data_weapons[attacker.weapon_id].element_set.include?(2)
  6.       self.damage = 0
  7.       return false
  8.     end
  9.     # 如果1号状态能够完全防御任何普通攻击
  10.     if self.state?(1)
  11.       self.damage = 0
  12.       return false
  13.     end
  14.     # 以上两个仅仅给出例子,如果需要修改仿照一下就可以了。
  15.     old_attack_effect(attacker)
  16.   end
  17.   alias old_skill_effect skill_effect
  18.   def skill_effect(user, skill)
  19.     # 如果1号状态能够防御2号属性的技能攻击
  20.     if self.state?(1) && skill.element_set.include?(2)
  21.       self.damage = 0
  22.       return false
  23.     end
  24.     # 以上仅仅给出例子,如果要更多的完全防御复制一下,修改几个数字即可。
  25.   end
  26. end
复制代码
以上脚本没有考虑双属性或多属性的情况,如果一个技能是双属性【火/风】,一个状态完全防御火属性,那么这个状态也将完全防御这个技能。
作者: 89444640    时间: 2014-8-3 07:54
RyanBern 发表于 2014-7-30 16:08
第一个问题,要好好利用数据库的功能,无需使用脚本。方法如下:
设置一个状态,这个状态的作用是“抵抗所 ...

状态抵抗用此方法很简便~
那个完全防御,我方用很破坏平衡的,但是给敌人用还是可以的,我方4人敌人boss经常一个……
动脚本的情况下可以帮忙写个吗?谢谢~




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