传奇世界单机版限时地图脚本编写方法与完整示例

来源: 作者: 点击:
传奇世界单机版本中,限时地图指玩家进入后在设定时间内自动踢出或传送离开的地图。实现该功能需结合触发条件、计时器和坐标跳转,核心依赖QFunction脚本系统与NPC控制逻辑。

以下为标准写法,适用于主流引擎(如Hero、Mir3):

第一步:创建地图入口NPC
在D:MirWorldMap(假设路径)目标地图附近放置NPC,例如“限时挑战使者”,坐标设为(123,456)。其对话脚本(如Npc_defTimedGuard.txt)内容如下:

[@main]
IF
CHECKLEVELEX 30
ACT
goto @enter_check
ELSEACT
say 你的等级不足30级,无法进入限时地图。

[@enter_check]
IF
checkitem 限时令牌 1
ACT
take 限时令牌 1
mapmove Q301 10 10
set [TIMED_MAP_ENTER] 1
starttimer 1800 ; 单位秒,1800=30分钟
message 你已进入限时地图,30分钟后将被自动传送出去。
ELSEACT
say 需要消耗一个才能进入。

第二步:配置定时器响应
在QFunction-0.txt中添加全局计时器处理段:

[@Timer1800]
IF
EQUAL [TIMED_MAP_ENTER] 1
ACT
mapmove 3 ; 传送至盟重省(地图编号3)
set [TIMED_MAP_ENTER] 0
message 限时结束,你已被传送回主城。

第三步:防止重复进入与状态清理
在玩家登出或死亡时清除标记,避免计时器残留。在QManage.txt中加入:

[@Logout]
ACT
set [TIMED_MAP_ENTER] 0

[@Death]
IF
EQUAL [TIMED_MAP_ENTER] 1
ACT
set [TIMED_MAP_ENTER] 0

第四步:地图属性设置
确保Q301地图(自定义限时地图编号)在MapInfo.txt中已注册,且无特殊禁止传送属性。若需限制组队进入,可在入口处增加CHECKGROUP条件。

关键参数说明:
starttimer 后数值为秒数,最大支持65535秒(约18小时);
[TIMED_MAP_ENTER] 为自定义变量,名称可更改,但需全局一致;
mapmove 目标地图必须存在且坐标可站立;
若需倒计时提示,可设置多个短周期计时器(如每300秒提醒一次)。

测试方法:
给角色发放“限时令牌”(需在ItemList.txt中定义);
与NPC对话进入地图;
观察30分钟后是否自动传送;
中途退出游戏再登录,验证计时是否继续(部分引擎需额外保存变量)。

注意事项:
不同引擎对timer支持不同,部分需用“DELAYGOTO + 循环检测”替代;
若使用Hero引擎,可直接调用“TIMERGOTO”指令简化流程;
脚本中避免使用中文注释,防止编码错误导致服务端崩溃。

此结构可扩展为多级限时副本,只需增加变量区分不同地图即可。