传奇脚本修改指南:如何让无敌效果仅对怪物攻击生效?

来源: 作者: 点击:
在传奇私人服务器脚本开发中,攻击触发机制的逻辑判断是核心难点。根据你的需求,**原始脚本存在以下问题**:当角色被玩家(人物)或怪物攻击时,都会触发无敌效果。而我们需要实现**仅怪物攻击触发无敌,人物攻击不触发**。以下是具体解决方案和实现原理:

---

#### 一、核心判断条件:区分攻击者类型
通过分析多个引擎的脚本规范(如),发现通用判断指令是 **`CHECKCURRTARGETRACE`**:
- **`CHECKCURRTARGETRACE = 0`** 表示攻击者是 **玩家**(人物)。
- **未满足上述条件**(即 `CHECKCURRTARGETRACE ≠ 0`)则表示攻击者是 **怪物**。

---

#### 二、修改后的脚本代码
```plaintext
#if
checkitemw 始神≌领域·君 1 ; 检查是否携带指定装备
random 5 ; 5%概率触发
CHECKTEXTLIST ..\QuestDiary\三一真神.txt <$CURRRTARGETNAME> ; 目标在名单中则跳过
CHECKCURRTARGETRACE <> 0 ; 关键!仅怪物攻击时生效[[1,8]]
#act
ChangeModeEx 14 10 ; 防麻痹10秒
ChangeModeEx 1 2 ; 无敌2秒[[4,5]]
SENDMSG 6 你被【<$CURRRTARGETNAME>】攻击了。触发防麻痹效果10秒,触发无敌2秒!!!
```

---

#### 三、代码解析与注意事项
1. **物品检查**
`checkitemw 始神≌领域·君 1`:确保角色装备了触发道具,避免无条件触发。

2. **概率控制**
`random 5`:表示每次被攻击时有5%的概率触发效果,降低滥用风险。

3. **目标过滤**
`CHECKTEXTLIST`:若攻击者名称在`三一真神.txt`列表中,则跳过触发(如BOSS或特定怪物除外)。

4. **核心判断**
`CHECKCURRTARGETRACE <> 0`:仅当攻击者为怪物时,执行后续动作。若删除此条件,则所有攻击均会触发。

5. **状态修改**
- `ChangeModeEx 14 10`:防麻痹效果持续10秒(模式14对应防麻痹)。
- `ChangeModeEx 1 2`:无敌效果持续2秒(模式1对应无敌)。

---

#### 四、扩展优化建议
1. **区分物理/魔法攻击**
可通过 `[@Struck]`(物理攻击)和 `[@MagicStruck]`(魔法攻击)标签分别处理。

2. **防止重复触发**
参考,添加变量控制(如`HUMAN 霸体`)避免短时间内多次触发。

3. **兼容多引擎**
HERO引擎需在`QFunction-0.txt`中编写,GEE/GOM引擎语法略有差异,需测试验证。

---

#### 五、常见问题排查
- **无效触发**:检查脚本文件路径是否正确,确保`三一真神.txt`存在且格式无误。
- **误触发人物攻击**:确认`CHECKCURRTARGETRACE`条件未被其他逻辑覆盖。
- **时间参数错误**:`ChangeModeEx`的时间单位为秒,若设为0可能导致永久状态。

通过以上修改,你的脚本将精准实现“仅怪物攻击触发无敌”的逻辑,提升游戏平衡性。建议在测试服验证后再部署到正式环境。