diff --git a/repo/js/AEscoffier_chef/assets/others/slide_bar_main_down.png b/repo/js/AEscoffier_chef/assets/others/slide_bar_main_down.png new file mode 100644 index 00000000..fb752b98 Binary files /dev/null and b/repo/js/AEscoffier_chef/assets/others/slide_bar_main_down.png differ diff --git a/repo/js/AEscoffier_chef/assets/others/slide_bar_main_up.png b/repo/js/AEscoffier_chef/assets/others/slide_bar_main_up.png new file mode 100644 index 00000000..c39dec53 Binary files /dev/null and b/repo/js/AEscoffier_chef/assets/others/slide_bar_main_up.png differ diff --git a/repo/js/AEscoffier_chef/main.js b/repo/js/AEscoffier_chef/main.js index 4d9bd12e..ed8980e9 100644 --- a/repo/js/AEscoffier_chef/main.js +++ b/repo/js/AEscoffier_chef/main.js @@ -13,7 +13,8 @@ const name_can_make = ['酪香蟹蟹锅', '丰稔之赐', '沃陆果饮', '粒果膨膨棒', '酪烤菇菇串', '乌乌黑蛋', '钱汤馒头', '梅落雪间醉', '炎岩之颂', '清心花饼', '奇瑰之汤', '纵声欢唱', '山与海与天空', '火山蛋糕', '粒果裹裹', '苦水', '串烤牛心', '宝石闪闪', '温泉时光', '咚咚嘭嘭', '苹果金条条', '塔塔可', '兽肉旋风', '巧克力', '龙龙饼干', '奇旅馔匣', '夹心土豆泥', '炸虾豆球', '火焰炖肉', '「强水」', '苹果卷卷', '多彩之森', '粒果肉汤', '粒果片片', '酸汁腌鱼', '薄荷酱烤鱼', '粒果杯', '膨膨冰淇淋', '酥酥羊角包', '奶油炖鸡', '桔香鸭胸肉', '泡泡舒芙蕾', '肉满满寿司', '八宝福禄鸭', '茶好月圆', '知足常乐', '红烧肉圆', '繁弦急管', '宾至如归', '金玉满堂', '茶熏乳鸽', '油爆双脆', '古华鱼羊鲜', '玉纹茶叶蛋', '沉玉茶露', '蜜汁叉烧', '千灵慕斯', '缤纷马卡龙', '圈圈圆圆', '致水神', '羊杂哈吉斯', '桔桔薄饼', '港湾牛肚', '咖啡芭芭露', '卡苏莱砂锅', '纳博内番茄盅', '「纯洁之水」', '百味一缕', '苹果黑布丁', '香烤肋排', '杏仁鳟鱼', '韦西鸡', '花果三重奏', '果果仙酪', '鱼鱼咏唱派', '炸鱼薯条', '生肉塔塔', '肉酱千层面', '白淞鲜汤', '膨膨泡芙', '双果清露', '果果软糖', '晶螺糕', '枫丹肥肝', '奶油蘑菇汤', '塔塞斯杂烩', '浮露白霜', '蒜香面包棍', '水乡肉冻', '枫丹洋葱汤', '油封鸭腿', '琼玉果汤', '脆饼珐提', '超级至尊披萨', '蜜金泡果', '薄荷曼果茶', '镀金锅', '秘香肉团', '萨布兹炖肉', '萨巴桑炸角', '蔷薇奶糊', '帕蒂沙兰布丁', '椰炭饼', '千层酥酥', '假日果酿', '枣椰蜜糖', '阿如拌饭', '唐杜尔烤鸡', '肉肉烤蘑菇披萨', '兽米香香', '土豆船', '口袋饼', '奶香菌菇脆塔', '米圆塔', '黄油鸡', '日落莓莓茶', '雨林沙拉', '绿汁脆球', '咖喱虾', '奶酱鲜鱼', '烤肉卷', '马萨拉芝士球', '杂菇荟萃', '薄荷豆汤', '兰巴德鱼卷', '紫苑云霓', '炸肉排三明治', '山家烧', '乌冬面', '丰年有余', '龙须面', '五宝腌菜', '鳗肉茶泡饭', '绯樱虾仙贝', '树莓水馒头', '鲜鱼炖萝卜', '若竹煮', '荞麦面', '辣肉窝窝头', '蛋包饭', '米饭布丁', '文心豆腐', '活力喵饭', '日落鲷鱼烧', '红烩兽肉', '多多烧', '蒲烧鳗肉', '甜虾寿司', '鸟蛋寿司', '刺身拼盘', '黄油蟹蟹', '绀田煮', '绯樱饼', '兽骨拉面', '三彩团子', '绯樱天妇罗', '串串三味', '渡来禽肉', '市井杂煮', '什锦炒面', '金枪鱼寿司', '饭团', '蟹黄壳壳烧', '鸟蛋烧', '干烧香鱼', '味噌汤', '鸡豆花', '清炒虾仁', '米窝窝', '干锅腊肉', '蟹黄豆腐', '干炒鱼河', '大黄金吮指鸡', '兽肉薄荷卷', '脆脆鸡腿堡', '鲜虾脆薯盏', '香浓土豆泥', '凉拌薄荷', '薄荷果冻', '明月蛋', '素鲍鱼', '岩港三鲜', '四方和平', '绝云锅巴', '黄油煎鱼', '稠汁蔬菜炖肉', '天枢肉', '月亮派', '金丝虾球', '北地苹果焖肉', '腌笃鲜', '扣三丝', '冒险家蛋堡', '莲花酥', '仙跳墙', '翡玉什锦袋', '黄金蟹', '中原杂碎', '蜜酱胡萝卜煎肉', '风神杂烩菜', '蟹黄火腿焗时蔬', '蒙德土豆饼', '松鼠鱼', '水煮黑背鲈', '烤蘑菇披萨', '冷肉拼盘', '黄油松茸', '轻策农家菜', '「堆高高」', '来来菜', '嘟嘟莲海鲜羹', '白汁时蔬烩肉', '莲子禽蛋羹', '庄园烤松饼', '山珍热卤面', '北地烟熏鸡', '松茸酿肉卷', '甜甜花酿鸡', '水晶虾', '火火肉酱面', '炸萝卜丸子', '杏仁豆腐', '香嫩椒椒鸡', '满足沙拉', '珍珠翡翠白玉汤', '渔人吐司', '蒙德烤鱼', '摩拉肉', '爆炒肉片', '提瓦特煎蛋', '烤肉排', '野菇鸡肉串', '烤吃虎鱼', '萝卜时蔬汤'] // 模板匹配图片路径 const pic_path = { - "slide_bar_main": "assets\\others\\slide_bar_main.png", + "slide_bar_main_up": "assets\\others\\slide_bar_main_up.png", + "slide_bar_main_down": "assets\\others\\slide_bar_main_down.png", "slide_bar_cooking": "assets\\others\\slide_bar_cooking.png", "claim": "assets\\others\\claim.png", "auto_cooking": { @@ -7413,25 +7414,28 @@ * * @param {string} direction: 滑动方向 * @param {bigint} pages: 页数 - * @returns {Promise} 滑动到底部或者找不到滑块return false,成功滑动return true + * @returns {Promise} */ async function scroll_pages_main(direction = "down", pages = 1) { - const slide_barRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync(pic_path["slide_bar_main"]), 1282, 112, 13, 840); - slide_barRo.threshold = 0.6; + const slide_bar_upRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync(pic_path["slide_bar_main_up"]), 1282, 112, 13, 840); + const slide_bar_downRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync(pic_path["slide_bar_main_down"]), 1282, 112, 13, 840); + slide_bar_upRo.threshold = 0.6; + slide_bar_downRo.threshold = 0.6; for (let i = 0; i < pages; i++) { moveMouseTo(1555, 860); // 移走鼠标,防止干扰识别 await sleep(200); - let slide_bar = captureGameRegion().Find(slide_barRo); // 当前页面模板匹配 - if (slide_bar.isExist()) { - log.info(`定位到滑块...(${slide_bar.x}, ${slide_bar.y})-滑动方向: ${direction}`); - if (slide_bar.y > 752 && direction === "down") { // 当前为向下滑动且滑块y值已经大于设定y值 + let slide_bar_up = captureGameRegion().Find(slide_bar_upRo); // 当前页面模板匹配 + let slide_bar_down = captureGameRegion().Find(slide_bar_downRo); // 当前页面模板匹配 + if (slide_bar_up.isExist() && slide_bar_down.isExist()) { + log.info(`定位到滑块...(${slide_bar_up.x}, ${slide_bar_up.y})-滑动方向: ${direction}`); + if (slide_bar_down.y > 920 && direction === "down") { log.info(`滑块已经滑动到底部...`); if (i != 0) { return true; } else { return false; } - } else if (slide_bar.y < 125 && direction === "up") { // 当前为向上滑动且滑块y值已经小于设定y值 + } else if (slide_bar_up.y < 125 && direction === "up") { log.info(`滑块已经滑动到顶部...`); if (i != 0) { return true; @@ -7439,8 +7443,8 @@ return false; } } - click(1289, direction === "down" ? slide_bar.y + 205 : slide_bar.y - 20); // 88 + 175 = 263 - await sleep(10); + click(1289, direction === "down" ? slide_bar_down.y + 20 : slide_bar_up.y - 20); // 向上下滑动(点击) + await sleep(100); } else { log.error("未找到滑块,无法执行页面滑动操作!"); return false; @@ -8245,7 +8249,7 @@ // 识别当前buff(判断烹饪产物) let current_buff = get_current_buff(); if (unlock || (proficiency[0] === proficiency[1] && proficiency[1] !== 0)) { // 解锁了自动烹饪 - const loop_time = Math.ceil(setting_dic["cooking"][food_name] / 99) + 1; // 总计循环数,一次最大99 + const loop_time = Math.floor(setting_dic["cooking"][food_name] / 99) + 1; // 总计循环数,一次最大99 let cook_num = setting_dic["cooking"][food_name] + 0; // 设定的数量 for (let i = 0; i < loop_time; i++) { let cook_time = i !== loop_time - 1 ? 99: cook_num - i * 99; // 本次烹饪数 @@ -8317,7 +8321,7 @@ unlock = await is_unlock(); // 检测当前食材是否已经解锁 } if (unlock_flag) { - const loop_time = Math.ceil(cook_num / 99) + 1; // 总计循环数,一次最大99 + const loop_time = Math.floor(cook_num / 99) + 1; // 总计循环数,一次最大99 let cook_num = setting_dic["cooking"][food_name] + 0; // 设定的数量 for (let i = 0; i < loop_time; i++) { let cook_time = i !== loop_time - 1 ? 99: cook_num - i * 99; // 本次烹饪数 diff --git a/repo/js/AEscoffier_chef/manifest.json b/repo/js/AEscoffier_chef/manifest.json index 9895c898..3eb6e50a 100644 --- a/repo/js/AEscoffier_chef/manifest.json +++ b/repo/js/AEscoffier_chef/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 1, "name": "一只爱可菲(厨娘版)", - "version": "1.1", + "version": "1.2", "bgi_version": "0.44.6", "description": "脚本名称:一只爱可菲(厨娘版)\n功能描述:专精料理制作的爱可菲(自动烹饪及解锁、特殊料理)\n核心功能------------------------------>\n1.自动烹饪:支持手动烹饪和自动烹饪,支持只刷满熟练度\n2.自动特殊料理:支持根据菜名和角色名自动进行单/多个特殊料理的烹饪(可以调节预期数量)\n3.其他料理获取:除了烹饪以外的部分料理的获取[仅有数据,未实装]\n注意事项------------------------------>\n1.请确保原神分辨率是1920x1080\n2.请尽量确保食材充足,如果食材不充足会自动跳过\n---------------------------------------->\n作者:提瓦特钓鱼玳师\n脚本反馈邮箱:hijiwos@hotmail.com", "authors": [ diff --git a/repo/js/AllFowlTeyvat/main.js b/repo/js/AllFowlTeyvat/main.js index a513622d..77f511fe 100644 --- a/repo/js/AllFowlTeyvat/main.js +++ b/repo/js/AllFowlTeyvat/main.js @@ -153,7 +153,7 @@ * */ function parse_file_name(file_name) { try { - const file_msg = file_name.split() + const file_msg = file_name.split("-") let msg_dic = {}; // 存储路径信息 const area = file_msg[0]; @@ -190,7 +190,7 @@ * */ async function run_file(file_name) { const base_path_pathing = "assets/pathing/"; - await keyMouseScript.runFile(base_path_pathing + file_name + ".json"); + await pathingScript.runFile(base_path_pathing + file_name + ".json"); } async function main() { @@ -202,16 +202,15 @@ const setting_msg = read_settings(); // 自动拾取 if (setting_msg["mode_pick"] === "自动拾取") { - dispatcher.addTimer(new RealtimeTimer("AutoPick"); + dispatcher.addTimer(new RealtimeTimer("AutoPick")); } else if (setting_msg["mode_pick"] === "强制拾取") { dispatcher.addTimer(new RealtimeTimer("AutoPick", {"forceInteraction": true})); } // 刷取禽肉上限 - if (setting_msg["check_upper_limit"]) { - upper_one = 0; - upper_two = 0; - upper_three = 0; - } + // if (setting_msg["check_upper_limit"]) {} + upper_one = 0; + upper_two = 0; + upper_three = 0; // 输出JS脚本配置 log.info(`下落路线: ${setting_msg["check_descend"] ? "禁用": "启用"}`); log.info(`战斗路线: ${setting_msg["check_fight"] ? "禁用": "启用"}`); @@ -241,7 +240,7 @@ } // 执行任务 - run_file(pathing_list[i]); + await run_file(pathing_list[i]); // 禽肉上限判定 if (setting_msg["check_upper_limit"]) { for (const [key, value] of Object.entries(path_msg["objects"])) { diff --git a/repo/js/AllFowlTeyvat/manifest.json b/repo/js/AllFowlTeyvat/manifest.json index f6985a0b..f6a9ac0e 100644 --- a/repo/js/AllFowlTeyvat/manifest.json +++ b/repo/js/AllFowlTeyvat/manifest.json @@ -1,9 +1,9 @@ { "manifest_version": 1, "name": "禽肉全收集(提瓦特)", - "version": "1.0", + "version": "1.1", "bgi_version": "0.43.1", - "description": "脚本名称:全禽肉收集(提瓦特)\n功能描述:多种形式的提瓦特禽肉采集(下落攻击、战斗)\n核心功能------------------------------>\n1.刷取禽肉上限(目前路线不足)\n2.支持自行启用(禁用)下落(战斗)路线\n3.支持选择刷取鸟类(1禽肉、2禽肉、3禽肉)\n4.内置了4点的空月祝福检测(默认启用)\n注意事项------------------------------>\n1.包含下落路线时行走位建议角色为绮良良或埃洛伊(天赋不易惊动小动物)\n2.内置的空月祝福领取逻辑与JS脚本:提瓦特自动钓鱼(全流程+自选)一致\n---------------------------------------->\n作者:提瓦特钓鱼玳师\n脚本反馈邮箱:hijiwos@hotmail.com", + "description": "脚本名称:禽肉全收集(提瓦特)\n功能描述:多种形式的提瓦特禽肉采集(下落攻击、战斗)\n核心功能------------------------------>\n1.刷取禽肉上限(目前路线不足)\n2.支持自行启用(禁用)下落(战斗)路线\n3.支持选择刷取鸟类(1禽肉、2禽肉、3禽肉)\n4.内置了4点的空月祝福检测(默认启用)\n注意事项------------------------------>\n1.包含下落路线时行走位建议角色为绮良良或埃洛伊(天赋不易惊动小动物)\n2.内置的空月祝福领取逻辑与JS脚本:提瓦特自动钓鱼(全流程+自选)一致\n---------------------------------------->\n作者:提瓦特钓鱼玳师\n脚本反馈邮箱:hijiwos@hotmail.com", "authors": [ { "name": "提瓦特钓鱼玳师"