传奇脚本攻击触发条件过滤与实现方法

来源: 作者: 点击:
攻击者类型检测命令解析

要实现“仅被怪物攻击时触发,被人物攻击不触发”的逻辑,核心在于检测攻击者类型。传奇脚本提供多种攻击者检测命令,需根据引擎版本选择。

人物攻击与怪物攻击检测

•CHECKATTACKTYPE:检测本次攻击的攻击者类型。参数1=人物,2=怪物,3=全部。

•H.CheckAttackMode:HGE引擎专用,检测攻击模式。参数1=人物,2=怪物。

•<$ATTACKTYPE>:系统变量,记录最后一次攻击的来源类型。

脚本修改方案对比

方案A:使用CHECKATTACKTYPE命令(通用引擎)

在原有脚本中加入条件判断,过滤人物攻击。

修改后脚本示例
[@AttackTrigger]
#IF
CHECKATTACKTYPE2;检测攻击者是否为怪物(2=怪物)
checkitemw始神≌领域·君;检测佩戴指定物品
random5;5%概率触发
#ACT
ChangeModeEx1410;防麻痹10秒
ChangeModeEx12;无敌2秒
SENDMSG6你被怪物攻击,触发防麻痹效果10秒,触发无敌2秒!!!
BREAK

代码解析
1.CHECKATTACKTYPE2:关键过滤条件,只有攻击者为怪物时才继续向下执行。
2.random5:5%概率触发,避免每次被怪物攻击都生效。
3.BREAK:防止脚本继续向下执行其他段落。

方案B:使用H.CheckAttackMode命令(HGE引擎)

若服务端为HGE引擎,需使用专用命令。

HGE引擎脚本示例
[@AttackTrigger]
#IF
H.CheckAttackMode2;HGE引擎检测怪物攻击
checkitemw始神≌领域·君
random5
#ACT
ChangeModeEx1410
ChangeModeEx12
SENDMSG6怪物攻击触发防护效果!
BREAK


方案C:利用<$ATTACKTYPE>变量检测

通过系统变量记录的攻击类型进行判断,兼容性较强。

变量检测脚本示例
[@AttackTrigger]
#IF
EQUAL<$ATTACKTYPE>2;判断攻击类型是否为怪物
checkitemw始神≌领域·君
random5
#ACT
ChangeModeEx1410
ChangeModeEx12
SENDMSG6怪物攻击触发防护效果!
BREAK


脚本部署与触发配置

触发段落定位

上述脚本需放置在正确的触发段落中。根据描述,原脚本应在攻击触发段,通常是QFunction-0.txt中的[@Struck]或[@Attack]段落。

QFunction-0.txt中的配置
[@Struck];被攻击时触发
#IF
CHECKATTACKTYPE2
checkitemw始神≌领域·君
random5
#ACT
ChangeModeEx1410
ChangeModeEx12
SENDMSG6触发怪物攻击防护!
BREAK

部分引擎使用[@Attack]标签,需根据实际脚本环境确认。

概率触发机制优化

random5表示5%触发概率。若需调整触发频率,可修改数字:
•random1:1%概率,极低触发。

•random20:20%概率,较常触发。

•random100:100%概率,每次被怪物攻击都触发。

多条件复合判断

若需在特定地图或对特定怪物才生效,可添加额外条件。

地图与怪物双重限制示例
[@Struck]
#IF
CHECKATTACKTYPE2
checkitemw始神≌领域·君
random5
CHECKMAPNAME祖玛神殿;检测是否在祖玛神殿地图
CheckKillMonName祖玛卫士;检测攻击怪物是否为祖玛卫士
#ACT
ChangeModeEx1410
ChangeModeEx12
SENDMSG6在祖玛神殿被卫士攻击,触发防护!
BREAK

此脚本仅在祖玛神殿地图被祖玛卫士攻击时,才有概率触发无敌效果。

引擎差异与兼容性

•GOM/GEE引擎:支持CHECKATTACKTYPE命令,推荐使用方案A。

•HGE/翎风引擎:需使用H.CheckAttackMode或<$ATTACKTYPE>变量,参考方案B或C。

•BLUE/LEG引擎:可能使用CheckAttack命令,参数格式为CheckAttack怪物。

验证方法:在M2控制台输入@帮助查看引擎支持的命令列表,或查阅引擎说明书确认攻击检测命令的准确格式。

常见问题排查

•触发无效:确认脚本段落标签正确([@Struck]或[@Attack]);检查物品名称是否与数据库完全一致(包括特殊符号)。

•人物攻击仍触发:确认CHECKATTACKTYPE参数为2(怪物),若为1或3则会包括人物攻击。

•概率不生效:random命令后的数字代表百分之一概率,random5即5/100概率,并非5/1000。

•M2报错:保存脚本后需在M2控制台输入@ReloadQf重载QFunction-0.txt,修改才能生效。
[顶部]