当前位置:首页 > 实操教程 > GOM引擎 > 正文内容

个人定时器命令详解 - GOM引擎定时脚本教程

M2GM2026-10-19GOM引擎41
摘要:本文详解GOM引擎个人定时器用法,引用帮助文档命令格式行与SetOnTimer 0 20、QManage.txt里OnTimer段示例,说明定时器索引与定时间隔参数含义,给出定时脚本配置五步、故障排查与机器人定时对比,并整理FAQ问答,实现按索引循环定时触发喊话、扣资源与加经验,全文仅限本地环境学习调试。…
[TOCM]

写脚本时经常遇到这类需求:活动开始要定时全服喊话、玩家进闭关地图要每隔几秒扣一次元宝、泡点地图要定时给英雄加经验。这些事如果靠玩家点NPC手动触发,既不稳定也容易被绕过,而个人定时器就是专门解决这类到点自动跑一段脚本需求的命令。

很多新手第一次写定时逻辑时卡住,不知道开启命令写在哪、定时器触发后由哪一段脚本接收,结果SetOnTimer写了却一动不动。下面按GOM引擎帮助文档原文,把设置定时器、关闭定时器的格式、两个参数、官方示例和常见故障逐项说明,再给出本地调试的定时脚本配置步骤。

个人定时器配图 - M2GM

SetOnTimer命令格式

帮助文档对个人定时器的记载,格式行原文如下:

SETONTIMER 定时器索引(0-255) 定时间隔(单位为秒)
SETOFFTIMER 定时器索引(0-255) //停止定时器

个人定时器由两条配对命令组成:SetOnTimer负责按索引开启一个循环定时,定时间隔一到就自动去QManage.txt里找对应的OnTimer索引段执行一次;SetOffTimer按同一个索引把它关掉,不再触发。两条命令的定时器索引取值范围都是0到255,官方文档明确写的是0到255,部分旧资料和早期回答里写索引0到19,那是老版本的口径,本地调试以官方文档0到255为准。

命令一般写在NPC脚本动作段或QManage的触发段里,是挂在单个玩家身上的计时,每个玩家各自的定时器相互独立,不会因为别人开了就影响自己。

参数详解

参数内容 参数释义 实操用法
定时器索引 定时器编号,取值0到255 同一脚本里不同定时任务用不同索引,避免互相覆盖
定时间隔 每隔多少秒触发一次 填秒数,20就是每隔20秒跑一次OnTimer段

第一参数定时器索引相当于给这个定时任务一个编号,开启后系统按编号记忆它,关闭时也要用同一个索引才能停掉。第二参数定时间隔单位是秒,填1就是每秒触发一次,填20就是每隔20秒触发一次,间隔写得太小会让脚本频繁执行,本地调试时建议先用20秒这种大间隔验证。

帮助文档给的标准示例,设置定时器与QManage.txt接收段整块引用如下:

;设置定时器
[@Test]
#IF
#ACT
SetOnTimer 0 20

QManage.txt:
[@OnTimer0]
#ACT
SendMsg 5 你目前位于%m的(%x:%y)

这个示例里开启命令用0号索引、每隔20秒触发一次,触发后转到QManage.txt的OnTimer0段,用SendMsg命令把玩家当前地图坐标发出去。关闭定时器的写法对应如下:

;停止定时器
[@Test]
#IF
#ACT
SetOffTimer 0

注意触发段名是OnTimer后面紧跟索引数字,0号索引对应的段名就是OnTimer0,索引和段名尾号必须一一对应,写错一个数字定时触发就找不到接收段。

定时器故障排查

第一个常见故障是定时器到点完全不触发。先核对SetOnTimer里写的索引数字,再到QManage.txt里确认是否存在对应的OnTimer段,索引和段名尾号对不上是最常见的原因;其次确认QManage.txt本身已被引擎加载,改完脚本要重载生效,否则新写的OnTimer段不会被识别。

第二个故障是触发了但内容不更新。检查是否误在同一段里重复SetOnTimer同一个索引却换了间隔,后写的会覆盖前面的设置;还要确认玩家身上是否还挂着这个定时器,小退或换地图后定时器状态会重置,需要在进入地图的触发段里重新开启。

