AutoRunRobot.txt 怎么配置 QF里面怎么配置
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-06-18 15:45:56 |
👁️ 阅读: 10
我是lua后端老师!
你好呀,修仙者!关于 `AutoRunRobot.txt` 和 `QF` 的配置,这可是实现自动执行脚本(比如定时器、机器人任务)的核心技术。让我来给你详细拆解一下。
### 1. AutoRunRobot.txt 配置
这个文件通常放在 `Mir200\Envir\Robot_def\` 目录下,它的作用是定义一些自动执行的“机器人”任务,比如定时刷怪、全服公告、清理数据等。
它的基本格式是这样的:
```
#AutoRun NPC SEC 5 @定时器1
#AutoRun NPC MIN 1 @清理数据
#AutoRun NPC HOUR 1 @整点活动
#AutoRun NPC DAY 1 @每日重置
#AutoRun NPC RUNONWEEK 1:00:00 @每周一重置
#AutoRun NPC DATE 2024-01-01 00:00:00 @元旦活动
```
**参数说明:**
* `#AutoRun NPC`:固定开头。
* `SEC / MIN / HOUR / DAY / RUNONWEEK / DATE`:执行的时间单位。分别是秒、分钟、小时、天、每周特定时间、具体日期时间。
* 时间间隔后面的数字:执行间隔或具体时间点。
* `@定时器1`:触发的函数名。这个函数需要写在 `RobotManage.lua` 文件里。
**配置示例:**
```
#AutoRun NPC SEC 10 @SendGlobalMsg -- 每10秒执行一次
#AutoRun NPC MIN 30 @CheckServerState -- 每30分钟执行一次
#AutoRun NPC DAY 1 @DailyReset -- 每天执行一次
```
配置好后,引擎会根据你设定的时间,自动去调用 `RobotManage.lua` 里对应的函数。
### 2. QF (QFunction-0.lua) 中的定时器配置
`QF` 里的定时器主要分为两种:**个人定时器**和**全局定时器**。它们是通过脚本命令触发的,而不是在 `AutoRunRobot.txt` 里配置。
**个人定时器**:只对单个玩家生效,玩家下线或触发跨服可能会停止(除非设置跨服继续)。
* **设置定时器**:使用 `setontimer(触发器ID, 间隔秒数)` 或 `setontimerex(触发器ID, 间隔秒数)`。
* **关闭定时器**:使用 `setofftimer(触发器ID)` 或 `setofftimerex(触发器ID)`。
* **QF触发**:定时器到期后,会触发 `QF` 中的 `ontimer(触发器ID)` 或 `ontimerex(触发器ID)` 函数。
**全局定时器**:对整个服务器生效,通常由 `RobotManage.lua` 里的机器人脚本来设置。
* 它的触发也是在 `QF` 中,对应的函数名是 `ontimerex(触发器ID)`。
**配置示例(在NPC脚本或QF中使用):**
```lua
-- 给玩家设置一个30秒后触发的个人定时器 (ID为1)
setontimer(actor, 1, 30)
-- 在 QFunction-0.lua 中接收这个定时器触发
function ontimer(actor, timerid)
if timerid == 1 then
sendmsg(actor, “你的个人定时器1触发了!”, 4)
-- 可以在这里再次设置定时器,实现循环
setontimer(actor, 1, 30)
end
end
```
### 3. 与跨服执行的配合(高级技巧)
根据知识库,如果你想让你配置的自动任务在**跨服地图中也执行**,需要在 `AutoRunRobot.txt` 的配置行末尾加上参数 `2`。
**语法:**
```
#AutoRun NPC 时间单位 间隔 @函数名 2
```
**示例:**
```
#AutoRun NPC SEC 5 @ShiLi2 2
```
这行配置的意思是:每5秒执行一次 `@ShiLi2` 函数,并且**在本服和跨服服务器中都会执行**。
**参数说明:**
* `空`或`不填`:仅在本服执行。
* `1`:仅在跨服执行。
* `2`:本服和跨服一起执行。
### 总结与流程
1. **规划任务**:想清楚你要做什么(全服公告、清理、活动),以及执行周期(秒、分、时、天)。
2. **编辑 AutoRunRobot.txt**:在 `Mir200\Envir\Robot_def\` 目录下,按格式添加配置行。如果需要跨服生效,记得在末尾加 `2`。
3. **编写执行函数**:在 `Mir200\Envir\Robot_def\RobotManage.lua` 文件中,编写你在 `AutoRunRobot.txt` 中`@`后面的函数(例如 `function ShiLi2()`)。
4. **编写QF响应(如果需要)**:如果是通过 `setontimer` 触发的个人或全局定时器,则在 `QFunction-0.lua` 中编写对应的 `ontimer` 或 `ontimerex` 函数来处理触发后的逻辑。
记住,修仙者,`AutoRunRobot.txt` 是**任务调度表**,`RobotManage.lua` 是**任务执行者**,而 `QF` 中的定时器函数是**任务触发器**的**响应处理器**。把它们的关系理顺,你就能轻松驾驭服务器的自动化行为了!
如果还有哪里不明白,随时可以再来问我,或者去请教我的师傅浮生梦尊者!
← 返回问答库