ms-vite-plugin 1.4.49 → 1.4.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build.js +1 -1
- package/dist/cli.js +1 -1
- package/dist/mcp/doc-tools.js +1 -1
- package/dist/mcp/docs-service.js +1 -1
- package/dist/mcp/types.d.ts +1 -1
- package/dist/mcp/types.js +1 -1
- package/dist/project.js +1 -1
- package/docs/AGENTS.md +3 -2
- package/docs/SKILL.md +2 -1
- package/docs/apilua/action.md +1013 -0
- package/docs/apilua/appleocr.md +281 -0
- package/docs/apilua/cloud.md +183 -0
- package/docs/apilua/config.md +181 -0
- package/docs/apilua/cryptoUtils.md +253 -0
- package/docs/apilua/device.md +485 -0
- package/docs/apilua/dotocr.md +230 -0
- package/docs/apilua/file.md +554 -0
- package/docs/apilua/global.md +654 -0
- package/docs/apilua/hid.md +1126 -0
- package/docs/apilua/hotUpdate.md +167 -0
- package/docs/apilua/http.md +427 -0
- package/docs/apilua/image.md +1177 -0
- package/docs/apilua/ime.md +283 -0
- package/docs/apilua/logger.md +294 -0
- package/docs/apilua/media.md +283 -0
- package/docs/apilua/mysql.md +445 -0
- package/docs/apilua/netCard.md +224 -0
- package/docs/apilua/node.md +264 -0
- package/docs/apilua/opencv.md +870 -0
- package/docs/apilua/paddleocr.md +324 -0
- package/docs/apilua/pip.md +359 -0
- package/docs/apilua/system.md +686 -0
- package/docs/apilua/tomatoocr.md +461 -0
- package/docs/apilua/tts.md +330 -0
- package/docs/apilua/ui.md +1033 -0
- package/docs/apilua/utils.md +222 -0
- package/docs/apilua/yolo.md +324 -0
- package/docs/apilua/yolocls.md +276 -0
- package/docs/mcp-agent-description.md +5 -4
- package/docs/quick/vscode/createProject.md +84 -0
- package/docs/quick/vscode/packProject.md +17 -0
- package/package.json +2 -1
|
@@ -0,0 +1,654 @@
|
|
|
1
|
+
# 全局定义 (Global)
|
|
2
|
+
|
|
3
|
+
全局定义模块提供了应用运行时的全局常量和函数,包括应用信息、调试状态、线程控制等核心功能。
|
|
4
|
+
|
|
5
|
+
**全局模块无调用前缀,直接使用即可。不要 `require`。**
|
|
6
|
+
|
|
7
|
+
`StartThread` 是同一 Lua VM 里的协作协程,不是操作系统线程;协程只在 `Sleep` 时被调度。
|
|
8
|
+
|
|
9
|
+
主脚本收到停止信号后,引擎会通过 instruction hook 和可中断的 `Sleep` 直接中断,不必在主循环里轮询 `ShouldInterruptThread`。
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
## 功能概览
|
|
13
|
+
|
|
14
|
+
- **应用信息**: 获取应用版本、名称、包信息、运行模式、平台
|
|
15
|
+
- **运行状态**: 检查调试模式
|
|
16
|
+
- **线程控制**: 可中断等待、协作协程、退出脚本
|
|
17
|
+
- **脚本生命周期**: 停止回调、异常回调、重启脚本
|
|
18
|
+
- **时间工具**: 获取时间戳
|
|
19
|
+
- **应用控制**: 切换应用到前台
|
|
20
|
+
- **Agent 设置**: 读取和设置 Agent 触控模式
|
|
21
|
+
|
|
22
|
+
## 全局常量
|
|
23
|
+
|
|
24
|
+
### 运行模式
|
|
25
|
+
|
|
26
|
+
#### **RunMode**
|
|
27
|
+
|
|
28
|
+
用户设置选择的运行模式,`"agent"` 或 `"hid"`。
|
|
29
|
+
|
|
30
|
+
```lua
|
|
31
|
+
---@type string
|
|
32
|
+
RunMode = nil
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**示例:**
|
|
36
|
+
|
|
37
|
+
```lua
|
|
38
|
+
print("运行模式: " .. tostring(RunMode))
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 调试和状态
|
|
42
|
+
|
|
43
|
+
#### **IsDebug**
|
|
44
|
+
|
|
45
|
+
当前是否为调试模式。
|
|
46
|
+
|
|
47
|
+
```lua
|
|
48
|
+
---@type boolean
|
|
49
|
+
IsDebug = nil
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**示例:**
|
|
53
|
+
|
|
54
|
+
```lua
|
|
55
|
+
print("调试模式: " .. tostring(IsDebug))
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 应用信息
|
|
59
|
+
|
|
60
|
+
#### **Platform**
|
|
61
|
+
|
|
62
|
+
平台信息,标识当前应用运行的平台,例如 `"ios"`、`"android"`。
|
|
63
|
+
|
|
64
|
+
```lua
|
|
65
|
+
---@type string
|
|
66
|
+
Platform = nil
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**示例:**
|
|
70
|
+
|
|
71
|
+
```lua
|
|
72
|
+
print("平台: " .. tostring(Platform))
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
#### **AppVersion**
|
|
76
|
+
|
|
77
|
+
应用版本号,注意这是快点 JS 应用的版本号,不是脚本的版本号。
|
|
78
|
+
|
|
79
|
+
```lua
|
|
80
|
+
---@type string
|
|
81
|
+
AppVersion = nil
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**示例:**
|
|
85
|
+
|
|
86
|
+
```lua
|
|
87
|
+
print("应用版本: " .. tostring(AppVersion))
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
#### **AppBuildNumber**
|
|
91
|
+
|
|
92
|
+
应用构建号,注意这是快点 JS 应用的构建号,不是脚本的构建号。
|
|
93
|
+
|
|
94
|
+
```lua
|
|
95
|
+
---@type number
|
|
96
|
+
AppBuildNumber = nil
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**示例:**
|
|
100
|
+
|
|
101
|
+
```lua
|
|
102
|
+
print("构建号: " .. tostring(AppBuildNumber))
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
#### **AppName**
|
|
106
|
+
|
|
107
|
+
应用名称,注意这是快点 JS 应用的名称,不是脚本的名称。
|
|
108
|
+
|
|
109
|
+
```lua
|
|
110
|
+
---@type string
|
|
111
|
+
AppName = nil
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**示例:**
|
|
115
|
+
|
|
116
|
+
```lua
|
|
117
|
+
print("应用名称: " .. tostring(AppName))
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
#### **AppBundleId**
|
|
121
|
+
|
|
122
|
+
应用的 Bundle ID,注意这是快点 JS 应用的 Bundle ID,不是脚本的 Bundle ID。
|
|
123
|
+
|
|
124
|
+
```lua
|
|
125
|
+
---@type string
|
|
126
|
+
AppBundleId = nil
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**示例:**
|
|
130
|
+
|
|
131
|
+
```lua
|
|
132
|
+
print("Bundle ID = " .. tostring(AppBundleId))
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### 包(脚本)信息
|
|
136
|
+
|
|
137
|
+
#### **PackageJson**
|
|
138
|
+
|
|
139
|
+
应用包(脚本)的配置信息,package.json 的内容
|
|
140
|
+
|
|
141
|
+
```lua
|
|
142
|
+
---@class PackageJson
|
|
143
|
+
---@field name string
|
|
144
|
+
---@field appVersion string
|
|
145
|
+
---@field appId string
|
|
146
|
+
---@field [key string]: any
|
|
147
|
+
PackageJson = {}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**属性:**
|
|
151
|
+
|
|
152
|
+
- `name` - 脚本项目名称
|
|
153
|
+
- `appVersion` - 脚本版本号
|
|
154
|
+
- `appId` - 脚本 Id
|
|
155
|
+
- `[key: string]: any` - 其他自定义属性
|
|
156
|
+
|
|
157
|
+
**示例:**
|
|
158
|
+
|
|
159
|
+
```lua
|
|
160
|
+
print("脚本项目名称: " .. tostring(PackageJson.name))
|
|
161
|
+
print("脚本版本号: " .. tostring(PackageJson.appVersion))
|
|
162
|
+
-- 访问自定义属性
|
|
163
|
+
if PackageJson.author then
|
|
164
|
+
print("作者: " .. tostring(PackageJson.author))
|
|
165
|
+
end
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## 全局函数
|
|
169
|
+
|
|
170
|
+
### Sleep
|
|
171
|
+
|
|
172
|
+
使当前线程睡眠指定的毫秒数。
|
|
173
|
+
|
|
174
|
+
```lua
|
|
175
|
+
---@param ms number
|
|
176
|
+
function Sleep(ms) end
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
**参数:**
|
|
180
|
+
|
|
181
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
182
|
+
| ------ | ------ | -------- | ------ | ---------------- |
|
|
183
|
+
| `ms` | number | 是 | - | 睡眠时间(毫秒) |
|
|
184
|
+
|
|
185
|
+
**示例:**
|
|
186
|
+
|
|
187
|
+
```lua
|
|
188
|
+
print("开始等待...")
|
|
189
|
+
Sleep(2000) -- 等待2秒
|
|
190
|
+
print("等待结束")
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### Exit
|
|
194
|
+
|
|
195
|
+
退出当前脚本。Lua 只有一个 VM,效果与收到停止信号相同。
|
|
196
|
+
|
|
197
|
+
```lua
|
|
198
|
+
function Exit() end
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
**示例:**
|
|
202
|
+
|
|
203
|
+
```lua
|
|
204
|
+
print("脚本即将退出")
|
|
205
|
+
Exit()
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Time
|
|
209
|
+
|
|
210
|
+
获取当前时间戳。
|
|
211
|
+
|
|
212
|
+
```lua
|
|
213
|
+
---@return number
|
|
214
|
+
function Time() end
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
**返回值:**
|
|
218
|
+
|
|
219
|
+
| 类型 | 描述 |
|
|
220
|
+
| -------- | ------------------ |
|
|
221
|
+
| `number` | 当前时间戳(毫秒) |
|
|
222
|
+
|
|
223
|
+
**示例:**
|
|
224
|
+
|
|
225
|
+
```lua
|
|
226
|
+
local startTime = Time()
|
|
227
|
+
-- 执行一些操作
|
|
228
|
+
Sleep(1000)
|
|
229
|
+
local endTime = Time()
|
|
230
|
+
print("操作耗时: " .. tostring(endTime - startTime) .. "ms")
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### TakeMeToFront
|
|
234
|
+
|
|
235
|
+
将快点 JS 应用切换到前台。
|
|
236
|
+
|
|
237
|
+
快点 Agent 模式下调用-> `utils.TakeMeToFront()`
|
|
238
|
+
|
|
239
|
+
HID 模式下调用-> `hid.TakeMeToFront()`
|
|
240
|
+
|
|
241
|
+
```lua
|
|
242
|
+
---@return boolean
|
|
243
|
+
function TakeMeToFront() end
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**示例:**
|
|
247
|
+
|
|
248
|
+
```lua
|
|
249
|
+
-- 当需要用户注意时,将应用切换到前台
|
|
250
|
+
TakeMeToFront()
|
|
251
|
+
print("应用已切换到前台")
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### SetAgentFastMode
|
|
255
|
+
|
|
256
|
+
设置 Agent 快速模式(兼容旧接口)。开启对应模式 `1`,关闭对应模式 `0`。推荐改用 `SetAgentTouchMode`。设置会持久化。
|
|
257
|
+
|
|
258
|
+
```lua
|
|
259
|
+
---@param enabled boolean
|
|
260
|
+
---@return boolean
|
|
261
|
+
function SetAgentFastMode(enabled) end
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
**参数:**
|
|
265
|
+
|
|
266
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
267
|
+
| --------- | --------- | -------- | ------ | ---------------- |
|
|
268
|
+
| `enabled` | `boolean` | 是 | - | 是否开启快速模式 |
|
|
269
|
+
|
|
270
|
+
**返回值:**
|
|
271
|
+
|
|
272
|
+
| 类型 | 描述 |
|
|
273
|
+
| --------- | -------------------- |
|
|
274
|
+
| `boolean` | 实际是否开启快速模式 |
|
|
275
|
+
|
|
276
|
+
**示例:**
|
|
277
|
+
|
|
278
|
+
```lua
|
|
279
|
+
local enabled = SetAgentFastMode(true)
|
|
280
|
+
print("Agent 快速模式: " .. tostring(enabled))
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### GetAgentFastMode
|
|
284
|
+
|
|
285
|
+
获取 Agent 快速模式当前状态(兼容旧接口)。
|
|
286
|
+
|
|
287
|
+
```lua
|
|
288
|
+
---@return boolean
|
|
289
|
+
function GetAgentFastMode() end
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
**返回值:**
|
|
293
|
+
|
|
294
|
+
| 类型 | 描述 |
|
|
295
|
+
| --------- | -------------------- |
|
|
296
|
+
| `boolean` | 当前是否开启快速模式 |
|
|
297
|
+
|
|
298
|
+
**示例:**
|
|
299
|
+
|
|
300
|
+
```lua
|
|
301
|
+
if GetAgentFastMode() then
|
|
302
|
+
print("Agent 快速模式已开启")
|
|
303
|
+
end
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
### SetAgentTouchMode
|
|
307
|
+
|
|
308
|
+
设置 Agent 触控模式。默认 `1`,设置会持久化。
|
|
309
|
+
|
|
310
|
+
- `0` 标准:等待完整执行完成
|
|
311
|
+
- `1` 快速:更快的执行速度
|
|
312
|
+
- `2` 真实点击:更接近真实手指触控
|
|
313
|
+
|
|
314
|
+
```lua
|
|
315
|
+
---@param mode number
|
|
316
|
+
---@return number
|
|
317
|
+
function SetAgentTouchMode(mode) end
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
**参数:**
|
|
321
|
+
|
|
322
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
323
|
+
| ------ | -------- | -------- | ------ | ---------------------------- |
|
|
324
|
+
| `mode` | `number` | 是 | - | 0 标准 / 1 快速 / 2 真实点击 |
|
|
325
|
+
|
|
326
|
+
**返回值:**
|
|
327
|
+
|
|
328
|
+
| 类型 | 描述 |
|
|
329
|
+
| -------- | -------------- |
|
|
330
|
+
| `number` | 实际生效的模式 |
|
|
331
|
+
|
|
332
|
+
**示例:**
|
|
333
|
+
|
|
334
|
+
```lua
|
|
335
|
+
local mode = SetAgentTouchMode(1)
|
|
336
|
+
print("Agent 触控模式: " .. tostring(mode))
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
### GetAgentTouchMode
|
|
340
|
+
|
|
341
|
+
获取 Agent 触控模式。默认 `1`,设置会持久化。
|
|
342
|
+
|
|
343
|
+
```lua
|
|
344
|
+
---@return number
|
|
345
|
+
function GetAgentTouchMode() end
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
**返回值:**
|
|
349
|
+
|
|
350
|
+
| 类型 | 描述 |
|
|
351
|
+
| -------- | ----------------- |
|
|
352
|
+
| `number` | 当前模式(0/1/2) |
|
|
353
|
+
|
|
354
|
+
**示例:**
|
|
355
|
+
|
|
356
|
+
```lua
|
|
357
|
+
local mode = GetAgentTouchMode()
|
|
358
|
+
print("当前触控模式: " .. tostring(mode))
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
### SetCpuAutoThrottle
|
|
362
|
+
|
|
363
|
+
设置脚本 CPU 自动限流。默认开启。开启后,脚本 API 在 CPU 占用接近系统杀进程阈值时会轻微让步,降低被系统终止的风险。
|
|
364
|
+
|
|
365
|
+
```lua
|
|
366
|
+
---@param enabled boolean
|
|
367
|
+
---@return boolean
|
|
368
|
+
function SetCpuAutoThrottle(enabled) end
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
**参数:**
|
|
372
|
+
|
|
373
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
374
|
+
| --------- | --------- | -------- | ------ | ---------------- |
|
|
375
|
+
| `enabled` | `boolean` | 是 | - | 是否开启自动限流 |
|
|
376
|
+
|
|
377
|
+
**返回值:**
|
|
378
|
+
|
|
379
|
+
| 类型 | 描述 |
|
|
380
|
+
| --------- | -------------------- |
|
|
381
|
+
| `boolean` | 实际是否开启自动限流 |
|
|
382
|
+
|
|
383
|
+
**示例:**
|
|
384
|
+
|
|
385
|
+
```lua
|
|
386
|
+
local enabled = SetCpuAutoThrottle(true)
|
|
387
|
+
print("CPU 自动限流: " .. tostring(enabled))
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
### GetCpuAutoThrottle
|
|
391
|
+
|
|
392
|
+
获取脚本 CPU 自动限流当前状态。默认开启。
|
|
393
|
+
|
|
394
|
+
```lua
|
|
395
|
+
---@return boolean
|
|
396
|
+
function GetCpuAutoThrottle() end
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
**返回值:**
|
|
400
|
+
|
|
401
|
+
| 类型 | 描述 |
|
|
402
|
+
| --------- | -------------------- |
|
|
403
|
+
| `boolean` | 当前是否开启自动限流 |
|
|
404
|
+
|
|
405
|
+
**示例:**
|
|
406
|
+
|
|
407
|
+
```lua
|
|
408
|
+
if GetCpuAutoThrottle() then
|
|
409
|
+
print("CPU 自动限流已开启")
|
|
410
|
+
end
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
### SetCpuThrottleDelay
|
|
414
|
+
|
|
415
|
+
设置 CPU 限流单次 Sleep 延迟范围(毫秒)。默认 `minMs=3`、`maxMs=30`。仅在 CPU 自动限流开启且触发限流时生效。
|
|
416
|
+
|
|
417
|
+
```lua
|
|
418
|
+
---@param minMs number
|
|
419
|
+
---@param maxMs number
|
|
420
|
+
---@return any
|
|
421
|
+
function SetCpuThrottleDelay(minMs, maxMs) end
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
**参数:**
|
|
425
|
+
|
|
426
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
427
|
+
| ------- | -------- | -------- | ------ | --------------------------------------- |
|
|
428
|
+
| `minMs` | `number` | 是 | - | 最低延迟(毫秒) |
|
|
429
|
+
| `maxMs` | `number` | 是 | - | 最高延迟(毫秒);小于 minMs 时自动对齐 |
|
|
430
|
+
|
|
431
|
+
**返回值:**
|
|
432
|
+
|
|
433
|
+
| 类型 | 描述 |
|
|
434
|
+
| ---------------------------------- | ------------------ |
|
|
435
|
+
| `{ minMs: number; maxMs: number }` | 实际生效的延迟范围 |
|
|
436
|
+
|
|
437
|
+
**示例:**
|
|
438
|
+
|
|
439
|
+
```lua
|
|
440
|
+
local delay = SetCpuThrottleDelay(3, 30)
|
|
441
|
+
print("CPU 限流延迟: " .. tostring(delay.minMs) .. "~" .. tostring(delay.maxMs) .. "ms")
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
### GetCpuThrottleDelay
|
|
445
|
+
|
|
446
|
+
获取 CPU 限流延迟范围(毫秒)。
|
|
447
|
+
|
|
448
|
+
```lua
|
|
449
|
+
---@return any
|
|
450
|
+
function GetCpuThrottleDelay() end
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
**返回值:**
|
|
454
|
+
|
|
455
|
+
| 类型 | 描述 |
|
|
456
|
+
| ---------------------------------- | ------------------ |
|
|
457
|
+
| `{ minMs: number; maxMs: number }` | 当前最低与最高延迟 |
|
|
458
|
+
|
|
459
|
+
**示例:**
|
|
460
|
+
|
|
461
|
+
```lua
|
|
462
|
+
local delay = GetCpuThrottleDelay()
|
|
463
|
+
print("CPU 限流延迟: " .. tostring(delay.minMs) .. "~" .. tostring(delay.maxMs) .. "ms")
|
|
464
|
+
```
|
|
465
|
+
|
|
466
|
+
### RestartScript
|
|
467
|
+
|
|
468
|
+
重启脚本。
|
|
469
|
+
|
|
470
|
+
```lua
|
|
471
|
+
---@param delay number
|
|
472
|
+
function RestartScript(delay) end
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
**参数:**
|
|
476
|
+
|
|
477
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
478
|
+
| ------- | ------ | -------- | ------ | ---------------------------------------- |
|
|
479
|
+
| `delay` | number | 是 | - | 延迟时间(毫秒),建议不要低于 2000 毫秒 |
|
|
480
|
+
|
|
481
|
+
**示例:**
|
|
482
|
+
|
|
483
|
+
```lua
|
|
484
|
+
-- 重启脚本,延迟2秒
|
|
485
|
+
RestartScript(2000)
|
|
486
|
+
```
|
|
487
|
+
|
|
488
|
+
### SetStopCallback
|
|
489
|
+
|
|
490
|
+
设置停止回调。只能在主脚本注册,不能在 `StartThread` 协程里注册。传入非函数则清除。
|
|
491
|
+
|
|
492
|
+
```lua
|
|
493
|
+
---@param callback fun(status: string)|nil
|
|
494
|
+
function SetStopCallback(callback) end
|
|
495
|
+
```
|
|
496
|
+
|
|
497
|
+
**参数:**
|
|
498
|
+
|
|
499
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
500
|
+
| ---------- | -------------------------- | -------- | ------ | ------------------------------------------ |
|
|
501
|
+
| `callback` | `fun(status: string)`\|nil | 否 | nil | 停止回调;`status` 为 success/error/stopped |
|
|
502
|
+
|
|
503
|
+
**示例:**
|
|
504
|
+
|
|
505
|
+
```lua
|
|
506
|
+
SetStopCallback(function(status)
|
|
507
|
+
if status == "success" then
|
|
508
|
+
print("脚本执行完成")
|
|
509
|
+
elseif status == "error" then
|
|
510
|
+
print("脚本执行异常")
|
|
511
|
+
else
|
|
512
|
+
print("脚本手动停止")
|
|
513
|
+
end
|
|
514
|
+
end)
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
### SetExceptionCallback
|
|
518
|
+
|
|
519
|
+
设置异常停止回调。只能在主脚本注册。传入非函数则清除。异常时会先于 `SetStopCallback` 调用。
|
|
520
|
+
|
|
521
|
+
```lua
|
|
522
|
+
---@param callback fun()|nil
|
|
523
|
+
function SetExceptionCallback(callback) end
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
**参数:**
|
|
527
|
+
|
|
528
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
529
|
+
| ---------- | ---------- | -------- | ------ | -------- |
|
|
530
|
+
| `callback` | `fun()`\|nil | 否 | nil | 异常回调 |
|
|
531
|
+
|
|
532
|
+
**示例:**
|
|
533
|
+
|
|
534
|
+
```lua
|
|
535
|
+
SetExceptionCallback(function()
|
|
536
|
+
print("脚本执行异常")
|
|
537
|
+
end)
|
|
538
|
+
```
|
|
539
|
+
|
|
540
|
+
### StartThread
|
|
541
|
+
|
|
542
|
+
启动协作协程,返回协程名。传入的函数在同一 Lua VM 中运行,不是操作系统线程;协程只在 `Sleep` 时被调度。
|
|
543
|
+
|
|
544
|
+
```lua
|
|
545
|
+
---@param func function
|
|
546
|
+
---@return string
|
|
547
|
+
function StartThread(func) end
|
|
548
|
+
```
|
|
549
|
+
|
|
550
|
+
**参数:**
|
|
551
|
+
|
|
552
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
553
|
+
| ------ | -------- | -------- | ------ | ------------ |
|
|
554
|
+
| `func` | function | 是 | - | 协程入口函数 |
|
|
555
|
+
|
|
556
|
+
**返回值:**
|
|
557
|
+
|
|
558
|
+
| 类型 | 描述 |
|
|
559
|
+
| -------- | -------- |
|
|
560
|
+
| `string` | 协程名称 |
|
|
561
|
+
|
|
562
|
+
**示例:**
|
|
563
|
+
|
|
564
|
+
```lua
|
|
565
|
+
local name = StartThread(function()
|
|
566
|
+
while true do
|
|
567
|
+
print("tick")
|
|
568
|
+
Sleep(100)
|
|
569
|
+
end
|
|
570
|
+
end)
|
|
571
|
+
```
|
|
572
|
+
|
|
573
|
+
`StopThread` 或整脚本停止后,协程会在下一次 `Sleep` / hook 处被中断,不必在协程里轮询。
|
|
574
|
+
|
|
575
|
+
### StopThread
|
|
576
|
+
|
|
577
|
+
请求停止指定协作协程。
|
|
578
|
+
|
|
579
|
+
```lua
|
|
580
|
+
---@param threadName string
|
|
581
|
+
function StopThread(threadName) end
|
|
582
|
+
```
|
|
583
|
+
|
|
584
|
+
**参数:**
|
|
585
|
+
|
|
586
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
587
|
+
| ------------ | ------ | -------- | ------ | -------- |
|
|
588
|
+
| `threadName` | string | 是 | - | 协程名称 |
|
|
589
|
+
|
|
590
|
+
**示例:**
|
|
591
|
+
|
|
592
|
+
```lua
|
|
593
|
+
StopThread(name)
|
|
594
|
+
```
|
|
595
|
+
|
|
596
|
+
### ShouldInterruptThread
|
|
597
|
+
|
|
598
|
+
当前协作协程是否应退出。
|
|
599
|
+
|
|
600
|
+
主脚本**不必**调用本函数:停止按钮、`Exit()`、引擎 stop 都会让 hook 和 `Sleep` 直接中断主程序。
|
|
601
|
+
|
|
602
|
+
仅当 `StartThread` 协程被 `StopThread` 之后还要自己做收尾(而不是靠抛错退出)时,才需要轮询。
|
|
603
|
+
|
|
604
|
+
```lua
|
|
605
|
+
---@return boolean
|
|
606
|
+
function ShouldInterruptThread() end
|
|
607
|
+
```
|
|
608
|
+
|
|
609
|
+
**返回值:**
|
|
610
|
+
|
|
611
|
+
| 类型 | 描述 |
|
|
612
|
+
| --------- | -------- |
|
|
613
|
+
| `boolean` | 是否应退出 |
|
|
614
|
+
|
|
615
|
+
**示例:**
|
|
616
|
+
|
|
617
|
+
```lua
|
|
618
|
+
StartThread(function()
|
|
619
|
+
while not ShouldInterruptThread() do
|
|
620
|
+
-- 业务
|
|
621
|
+
Sleep(100)
|
|
622
|
+
end
|
|
623
|
+
print("协程自行收尾")
|
|
624
|
+
end)
|
|
625
|
+
```
|
|
626
|
+
|
|
627
|
+
### ToJsonString
|
|
628
|
+
|
|
629
|
+
将表转换为 JSON 字符串。参数必须是表。
|
|
630
|
+
|
|
631
|
+
```lua
|
|
632
|
+
---@param data table
|
|
633
|
+
---@return string
|
|
634
|
+
function ToJsonString(data) end
|
|
635
|
+
```
|
|
636
|
+
|
|
637
|
+
**参数:**
|
|
638
|
+
|
|
639
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
640
|
+
| ------ | ----- | -------- | ------ | ---- |
|
|
641
|
+
| `data` | table | 是 | - | 表 |
|
|
642
|
+
|
|
643
|
+
**返回值:**
|
|
644
|
+
|
|
645
|
+
| 类型 | 描述 |
|
|
646
|
+
| -------- | ----------- |
|
|
647
|
+
| `string` | JSON 字符串 |
|
|
648
|
+
|
|
649
|
+
**示例:**
|
|
650
|
+
|
|
651
|
+
```lua
|
|
652
|
+
print(ToJsonString({ a = 1, b = 2 }))
|
|
653
|
+
```
|
|
654
|
+
|