Files
bettergi-scripts-list/repo/js/AutoPlanDomain/main.js
yan f4266d98ea fix(AutoPlanDomain): 解决秘境任务执行中的字符串转数字问题
- 修复了order变量解析时缺少空字符串转换的问题
- 添加了物品名称到秘境名称的映射查询功能
- 实现了域名临时变量获取和周日选择值更新逻辑
- 增加了输入错误时的异常处理机制
- 优化了秘境名称不存在时的错误提示信息
2026-02-08 12:59:12 +08:00

125 lines
4.5 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 autoFightOrderList = [] // 存储秘境顺序列表的数组
// 处理输入字符串:去除首尾空格,将中文逗号替换为英文逗号,然后按逗号分割
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 = parseInt(arr[4]+"");
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 // 秘境信息对象
}
// 将秘境顺序对象添加到列表中
autoFightOrderList.push(autoFightOrder)
}
)
// 返回处理后的秘境顺序列表
return autoFightOrderList;
}
/**
* 初始化函数
* 该函数用于执行初始化操作使用async/await处理异步操作
*/
async function init() {
// 调用initConfig函数并等待其完成
// 这是一个异步初始化配置的步骤
await initSettings()
await initConfig();
}
/**
* 主函数,用于执行秘境自动刷取任务
* @async
*/
async function main() {
// 初始化配置
await init();
// 获取秘境配置
let domainConfig = config.domain.config;
// 检查是否已配置秘境
if (!domainConfig) {
throw new Error("请先配置秘境配置");
}
//"队伍名称|秘境名称/刷取物品名称|刷几轮|限时/周日|执行顺序,..."
const autoFightOrderList = initDomainOrderList(domainConfig);
autoFightOrderList.sort((a, b) => b.order - a.order)
await autoDomainList(autoFightOrderList);
}
await main()