在传奇服务端中,限制特定地图内使用宠物(包括英雄、召唤兽、虎卫等)需通过地图进入事件检测角色状态,并强制收回或阻止进入。该功能依赖QFunction脚本系统,在玩家踏入地图瞬间触发判断逻辑。
一、确定目标地图编号
首先明确需限制的地图编号,例如“封魔谷”对应地图号201。该编号用于命名脚本文件及条件判断。
二、创建地图专属脚本文件
进入服务端目录 Mir200EnvirQuestDiary,新建以地图编号命名的文本文件,如 201.txt。所有限制逻辑必须写入此文件。
三、添加地图进入检测事件
在 201.txt 中编写角色进入时的处理流程:
[@MapEnter]
IF
CHECKHERO
ACT
SENDMSG 0 该地图禁止携带英雄,请先收回。
MAPMOVE 001 100 100
BREAK
IF
CHECKPET
ACT
SENDMSG 0 该地图禁止携带宠物,请先收回。
MAPMOVE 001 100 100
CHECKHERO 检测是否拥有已召唤英雄,CHECKPET 检测是否存在召唤类宠物(如虎卫、月灵)。任一条件成立即传送回城并中断后续操作。
四、支持自定义宠物类型检测
若需针对特定宠物(如“狐月”),可通过物品或技能判断。例如:
IF
HAVEBUFF 1001
ACT
SENDMSG 0 禁止携带狐月进入。
MAPMOVE 001 100 100
其中 1001 为狐月对应的Buff编号,需根据实际Skill.txt配置调整。
五、防止反复尝试进入
为避免玩家连续踏入,可设置冷却变量:
IF
EQUAL A0 1
ACT
SENDMSG 0 冷却中,稍后再试。
MAPMOVE 001 100 100
BREAK
ELSE
SET A0 1
TIMER 5000 @ResetCD
[@ResetCD]
ACT
SET A0 0
利用 A0 变量标记5秒内禁止再次进入。
六、全局脚本联动(可选)
若多个地图需统一限制,可在 Human.txt 中集中处理:
[@MapEnter_201]
[@MapEnter_202]
[@MapEnter_300]
CALL [QuestDiaryPetRestrict.txt]
将通用逻辑写入 PetRestrict.txt,通过 #CALL 复用代码。
七、测试验证步骤
启动服务端,召唤英雄或宠物;
尝试进入地图201;
观察是否被自动传送并收到提示;
检查未携带宠物时能否正常进入。
若无效,确认:
脚本文件名与地图编号完全匹配;
CHECKHERO / CHECKPET 指令被当前引擎支持;
文件保存为ANSI编码,无BOM头。
通过上述配置,可有效禁止玩家在指定传奇地图内携带任何类型宠物,适用于竞技场、特殊副本或平衡性场景。

