脚本示例
怪物技能触发示例
用怪物技能.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.前缀的写法说明见 释放魔法。
