在传奇私人服务器脚本开发中,攻击触发机制的逻辑判断是核心难点。根据你的需求,**原始脚本存在以下问题**:当角色被玩家(人物)或怪物攻击时,都会触发无敌效果。而我们需要实现**仅怪物攻击触发无敌,人物攻击不触发**。以下是具体解决方案和实现原理:
---
####一、核心判断条件:区分攻击者类型
通过分析多个引擎的脚本规范(如),发现通用判断指令是**`CHECKCURRTARGETRACE`**:
-**`CHECKCURRTARGETRACE=0`**表示攻击者是**玩家**(人物)。
-**未满足上述条件**(即`CHECKCURRTARGETRACE≠0`)则表示攻击者是**怪物**。
---
####二、修改后的脚本代码
```plaintext
#if
checkitemw始神≌领域·君1;检查是否携带指定装备
random5;5%概率触发
CHECKTEXTLIST..\QuestDiary\三一真神.txt<$CURRRTARGETNAME>;目标在名单中则跳过
CHECKCURRTARGETRACE<>0;关键!仅怪物攻击时生效[[18]]
#act
ChangeModeEx1410;防麻痹10秒
ChangeModeEx12;无敌2秒[[45]]
SENDMSG6你被【<$CURRRTARGETNAME>】攻击了。触发防麻痹效果10秒触发无敌2秒!!!
```
---
####三、代码解析与注意事项
1.**物品检查**
`checkitemw始神≌领域·君1`:确保角色装备了触发道具,避免无条件触发。
2.**概率控制**
`random5`:表示每次被攻击时有5%的概率触发效果,降低滥用风险。
3.**目标过滤**
`CHECKTEXTLIST`:若攻击者名称在`三一真神.txt`列表中,则跳过触发(如BOSS或特定怪物除外)。
4.**核心判断**
`CHECKCURRTARGETRACE<>0`:仅当攻击者为怪物时,执行后续动作。若删除此条件,则所有攻击均会触发。
5.**状态修改**
-`ChangeModeEx1410`:防麻痹效果持续10秒(模式14对应防麻痹)。
-`ChangeModeEx12`:无敌效果持续2秒(模式1对应无敌)。
---
####四、扩展优化建议
1.**区分物理/魔法攻击**
可通过`[@Struck]`(物理攻击)和`[@MagicStruck]`(魔法攻击)标签分别处理。
2.**防止重复触发**
参考,添加变量控制(如`HUMAN霸体`)避免短时间内多次触发。
3.**兼容多引擎**
HERO引擎需在`QFunction-0.txt`中编写,GEE/GOM引擎语法略有差异,需测试验证。
---
####五、常见问题排查
-**无效触发**:检查脚本文件路径是否正确,确保`三一真神.txt`存在且格式无误。
-**误触发人物攻击**:确认`CHECKCURRTARGETRACE`条件未被其他逻辑覆盖。
-**时间参数错误**:`ChangeModeEx`的时间单位为秒,若设为0可能导致永久状态。
通过以上修改,你的脚本将精准实现“仅怪物攻击触发无敌”的逻辑,提升游戏平衡性。建议在测试服验证后再部署到正式环境。
---
####一、核心判断条件:区分攻击者类型
通过分析多个引擎的脚本规范(如),发现通用判断指令是**`CHECKCURRTARGETRACE`**:
-**`CHECKCURRTARGETRACE=0`**表示攻击者是**玩家**(人物)。
-**未满足上述条件**(即`CHECKCURRTARGETRACE≠0`)则表示攻击者是**怪物**。
---
####二、修改后的脚本代码
```plaintext
#if
checkitemw始神≌领域·君1;检查是否携带指定装备
random5;5%概率触发
CHECKTEXTLIST..\QuestDiary\三一真神.txt<$CURRRTARGETNAME>;目标在名单中则跳过
CHECKCURRTARGETRACE<>0;关键!仅怪物攻击时生效[[18]]
#act
ChangeModeEx1410;防麻痹10秒
ChangeModeEx12;无敌2秒[[45]]
SENDMSG6你被【<$CURRRTARGETNAME>】攻击了。触发防麻痹效果10秒触发无敌2秒!!!
```
---
####三、代码解析与注意事项
1.**物品检查**
`checkitemw始神≌领域·君1`:确保角色装备了触发道具,避免无条件触发。
2.**概率控制**
`random5`:表示每次被攻击时有5%的概率触发效果,降低滥用风险。
3.**目标过滤**
`CHECKTEXTLIST`:若攻击者名称在`三一真神.txt`列表中,则跳过触发(如BOSS或特定怪物除外)。
4.**核心判断**
`CHECKCURRTARGETRACE<>0`:仅当攻击者为怪物时,执行后续动作。若删除此条件,则所有攻击均会触发。
5.**状态修改**
-`ChangeModeEx1410`:防麻痹效果持续10秒(模式14对应防麻痹)。
-`ChangeModeEx12`:无敌效果持续2秒(模式1对应无敌)。
---
####四、扩展优化建议
1.**区分物理/魔法攻击**
可通过`[@Struck]`(物理攻击)和`[@MagicStruck]`(魔法攻击)标签分别处理。
2.**防止重复触发**
参考,添加变量控制(如`HUMAN霸体`)避免短时间内多次触发。
3.**兼容多引擎**
HERO引擎需在`QFunction-0.txt`中编写,GEE/GOM引擎语法略有差异,需测试验证。
---
####五、常见问题排查
-**无效触发**:检查脚本文件路径是否正确,确保`三一真神.txt`存在且格式无误。
-**误触发人物攻击**:确认`CHECKCURRTARGETRACE`条件未被其他逻辑覆盖。
-**时间参数错误**:`ChangeModeEx`的时间单位为秒,若设为0可能导致永久状态。
通过以上修改,你的脚本将精准实现“仅怪物攻击触发无敌”的逻辑,提升游戏平衡性。建议在测试服验证后再部署到正式环境。

