传奇地图禁止携带宠物脚本终极指南,从基础检测到智能清除的全面解析

来源: 作者: 点击:
#### 一、禁止带宠物的核心实现逻辑
在传奇私人服务器中,地图禁止携带宠物的本质是**双重控制机制**:通过**地图参数强制限制**与**动态脚本检测清除**的组合方案。其底层逻辑包含:
1. **地图准入规则**:修改`MapInfo.txt`配置文件,设置地图准入条件(如禁止召唤类操作)
2. **实时监控系统**:通过机器人脚本定时扫描玩家状态,强制清除违规宠物
3. **事件触发机制**:利用`QFunction-0.txt`中的穿戴/传送事件触发检测

---

### 二、基础配置:地图参数强制限制
#### 1. **地图配置文件修改(MapInfo.txt)**
在`D:\MirServer\Mir200\Envir\MapInfo.txt`中添加以下参数:
```ini
[地图名] MISSION NORECALL NOGUILDRECALL
```

- **参数解析**:
- `MISSION`:强制清除地图内所有召唤物(包括宠物)
- `NORECALL`:禁止记忆召唤类技能(如法师诱惑之光)
- `NOGUILDRECALL`:禁止行会召唤操作

#### 2. **智能刷怪参数扩展**
对需要动态清理的地图添加:
```ini
[BOSS之家] NOMANNOMON
```

- `NOMANNOMON`:当无人存在时自动清理地图内所有生物(含宠物)

---

### 三、动态脚本解决方案
#### 1. **机器人脚本定时清理(AutoRunRobot.txt)**
在`MirServer\Mir200\Envir\Robot_def\AutoRunRobot.txt`中添加:
```bash
#AutoRun NPC SEC 10 @清理宠物
```

对应机器人脚本:
```lua
[@清理宠物]
#IF
HOUR 20:00-22:00 //限制生效时间段
#ACT
CLEARMAPMON 沙巴克皇宫 //清理地图怪物
GMEXECUTE 全服 KILLSLAVE @MapIn(沙巴克皇宫) //强制清除宠物
SENDMSG 6 [系统]沙巴克皇宫已清场,禁止携带宠物!
```

**技术要点**:
- `CLEARMAPMON`需配合`MapQuest_def\MonGen.txt`刷怪配置
- `GMEXECUTE`命令需M2引擎开启GM权限穿透

#### 2. **NPC传送门预检测**
在传送NPC脚本中添加条件判断:
```lua
[@进入皇宫]
#IF
CHECKSLAVECOUNT > 0 //检测宠物数量
#ACT
MESSAGEBOX 禁止携带宠物进入皇宫!
BREAK
#ELSEACT
MAPMOVE 沙巴克皇宫 330 330
```


---

### 四、高级功能:智能宠物检测系统
#### 1. **多维度状态检测表**

| 检测维度 | 命令示例 | 适用场景 |
|-----------------|-------------------------------|-----------------------|
| 宠物数量 | `CHECKSLAVECOUNT` | 基础准入检测 |
| 宠物类型 | `CHECKBATTERYID 玉兔` | 限制特定宠物 |
| 宠物等级 | `CHECKSLAVELEVEL > 50` | 高等级宠物限制 |
| 携带时间 | `CHECKPETONTIME > 3600` | 长时间挂机检测 |


#### 2. **动态惩罚机制**
在`QFunction-0.txt`中添加:
```lua
[@OnSlaveComeOut] //宠物召唤触发事件
#IF
MAPNAME = 沙巴克皇宫
#ACT
KILLSLAVE //立即清除宠物
KICK //踢出违规玩家
SENDMSG 0 [%s]在皇宫违规召唤宠物,已被强制下线!
```


---

### 五、引擎差异适配指南

| 引擎类型 | 特性支持 | 注意事项 |
|----------|----------------------------------|---------------------------------|
| GOM | 支持`CLEARMAPMON`动态清理 | 需更新至1108+版本 |
| GEE | 专用`DELMAPEFFECT`清除召唤特效 | 需配套GEE登录器 |
| BLUE | 仅支持基础`KILLSLAVE`命令 | 需手动修改M2参数 |
| HERO | 需通过`MapEvent.txt`触发 | 事件触发延迟较高 |


---

### 六、调试与排错手册
#### 1. **常见故障排查表**

| 故障现象 | 检测点 | 解决方案 |
|-------------------------|---------------------------------|-----------------------------|
| 宠物未被清除 | 检查`KILLSLAVE`命令权限 | 在M2引擎开启GM命令穿透 |
| 地图参数不生效 | 验证`MapInfo.txt`编码格式 | 使用Notepad++转为ANSI编码 |
| 机器人脚本未执行 | 查看`Robot.txt`执行间隔设置 | 确保格式为`SEC 10`(10秒) |


#### 2. **测试命令集**
```lua
// 模拟玩家带宠传送
GMEXECUTE 召唤 虎卫
GMEXECUTE MAPMOVE 沙巴克皇宫 330 330

// 查看实时宠物列表
GMEXECUTE ShowSlaveList
```


---

### 结语:安全与体验的平衡法则
通过**三层防护体系**(准入限制+动态清除+违规惩罚),可有效实现地图宠物管控。建议对核心地图(如沙巴克)采用混合方案:
1. **入口NPC预检测**阻止90%违规行为
2. **机器人脚本每30秒二次清理**
3. **玩家下线时自动记录宠物状态**,防止卡位BUG