Files
bettergi-scripts-list/repo/js/AutoSereniteaPot/main.js

145 lines
4.3 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.

async function main() {
// 先提示一下一般都需要配置移动路线
if (!settings.route) {
log.warn("当前未配置进入尘歌壶以后的路线,脚本可能无法正常运行");
}
// 打开背包
keyPress("B");
await sleep(1000);
// 点击小道具选项卡(1048,50)
click(1048, 50);
await sleep(1000);
// 查找并点击尘歌壶
await findSereniteaPot();
await sleep(1000);
// 进入尘歌壶,等待加载动画
keyPress("F");
// 先等待5秒应该不会比这快
await sleep(5000);
// 等待传送完成
let isEntering = true;
while (isEntering) {
// 截图检测传送状态
let screen = captureGameRegion();
let targetRegion = screen.DeriveCrop(85, 1025, 69, 28);
let ocrRo = RecognitionObject.Ocr(0, 0, targetRegion.Width, targetRegion.Height);
let ocrResult = targetRegion.find(ocrRo);
if (ocrResult.Text.toLowerCase().includes("enter")) {
isEntering = false;
}
await sleep(1000);
}
// 进入尘歌壶以后等待1秒
await sleep(1000);
// 移动到阿圆
await moveToAYuan();
log.info("开始领取好感度以及洞天宝钱");
// 按下 F
keyPress("F");
await sleep(2000);
// 点击屏幕中间跳过对话
click(960, 540);
await sleep(2000);
// 点击“信任等阶”
click(1370, 432)
await sleep(1000);
// 领取好感
click(1810, 715)
await sleep(1000);
// 如果弹出“洞天赠礼”,把它关闭
click(1346, 300)
await sleep(1000);
// 领取洞天宝钱
click(1080, 929)
await sleep(1000);
// 如果弹出“洞天财瓮”,把它关闭
click(1346, 300)
await sleep(1000);
// 点击右上角的X
click(1864, 47)
await sleep(3000);
// 点击“再见。”
click(1360, 800)
await sleep(1000);
// 点击屏幕中间跳过对话
click(960, 540);
}
async function findSereniteaPot() {
let currentX = 178; // 起始X坐标
let searchCount = 0; // 添加查找次数计数器
const MAX_SEARCH_COUNT = 5; // 最大查找次数
while (searchCount < MAX_SEARCH_COUNT) {
searchCount++;
// 点击当前坐标的小道具
click(currentX, 188);
await sleep(1000);
// 获取游戏区域截图
let screen = captureGameRegion();
// 根据指定区域进行剪裁
let targetRegion = screen.DeriveCrop(1307, 119, 493, 55);
// 使用OCR识别
let ocrRo = RecognitionObject.Ocr(0, 0, targetRegion.Width, targetRegion.Height);
let ocrResult = targetRegion.find(ocrRo);
if (!ocrResult.isEmpty() && ocrResult.Text.includes("尘歌壶")) {
// 点击指定坐标
click(1690, 1020);
await sleep(1000);
// 检查一下背包页面是否退出了,有可能当前角色状态没法放置尘歌壶,直接再判断一次截图区域文本是不是尘歌壶就行
let screen = captureGameRegion();
// 根据指定区域进行剪裁
let targetRegion = screen.DeriveCrop(1307, 119, 493, 55);
let ocrRo = RecognitionObject.Ocr(0, 0, targetRegion.Width, targetRegion.Height);
let ocrResult = targetRegion.find(ocrRo);
if (!ocrResult.isEmpty() && ocrResult.Text.includes("尘歌壶")) {
throw new Error("当前无法放置尘歌壶,请检查具体原因");
}
return;
} else {
currentX += 145; // 向右移动145像素查找下一个格子的小道具
await sleep(100);
}
}
throw new Error(`查找尘歌壶次数超过${MAX_SEARCH_COUNT}次,请检查背包是否存在尘歌壶`);
}
async function moveToAYuan() {
const userRoute = settings.route;
if (!userRoute) {
return
}
// 解析路径配置
const routes = userRoute.split(',').map(route => route.trim());
for (const route of routes) {
const [direction, time] = route.split(' ');
if (!direction || !time) {
log.error("路径格式错误: {route}", route);
continue;
}
// 执行移动
keyDown(direction);
await sleep(parseInt(time));
keyUp(direction);
await sleep(500);
}
}
main();