From 2554a8fbcfff4f1f170024f0ead7efe476b0a1a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=B1=E5=91=B1z?= <131586533+jidingcai@users.noreply.github.com> Date: Thu, 3 Jul 2025 20:48:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E3=80=90=E6=96=99=E7=90=86?= =?UTF-8?q?=E5=88=B6=E4=BD=9C=E5=8F=8A=E9=A3=9F=E6=9D=90=E5=8A=A0=E5=B7=A5?= =?UTF-8?q?=E3=80=91js=E8=84=9A=E6=9C=AC=20(#1265)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add files via upload * Add files via upload * Add files via upload * Add files via upload * 新增标签 --- repo/js/料理制作及食材加工/assets/Cooking.png | Bin 0 -> 3733 bytes .../料理制作及食材加工/assets/E_Dialogue.png | Bin 0 -> 547 bytes .../料理制作及食材加工/assets/F_Dialogue.png | Bin 0 -> 515 bytes .../料理制作及食材加工/assets/pageScroll.json | 22 + .../assets/pageScroll2.json | 22 + .../料理制作及食材加工/assets/滚轮下翻.json | 3 + .../assets/璃月杂货商东升旁灶台.json | 29 + repo/js/料理制作及食材加工/main.js | 601 +++++++++++------- repo/js/料理制作及食材加工/manifest.json | 29 +- repo/js/料理制作及食材加工/readme.md | 55 ++ 10 files changed, 533 insertions(+), 228 deletions(-) create mode 100644 repo/js/料理制作及食材加工/assets/Cooking.png create mode 100644 repo/js/料理制作及食材加工/assets/E_Dialogue.png create mode 100644 repo/js/料理制作及食材加工/assets/F_Dialogue.png create mode 100644 repo/js/料理制作及食材加工/assets/pageScroll.json create mode 100644 repo/js/料理制作及食材加工/assets/pageScroll2.json create mode 100644 repo/js/料理制作及食材加工/assets/滚轮下翻.json create mode 100644 repo/js/料理制作及食材加工/assets/璃月杂货商东升旁灶台.json create mode 100644 repo/js/料理制作及食材加工/readme.md diff --git a/repo/js/料理制作及食材加工/assets/Cooking.png b/repo/js/料理制作及食材加工/assets/Cooking.png new file mode 100644 index 0000000000000000000000000000000000000000..94bf83d15dd289fff097155a9e0081b3deb4b792 GIT binary patch literal 3733 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 literal 0 HcmV?d00001 diff --git a/repo/js/料理制作及食材加工/assets/E_Dialogue.png b/repo/js/料理制作及食材加工/assets/E_Dialogue.png new file mode 100644 index 0000000000000000000000000000000000000000..9114ff5bf4a3e232f971a679f78dd28e564ee5c1 GIT binary patch literal 547 zcmV+;0^I$HP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0k}y-K~z{r?Up;L z!ax*;|M-5OC&Ksto$^%|SaMkpH5XcWOe z8lhUP;&?oAok%25uh$U@g}8peUbkAUFc=KbXfzOy$Hg6O$Oa~p2`ZHew%aY&*=!b_ zP6v@lgzH!K`#ro~FPu)Nh-mY*EC>VwhLbbwI$-(?#9}d&%VoaQugJ2DVzJ0G#R$^| zK2azX&}y|vg~;?4csw2?lS!o0>9>(erQmkE#gm`;S{hQZv*7<4xLhu{-|s@{W7@#= zdgV=Lxm-St#bSZ!bjs6^eKvxe1;gPG&1Ms)(}`{-41JvVm`5 l*8$src)= literal 0 HcmV?d00001 diff --git a/repo/js/料理制作及食材加工/assets/F_Dialogue.png b/repo/js/料理制作及食材加工/assets/F_Dialogue.png new file mode 100644 index 0000000000000000000000000000000000000000..314a85f134cbc0dd620dea029b010905c6415165 GIT binary patch literal 515 zcmV+e0{s1nP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0hmcdK~z{r?UucY z!ax*8_nG_y!6GkUsR)W-uOLPcyMQlXXKN>^f>w5dT8JnqM6eOGuuw!yAt-M0$%KpS zZXh$p6<5{+A0gb_$sxHU^MNN~TAz5T0OKw2_XSMTgkcz1E|*v=7TmDww%aXr^Wh2{ z4hM8P9Tba2WV2ara=9F;)hafd4Xxk~SKxFyVKSMZR4T#e^9d!HOhVUnTEQKm88{w~ zXti4K`~CI}*fAcDLsivpX*3$B)oQ3zDrmRc)a{P&5O%v=1cSk=Kt7+hpU&4X(cNx` z*=&aSd`_M22n+OjJ%mD`t3aVppo$aAvh3j%;UNOI@VWx2RLUN-pXvAeSg+UA#mAEX zOC%COEEaQw4d-Ampe{b11tdvAI-Pc;TrOiY8c`P?p$zVJlJ2IV4vET2hi_hy0 z;r|v01Okv{nJV|;Ngx~!Ls1l}+=nNDXfz5<)2MPE!UF6I$38xZL<04CU3kO6Ls($7 zTA|r&VmKV$wB_OxB$fb_r!DV!r%Y^002ovPDHLk FV1jS-*o^=H literal 0 HcmV?d00001 diff --git a/repo/js/料理制作及食材加工/assets/pageScroll.json b/repo/js/料理制作及食材加工/assets/pageScroll.json new file mode 100644 index 00000000..ae044778 --- /dev/null +++ b/repo/js/料理制作及食材加工/assets/pageScroll.json @@ -0,0 +1,22 @@ +{ + "macroEvents": [ + {"type": 2, "mouseX": 1200, "mouseY": 901, "time": 0}, + {"type": 2, "mouseX": 1200, "mouseY": 801, "time": 50}, + {"type": 2, "mouseX": 1200, "mouseY": 701, "time": 100}, + {"type": 2, "mouseX": 1200, "mouseY": 601, "time": 150}, + {"type": 2, "mouseX": 1200, "mouseY": 501, "time": 200}, + {"type": 2, "mouseX": 1200, "mouseY": 401, "time": 250}, + {"type": 2, "mouseX": 1200, "mouseY": 301, "time": 300}, + {"type": 2, "mouseX": 1200, "mouseY": 201, "time": 350}, + {"type": 2, "mouseX": 1200, "mouseY": 200, "mouseButton": "Left", "time": 400} + ], + "info": { + "name": "", + "description": "", + "x": 0, + "y": 0, + "width": 1920, + "height": 1080, + "recordDpi": 1 + } +} diff --git a/repo/js/料理制作及食材加工/assets/pageScroll2.json b/repo/js/料理制作及食材加工/assets/pageScroll2.json new file mode 100644 index 00000000..8ac7db36 --- /dev/null +++ b/repo/js/料理制作及食材加工/assets/pageScroll2.json @@ -0,0 +1,22 @@ +{ + "macroEvents": [ + {"type": 2, "mouseX": 1200, "mouseY": 901, "time": 0}, + {"type": 2, "mouseX": 1200, "mouseY": 801, "time": 50}, + {"type": 2, "mouseX": 1200, "mouseY": 701, "time": 100}, + {"type": 2, "mouseX": 1200, "mouseY": 601, "time": 150}, + {"type": 2, "mouseX": 1200, "mouseY": 501, "time": 200}, + {"type": 2, "mouseX": 1200, "mouseY": 401, "time": 250}, + {"type": 2, "mouseX": 1200, "mouseY": 301, "time": 300}, + {"type": 2, "mouseX": 1200, "mouseY": 205, "time": 350}, + {"type": 2, "mouseX": 1200, "mouseY": 204, "mouseButton": "Left", "time": 400} + ], + "info": { + "name": "", + "description": "", + "x": 0, + "y": 0, + "width": 1920, + "height": 1080, + "recordDpi": 1 + } +} diff --git a/repo/js/料理制作及食材加工/assets/滚轮下翻.json b/repo/js/料理制作及食材加工/assets/滚轮下翻.json new file mode 100644 index 00000000..cd0e99ac --- /dev/null +++ b/repo/js/料理制作及食材加工/assets/滚轮下翻.json @@ -0,0 +1,3 @@ +{"macroEvents":[{"type":6,"mouseX":0,"mouseY":-120,"time":0}, +{"type":6,"mouseX":0,"mouseY":0,"time":100}], +"info":{"name":"","description":"","x":0,"y":0,"width":1920,"height":1080,"recordDpi":1}} \ No newline at end of file diff --git a/repo/js/料理制作及食材加工/assets/璃月杂货商东升旁灶台.json b/repo/js/料理制作及食材加工/assets/璃月杂货商东升旁灶台.json new file mode 100644 index 00000000..50e424da --- /dev/null +++ b/repo/js/料理制作及食材加工/assets/璃月杂货商东升旁灶台.json @@ -0,0 +1,29 @@ +{ + "info": { + "name": "璃月杂货商东升旁灶台", + "type": "collect", + "author": "吉吉喵", + "version": "1.0", + "description": "", + "bgi_version": "0.42.3" + }, + "positions": [ + { + "id": 1, + "x": 267.92, + "y": -665.01, + "action": "force_tp", + "move_mode": "walk", + "type": "teleport" + }, + { + "id": 2, + "x": 255.099609375, + "y": -680.1826171875, + "type": "target", + "move_mode": "walk", + "action": "", + "action_params": "" + } + ] +} \ No newline at end of file diff --git a/repo/js/料理制作及食材加工/main.js b/repo/js/料理制作及食材加工/main.js index 409181f3..a942f44e 100644 --- a/repo/js/料理制作及食材加工/main.js +++ b/repo/js/料理制作及食材加工/main.js @@ -16,231 +16,400 @@ let sausageNum = settings.sausageNum ?? 0; await sleep(1000); - await pathingScript.runFile("assets/前往蒙德灶台.json"); - keyPress("F"); - await sleep(1000); + await pathingScript.runFile("assets/璃月杂货商东升旁灶台.json"); - //制作料理 - if (foodName) { - click(910, 51);//选择料理 + + /** + F交互区 + **/ + // 定义一个函数用于模拟按键操作 + async function simulateKeyOperations(key, duration) { + keyDown(key); + await sleep(duration); + keyUp(key); + await sleep(500); // 释放按键后等待 500 毫秒 + } + + // 识别 F 图标 + async function recognizeFIcon() { + const fDialogueRo = RecognitionObject.TemplateMatch( + file.ReadImageMatSync("assets/F_Dialogue.png"), + 1101, + 400, + 36, + 400 + ); + + let ra = captureGameRegion(); + let fRes = ra.find(fDialogueRo); + + if (!fRes.isExist()) { + let f_attempts = 0; // 初始化尝试次数 + while (f_attempts < 3) { // 最多尝试 3 次 + f_attempts++; + log.info(`当前尝试次数:${f_attempts}`); + + if (f_attempts === 1 || f_attempts === 2) { + // 第一次未找到 F 图标 + await simulateKeyOperations("S", 200); // 后退 200 毫秒 + log.info("执行后退操作"); + await sleep(200); + await simulateKeyOperations("W", 600); // 前进 600 毫秒 + log.info("执行前进操作"); + } else if (f_attempts === 3) { + // 第二次未找到 F 图标 + log.info("重新加载路径文件"); + const filePath = `assets/璃月杂货商东升旁灶台.json`; + log.info(`加载路径文件:${filePath}`); + await pathingScript.runFile(filePath); + await sleep(500); + } + + // 重新获取游戏区域截图 + ra = captureGameRegion(); + fRes = ra.find(fDialogueRo); + + // 打印识别结果 + log.info(`识别结果:${fRes.isExist()}`); + + // 如果识别成功,立即退出循环 + if (fRes.isExist()) { + log.info("识别成功,退出循环"); + break; + } + + await sleep(500); + } + } + + // 如果尝试次数已达上限,返回 null + if (!fRes.isExist()) { + log.error("尝试次数已达上限"); + return null; + } + + return fRes; + } + + // 识别 Cooking 图标 + async function recognizeCookingIcon(centerYF) { + const cookingRo = RecognitionObject.TemplateMatch( + file.ReadImageMatSync("assets/Cooking.png"), + 1176, + centerYF - 18, // 以 F 图标的中心,向上偏移 18 像素 + 27, // 宽度范围 + 36 // 高度范围 + ); + + let ra = captureGameRegion(); + let cookingRes = ra.find(cookingRo); + + if (cookingRes.isExist()) { + log.info("找到 灶台 图标"); + return cookingRes; + } else { + log.info("未找到 灶台 图标"); + return null; + } + } + + // 主逻辑函数 + async function main() { + // 识别 F 图标 + let fRes = await recognizeFIcon(); + if (!fRes) { + log.error("未能识别 F 图标,退出任务"); + return; + } + + // 获取 F 图标的中心点 Y 坐标 + let centerYF = Math.round(fRes.y + fRes.height / 2); + + const maxScrollAttempts = 5; // 最大滚轮操作次数限制 + let scrollAttempts = 0; + + while (scrollAttempts < maxScrollAttempts) { + // 识别 灶台 图标 + let cookingRes = await recognizeCookingIcon(centerYF); + if (cookingRes) { + // log.info("找到 灶台 图标"); + return cookingRes; // 识别成功,返回结果 + } + + // 如果未找到 Cooking 图标,执行滚轮操作 + log.info(`未找到 Cooking 图标,执行滚轮操作,当前尝试次数:${scrollAttempts + 1}`); + await keyMouseScript.runFile(`assets/滚轮下翻.json`); + await sleep(1000); + + // 重新识别 F 图标,获取最新的中心点 + fRes = await recognizeFIcon(); + if (!fRes) { + log.error("滚轮操作后,未能重新识别 F 图标,退出任务"); + return; + } + + centerYF = Math.round(fRes.y + fRes.height / 2); // 更新 F 图标的中心点 Y 坐标 + + // 增加尝试次数 + scrollAttempts++; + } + + // 如果超过最大滚轮操作次数,返回 null + log.error(`滚轮操作次数已达上限 ${maxScrollAttempts} 次,未能找到 Cooking 图标`); + return null; + } + + + try { + // 识别 Cooking 图标 + const cookingRes = await main(); + if (!cookingRes) { + log.error("未能识别 灶台 图标,退出任务"); + return; + } + + // 按下 F 键 + keyPress("F"); await sleep(1000); - click(170, 1020);//筛选 + + //制作料理 + if (foodName) { + click(910, 51);//选择料理 + await sleep(1000); + click(170, 1020);//筛选 + await sleep(1000); + click(195, 1020);//重置 + await sleep(1000); + click(110, 110);//输入名字 + await sleep(1000); + inputText(`${foodName}`); + await sleep(500); + click(490, 1020);//确认筛选 + await sleep(1000); + click(180, 180);//选择第一个食物 + await sleep(2000); + click(1690, 1015);//制作 + await sleep(1000); + click(795, 1015);//自动烹饪 + await sleep(1000); + click(965, 455);//输入数量 + await sleep(1000); + for (const char of foodNum) { + keyPress(char); + await sleep(500); + } + click(1190, 755);//确认 + await sleep(4000);//等待烹饪 + click(960, 1045); //点击任意处 + await sleep(1000); + click(960, 1045); //点击任意处 + await sleep(1000); + }; + + //食材加工 + + click(1010, 50); //选择食材加工 await sleep(1000); - click(195, 1020);//重置 + click(255, 1020); //全部领取 await sleep(1000); - click(110, 110);//输入名字 + click(960, 1045); //点击任意处 await sleep(1000); - inputText(`${foodName}`); - await sleep(500); - click(490, 1020);//确认筛选 + click(960, 1045); //点击任意处 await sleep(1000); - click(180, 180);//选择第一个食物 + click(960, 1045); //点击任意处 await sleep(2000); - click(1690, 1015);//制作 + + + if (flourNum) { + click(175, 190);//flour + await sleep(1000); + click(1690, 1015);//制作 + await sleep(1000); + click(965, 455);//输入数量 + await sleep(1000); + for (const char of flourNum) { + keyPress(char); + await sleep(500); + } + click(1190, 755);//确认 + await sleep(1000); + }; + + if (creamNum) { + click(770, 190);//cream + await sleep(1000); + click(1690, 1015);//制作 + await sleep(1000); + click(965, 455);//输入数量 + await sleep(1000); + for (const char of creamNum) { + keyPress(char); + await sleep(500); + } + click(1190, 755);//确认 + await sleep(1000); + }; + + if (smokedPoultryNum) { + click(920, 190);//smokedPoultry + await sleep(1000); + click(1690, 1015);//制作 + await sleep(1000); + click(965, 455);//输入数量 + await sleep(1000); + for (const char of smokedPoultryNum) { + keyPress(char); + await sleep(500); + } + click(1190, 755);//确认 + await sleep(1000); + }; + + if (butterNum) { + click(1060, 190);//butter + await sleep(1000); + click(1690, 1015);//制作 + await sleep(1000); + click(965, 455);//输入数量 + await sleep(1000); + for (const char of butterNum) { + keyPress(char); + await sleep(500); + } + click(1190, 755);//确认 + await sleep(1000); + }; + + if (hamNum) { + click(1210, 190);//ham + await sleep(1000); + click(1690, 1015);//制作 + await sleep(1000); + click(965, 455);//输入数量 + await sleep(1000); + for (const char of hamNum) { + keyPress(char); + await sleep(500); + } + click(1190, 755);//确认 + await sleep(1000); + }; + + if (sugarNum) { + click(175, 375);//sugar + await sleep(1000); + click(1690, 1015);//制作 + await sleep(1000); + click(965, 455);//输入数量 + await sleep(1000); + for (const char of sugarNum) { + keyPress(char); + await sleep(500); + } + click(1190, 755);//确认 + await sleep(1000); + }; + + if (spiceNum) { + click(325, 375);//spice + await sleep(1000); + click(1690, 1015);//制作 + await sleep(1000); + click(965, 455);//输入数量 + await sleep(1000); + for (const char of spiceNum) { + keyPress(char); + await sleep(500); + } + click(1190, 755);//确认 + await sleep(1000); + }; + + if (crabRoeNum) { + click(475, 375);//crabRoe + await sleep(1000); + click(1690, 1015);//制作 + await sleep(1000); + click(965, 455);//输入数量 + await sleep(1000); + for (const char of crabRoeNum) { + keyPress(char); + await sleep(500); + } + click(1190, 755);//确认 + await sleep(1000); + }; + + if (jamNum) { + click(620, 375);//jam + await sleep(1000); + click(1690, 1015);//制作 + await sleep(1000); + click(965, 455);//输入数量 + await sleep(1000); + for (const char of jamNum) { + keyPress(char); + await sleep(500); + } + click(1190, 755);//确认 + await sleep(1000); + }; + + if (cheeseNum) { + click(770, 375);//cheese + await sleep(1000); + click(1690, 1015);//制作 + await sleep(1000); + click(965, 455);//输入数量 + await sleep(1000); + for (const char of cheeseNum) { + keyPress(char); + await sleep(500); + } + click(1190, 755);//确认 + await sleep(1000); + }; + + if (baconNum) { + click(915, 375);//bacon + await sleep(1000); + click(1690, 1015);//制作 + await sleep(1000); + click(965, 455);//输入数量 + await sleep(1000); + for (const char of baconNum) { + keyPress(char); + await sleep(500); + } + click(1190, 755);//确认 + await sleep(1000); + }; + + if (sausageNum) { + click(1060, 375);//sausage + await sleep(1000); + click(1690, 1015);//制作 + await sleep(1000); + click(965, 455);//输入数量 + await sleep(1000); + for (const char of sausageNum) { + keyPress(char); + await sleep(500); + } + click(1190, 755);//确认 + await sleep(1000); + }; + await genshin.returnMainUi(); await sleep(1000); - click(795, 1015);//自动烹饪 - await sleep(1000); - click(965, 455);//输入数量 - await sleep(1000); - for (const char of foodNum) { - keyPress(char); - await sleep(500); - } - click(1190, 755);//确认 - await sleep(4000);//等待烹饪 - keyPress("ESCAPE"); + keyDown("S"); await sleep(1500); - keyPress("ESCAPE"); - await sleep(1500); - }; + keyUp("S"); + await sleep(1000); - //食材加工 + } catch (error) { + log.error(`执行按键或鼠标操作时发生错误:${error.message}`); + } - click(1010, 50);//选择食材加工 - await sleep(1000); - click(255, 1020);//全部领取 - await sleep(1000); - keyPress("ESCAPE");//点击任意处 - await sleep(2000); - - if (flourNum) { - click(175, 190);//flour - await sleep(1000); - click(1690, 1015);//制作 - await sleep(1000); - click(965, 455);//输入数量 - await sleep(1000); - for (const char of flourNum) { - keyPress(char); - await sleep(500); - } - click(1190, 755);//确认 - await sleep(1000); - }; - - if (creamNum) { - click(770, 190);//cream - await sleep(1000); - click(1690, 1015);//制作 - await sleep(1000); - click(965, 455);//输入数量 - await sleep(1000); - for (const char of creamNum) { - keyPress(char); - await sleep(500); - } - click(1190, 755);//确认 - await sleep(1000); - }; - - if (smokedPoultryNum) { - click(920, 190);//smokedPoultry - await sleep(1000); - click(1690, 1015);//制作 - await sleep(1000); - click(965, 455);//输入数量 - await sleep(1000); - for (const char of smokedPoultryNum) { - keyPress(char); - await sleep(500); - } - click(1190, 755);//确认 - await sleep(1000); - }; - - if (butterNum) { - click(1060, 190);//butter - await sleep(1000); - click(1690, 1015);//制作 - await sleep(1000); - click(965, 455);//输入数量 - await sleep(1000); - for (const char of butterNum) { - keyPress(char); - await sleep(500); - } - click(1190, 755);//确认 - await sleep(1000); - }; - - if (hamNum) { - click(1210, 190);//ham - await sleep(1000); - click(1690, 1015);//制作 - await sleep(1000); - click(965, 455);//输入数量 - await sleep(1000); - for (const char of hamNum) { - keyPress(char); - await sleep(500); - } - click(1190, 755);//确认 - await sleep(1000); - }; - - if (sugarNum) { - click(175, 375);//sugar - await sleep(1000); - click(1690, 1015);//制作 - await sleep(1000); - click(965, 455);//输入数量 - await sleep(1000); - for (const char of sugarNum) { - keyPress(char); - await sleep(500); - } - click(1190, 755);//确认 - await sleep(1000); - }; - - if (spiceNum) { - click(325, 375);//spice - await sleep(1000); - click(1690, 1015);//制作 - await sleep(1000); - click(965, 455);//输入数量 - await sleep(1000); - for (const char of spiceNum) { - keyPress(char); - await sleep(500); - } - click(1190, 755);//确认 - await sleep(1000); - }; - - if (crabRoeNum) { - click(475, 375);//crabRoe - await sleep(1000); - click(1690, 1015);//制作 - await sleep(1000); - click(965, 455);//输入数量 - await sleep(1000); - for (const char of crabRoeNum) { - keyPress(char); - await sleep(500); - } - click(1190, 755);//确认 - await sleep(1000); - }; - - if (jamNum) { - click(620, 375);//jam - await sleep(1000); - click(1690, 1015);//制作 - await sleep(1000); - click(965, 455);//输入数量 - await sleep(1000); - for (const char of jamNum) { - keyPress(char); - await sleep(500); - } - click(1190, 755);//确认 - await sleep(1000); - }; - - if (cheeseNum) { - click(770, 375);//cheese - await sleep(1000); - click(1690, 1015);//制作 - await sleep(1000); - click(965, 455);//输入数量 - await sleep(1000); - for (const char of cheeseNum) { - keyPress(char); - await sleep(500); - } - click(1190, 755);//确认 - await sleep(1000); - }; - - if (baconNum) { - click(915, 375);//bacon - await sleep(1000); - click(1690, 1015);//制作 - await sleep(1000); - click(965, 455);//输入数量 - await sleep(1000); - for (const char of baconNum) { - keyPress(char); - await sleep(500); - } - click(1190, 755);//确认 - await sleep(1000); - }; - - if (sausageNum) { - click(1060, 375);//sausage - await sleep(1000); - click(1690, 1015);//制作 - await sleep(1000); - click(965, 455);//输入数量 - await sleep(1000); - for (const char of sausageNum) { - keyPress(char); - await sleep(500); - } - click(1190, 755);//确认 - await sleep(1000); - }; - await genshin.returnMainUi(); + // 发送通知 + notification.send("烹饪脚本结束"); })(); diff --git a/repo/js/料理制作及食材加工/manifest.json b/repo/js/料理制作及食材加工/manifest.json index 4612b296..4ce6a470 100644 --- a/repo/js/料理制作及食材加工/manifest.json +++ b/repo/js/料理制作及食材加工/manifest.json @@ -1,14 +1,19 @@ { - "manifest_version": 1, - "name": "料理制作及食材加工", - "version": "1.2", - "description": "自动烹饪料理以及加工食材,需要0.44.6及以上版本", - "authors": [ - { - "name": "柒叶子", - "link": "https://github.com/511760049" - } - ], - "settings_ui": "settings.json", - "main": "main.js" + "manifest_version": 1, + "name": "料理制作及食材加工", + "version": "1.3", + "bgi_version": "0.44.6",  + "tags": ["食材加工", "料理制作"], + "description": "自动烹饪料理以及加工食材,需要0.44.6及以上版本", + "authors": [ + { + "name": "柒叶子", + "link": "https://github.com/511760049" + }, + { + "name": "呱呱z" + } + ], + "settings_ui": "settings.json", + "main": "main.js" } diff --git a/repo/js/料理制作及食材加工/readme.md b/repo/js/料理制作及食材加工/readme.md new file mode 100644 index 00000000..b5113afa --- /dev/null +++ b/repo/js/料理制作及食材加工/readme.md @@ -0,0 +1,55 @@ +# 料理制作及食材加工脚本 + +本脚本用于料理的制作和食材加工。可根据配置自动选择料理和各类食材进行批量制作。 + +## 功能简介 + +- 自动前往指定灶台 +- 自动筛选并制作指定料理,可自定义数量 +- 自动领取并加工多种食材(如面粉、奶油、火腿等),每种食材数量可单独配置 +- 制作完成后自动返回主界面并发送通知 + +## 使用方法 + +1. 通过 BetterGI 脚本设置界面填写各项参数(料理名、数量、各类食材数量等) + +## 参数说明 + +| 参数名 | 说明 | 默认值 | +| ---------------- | -------------- | ------ | +| foodName | 料理名称 | 0 | +| foodNum | 料理制作数量 | 1 | +| flourNum | 面粉加工数量 | 0 | +| creamNum | 奶油加工数量 | 0 | +| smokedPoultryNum | 熏禽肉加工数量 | 0 | +| butterNum | 黄油加工数量 | 0 | +| hamNum | 火腿加工数量 | 0 | +| sugarNum | 糖加工数量 | 0 | +| spiceNum | 香辛料加工数量 | 0 | +| crabRoeNum | 蟹黄加工数量 | 0 | +| jamNum | 果酱加工数量 | 0 | +| cheeseNum | 奶酪加工数量 | 0 | +| baconNum | 培根加工数量 | 0 | +| sausageNum | 香肠加工数量 | 0 | + +## 注意事项 + +- 请确保游戏窗口分辨率为 16:9,否则可能点击异常 +- 脚本运行期间请勿手动干预,以免流程异常 +- 由于是模拟点击,请保证材料的充足,避免造成加工错误的问题 + +## 结束 + +脚本执行完毕后会自动返回主界面并发送“烹饪脚本结束”通知。 + +--- + +如有问题或建议,欢迎反馈交流! + +## 更新日志 + +### 1.3(20250709) + +- 优化灶台路径 +- 优化灶台交互 +- 优化未进入烹饪界面导致的一系列问题