同步AutoCommission更新 (#2746)

Co-authored-by: DarkFlameMaster <actions@github.com>
This commit is contained in:
DarkFlameMaster
2026-01-20 14:21:48 +08:00
committed by GitHub
parent 69cce74649
commit 10d06c3487
34 changed files with 360 additions and 1730 deletions

View File

@@ -62,7 +62,7 @@
"type": "地址检测",
"data": [-1265, 1929],
"note": "检测风起地是否需要清理七天神像",
"run": "风起地七天神像process.json"
"run": "风起地process.json"
},
{

View File

@@ -1,95 +0,0 @@
[
{
"type": "地图追踪",
"data": "艾伯特先生别再冲了-蒙德城-1.json",
"note": ""
},
{
"type": "对话",
"data": {
"skipCount": 5,
"npcWhiteList": ["维多利亚"]
},
"note": ""
},
{
"type": "地图追踪",
"data": "艾伯特先生别再冲了-蒙德城-2.json",
"note": ""
},
{
"type": "对话",
"data": {
"skipCount": 5,
"npcWhiteList": ["艾伯特"]
},
"note": ""
},
{
"type": "切换队伍",
"data": "元素采集",
"note": "执行切换队伍步骤"
},
{
"type": "地图追踪",
"data": "艾伯特先生别再冲了-蒙德城-3.json",
"note": ""
},
{
"type": "委托描述检测",
"data": {
"description": "清扫落叶",
"executeFile": "艾伯特先生别再冲了-蒙德城-6.json",
"runType": "path",
"useKeyword": true
},
"note": "检测委托描述并执行清扫落叶"
},
{
"type": "切换队伍",
"data": "战斗",
"note": "执行切换队伍步骤"
},
{
"type": "地图追踪",
"data": "艾伯特先生别再冲了-蒙德城-4.json",
"note": ""
},
{
"type": "对话",
"data": {
"skipCount": 5,
"npcWhiteList": ["艾伯特"]
},
"note": ""
},
{
"type": "地图追踪",
"data": "艾伯特先生别再冲了-蒙德城-5.json",
"note": ""
},
{
"type": "对话",
"data": {
"skipCount": 5,
"npcWhiteList": ["进入教堂"]
},
"note": ""
},
{
"type": "追踪委托",
"data": {
"npc": "维多利亚",
"iconType": "Question"
},
"note": ""
},
{
"type": "对话",
"data": {
"skipCount": 5,
"npcWhiteList": ["维多利亚"]
},
"note": ""
}
]

View File

@@ -1,71 +0,0 @@
{
"info": {
"authors": [],
"bgi_version": "0.45.0",
"description": "",
"enable_monster_loot_split": false,
"last_modified_time": 1756135028272,
"map_match_method": "",
"map_name": "Teyvat",
"name": "去教堂门口找维多利亚修女",
"tags": [],
"type": "collect",
"version": "1.0"
},
"positions": [
{
"action": "",
"action_params": "",
"id": 1,
"move_mode": "walk",
"type": "teleport",
"x": -748.560546875,
"y": 2263.119140625
},
{
"action": "stop_flying",
"action_params": "",
"id": 2,
"move_mode": "fly",
"type": "path",
"x": -727.984375,
"y": 2312.0478515625
},
{
"action": "",
"action_params": "",
"id": 3,
"move_mode": "walk",
"type": "path",
"x": -721.197265625,
"y": 2327.32080078125
},
{
"action": "",
"action_params": "",
"id": 4,
"move_mode": "walk",
"type": "path",
"x": -687.515625,
"y": 2344.42333984375
},
{
"action": "",
"action_params": "",
"id": 5,
"move_mode": "walk",
"type": "target",
"x": -688.4921875,
"y": 2353.576416015625
},
{
"action": "",
"action_params": "",
"id": 6,
"move_mode": "walk",
"type": "orientation",
"x": -685.056640625,
"y": 2354.952880859375
}
]
}

View File

@@ -1,53 +0,0 @@
{
"info": {
"authors": [],
"bgi_version": "0.45.0",
"description": "",
"enable_monster_loot_split": false,
"last_modified_time": 1758258707948,
"map_match_method": "",
"map_name": "Teyvat",
"name": "艾伯特先生别再冲了-蒙德城-2",
"tags": [],
"type": "collect",
"version": "1.0"
},
"positions": [
{
"action": "",
"action_params": "",
"id": 1,
"move_mode": "walk",
"type": "path",
"x": -688.806640625,
"y": 2353.15771484375
},
{
"action": "",
"action_params": "",
"id": 2,
"move_mode": "walk",
"type": "target",
"x": -696.71484375,
"y": 2366.522705078125
},
{
"action": "",
"action_params": "",
"id": 3,
"move_mode": "dash",
"type": "path",
"x": -664.80859375,
"y": 2382.34765625
},
{
"action": "",
"action_params": "",
"id": 4,
"move_mode": "walk",
"type": "target",
"x": -660.89453125,
"y": 2384.533935546875
}
]
}

View File

@@ -1,170 +0,0 @@
{
"info": {
"authors": [],
"bgi_version": "0.45.0",
"description": "",
"enable_monster_loot_split": false,
"last_modified_time": 1758261019966,
"map_match_method": "",
"map_name": "Teyvat",
"name": "艾伯特先生别再冲了-蒙德城-3",
"tags": [],
"type": "collect",
"version": "1.0"
},
"positions": [
{
"action": "",
"action_params": "",
"id": 1,
"move_mode": "dash",
"type": "path",
"x": -665.1265189580845,
"y": 2382.37428868638
},
{
"action": "",
"action_params": "",
"id": 2,
"move_mode": "walk",
"type": "target",
"x": -697.2578125,
"y": 2366.885986328125
},
{
"action": "anemo_collect",
"action_params": "",
"id": 3,
"move_mode": "walk",
"type": "target",
"x": -700.21484375,
"y": 2372.72607421875
},
{
"action": "pyro_collect",
"action_params": "",
"id": 4,
"move_mode": "walk",
"type": "target",
"x": -707.03125,
"y": 2374.20361328125
},
{
"action": "",
"action_params": "",
"id": 5,
"move_mode": "walk",
"type": "path",
"x": -711.880859375,
"y": 2371.072509765625
},
{
"action": "pyro_collect",
"action_params": "",
"id": 6,
"move_mode": "walk",
"type": "target",
"x": -710.29296875,
"y": 2367.266845703125
},
{
"action": "",
"action_params": "",
"id": 7,
"move_mode": "fly",
"type": "path",
"x": -703.228515625,
"y": 2373.84716796875
},
{
"action": "anemo_collect",
"action_params": "",
"id": 8,
"move_mode": "walk",
"type": "target",
"x": -705.970703125,
"y": 2370.54638671875
},
{
"action": "anemo_collect",
"action_params": "",
"id": 9,
"move_mode": "walk",
"type": "target",
"x": -706.783203125,
"y": 2368.520751953125
},
{
"action": "",
"action_params": "",
"id": 10,
"move_mode": "walk",
"type": "path",
"x": -698.349609375,
"y": 2369.087158203125
},
{
"action": "",
"action_params": "",
"id": 11,
"move_mode": "walk",
"type": "path",
"x": -681.40625,
"y": 2332.7080078125
},
{
"action": "anemo_collect",
"action_params": "",
"id": 12,
"move_mode": "walk",
"type": "target",
"x": -683.158203125,
"y": 2327.98779296875
},
{
"action": "pyro_collect",
"action_params": "",
"id": 13,
"move_mode": "walk",
"type": "target",
"x": -682.73828125,
"y": 2325.82861328125
},
{
"action": "",
"action_params": "",
"id": 14,
"move_mode": "walk",
"type": "path",
"x": -683.306640625,
"y": 2332.47705078125
},
{
"action": "anemo_collect",
"action_params": "",
"id": 15,
"move_mode": "walk",
"type": "target",
"x": -686.97265625,
"y": 2330.0859375
},
{
"action": "pyro_collect",
"action_params": "",
"id": 16,
"move_mode": "walk",
"type": "target",
"x": -689.826171875,
"y": 2330.083251953125
},
{
"action": "",
"action_params": "",
"id": 17,
"move_mode": "walk",
"type": "path",
"x": -682.0390625,
"y": 2333.88671875
}
]
}

View File

@@ -1,53 +0,0 @@
{
"info": {
"authors": [],
"bgi_version": "0.45.0",
"description": "",
"enable_monster_loot_split": false,
"last_modified_time": 1756140662657,
"map_match_method": "",
"map_name": "Teyvat",
"name": "回去找艾伯特",
"tags": [],
"type": "collect",
"version": "1.0"
},
"positions": [
{
"action": "",
"action_params": "",
"id": 1,
"move_mode": "walk",
"type": "target",
"x": -681.67578125,
"y": 2333.349365234375
},
{
"action": "",
"action_params": "",
"id": 2,
"move_mode": "walk",
"type": "path",
"x": -698.7734375,
"y": 2368.9599609375
},
{
"action": "",
"action_params": "",
"id": 3,
"move_mode": "walk",
"type": "path",
"x": -680.21875,
"y": 2373.94287109375
},
{
"action": "",
"action_params": "",
"id": 4,
"move_mode": "walk",
"type": "path",
"x": -660.9609375,
"y": 2384.700439453125
}
]
}

View File

@@ -1,53 +0,0 @@
{
"info": {
"authors": [],
"bgi_version": "0.45.0",
"description": "",
"enable_monster_loot_split": false,
"last_modified_time": 1756140703361,
"map_match_method": "",
"map_name": "Teyvat",
"name": "艾伯特位置去教堂门口",
"tags": [],
"type": "collect",
"version": "1.0"
},
"positions": [
{
"action": "",
"action_params": "",
"id": 1,
"move_mode": "walk",
"type": "path",
"x": -661.86328125,
"y": 2384.534423828125
},
{
"action": "",
"action_params": "",
"id": 2,
"move_mode": "walk",
"type": "path",
"x": -697.96875,
"y": 2366.020751953125
},
{
"action": "",
"action_params": "",
"id": 3,
"move_mode": "walk",
"type": "path",
"x": -690.896484375,
"y": 2351.48193359375
},
{
"action": "",
"action_params": "",
"id": 4,
"move_mode": "walk",
"type": "path",
"x": -685.25,
"y": 2354.908447265625
}
]
}

View File

@@ -1,215 +0,0 @@
{
"info": {
"authors": [],
"bgi_version": "0.45.0",
"description": "",
"enable_monster_loot_split": false,
"last_modified_time": 1758259593218,
"map_match_method": "",
"map_name": "Teyvat",
"name": "艾伯特先生别再冲了-蒙德城-6",
"tags": [],
"type": "collect",
"version": "1.0"
},
"positions": [
{
"action": "",
"action_params": "",
"id": 1,
"move_mode": "walk",
"type": "teleport",
"x": -749.439453125,
"y": 2263.06689453125
},
{
"action": "",
"action_params": "",
"id": 2,
"move_mode": "fly",
"type": "path",
"x": -747.837890625,
"y": 2264.47998046875
},
{
"action": "stop_flying",
"action_params": "",
"id": 3,
"move_mode": "fly",
"type": "path",
"x": -717.5390625,
"y": 2290.454833984375
},
{
"action": "",
"action_params": "",
"id": 4,
"move_mode": "dash",
"type": "path",
"x": -713.13671875,
"y": 2297.3486328125
},
{
"action": "",
"action_params": "",
"id": 5,
"move_mode": "dash",
"type": "path",
"x": -710.916015625,
"y": 2343.29052734375
},
{
"action": "",
"action_params": "",
"id": 6,
"move_mode": "walk",
"type": "path",
"x": -697.873046875,
"y": 2362.03955078125
},
{
"action": "",
"action_params": "",
"id": 7,
"move_mode": "walk",
"type": "target",
"x": -697.2578125,
"y": 2366.885986328125
},
{
"action": "anemo_collect",
"action_params": "",
"id": 8,
"move_mode": "walk",
"type": "target",
"x": -700.21484375,
"y": 2372.72607421875
},
{
"action": "pyro_collect",
"action_params": "",
"id": 9,
"move_mode": "walk",
"type": "target",
"x": -707.03125,
"y": 2374.20361328125
},
{
"action": "",
"action_params": "",
"id": 10,
"move_mode": "walk",
"type": "path",
"x": -711.880859375,
"y": 2371.072509765625
},
{
"action": "pyro_collect",
"action_params": "",
"id": 11,
"move_mode": "walk",
"type": "target",
"x": -710.29296875,
"y": 2367.266845703125
},
{
"action": "",
"action_params": "",
"id": 12,
"move_mode": "fly",
"type": "path",
"x": -703.228515625,
"y": 2373.84716796875
},
{
"action": "anemo_collect",
"action_params": "",
"id": 13,
"move_mode": "walk",
"type": "target",
"x": -705.970703125,
"y": 2370.54638671875
},
{
"action": "anemo_collect",
"action_params": "",
"id": 14,
"move_mode": "walk",
"type": "target",
"x": -706.783203125,
"y": 2368.520751953125
},
{
"action": "",
"action_params": "",
"id": 15,
"move_mode": "walk",
"type": "path",
"x": -698.349609375,
"y": 2369.087158203125
},
{
"action": "",
"action_params": "",
"id": 16,
"move_mode": "walk",
"type": "path",
"x": -681.40625,
"y": 2332.7080078125
},
{
"action": "anemo_collect",
"action_params": "",
"id": 17,
"move_mode": "walk",
"type": "target",
"x": -683.158203125,
"y": 2327.98779296875
},
{
"action": "pyro_collect",
"action_params": "",
"id": 18,
"move_mode": "walk",
"type": "target",
"x": -682.73828125,
"y": 2325.82861328125
},
{
"action": "",
"action_params": "",
"id": 19,
"move_mode": "walk",
"type": "path",
"x": -683.306640625,
"y": 2332.47705078125
},
{
"action": "anemo_collect",
"action_params": "",
"id": 20,
"move_mode": "walk",
"type": "target",
"x": -686.97265625,
"y": 2330.0859375
},
{
"action": "pyro_collect",
"action_params": "",
"id": 21,
"move_mode": "walk",
"type": "target",
"x": -689.826171875,
"y": 2330.083251953125
},
{
"action": "",
"action_params": "",
"id": 22,
"move_mode": "walk",
"type": "path",
"x": -682.0390625,
"y": 2333.88671875
}
]
}

View File

@@ -1,95 +0,0 @@
[
{
"type": "地图追踪",
"data": "艾伯特先生别再冲了-蒙德城-1.json",
"note": ""
},
{
"type": "对话",
"data": {
"skipCount": 5,
"npcWhiteList": ["维多利亚"]
},
"note": ""
},
{
"type": "地图追踪",
"data": "艾伯特先生别再冲了-蒙德城-2.json",
"note": ""
},
{
"type": "对话",
"data": {
"skipCount": 5,
"npcWhiteList": ["艾伯特"]
},
"note": ""
},
{
"type": "切换队伍",
"data": "元素采集",
"note": "执行切换队伍步骤"
},
{
"type": "地图追踪",
"data": "艾伯特先生别再冲了-蒙德城-3.json",
"note": ""
},
{
"type": "委托描述检测",
"data": {
"description": "清扫落叶",
"executeFile": "艾伯特先生别再冲了-蒙德城-6.json",
"runType": "path",
"useKeyword": true
},
"note": "检测委托描述并执行清扫落叶"
},
{
"type": "切换队伍",
"data": "战斗",
"note": "执行切换队伍步骤"
},
{
"type": "地图追踪",
"data": "艾伯特先生别再冲了-蒙德城-4.json",
"note": ""
},
{
"type": "对话",
"data": {
"skipCount": 5,
"npcWhiteList": ["艾伯特"]
},
"note": ""
},
{
"type": "地图追踪",
"data": "艾伯特先生别再冲了-蒙德城-5.json",
"note": ""
},
{
"type": "对话",
"data": {
"skipCount": 5,
"npcWhiteList": ["进入教堂"]
},
"note": ""
},
{
"type": "追踪委托",
"data": {
"npc": "维多利亚",
"iconType": "Question"
},
"note": ""
},
{
"type": "对话",
"data": {
"skipCount": 5,
"npcWhiteList": ["维多利亚"]
},
"note": ""
}
]

View File

@@ -1,71 +0,0 @@
{
"info": {
"authors": [],
"bgi_version": "0.45.0",
"description": "",
"enable_monster_loot_split": false,
"last_modified_time": 1756135028272,
"map_match_method": "",
"map_name": "Teyvat",
"name": "去教堂门口找维多利亚修女",
"tags": [],
"type": "collect",
"version": "1.0"
},
"positions": [
{
"action": "",
"action_params": "",
"id": 1,
"move_mode": "walk",
"type": "teleport",
"x": -748.560546875,
"y": 2263.119140625
},
{
"action": "stop_flying",
"action_params": "",
"id": 2,
"move_mode": "fly",
"type": "path",
"x": -727.984375,
"y": 2312.0478515625
},
{
"action": "",
"action_params": "",
"id": 3,
"move_mode": "walk",
"type": "path",
"x": -721.197265625,
"y": 2327.32080078125
},
{
"action": "",
"action_params": "",
"id": 4,
"move_mode": "walk",
"type": "path",
"x": -687.515625,
"y": 2344.42333984375
},
{
"action": "",
"action_params": "",
"id": 5,
"move_mode": "walk",
"type": "target",
"x": -688.4921875,
"y": 2353.576416015625
},
{
"action": "",
"action_params": "",
"id": 6,
"move_mode": "walk",
"type": "orientation",
"x": -685.056640625,
"y": 2354.952880859375
}
]
}

View File

@@ -1,53 +0,0 @@
{
"info": {
"authors": [],
"bgi_version": "0.45.0",
"description": "",
"enable_monster_loot_split": false,
"last_modified_time": 1758258707948,
"map_match_method": "",
"map_name": "Teyvat",
"name": "艾伯特先生别再冲了-蒙德城-2",
"tags": [],
"type": "collect",
"version": "1.0"
},
"positions": [
{
"action": "",
"action_params": "",
"id": 1,
"move_mode": "walk",
"type": "path",
"x": -688.806640625,
"y": 2353.15771484375
},
{
"action": "",
"action_params": "",
"id": 2,
"move_mode": "walk",
"type": "target",
"x": -696.71484375,
"y": 2366.522705078125
},
{
"action": "",
"action_params": "",
"id": 3,
"move_mode": "dash",
"type": "path",
"x": -664.80859375,
"y": 2382.34765625
},
{
"action": "",
"action_params": "",
"id": 4,
"move_mode": "walk",
"type": "target",
"x": -660.89453125,
"y": 2384.533935546875
}
]
}

View File

@@ -1,170 +0,0 @@
{
"info": {
"authors": [],
"bgi_version": "0.45.0",
"description": "",
"enable_monster_loot_split": false,
"last_modified_time": 1758261019966,
"map_match_method": "",
"map_name": "Teyvat",
"name": "艾伯特先生别再冲了-蒙德城-3",
"tags": [],
"type": "collect",
"version": "1.0"
},
"positions": [
{
"action": "",
"action_params": "",
"id": 1,
"move_mode": "dash",
"type": "path",
"x": -665.1265189580845,
"y": 2382.37428868638
},
{
"action": "",
"action_params": "",
"id": 2,
"move_mode": "walk",
"type": "target",
"x": -697.2578125,
"y": 2366.885986328125
},
{
"action": "anemo_collect",
"action_params": "",
"id": 3,
"move_mode": "walk",
"type": "target",
"x": -700.21484375,
"y": 2372.72607421875
},
{
"action": "pyro_collect",
"action_params": "",
"id": 4,
"move_mode": "walk",
"type": "target",
"x": -707.03125,
"y": 2374.20361328125
},
{
"action": "",
"action_params": "",
"id": 5,
"move_mode": "walk",
"type": "path",
"x": -711.880859375,
"y": 2371.072509765625
},
{
"action": "pyro_collect",
"action_params": "",
"id": 6,
"move_mode": "walk",
"type": "target",
"x": -710.29296875,
"y": 2367.266845703125
},
{
"action": "",
"action_params": "",
"id": 7,
"move_mode": "fly",
"type": "path",
"x": -703.228515625,
"y": 2373.84716796875
},
{
"action": "anemo_collect",
"action_params": "",
"id": 8,
"move_mode": "walk",
"type": "target",
"x": -705.970703125,
"y": 2370.54638671875
},
{
"action": "anemo_collect",
"action_params": "",
"id": 9,
"move_mode": "walk",
"type": "target",
"x": -706.783203125,
"y": 2368.520751953125
},
{
"action": "",
"action_params": "",
"id": 10,
"move_mode": "walk",
"type": "path",
"x": -698.349609375,
"y": 2369.087158203125
},
{
"action": "",
"action_params": "",
"id": 11,
"move_mode": "walk",
"type": "path",
"x": -681.40625,
"y": 2332.7080078125
},
{
"action": "anemo_collect",
"action_params": "",
"id": 12,
"move_mode": "walk",
"type": "target",
"x": -683.158203125,
"y": 2327.98779296875
},
{
"action": "pyro_collect",
"action_params": "",
"id": 13,
"move_mode": "walk",
"type": "target",
"x": -682.73828125,
"y": 2325.82861328125
},
{
"action": "",
"action_params": "",
"id": 14,
"move_mode": "walk",
"type": "path",
"x": -683.306640625,
"y": 2332.47705078125
},
{
"action": "anemo_collect",
"action_params": "",
"id": 15,
"move_mode": "walk",
"type": "target",
"x": -686.97265625,
"y": 2330.0859375
},
{
"action": "pyro_collect",
"action_params": "",
"id": 16,
"move_mode": "walk",
"type": "target",
"x": -689.826171875,
"y": 2330.083251953125
},
{
"action": "",
"action_params": "",
"id": 17,
"move_mode": "walk",
"type": "path",
"x": -682.0390625,
"y": 2333.88671875
}
]
}

View File

@@ -1,53 +0,0 @@
{
"info": {
"authors": [],
"bgi_version": "0.45.0",
"description": "",
"enable_monster_loot_split": false,
"last_modified_time": 1756140662657,
"map_match_method": "",
"map_name": "Teyvat",
"name": "回去找艾伯特",
"tags": [],
"type": "collect",
"version": "1.0"
},
"positions": [
{
"action": "",
"action_params": "",
"id": 1,
"move_mode": "walk",
"type": "target",
"x": -681.67578125,
"y": 2333.349365234375
},
{
"action": "",
"action_params": "",
"id": 2,
"move_mode": "walk",
"type": "path",
"x": -698.7734375,
"y": 2368.9599609375
},
{
"action": "",
"action_params": "",
"id": 3,
"move_mode": "walk",
"type": "path",
"x": -680.21875,
"y": 2373.94287109375
},
{
"action": "",
"action_params": "",
"id": 4,
"move_mode": "walk",
"type": "path",
"x": -660.9609375,
"y": 2384.700439453125
}
]
}

View File

@@ -1,53 +0,0 @@
{
"info": {
"authors": [],
"bgi_version": "0.45.0",
"description": "",
"enable_monster_loot_split": false,
"last_modified_time": 1756140703361,
"map_match_method": "",
"map_name": "Teyvat",
"name": "艾伯特位置去教堂门口",
"tags": [],
"type": "collect",
"version": "1.0"
},
"positions": [
{
"action": "",
"action_params": "",
"id": 1,
"move_mode": "walk",
"type": "path",
"x": -661.86328125,
"y": 2384.534423828125
},
{
"action": "",
"action_params": "",
"id": 2,
"move_mode": "walk",
"type": "path",
"x": -697.96875,
"y": 2366.020751953125
},
{
"action": "",
"action_params": "",
"id": 3,
"move_mode": "walk",
"type": "path",
"x": -690.896484375,
"y": 2351.48193359375
},
{
"action": "",
"action_params": "",
"id": 4,
"move_mode": "walk",
"type": "path",
"x": -685.25,
"y": 2354.908447265625
}
]
}

View File

@@ -1,215 +0,0 @@
{
"info": {
"authors": [],
"bgi_version": "0.45.0",
"description": "",
"enable_monster_loot_split": false,
"last_modified_time": 1758259593218,
"map_match_method": "",
"map_name": "Teyvat",
"name": "艾伯特先生别再冲了-蒙德城-6",
"tags": [],
"type": "collect",
"version": "1.0"
},
"positions": [
{
"action": "",
"action_params": "",
"id": 1,
"move_mode": "walk",
"type": "teleport",
"x": -749.439453125,
"y": 2263.06689453125
},
{
"action": "",
"action_params": "",
"id": 2,
"move_mode": "fly",
"type": "path",
"x": -747.837890625,
"y": 2264.47998046875
},
{
"action": "stop_flying",
"action_params": "",
"id": 3,
"move_mode": "fly",
"type": "path",
"x": -717.5390625,
"y": 2290.454833984375
},
{
"action": "",
"action_params": "",
"id": 4,
"move_mode": "dash",
"type": "path",
"x": -713.13671875,
"y": 2297.3486328125
},
{
"action": "",
"action_params": "",
"id": 5,
"move_mode": "dash",
"type": "path",
"x": -710.916015625,
"y": 2343.29052734375
},
{
"action": "",
"action_params": "",
"id": 6,
"move_mode": "walk",
"type": "path",
"x": -697.873046875,
"y": 2362.03955078125
},
{
"action": "",
"action_params": "",
"id": 7,
"move_mode": "walk",
"type": "target",
"x": -697.2578125,
"y": 2366.885986328125
},
{
"action": "anemo_collect",
"action_params": "",
"id": 8,
"move_mode": "walk",
"type": "target",
"x": -700.21484375,
"y": 2372.72607421875
},
{
"action": "pyro_collect",
"action_params": "",
"id": 9,
"move_mode": "walk",
"type": "target",
"x": -707.03125,
"y": 2374.20361328125
},
{
"action": "",
"action_params": "",
"id": 10,
"move_mode": "walk",
"type": "path",
"x": -711.880859375,
"y": 2371.072509765625
},
{
"action": "pyro_collect",
"action_params": "",
"id": 11,
"move_mode": "walk",
"type": "target",
"x": -710.29296875,
"y": 2367.266845703125
},
{
"action": "",
"action_params": "",
"id": 12,
"move_mode": "fly",
"type": "path",
"x": -703.228515625,
"y": 2373.84716796875
},
{
"action": "anemo_collect",
"action_params": "",
"id": 13,
"move_mode": "walk",
"type": "target",
"x": -705.970703125,
"y": 2370.54638671875
},
{
"action": "anemo_collect",
"action_params": "",
"id": 14,
"move_mode": "walk",
"type": "target",
"x": -706.783203125,
"y": 2368.520751953125
},
{
"action": "",
"action_params": "",
"id": 15,
"move_mode": "walk",
"type": "path",
"x": -698.349609375,
"y": 2369.087158203125
},
{
"action": "",
"action_params": "",
"id": 16,
"move_mode": "walk",
"type": "path",
"x": -681.40625,
"y": 2332.7080078125
},
{
"action": "anemo_collect",
"action_params": "",
"id": 17,
"move_mode": "walk",
"type": "target",
"x": -683.158203125,
"y": 2327.98779296875
},
{
"action": "pyro_collect",
"action_params": "",
"id": 18,
"move_mode": "walk",
"type": "target",
"x": -682.73828125,
"y": 2325.82861328125
},
{
"action": "",
"action_params": "",
"id": 19,
"move_mode": "walk",
"type": "path",
"x": -683.306640625,
"y": 2332.47705078125
},
{
"action": "anemo_collect",
"action_params": "",
"id": 20,
"move_mode": "walk",
"type": "target",
"x": -686.97265625,
"y": 2330.0859375
},
{
"action": "pyro_collect",
"action_params": "",
"id": 21,
"move_mode": "walk",
"type": "target",
"x": -689.826171875,
"y": 2330.083251953125
},
{
"action": "",
"action_params": "",
"id": 22,
"move_mode": "walk",
"type": "path",
"x": -682.0390625,
"y": 2333.88671875
}
]
}

View File

@@ -1,7 +0,0 @@
-1.json
F
-2.json
-3.json
-4.json
-5.json
F

View File

@@ -1,59 +0,0 @@
{
"info": {
"name": "艾琳,未来的骑士-1",
"type": "collect",
"author": "云闲vsv",
"version": "1.0",
"description": "艾琳,未来的骑士-1",
"map_name": "Teyvat",
"bgi_version": "0.45.0",
"update_time":20250615
},
"positions": [
{
"id": 1,
"action": "",
"move_mode": "walk",
"type": "teleport",
"x": -749.513671875,
"y": 2263.146484375,
"action_params": ""
},
{
"id": 2,
"x": -747.12890625,
"y": 2262.235595703125,
"type": "path",
"move_mode": "walk",
"action": "",
"action_params": ""
},
{
"id": 3,
"x": -740.51953125,
"y": 2260.38525390625,
"type": "path",
"move_mode": "fly",
"action": "",
"action_params": ""
},
{
"id": 4,
"x": -738.279296875,
"y": 2264.16845703125,
"type": "target",
"move_mode": "fly",
"action": "stop_flying",
"action_params": ""
},
{
"id": 5,
"x": -730.9306640625,
"y": 2267.73046875,
"type": "target",
"move_mode": "walk",
"action": "",
"action_params": ""
}
]
}

View File

@@ -1,49 +0,0 @@
{
"info": {
"name": "艾琳,未来的骑士-1",
"type": "collect",
"author": "云闲vsv",
"version": "1.0",
"description": "艾琳,未来的骑士-1",
"map_name": "Teyvat",
"bgi_version": "0.45.0"
},
"positions": [
{
"id": 1,
"action": "",
"move_mode": "walk",
"type": "teleport",
"x": -749.513671875,
"y": 2263.146484375,
"action_params": ""
},
{
"id": 2,
"x": -747.12890625,
"y": 2262.235595703125,
"type": "path",
"move_mode": "walk",
"action": "",
"action_params": ""
},
{
"id": 3,
"x": -740.51953125,
"y": 2260.38525390625,
"type": "path",
"move_mode": "fly",
"action": "",
"action_params": ""
},
{
"id": 4,
"x": -738.279296875,
"y": 2264.16845703125,
"type": "target",
"move_mode": "fly",
"action": "stop_flying",
"action_params": ""
}
]
}

View File

@@ -1,49 +0,0 @@
{
"info": {
"name": "艾琳,未来的骑士-3",
"type": "collect",
"author": "云闲vsv",
"version": "1.0",
"description": "艾琳,未来的骑士-3",
"map_name": "Teyvat",
"bgi_version": "0.45.0"
},
"positions": [
{
"id": 1,
"action": "",
"move_mode": "walk",
"type": "teleport",
"x": -749.513671875,
"y": 2263.146484375,
"action_params": ""
},
{
"id": 2,
"x": -747.12890625,
"y": 2262.235595703125,
"type": "path",
"move_mode": "walk",
"action": "",
"action_params": ""
},
{
"id": 3,
"x": -740.51953125,
"y": 2260.38525390625,
"type": "path",
"move_mode": "fly",
"action": "",
"action_params": ""
},
{
"id": 4,
"x": -734.431640625,
"y": 2264.39208984375,
"type": "target",
"move_mode": "fly",
"action": "stop_flying",
"action_params": "300"
}
]
}

View File

@@ -1,49 +0,0 @@
{
"info": {
"name": "艾琳,未来的骑士-4",
"type": "collect",
"author": "云闲vsv",
"version": "1.0",
"description": "艾琳,未来的骑士-4",
"map_name": "Teyvat",
"bgi_version": "0.45.0"
},
"positions": [
{
"id": 1,
"action": "",
"move_mode": "walk",
"type": "teleport",
"x": -749.513671875,
"y": 2263.146484375,
"action_params": ""
},
{
"id": 2,
"x": -747.12890625,
"y": 2262.235595703125,
"type": "path",
"move_mode": "walk",
"action": "",
"action_params": ""
},
{
"id": 3,
"x": -740.51953125,
"y": 2260.38525390625,
"type": "path",
"move_mode": "fly",
"action": "",
"action_params": ""
},
{
"id": 4,
"x": -737.0185546875,
"y": 2263.715087890625,
"type": "target",
"move_mode": "fly",
"action": "stop_flying",
"action_params": "200"
}
]
}

View File

@@ -1,76 +0,0 @@
{
"info": {
"name": "艾琳,未来的骑士-5",
"type": "collect",
"author": "云闲vsv",
"version": "1.0",
"description": "艾琳,未来的骑士-5",
"map_name": "Teyvat",
"bgi_version": "0.45.0"
},
"positions": [
{
"id": 1,
"x": -733.5673828125,
"y": 2264.910888671875,
"type": "path",
"move_mode": "walk",
"action": "combat_script",
"action_params": "钟离 wait(12),e(hold),"
},
{
"id": 2,
"x": -734.591796875,
"y": 2262.66064453125,
"action": "combat_script",
"move_mode": "walk",
"action_params": "钟离 wait(12),e(hold),",
"type": "target"
},
{
"id": 3,
"x": -734.591796875,
"y": 2262.66064453125,
"action": "combat_script",
"move_mode": "walk",
"action_params": "attack,keypress(1),wait(0.3),keypress(Q),wait(2.1),e(hold),",
"type": "target"
},
{
"id": 4,
"x": -734.591796875,
"y": 2262.66064453125,
"action": "combat_script",
"move_mode": "walk",
"action_params": "attack,keypress(2),wait(0.3),keypress(Q),wait(2.1),e(hold),",
"type": "target"
},
{
"id": 5,
"x": -734.591796875,
"y": 2262.66064453125,
"action": "combat_script",
"move_mode": "walk",
"action_params": "attack,keypress(3),wait(0.3),keypress(Q),wait(2.1),e(hold),",
"type": "target"
},
{
"id": 6,
"x": -734.591796875,
"y": 2262.66064453125,
"action": "combat_script",
"move_mode": "walk",
"action_params": "attack,keypress(4),wait(0.3),keypress(Q),wait(2.1),e(hold),",
"type": "target"
},
{
"id": 7,
"x": -731.0205078125,
"y": 2267.665771484375,
"action": "",
"move_mode": "walk",
"action_params": "",
"type": "target"
}
]
}

View File

@@ -133,4 +133,10 @@ var Constants = {
COMMISSION_COMPLETE_OCR_Y: 165,
COMMISSION_COMPLETE_OCR_WIDTH: 170, // 1050 - 880
COMMISSION_COMPLETE_OCR_HEIGHT: 45, // 210 - 165
// 委托名称跟地点标准化匹配阈值(用 OCR结果 与 现有字符列表 对比,超过阈值则认为匹配)
MATCH_THRESHOLD: {
COMISSIONS_NAME: 0.6,
LOCATION: 0.6,
}
};

View File

@@ -66,4 +66,4 @@ var printVersion = async function () {
}
await sleep(5000);
}
}
}

