脚本示例

怪物技能触发示例

用怪物技能.csv 配合 HASH 表与 [@UnderAttack] 触发,让被攻击的怪物按几率对攻击者释放指定技能。

用途

用一张静态技能表加 [@UnderAttack] 触发,让指定怪物在被攻击时按几率释放技能。示例以白野猪释放劈星斩为例:技能表写在 Envir\MonData\怪物技能.csv,服务器启动时用 HASH 命令整表载入,再在 [@UnderAttack] 里按攻击者名字取技能 ID 并用 T.MagicFire 释放。

参考脚本

1、静态数据表
Envir\MonData\怪物技能.csv
内容如下:
; 白野猪赋予劈星斩
白野猪,61,-1,,

2、启动加载数据表
[@OnStart]
#act
Hash H_怪物技能 Load ..\MonData\怪物技能.csv

3、怪物攻击人物或下属将触发
[@UnderAttack]
; ........

; 简单几率+只有怪物触发,或者根据血量百分比等条件
#if(1)
!Random 3
CompVal <$ATTINFO_ISHUMAN> = 1 s
#act
Break

; 静态数据表没问题可以不检测技能ID有效性
#if
#act
Mov M96 <$HASH(H_怪物技能)<$ATTINFO_NAME>>
#if
CompVal <$STR(M96)> > 0 i
CompVal <$STR(M96)> < 255 i
#act
T.MagicFire <$STR(M96)> 3 1 -1 6 550 0 3

关键点

  • 数据表放在 Envir\MonData\怪物技能.csv,示例内容 白野猪,61,-1,, 表示给白野猪赋予劈星斩;61 为该技能 ID。
  • 启动时用 [@OnStart] 里的 Hash H_怪物技能 Load ..\MonData\怪物技能.csv 把整张表读进 HASH,之后用 <$HASH(H_怪物技能)<怪物名>> 取值。
  • 触发条件是怪物攻击人物或其下属时进入 [@UnderAttack];实际使用前要在 !Setup.txt 打开 AttackTrigger=1,并让该怪物进入攻击触发名单(DBC/DBC2000 版本用 Envir\MonAttackTrigger.txt,SQLite 版本对应 monster 表的 HitTrigger 字段),否则这段脚本不会执行。
  • 示例先做两层过滤:!Random 3 是约三分之一的几率;CompVal <$ATTINFO_ISHUMAN> = 1 s 表示攻击者为人物时直接 Break,从而只让怪物攻击进入后续逻辑(注释写的“简单几率+只有怪物触发”)。血量百分比一类更细的条件也可以在这一段继续加判断。
  • 技能 ID 用 Mov M96 <$HASH(H_怪物技能)<$ATTINFO_NAME>> 按攻击者名字取;后面两句 CompVal ... > 0 i 与 CompVal ... < 255 i 用来校验取到的是有效技能 ID,注释说明静态数据表没问题时这一步可以省掉。
  • 最后用 T.MagicFire <技能ID> 3 1 -1 6 550 0 3 释放技能:技能等级 3、显示技能效果 1、以当前目标为中心做半径 6 的溅射、延迟 550 毫秒、最多命中 3 个目标。T. 前缀的写法说明见 释放魔法。

相关阅读