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

Project1

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

[已经解决] rmxp 异常状态免疫法术如何用状态+公用事件处理

[复制链接]

Lv5.捕梦者

梦石
0
星屑
35186
在线时间
4169 小时
注册时间
2007-12-15
帖子
10067
跳转到指定楼层
1
发表于 2014-7-30 13:55:52 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
被打了N种异常状态后,想想,除了装备上可以+xx免疫的能力
可否只使用状态+公用事件制作增加N回合异常状态免疫的法术或道具呢?
另外可否只使用状态+公用事件制作N次绝对防御或者N次物理(魔法)防御的法术或道具呢?
脚本冲突太多实在是不敢用,不过有相关脚本的话可以试试。

Lv5.捕梦者

梦石
0
星屑
35186
在线时间
4169 小时
注册时间
2007-12-15
帖子
10067
5
 楼主| 发表于 2014-8-3 07:54:10 | 只看该作者
RyanBern 发表于 2014-7-30 16:08
第一个问题,要好好利用数据库的功能,无需使用脚本。方法如下:
设置一个状态,这个状态的作用是“抵抗所 ...

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

点评

4L已编辑,注意查收  发表于 2014-8-3 11:07
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

4
发表于 2014-7-30 16:08:29 | 只看该作者
本帖最后由 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
复制代码
以上脚本没有考虑双属性或多属性的情况,如果一个技能是双属性【火/风】,一个状态完全防御火属性,那么这个状态也将完全防御这个技能。

点评

非常感谢~  发表于 2014-8-5 15:10

评分

参与人数 1星屑 +60 收起 理由
89444640 + 60 简单易用~

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
25 小时
注册时间
2014-7-30
帖子
46
3
发表于 2014-7-30 15:19:03 | 只看该作者
本帖最后由 1335557777 于 2014-7-30 15:22 编辑

可以啊,在
数据库-》队伍-》(选择你想要让自己免疫的敌人队伍)-》开始条件-》战斗 N 回合后-》(把它打开)
然后在
数据库-》队伍-》(选择你想要让自己免疫的敌人队伍)-》(事件编辑区)-》(变量操作:【0001:血量】=【001:阿尔西斯:hp】)-》(完全恢复)-》(体力增减:代入【0001:血量】)
测试一下,这样可以的
h
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33476
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

2
发表于 2014-7-30 15:03:19 | 只看该作者
  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. #==============================================================================
复制代码

点评

其实用数据库就可以完全解决的啦  发表于 2014-7-30 16:18

评分

参与人数 2星屑 +126 收起 理由
89444640 + 60 谢谢~
RyanBern + 66 塞糖

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-24 19:34

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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