第三个故障是脚本执行太频繁导致卡顿。定时间隔填1秒时,每个在线玩家每秒都会跑一遍OnTimer段,人多了脚本开销很大,非必要不把间隔压到1秒,调试时先用大间隔验证逻辑,再按实际需求收紧。

个人定时器脚本配置示意图 - M2GM

定时脚本配置

第一步,打开要挂定时任务的NPC脚本,定位到动作段,在#ACT下写SetOnTimer命令,先选一个空闲的定时器索引,比如0号,间隔先用20秒。

第二步,打开QManage.txt,在文件里新增OnTimer0段,段下面写#ACT,把每隔20秒要执行的脚本动作填进去,比如扣元宝、加经验、发坐标提示。

第三步,回到NPC脚本,在需要停止定时的位置补一条SetOffTimer 0,索引必须和开启时一致,玩家离开地图或任务结束时调用这条把定时器关掉。

第四步,检查索引编号不与现有定时任务冲突,多个定时需求分别用0、1、2不同索引区分,每个索引对应QManage.txt里一个OnTimer段。

第五步,保存两个脚本文件后在本地GOM引擎环境重载,进游戏触发开启命令,等20秒看OnTimer段是否按预期执行,确认无误后再调整间隔秒数。

定时器对比分析

个人定时器和机器人定时、系统级定时广播不是一回事。个人定时器是挂在单个玩家身上的,每个玩家独立计时,适合做进地图扣资源、闭关加经验这类只针对当前玩家的定时触发;机器人定时写在Robot_def里,按服务器时间点触发全服脚本,适合做每天定点全服喊话这类全局动作;系统广播定时是面向所有在线玩家发统一提示,不挂具体玩家状态。

三者搭配使用最合理:全服定点活动用机器人定时,玩家个体的循环消耗用个人定时器,纯提示性播报用系统广播。写脚本前先判断这个定时任务是每人各跑一份还是全服到点统一跑,再决定用哪一类,避免把个人消耗写成全服逻辑。

FAQ问答

1. 想做全服定时喊话,个人定时器该怎么配合机器人脚本写?

全服定点喊话建议写在Robot_def的机器人脚本里,用AutoRunRobot按时间点触发喊话段,而不是用个人定时器;个人定时器适合单个玩家挂着的循环任务,每个玩家各自计时,全服到点统一动作交给机器人定时更稳。整理自百度知道真实提问:传奇定时全服喊话脚本,2010-04。

2. 进入指定地图后每秒扣一次元宝,定时器怎么配?

在玩家进入该地图的触发段里写SetOnTimer开启一个索引、间隔填1,再在QManage.txt对应的OnTimer段里写检测元宝、扣元宝的脚本,离开地图时用SetOffTimer按同一索引关掉;间隔1秒即每秒触发一次,调试时先放大间隔确认扣减逻辑。整理自百度知道真实提问:传奇地图每秒消耗元宝怎么改,2016-08。

3. 闭关泡点地图里定时给英雄加经验,脚本怎么改?

进闭关地图时用SetOnTimer开一个空闲索引,QManage.txt的OnTimer段里写给英雄加经验的动作,按间隔循环执行,退出地图时SetOffTimer按同索引关闭;索引与段名尾号对应、QManage.txt已加载是两个关键点。整理自百度知道真实提问:传奇闭关脚本怎样修改英雄经验,2014-02。

4. 个人定时器一般适合用在哪些场景?

适合所有挂在单个玩家身上、按固定间隔循环执行一段脚本的需求,比如进地图每秒扣元宝、泡点地图定时加经验、定时发当前坐标提示、每隔一段时间检查一次玩家状态,核心特征是每个玩家独立计时、互不影响。

5. 定时器写好后到点不触发,优先检查哪里?

先核对SetOnTimer的索引与QManage.txt里OnTimer段的尾号是否一一对应,段名写错是最常见原因;再确认QManage.txt已被引擎加载、脚本改完已重载;最后检查是否在进入地图段里重新开启了定时器,小退后定时器状态会重置。

6. 个人定时器和机器人定时有什么区别?

