查看: 2206|回复: 0

[原创发布] 敌人的技能发动条件判断

[复制链接]
梦石
0
星屑
2920
在线时间
713 小时
注册时间
2010-7-25
回帖
659

开拓者

发表于 2019-6-7 11:02:00 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 jianyulei 于 2019-6-7 11:22 编辑

因为没找到根据敌人备注来决定AI的脚本,自己写了一个自用,顺便发出来.
但仔细想想,这脚本除了判断独立开关和自建全局变量似乎没啥用.....但也可能每个人的用法不一样吧


脚本
[pre lang="ruby"]

=begin
敌人的技能发动条件判断
老香蕉20190607

用法:在敌人的备注中备注以下

<AI1>
行动6:判断公式  #例 hp>100&&alive?&&!state?(10)  其他写法参考Game_BattlerBase类
行动1:判断公式  #多个技能的设定以此类推
<AI2>

设定公式写在<AI1>和<AI2>之间,请不要再里面写公式无关的任何东西,例如我上面范例里的#
行动后面跟着的数字是技能ID,敌人必须要先在行为模式中设定有这个技能才会进行本脚本的判断.
":"符号后面是判断公式,必须是最终能获得true或者flase的才行,可以用空格代替":".
判断句中self指代判断该行为的敌人,省去self直接写公式的话会默认有self;item是进行判断的技能.
本脚本不能判断受攻击者,但你可以和其他在item写备注的AI脚本一起使用来完善判断情况,例如Taroxd的目标扩展脚本.
当判断公式返回true时,本技能正常判断(要参与元脚本的判断),如果返回false则无法参与敌人

(!)注意:在判断句中不要使用空格

=end
class Game_Enemy < Game_Battler
  alias action_AI_valid? action_valid?
  def action_valid?(action)
    action_AI_valid?(action) && AI_met?(action)
  end
  def AI_met?(action)
    item = $data_skills[action.skill_id]
    if self.note.match(/<AI1>(.*?)<AI2>/mi)
      $1.split(/[\r\n]+/).each do |line|
        if line != ""
          if line.match(/行动(\S*)[: ](\S*)/)
            if action.skill_id == eval($1)
              return false if eval($2) != true
            end#if action
          end#if match
        end#if line
      end#each
    end #if self
    true
  end#def
end#class

[/pre]

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部