mirror of
https://github.com/babalae/bettergi-scripts-list.git
synced 2026-03-20 04:10:00 +08:00
JS脚本 养成一条龙更新 : 允许计划刷取三种天赋书和武器材料、优化了通知和检测流程 (#2017)
* Update main.js * Update manifest.json * Update settings.json
This commit is contained in:
@@ -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(`没有选择挑战首领,跳过执行`);
|
||||
|
||||
|
||||
})();
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"manifest_version": 1,
|
||||
"name": "角色养成一条龙",
|
||||
"version": "1.3.1",
|
||||
"version": "1.4",
|
||||
"description": "详见readme.md",
|
||||
"authors": [
|
||||
{
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user