针对你的需求,将原脚本的触发条件从“受所有攻击触发”修改为“仅受怪物攻击触发”,核心在于精确区分攻击者类型。原脚本使用<$CURRRTARGETNAME>获取攻击者名称,但无法区分该名称是怪物还是人物。
一、 关键修改思路
在1.76及之后的主流引擎(如GOM/GEE)中,判断攻击者是否为怪物的核心命令是:CHECKCURRTARGETRACE。该命令用于检测当前攻击目标的种族。
二、 修改后的脚本示例
将你的脚本段修改为以下内容:
[@Attack]
#if
#act
; 首先检测攻击者是否为怪物(种族代号通常 0=人物,1=怪物,具体以引擎手册为准)
CHECKCURRTARGETRACE = 1
#elseact
goto @Exit
; 继续执行原有的物品和文本列表检测
#if
checkitemw 始神≌领域·君
random 5
CHECKTEXTLIST ..\QuestDiary\三一真神.txt <$CURRRTARGETNAME>
#act
ChangeModeEx 14 10
ChangeModeEx 1 2
SENDMSG 6 你被怪物【<$CURRRTARGETNAME>】攻击,触发防麻痹效果10秒,无敌2秒!!!
break
[@Exit]
#act
; 如果攻击者是人物,这里为空或不执行任何操作,也可以添加提示
; SENDMSG 6 你被人物【<$CURRRTARGETNAME>】攻击,未触发特殊效果。
三、 关键代码解析
1. [@Attack]:这是一个通用的被攻击触发标签,当角色受到任何攻击时都会首先执行这段脚本。
2. CHECKCURRTARGETRACE = 1:这是核心判断命令。它的作用是检查当前攻击者的种族。在大多数引擎设定中,1代表怪物,0代表人物(玩家)。如果攻击者是怪物,条件成立,继续向下执行;如果是人物,则跳转到@Exit标签,直接结束脚本,不触发无敌效果。
3. 后续检测:仅在确认为怪物攻击后,才会继续判断你是否佩戴了“始神≌领域·君”这件物品,并进行随机数(random 5)和文本列表(CHECKTEXTLIST)的检测。只有全部通过,才会激活防麻痹和无敌效果。
4. [@Exit]:这是一个出口标签,当攻击者是人物时,脚本流程跳转到这里,可以选择不执行任何操作或给出提示。
四、 注意事项
1. 引擎确认:CHECKCURRTARGETRACE命令的种族代号可能因引擎版本略有不同。请务必查阅你所使用引擎的说明书,确认“怪物”对应的准确数字(绝大多数情况下是1)。
2. 路径确认:确保文本文件路径 ..\QuestDiary\三一真神.txt 存在且内容正确。
3. 逻辑顺序:脚本执行是顺序的。必须先判断攻击者类型,再判断物品和概率,这样效率最高,避免了不必要的检测。
4. 标签位置:确保修改后的脚本放置在正确的触发文件中(通常是 QFunction-0.txt 或 Market_Def 文件夹下对应的NPC脚本)。
通过以上修改,只有当攻击者是怪物,且你佩戴了指定物品、通过概率检测、并且怪物名字在名单内时,才会触发无敌效果。受到人物攻击将完全不会进入效果触发流程。

