Project1

标题: 请教战斗中判断数据库里是否设定了NPC能使用第10号技能方法 [打印本页]

作者: taeckle    时间: 2020-2-20 13:28
标题: 请教战斗中判断数据库里是否设定了NPC能使用第10号技能方法
我是这么想的,在类skill_effect中判断我方队员是否学会了第10号技能可以这么写:
   if user.is_a?(Game_Actor) && user.skill_learn?(10)
     XXXX #这里是条件成立后的结果
  end

那要是在skill_effect中判断当前敌人NPC是否在数据库里设定了能使用第10号技能该咋弄啊?
if user.is_a?(Game_Enemy)  && ??? # 就这里不会写。。
XXXX
end

还请大神指点一二,多谢了!


作者: 芯☆淡茹水    时间: 2020-2-20 14:08
给敌人写一个 skill_learn?  抽取所有技能行动中的技能ID,判断是否包含欲判断的技能就行了。
没做 当前环境能否使用 的判断,要判断自己加就行了。
  1. class Game_Enemy
  2.   def skill_learn?(skill_id)
  3.     arr = self.actions.find_all{|a| a.kind == 1 && a.skill_id > 0 }
  4.     return arr.map{|a| a.skill_id }.include?(skill_id)
  5.   end
  6. end
复制代码

作者: SailCat    时间: 2020-2-20 14:25
本帖最后由 SailCat 于 2020-2-20 14:57 编辑

RUBY 代码复制
  1. class Game_Enemy
  2. def skill_learn?(skill_id)
  3.     self.actions.any? {|a| a.skill_id == skill_id and ((a.condition_turn_b == 0 and a.condition_turn_a == $game_temp.battle_turn) or (a.condition_turn_b > 0 and ($game_temp.battle_turn - a.condition_turn_a) % a.condition_turn_b == 0)) and (self.hp * 100 / self.maxhp < a.condition_hp) and ($game_party.max_level >= a.condition_level) and (a.condition_switch_id > 0 and $game_switches[a.condition_switch_id])}
  4. end

然后你可以把user.is_a?的判断删了
作者: taeckle    时间: 2020-2-21 13:31
本帖最后由 taeckle 于 2020-2-21 13:52 编辑
SailCat 发表于 2020-2-20 14:25
class Game_Enemy
def skill_learn?(skill_id)
    self.actions.any? {|a| a.skill_id == skill_id and (( ...


请问大神这里哪句是“判断数据库里是否设定了NPC能使用第X号技能方法”啊?

还有这个def放到那个class skill_effect 里怎么用啊?

大神可以举个例子让咱学习下吗。。


作者: taeckle    时间: 2020-2-21 14:22
本帖最后由 taeckle 于 2020-2-21 18:17 编辑
SailCat 发表于 2020-2-20 14:25
class Game_Enemy
def skill_learn?(skill_id)
    self.actions.any? {|a| a.skill_id == skill_id and (( ...


还有大神你这个脚本仅限对有开关限制使用条件的技能有效,
如果一个技能敌人使用这个技能的数据库条件设置里没设置开关这个选项就无效了...



作者: taeckle    时间: 2020-2-23 01:50
标题: 请教战斗中判断数据库里是否设定了NPC能使用第10号技能方法
本帖最后由 taeckle 于 2020-2-23 01:55 编辑



作者: taeckle    时间: 2020-2-23 02:15
本帖最后由 taeckle 于 2020-2-23 02:17 编辑
SailCat 发表于 2020-2-20 14:25
class Game_Enemy
def skill_learn?(skill_id)
    self.actions.any? {|a| a.skill_id == skill_id and (( ...


大神这个脚本还有两个问题:
1. 如果在数据库里对技能不设置HP大于多少才能使用则脚本无效
1. 如果在数据库里对技能不设置等级大于多少才能使用则脚本无效





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