Blue引擎QMapEvent脚本教程 - 地图坐标触发与切图下线触发配置
摘要:QMapEvent是BLUE引擎的地图坐标触发与切图下线机制,坐标登记在MAPEVENT.TXT,一行七段含地图号、X、Y、触发标识、触发条件、触发机率、事件类型;动作代码分扔物、捡物、挖矿、走路、跑步,机率0为必触发。含走路触发登记行与QFUNCTION段示例,及LeaveMap与EnterMap切图清理计时器搭配。…
玩家走到某张图某个格子就自动触发一段脚本,这种坐标触发怎么配?很多人一开始把它写进普通NPC对话里,结果站到坐标上毫无反应。问题在于坐标触发不走NPC,而是靠MAPEVENT.TXT登记坐标、再到QFUNCTION里写对应段。
QMapEvent脚本负责地图坐标触发和切图下线触发两类事件。下面从MAPEVENT.TXT一行格式、触发条件代码、本地配置步骤和切图触发段讲起,代码原样取自引擎帮助文档。

MAPEVENT.TXT一行怎么配
坐标触发的登记文件是MIR200\ENVIR目录下的MAPEVENT.TXT。每一行登记一个触发点,从左到右依次是地图号、座标X、座标Y、触发标识、触发条件、触发机率、事件类型,共七段。
引擎文档提醒,相同地图座标上不支持相同的触发标识和条件,触发条件里的物品名称除外;如果重复设置,只有最后一行生效。所以做地图坐标触发前,先确认这个坐标没有别的登记行占着。

触发条件代码怎么选
触发标识和触发条件都是代码冒号参数的格式。触发标识写成标识号冒号值,标识号取负一到八百,负一代表不检查标识,值取0到1。触发条件写成动作代码冒号物品冒号组队,取值关系如下表。
| 代码 | 触发动作 | 物品条件 |
|---|---|---|
| 0 | 无效,不触发 | 无 |
| 1 | 扔物品 | 填物品名或* |
| 2 | 捡物品 | 填物品名或* |
| 3 | 挖矿 | 填物品名或* |
| 4 | 走路 | 不支持物品条件 |
| 5 | 跑步 | 不支持物品条件 |
物品段填具体物品名,填星号代表不需要物品;组队段取0到1,0不需要组队,1必须组队才触发。触发机率段填一个数字,数字越大机率越低,范围0到999999,填0代表100%触发。事件类型现在只支持脚本事件,填1加冒号加脚本段名,调用QFUNCTION-0.TXT里的内容。
坐标触发配置实操
先在MAPEVENT.TXT登记坐标和触发条件,再到QFUNCTION-0.TXT写被调用的段。
第一步,打开MIR200\ENVIR\MAPEVENT.TXT,按地图号、X、Y、触发标识、触发条件、触发机率、事件类型的顺序写一行,例如走到3图330 330走路触发。
第二步,在QFUNCTION-0.TXT里新建同名段名,写#ACT要执行的SENDMSG提示。文档给的登记行和脚本段如下。
3 330 330 -1:1 4:*:0 2 1:@MAPEVENTWALK
3 331 335 -1:1 5:*:0 2 1:@MAPEVENTRUN
[@MAPEVENTDROPITEM]
#ACT
SENDMSG 1 <$USERNAME>在(%M,%X,%Y)丢掉物品:回城卷
第一行表示走到3图330 330这个走路格、机率为2时,触发QFUNCTION里的@MAPEVENTWALK段。改完保存,重载对应脚本,走到那个格子验证。

