Files
bettergi-scripts-list/repo/js/AutoPlanDomain/main.js
yan e2d976765e feat(config): 添加用户UID配置并优化秘境顺序列表初始化逻辑
- 在配置文件中添加用户UID字段用于个性化配置
- 将秘境顺序列表从数组改为Set以避免重复数据
- 实现基于UID的配置读取功能
- 添加配置文件解析逻辑支持多用户配置
- 修改返回逻辑将Set转换为数组确保兼容性
- 更新错误检查条件适配新的数据结构
2026-02-08 14:09:07 +08:00

159 lines
6.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import {config, initConfig, initSettings} from './config/config';
/**
* 自动执行秘境任务的异步函数
* @param {Object} autoFight - 包含秘境自动配置参数的对象
* @returns {Promise<void>} - 执行完成后返回的Promise
*/
async function autoDomain(autoFight) {
// 创建秘境参数对象初始化值为0
let domainParam = new AutoDomainParam(0);
//秘境名称
domainParam.DomainName = autoFight.domainName || domainParam.DomainName;
//队伍名称
domainParam.PartyName = autoFight.partyName || domainParam.PartyName;
//周日|限时选择的值
domainParam.SundaySelectedValue = autoFight.sundaySelectedValue || domainParam.SundaySelectedValue;
//副本轮数
domainParam.DomainRoundNum = autoFight.DomainRoundNum || domainParam.DomainRoundNum;
await dispatcher.RunAutoDomainTask(domainParam);
}
/**
* 自动执行秘境任务列表处理函数
* @param {Array} autoDomainOrderList - 包含秘境自动配置的数组
*/
async function autoDomainList(autoDomainOrderList) {
//计划执行
for (const item of autoDomainOrderList) {
await autoDomain(item.autoFight);
}
}
/**
* 初始化秘境顺序列表
* @param {string} domainConfig - 输入的字符串,包含秘境顺序信息
* @returns {Array} 返回处理后的秘境顺序列表
*/
function initDomainOrderList(domainConfig) {
const autoFightOrderSet = new Set() // 存储秘境顺序列表的数组
/* let te = {
order: 1, // 顺序值
autoFight: {
domainName: undefined,//秘境名称
partyName: undefined,//队伍名称
sundaySelectedValue: undefined,//周日|限时选择的值
DomainRoundNum: undefined,//副本轮数
} // 秘境信息对象
}*/
const uid = undefined
if (uid) {
const configAutoFightOrderMap = JSON.parse(file.readTextSync(config.path.domainConfig)) || new Map()
const uidConfigList = configAutoFightOrderMap.get(uid) || [];
if (uidConfigList?.length > 0) {
uidConfigList.forEach(item => {
// 将秘境顺序对象添加到列表中
autoFightOrderSet.add(item)
})
}
}
if (domainConfig) {
// 处理输入字符串:去除首尾空格,将中文逗号替换为英文逗号,然后按逗号分割
domainConfig.trim().replaceAll('', ',').split(",").forEach(
item => {
// 将当前项按"|"分割成数组
let arr = item.split("|")
// 创建秘境信息对象
let autoFight = {
domainName: undefined,//秘境名称
partyName: undefined,//队伍名称
sundaySelectedValue: undefined,//周日|限时选择的值
DomainRoundNum: undefined,//副本轮数
}
let partyName = arr[0];
let domainName = arr[1];
let domainRoundNum = arr[2];
let sundaySelectedValue = arr[3];
let order = (() => {
const rawOrder = arr[4]; // 获取原始值
if (rawOrder == null || String(rawOrder).trim() === "") {
return 0; // 若为空或无效值,默认返回 0
}
const parsedOrder = parseInt(String(rawOrder).trim(), 10); // 转换为整数
return isNaN(parsedOrder) ? 0 : parsedOrder; // 若转换失败,返回默认值 0
})();
if (!config.domainNames.has(domainName)) {
//秘境名称没有记录 查询是否是物品名称
if (config.itemNames.has(domainName)) {
const domainNameTemp = config.domainItemsMap.get(domainName);
if (!domainNameTemp) {
throw new Error(`${domainName} 输入错误`);
}
const domainSelectedValue = parseInt(config.domainOrderMap.get(domainName) + "");
sundaySelectedValue = domainSelectedValue
domainName = domainNameTemp
} else {
throw new Error(`${domainName} 输入错误`);
}
}
// 设置秘境信息的各个属性
autoFight.partyName = partyName // 队伍名称
autoFight.domainName = domainName // 秘境名称
autoFight.DomainRoundNum = domainRoundNum // 副本轮数
autoFight.sundaySelectedValue = sundaySelectedValue // 周日|限时选择的值
// 创建秘境顺序对象
let autoFightOrder = {
order: order, // 顺序值
autoFight: autoFight // 秘境信息对象
}
// 将秘境顺序对象添加到列表中
autoFightOrderSet.add(autoFightOrder)
// autoFightOrderSet.push(autoFightOrder)
}
)
}
// 检查是否已配置秘境
if (autoFightOrderSet.length <= 0) {
throw new Error("请先配置秘境配置");
}
// 返回处理后的秘境顺序列表
return Array.from(autoFightOrderSet);
}
/**
* 初始化函数
* 该函数用于执行初始化操作使用async/await处理异步操作
*/
async function init() {
// 调用initConfig函数并等待其完成
// 这是一个异步初始化配置的步骤
await initSettings()
await initConfig();
}
/**
* 主函数,用于执行秘境自动刷取任务
* @async
*/
async function main() {
// 初始化配置
await init();
// 获取秘境配置
let domainConfig = config.domain.config;
//"队伍名称|秘境名称/刷取物品名称|刷几轮|限时/周日|执行顺序,..."
const autoFightOrderList = initDomainOrderList(domainConfig);
autoFightOrderList.sort((a, b) => b.order - a.order)
await autoDomainList(autoFightOrderList);
}
await main()