diff --git a/repo/js/角色养成一条龙/main.js b/repo/js/角色养成一条龙/main.js index 621f0e1e2..62399bdd8 100644 --- a/repo/js/角色养成一条龙/main.js +++ b/repo/js/角色养成一条龙/main.js @@ -248,13 +248,13 @@ function positiveIntegerJudgment(testNumber) { async function queryStaminaValue() { try { await genshin.returnMainUi(); - await sleep(500); + await sleep(2500); keyPress("F1"); - await sleep(1600); + await sleep(1800); click(300, 540); - await sleep(400); + await sleep(500); click(1570, 203); - await sleep(700); + await sleep(800); let captureRegion = captureGameRegion(); let stamina = captureRegion.find(RecognitionObject.ocr(1580, 20, 210, 55)); log.info(`OCR原始文本:${stamina.text}`); @@ -769,14 +769,16 @@ async function getWeaponMaterialCount(materialName) { //去刷天赋书 async function getTalentBook(materialName) { while(1){ -let afterStamina = await queryStaminaValue(); log.info(`准备刷取天赋书,开始检查体力`); +let afterStamina = 0; +let res = 9999999; +if(skipCheckStamina)afterStamina = await queryStaminaValue(); +if(afterStamina< 20) skipCheckStamina = 0; if ( afterStamina >= 20 ){ try { log.info(`体力充足,开始检测物品数量`); - const bookCounts = await getMaterialCount(materialName); - let res = 0.12*(bookRequireCounts[0]-bookCounts[0])+0.36*(bookRequireCounts[1]-bookCounts[1])+(bookRequireCounts[2]-bookCounts[2]); + res = 0.12*(bookRequireCounts[0]-bookCounts[0])+0.36*(bookRequireCounts[1]-bookCounts[1])+(bookRequireCounts[2]-bookCounts[2]); if(res>0){ log.info(`${materialName}天赋书大约还差${res.toFixed(2)}本紫色品质没有刷取`); await gotoAutoDomain(); @@ -789,8 +791,10 @@ log.info(`准备刷取天赋书,开始检查体力`); catch (error) { notification.send(`${materialName}天赋书刷取失败,错误信息: ${error}`); await genshin.tp(2297.6201171875,-824.5869140625);//传送到神像回血 - const bookCounts = await getMaterialCount(materialName); - let res = 0.12*(bookRequireCounts[0]-bookCounts[0])+0.36*(bookRequireCounts[1]-bookCounts[1])+(bookRequireCounts[2]-bookCounts[2]); + if (error.message != '秘境未在开启时间,跳过执行'){ + let bookCounts = await getMaterialCount(materialName); + res = 0.12*(bookRequireCounts[0]-bookCounts[0])+0.36*(bookRequireCounts[1]-bookCounts[1])+(bookRequireCounts[2]-bookCounts[2]); + } notification.send(`${materialName}天赋书大约还差${res.toFixed(2)}本紫色品质没有刷取`); return; } @@ -809,12 +813,15 @@ log.info(`准备刷取天赋书,开始检查体力`); async function getWeaponMaterial(materialName) { while(1){ log.info(`准备刷取武器材料,开始检查体力`); -let afterStamina = await queryStaminaValue(); +let afterStamina = 0; +let res = 99999999; +if(skipCheckStamina)afterStamina = await queryStaminaValue(); +if(afterStamina< 20) skipCheckStamina = 0; if ( afterStamina >= 20 ){ try { log.info(`体力充足,开始检测物品数量`); const weaponCounts = await getWeaponMaterialCount(materialName); - let res = 0.12*(weaponRequireCounts[0]-weaponCounts.green)+0.36*(weaponRequireCounts[1]-weaponCounts.blue)+(weaponRequireCounts[2]-weaponCounts.purple)+3*(weaponRequireCounts[3]-weaponCounts.gold); + res = 0.12*(weaponRequireCounts[0]-weaponCounts.green)+0.36*(weaponRequireCounts[1]-weaponCounts.blue)+(weaponRequireCounts[2]-weaponCounts.purple)+3*(weaponRequireCounts[3]-weaponCounts.gold); if(res>0){ log.info(`武器材料${materialName}大约还差${res.toFixed(2)}个紫色品质没有刷取`); await gotoAutoDomain("weaponDomain"); @@ -827,9 +834,11 @@ let afterStamina = await queryStaminaValue(); catch (error) { notification.send(`武器材料${materialName}刷取失败,错误信息: ${error}`); await genshin.tp(2297.6201171875,-824.5869140625);//传送到神像回血 + if (error.message != '秘境未在开启时间,跳过执行'){ const weaponCounts = await getWeaponMaterialCount(materialName); - let res = 0.12*(weaponRequireCounts[0]-weaponCounts.green)+0.36*(weaponRequireCounts[1]-weaponCounts.blue)+(weaponRequireCounts[2]-weaponCounts.purple)+3*(weaponRequireCounts[3]-weaponCounts.gold); - notification.send(`武器材料${materialName}大约还差${res.toFixed(2)}个紫色品质没有刷取`); + res = 0.12*(weaponRequireCounts[0]-weaponCounts.green)+0.36*(weaponRequireCounts[1]-weaponCounts.blue)+(weaponRequireCounts[2]-weaponCounts.purple)+3*(weaponRequireCounts[3]-weaponCounts.gold); + } + notification.send(`武器材料${materialName}大约还差${res.toFixed(2)}个紫色品质没有刷取`); return; } } @@ -846,13 +855,15 @@ let afterStamina = await queryStaminaValue(); async function getBossMaterial(bossName) { while(1){ log.info(`准备刷取 boss 材料,开始检查体力`); -let afterStamina = await queryStaminaValue(); +let afterStamina = 0; +let res = 99999999; +if(skipCheckStamina)afterStamina = await queryStaminaValue(); +if(afterStamina< 20) skipCheckStamina = 0; if ( afterStamina >= 40 ){ try { log.info(`体力充足,开始检测物品数量`); const bossCounts = await getBossMaterialCount(bossName); - - let res = settings.bossRequireCounts-bossCounts; + res = settings.bossRequireCounts-bossCounts; if(res>0){ notification.send(`${bossName}还差${res}个材料没有刷取`); if(!settings.teamName) throw new Error('未输入队伍名称'); @@ -898,7 +909,10 @@ let afterStamina = await queryStaminaValue(); } } else{ - notification.send(`体力值为${afterStamina},可能无法刷取首领材料${bossName}`); + log.info(`体力值为${afterStamina},可能无法刷取首领材料${bossName}`); + const bossCounts = await getBossMaterialCount(bossName); + let res = settings.bossRequireCounts-bossCounts; + notification.send(`${bossName}还差${res}个材料没有刷取`); return; } } @@ -937,26 +951,67 @@ function parseAndValidateCounts(input, expectedCount) { } let weaponRequireCounts; +let weaponRequireCounts1; +let weaponRequireCounts2; let bookRequireCounts; -let stop = 0; +let bookRequireCounts1; +let bookRequireCounts2; +let skipCheckStamina = 1; if(!settings.unfairContractTerms) throw new Error('未签署霸王条款,无法使用'); + if(settings.talentBookName != "无" && settings.talentBookName){ try{ bookRequireCounts = parseAndValidateCounts(settings.talentBookRequireCounts, 3); -log.info(`天赋书方案解析成功: ${bookRequireCounts.join(', ')}`); +log.info(`天赋书1方案解析成功: ${bookRequireCounts.join(', ')}`); await getTalentBook(settings.talentBookName)} catch (error) { notification.send(`${settings.talentBookName}刷取失败,错误信息: ${error}`);} } -else log.info(`没有选择刷取天赋书,跳过执行`); +else log.info(`没有选择刷取天赋书1,跳过执行`); + +if(settings.talentBookName1 != "无" && settings.talentBookName1){ +try{ +bookRequireCounts1 = parseAndValidateCounts(settings.talentBookRequireCounts1, 3); +log.info(`天赋书2方案解析成功: ${bookRequireCounts1.join(', ')}`); +await getTalentBook(settings.talentBookName1)} +catch (error) { notification.send(`${settings.talentBookName1}刷取失败,错误信息: ${error}`);} +} +else log.info(`没有选择刷取天赋书2,跳过执行`); + +if(settings.talentBookName2 != "无" && settings.talentBookName2){ +try{ +bookRequireCounts2 = parseAndValidateCounts(settings.talentBookRequireCounts2, 3); +log.info(`天赋书3方案解析成功: ${bookRequireCounts2.join(', ')}`); +await getTalentBook(settings.talentBookName2)} +catch (error) { notification.send(`${settings.talentBookName2}刷取失败,错误信息: ${error}`);} +} +else log.info(`没有选择刷取天赋书3,跳过执行`); if(settings.weaponName != "无" && settings.weaponName){ try{ weaponRequireCounts = parseAndValidateCounts(settings.weaponMaterialRequireCounts, 4); -log.info(`武器材料方案解析成功: ${weaponRequireCounts.join(', ')}`); +log.info(`武器材料1方案解析成功: ${weaponRequireCounts.join(', ')}`); await getWeaponMaterial(settings.weaponName)} catch (error) { notification.send(`${settings.weaponName}刷取失败,错误信息: ${error}`);} } -else log.info(`没有选择刷取武器材料,跳过执行`); +else log.info(`没有选择刷取武器材料1,跳过执行`); + +if(settings.weaponName1 != "无" && settings.weaponName1){ +try{ +weaponRequireCounts1 = parseAndValidateCounts(settings.weaponMaterialRequireCounts1, 4); +log.info(`武器材料2方案解析成功: ${weaponRequireCounts1.join(', ')}`); +await getWeaponMaterial(settings.weaponName1)} +catch (error) { notification.send(`${settings.weaponName1}刷取失败,错误信息: ${error}`);} +} +else log.info(`没有选择刷取武器材料2,跳过执行`); + +if(settings.weaponName2 != "无" && settings.weaponName2){ +try{ +weaponRequireCounts2 = parseAndValidateCounts(settings.weaponMaterialRequireCounts2, 4); +log.info(`武器材料3方案解析成功: ${weaponRequireCounts2.join(', ')}`); +await getWeaponMaterial(settings.weaponName2)} +catch (error) { notification.send(`${settings.weaponName2}刷取失败,错误信息: ${error}`);} +} +else log.info(`没有选择刷取武器材料3,跳过执行`); if(settings.bossName != "无" && settings.bossName){ try{await getBossMaterial(settings.bossName)} @@ -964,5 +1019,4 @@ catch (error) { notification.send(`${settings.bossName}刷取失败,错误信 } else log.info(`没有选择挑战首领,跳过执行`); - })(); diff --git a/repo/js/角色养成一条龙/manifest.json b/repo/js/角色养成一条龙/manifest.json index 0385f3dec..56338da43 100644 --- a/repo/js/角色养成一条龙/manifest.json +++ b/repo/js/角色养成一条龙/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 1, "name": "角色养成一条龙", - "version": "1.3.1", + "version": "1.4", "description": "详见readme.md", "authors": [ { diff --git a/repo/js/角色养成一条龙/settings.json b/repo/js/角色养成一条龙/settings.json index cff747ddd..2a27e2cbd 100644 --- a/repo/js/角色养成一条龙/settings.json +++ b/repo/js/角色养成一条龙/settings.json @@ -2,7 +2,7 @@ { "name": "talentBookName", "type": "select", - "label": "请选择天赋书类型", + "label": "请选择天赋书1类型", "options": [ "无", "自由", @@ -28,17 +28,83 @@ "浪迹" ] }, - { "name": "talentBookRequireCounts", "type": "input-text", - "label": "天赋书数量,绿-蓝-紫" + "label": "天赋书1数量,绿-蓝-紫" + }, + { + "name": "talentBookName1", + "type": "select", + "label": "请选择天赋书2类型", + "options": [ + "无", + "自由", + "抗争", + "诗文", + "繁荣", + "勤劳", + "黄金", + "浮世", + "风雅", + "天光", + "净言", + "巧思", + "笃行", + "公平", + "正义", + "秩序", + "角逐", + "焚燔", + "纷争", + "月光", + "乐园", + "浪迹" +] + }, + { + "name": "talentBookRequireCounts1", + "type": "input-text", + "label": "天赋书2数量,绿-蓝-紫" + }, + { + "name": "talentBookName2", + "type": "select", + "label": "请选择天赋书3类型", + "options": [ + "无", + "自由", + "抗争", + "诗文", + "繁荣", + "勤劳", + "黄金", + "浮世", + "风雅", + "天光", + "净言", + "巧思", + "笃行", + "公平", + "正义", + "秩序", + "角逐", + "焚燔", + "纷争", + "月光", + "乐园", + "浪迹" +] + }, + { + "name": "talentBookRequireCounts2", + "type": "input-text", + "label": "天赋书3数量,绿-蓝-紫" }, - { "name": "weaponName", "type": "select", - "label": "请选择武器材料类型", + "label": "请选择武器材料1类型", "options": [ "无", "高塔孤王", @@ -67,7 +133,75 @@ { "name": "weaponMaterialRequireCounts", "type": "input-text", - "label": "武器材料数量,绿-蓝-紫-金" + "label": "武器材料1数量,绿-蓝-紫-金" + }, + { + "name": "weaponName1", + "type": "select", + "label": "请选择武器材料2类型", + "options": [ + "无", + "高塔孤王", + "凛风奔狼", + "狮牙斗士", + "孤云寒林", + "雾海云间", + "漆黑陨铁", + "远海夷地", + "鸣神御灵", + "今昔剧话", + "谧林涓露", + "绿洲花园", + "烈日威权", + "幽谷弦音", + "纯圣露滴", + "无垢之海", + "贡祭炽心", + "谵妄圣主", + "神合秘烟", + "奇巧秘器", + "长夜燧火", + "终北遗嗣" +] + }, + { + "name": "weaponMaterialRequireCounts1", + "type": "input-text", + "label": "武器材料2数量,绿-蓝-紫-金" + }, + { + "name": "weaponName2", + "type": "select", + "label": "请选择武器材料3类型", + "options": [ + "无", + "高塔孤王", + "凛风奔狼", + "狮牙斗士", + "孤云寒林", + "雾海云间", + "漆黑陨铁", + "远海夷地", + "鸣神御灵", + "今昔剧话", + "谧林涓露", + "绿洲花园", + "烈日威权", + "幽谷弦音", + "纯圣露滴", + "无垢之海", + "贡祭炽心", + "谵妄圣主", + "神合秘烟", + "奇巧秘器", + "长夜燧火", + "终北遗嗣" +] + }, + { + "name": "weaponMaterialRequireCounts2", + "type": "input-text", + "label": "武器材料3数量,绿-蓝-紫-金" }, { "name": "bossName",