更新,修改相关内容 (#2723)

This commit is contained in:
古又
2026-01-18 22:24:34 +08:00
committed by GitHub
parent 0ac60e5dc7
commit a0b8f5af19
9 changed files with 359 additions and 228 deletions

View File

@@ -28,73 +28,11 @@
->选择【修改JS脚本自定义配置】->自己看自身情况勾选
## 更新
### 版本:2.0.4
1.修改多处龙蛋对应位置
2.固定缩放
3.处理圣水识别的莫拉数目(异常情况)
### 版本:2.0.3
1.修复闪闪礼蛋识别与蛋名称不相符合
2.添加通知
3.增加时长,为了延长功能稳定性
### 版本:2.0.2
1.修改龙蛋滑动小段,直接跳出问题
### 版本:2.0.1
1.精修识别对话区域
### 版本:2.0
1.添加长对话方法
2.添加糖雕
### 版本:1.2
1.重构代码,优化相关时间
2.增加龙蛋平均模式
3.修改保存本地记录方式
4.添加上香识别时间判断
5.添加背包物品过期
### 版本:1.2.0
1.增加挪德卡莱转盘和今日收获
2.删除一些奇奇怪怪的东西
### 版本:1.1.3
1.增加海螺拿来开宝箱选项(默认开启)
2.添加伪造日志
3.修改文件位置
### 版本:1.1.2
1.修复稻妻鸣神大社传送错误问题
2.添加没有勾选就执行的操作提示
### 版本:1.1.1
修改海螺路线添加海螺刷新点位的第3种路线
### 版本:1.1
1.新增奇异的海螺
2.修改圣水识别
3.修改稻妻识别御神签
### 版本:1.0.4
1.重构相关代码
2.替换解签后的识别模式
### 版本:1.0.3
缩短枫丹梅洛彼得堡的路线
### 版本:1.0.2
1.优化相关逻辑
2.修改代码显示错误
3.增加延迟操作,减小相关操作时间
### 版本:1.0.1
1.优化相关功能的点击时间
2.优化背包滑动(感谢吉吉喵!!)
3.更新御神签的识别以及修复挂签bug
4.输出福利餐得到的食物,以及幸运签的内容到本地,后续还会加入其他东西
### 版本:2.1
1.龙蛋数目由玩家填写,暂时去掉打开背包自动记录龙蛋功能
2.修改去纳塔悠悠集市的路线(中转一下)
3.添加糖雕添加雅珂达、哥伦比娅选项以及后退几步避免用户BGI开启的自动拾取误触调查点
4.转盘提供多种选择
5.去掉圣水中转路线,去掉快速调节时间操作
6.历史更新记录在records文件夹内

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -1,152 +1,145 @@
{
"info": {
"name": "纳塔悠悠集市路线",
"bgi_version": "0.45.0",
"type": "collect",
"order": 0,
"tags": [],
"enable_monster_loot_split": false,
"map_name": "Teyvat",
"map_match_method": "",
"items": [],
"authors": [
{
"name": "古又",
"links": ""
"links": "",
"name": "古又"
}
],
"version": "1.0",
"description": "领取龙蛋",
"last_modified_time": 1755440920507
},
"config": {
"realtime_triggers": {
"AutoPick": true
}
},
"farming_info": {
"allow_farming_count": false,
"normal_mob_count": 0,
"elite_mob_count": 0,
"primary_target": "",
"duration_seconds": 0,
"elite_details": "",
"total_mora": 0
"bgi_version": "0.45.0",
"description": "",
"enable_monster_loot_split": false,
"last_modified_time": 1768733289064,
"map_match_method": "SIFT",
"map_name": "Teyvat",
"name": "纳塔悠悠集市路线",
"tags": [],
"type": "collect",
"version": "1.0"
},
"positions": [
{
"id": 1,
"x": 13979.1865234375,
"y": 470.8291015625,
"action": "",
"action_params": "",
"id": 1,
"move_mode": "walk",
"type": "teleport",
"point_ext_params": {
"misidentification": {
"type": [
"unrecognized"
],
"handling_mode": "previousDetectedPoint",
"arrival_time": 0
},
"description": "",
"enable_monster_loot_split": false
}
"x": 10273.9130859375,
"y": -191.896484375
},
{
"action": "",
"id": 2,
"x": 13964.6474609375,
"y": 457.3974609375,
"action": "",
"move_mode": "run",
"type": "path",
"move_mode": "walk",
"point_ext_params": {
"description": "",
"enable_monster_loot_split": false,
"misidentification": {
"arrival_time": 0,
"handling_mode": "previousDetectedPoint",
"type": [
"unrecognized"
],
"handling_mode": "previousDetectedPoint",
"arrival_time": 0
},
"description": "",
"enable_monster_loot_split": false
}
]
}
},
"type": "teleport",
"x": 13979.1865234375,
"y": 470.8291015625
},
{
"action": "",
"id": 3,
"x": 13960.3623046875,
"y": 453.92626953125,
"action": "",
"move_mode": "jump",
"type": "path",
"move_mode": "run",
"point_ext_params": {
"description": "",
"enable_monster_loot_split": false,
"misidentification": {
"arrival_time": 0,
"handling_mode": "previousDetectedPoint",
"type": [
"unrecognized"
],
"handling_mode": "previousDetectedPoint",
"arrival_time": 0
},
"description": "",
"enable_monster_loot_split": false
}
]
}
},
"type": "path",
"x": 13964.6474609375,
"y": 457.3974609375
},
{
"action": "",
"id": 4,
"x": 13941.265625,
"y": 434.55224609375,
"action": "",
"move_mode": "run",
"type": "path",
"move_mode": "jump",
"point_ext_params": {
"description": "",
"enable_monster_loot_split": false,
"misidentification": {
"arrival_time": 0,
"handling_mode": "previousDetectedPoint",
"type": [
"unrecognized"
],
"handling_mode": "previousDetectedPoint",
"arrival_time": 0
},
"description": "",
"enable_monster_loot_split": false
}
]
}
},
"type": "path",
"x": 13960.3623046875,
"y": 453.92626953125
},
{
"action": "",
"id": 5,
"x": 13934.8505859375,
"y": 426.47900390625,
"action": "",
"move_mode": "run",
"type": "path",
"point_ext_params": {
"description": "",
"enable_monster_loot_split": false,
"misidentification": {
"arrival_time": 0,
"handling_mode": "previousDetectedPoint",
"type": [
"unrecognized"
],
"handling_mode": "previousDetectedPoint",
"arrival_time": 0
},
"description": "",
"enable_monster_loot_split": false
}
]
}
},
"type": "path",
"x": 13941.265625,
"y": 434.55224609375
},
{
"id": 6,
"x": 13919.9755859375,
"y": 411.5107421875,
"action": "",
"id": 6,
"move_mode": "run",
"type": "path",
"point_ext_params": {
"description": "",
"enable_monster_loot_split": false,
"misidentification": {
"arrival_time": 0,
"handling_mode": "previousDetectedPoint",
"type": [
"unrecognized"
],
"handling_mode": "previousDetectedPoint",
"arrival_time": 0
},
]
}
},
"type": "path",
"x": 13934.8505859375,
"y": 426.47900390625
},
{
"action": "",
"id": 7,
"move_mode": "run",
"point_ext_params": {
"description": "",
"enable_monster_loot_split": false
}
"enable_monster_loot_split": false,
"misidentification": {
"arrival_time": 0,
"handling_mode": "previousDetectedPoint",
"type": [
"unrecognized"
]
}
},
"type": "path",
"x": 13919.9755859375,
"y": 411.5107421875
}
]
}

