创建脚本
2025/12/30
基本项目配置
每个JS脚本都是一个文件夹,文件夹内必须要有一个脚本描述文件 manifest.json 和一个入口程序文件 *.js。
脚本的配置可以通过一个 JSON 配置文件进行 UI 渲染,然后用户可以修改配置并执行脚本。
项目内所有文件编码必须是 UTF-8 。
manifest.json
{
"manifest_version": 1,
"name": "传送并自动秘境", // 名称
"version": "1.0", // 版本
"bgi_version": "0.36.1", // 适用于 BetterGI 的最低版本,BetterGI低于此版本会提示
"description": "BetterGI自带脚本,用于传送后并执行自动秘境", // 描述
// 作者信息
"authors": [
{
"name": "huiyadanli",
"link": "https://github.com/huiyadanli"
}
],
// 自定义配置
"settings_ui": "settings.json",
// 入口文件
"main": "main.js",
// 需要保留的文件路径(支持正则表达式与通配符)
"saved_files": [
"data/*.txt",
"user_data.txt"
]
}还有一些不常用的属性:
// 可以导入文件夹下的其他js类库,只支持 CommonJS
// 参考: https://github.com/microsoft/ClearScript/blob/master/ClearScriptTest/V8ModuleTest.cs 内的 js 写法。
"library": ['src']main.js
(async function () {
// 所有的代码必须由 async function 包裹
})();settings.json
用于在 BetterGI 的调度器中配置变量
[
{
"name": "selectValue", // 变量名,在js内使用 settings.变量名 获取对应的配置值
"type": "select", // 类型
"label": "选项框", // 显示标签
"options": [ //选项
"选项一",
"选项二"
]
},
{
"name": "inputValue",
"type": "input-text",
"label": "文本框"
},
{
"name": "checkValue",
"type": "checkbox",
"label": "复选框"
}
]- 类型为
input-text时
{
"name": "exampleValueName",
"type": "input-text",
"label": "示例标签名",
"default": "默认填充文本"
}如果不含default键,则js的默认读取值为undefined
如果存在值,则值的类型为String
- 类型为
select时

{
"name": "exampleValueName",
"type": "select",
"label": "示例标签名",
"options": [
"选项一",
"选项二"
],
"default": "选项一"
}如果不含default键,则js的默认读取值为undefined
default的值必须为options列表中的一项,否则js的默认读取值为undefined
如果存在值,则值的类型为String
- 类型为
checkbox时
{
"name": "exampleValueName",
"type": "checkbox",
"label": "示例标签名",
"default": false
}如果不含default键,则js的默认读取值为false
如果存在值,则值的类型为boolean
- 类型为
multi-checkbox时

{
"name": "exampleValueName",
"type": "multi-checkbox",
"label": "示例标签名",
"options": [
"选项一",
"选项二",
"选项三"
],
"default": [
"选项一",
"选项三"
]
}无论是否存在选项被勾选,JS读取的值为C#的List<string>对象,需要使用Array.from()将其转换为适配JS的object
注意: 如果使用了default,则必须按照上述格式,即使仅设置一个默认项
附: Array.from()使用方法示例 (对于以上代码框内的定义,前述语句的括号内填入settings.exampleValueName即可)
- 类型为
separator时

{
"type":"separator"
}仅有以上一种用法,用作分隔符,为了在不同类别、目的的选项之间提供一个视觉上的缓冲
