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

Project1

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

[已经过期] 被攻击对象问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
322 小时
注册时间
2011-6-24
帖子
274
跳转到指定楼层
1
发表于 2012-12-14 20:52:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我在  Game_Battler 3   设置了个技能变量
如果 if skill.id == 31
   if  被攻击的角色是 (1 到 20号)  or 被攻击的者是敌人
    self.damage = 500 + user.level
   end
当敌人用这技能攻击角色时  如果被攻击的角色是 1 到 20号的话  或 被攻击的者是敌人
才受伤害  这要怎么写

Lv1.梦旅人

巴斯克维尔的猎犬

梦石
0
星屑
50
在线时间
66 小时
注册时间
2007-6-25
帖子
8320

第1届Title华丽大赛冠军

2
发表于 2012-12-19 19:50:34 | 只看该作者
光在 Game_Battler里写不行,因为要用到角色或者敌人的ID,而这两个ID是定义在 Game_Battler的子类里的, Game_Battler类不可见它们。
所以可以写在Scene_Battle 4类里,调用Game_Battle处理技能伤害之前的地方。

大概354行开始
  1.     # ★特殊技能31
  2.     skiId = @active_battler.current_action.skill_id
  3.     for target in @target_battlers
  4.       validSki = false
  5.       # 仅当目标是actor_id在1~20间的Game_Actor实例,或者是Game_Enemy实例时,31号技能才有效
  6.       if (target.is_a?(Game_Actor) && (target.actor_id>=1 || target.actor_id<=20)) ||
  7.         target.is_a?(Game_Enemy)
  8.         validSki = true
  9.       end
  10.       # 只有非31号技能,或者有效的31号技能时,才会做伤害处理
  11.       if skiId!=31 || validSki
  12.         target.skill_effect(@active_battler, @skill)
  13.       end
  14.     end
复制代码
skill_effect这个方法就是具体处理技能伤害的了,你可以把你要写的31号技能伤害写在里面,就像你写的那样
if skill.id == 31
  self.damage = 500 + user.level
end
具体怎么写自己看吧。

然后还有一个地方记得千万要改,就是Game_Actor类,
在24行加上
  1. attr_reader   :actor_id                   # 角色ID
复制代码
因为actor_id默认是私有的,在Scene_Battle里访问不到它,需要让它能访问。

评分

参与人数 1星屑 +66 收起 理由
hys111111 + 66 感谢回答

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 05:12

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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