View File

@@ -538,14 +538,8 @@ async function checkExpire() {
if (settings.water) {
await fakeLog("蒙德清泉镇圣水", false, true, 0);
await genshin.returnMainUi();
await pathingScript.runFile("assets/霍普金斯.json");
await genshin.returnMainUi();
await genshin.returnMainUi();
await pathingScript.runFile("assets/蒙德清泉镇路线.json");
// await genshin.setTime(8,0); // 等下个BGI版本再用
await genshin.setTime(8,0);
//识别对话位置,并点击
let ocrResults = await performOcr("神奇的", dialogZone.x, dialogZone.y, false);
if (ocrResults.success) {
@@ -906,13 +900,15 @@ async function checkExpire() {
// 纳塔悠悠集市龙蛋
if(settings.eggs){
let nowDragonEggsNum = record.lastDragonEggsNum;
if (record.lastDragonEggsNum == "【山之血0飞澜鲨鲨0圣龙君临0太阳的轰鸣0献给小酒杯0菲耶蒂娜0】" || settings.updateEggs) {
nowDragonEggsNum = await chcekDragonEggs();
settings.updateEggs = "false";
};
let nowDragonEggs = nowDragonEggsNum.match(/\d+/g).map(Number);
await fakeLog("纳塔悠悠集市龙蛋", false, true, 0)
// 保留打开背包识别龙蛋信息
// let nowDragonEggsNum = record.lastDragonEggsNum;
// if (record.lastDragonEggsNum == "【山之血0飞澜鲨鲨0圣龙君临0太阳的轰鸣0献给小酒杯0菲耶蒂娜0】" || settings.updateEggs) {
// nowDragonEggsNum = await chcekDragonEggs();
// settings.updateEggs = "false";
// };
let nowDragonEggsNum = settings.dragonEggsNum;
let nowDragonEggs = nowDragonEggsNum.match(/\d+/g).map(Number);
await genshin.returnMainUi();
await pathingScript.runFile("assets/纳塔悠悠集市路线.json");
let ocrResults = await performOcr("察尔瓦", dialogZone.x, dialogZone.y, false);
@@ -925,7 +921,7 @@ async function checkExpire() {
await sleep(5000);
let figure = 0;
if (settings.selectDragonEggModel == "随机模式") {
figure = Math.floor((Math.random() + Date.now() % 1) * 6);
figure = Math.floor(Math.random() * 6);
nowDragonEggs[figure]++;
} else if (settings.selectDragonEggModel == "指定模式") {
switch (settings.pickupDragonEgg) {
@@ -1011,6 +1007,7 @@ async function checkExpire() {
notification.Send(`背包龙蛋数目: 【山之血:${nowDragonEggs[0]},飞澜鲨鲨:${nowDragonEggs[1]},圣龙君临:${nowDragonEggs[2]},太阳的轰鸣:${nowDragonEggs[3]},献给小酒杯:${nowDragonEggs[4]},菲耶蒂娜:${nowDragonEggs[5]}`);
};
// 更新记录
settings.dragonEggsNum = `${nowDragonEggs[0]}-${nowDragonEggs[1]}-${nowDragonEggs[2]}-${nowDragonEggs[3]}-${nowDragonEggs[4]}-${nowDragonEggs[5]}`;
record.lastDragonEggsNum = `【山之血:${nowDragonEggs[0]},飞澜鲨鲨:${nowDragonEggs[1]},圣龙君临:${nowDragonEggs[2]},太阳的轰鸣:${nowDragonEggs[3]},献给小酒杯:${nowDragonEggs[4]},菲耶蒂娜:${nowDragonEggs[5]}`;
await recordForFile(false);
moveMouseTo(coordinates[figure][0],coordinates[figure][1]);
@@ -1033,43 +1030,133 @@ async function checkExpire() {
await fakeLog("挪德卡莱那夏镇好运转盘", false, true, 0)
await genshin.returnMainUi();
await pathingScript.runFile("assets/挪德卡莱那夏镇好运转盘路线.json");
await sleep(1000);
let ocrResults = await performOcr("好运速转", dialogZone.x, dialogZone.y, false);
if (ocrResults.success) {
await sleep(3000);
leftButtonClick();
await sleep(1000);
let ocrResults1 = await performOcr("拨动转盘", dialogZone.x, dialogZone.y, false);
if (ocrResults1.success) {
await sleep(6000);
let ocrText = await performOcr("", { min: 555, max: 1365 }, { min: 902, max: 1000 }, true);
if (ocrText.text == "") {
await sleep(700);
ocrText = await performOcr("", { min: 555, max: 1365 }, { min: 902, max: 1000 }, true);
};
log.info(`转盘运势:${ocrText.text}`);
// writeContentToFile(`转盘的运势:${recognizedText}\n`, false);
let text = ocrText.text.replace(/\r\n|\n|\r/g, "");
await sleep(1500);
for (let i = record.records.length - 1; i > 0; i--) {
record.records[i] = record.records[i - 1];
}
record.records[0] = `转盘的运势: ${text}`;
if (settings.notify) {
notification.Send(`转盘的运势: ${text}`);
}
await recordForFile(false);// 修改记录文件
await sleep(2000);
let text = "";
let judgeTendency = true;
let num = 0;
do {
let ocrResults = await performOcr("好运速转", dialogZone.x, dialogZone.y, false);
if (ocrResults.success) {
await sleep(3000);
leftButtonClick();
await sleep(700);
await sleep(1000);
let ocrResults1 = await performOcr("拨动转盘", dialogZone.x, dialogZone.y, false);
if (ocrResults1.success) {
await sleep(6000);
let ocrText = await performOcr("", { min: 555, max: 1365 }, { min: 902, max: 1000 }, true);
if (ocrText.text == "") {
await sleep(700);
ocrText = await performOcr("", { min: 555, max: 1365 }, { min: 902, max: 1000 }, true);
};
log.info(`转盘运势:${ocrText.text}`);
// writeContentToFile(`转盘的运势:${recognizedText}\n`, false);
text = ocrText.text.replace(/\r\n|\n|\r/g, "");
switch (settings.selectLuckTendency) {
case "林狼啸月,魔物环伺":
judgeTendency = text.includes("狼啸");
num++;
await sleep(2000);
leftButtonClick();
await sleep(3500);
if (num >= Number(settings.maxNum)) {
judgeTendency = true;
};
break;
case "雷鸣风骤,摧枯拉朽":
judgeTendency = text.includes("鸣风");
num++;
await sleep(2000);
leftButtonClick();
await sleep(3500);
if (num >= Number(settings.maxNum)) {
judgeTendency = true;
};
break;
case "旭日曈曈,驱散迷雾":
judgeTendency = text.includes("旭日");
num++;
await sleep(2000);
leftButtonClick();
await sleep(3500);
if (num >= Number(settings.maxNum)) {
judgeTendency = true;
};
break;
case "海蛇翻腾,风暴肆虐":
judgeTendency = text.includes("海蛇");
num++;
await sleep(2000);
leftButtonClick();
await sleep(3500);
if (num >= Number(settings.maxNum)){
judgeTendency = true;
};
break;
case "牝鹿引鹿,旅途顺利":
judgeTendency = text.includes("鹿引");
num++;
await sleep(2000);
leftButtonClick();
await sleep(3500);
if (num >= Number(settings.maxNum)) {
judgeTendency = true;
};
break;
case "晨露凝珠,浆果丰盛":
judgeTendency = text.includes("晨露");
num++;
await sleep(2000);
leftButtonClick();
await sleep(3500);
if (num >= Number(settings.maxNum)) {
judgeTendency = true;
};
break;
case "层云蔽月,大地沉睡":
judgeTendency = text.includes("层云");
num++;
await sleep(2000);
leftButtonClick();
await sleep(3500);
if (num >= Number(settings.maxNum)) {
judgeTendency = true;
};
break;
case "灯火长明,指引前路":
judgeTendency = text.includes("灯火");
num++;
await sleep(2000);
leftButtonClick();
await sleep(3500);
if (num >= Number(settings.maxNum)) {
judgeTendency = true;
};
break;
default:
num++;
await sleep(2000);
leftButtonClick();
await sleep(3500);
break;
};
} else {
log.error(`识别图像时发生异常: ${error.message}`);
};
} else {
log.error(`识别图像时发生异常: ${error.message}`);
};
} else {
log.error(`识别图像时发生异常: ${error.message}`);
};
} while (!judgeTendency);
log.info(`转了${num}`);
for (let i = record.records.length - 1; i > 0; i--) {
record.records[i] = record.records[i - 1];
}
record.records[0] = `转盘的运势: ${text}`;
if (settings.notify) {
notification.Send(`转盘的运势: ${text}`);
};
await recordForFile(false);// 修改记录文件
await genshin.returnMainUi();
await fakeLog("挪德卡莱那夏镇好运转盘", false, false, 0)
};
@@ -1163,6 +1250,11 @@ async function checkExpire() {
await sleep(700);
await performOcr(settings.selectGiveWho, dialogZone.x, dialogZone.y, false);
await clickLongTalk();
// 向后走两步,避免误触调查点
keyDown("s");
await sleep(1000);
keyUp("s");
await sleep(800);
// 打开背包找糖
await keyPress("B");
await checkExpire();

View File

@@ -1,7 +1,7 @@
{
"manifest_version": 1,
"name": "提瓦特杂事(收集)",
"version": "2.0.4",
"version": "2.1",
"tags": [
"玄学",
"收集",
@@ -9,7 +9,7 @@
],
"description": "买圣水、抽签、海螺、上香、领福利餐、领闪闪礼蛋、好运转盘、今日收获",
"saved_files": [
"records/*.txt"
"records/默认账户.txt"
],
"authors": [
{

View File

@@ -0,0 +1,65 @@
### 版本:2.0.4
1.修改多处龙蛋对应位置
2.固定缩放
3.处理圣水识别的莫拉数目(异常情况)
### 版本:2.0.3
1.修复闪闪礼蛋识别与蛋名称不相符合
2.添加通知
3.增加时长,为了延长功能稳定性
### 版本:2.0.2
1.修改龙蛋滑动小段,直接跳出问题
### 版本:2.0.1
1.精修识别对话区域
### 版本:2.0
1.添加长对话方法
2.添加糖雕
### 版本:1.2
1.重构代码,优化相关时间
2.增加龙蛋平均模式
3.修改保存本地记录方式
4.添加上香识别时间判断
5.添加背包物品过期
### 版本:1.2.0
1.增加挪德卡莱转盘和今日收获
2.删除一些奇奇怪怪的东西
### 版本:1.1.3
1.增加海螺拿来开宝箱选项(默认开启)
2.添加伪造日志
3.修改文件位置
### 版本:1.1.2
1.修复稻妻鸣神大社传送错误问题
2.添加没有勾选就执行的操作提示
### 版本:1.1.1
修改海螺路线添加海螺刷新点位的第3种路线
### 版本:1.1
1.新增奇异的海螺
2.修改圣水识别
3.修改稻妻识别御神签
### 版本:1.0.4
1.重构相关代码
2.替换解签后的识别模式
### 版本:1.0.3
缩短枫丹梅洛彼得堡的路线
### 版本:1.0.2
1.优化相关逻辑
2.修改代码显示错误
3.增加延迟操作,减小相关操作时间
### 版本:1.0.1
1.优化相关功能的点击时间
2.优化背包滑动(感谢吉吉喵!!)
3.更新御神签的识别以及修复挂签bug
4.输出福利餐得到的食物,以及幸运签的内容到本地,后续还会加入其他东西

View File

@@ -1,4 +1,17 @@
上次运行日期: 2025/11/22
上次上香时间: 1970-01-01T20:00:00.000Z
背包龙蛋数目: 【山之血:0,飞澜鲨鲨:0,圣龙君临:0,太阳的轰鸣:0,献给小酒杯:0,菲耶蒂娜:0
上次运行日期: 2026/01/18
上次上香时间: 2026-01-18T11:07:47.147Z
背包龙蛋数目: 【山之血:8,飞澜鲨鲨:3,圣龙君临:4,太阳的轰鸣:3,献给小酒杯:8,菲耶蒂娜:4
>>>>>>>>>> 2026年01月18日
>>>>>>>>>> 2026年01月18日
转盘的运势: 「『旭日瞳瞳,驱散迷雾。』就是遇到困难也没关系,一定会得到帮助的意思!」
幸运签内容: 「遇到障碍也别退缩,先来一份福利餐。障碍不会因此消失,但至少你填饱了肚子
获得的食物: 美味的塔塞斯杂烩
抽签的结果: 末吉
>>>>>>>>>> 2026年01月18日
>>>>>>>>>> 2025年11月26日
转盘的运势: 「『雷鸣风骤,摧枯拉朽。』就是之前的成果有可能被糟蹋掉的意思。」
转盘的运势: 「『海蛇翻腾,风暴虐。』就是不管做什么都会遇到阻碍的意思。」
幸运签内容: 「我只是一张幸运签,不能为你遇到的困难提供解答。你得靠自己振作起来。」
获得的食物: 薄荷果冻
抽签的结果: 吉
>>>>>>>>>> 2025年11月22日

View File

@@ -55,6 +55,12 @@
],
"default": "随机模式"
},
{
"name": "dragonEggsNum",
"type": "input-text",
"label": "平均模式:自行输入自己背包各龙蛋数目\n顺序为【山-飞-圣-太-献-菲 】\n各龙蛋数目用【-】相连",
"default": "0-0-0-0-0-0"
},
{
"name": "pickupDragonEgg",
"type": "select",
@@ -68,17 +74,40 @@
"闪闪礼蛋·飞澜鲨鲨"
]
},
{
"name": "updateEggs",
"type": "checkbox",
"label": "是否更新背包各龙蛋数目(默认否)",
"default": "false"
},
// {
// "name": "updateEggs",
// "type": "checkbox",
// "label": "是否更新背包各龙蛋数目(默认否)",
// "default": "false"
// },
{
"name": "turntable",
"type": "checkbox",
"label": "\n-------------挪德卡莱那夏镇好运转盘------------\n注意:开图啊,喂!!!"
},
{
"name": "selectLuckTendency",
"type": "select",
"label": "想要的运势(默认只运行一次)",
"options": [
"运行一次,随机运气",
"林狼啸月,魔物环伺",
"雷鸣风骤,摧枯拉朽",
"旭日曈曈,驱散迷雾",
"海蛇翻腾,风暴肆虐",
"牝鹿引鹿,旅途顺利",
"晨露凝珠,浆果丰盛",
"层云蔽月,大地沉睡",
"灯火长明,指引前路"
],
"default": "运行一次,随机运气"
},
{
"name": "maxNum",
"type": "input-text",
"label": "最大转次数(默认是10次)",
"default": "10"
},
{
"name": "todayLuck",
"type": "checkbox",
@@ -92,7 +121,8 @@
{
"name": "partyName",
"type": "input-text",
"label": "切换队伍名称\n如果你想领取专属糖雕请正确输入包含专属角色的队伍名称\n未输入队伍名称则领取普通糖雕"
"label": "切换队伍名称\n如果你想领取专属糖雕请正确输入包含专属角色的队伍名称\n未输入队伍名称则领取普通糖雕" ,
"default": ""
},
{
"name": "selectGiveWho",
@@ -104,8 +134,8 @@
"拉乌玛",
"菲林斯",
"奈芙尔",
""
// "雅珂达(别选择我!!!)"
"雅珂达",
"哥伦比娅"
],
"default": ""
},