Project1
标题:
被攻击对象问题
[打印本页]
作者:
sblkhgm
时间:
2012-12-14 20:52
标题:
被攻击对象问题
我在 Game_Battler 3 设置了个技能变量
如果 if skill.id == 31
if 被攻击的角色是 (1 到 20号) or 被攻击的者是敌人
self.damage = 500 + user.level
end
当敌人用这技能攻击角色时 如果被攻击的角色是 1 到 20号的话 或 被攻击的者是敌人
才受伤害 这要怎么写
作者:
匈魔剑
时间:
2012-12-19 19:50
光在 Game_Battler里写不行,因为要用到角色或者敌人的ID,而这两个ID是定义在 Game_Battler的子类里的, Game_Battler类不可见它们。
所以可以写在Scene_Battle 4类里,调用Game_Battle处理技能伤害之前的地方。
大概354行开始
# ★特殊技能31
skiId = @active_battler.current_action.skill_id
for target in @target_battlers
validSki = false
# 仅当目标是actor_id在1~20间的Game_Actor实例,或者是Game_Enemy实例时,31号技能才有效
if (target.is_a?(Game_Actor) && (target.actor_id>=1 || target.actor_id<=20)) ||
target.is_a?(Game_Enemy)
validSki = true
end
# 只有非31号技能,或者有效的31号技能时,才会做伤害处理
if skiId!=31 || validSki
target.skill_effect(@active_battler, @skill)
end
end
复制代码
skill_effect这个方法就是具体处理技能伤害的了,你可以把你要写的31号技能伤害写在里面,就像你写的那样
if skill.id == 31
self.damage = 500 + user.level
end
具体怎么写自己看吧。
然后还有一个地方记得千万要改,就是Game_Actor类,
在24行加上
attr_reader :actor_id # 角色ID
复制代码
因为actor_id默认是私有的,在Scene_Battle里访问不到它,需要让它能访问。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1