IGE引擎时间触发脚本写法(弹窗选入地图)

来源: 作者: 点击:
IGE引擎时间触发脚本核心是通过定时器命令设定触发时段,自动弹出对话框供玩家选择是否进入指定地图,需依赖引擎专属定时命令与交互逻辑,以下提供可直接使用的脚本及存放、调试、适配方法,解决时段触发与地图跳转需求。

IGE引擎时间触发核心命令解析

IGE引擎时间触发依赖定时器与对话交互两类核心命令,需熟练掌握语法格式,避免参数错误导致脚本失效,核心命令如下:

1. SETTIMER:设置定时器,语法:SETTIMER 定时器编号 间隔时间(秒)。用于设定脚本触发周期,编号可设1-9,间隔时间按需求调整,如SETTIMER 1 3600,即1小时触发一次脚本。

2. CLEARTIMER:清除定时器,语法:CLEARTIMER 定时器编号。用于结束定时触发,通常搭配条件判断使用,避免脚本持续运行。

3. #SAY:弹出对话窗口,语法:#SAY 对话内容 + 选项指令。用于呈现提示信息与选择项,如#SAY 是否进入专属地图?/@EnterMap 进入 /@Cancel 取消。

4. MOVETOMAP:传送至指定地图,语法:MOVETOMAP 地图编号 X坐标 Y坐标。需填写正确的地图编号与坐标,可从服务端数据库查询对应信息。

5. CHECKTIMER:检测定时器状态,语法:CHECKTIMER 定时器编号。用于判断定时器是否在运行,适配复杂触发逻辑。

完整脚本示例(可直接复制使用)

以下脚本实现“固定时段触发弹窗、玩家选择进入地图/取消”功能,适配IGE引擎全版本,按需求修改时间、地图参数即可生效。

; IGE引擎时间触发弹窗选入地图脚本
; 脚本放入服务端Mirserver\Mir200\Envir\MapQuest_def\QManage.txt末尾

; 角色登录初始化定时器(每日固定时间触发)
[@OnLogin]
#IF
CHECKMAP 0 (0为新手村地图编号,可改为全地图触发)
#ACT
; 设置每日19点触发,先计算距19点的秒数(示例逻辑,可按需调整)
SETUSERVAR Hour 19
SETUSERVAR Minute 0
CALCVAR TimeDiff (Hour*3600 + Minute*60) - $HOUR*3600 - $MINUTE*60
#IF
CHECKVAR TimeDiff > 0
#ACT
SETTIMER 1 %TimeDiff%
#ELSE
; 当日时间已过19点,设置次日触发
SETTIMER 1 %TimeDiff% + 86400
#SAY
每日19点将触发专属地图邀请,请注意查收提示!

; 定时器触发弹窗逻辑
[@Timer1]
#ACT
CLEARTIMER 1 (清除当前定时器,避免重复触发)
#SAY
╔━━━━━━━━━━━━╗
║ 专属地图开启提醒 ║
╠━━━━━━━━━━━━╣
║ 限时开放专属地图,内含丰厚奖励! ║
║ 请在60秒内选择是否进入 ║
║ 1. 立即进入专属地图 /@EnterMap ║
║ 2. 取消进入 /@Cancel ║
╚━━━━━━━━━━━━╝
SETTIMER 2 60 (设置60秒倒计时,超时自动取消)

; 选择进入地图
[@EnterMap]
#IF
CHECKTIMER 2 (检测倒计时是否有效)
#ACT
CLEARTIMER 2
MOVETOMAP 10 320 320 (10为地图编号,320,320为目标坐标)
SENDMSG 5 成功进入专属地图,祝您收获满满!
#ELSEACT
SENDMSG 5 邀请已过期,无法进入地图!

; 选择取消进入
[@Cancel]
#ACT
CLEARTIMER 2
SENDMSG 5 已取消进入专属地图,下次请及时选择!

; 倒计时结束自动取消
[@Timer2]
#ACT
CLEARTIMER 2
SENDMSG 5 专属地图邀请已过期,本次机会已作废!
; 重置次日定时器
SETUSERVAR Hour 19
SETUSERVAR Minute 0
CALCVAR TimeDiff (Hour*3600 + Minute*60) - $HOUR*3600 - $MINUTE*60
#IF
CHECKVAR TimeDiff > 0
#ACT
SETTIMER 1 %TimeDiff%
#ELSE
SETTIMER 1 %TimeDiff% + 86400