View File

@@ -92,29 +92,108 @@ var CommissionData = {
return CommissionData.supportedCommissions;
},
// 检查时间戳是否为今天(以凌晨四点为分界)
isToday: function(timestampString) {
try {
const timestamp = new Date(timestampString);
const now = new Date();
// 计算今天凌晨四点的时间
const today = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 4, 0, 0);
// 如果当前时间还没到今天四点,则以昨天四点为分界
if (now < today) {
today.setDate(today.getDate() - 1);
}
// 检查时间戳是否在今天四点之后
return timestamp >= today;
} catch (error) {
log.error("检查时间戳时出错: {error}", error.message);
return false;
}
},
// 保存委托数据到文件
saveCommissionsData: async function(commissionsTable) {
try {
log.info("保存委托数据到文件...");
// 创建JSON格式的委托数据
var commissionsData = {
timestamp: new Date().toISOString(),
commissions: commissionsTable,
};
// 保存到文件
var outputPath = Constants.OUTPUT_DIR + "/commissions_data.json";
var shouldUpdateExisting = false;
var existingData = null;
// 尝试读取现有文件
try {
var jsonResult = file.writeTextSync(
outputPath,
JSON.stringify(commissionsData, null, 2)
);
if (jsonResult) {
log.info("委托数据已保存到: {path}", outputPath);
var existingContent = file.readTextSync(outputPath);
existingData = JSON.parse(existingContent);
// 检查条件timestamp是今天且commissions有4个元素
if (existingData && existingData.timestamp && existingData.commissions &&
existingData.commissions.length === 4 && commissionsTable.length === 4 &&
this.isToday(existingData.timestamp)) {
// 提取现有和新的委托名称列表
const existingNames = existingData.commissions.map(c => c.name).sort();
const newNames = commissionsTable.map(c => c.name).sort();
// 检查名称是否完全匹配
const namesMatch = existingNames.every((name, index) => name === newNames[index]);
if (namesMatch) {
log.info("检测到相同的委托列表,只更新已完成状态");
shouldUpdateExisting = true;
} else {
log.info("委托名称不完全匹配,执行完整保存");
}
} else {
log.error("保存委托数据失败");
// 输出条件不成立的原因
let reason = "";
if (!existingData) reason = "没有现有数据";
else if (!existingData.timestamp) reason = "缺少时间戳";
else if (!existingData.commissions) reason = "缺少委托列表";
else if (existingData.commissions.length !== 4) reason = `现有委托数量不是4个实际${existingData.commissions.length}`;
else if (commissionsTable.length !== 4) reason = `新委托数量不是4个实际${commissionsTable.length}`;
else if (!this.isToday(existingData.timestamp)) reason = "时间戳不是今天";
log.info(`执行完整保存:${reason}`);
}
} catch (error) {
log.error("无法读取现有委托数据{error}",error.message);
}
var commissionsData;
if (shouldUpdateExisting && existingData) {
// 只更新location为已完成的状态
for (var i = 0; i < existingData.commissions.length; i++) {
const existingCommission = existingData.commissions[i];
const newCommission = commissionsTable.find(c => c.name === existingCommission.name);
if (newCommission && newCommission.location === "已完成") {
existingCommission.location = "已完成";
existingCommission.type = newCommission.type;
existingCommission.supported = newCommission.supported;
// 保留其他原有字段
}
}
// 更新时间戳
existingData.timestamp = new Date().toISOString();
commissionsData = existingData;
} else {
// 创建新的JSON格式的委托数据
commissionsData = {
timestamp: new Date().toISOString(),
commissions: commissionsTable,
};
}
// 保存到文件
try {
file.writeTextSync(outputPath, JSON.stringify(commissionsData, null, 2));
log.info("委托数据保存结束");
} catch (jsonError) {
log.error("保存委托数据失败: {error}", jsonError.message);
}

View File

@@ -1,4 +1,210 @@
// 原神每日委托自动执行脚本 - 委托功能识别模块
// 原神每日委托自动执行脚本 - 委托识别模块
// 编辑距离算法,用于计算字符串相似度
function levenshteinDistance(str1, str2) {
const m = str1.length;
const n = str2.length;
const dp = Array(m + 1).fill(null).map(() => Array(n + 1).fill(0));
for (let i = 0; i <= m; i++) dp[i][0] = i;
for (let j = 0; j <= n; j++) dp[0][j] = j;
for (let i = 1; i <= m; i++) {
for (let j = 1; j <= n; j++) {
const cost = str1[i - 1] === str2[j - 1] ? 0 : 1;
dp[i][j] = Math.min(
dp[i - 1][j] + 1,
dp[i][j - 1] + 1,
dp[i - 1][j - 1] + cost
);
}
}
return dp[m][n];
}
// 获取最接近的匹配项(带阈值)
function getClosestMatch(target, candidates, threshold = Constants.MATCH_THRESHOLD.DEFAULT) {
if (!candidates || candidates.length === 0) return null;
let closest = candidates[0];
let minDistance = levenshteinDistance(target, closest);
let maxSimilarity = calculateSimilarity(target, closest);
for (let i = 1; i < candidates.length; i++) {
const distance = levenshteinDistance(target, candidates[i]);
const similarity = calculateSimilarity(target, candidates[i]);
if (similarity > maxSimilarity) {
maxSimilarity = similarity;
minDistance = distance;
closest = candidates[i];
}
}
// 检查相似度是否达到阈值
if (maxSimilarity < threshold) {
return null;
}
return closest;
}
// 计算字符串相似度
function calculateSimilarity(str1, str2) {
const distance = levenshteinDistance(str1, str2);
const maxLength = Math.max(str1.length, str2.length);
return maxLength === 0 ? 1 : 1 - (distance / maxLength);
}
var CommissionStandardizer = {
// 标准化列表
standardizationLists: {
fight: {},
talk: {}
},
// 初始化标准化列表
initialize: function() {
log.info("初始化委托标准化列表...");
try {
// 初始化战斗委托标准化列表
this.standardizationLists.fight = this.buildFightStandardizationList();
// 初始化对话委托标准化列表
this.standardizationLists.talk = this.buildTalkStandardizationList();
log.info("委托标准化列表初始化完成");
log.debug("战斗委托标准化列表: {count} 个委托", Object.keys(this.standardizationLists.fight).length);
log.debug("对话委托标准化列表: {count} 个委托", Object.keys(this.standardizationLists.talk).length);
log.debug("standardizationLists的值:{x}",JSON.stringify(this.standardizationLists))
} catch (error) {
log.error("初始化标准化列表时出错: {error}", error.message);
}
},
// 构建战斗委托标准化列表
buildFightStandardizationList: function() {
const fightList = {};
try {
// 读取assets目录下除process外的所有文件夹
const assetsPath = "assets";
const items = Array.from(file.readPathSync(assetsPath));
// 过滤出文件夹且不是process
const folders = items.filter(item => {
return file.isFolder(item) && !item.includes("process");
});
// 遍历每个战斗委托文件夹
for (const folderPath of folders) {
// 从完整路径中提取文件夹名称
const folderName = folderPath.replace(assetsPath + "/", "").replace(assetsPath + "\\", "");
const files = Array.from(file.readPathSync(folderPath));
// 过滤出json文件
const jsonFiles = files.filter(file => file.endsWith(".json"));
// 提取文件名(不包含路径和.json后缀并去除-1 -2等数字后缀
const cleanFileNames = jsonFiles.map(filePath => {
// 从完整路径中提取文件名
const fileName = filePath.split("/").pop().split("\\").pop();
// 去除-1 -2等数字后缀和.json后缀
return fileName.replace(/-(\d+)?\.json$/, "");
});
fightList[folderName] = cleanFileNames;
}
} catch (error) {
log.error("构建战斗委托标准化列表时出错: {error}", error.message);
}
return fightList;
},
// 构建对话委托标准化列表
buildTalkStandardizationList: function() {
const talkList = {};
try {
// 读取assets/process目录下的所有文件夹
const processPath = "assets/process";
const items = Array.from(file.readPathSync(processPath));
// 过滤出文件夹
const folders = items.filter(item => {
return file.isFolder(item);
});
// 遍历每个对话委托文件夹
for (const folderPath of folders) {
// 从完整路径中提取文件夹名称
const folderName = folderPath.split("/").pop().split("\\").pop();
const subItems = Array.from(file.readPathSync(folderPath));
// 过滤出子文件夹
const subFolders = subItems.filter(subItem => {
return file.isFolder(subItem);
});
// 从完整路径中提取子文件夹名称
const cleanSubFolders = subFolders.map(subFolderPath => {
// 从完整路径中提取最后一级文件夹名称
return subFolderPath.split("/").pop().split("\\").pop();
});
talkList[folderName] = cleanSubFolders;
}
} catch (error) {
log.error("构建对话委托标准化列表时出错: {error}", error.message);
}
return talkList;
},
// 标准化委托名称
standardizeCommissionName: function(rawName) {
// 从所有标准化列表中查找最接近的名称
const allNames = [
...Object.keys(this.standardizationLists.fight),
...Object.keys(this.standardizationLists.talk)
];
return getClosestMatch(rawName, allNames, Constants.MATCH_THRESHOLD.COMISSIONS_NAME);
},
// 标准化委托地点
standardizeCommissionLocation: function(commissionName, rawLocation) {
// 根据委托类型选择对应的标准化列表
let candidates = [];
if (this.standardizationLists.fight[commissionName]) {
// 战斗委托
candidates = this.standardizationLists.fight[commissionName];
} else if (this.standardizationLists.talk[commissionName]) {
// 对话委托
candidates = this.standardizationLists.talk[commissionName];
}
if (candidates.length === 0) {
log.warn("没有找到委托 {name} 的标准化地点列表", commissionName);
return rawLocation;
}
// 获取最接近的地点
const closestLocation = getClosestMatch(rawLocation, candidates, Constants.MATCH_THRESHOLD.LOCATION);
if (closestLocation) {
log.info("标准化地点: {raw} -> {standard}", rawLocation, closestLocation);
return closestLocation;
} else {
log.info("地点相似度未达阈值,保持原地点: {raw}", rawLocation);
return rawLocation;
}
}
};
var CommissionRecognition = {
// 识别委托地点
recognizeCommissionLocation: async function() {
@@ -110,6 +316,15 @@ var CommissionRecognition = {
if (text && text.length >= Constants.MIN_TEXT_LENGTH) {
log.info('第{index}个委托: "{text}"', regionIndex + 1, text);
// 标准化委托名称
var standardizedName = CommissionStandardizer.standardizeCommissionName(text);
if (standardizedName && standardizedName !== text) {
log.info('委托名称标准化: "{raw}" -> "{standard}"', text, standardizedName);
text = standardizedName;
} else {
log.debug('委托名称相似度未达阈值,保持原名称: "{raw}"', text);
}
// 检查委托类型
var isFightCommission = supportedCommissions.fight.includes(text);
var isTalkCommission = supportedCommissions.talk.includes(text);
@@ -207,6 +422,14 @@ var CommissionRecognition = {
log.info("委托国家: {status}", detailStatus);
commission.country = detailStatus;
var location = await CommissionRecognition.recognizeCommissionLocation();
// 标准化委托地点
var standardizedLocation = CommissionStandardizer.standardizeCommissionLocation(commission.name, location);
if (standardizedLocation && standardizedLocation !== location) {
log.info('委托地点标准化: "{raw}" -> "{standard}"', location, standardizedLocation);
location = standardizedLocation;
}
commission.location = location;
log.info(
"委托 {name} 的地点: {location}",
@@ -298,6 +521,15 @@ var CommissionRecognition = {
if (text && text.length >= Constants.MIN_TEXT_LENGTH) {
log.info('第4个委托: "{text}"', text);
// 标准化委托名称
var standardizedName = CommissionStandardizer.standardizeCommissionName(text);
if (standardizedName && standardizedName !== text) {
log.info('委托名称标准化: "{raw}" -> "{standard}"', text, standardizedName);
text = standardizedName;
} else {
log.info('委托名称相似度未达阈值,保持原名称: "{raw}"', text);
}
// 检查委托类型
var isFightCommission = supportedCommissions.fight.includes(text);
var isTalkCommission = supportedCommissions.talk.includes(text);
@@ -386,6 +618,14 @@ var CommissionRecognition = {
// 识别委托地点
var location = await CommissionRecognition.recognizeCommissionLocation();
// 标准化委托地点
var standardizedLocation = CommissionStandardizer.standardizeCommissionLocation(fourthCommission.name, location);
if (standardizedLocation && standardizedLocation !== location) {
log.info('委托地点标准化: "{raw}" -> "{standard}"', location, standardizedLocation);
location = standardizedLocation;
}
fourthCommission.location = location;
log.info(
"委托 {name} 的地点: {location}",

View File

@@ -33,6 +33,9 @@ var Core = {
// 加载支持的委托列表
var supportedCommissions = await CommissionData.loadSupportedCommissions();
// OCR名称校正初始化
CommissionStandardizer.initialize();
log.info(
"支持的战斗委托: {count} 个",

View File

@@ -21,7 +21,12 @@
return false;
}
if (config && typeof config === "object") {
// 如果taskType是AutoSkip只使用无配置的构造函数
// 然后再根据config判断调用AutoPick时是否传参
if (taskType === "AutoSkip") {
log.info("启用自动剧情", taskType);
dispatcher.addTimer(new RealtimeTimer(taskType));
} else if (config && typeof config === "object") {
log.info("启用自动任务: {type},配置: {config}", taskType, JSON.stringify(config));
dispatcher.addTimer(new RealtimeTimer(taskType, config));
} else {

View File

@@ -1,8 +1,14 @@
{
"manifest_version": 1,
"name": "(对话+成就)全自动蒙德地区每日委托",
"version": "0.98.14",
"tags": ["委托","对话","战斗","成就","历练点"],
"version": "0.98.15",
"tags": [
"委托",
"对话",
"战斗",
"成就",
"历练点"
],
"description": "自动完成每日委托、自动识别委托内容、自动追踪战斗委托、自动完成对话委托、自动获得到隐藏成就。使用前请阅读README.md获取详细说明和常见问题解答。目前项目急需人手,有意者可加群。感谢云闲vsv & 换苏伟u & 小鹰划船不用桨 & 塔台 & 未知_ 的共同开发",
"authors": [
{