JS : 历练点双倍好感 新增功能 (#1387)

* JS : 历练点双倍好感 新增功能

支持进入好友尘歌壶后,让指定位置角色离队

* format

---------

Co-authored-by: 起个名字好难的喵 <25520958+MisakaAldrich@users.noreply.github.com>
This commit is contained in:
this-Fish
2025-07-23 11:12:46 +08:00
committed by GitHub
parent d8ee8ba9c4
commit 77d3bfdc16
3 changed files with 97 additions and 5 deletions

View File

@@ -22,11 +22,16 @@ const MiddleSliderBottomRo = RecognitionObject.TemplateMatch(file.ReadImageMatSy
const RightSliderTopRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("Assets/RecognitionObject/Slider Top.png"), 1750, 100, 100, 100); const RightSliderTopRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("Assets/RecognitionObject/Slider Top.png"), 1750, 100, 100, 100);
const RightSliderBottomRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("Assets/RecognitionObject/Slider Bottom.png"), 1750, 100, 100, 900); const RightSliderBottomRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("Assets/RecognitionObject/Slider Bottom.png"), 1750, 100, 100, 900);
// 取得需要离队角色資訊
const removedCharacters1 = typeof (settings.removedCharacters1) === 'undefined' ? false : settings.removedCharacters1;
const removedCharacters2 = typeof (settings.removedCharacters2) === 'undefined' ? false : settings.removedCharacters2;
const removedCharacters3 = typeof (settings.removedCharacters3) === 'undefined' ? false : settings.removedCharacters3;
const removedCharacters4 = typeof (settings.removedCharacters4) === 'undefined' ? false : settings.removedCharacters4;
/** /**
* @returns {Promise<void>} * @returns {Promise<void>}
*/ */
(async function() { (async function () {
// 切换队伍 // 切换队伍
if (!settings.disableNotice) { if (!settings.disableNotice) {
for (let n = 0; n < 10; n++) { for (let n = 0; n < 10; n++) {
@@ -193,7 +198,7 @@ const RightSliderBottomRo = RecognitionObject.TemplateMatch(file.ReadImageMatSyn
if (res.text.includes(settings.appointFriendName)) { if (res.text.includes(settings.appointFriendName)) {
log.info("指定好友名字位置:({x},{y},{w},{h}), 识别内容:{text}", res.x, res.y, res.Width, res.Height, res.text); log.info("指定好友名字位置:({x},{y},{w},{h}), 识别内容:{text}", res.x, res.y, res.Width, res.Height, res.text);
click(res.x - 100, res.y + 50); click(res.x - 100, res.y + 50);
await sleep(500); await sleep(1000);
// 申请造访尘歌壶 // 申请造访尘歌壶
let captureRegion = captureGameRegion(); let captureRegion = captureGameRegion();
@@ -207,6 +212,7 @@ const RightSliderBottomRo = RecognitionObject.TemplateMatch(file.ReadImageMatSyn
} }
} }
} }
await sleep(1000);
// 翻页继续尝试&模板匹配的方式等待加载 // 翻页继续尝试&模板匹配的方式等待加载
let SliderBottom = captureGameRegion().find(RightSliderBottomRo); let SliderBottom = captureGameRegion().find(RightSliderBottomRo);
if (SliderBottom.isExist()) { if (SliderBottom.isExist()) {
@@ -284,7 +290,7 @@ const RightSliderBottomRo = RecognitionObject.TemplateMatch(file.ReadImageMatSyn
if (i % 2 === 0) { if (i % 2 === 0) {
// 偶数索引,递增 y_avatar // 偶数索引,递增 y_avatar
y_avatar += avatar_increment; y_avatar += avatar_increment;
log.info(`正在申请造访第 ${i/2+1} 位好友尘歌壶`); log.info(`正在申请造访第 ${i / 2 + 1} 位好友尘歌壶`);
click(x_avatar, y_avatar); click(x_avatar, y_avatar);
await sleep(250); await sleep(250);
click(x_avatar, y_avatar); click(x_avatar, y_avatar);
@@ -325,6 +331,10 @@ const RightSliderBottomRo = RecognitionObject.TemplateMatch(file.ReadImageMatSyn
// 模板匹配领取历练点奖励 // 模板匹配领取历练点奖励
async function claimEncounterPointsRewards() { async function claimEncounterPointsRewards() {
await sleep(2000);
log.info("正在让指定位置角色离队");
await removeSpecifiedRole();
await sleep(2000);
log.info("正在打开冒险之证领取历练点奖励"); log.info("正在打开冒险之证领取历练点奖励");
await sleep(2000); await sleep(2000);
keyPress("VK_ESCAPE"); keyPress("VK_ESCAPE");
@@ -397,6 +407,69 @@ const RightSliderBottomRo = RecognitionObject.TemplateMatch(file.ReadImageMatSyn
} }
} }
// 让指定位置角色离队
async function removeSpecifiedRole() {
try {
if (removedCharacters1 || removedCharacters2 || removedCharacters3 || removedCharacters4) {
// 打開配隊介面
keyPress("l");
await sleep(3500);
// 让4号位角色离队
if (removedCharacters4) {
// 第4名角色位置
click(1460, 600);
await sleep(750);
click(430, 1020);
await sleep(750);
log.info("4号位角色已离队");
}
// 让3号位角色离队
if (removedCharacters3) {
// 第3名角色位置
click(1130, 600);
await sleep(750);
click(430, 1020);
await sleep(750);
log.info("3号位角色已离队");
}
// 让2号位角色离队
if (removedCharacters2) {
// 第2名角色位置
click(790, 600);
await sleep(750);
click(430, 1020);
await sleep(750);
log.info("2号位角色已离队");
}
// 让1号位角色离队
if (removedCharacters1) {
if (removedCharacters4 && removedCharacters3 && removedCharacters2) {
log.warn("2,3,4号位已离队1号位角色不能离队");
} else {
// 第1名角色位置
click(480, 600);
await sleep(750);
click(430, 1020);
await sleep(750);
log.info("1号位角色已离队");
}
}
// 返回主界面
await genshin.returnMainUi();
} else {
log.info("无需让角色离队");
}
} catch (error) {
log.error("出错: {0}", error);
}
}
// 向下一页 // 向下一页
async function pageDown(SliderBottomRo) { async function pageDown(SliderBottomRo) {
let SliderBottom = captureGameRegion().find(SliderBottomRo); let SliderBottom = captureGameRegion().find(SliderBottomRo);

View File

@@ -1,9 +1,9 @@
{ {
"manifest_version": 1, "manifest_version": 1,
"name": "历练点双倍好感", "name": "历练点双倍好感",
"version": "2.1.1", "version": "2.1.2",
"bgi_version": "0.44.1", "bgi_version": "0.44.1",
"description": "进入好友尘歌壶,用历练点领取双倍好感\n目前支持游戏语言简体、繁体中文、英文\n!!!此版本基于图像识别&OCRBuild日期早于2025年4月2日的BetterGI无法使用", "description": "进入好友尘歌壶,用历练点领取双倍好感\n目前支持游戏语言简体、繁体中文、英文\n支持进入好友尘歌壶后,让指定位置角色离队",
"authors": [ "authors": [
{ {
"name": "起个名字好难的喵", "name": "起个名字好难的喵",

View File

@@ -13,6 +13,25 @@
"name": "request_times", "name": "request_times",
"type": "input-text", "type": "input-text",
"label": "(选填)申请好友数需小于等于7不支持翻页" "label": "(选填)申请好友数需小于等于7不支持翻页"
},{
"name": "removedCharacters4",
"type": "checkbox",
"label": "让4号位角色离队"
},
{
"name": "removedCharacters3",
"type": "checkbox",
"label": "让3号位角色离队"
},
{
"name": "removedCharacters2",
"type": "checkbox",
"label": "让2号位角色离队"
},
{
"name": "removedCharacters1",
"type": "checkbox",
"label": "让1号位角色离队"
}, },
{ {
"name": "disableGoStatue", "name": "disableGoStatue",