脚本存放路径与生效步骤

IGE引擎时间触发脚本需按固定路径存放,重启服务端即可生效,步骤如下:

1. 核心脚本存放:将上述脚本复制至服务端根目录\Mirserver\Mir200\Envir\MapQuest_def\QManage.txt文件末尾,无需新建文件,直接追加内容,该文件负责全局事件触发。

2. 地图参数核对:从服务端\Mirserver\Mud2\DB\Map.DB数据库中,查询目标地图的编号与安全坐标,替换脚本中“MOVETOMAP”后的参数,确保传送准确。

3. 重启生效:保存文件后,重启IGE引擎控制器与游戏服务端,登录角色测试,确认到点是否自动弹窗,选择后能否正常传送或取消。

注意:服务端需置于磁盘根目录(如D:\Mirserver),避免中文路径或多层嵌套,否则脚本无法被引擎读取。

参数调整方法(按需自定义)

可根据玩法需求调整以下参数,无需修改核心逻辑,适配不同场景:

1. 触发时间:修改脚本中“SETUSERVAR Hour 19”“SETUSERVAR Minute 0”的数值,调整触发时段,如Hour 20、Minute 30,即每日20点30分触发。

2. 倒计时时长:修改“SETTIMER 2 60”后的数值(单位秒),调整玩家选择时间,如改为30,即30秒倒计时结束。

3. 触发范围:修改“CHECKMAP 0”后的地图编号,0为全地图触发,可改为指定地图编号(如1为土城),仅该地图玩家收到弹窗。

4. 地图与坐标:替换“MOVETOMAP 10 320 320”中的地图编号与坐标,确保与服务端数据库一致,避免传送至异常区域。

IGE引擎适配与常见问题解决

脚本默认适配IGE引擎,出现异常多为参数错误或引擎设置问题,可按以下方法排查:

1. 弹窗不触发:优先检查定时器设置,核对“SETTIMER”参数是否正确,是否存在重复定时器编号;其次确认QManage.txt文件路径无误,重启服务端后重新测试。

2. 选择后无法传送:核对“MOVETOMAP”后的地图编号与坐标,确保与Map.DB数据库完全一致;若提示无权限,在IGE引擎控制器中开启地图传送权限。

3. 重复弹窗:检查脚本中是否添加“CLEARTIMER 1”语句,缺失会导致定时器重复触发,需在[@Timer1]下补充该命令。

4. 倒计时失效:确认“SETTIMER 2”与[@Timer2]逻辑对应,编号一致,若倒计时无响应,补充“#EVENT OnTimer2 @Timer2”语句绑定事件。

拓展功能脚本补充(可选添加)

按需添加以下脚本,丰富时间触发玩法,复制至QManage.txt即可生效:

1. 多时段触发:实现每日多次弹窗邀请,新增定时器编号即可。

; 新增每日12点触发(定时器编号2)
[@OnLogin]
#IF
CHECKMAP 0
#ACT
SETUSERVAR Hour2 12
SETUSERVAR Minute2 0
CALCVAR TimeDiff2 (Hour2*3600 + Minute2*60) - $HOUR*3600 - $MINUTE*60
#IF
CHECKVAR TimeDiff2 > 0
#ACT
SETTIMER 2 %TimeDiff2%
#ELSE
SETTIMER 2 %TimeDiff2% + 86400

[@Timer2]
#ACT
CLEARTIMER 2
#SAY
╔━━━━━━━━━━━━╗
║ 正午专属地图开启 ║
╠━━━━━━━━━━━━╣
║ 是否进入正午专属地图? ║
║ /@EnterMapNoon 进入 /@Cancel 取消 ║
╚━━━━━━━━━━━━╝
SETTIMER 3 60

[@EnterMapNoon]
#ACT
CLEARTIMER 3
MOVETOMAP 11 330 330
SENDMSG 5 成功进入正午专属地图!

2. 限制进入次数:每日仅允许玩家进入1次,避免重复进入。

[@EnterMap]
#IF
CHECKTIMER 2
CHECKVAR EnterCount < 1
#ACT
CLEARTIMER 2
MOVETOMAP 10 320 320
SETUSERVAR EnterCount 1
SENDMSG 5 今日已进入专属地图1次,请勿重复进入!
#ELSEACT
SENDMSG 5 今日进入次数已用完,明日可再次尝试!