mirror of
https://github.com/babalae/bettergi-scripts-list.git
synced 2026-03-15 03:23:22 +08:00
自动修改画质与音量v1.2 (#2911)
* Add JS AutoSwitchGraphicsSettings * fix: 修复manifest.json版本号 * 修复若干问题 * update v1.2
This commit is contained in:
@@ -1,12 +1,14 @@
|
||||
# 自动修改画质
|
||||
# 自动修改画质与音量
|
||||
|
||||
## 重要提醒
|
||||
|
||||
为了保证您的良好体验,请务必在开始使用前阅读完本 README。
|
||||
- 为了保证您的良好体验,请务必在开始使用前阅读完本 README。
|
||||
- 如果您在更新本 JS 后遇到问题,请在所有配置组中移除并重新添加本 JS,这是为了重建自定义配置文件以匹配新的设置 UI。
|
||||
- 如果您发现运行此 JS 时失去焦点(也就是鼠标在操作别的窗口,而原神窗口在视觉上被覆盖),可以前往 BetterGI 主界面,点击左下角设置,找到通用功能设置,展开其他设置,找到失去焦点自动恢复,点击右侧开关启用此功能。
|
||||
|
||||
## 作用说明
|
||||
|
||||
本 JS 可以根据用户的预设自动修改图像设置,避免了繁琐的手动调整流程。在您使用 BetterGI 自动完成锄地等重复性任务前,可以运行本 JS,调低画质以降低功耗;同样地,在锄地结束后也可以运行本 JS,调回高画质保证游戏体验。您还可以根据自己的需求开发新的用法。
|
||||
本 JS 可以根据用户的预设自动修改图像和声音设置,避免了繁琐的手动调整流程。在您使用 BetterGI 自动完成锄地等重复性任务前,可以运行本 JS,调低画质并静音以降低功耗;同样地,在锄地结束后也可以运行本 JS,调回高画质保证游戏体验。您还可以根据自己的需求开发新的用法。
|
||||
|
||||
## 兼容性
|
||||
|
||||
@@ -22,7 +24,7 @@
|
||||
|
||||
## 使用方法
|
||||
|
||||
在配置组中添加本 JS 后,右键本 JS,点击`修改JS脚本自定义配置`,即可在弹出的对话框中调整预设图像设置。
|
||||
在配置组中添加本 JS 后,右键本 JS,点击`修改JS脚本自定义配置`,即可在弹出的对话框中调整预设图像和声音设置。
|
||||
|
||||
### 选项说明
|
||||
|
||||
@@ -34,4 +36,6 @@
|
||||
|
||||
注意,即使您预设`图像质量`选项不是`默认`或`自定义`,本 JS 依然会根据您的预设修改其余选项。所以如果您设置了图像质量预设,又修改了其余选项为非预设的值,则在 JS 运行结束后`图像质量`将是`自定义`。
|
||||
|
||||
音量设置只允许您设定不大于 10 的自然数,您可预设为 -1 以不修改对应的音量。Tips: 您还可直接在调度器中添加 Shell 指令以自动调整系统音量。
|
||||
|
||||
感谢您耐心读完此 README,请勾选自定义配置中的复选框。
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 5.4 KiB |
@@ -6,6 +6,7 @@ const settingsArr = Array.from(settings);
|
||||
// 载入设置图标和图像设置按钮
|
||||
const settingsIconRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/RecognitionObject/gear.png"));
|
||||
const graphicsTextRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/RecognitionObject/graphics.png"));
|
||||
const volumeTextRo = RecognitionObject.TemplateMatch(file.ReadImageMatSync("assets/RecognitionObject/volume.png"));
|
||||
|
||||
// 封装好的点击以上两个按钮操作
|
||||
const findAndClick = async (object) => {
|
||||
@@ -24,15 +25,12 @@ const findAndClick = async (object) => {
|
||||
gameRegion.Dispose();
|
||||
};
|
||||
|
||||
// 封装好的 OCR 寻找选项功能
|
||||
const findOption = async (optionName) => {
|
||||
let gameRegion = captureGameRegion();
|
||||
let ocrList = gameRegion.findMulti(RecognitionObject.ocrThis);
|
||||
gameRegion.Dispose();
|
||||
for(let i = 0;i < ocrList.count; i++)
|
||||
if(ocrList[i].Text === optionName)
|
||||
return ocrList[i];
|
||||
};
|
||||
// 转换音量设置项字符串为整数
|
||||
const stringToInt = async (str) => {
|
||||
if (!/^-?\d+$/.test(str))
|
||||
return NaN;
|
||||
return Number(str);
|
||||
}
|
||||
|
||||
const buildOcrMap = () => { // 硬编码按钮坐标,用于极速模式
|
||||
let map = new Map([
|
||||
@@ -59,6 +57,16 @@ const buildOcrMap = () => { // 硬编码按钮坐标,用于极速模式
|
||||
return map;
|
||||
};
|
||||
|
||||
// 封装好的 OCR 寻找选项功能
|
||||
const findOption = async (optionName) => {
|
||||
let gameRegion = captureGameRegion();
|
||||
let ocrList = gameRegion.findMulti(RecognitionObject.ocrThis);
|
||||
gameRegion.Dispose();
|
||||
for(let i = 0;i < ocrList.count; i++)
|
||||
if(ocrList[i].Text === optionName)
|
||||
return ocrList[i];
|
||||
};
|
||||
|
||||
// 普通模式点击选项
|
||||
const chooseOption = async (optionName, order) => {
|
||||
if(order === 0)
|
||||
@@ -96,6 +104,18 @@ const chooseOptionFast = async (optionName, order, ocrMap) => {
|
||||
click(1000, 39); // 单击空白处取消关闭下拉菜单的后摇
|
||||
};
|
||||
|
||||
// 拖动音量条
|
||||
const dragOption = async (optionName, size) => {
|
||||
if(size === -1)
|
||||
return; // 默认选项,跳过
|
||||
if(Number.isNaN(size) || size < 0 || size > 10)
|
||||
return; // 音量大小不合法,跳过
|
||||
let res = await findOption(optionName);
|
||||
let x = res.x, y = res.y;
|
||||
for(let i = 25;i <= 39;++i) // 鲁棒性
|
||||
click(x + 955 + 32 * size, y + i);
|
||||
}
|
||||
|
||||
(async function () {
|
||||
if(!settings.check) {
|
||||
log.error("请先阅读 README.md!");
|
||||
@@ -153,12 +173,13 @@ const chooseOptionFast = async (optionName, order, ocrMap) => {
|
||||
await chooseOption(settingsTemplate[i].name, j);
|
||||
}
|
||||
|
||||
// 滚动页面
|
||||
moveMouseTo(1000, 500);
|
||||
for(let i = 0;i < 50;++i)
|
||||
verticalScroll(-1);
|
||||
await sleep(500);
|
||||
|
||||
for(let i = 9;i < settingsTemplate.length;++i)
|
||||
for(let i = 9;i < 21;++i)
|
||||
for(let j = 0; j < Array.from(settingsTemplate[i].options).length;++j)
|
||||
if(settingsArr[i].Value === Array.from(settingsTemplate[i].options)[j]) {
|
||||
log.info("{name}选择{option}", settingsTemplate[i].name, settingsArr[i].Value);
|
||||
@@ -169,5 +190,48 @@ const chooseOptionFast = async (optionName, order, ocrMap) => {
|
||||
|
||||
log.info("修改图像设置完成,正在尝试回到主界面……");
|
||||
await genshin.returnMainUi();
|
||||
log.info("回到主界面成功,现在开始修改{highlight}", "音量设置");
|
||||
keyPress("ESCAPE");
|
||||
await sleep(1000);
|
||||
await findAndClick(settingsIconRo);
|
||||
log.info("进入设置界面成功,打开声音页");
|
||||
await sleep(1000);
|
||||
await findAndClick(volumeTextRo);
|
||||
await sleep(500);
|
||||
|
||||
log.info("正在调整{highlight}", "主音量");
|
||||
await dragOption("音量", await stringToInt(settings.mainVolume));
|
||||
log.info("正在调整{highlight}", "音乐音量");
|
||||
await dragOption("音乐音量", await stringToInt(settings.musicVolume));
|
||||
log.info("正在调整{highlight}", "语音音量");
|
||||
await dragOption("语音音量", await stringToInt(settings.dialogueVolume));
|
||||
log.info("正在调整{highlight}", "音效音量");
|
||||
await dragOption("音效音量", await stringToInt(settings.sfxVolume));
|
||||
|
||||
let map = new Map();
|
||||
map.set("动态范围", ["默认", "完全", "有限"]);
|
||||
map.set("输出设置", ["默认", "立体声", "环绕声"]);
|
||||
map.set("最小化时静音", ["默认", "关闭", "打开"]);
|
||||
|
||||
log.info("{name}选择{option}", "动态范围", settings.dynamicRange);
|
||||
if(settings.dynamicRange !== "默认")
|
||||
for(let i = 0;i < map.get("动态范围").length;++i)
|
||||
if(map.get("动态范围")[i] === settings.dynamicRange)
|
||||
await chooseOption("动态范围", i);
|
||||
|
||||
log.info("{name}选择{option}", "输出设置", settings.outputSetting);
|
||||
if(settings.outputSetting !== "默认")
|
||||
for(let i = 0;i < map.get("输出设置").length;++i)
|
||||
if(map.get("输出设置")[i] === settings.outputSetting)
|
||||
await chooseOption("输出设置", i);
|
||||
|
||||
log.info("{name}选择{option}", "最小化时静音", settings.muteWhenMinimized);
|
||||
if(settings.muteWhenMinimized !== "默认")
|
||||
for(let i = 0;i < map.get("最小化时静音").length;++i)
|
||||
if(map.get("最小化时静音")[i] === settings.muteWhenMinimized)
|
||||
await chooseOption("最小化时静音", i);
|
||||
|
||||
log.info("修改音量设置完成,正在尝试回到主界面……");
|
||||
await genshin.returnMainUi();
|
||||
log.info("回到主界面成功");
|
||||
})();
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"manifest_version": 1,
|
||||
"name": "自动修改画质",
|
||||
"version": "1.1",
|
||||
"name": "自动修改画质与音量",
|
||||
"version": "1.2",
|
||||
"bgi_version": "0.57.0",
|
||||
"description": "自动调整画质,用于便捷切换锄地省电画质和游戏体验画质",
|
||||
"description": "自动调整画质和音量,用于便捷切换锄地省电画质和游戏体验画质",
|
||||
|
||||
"authors": [
|
||||
{
|
||||
|
||||
@@ -249,5 +249,67 @@
|
||||
"打开"
|
||||
],
|
||||
"default": "默认"
|
||||
},
|
||||
{
|
||||
"name": "separator",
|
||||
"type": "separator",
|
||||
"label": "音量设置 -1为默认 范围0-10"
|
||||
},
|
||||
{
|
||||
"name": "mainVolume",
|
||||
"type": "input-text",
|
||||
"label": "主音量",
|
||||
"default": "-1"
|
||||
},
|
||||
{
|
||||
"name": "musicVolume",
|
||||
"type": "input-text",
|
||||
"label": "音乐音量",
|
||||
"default": "-1"
|
||||
},
|
||||
{
|
||||
"name": "dialogueVolume",
|
||||
"type": "input-text",
|
||||
"label": "语音音量",
|
||||
"default": "-1"
|
||||
},
|
||||
{
|
||||
"name": "sfxVolume",
|
||||
"type": "input-text",
|
||||
"label": "音效音量",
|
||||
"default": "-1"
|
||||
},
|
||||
{
|
||||
"name": "dynamicRange",
|
||||
"type": "select",
|
||||
"label": "动态范围",
|
||||
"options": [
|
||||
"默认",
|
||||
"完全",
|
||||
"有限"
|
||||
],
|
||||
"default": "默认"
|
||||
},
|
||||
{
|
||||
"name": "outputSetting",
|
||||
"type": "select",
|
||||
"label": "输出设置",
|
||||
"options": [
|
||||
"默认",
|
||||
"立体声",
|
||||
"环绕声"
|
||||
],
|
||||
"default": "默认"
|
||||
},
|
||||
{
|
||||
"name": "muteWhenMinimized",
|
||||
"type": "select",
|
||||
"label": "最小化时静音",
|
||||
"options": [
|
||||
"默认",
|
||||
"关闭",
|
||||
"打开"
|
||||
],
|
||||
"default": "默认"
|
||||
}
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user