archive js

This commit is contained in:
起个名字好难的喵
2025-07-28 11:30:03 +08:00
parent 6002f6b54c
commit 0f3da7a6d0
24 changed files with 181 additions and 181 deletions

View File

@@ -0,0 +1,103 @@
//eval(file.readTextSync("lib.js"));
const width = genshin.width;
const height = genshin.height;
function clickf(x, y) {
click(Math.round(width * x), Math.round(height * y));
}
function movetof(x, y) {
moveMouseTo(Math.round(width * x), Math.round(height * y));
}
function get_config(name, defval) {
let t = settings[name];
return typeof (t) === 'undefined' ? defval : t;
}
function get_config_int(name, defval) {
return parseInt(get_config(name, defval), 10);
}
class OCRError extends Error {
constructor(message, options) { super(message, options); }
}
setGameMetrics(genshin.width, genshin.height, 1); // 设置游戏窗口大小和DPI
function test1() {
log.info(`窗口大小: ${genshin.width} * ${genshin.height}`);
let a = captureGameRegion();
log.info(`截图x=${a.x} y=${a.y} w=${a.width} h=${a.height} l=${a.left} t=${a.top} r=${a.right} b=${a.bottom}`);
}
const global_region = captureGameRegion();
//test1();
function template(filename, x, y, w, h, center = true) {
if (center) { x = x - w / 2; y = y - h / 2; }
return RecognitionObject.TemplateMatch(file.ReadImageMatSync(filename), 1920 * x, 1080 * y, 1920 * w, 1080 * h);
//return RecognitionObject.TemplateMatch(file.ReadImageMatSync(filename), genshin.width * x, genshin.height * y, genshin.width * w, genshin.height * h);
}
function template_ocr(x, y, w, h, center = true) {
if (center) { x = x - w / 2; y = y - h / 2; }
return RecognitionObject.Ocr(1920 * x, 1080 * y, 1920 * w, 1080 * h);
}
function draw_obj(obj, name = "test") {
const r = obj.RegionOfInterest;
let s = global_region.deriveCrop(r.x, r.y, r.width, r.height);
s.DrawSelf(name);
}
async function match_click(obj, desc, click = true, timeout = 15000) {
draw_obj(obj, "match");
await sleep(1000);
const start = Date.now();
let x = 1;
while (Date.now() - start < timeout) {
let result = captureGameRegion().Find(obj);
await sleep(800);
if (result.isExist()) {
result.drawSelf("match_found");
if (click) {
result.click();
log.info(`成功识别并点击 ${desc},耗时${Date.now() - start}ms`);
} else {
log.info(`成功识别到 ${desc},耗时${Date.now() - start}ms`);
}
return result;
}
log.info(`${x}次识别并点击 ${desc} 失败,耗时${Date.now() - start}ms`);
x++;
await sleep(1000);
}
throw new OCRError(`等待超时,未找到目标 ${desc}`);
}
async function ocr_click(obj, desc, click = true, timeout = 15000) {
draw_obj(obj, "ocr");
await sleep(1000);
const start = Date.now();
let x = 1;
while (Date.now() - start < timeout) {
let results = captureGameRegion().findMulti(obj);
if (results.Count != 1) {
log.warn(`搜索到${results.Count}个结果预期为1个`);
}
await sleep(800);
if (results.Count == 1) {
results[0].drawSelf("ocr_found");
if (click) {
results[0].click();
log.info(`成功Ocr识别并点击 ${desc} 耗时${Date.now() - start}ms`);
} else {
log.info(`成功Ocr识别到 ${desc} 耗时${Date.now() - start}ms`)
}
return results[0];
}
log.info(`${x}次Ocr识别并点击 ${desc} 失败,耗时${Date.now() - start}ms`);
x++;
await sleep(1000);
}
throw new OCRError(`等待超时未找到Ocr目标 ${desc}`);
}