mirror of
https://github.com/babalae/bettergi-scripts-list.git
synced 2026-04-17 21:29:13 +08:00
- 修复了order变量解析时缺少空字符串转换的问题 - 添加了物品名称到秘境名称的映射查询功能 - 实现了域名临时变量获取和周日选择值更新逻辑 - 增加了输入错误时的异常处理机制 - 优化了秘境名称不存在时的错误提示信息
125 lines
4.5 KiB
JavaScript
125 lines
4.5 KiB
JavaScript
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()
|