mirror of
https://github.com/babalae/bettergi-scripts-list.git
synced 2026-03-16 03:33:25 +08:00
feat: 千星奇域支持多用户模式 (#2680)
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { __name } from "./rolldown-runtime.js";
|
||||
|
||||
//#region node_modules/.pnpm/@bettergi+utils@0.1.25/node_modules/@bettergi/utils/dist/workflow.js
|
||||
//#region node_modules/.pnpm/@bettergi+utils@0.1.27/node_modules/@bettergi/utils/dist/workflow.js
|
||||
/** 默认最大重试次数 */
|
||||
const defaultMaxAttempts = 5;
|
||||
/** 默认重试间隔(毫秒) */
|
||||
@@ -61,7 +61,7 @@ const waitForRegionDisappear = async (regionProvider, retryAction, options) => {
|
||||
};
|
||||
|
||||
//#endregion
|
||||
//#region node_modules/.pnpm/@bettergi+utils@0.1.25/node_modules/@bettergi/utils/dist/asserts.js
|
||||
//#region node_modules/.pnpm/@bettergi+utils@0.1.27/node_modules/@bettergi/utils/dist/asserts.js
|
||||
/**
|
||||
* 断言某个区域即将出现,否则抛出异常
|
||||
* @param regionProvider 返回区域的函数
|
||||
@@ -85,7 +85,7 @@ const assertRegionDisappearing = async (regionProvider, message, retryAction, op
|
||||
};
|
||||
|
||||
//#endregion
|
||||
//#region node_modules/.pnpm/@bettergi+utils@0.1.25/node_modules/@bettergi/utils/dist/exception.js
|
||||
//#region node_modules/.pnpm/@bettergi+utils@0.1.27/node_modules/@bettergi/utils/dist/exception.js
|
||||
/**
|
||||
* 获取错误信息字符串
|
||||
* @param err 异常对象
|
||||
@@ -104,7 +104,7 @@ const isHostException = (err) => {
|
||||
};
|
||||
|
||||
//#endregion
|
||||
//#region node_modules/.pnpm/@bettergi+utils@0.1.25/node_modules/@bettergi/utils/dist/mouse.js
|
||||
//#region node_modules/.pnpm/@bettergi+utils@0.1.27/node_modules/@bettergi/utils/dist/mouse.js
|
||||
/** 使用回放脚本模拟滚动 */
|
||||
const simulateScroll = async (wheelDelta, times) => {
|
||||
const script = {
|
||||
@@ -144,7 +144,7 @@ const mouseScrollDownLines = (lines, lineHeight = 175) => {
|
||||
};
|
||||
|
||||
//#endregion
|
||||
//#region node_modules/.pnpm/@bettergi+utils@0.1.25/node_modules/@bettergi/utils/dist/ocr.js
|
||||
//#region node_modules/.pnpm/@bettergi+utils@0.1.27/node_modules/@bettergi/utils/dist/ocr.js
|
||||
/**
|
||||
* 在指定区域内搜索图片
|
||||
* @param image 图片路径 或 图片Mat
|
||||
@@ -269,9 +269,14 @@ const findWithinListView = async (condition, listView, retryOptions, sampling, t
|
||||
);
|
||||
if (targetRegion?.isExist()) {
|
||||
const { item1, item2 } = targetRegion.convertPositionToGameCaptureRegion(0, 0);
|
||||
const scale = genshin.width / 1920;
|
||||
const [x$1, y$1] = [
|
||||
Math.floor(scale <= 1 ? item1 : item1 / scale),
|
||||
Math.floor(scale <= 1 ? item2 : item2 / scale),
|
||||
];
|
||||
Object.assign(targetRegion, {
|
||||
x: item1,
|
||||
y: item2,
|
||||
x: x$1,
|
||||
y: y$1,
|
||||
});
|
||||
return targetRegion;
|
||||
}
|
||||
@@ -312,7 +317,7 @@ const findTextWithinListView = async (
|
||||
};
|
||||
|
||||
//#endregion
|
||||
//#region node_modules/.pnpm/@bettergi+utils@0.1.25/node_modules/@bettergi/utils/dist/misc.js
|
||||
//#region node_modules/.pnpm/@bettergi+utils@0.1.27/node_modules/@bettergi/utils/dist/misc.js
|
||||
/**
|
||||
* 深度合并多个对象
|
||||
* @param objects 多个对象
|
||||
@@ -330,7 +335,7 @@ const deepMerge = (...objects) => {
|
||||
};
|
||||
|
||||
//#endregion
|
||||
//#region node_modules/.pnpm/@bettergi+utils@0.1.25/node_modules/@bettergi/utils/dist/time.js
|
||||
//#region node_modules/.pnpm/@bettergi+utils@0.1.27/node_modules/@bettergi/utils/dist/time.js
|
||||
/**
|
||||
* 获取下一个(含当日)凌晨4点的时间
|
||||
*/
|
||||
@@ -388,7 +393,7 @@ const formatDurationAsReadable = (duration) => {
|
||||
};
|
||||
|
||||
//#endregion
|
||||
//#region node_modules/.pnpm/@bettergi+utils@0.1.25/node_modules/@bettergi/utils/dist/progress.js
|
||||
//#region node_modules/.pnpm/@bettergi+utils@0.1.27/node_modules/@bettergi/utils/dist/progress.js
|
||||
/** 进度追踪器 */
|
||||
var ProgressTracker = class {
|
||||
total = 0;
|
||||
@@ -461,7 +466,7 @@ var ProgressTracker = class {
|
||||
};
|
||||
|
||||
//#endregion
|
||||
//#region node_modules/.pnpm/@bettergi+utils@0.1.25/node_modules/@bettergi/utils/dist/store.js
|
||||
//#region node_modules/.pnpm/@bettergi+utils@0.1.27/node_modules/@bettergi/utils/dist/store.js
|
||||
/**
|
||||
* 创建一个持久化存储对象,用于管理应用状态数据
|
||||
* 该函数会创建一个代理对象,对该对象的所有属性的修改都会自动同步到相应的JSON文件(脚本的 `store` 目录下)中。
|
||||
|
||||
@@ -37,6 +37,10 @@ const findCloseDialog = () => {
|
||||
const clickToContinue = () => {
|
||||
click(900, 1050);
|
||||
};
|
||||
//! 查找UID文本
|
||||
const findUidText = () => {
|
||||
return findTextWithinBounds("UID", 1620, 1050, 300, 30, { contains: true });
|
||||
};
|
||||
//! 查找元素视野按钮(判断处于大世界条件一)
|
||||
const findElementViewBtn = () => {
|
||||
const iro = findImageWithinBounds("assets/UI_BtnIcon_ElementView.png", 0, 0, 500, 80, {
|
||||
@@ -256,4 +260,5 @@ export {
|
||||
findSearchWonderlandThrottleMsg,
|
||||
findSkipLevelUpMsg,
|
||||
findStageEscBtn,
|
||||
findUidText,
|
||||
};
|
||||
|
||||
@@ -1,16 +1,23 @@
|
||||
import { __name } from "../rolldown-runtime.js";
|
||||
import { getNextDay4AM, getNextMonday4AM, useStoreWithDefaults } from "../@bettergi+utils.js";
|
||||
import { findUidText } from "./regions.js";
|
||||
|
||||
//#region src/constants/store.ts
|
||||
//! 脚本数据存储
|
||||
const store = useStoreWithDefaults("data", {
|
||||
weekly: {
|
||||
expGained: 0,
|
||||
attempts: 0,
|
||||
},
|
||||
daily: { attempts: 0 },
|
||||
nextWeek: getNextMonday4AM().getTime(),
|
||||
nextDay: getNextDay4AM().getTime(),
|
||||
});
|
||||
const store = (() => {
|
||||
const uid = findUidText()?.text.replace(/\D/g, "");
|
||||
if (!uid) throw new Error("创建用户数据存储失败: 无法识别UID");
|
||||
return useStoreWithDefaults(uid, {
|
||||
uid,
|
||||
weekly: {
|
||||
expGained: 0,
|
||||
attempts: 0,
|
||||
},
|
||||
daily: { attempts: 0 },
|
||||
nextWeek: getNextMonday4AM().getTime(),
|
||||
nextDay: getNextDay4AM().getTime(),
|
||||
});
|
||||
})();
|
||||
|
||||
//#endregion
|
||||
export { store };
|
||||
|
||||
@@ -63,7 +63,7 @@ const execDailyTask = async () => {
|
||||
for (const room of userConfig.dailyRooms) {
|
||||
//! 离开当前所在房间(如果存在)
|
||||
await leaveRoom();
|
||||
tracker.print(`开始当日第 ${store.daily.attempts + 1} 次奇域挑战...`);
|
||||
tracker.print(`开始 ${store.uid} 当日第 ${store.daily.attempts + 1} 次奇域挑战...`);
|
||||
//! 进入房间
|
||||
await enterRoom(room);
|
||||
//! 游玩关卡
|
||||
|
||||
@@ -50,7 +50,7 @@ const execWeeklyTask = async () => {
|
||||
//! 迭代尝试
|
||||
for (let i = 0; i < attempts; i++)
|
||||
try {
|
||||
tracker.print(`开始本周第 ${store.weekly.attempts + 1} 次奇域挑战...`);
|
||||
tracker.print(`开始 ${store.uid} 本周第 ${store.weekly.attempts + 1} 次奇域挑战...`);
|
||||
//! 删除关卡存档
|
||||
await deleteStageSave();
|
||||
//! 进入房间
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"manifest_version": 1,
|
||||
"name": "千星奇域·每周经验刷取(回放通关版)",
|
||||
"version": "0.1.8",
|
||||
"version": "0.1.9",
|
||||
"bgi_version": "0.54.0",
|
||||
"description": "千星奇域·每周经验刷取(回放通关版)",
|
||||
"authors": [
|
||||
|
||||
Reference in New Issue
Block a user