mirror of
https://github.com/babalae/bettergi-scripts-list.git
synced 2026-03-15 03:23:22 +08:00
repo/js/YNF-AutoEat: 脚本更新 (#1941)
* 脚本更新 修复了一些bug,添加了一些改动 * YNF-AutoEat又双更新 针对建议进行了进一步的修改
This commit is contained in:
@@ -1,9 +1,14 @@
|
||||
# 伊涅芙の自助餐
|
||||
|
||||
|
||||
## 食用方法:
|
||||
1. 将脚本添加至调度器。
|
||||
2. 右键点击脚本以修改 JS 自定义配置。
|
||||
3. 选择队伍名称、食物种类数量和运行次数之后点击运行即可
|
||||
1. 队伍名称:包含伊涅芙的队伍,必填
|
||||
2. 伊涅芙今天吃什么:需要投喂的食材,不选择的情况下默认是苹果
|
||||
3. 食材数量:单次投喂的数量(吃多少个再跳楼),默认99个
|
||||
4. 运行次数:想嘎伊涅芙多少次,默认1次
|
||||
3. 完成上述设置后点击运行即可
|
||||
|
||||
|
||||
## 注意事项:
|
||||
@@ -11,18 +16,28 @@
|
||||
2. 使用前确保食材充足
|
||||
|
||||
|
||||
## 作者留言:
|
||||
欢迎使用该脚本,毕竟使用的过程也是帮作者发现bug的过程。
|
||||
那么当你在使用时发现有bug存在,请反馈到频道并艾特作者!
|
||||
当然,作者会保证尽力去修但是不一定能修好。(书到用时方恨少了属于是)
|
||||
希望发现问题积极反馈,来频道尽情蹂虐作者吧!
|
||||
~~(PS:许愿也行,需求尽管提,没回就是做不到,欸嘿)~~
|
||||
|
||||
|
||||
## 致谢
|
||||
1. 感谢古又老师的悉心指导,没有古又老师就没有现在的~~伊涅芙灭绝计划~~调味品批量生产计划
|
||||
2. 感谢氨气老师和秋秋云老师,在审核时提供了宝贵的意见和建议。
|
||||
|
||||
|
||||
##作者留言:
|
||||
欢迎使用该脚本,毕竟使用的过程也是帮作者发现bug的过程
|
||||
那么当你在使用时发现有bug存在,请反馈到频道并艾特作者
|
||||
当然,作者会保证尽力去修但是不一定能修好(书到用时方恨少了属于是)
|
||||
希望发现问题积极反馈,来频道尽情蹂虐作者吧!
|
||||
---------------------------------------------------------------------------------------------------------------------------------
|
||||
## 更新日志
|
||||
### 0.1(2025.09.15)
|
||||
酱酱!“伊涅芙の自助餐(YNF-AutoEat) V0.1”闪亮登场!你还在为徒手喂料理而痛苦吗?你的苹果又没处用了吗?你做菜时的调味品又不够用了吗?快来用伊涅芙の自助餐,包你满意!
|
||||
### 1.1(2025.09.17)
|
||||
1. 修复了前往神像切换队伍后无法正常进行后续动作的bug
|
||||
2. 修复了队伍中没有伊涅芙时会在秘境外吃食物的bug
|
||||
3. 修复了不填写食物时脚本不会及时报错停止的bug
|
||||
4. 多处位置添加了判断逻辑,防止假值穿透等风险
|
||||
5. 将代码结构进行重构,调整了运行顺序,使其更符合逻辑
|
||||
6. 蹂虐了古又老师的伊涅芙一顿并让她吃了个饱
|
||||
~~7. 我勒个豆版本号怎么写错了,正式版还搁这0开头呢!快改!~~
|
||||
|
||||
### 1.0(2025.09.15)
|
||||
酱酱!“伊涅芙の自助餐(YNF-AutoEat) V1.0”闪亮登场!你还在为徒手喂料理而痛苦吗?你的苹果又没处用了吗?你做菜时的调味品又不够用了吗?快来用伊涅芙の自助餐,包你满意!
|
||||
|
||||
@@ -220,35 +220,47 @@
|
||||
}
|
||||
}
|
||||
|
||||
// 新增:判断队内角色函数(新知识+1)
|
||||
async function includes(characterName) {
|
||||
var avatars = getAvatars();
|
||||
for (let i = 0; i < avatars.length; i++) {
|
||||
if (avatars[i] === characterName) { return true; }
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//切换队伍
|
||||
async function switchPartyIfNeeded(partyName) {
|
||||
if (!partyName) {
|
||||
await genshin.returnMainUi();
|
||||
return;
|
||||
}
|
||||
try {
|
||||
log.info("正在尝试切换至" + partyName);
|
||||
if (!await genshin.switchParty(partyName)) {
|
||||
log.info("切换队伍失败,前往七天神像重试");
|
||||
await genshin.tpToStatueOfTheSeven();
|
||||
await genshin.switchParty(partyName);
|
||||
return await genshin.switchParty(partyName);
|
||||
}
|
||||
return true;
|
||||
} catch {
|
||||
log.error("队伍切换失败,可能处于联机模式或其他不可切换状态");
|
||||
notification.error(`队伍切换失败,可能处于联机模式或其他不可切换状态`);
|
||||
await genshin.returnMainUi();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// 传送并进入副本
|
||||
async function fuben() {
|
||||
await genshin.tp(-887.193359375, 1679.44287109375);
|
||||
// 先判断一次,队伍里有伊涅芙就直接开始运行,没有的话就切换指定队伍
|
||||
let ifynf = await includes("伊涅芙");
|
||||
let ifswitch;
|
||||
if (!ifynf) {
|
||||
ifswitch = await switchPartyIfNeeded(party);
|
||||
if (!ifswitch) { log.error("未识别到指定队伍,请检查队伍名是否正确!"); return false; }//找不到指定队伍就直接报错停止
|
||||
|
||||
await switchPartyIfNeeded(party);
|
||||
|
||||
let ifynf = await textOCR("伊涅芙", 3, 0, 0, 1670, 200, 120, 400);
|
||||
if (!ifynf.found) { log.error("未识别到伊涅芙,请在设置中输入包含伊涅芙的队伍!"); return; }
|
||||
ifynf = await includes("伊涅芙");
|
||||
if (!ifynf) { log.error("未识别到伊涅芙,请在设置中输入包含伊涅芙的队伍!"); return false; }//切换到指定队伍后再进行判定
|
||||
}
|
||||
log.info("已检测到伊涅芙,即将开始后续动作……");
|
||||
|
||||
await genshin.tp(-887.193359375, 1679.44287109375);//沉眠之庭
|
||||
keyDown("w");
|
||||
await sleep(2500);
|
||||
keyUp("w");
|
||||
@@ -261,11 +273,13 @@
|
||||
leftButtonClick();
|
||||
await sleep(1500);
|
||||
|
||||
log.info("古又老师说让你先die一下");
|
||||
log.info("古又老师说让你先die一下");//先降低点生命值避免满血弹窗
|
||||
keyDown("A");
|
||||
await sleep(3000);
|
||||
keyUp("A");
|
||||
await sleep(3000);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// 伊涅芙跳楼机
|
||||
@@ -276,9 +290,9 @@
|
||||
|
||||
//连续点击三次防止过期道具卡背包
|
||||
await click(970, 760);
|
||||
await sleep(300);
|
||||
await sleep(100);
|
||||
await click(970, 760);
|
||||
await sleep(300);
|
||||
await sleep(100);
|
||||
await click(970, 760);
|
||||
|
||||
log.info("猜猜为什么要连续点击这个位置呢~");
|
||||
@@ -289,36 +303,34 @@
|
||||
const ifshiwu = await textOCR("食物", 3, 0, 0, 126, 17, 99, 53);
|
||||
if (!ifshiwu.found) {
|
||||
await genshin.returnMainUi();
|
||||
log.warn("未打开'食物'页面");
|
||||
return;
|
||||
throw new Error("未打开'食物'页面,请确保背包已正确打开并切换到食物标签页");
|
||||
}//确认在食物界面
|
||||
await sleep(500);
|
||||
const ifpingguo = await imageRecognitionEnhanced(pingguo, 1, 1, 0, 115, 120, 1150, 155);//识别"苹果"图片
|
||||
if (!ifpingguo.found) {
|
||||
await genshin.returnMainUi();
|
||||
log.warn("没有找到指定的食物");
|
||||
return;
|
||||
throw new Error("没有找到指定的食物:" + food + "请检查背包中该食材数量是否足够!");
|
||||
}
|
||||
await sleep(500);
|
||||
|
||||
await textOCR("使用", 5, 1, 0, 1620, 987, 225, 50);
|
||||
await click(1700, 1020);//点击使用
|
||||
await sleep(1000);
|
||||
|
||||
const ifzjz = await imageRecognitionEnhanced(zjz, 5, 1, 0, 625, 290, 700, 360, true);
|
||||
await sleep(300);
|
||||
const ifzjz = await imageRecognitionEnhanced(zjz, 5, 1, 0, 625, 290, 700, 360, true);//点击伊涅芙证件照
|
||||
await sleep(100);
|
||||
leftButtonClick();//连续点击确保吃食物的是伊涅芙
|
||||
await sleep(100);
|
||||
leftButtonClick();
|
||||
await sleep(300);
|
||||
leftButtonClick();
|
||||
await sleep(300);
|
||||
await sleep(100);
|
||||
|
||||
if (!ifzjz.found) { log.error("未识别到伊涅芙"); return; }
|
||||
if (!ifzjz.found) { throw new Error("未识别到伊涅芙"); }
|
||||
|
||||
for (let i = 0; i < foodCount; i++) {
|
||||
click(1251, 630);
|
||||
await sleep(300);
|
||||
await sleep(150);
|
||||
}
|
||||
|
||||
await textOCR("确认", 5, 1, 0, 1100, 740, 225, 50);
|
||||
await click(1180, 770);//点击确认
|
||||
await sleep(500);
|
||||
|
||||
await sleep(1000);
|
||||
@@ -326,31 +338,47 @@
|
||||
await sleep(1000);
|
||||
await keyPress("ESCAPE");
|
||||
|
||||
await sleep(1000);
|
||||
|
||||
if (n == 1) { return; }
|
||||
|
||||
log.info("再见了伊涅芙,希望你喜欢这几分钟的戏份");
|
||||
|
||||
await sleep(1000);
|
||||
keyDown("A");
|
||||
await sleep(3000);
|
||||
keyUp("A");
|
||||
await sleep(3000);
|
||||
}
|
||||
|
||||
log.warn("使用前请仔细阅读readme并进行相关设置!");
|
||||
log.warn("请确保食材充足!");
|
||||
|
||||
// ===== MAIN EXECUTION =====
|
||||
|
||||
|
||||
// 预处理
|
||||
const party = settings.n;//设置好要切换的队伍
|
||||
const food = settings.food;//设置要吃的食物
|
||||
const foodCount = settings.foodNumber - 1;//点击“+”的次数,比食物数量少1
|
||||
const n = settings.runNumber;//运行次数
|
||||
|
||||
const pingguo = `assets/${food}.png`;//食物图片路径
|
||||
const zjz = `assets/zhengjianzhao.png`;//伊涅芙证件照
|
||||
|
||||
// 添加验证
|
||||
if (!party) { log.error("队伍名为空,请仔细阅读readme并进行设置后再使用此脚本!"); return; }// 利用队伍是否为空判断用户有没有进行设置
|
||||
if (foodCount > 98 || foodCount < 0) { log.error("食材数量请填写1-99之间的数字!"); return; }//确保食材数量1~99
|
||||
if (n <= 0) { log.error("不是哥们,运行次数还能小于0???"); return; }//确保运行次数合法
|
||||
|
||||
|
||||
//设置分辨率和缩放
|
||||
setGameMetrics(1920, 1080, 1);
|
||||
await genshin.returnMainUi();
|
||||
await genshin.returnMainUi();//回到主界面,在秘境中可能会卡几秒
|
||||
|
||||
const food = settings.food;
|
||||
const party = settings.n;
|
||||
const n = settings.runNumber;
|
||||
const foodCount = settings.foodNumber - 1;
|
||||
const pingguo = `assets/${food}.png`;
|
||||
const zjz = `assets/zhengjianzhao.png`;
|
||||
log.warn("使用前请仔细阅读readme并进行相关设置!");
|
||||
log.warn("请确保食材充足!");
|
||||
|
||||
await fuben();
|
||||
const iffuben = await fuben(); if (!iffuben) { return; }//前期准备,进入副本并降低一部分血量
|
||||
|
||||
// 循环控制运行次数
|
||||
try {
|
||||
for (let i = 0; i < n; i++) {
|
||||
await doit();
|
||||
@@ -358,9 +386,7 @@
|
||||
} catch (error) {
|
||||
log.error(`识别图像时发生异常: ${error.message}`);
|
||||
}
|
||||
log.info("运行结束!今天的" + food + "味道不错哦~");
|
||||
|
||||
await genshin.tpToStatueOfTheSeven();
|
||||
|
||||
})();
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"manifest_version": 1,
|
||||
"name": "伊涅芙の自助餐",
|
||||
"version": "0.1",
|
||||
"version": "1.1",
|
||||
"tags": [
|
||||
"伊涅芙",
|
||||
"调味品"
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
{
|
||||
"name": "food",
|
||||
"type": "select",
|
||||
"label": "伊涅芙今天吃什么",
|
||||
"label": "伊涅芙今天吃什么(默认苹果)",
|
||||
"options": [
|
||||
"苹果",
|
||||
"日落果",
|
||||
@@ -18,7 +18,7 @@
|
||||
"活化的星蕈",
|
||||
"枯焦的星蕈"
|
||||
],
|
||||
"default": ""
|
||||
"default": "苹果"
|
||||
},
|
||||
{
|
||||
"name": "foodNumber",
|
||||
|
||||
Reference in New Issue
Block a user