mirror of
https://github.com/babalae/bettergi-scripts-list.git
synced 2026-03-19 03:59:51 +08:00
@@ -313,7 +313,7 @@
|
||||
* @returns {Promise<number[]>} 返回熟练度数组 [当前熟练度, 总熟练度]
|
||||
*/
|
||||
async function check_proficiency(ui="main") {
|
||||
let ocrRo = RecognitionObject.Ocr(0, 0, genshin.width, genshin.height);
|
||||
let ocrRo = RecognitionObject.Ocr(0, 0, 1920, 1080);
|
||||
if (ui === "main") {
|
||||
ocrRo = RecognitionObject.Ocr(1424, 422, 82, 37);
|
||||
} else if (ui === "finish") {
|
||||
@@ -371,7 +371,7 @@
|
||||
*/
|
||||
async function select_food_by_fullname(food_name) {
|
||||
log.info(`在当前页面寻找 ${food_name} ...`);
|
||||
const ocrRo = RecognitionObject.Ocr(0, 0, genshin.width, genshin.height);
|
||||
const ocrRo = RecognitionObject.Ocr(0, 0, 1920, 1080);
|
||||
|
||||
moveMouseTo(1555, 860); // 移走鼠标,防止干扰OCR
|
||||
await sleep(200);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"manifest_version": 1,
|
||||
"name": "一只爱可菲(厨娘版)",
|
||||
"version": "1.3.3",
|
||||
"version": "1.3.4",
|
||||
"bgi_version": "0.45.0",
|
||||
"description": "专精料理制作的爱可菲(自动烹饪及解锁、特殊料理)",
|
||||
"authors": [
|
||||
|
||||
@@ -20,10 +20,10 @@ async function switchToActivityPage(activityName, activityKey, maxOcrCount) {
|
||||
await keyUp(activityKey);
|
||||
|
||||
await sleep(1000);
|
||||
let ocr_x = parseInt(100 * gameWidth / 1920 + '')
|
||||
let ocr_y = parseInt(200 * gameHeight / 1080 + '')
|
||||
let ocr_width = parseInt(450 * gameWidth / 1920 + '')
|
||||
let ocr_hight = parseInt(600 * gameHeight / 1080 + '')
|
||||
let ocr_x = 100;
|
||||
let ocr_y = 200;
|
||||
let ocr_width = 450;
|
||||
let ocr_hight = 600;
|
||||
log.info(`参考值(1920*1080):{"x": 100, "y": 200, "width": 450, "height": 600}`)
|
||||
let ocrRegion = {
|
||||
"x": ocr_x,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "切换活动页面",
|
||||
"version": "1.1.1",
|
||||
"version": "1.1.2",
|
||||
"description": "(需要处于主界面)一个通过 F5 打开活动页面、(鼠标上滑/滚轮滑动)并根据活动名称选择活动的脚本",
|
||||
"settings_ui": "settings.json",
|
||||
"main": "main.js",
|
||||
|
||||
@@ -24,7 +24,7 @@ const ocrRegion3 = { x: 1200, y: 520, width: 300, height: 300 }; // 拾取区
|
||||
// 预定义识别对象
|
||||
const openRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/icon/open.png"));
|
||||
const closeRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/icon/close.png"));
|
||||
const paimonMenuRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/icon/paimon_menu.png"), 0, 0, genshin.width / 3.0, genshin.width / 5.0);
|
||||
const paimonMenuRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/icon/paimon_menu.png"), 0, 0, 640, 216);
|
||||
const boxIconRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/icon/box.png"));
|
||||
const ocrRo1 = RecognitionObject.ocr(ocrRegion1.x, ocrRegion1.y, ocrRegion1.width, ocrRegion1.height);
|
||||
const ocrRo2 = RecognitionObject.ocr(ocrRegion2.x, ocrRegion2.y, ocrRegion2.width, ocrRegion2.height);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"manifest_version": 1,
|
||||
"name": "全自动地脉花",
|
||||
"version": "4.4.5",
|
||||
"version": "4.4.6",
|
||||
"tags": ["地脉花"],
|
||||
"bgi_version": "0.52.0",
|
||||
"description": "基于OCR图像识别的全自动刷取地脉花。\n💡更多信息请查看README! \n\n----------注意事项----------\n●仅支持BetterGI 0.52.0 及以上版本!\n●部分地脉花因特殊原因不支持全自动,具体的点位请在手册中查看。\n●树脂使用的优先级:2倍原粹树脂 > 浓缩树脂 > 原粹树脂。\n●运行时会传送到七天神像设置中设置的七天神像,需要关闭七天神像设置中的“是否就近七天神像恢复血量”,并指定七天神像。\n●战斗策略注意调度器设置中地图追踪行走配置里的“允许在JsSpript中使用”和“覆盖JS中的自动战斗配置”,只有在都打开的情况下脚本才会使用下面的战斗配置,否则会使用独立任务中的战斗策略。战斗超时时间不能大于脚本自定义配置中的时间。\n\n如果遇到问题,请先参照README中的方法进行解决。",
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
const BossPartyName = settings.BossPartyName;// 战斗队伍
|
||||
let mijingCount = 1;// 自动秘境计数
|
||||
// OCR对象用于检测战斗文本
|
||||
const ocrRo2 = RecognitionObject.Ocr(0, 0, genshin.width, genshin.height);
|
||||
const ocrRo2 = RecognitionObject.Ocr(0, 0, 1920, 1080);
|
||||
|
||||
// 创建材质到ITEM的映射表
|
||||
// 养成道具=1,食物=2,材料=3
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"manifest_version": 1,
|
||||
"name": "全自动周一",
|
||||
"version": "1.3.5",
|
||||
"version": "1.3.6",
|
||||
"tags": [
|
||||
"周常",
|
||||
"纪行",
|
||||
|
||||
@@ -8,8 +8,8 @@ const paimonMenuRo = RecognitionObject.TemplateMatch(
|
||||
file.ReadImageMatSync("Data/RecognitionObject/paimon_menu.png"),
|
||||
0,
|
||||
0,
|
||||
genshin.width / 3.0,
|
||||
genshin.width / 5.0
|
||||
640,
|
||||
216
|
||||
);
|
||||
|
||||
// 读取设置
|
||||
@@ -539,8 +539,8 @@ const isInMainUI = () => {
|
||||
file.ReadImageMatSync("Data/RecognitionObject/paimon_menu.png"),
|
||||
0,
|
||||
0,
|
||||
genshin.width / 3.0,
|
||||
genshin.width / 5.0
|
||||
640,
|
||||
216
|
||||
);
|
||||
|
||||
return () => {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"manifest_version": 1,
|
||||
"name": "自动剧情加载器",
|
||||
"version": "1.5",
|
||||
"version": "1.6",
|
||||
"tags": ["剧情","任务"],
|
||||
"description": "剧情自动加载器一键挂机过剧情:自动寻路、对话、战斗(需任务脚本支持),脚本拖进调度器就能跑,仅提供技术框架,完全体须搭配需任务脚本使用,详情见说明文档",
|
||||
"authors": [
|
||||
|
||||
@@ -3,8 +3,8 @@ const paimonMenuRo = RecognitionObject.TemplateMatch(
|
||||
file.ReadImageMatSync("assets/RecognitionObject/paimon_menu.png"),
|
||||
0,
|
||||
0,
|
||||
genshin.width / 3.0,
|
||||
genshin.width / 5.0
|
||||
640,
|
||||
216
|
||||
);
|
||||
|
||||
// 判断是否在主界面的函数
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"manifest_version": 1,
|
||||
"name": "地图追踪录制",
|
||||
"version": "1.1",
|
||||
"version": "1.2",
|
||||
"bgi_version": "0.45.0",
|
||||
"description": "自动地图追踪录制,每3秒从小地图获取一次当前坐标,打开大地图结束录制",
|
||||
"tags": [
|
||||
|
||||
@@ -1353,7 +1353,7 @@
|
||||
} else if (turnStatus === "enemy") { // 敌方回合
|
||||
await sleep(500);
|
||||
} else {
|
||||
click(genshin.width / 2, genshin.height / 2);
|
||||
click(960, 540);
|
||||
await sleep(500);
|
||||
}
|
||||
}
|
||||
@@ -1552,7 +1552,7 @@
|
||||
await terminateTurn();
|
||||
}
|
||||
} else if (turnStatus === "enemy") { // 敌方回合
|
||||
click(genshin.width / 2, genshin.height / 2);
|
||||
click(960, 540);
|
||||
await sleep(1000);
|
||||
} else {
|
||||
click(1873, 47);
|
||||
@@ -1598,7 +1598,7 @@
|
||||
} else if (turnStatus === "enemy") { // 敌方回合
|
||||
await sleep(500);
|
||||
} else {
|
||||
click(genshin.width / 2, genshin.height / 2);
|
||||
click(960, 540);
|
||||
await sleep(500);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"manifest_version": 1,
|
||||
"name": "「牌圣」",
|
||||
"version": "1.1",
|
||||
"version": "1.2",
|
||||
"bgi_version": "0.45.0",
|
||||
"description": "智能版自动七圣召唤",
|
||||
"authors": [
|
||||
|
||||
@@ -2000,8 +2000,8 @@ const isInMainUI = () => {
|
||||
file.ReadImageMatSync(`${main_interface.path}${main_interface.name}${main_interface.type}`),
|
||||
0,
|
||||
0,
|
||||
genshin.width / 3.0,
|
||||
genshin.width / 5.0
|
||||
640,
|
||||
216
|
||||
);
|
||||
let captureRegion = openCaptureGameRegion();
|
||||
let res = findByCaptureGameRegion(captureRegion, paimonMenuRo);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "圣遗物批量强化",
|
||||
"version": "1.1.7",
|
||||
"version": "1.1.8",
|
||||
"description": "一个批量强化圣遗物的脚本",
|
||||
"settings_ui": "settings.json",
|
||||
"main": "main.js",
|
||||
|
||||
@@ -109,8 +109,8 @@ const paimonMenuRo = RecognitionObject.TemplateMatch(
|
||||
file.ReadImageMatSync("assets/paimon_menu.png"),
|
||||
0,
|
||||
0,
|
||||
genshin.width / 3.0,
|
||||
genshin.width / 5.0
|
||||
640,
|
||||
216
|
||||
);
|
||||
|
||||
// 判断是否在主界面的函数
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"manifest_version": 1,
|
||||
"name": "OCR主界面读取队伍 ",
|
||||
"version": "1.1",
|
||||
"version": "1.2",
|
||||
"description": "至少0.44.3版本。OCR识别队伍角色",
|
||||
"authors": [
|
||||
{
|
||||
|
||||
@@ -124,14 +124,8 @@ async function recognizeTextAndClick(targetText, ocrRegion, timeout = 8000) {
|
||||
var u = {}; // utilities 工具函数集合
|
||||
u.logi = function (message, args) { log.info("[切换账号]" + message, args) };
|
||||
u.logw = function (message, args) { log.warn("[切换账号]" + message, args) };
|
||||
u.x = function (value) { return (value === undefined) ? genshin.width : genshin.width * (value / 1920); };
|
||||
u.y = function (value) { return (value === undefined) ? genshin.height : genshin.height * (value / 1080); };
|
||||
u.loadTemplate = function (filePath, x /* 0 if omit */, y /* 0 if omit */, w /* maxWidth if omit */, h /* maxHeight if omit */) {
|
||||
const _x = u.x(x === undefined ? 0 : x);
|
||||
const _y = u.y(y === undefined ? 0 : y);
|
||||
const _w = u.x(w) - _x;
|
||||
const _h = u.y(h) - _y;
|
||||
return RecognitionObject.TemplateMatch(file.ReadImageMatSync(filePath), _x, _y, _w, _h);
|
||||
return RecognitionObject.TemplateMatch(file.ReadImageMatSync(filePath), x, y, w, h);
|
||||
};
|
||||
u.findText = function (resList, text) {
|
||||
for (let i = 0; i < resList.count; i++) {
|
||||
@@ -279,7 +273,7 @@ async function recognizeTextAndClick(targetText, ocrRegion, timeout = 8000) {
|
||||
let logoutIconFound = !res.isEmpty();
|
||||
|
||||
if (logoutIconFound) {
|
||||
let resList = captureRegion.findMulti(RecognitionObject.ocr(u.x(850), u.y(970), u.x(220), u.y(100)));
|
||||
let resList = captureRegion.findMulti(RecognitionObject.ocr(850, 970, 220, 100));
|
||||
captureRegion.dispose();
|
||||
if (u.findText(resList, "点击进入")) {
|
||||
u.logi("检测到目前处于登录界面");
|
||||
@@ -329,10 +323,10 @@ async function recognizeTextAndClick(targetText, ocrRegion, timeout = 8000) {
|
||||
// 识别派蒙菜单,点击登出按钮
|
||||
await u.waitAndFindImage(assetPaimonCancelIcon);
|
||||
// u.logi("点击登出按钮");
|
||||
click(u.x(50), u.y(1024));
|
||||
click(50, 1024);
|
||||
|
||||
// 退出至登录界面
|
||||
let btnExitToLogin = await u.waitAndFindText("退出至登录界面", u.x(680), u.y(380), u.x(540), u.y(340));
|
||||
let btnExitToLogin = await u.waitAndFindText("退出至登录界面", 680, 380, 540, 340);
|
||||
// u.logi("检测到\"退出至登录界面\"按钮,点击");
|
||||
// btnExitToLogin.DrawSelf("ExitToLoginBtn");
|
||||
btnExitToLogin.Click();
|
||||
@@ -355,7 +349,7 @@ async function recognizeTextAndClick(targetText, ocrRegion, timeout = 8000) {
|
||||
|
||||
async function stateChangeUser() {
|
||||
u.logi("开始切换账号");
|
||||
await u.waitAndFindText(["进入游戏", "登录其他账号"], u.x(680), u.y(380), u.x(540), u.y(340), 200);
|
||||
await u.waitAndFindText(["进入游戏", "登录其他账号"], 680, 380, 540, 340, 200);
|
||||
|
||||
const assetSelectUserDropDownIcon = u.loadTemplate("Assets/RecognitionObject/caret.png", 680, 380, 1220, 720);
|
||||
let captureRegion = captureGameRegion();
|
||||
@@ -363,7 +357,7 @@ async function recognizeTextAndClick(targetText, ocrRegion, timeout = 8000) {
|
||||
captureRegion.dispose();
|
||||
if (res.isEmpty()) {
|
||||
u.logi("未找到下拉菜单图标,点击硬编码的坐标(960, 500)展开菜单");
|
||||
click(u.x(960), u.y(500));
|
||||
click(960, 500);
|
||||
} else {
|
||||
// u.logi("识别到下拉菜单,点击");
|
||||
// res.DrawSelf("UserDropdown");
|
||||
@@ -379,7 +373,7 @@ async function recognizeTextAndClick(targetText, ocrRegion, timeout = 8000) {
|
||||
await sleep(200);
|
||||
|
||||
let captureRegion = captureGameRegion();
|
||||
let resList = captureRegion.findMulti(RecognitionObject.ocr(u.x(680), u.y(540), u.x(540), u.y(500)));
|
||||
let resList = captureRegion.findMulti(RecognitionObject.ocr(680, 540, 540, 500));
|
||||
captureRegion.dispose();
|
||||
for (let i = 0; i < resList.count; i++) {
|
||||
let res = resList[i];
|
||||
@@ -409,7 +403,7 @@ async function recognizeTextAndClick(targetText, ocrRegion, timeout = 8000) {
|
||||
await sleep(500);
|
||||
{
|
||||
let captureRegion = captureGameRegion();
|
||||
let btnEnterGame = captureRegion.DeriveCrop(u.x(684), u.y(598), u.x(552), u.y(66));
|
||||
let btnEnterGame = captureRegion.DeriveCrop(684, 598, 552, 66);
|
||||
btnEnterGame.Click();
|
||||
captureRegion.dispose();
|
||||
btnEnterGame.dispose();
|
||||
@@ -420,7 +414,7 @@ async function recognizeTextAndClick(targetText, ocrRegion, timeout = 8000) {
|
||||
|
||||
async function stateEnterGame() {
|
||||
// u.logi("开始进入游戏,等待游戏加载。");
|
||||
let textClickToStart = await u.waitAndFindText("点击进入", u.x(850), u.y(970), u.x(220), u.y(100));
|
||||
let textClickToStart = await u.waitAndFindText("点击进入", 850, 970, 220, 100);
|
||||
// u.logi("已识别到\"点击进入\"文本,点击鼠标进入游戏。");
|
||||
textClickToStart.DrawSelf("ClickToStart");
|
||||
textClickToStart.Click();
|
||||
@@ -520,7 +514,7 @@ async function recognizeTextAndClick(targetText, ocrRegion, timeout = 8000) {
|
||||
keyDown("VK_MENU");
|
||||
await sleep(500);
|
||||
for (let i = 0; i <= 4; i++) {
|
||||
await click(Math.round(genshin.width / 2.0), Math.round(genshin.height * 0.8));
|
||||
await click(960, 864);
|
||||
await sleep(1000);
|
||||
}
|
||||
} finally {
|
||||
@@ -584,7 +578,7 @@ async function recognizeTextAndClick(targetText, ocrRegion, timeout = 8000) {
|
||||
keyDown("VK_MENU");
|
||||
await sleep(500);
|
||||
for (let i = 0; i <= 4; i++) {
|
||||
await click(Math.round(genshin.width / 2.0), Math.round(genshin.height * 0.8));
|
||||
await click(960, 864);
|
||||
await sleep(1000);
|
||||
}
|
||||
//keyUp("VK_MENU");
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"manifest_version": 1,
|
||||
"name": "切换账号多模式",
|
||||
"version": "1.2",
|
||||
"version": "1.3",
|
||||
"bgi_version": "0.53.0",
|
||||
"description": "多种模式的切换账号,有下拉列表、填写账号密码,OCR操作或键鼠操作\n免责申明:所有的账号密码均保存在本地,请使用者妥善保管账号密码,请勿外泄账号密码。若因使用此脚本导致的账号泄露、封禁问题与脚本作者无关。",
|
||||
"tags": [
|
||||
|
||||
@@ -345,7 +345,7 @@ async function locate() {
|
||||
*/
|
||||
async function waitToMain(hasKeyMouse = false) {
|
||||
log.info("等待返回主界面...");
|
||||
const paimonMenuRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/icon/paimon_menu.png"), 0, 0, genshin.width / 3.0, genshin.width / 5.0);
|
||||
const paimonMenuRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/icon/paimon_menu.png"), 0, 0, 640, 216);
|
||||
const maxRetries = 180; // 设置最大重试次数以防止无限循环
|
||||
let retries = 0;
|
||||
let enteredLoop = false;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"manifest_version": 1,
|
||||
"name": "游逸旅闻",
|
||||
"version": "0.2.1",
|
||||
"version": "0.2.2",
|
||||
"bgi_version": "0.45.1",
|
||||
"description": "自动游逸旅闻",
|
||||
"authors": [
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"manifest_version": 1,
|
||||
"name": "周本一条龙",
|
||||
"version": "3.1.2",
|
||||
"version": "3.1.3",
|
||||
"description": "https://www.bilibili.com/video/BV1F2uvz3E4K/?vd_source=9dfaf88af48ecc0ff95a41f1145af7a2",
|
||||
"authors": [
|
||||
{
|
||||
|
||||
@@ -625,7 +625,7 @@ async function autoFightAndEndDetection(extraFightAction) {
|
||||
// 定义两个检测区域
|
||||
const region1 = RecognitionObject.ocr(700, 0, 450, 100);//区域一 BOSS名称
|
||||
const region2 = RecognitionObject.ocr(820, 935, 280, 50);//区域二 成功倒计时
|
||||
const paimonMenuRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/paimon_menu.png"), 0, 0, genshin.width / 3.0, genshin.width / 5.0);
|
||||
const paimonMenuRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/paimon_menu.png"), 0, 0, 640, 216);
|
||||
const teamRo1 = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/team1.png"), 1820, 240, 80, 400);
|
||||
const teamRo2 = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/team2.png"), 1820, 240, 80, 400);
|
||||
let challengeTime = 0;
|
||||
|
||||
Reference in New Issue
Block a user