攻击者类型检测命令解析
要实现“仅被怪物攻击时触发,被人物攻击不触发”的逻辑,核心在于检测攻击者类型。传奇脚本提供多种攻击者检测命令,需根据引擎版本选择。
人物攻击与怪物攻击检测
• CHECKATTACKTYPE:检测本次攻击的攻击者类型。参数1=人物,2=怪物,3=全部。
• H.CheckAttackMode:HGE引擎专用,检测攻击模式。参数1=人物,2=怪物。
• <$ATTACKTYPE>:系统变量,记录最后一次攻击的来源类型。
脚本修改方案对比
方案A:使用CHECKATTACKTYPE命令(通用引擎)
在原有脚本中加入条件判断,过滤人物攻击。
修改后脚本示例
[@AttackTrigger]
#IF
CHECKATTACKTYPE 2 ;检测攻击者是否为怪物(2=怪物)
checkitemw 始神≌领域·君 ;检测佩戴指定物品
random 5 ;5%概率触发
#ACT
ChangeModeEx 14 10 ;防麻痹10秒
ChangeModeEx 1 2 ;无敌2秒
SENDMSG 6 你被怪物攻击,触发防麻痹效果10秒,触发无敌2秒!!!
BREAK
代码解析
1. CHECKATTACKTYPE 2:关键过滤条件,只有攻击者为怪物时才继续向下执行。
2. random 5:5%概率触发,避免每次被怪物攻击都生效。
3. BREAK:防止脚本继续向下执行其他段落。
方案B:使用H.CheckAttackMode命令(HGE引擎)
若服务端为HGE引擎,需使用专用命令。
HGE引擎脚本示例
[@AttackTrigger]
#IF
H.CheckAttackMode 2 ;HGE引擎检测怪物攻击
checkitemw 始神≌领域·君
random 5
#ACT
ChangeModeEx 14 10
ChangeModeEx 1 2
SENDMSG 6 怪物攻击触发防护效果!
BREAK
方案C:利用<$ATTACKTYPE>变量检测
通过系统变量记录的攻击类型进行判断,兼容性较强。
变量检测脚本示例
[@AttackTrigger]
#IF
EQUAL <$ATTACKTYPE> 2 ;判断攻击类型是否为怪物
checkitemw 始神≌领域·君
random 5
#ACT
ChangeModeEx 14 10
ChangeModeEx 1 2
SENDMSG 6 怪物攻击触发防护效果!
BREAK
脚本部署与触发配置
触发段落定位
上述脚本需放置在正确的触发段落中。根据描述,原脚本应在攻击触发段,通常是QFunction-0.txt中的[@Struck]或[@Attack]段落。
QFunction-0.txt中的配置
[@Struck] ;被攻击时触发
#IF
CHECKATTACKTYPE 2
checkitemw 始神≌领域·君
random 5
#ACT
ChangeModeEx 14 10
ChangeModeEx 1 2
SENDMSG 6 触发怪物攻击防护!
BREAK
部分引擎使用[@Attack]标签,需根据实际脚本环境确认。
概率触发机制优化
random 5表示5%触发概率。若需调整触发频率,可修改数字:
• random 1:1%概率,极低触发。
• random 20:20%概率,较常触发。
• random 100:100%概率,每次被怪物攻击都触发。
多条件复合判断
若需在特定地图或对特定怪物才生效,可添加额外条件。
地图与怪物双重限制示例
[@Struck]
#IF
CHECKATTACKTYPE 2
checkitemw 始神≌领域·君
random 5
CHECKMAPNAME 祖玛神殿 ;检测是否在祖玛神殿地图
CheckKillMonName 祖玛卫士 ;检测攻击怪物是否为祖玛卫士
#ACT
ChangeModeEx 14 10
ChangeModeEx 1 2
SENDMSG 6 在祖玛神殿被卫士攻击,触发防护!
BREAK
此脚本仅在祖玛神殿地图被祖玛卫士攻击时,才有概率触发无敌效果。
引擎差异与兼容性
• GOM/GEE引擎:支持CHECKATTACKTYPE命令,推荐使用方案A。
• HGE/翎风引擎:需使用H.CheckAttackMode或<$ATTACKTYPE>变量,参考方案B或C。
• BLUE/LEG引擎:可能使用CheckAttack命令,参数格式为CheckAttack 怪物。
验证方法:在M2控制台输入@帮助查看引擎支持的命令列表,或查阅引擎说明书确认攻击检测命令的准确格式。
常见问题排查
• 触发无效:确认脚本段落标签正确([@Struck]或[@Attack]);检查物品名称是否与数据库完全一致(包括特殊符号)。
• 人物攻击仍触发:确认CHECKATTACKTYPE参数为2(怪物),若为1或3则会包括人物攻击。
• 概率不生效:random命令后的数字代表百分之一概率,random 5即5/100概率,并非5/1000。
• M2报错:保存脚本后需在M2控制台输入@ReloadQf重载QFunction-0.txt,修改才能生效。