个人定时器绑定单个玩家、按秒级间隔循环触发、玩家之间相互独立;机器人定时写在Robot_def里、按服务器日历时间点触发、作用于全服脚本;前者做个体循环消耗,后者做全服定点活动,按任务作用范围选择即可。

7. 定时间隔和定时器索引的数值范围怎么算?

定时器索引官方文档取值0到255,共256个可用编号,旧资料写的0到19是老版本口径,以官方为准;定时间隔单位为秒,填20即每隔20秒触发一次,数值越大执行越稀疏,调试时先用大间隔验证再收紧。

结语

个人定时器把到点自动跑一段脚本的逻辑收敛进了SetOnTimer和SetOffTimer两条命令,按索引开启、按索引关闭,触发后统一转到QManage.txt的OnTimer段执行,做进地图扣资源、闭关加经验这类个体循环定时非常顺手。配置时记住索引与段名尾号对应、间隔别一开始就压到1秒、任务结束记得SetOffTimer这三件事,定时触发逻辑基本不会跑偏。

SetOnTimer个人定时器配置在本地GOM引擎环境里逐项验证过,定时索引与间隔符合文档;命令按GOM引擎编写,其他引擎请自行测试。此文仅供本地调试存档。

扫描二维码推送至手机访问。

本文章M2GM发布,如需转载请注明出处。如有侵权请联系站长删除。

本文内容仅供个人单机学习研究、功能调试、玩法逻辑测试使用,不涉及任何公网搭建、商业运营、资源交易行为,仅用于个人学习与实操体验。

本文链接:https://www.m2gm.com/tech/gom/gom-settimer/

分享给朋友:

相关文章

翎风引擎GOTOLABEL脚本实操教程 - 全模式触发规则与报错修复方法

翎风引擎GOTOLABEL脚本实操教程 - 全模式触发规则与报错修复方法

本文针对GOTOLABEL脚本展开全方位实操讲解,梳理翎风引擎10大触发模式的参数规则、标准命令格式,搭配零基础入门、中级优化、高阶定制三阶实操案例,汇总新手避坑要点与常见报错修复方案,适配本地版本学习与脚本调试。…

HGE引擎CheckItemAtt脚本教程 - 物品Att属性ID与数值检测方法

HGE引擎CheckItemAtt脚本教程 - 物品Att属性ID与数值检测方法

本文针对HGE引擎CheckItemAtt系列脚本展开实操讲解,区分CheckItemAttId与CheckItemAttPoint的功能差异,详解全部参数含义、三阶实操案例与落地步骤,汇总新手避坑要点和常见报错修复方案,帮助零基础学习者快速掌握物品Att属性检测调试技巧。…

翎风引擎GetPlayInfo怎么用?取玩家等级金币全字段对照

翎风引擎GetPlayInfo怎么用?取玩家等级金币全字段对照

翎风引擎GetPlayInfo教程:玩家名字/字段号/变量三参数、0等级1职业2金币3血量4最大血量、只查在线玩家、S变量读数字也能算,做排行榜和信息查询NPC直接套用。…

大秦插件查找键值命令用法详解 - 键值存在性判断教程

大秦插件查找键值命令用法详解 - 键值存在性判断教程

查找键值命令DQHashTableContainsKey放在#IF条件段判断单个标识是否存在,命中走#ACT分支,不区分大小写;它不做前缀模糊列出,只判断单条记录在不在,所谓模糊匹配键值是误传;常用于登录先查再读、活动开关判断、重复写入前拦截;读前先查存在、命中再读、未命中写默认值,形成查询闭环。…

GOM引擎GOTO传参与GOTOLABEL群发传参怎么选 - 脚本参数回调区别

GOM引擎GOTO传参与GOTOLABEL群发传参怎么选 - 脚本参数回调区别

GOM引擎GOTO带括号传参可实现子程序调用效果,竖线前传参、竖线后指定接收返回值的变量,子段用scriptparam取参、用return把结果写回。本文讲解命令原型与参数顺序,说明return等同break、scriptparam仅子段内有效,对比GOTOLABEL群发传参的用途差异,给出乘法计算子段实战配置。…