####一、核心原理
传奇游戏中禁止宠物进入特定地图的脚本触发,主要通过**动态检测机制**和**地图事件绑定**实现。核心逻辑分为两种方案:
1.**机器人脚本循环检测**:通过定时任务检测玩家携带宠物状态并强制清除;
2.**地图配置文件触发**:利用地图参数绑定任务脚本,在玩家进入地图时自动执行检测。
需结合引擎功能(如M2设置)与脚本命令(如`CHECKSLAVECOUNT`、`KILLSLAVE`)完成操作。
---
####二、方案一:机器人脚本动态检测
**适用场景**:需全天候监控的地图(如皇宫、BOSS房间)。
**配置步骤**:
1.**创建机器人脚本**
在服务端`RobotDef`目录下新增脚本(如`AutoCheckPet.txt`),写入以下内容:
```
#AutoRunNPCRUNONDAY00:01@CheckPet
[@CheckPet]
#ACT
CHECKSLAVECOUNT地图编号>0
KILLSLAVEALL
```
-**`CHECKSLAVECOUNT`**:检测指定地图内玩家的宠物数量;
-**`KILLSLAVEALL`**:清除所有宠物。
2.**设置检测频率**
通过`RUNONDAY`或`RUNONWEEK`参数控制检测间隔,例如每小时检测一次:
```
#AutoRunNPCRUNONHOUR1@CheckPet
```
**优点**:覆盖全时段,防止玩家违规带入宠物。
**缺点**:频繁检测可能增加服务器负载。
---
####三、方案二:地图事件触发检测
**适用场景**:需精准控制进入行为的副本或活动地图。
**配置步骤**:
1.**修改地图配置文件**
打开`Mir200\Envir\MapInfo.txt`,在目标地图参数后添加任务脚本绑定:
```
[地图名称]DAYCHECKQUEST(Q001)
```
-**`CHECKQUEST(Q001)`**:绑定编号为`Q001`的任务脚本。
2.**编写任务脚本**
在`QuestDiary`目录下创建`Q001.txt`,写入检测与清除逻辑:
```
[@Main]
#IF
CHECKSLAVECOUNT>0
#ACT
KILLSLAVEALL
SENDMSG6"禁止携带宠物进入本地图!已强制清除。"
```
3.**启用地图事件触发**
在M2引擎中勾选功能设置:
```
M2→选项→功能设置→基本设置→启用地图事件触发
```
**注意**:未启用此选项将导致脚本失效。
**优点**:精准触发,减少资源消耗。
**缺点**:仅在地图入口生效,无法拦截中途召唤宠物的行为。
---
####四、高级配置:坐标范围触发(结合MapEvent.txt)
若需在特定坐标范围内禁止宠物,可扩展使用`MapEvent.txt`:
1.**配置触发规则**
在`MapEvent.txt`中定义事件:
```
地图编号坐标X坐标Y范围触发标识触发条件机率事件类型
D2061-1-10-1:06:*:001:@CheckPet
```
-**触发条件**:`6`表示检测爆出物品(此处用通配符`*`适配所有情况);
-**事件类型**:调用`QFunction.txt`中的`@CheckPet`脚本。
2.**编写功能脚本**
在`QFunction.txt`中添加:
```
[@CheckPet]
#ACT
CHECKSLAVECOUNT>0
KILLSLAVEALL
```
**适用场景**:限制BOSS刷新点、宝箱区域等关键坐标。
---
####五、引擎兼容性与注意事项
1.**引擎适配**
-3K引擎:支持`CHECKSLAVECOUNT`和`KILLSLAVE`命令;
-GOM/GEE引擎:需使用`CheckSlaveCount`和`KillSlave`等效语法。
2.**防绕过设计**
-**禁止召唤类物品**:在地图参数中添加`NORECALL`(禁止记忆套传送)、`NOMasterRecall`(禁止师徒传送);
-**清除宠物变量**:通过`CLEARNAMELIST..\QuestDiary\宠物列表.txt`重置玩家宠物数据。
3.**日志记录**
添加违规记录功能,便于GM追溯:
```
#ACT
KILLSLAVEALL
AddTextListEx..\QuestDiary\违规日志.txt[%日期]玩家[%s]携带宠物进入[%地图]
```
---
####六、结语
通过机器人脚本与地图事件的双重机制,可高效实现传奇地图的宠物禁止功能。开发者需根据实际需求选择方案,并注意引擎兼容性和反作弊设计,最终保障游戏的平衡性与公平性。
传奇游戏中禁止宠物进入特定地图的脚本触发,主要通过**动态检测机制**和**地图事件绑定**实现。核心逻辑分为两种方案:
1.**机器人脚本循环检测**:通过定时任务检测玩家携带宠物状态并强制清除;
2.**地图配置文件触发**:利用地图参数绑定任务脚本,在玩家进入地图时自动执行检测。
需结合引擎功能(如M2设置)与脚本命令(如`CHECKSLAVECOUNT`、`KILLSLAVE`)完成操作。
---
####二、方案一:机器人脚本动态检测
**适用场景**:需全天候监控的地图(如皇宫、BOSS房间)。
**配置步骤**:
1.**创建机器人脚本**
在服务端`RobotDef`目录下新增脚本(如`AutoCheckPet.txt`),写入以下内容:
```
#AutoRunNPCRUNONDAY00:01@CheckPet
[@CheckPet]
#ACT
CHECKSLAVECOUNT地图编号>0
KILLSLAVEALL
```
-**`CHECKSLAVECOUNT`**:检测指定地图内玩家的宠物数量;
-**`KILLSLAVEALL`**:清除所有宠物。
2.**设置检测频率**
通过`RUNONDAY`或`RUNONWEEK`参数控制检测间隔,例如每小时检测一次:
```
#AutoRunNPCRUNONHOUR1@CheckPet
```
**优点**:覆盖全时段,防止玩家违规带入宠物。
**缺点**:频繁检测可能增加服务器负载。
---
####三、方案二:地图事件触发检测
**适用场景**:需精准控制进入行为的副本或活动地图。
**配置步骤**:
1.**修改地图配置文件**
打开`Mir200\Envir\MapInfo.txt`,在目标地图参数后添加任务脚本绑定:
```
[地图名称]DAYCHECKQUEST(Q001)
```
-**`CHECKQUEST(Q001)`**:绑定编号为`Q001`的任务脚本。
2.**编写任务脚本**
在`QuestDiary`目录下创建`Q001.txt`,写入检测与清除逻辑:
```
[@Main]
#IF
CHECKSLAVECOUNT>0
#ACT
KILLSLAVEALL
SENDMSG6"禁止携带宠物进入本地图!已强制清除。"
```
3.**启用地图事件触发**
在M2引擎中勾选功能设置:
```
M2→选项→功能设置→基本设置→启用地图事件触发
```
**注意**:未启用此选项将导致脚本失效。
**优点**:精准触发,减少资源消耗。
**缺点**:仅在地图入口生效,无法拦截中途召唤宠物的行为。
---
####四、高级配置:坐标范围触发(结合MapEvent.txt)
若需在特定坐标范围内禁止宠物,可扩展使用`MapEvent.txt`:
1.**配置触发规则**
在`MapEvent.txt`中定义事件:
```
地图编号坐标X坐标Y范围触发标识触发条件机率事件类型
D2061-1-10-1:06:*:001:@CheckPet
```
-**触发条件**:`6`表示检测爆出物品(此处用通配符`*`适配所有情况);
-**事件类型**:调用`QFunction.txt`中的`@CheckPet`脚本。
2.**编写功能脚本**
在`QFunction.txt`中添加:
```
[@CheckPet]
#ACT
CHECKSLAVECOUNT>0
KILLSLAVEALL
```
**适用场景**:限制BOSS刷新点、宝箱区域等关键坐标。
---
####五、引擎兼容性与注意事项
1.**引擎适配**
-3K引擎:支持`CHECKSLAVECOUNT`和`KILLSLAVE`命令;
-GOM/GEE引擎:需使用`CheckSlaveCount`和`KillSlave`等效语法。
2.**防绕过设计**
-**禁止召唤类物品**:在地图参数中添加`NORECALL`(禁止记忆套传送)、`NOMasterRecall`(禁止师徒传送);
-**清除宠物变量**:通过`CLEARNAMELIST..\QuestDiary\宠物列表.txt`重置玩家宠物数据。
3.**日志记录**
添加违规记录功能,便于GM追溯:
```
#ACT
KILLSLAVEALL
AddTextListEx..\QuestDiary\违规日志.txt[%日期]玩家[%s]携带宠物进入[%地图]
```
---
####六、结语
通过机器人脚本与地图事件的双重机制,可高效实现传奇地图的宠物禁止功能。开发者需根据实际需求选择方案,并注意引擎兼容性和反作弊设计,最终保障游戏的平衡性与公平性。