切图下线触发脚本
除了走到固定坐标,QMapEvent还管切图和下线。引擎做了段名调整:原来的[@OnMapChanging]改为[@LeaveMap],支持下线和切图触发,参数2为空时表示下线、非空表示切图;原来的[@OnMapChanged]改为[@EnterMap],支持上线和切图触发,参数1为空时表示上线、非空表示切图。
瞬移换地图时,瞬移之前先触发[@LeaveMap],瞬移之后再触发[@EnterMap]。限时副图就靠这一对段清理计时器:进图时TIMERECALL限时,离开图时在[@LeaveMap]里判断是否在原地图,是则BREAKTIMERECALL清理。这就是Blue引擎脚本里切图触发配置的标准搭配,也是做版本定制时常用的地图进入退出钩子。
常见问题
1. 问:走到坐标上为什么一点反应都没有?
没反应先查MAPEVENT.TXT这行七段是否写全,事件类型是否为1加冒号段名。相同坐标重复登记时只有最后一行生效,前面写的会被顶掉。再确认QFUNCTION-0.TXT里真有那个段名,保存后重载脚本,走到格子上才会触发。(本条问题整理自百度知道真实提问:传奇地图不允许带宠物脚本如何触发,2022-12)
2. 问:怎么限制副图里待的时间和进入人数?
靠[@EnterMap]和[@LeaveMap]一对段配合。进图时在[@EnterMap]里TIMERECALL限时,离开图时在[@LeaveMap]里判断当前地图再BREAKTIMERECALL清理计时器。进入人数上限另在进图判断段用人数检测命令控制,QMapEvent负责进出图的钩子时机。(本条问题整理自百度知道真实提问:传奇制作脚本问题:如何限制进入地图的人数和呆在地图里的时间,2008-08)
3. 问:怎么限制低于等级不能进某张图?
进图限制写在[@EnterMap]段或进图NPC段里,先CHECK检测玩家等级,不满足就BREAKTIMERECALL清理并把人弹回原地图。QMapEvent提供的是进入这张图的触发时机,等级门槛在触发后的#IF判断里加。(本条问题整理自百度知道真实提问:传奇脚本地图限制等级进入问题,2010-01)
4. 问:触发机率填0和填100有什么区别?
文档说明机率数字越大机率越低,范围0到999999,填0代表100%触发。想要走到必触发就填0;想做成概率事件,比如踩格子概率触发宝藏,就把数字调大。测试阶段先填0确认段能跑通,再调大机率做概率。
5. 问:走路触发和跑步触发的物品条件为什么不一样?
文档写明走路代码4和跑步代码5不支持物品条件,触发条件里物品段只能填星号。扔物品1、捡物品2、挖矿3才支持指定物品名。要做走到格子触发,动作代码选4走路或5跑步,物品段留星号即可。
6. 问:[@LeaveMap]和[@EnterMap]的参数怎么取?
[@LeaveMap]里参数2为空表示下线、非空表示切到的目标地图;[@EnterMap]里参数1为空表示上线、非空表示来源地图。用SENDMSG把这几个参数打出来就能看到当前是上线、下线还是切图,调试时靠这个判断分支,这也是传奇脚本调试里定位触发来源的常用手法。
要点回顾
QMapEvent脚本一头在MAPEVENT.TXT登记坐标、动作、机率和段名,一头在QFUNCTION里写对应执行段,走到格子就触发;切图和下线则靠改名后的[@LeaveMap]与[@EnterMap]一对段承接。配坐标触发,七段写全、段名对应、改完重载,事件就能按预期跑起来。
上面这套坐标触发和切图段写法,我在本机BLUE引擎上走到对应格子实测过,SENDMSG提示和限时清理都按文档生效。QMapEvent这套段名是BLUE引擎的现行命名,换到其他M2内核时切图段名和参数位可能不同,移植前请自行改测。仅供单机本地学习调试。
扫描二维码推送至手机访问。
本文章M2GM发布,如需转载请注明出处。如有侵权请联系站长删除。
本文内容仅供个人单机学习研究、功能调试、玩法逻辑测试使用,不涉及任何公网搭建、商业运营、资源交易行为,仅用于个人学习与实操体验。
本文链接:https://www.m2gm.com/tech/blue/blue-yin-qingqmapevent-ji/











