JS脚本:打牌一条龙2.0,支持切换卡组重新挑战 (#1628)

* Update settings.json

* Update manifest.json

* Update main.js

* Add files via upload
This commit is contained in:
5117600049
2025-08-18 12:46:38 +08:00
committed by GitHub
parent df2323ae13
commit 7cfad0fa8b
7 changed files with 102 additions and 14 deletions

View File

@@ -0,0 +1 @@
// 请复制对应的卡牌策略,否则执行默认配置

View File

@@ -0,0 +1 @@
// 请复制对应的卡牌策略,否则执行默认配置

View File

@@ -0,0 +1 @@
// 请复制对应的卡牌策略,否则执行默认配置

View File

@@ -0,0 +1,8 @@
脚本兼容绝大部分的行走角色,一般不需要切换专门的队伍,可以自行测试。
2.0版本之后,支持挑战失败更换卡牌重新挑战。把卡牌策略文本复制到脚本目录的文件中即可。
举一个例子,我最常用的卡牌策略是雷柯刻,这个卡组在我游戏中的名字是"优先卡组",那么我会在 js 自定义设置中输入这个名字之后我会打开脚本目录将这个卡牌策略复制到脚本的1号卡牌策略.txt文件中之后的以此类推。
密码 : BugGI

View File

@@ -34,12 +34,43 @@ async function switchCardTeam(Name) {
}
}
async function runCardStrategyFromFolder(folderName) {
try {
// 构建策略文件路径
const strategyFilePath = `${folderName}.txt`;
// 读取策略文件内容
const strategyContent = await file.readText(strategyFilePath);
// 检查策略内容是否为空
if (!strategyContent || strategyContent.trim() === '') {
log.error('策略文件内容为空');
return false;
}
log.info(`开始执行 ${folderName} `);
// 执行策略
await dispatcher.runTask(new SoloTask("AutoGeniusInvokation", {
strategy: strategyContent
}));
return true;
} catch (error) {
log.error(`执行策略失败: ${error},默认使用独立任务中的设置`);
return false;
}
}
(async function () {
// 存储挑战玩家信息
let textArray = [];
let skipNum = 0;
let teamName = settings.partyName1;
let folderName = "1号卡牌策略";
/**
* 判断任务是否已刷新
@@ -153,7 +184,7 @@ async function isTaskRefreshed(filePath, options = {}) {
return true;
} else {
notification.send(`七圣召唤七日历练未刷新,冷却还有${((nowTime - lastTime)/3600).toFixed(1)}小时`);
log.info(`七圣召唤七日历练未刷新`);
return false;
}
@@ -361,6 +392,26 @@ async function captureAndStoreTexts() {
await sleep(1000);
}
// 计算两个字符串的相似度(允许最多一个字的差异)
function isTextMatch(target, source) {
// 如果完全匹配直接返回true
if (target === source) return true;
// 如果长度不同,直接不匹配
if (target.length !== source.length) return false;
let diffCount = 0;
for (let i = 0; i < target.length; i++) {
if (target[i] !== source[i]) {
diffCount++;
if (diffCount > 1) {
return false;
}
}
}
return true;
}
//检查是否有对应的挑战对手
async function searchAndClickTexts() {
middleButtonClick();
@@ -388,12 +439,11 @@ async function searchAndClickTexts() {
const resText = res.text.trim();
// 在存储的文本数组中查找匹配项
const index = textArray.findIndex((item) => item.text === resText);
const index = textArray.findIndex((item) => isTextMatch(item.text, resText));
if (index !== -1) {
// 找到匹配项,点击对应位置
log.info(`找到匹配文本: ${resText}`);
log.info(`找到匹配文本: ${resText} (原存储文本: ${textArray[index].text})`);
skipNum = 0;
// 点击存储的位置
await keyMouseScript.runFile(`assets/ALT点击.json`);
@@ -473,12 +523,10 @@ async function Playcards() {
await autoConversation();
log.info("对话完成");
await sleep(1500);
if (settings.partyName != undefined) {
await switchCardTeam(settings.partyName);
}
await switchCardTeam(teamName);
click(1610, 900); //点击挑战
await waitOrCheckMaxCoin(8000);
await dispatcher.runTask(new SoloTask("AutoGeniusInvokation"));
await runCardStrategyFromFolder(folderName);
await sleep(3000);
await checkChallengeResults();
await sleep(1000);
@@ -632,9 +680,23 @@ if( await isTaskRefreshed("assets/weekly.txt", {
weeklyDay: 1, // 周一
weeklyHour: 4 // 凌晨4点
})){
if(settings.partyName1) await main();
teamName = settings.partyName2;
folderName = "2号卡牌策略";
if(textArray.length != 0 && settings.partyName2){
log.info(`尝试2号卡牌策略`);
await main();
}
teamName = settings.partyName3;
folderName = "3号卡牌策略";
if(textArray.length != 0 && settings.partyName3){
log.info(`尝试3号卡牌策略`);
await main();
}
}
})();

View File

@@ -1,8 +1,8 @@
{
"manifest_version": 1,
"name": "打牌一条龙",
"version": "1.9.8",
"description": "已添加 CD 管理执行完后会检测是否全部挑战成功之后会记录本次时间进入CD如果想要重置请前往assets/weekly.txt中删除内容",
"version": "2.0",
"description": "详见README.md",
"authors": [
{
"name": "柒叶子",

View File

@@ -1,7 +1,22 @@
[
{
"name": "partyName",
"name": "partyName1",
"type": "input-text",
"label": "设置要使用的七圣召唤队伍名称"
"label": "请输入游戏中的卡组名称(1号卡牌策略)"
},
{
"name": "partyName2",
"type": "input-text",
"label": "请输入游戏中的卡组名称(2号卡牌策略)"
},
{
"name": "partyName3",
"type": "input-text",
"label": "请输入游戏中的卡组名称(3号卡牌策略)"
},
{
"name": "passWord",
"type": "input-text",
"label": "启动密码在README.md"
}
]
]