Merge remote-tracking branch 'upstream/main'
This commit is contained in:
1
.github/workflows/build.yml
vendored
1
.github/workflows/build.yml
vendored
@@ -35,6 +35,7 @@ jobs:
|
||||
- run: node ./build/build.js
|
||||
- uses: stefanzweifel/git-auto-commit-action@v5
|
||||
with:
|
||||
fetch-depth: 0
|
||||
commit_message: update repo.json
|
||||
|
||||
upload:
|
||||
|
||||
68
README.md
68
README.md
@@ -2,12 +2,78 @@
|
||||
|
||||
[BetterGI](https://github.com/babalae/better-genshin-impact) 的 📜 脚本仓库
|
||||
|
||||
在线版:[bgi.sh](https://bgi.sh)
|
||||
在线版脚本仓库:[bgi.sh](https://bgi.sh)
|
||||
|
||||
作者Q群:764972801 (非作者请勿加入)
|
||||
|
||||
[如何提交到本仓库?(谁都能看懂的 GitHub Pull Request 使用指南)](https://bgi.huiyadan.com/dev/pr.html)
|
||||
|
||||
## 脚本提交说明
|
||||
|
||||
- 战斗脚本提交到 [repo/combat](https://github.com/babalae/bettergi-scripts-list/tree/main/repo/combat) 目录;
|
||||
- JS 脚本提交到 [repo/js](https://github.com/babalae/bettergi-scripts-list/tree/main/repo/js) 目录;
|
||||
- 地图追踪脚本提交到 [repo/pathing](https://github.com/babalae/bettergi-scripts-list/tree/main/repo/pathing) 目录;
|
||||
- 七圣召唤脚本提交到 [repo/tcg](https://github.com/babalae/bettergi-scripts-list/tree/main/repo/tcg) 目录。
|
||||
|
||||
|
||||
## 脚本提交规范
|
||||
为了保证脚本的规范性和可读性,方便用户清晰了解脚本的用途,制定以下脚本命名规则和脚本文件夹命名规则。
|
||||
### 地图追踪脚本
|
||||
#### 文件命名规范
|
||||
确保脚本文件在同一目录下按预期顺序排列,并一目了然地传达关键信息。地图追踪脚本命名需包含以下核心信息:
|
||||
```
|
||||
编号-材料名称-区域(跨区域材料填写)-二级子区域-数量
|
||||
```
|
||||
- 编号
|
||||
- 两位数,如果单个资源脚本数量超过 `100` 可以考虑使用三位数编号或者使用字母加数字编号,如 A01
|
||||
- 编号的排序应遵循以下两种方式之一:
|
||||
- 按传送点位顺序排序。相邻脚本之间优先保证传送的便捷性,这种编号方式考虑整体采集效率。
|
||||
- 按材料获取效率排序。优先选择资源分布密集或容易采集的点,效率高的路径放在靠前编号,这种编号方式考虑编号靠前脚本的采集效率。
|
||||
- 材料名称
|
||||
- 采集物(使用游戏内官方名称命名,如 `慕风蘑菇`,`劫波莲`,不应当使用 `绫华突破材料`等不清晰的名称命名)
|
||||
- 掉落物(因掉落物名称与掉落物等级有关,因此不使用掉落物本身命名,而是使用怪物名称命名)
|
||||
- 区域(指 `蒙德` `璃月` `稻妻` `须弥` `枫丹` `纳塔` `至冬`,仅当材料跨区域需标注)
|
||||
- 二级子区域(细分地点,如 `绝云间`)
|
||||
- 预期采集的数量
|
||||
示例:
|
||||
```
|
||||
01-水晶矿-璃月-绝云间-6个
|
||||
02-水晶矿-璃月-荻花洲-8个
|
||||
```
|
||||
脚本名称仅限上述规定的编号、材料名称、区域、二级子区域,不应包含额外的描述或标点符号。如:
|
||||
```
|
||||
01-水晶矿-璃月-快速路径-绝云间-6个
|
||||
```
|
||||
其他注意事项
|
||||
- 脚本文件名应当和 `json` 文件中的 `name` 字段相同。
|
||||
#### 文件夹命名规范
|
||||
目的:对脚本按材料分类管理,便于版本控制与团队协作。目录结构应当遵循以下原则:
|
||||
|
||||
- 一级目录:以材料名称命名,须与文件命名中的材料名称一致。
|
||||
- 二级子目录(可选):可根据项目或作者划分,如有必要。
|
||||
示例目录结构如下:
|
||||
```
|
||||
repo/pathing/
|
||||
├─ 水晶矿/
|
||||
│ ├─ 01-水晶矿-璃月-绝云间-6个
|
||||
│ └─ 02-水晶矿-璃月-荻花洲-8个
|
||||
└─ 风车菊/
|
||||
└─ 01-风车菊-蒙德-清泉镇-15个
|
||||
```
|
||||
如果脚本和原来的地图追踪脚本存在冲突 按照以下原则处理:
|
||||
- 修复或补充:直接提交到原材料目录。
|
||||
- 路线冲突:新建同名目录并添加作者标识:
|
||||
1. 将旧脚本目录重命名为 `AA@旧作者名`
|
||||
2. 新脚本放入 `AA@你的名字`
|
||||
3. 例:原 `repo/pathing/AA` 重命名为 `repo/pathing/AA@oldauthor` 新目录 `repo/pathing/AA@yourname`
|
||||
|
||||
其他注意事项
|
||||
- 目录名仅限材料官方名称,不添加版本号或其他标识。
|
||||
- 作者标识仅在冲突时追加,格式为“@作者名”,紧随原目录名。
|
||||
|
||||
### 其他
|
||||
因早期对脚本管理较为宽松,因此仓库有部分脚本并不符合命名规范,欢迎通过 PR 规范这些名称。
|
||||
|
||||
## 相关源码
|
||||
|
||||
脚本仓库页面的源码:[bettergi-scripts-web](https://github.com/huiyadanli/bettergi-scripts-web)
|
||||
|
||||
@@ -1,32 +1,32 @@
|
||||
(async function () {
|
||||
setGameMetrics(1920, 1080, 2); // 设置游戏窗口大小和DPI
|
||||
keyPress("B");
|
||||
await sleep(3000);
|
||||
click(670,40);
|
||||
await sleep(2000);
|
||||
click(660,1010);
|
||||
await sleep(2000);
|
||||
click(300,1020);
|
||||
await sleep(1000);
|
||||
click(300,380);
|
||||
await sleep(400);
|
||||
click(300,300);
|
||||
await sleep(400);
|
||||
click(300,220);
|
||||
await sleep(400);
|
||||
click(300,150);
|
||||
await sleep(800);
|
||||
click(340,1010);
|
||||
await sleep(800);
|
||||
click(1740,1020);
|
||||
await sleep(800);
|
||||
click(1180,750);
|
||||
await sleep(800);
|
||||
click(950,800);
|
||||
await sleep(800);
|
||||
keyPress("Escape");
|
||||
await sleep(1000);
|
||||
keyPress("Escape");
|
||||
|
||||
log.info("已分解狗粮");
|
||||
(async function () {
|
||||
setGameMetrics(1920, 1080, 2); // 设置游戏窗口大小和DPI
|
||||
keyPress("B");
|
||||
await sleep(3000);
|
||||
click(670,40);
|
||||
await sleep(2000);
|
||||
click(660,1010);
|
||||
await sleep(2000);
|
||||
click(300,1020);
|
||||
await sleep(1000);
|
||||
click(300,380);
|
||||
await sleep(400);
|
||||
click(300,300);
|
||||
await sleep(400);
|
||||
click(300,220);
|
||||
await sleep(400);
|
||||
click(300,150);
|
||||
await sleep(800);
|
||||
click(340,1010);
|
||||
await sleep(800);
|
||||
click(1740,1020);
|
||||
await sleep(800);
|
||||
click(1180,750);
|
||||
await sleep(800);
|
||||
click(950,800);
|
||||
await sleep(800);
|
||||
keyPress("Escape");
|
||||
await sleep(1000);
|
||||
keyPress("Escape");
|
||||
|
||||
log.info("已分解狗粮");
|
||||
})();
|
||||
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"manifest_version": 1,
|
||||
"name": "分解狗粮",
|
||||
"version": "1.0",
|
||||
"description": "用于分解狗粮",
|
||||
"authors": [
|
||||
{
|
||||
"name": "鹤望兰",
|
||||
}
|
||||
],
|
||||
"main": "main.js",
|
||||
{
|
||||
"manifest_version": 1,
|
||||
"name": "分解狗粮",
|
||||
"version": "1.0",
|
||||
"description": "用于分解狗粮",
|
||||
"authors": [
|
||||
{
|
||||
"name": "鹤望兰",
|
||||
}
|
||||
],
|
||||
"main": "main.js",
|
||||
}
|
||||
@@ -1,30 +1,30 @@
|
||||
(async function () {
|
||||
setGameMetrics(1920, 1080, 2); // 设置游戏窗口大小和DPI
|
||||
keyPress("B");
|
||||
await sleep(3000);
|
||||
click(670,40);
|
||||
await sleep(2000);
|
||||
click(80,1010);
|
||||
await sleep(2000);
|
||||
click(170,1020);
|
||||
await sleep(1000);
|
||||
click(300,380);
|
||||
await sleep(400);
|
||||
click(300,300);
|
||||
await sleep(400);
|
||||
click(300,220);
|
||||
await sleep(400);
|
||||
click(300,150);
|
||||
await sleep(800);
|
||||
click(340,1010);
|
||||
await sleep(800);
|
||||
click(1740,1020);
|
||||
await sleep(3000);
|
||||
click(1180,830);
|
||||
await sleep(800);
|
||||
click(950,800);
|
||||
await sleep(1000);
|
||||
keyPress("Escape");
|
||||
|
||||
log.info("已摧毁狗粮");
|
||||
(async function () {
|
||||
setGameMetrics(1920, 1080, 2); // 设置游戏窗口大小和DPI
|
||||
keyPress("B");
|
||||
await sleep(3000);
|
||||
click(670,40);
|
||||
await sleep(2000);
|
||||
click(80,1010);
|
||||
await sleep(2000);
|
||||
click(170,1020);
|
||||
await sleep(1000);
|
||||
click(300,380);
|
||||
await sleep(400);
|
||||
click(300,300);
|
||||
await sleep(400);
|
||||
click(300,220);
|
||||
await sleep(400);
|
||||
click(300,150);
|
||||
await sleep(800);
|
||||
click(340,1010);
|
||||
await sleep(800);
|
||||
click(1740,1020);
|
||||
await sleep(3000);
|
||||
click(1180,830);
|
||||
await sleep(800);
|
||||
click(950,800);
|
||||
await sleep(1000);
|
||||
keyPress("Escape");
|
||||
|
||||
log.info("已摧毁狗粮");
|
||||
})();
|
||||
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"manifest_version": 1,
|
||||
"name": "摧毁狗粮",
|
||||
"version": "1.0",
|
||||
"description": "用于摧毁狗粮获取摩拉",
|
||||
"authors": [
|
||||
{
|
||||
"name": "鹤望兰",
|
||||
}
|
||||
],
|
||||
"main": "main.js",
|
||||
}
|
||||
{
|
||||
"manifest_version": 1,
|
||||
"name": "摧毁狗粮",
|
||||
"version": "1.0",
|
||||
"description": "用于摧毁狗粮获取摩拉",
|
||||
"authors": [
|
||||
{
|
||||
"name": "鹤望兰",
|
||||
}
|
||||
],
|
||||
"main": "main.js",
|
||||
}
|
||||
@@ -1,109 +1,109 @@
|
||||
(async function () {
|
||||
//特殊字符键盘映射集
|
||||
const map = {
|
||||
'(': '9',
|
||||
')': '0',
|
||||
'`': 'VK_OEM_3',
|
||||
'!': '1',
|
||||
'@': '2',
|
||||
'#': '3',
|
||||
'$': '4',
|
||||
'%': '5',
|
||||
'^': '6',
|
||||
'&': '7',
|
||||
'*': '8',
|
||||
'_': 'VK_SUBTRACT',
|
||||
'-': 'VK_SUBTRACT',
|
||||
'+': 'VK_ADD',
|
||||
'=': 'VK_ADD',
|
||||
'|': 'VK_SEPARATOR',
|
||||
'{': 'VK_OEM_4',
|
||||
'}': 'VK_OEM_6',
|
||||
'[': 'VK_OEM_4',
|
||||
']': 'VK_OEM_6',
|
||||
':': 'VK_OEM_1',
|
||||
';': 'VK_OEM_1',
|
||||
'\'': 'VK_OEM_7',
|
||||
'"': 'VK_OEM_7',
|
||||
'<': 'VK_OEM_COMMA',
|
||||
'>': 'VK_OEM_PERIOD',
|
||||
',': 'VK_OEM_COMMA',
|
||||
'.': 'VK_OEM_PERIOD',
|
||||
'?': 'VK_OEM_2',
|
||||
};
|
||||
function replaceUsingMap(input) {
|
||||
return map[input] || input; // 如果找到映射,返回对应的值;否则返回原值
|
||||
}
|
||||
setGameMetrics(1920, 1080, 2);
|
||||
await sleep(3000);
|
||||
//同意用户协议
|
||||
click(698, 610);
|
||||
await sleep(1000);
|
||||
//点击用户名输入框
|
||||
click(800, 400);
|
||||
await sleep(1000);
|
||||
//输入用户名
|
||||
log.info("输入用户名");
|
||||
let username = settings.username;
|
||||
let usernameList = username.split('');
|
||||
usernameList.forEach(element => {
|
||||
charCode = element.charCodeAt(0);
|
||||
let arr = [40,41,33,64,35,36,37,94,38,42,95,43,124,123,125,58,34,60,62,63];
|
||||
if(charCode > 64 && charCode < 91 || arr.includes(charCode)==1){
|
||||
element=replaceUsingMap(element);
|
||||
keyDown("SHIFT");
|
||||
keyPress(element);
|
||||
keyUp("SHIFT");
|
||||
}else{
|
||||
element=replaceUsingMap(element);
|
||||
keyPress(element);
|
||||
}
|
||||
});
|
||||
log.info("用户名={xx}",username)
|
||||
await sleep(3000);
|
||||
//点击用户名输入框
|
||||
click(800, 500);
|
||||
await sleep(1000);
|
||||
//输入密码
|
||||
log.info("输入密码")
|
||||
let password = settings.password;
|
||||
let passwordList = password.split('');
|
||||
passwordList.forEach(element => {
|
||||
charCode = element.charCodeAt(0);
|
||||
let arr = [40,41,33,64,35,36,37,94,38,42,95,43,124,123,125,58,34,60,62,63];
|
||||
if(charCode > 64 && charCode < 91 || arr.includes(charCode)==1){
|
||||
element=replaceUsingMap(element);
|
||||
keyDown("SHIFT");
|
||||
keyPress(element);
|
||||
keyUp("SHIFT");
|
||||
}else{
|
||||
element=replaceUsingMap(element);
|
||||
keyPress(element);
|
||||
}
|
||||
});
|
||||
log.info("密码={xx}",password);
|
||||
await sleep(1000);
|
||||
//登录
|
||||
keyPress("RETURN");
|
||||
await sleep(10000);
|
||||
//进入世界
|
||||
click(950, 1000);
|
||||
log.info("进入世界");
|
||||
await sleep(10000);
|
||||
//进入世界2
|
||||
click(950, 1000);
|
||||
log.info("进入世界2");
|
||||
await sleep(10000);
|
||||
//点击领月卡
|
||||
click(950, 1000);
|
||||
log.info("点击领月卡");
|
||||
await sleep(1000);
|
||||
//点击领月卡2
|
||||
click(950, 1000);
|
||||
log.info("点击领月卡2");
|
||||
await sleep(1000);
|
||||
//点击领月卡2
|
||||
click(950, 1000);
|
||||
log.info("点击领月卡3");
|
||||
await sleep(1000);
|
||||
(async function () {
|
||||
//特殊字符键盘映射集
|
||||
const map = {
|
||||
'(': '9',
|
||||
')': '0',
|
||||
'`': 'VK_OEM_3',
|
||||
'!': '1',
|
||||
'@': '2',
|
||||
'#': '3',
|
||||
'$': '4',
|
||||
'%': '5',
|
||||
'^': '6',
|
||||
'&': '7',
|
||||
'*': '8',
|
||||
'_': 'VK_SUBTRACT',
|
||||
'-': 'VK_SUBTRACT',
|
||||
'+': 'VK_ADD',
|
||||
'=': 'VK_ADD',
|
||||
'|': 'VK_SEPARATOR',
|
||||
'{': 'VK_OEM_4',
|
||||
'}': 'VK_OEM_6',
|
||||
'[': 'VK_OEM_4',
|
||||
']': 'VK_OEM_6',
|
||||
':': 'VK_OEM_1',
|
||||
';': 'VK_OEM_1',
|
||||
'\'': 'VK_OEM_7',
|
||||
'"': 'VK_OEM_7',
|
||||
'<': 'VK_OEM_COMMA',
|
||||
'>': 'VK_OEM_PERIOD',
|
||||
',': 'VK_OEM_COMMA',
|
||||
'.': 'VK_OEM_PERIOD',
|
||||
'?': 'VK_OEM_2',
|
||||
};
|
||||
function replaceUsingMap(input) {
|
||||
return map[input] || input; // 如果找到映射,返回对应的值;否则返回原值
|
||||
}
|
||||
setGameMetrics(1920, 1080, 2);
|
||||
await sleep(3000);
|
||||
//同意用户协议
|
||||
click(698, 610);
|
||||
await sleep(1000);
|
||||
//点击用户名输入框
|
||||
click(800, 400);
|
||||
await sleep(1000);
|
||||
//输入用户名
|
||||
log.info("输入用户名");
|
||||
let username = settings.username;
|
||||
let usernameList = username.split('');
|
||||
usernameList.forEach(element => {
|
||||
charCode = element.charCodeAt(0);
|
||||
let arr = [40,41,33,64,35,36,37,94,38,42,95,43,124,123,125,58,34,60,62,63];
|
||||
if(charCode > 64 && charCode < 91 || arr.includes(charCode)==1){
|
||||
element=replaceUsingMap(element);
|
||||
keyDown("SHIFT");
|
||||
keyPress(element);
|
||||
keyUp("SHIFT");
|
||||
}else{
|
||||
element=replaceUsingMap(element);
|
||||
keyPress(element);
|
||||
}
|
||||
});
|
||||
log.info("用户名={xx}",username)
|
||||
await sleep(3000);
|
||||
//点击用户名输入框
|
||||
click(800, 500);
|
||||
await sleep(1000);
|
||||
//输入密码
|
||||
log.info("输入密码")
|
||||
let password = settings.password;
|
||||
let passwordList = password.split('');
|
||||
passwordList.forEach(element => {
|
||||
charCode = element.charCodeAt(0);
|
||||
let arr = [40,41,33,64,35,36,37,94,38,42,95,43,124,123,125,58,34,60,62,63];
|
||||
if(charCode > 64 && charCode < 91 || arr.includes(charCode)==1){
|
||||
element=replaceUsingMap(element);
|
||||
keyDown("SHIFT");
|
||||
keyPress(element);
|
||||
keyUp("SHIFT");
|
||||
}else{
|
||||
element=replaceUsingMap(element);
|
||||
keyPress(element);
|
||||
}
|
||||
});
|
||||
log.info("密码={xx}",password);
|
||||
await sleep(1000);
|
||||
//登录
|
||||
keyPress("RETURN");
|
||||
await sleep(10000);
|
||||
//进入世界
|
||||
click(950, 1000);
|
||||
log.info("进入世界");
|
||||
await sleep(10000);
|
||||
//进入世界2
|
||||
click(950, 1000);
|
||||
log.info("进入世界2");
|
||||
await sleep(10000);
|
||||
//点击领月卡
|
||||
click(950, 1000);
|
||||
log.info("点击领月卡");
|
||||
await sleep(1000);
|
||||
//点击领月卡2
|
||||
click(950, 1000);
|
||||
log.info("点击领月卡2");
|
||||
await sleep(1000);
|
||||
//点击领月卡2
|
||||
click(950, 1000);
|
||||
log.info("点击领月卡3");
|
||||
await sleep(1000);
|
||||
})();
|
||||
@@ -1,13 +1,13 @@
|
||||
{
|
||||
"manifest_version": 1,
|
||||
"name": "登录游戏",
|
||||
"version": "1.0",
|
||||
"description": "输入账号和密码并进入游戏",
|
||||
"authors": [
|
||||
{
|
||||
"name": "愚溪",
|
||||
}
|
||||
],
|
||||
"settings_ui": "settings.json",
|
||||
"main": "main.js"
|
||||
{
|
||||
"manifest_version": 1,
|
||||
"name": "登录游戏",
|
||||
"version": "1.0",
|
||||
"description": "输入账号和密码并进入游戏",
|
||||
"authors": [
|
||||
{
|
||||
"name": "愚溪",
|
||||
}
|
||||
],
|
||||
"settings_ui": "settings.json",
|
||||
"main": "main.js"
|
||||
}
|
||||
@@ -1,12 +1,12 @@
|
||||
[
|
||||
{
|
||||
"name": "username",
|
||||
"type": "input-text",
|
||||
"label": "账号"
|
||||
},
|
||||
{
|
||||
"name": "password",
|
||||
"type": "input-text",
|
||||
"label": "密码"
|
||||
}
|
||||
]
|
||||
[
|
||||
{
|
||||
"name": "username",
|
||||
"type": "input-text",
|
||||
"label": "账号"
|
||||
},
|
||||
{
|
||||
"name": "password",
|
||||
"type": "input-text",
|
||||
"label": "密码"
|
||||
}
|
||||
]
|
||||
@@ -1,18 +1,18 @@
|
||||
(async function () {
|
||||
setGameMetrics(1920, 1080, 2);
|
||||
await sleep(1000);
|
||||
keyPress("ESCAPE")
|
||||
await sleep(1000);
|
||||
click(50, 1030);
|
||||
log.info("退出");
|
||||
await sleep(1000);
|
||||
click(1000, 750);
|
||||
log.info("确认");
|
||||
await sleep(20000);
|
||||
click(1800, 1000);
|
||||
log.info("切换账号");
|
||||
await sleep(1000);
|
||||
click(1000, 550);
|
||||
log.info("确认");
|
||||
await sleep(4000);
|
||||
(async function () {
|
||||
setGameMetrics(1920, 1080, 2);
|
||||
await sleep(1000);
|
||||
keyPress("ESCAPE")
|
||||
await sleep(1000);
|
||||
click(50, 1030);
|
||||
log.info("退出");
|
||||
await sleep(1000);
|
||||
click(1000, 750);
|
||||
log.info("确认");
|
||||
await sleep(20000);
|
||||
click(1800, 1000);
|
||||
log.info("切换账号");
|
||||
await sleep(1000);
|
||||
click(1000, 550);
|
||||
log.info("确认");
|
||||
await sleep(4000);
|
||||
})();
|
||||
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"manifest_version": 1,
|
||||
"name": "退出并重登",
|
||||
"version": "1.0",
|
||||
"description": "退出游戏并退出账号",
|
||||
"authors": [
|
||||
{
|
||||
"name": "愚溪",
|
||||
}
|
||||
],
|
||||
"main": "main.js"
|
||||
{
|
||||
"manifest_version": 1,
|
||||
"name": "退出并重登",
|
||||
"version": "1.0",
|
||||
"description": "退出游戏并退出账号",
|
||||
"authors": [
|
||||
{
|
||||
"name": "愚溪",
|
||||
}
|
||||
],
|
||||
"main": "main.js"
|
||||
}
|
||||
@@ -1,33 +1,33 @@
|
||||
(async function () {
|
||||
setGameMetrics(3840, 2160, 2);
|
||||
keyPress("b");
|
||||
await sleep(1500);
|
||||
click(1350, 90);
|
||||
await sleep(1240);
|
||||
click(1310, 2030);
|
||||
await sleep(1000);
|
||||
click(580, 2030);
|
||||
await sleep(1240);
|
||||
click(250, 300);
|
||||
await sleep(500);
|
||||
click(250, 450);
|
||||
await sleep(500);
|
||||
click(250, 600);
|
||||
await sleep(500);
|
||||
click(250, 750);
|
||||
await sleep(500);
|
||||
click(700, 2030);
|
||||
await sleep(1240);
|
||||
click(3500, 2030);
|
||||
await sleep(1240);
|
||||
click(2300, 1500);
|
||||
await sleep(1000);
|
||||
keyPress("Escape");
|
||||
await sleep(800);
|
||||
keyPress("Escape");
|
||||
await sleep(1000);
|
||||
keyPress("Escape");
|
||||
await sleep(1000);
|
||||
|
||||
log.info("已分解狗粮");
|
||||
(async function () {
|
||||
setGameMetrics(3840, 2160, 2);
|
||||
keyPress("b");
|
||||
await sleep(1500);
|
||||
click(1350, 90);
|
||||
await sleep(1240);
|
||||
click(1310, 2030);
|
||||
await sleep(1000);
|
||||
click(580, 2030);
|
||||
await sleep(1240);
|
||||
click(250, 300);
|
||||
await sleep(500);
|
||||
click(250, 450);
|
||||
await sleep(500);
|
||||
click(250, 600);
|
||||
await sleep(500);
|
||||
click(250, 750);
|
||||
await sleep(500);
|
||||
click(700, 2030);
|
||||
await sleep(1240);
|
||||
click(3500, 2030);
|
||||
await sleep(1240);
|
||||
click(2300, 1500);
|
||||
await sleep(1000);
|
||||
keyPress("Escape");
|
||||
await sleep(800);
|
||||
keyPress("Escape");
|
||||
await sleep(1000);
|
||||
keyPress("Escape");
|
||||
await sleep(1000);
|
||||
|
||||
log.info("已分解狗粮");
|
||||
})();
|
||||
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"manifest_version": 1,
|
||||
"name": "分解狗粮",
|
||||
"version": "1.0",
|
||||
"description": "用于分解狗粮",
|
||||
"authors": [
|
||||
{
|
||||
"name": "HZYgrandma",
|
||||
}
|
||||
],
|
||||
"main": "main.js",
|
||||
{
|
||||
"manifest_version": 1,
|
||||
"name": "分解狗粮",
|
||||
"version": "1.0",
|
||||
"description": "用于分解狗粮",
|
||||
"authors": [
|
||||
{
|
||||
"name": "HZYgrandma",
|
||||
}
|
||||
],
|
||||
"main": "main.js",
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user