diff --git a/repo/js/AutoNobushi/main.js b/repo/js/AutoNobushi/main.js new file mode 100644 index 00000000..57d048b8 --- /dev/null +++ b/repo/js/AutoNobushi/main.js @@ -0,0 +1,85 @@ +(async function () { + const raw_pathing = ['稻妻-野伏众-八酝岛名椎滩-11个.json', '稻妻-野伏众-八酝岛无想刃狭间东南方岸边-6个.json', '稻妻-野伏众-八酝岛无想刃狭间南方-4个.json', '稻妻-野伏众-八酝岛绯木村东北半山腰-1个.json', '稻妻-野伏众-八酝岛绯木村内蛇神之首左蛇骨矿洞左-16个.json', '稻妻-野伏众-八酝岛藤兜砦东略偏北岸边-4个.json', '稻妻-野伏众-八酝岛藤兜砦北-2个.json', '稻妻-野伏众-八酝岛藤兜砦崖上-6个.json', '稻妻-野伏众-八酝岛藤兜砦西-1个.json', '稻妻-野伏众-八酝岛蛇神之首东方-9个.json', '稻妻-野伏众-八酝岛蛇骨矿洞上方-2个.json', '稻妻-野伏众-八酝岛蛇骨矿洞东南-6个.json', '稻妻-野伏众-八酝岛蛇骨矿洞南崖下-4个.json', '稻妻-野伏众-海祇岛北方最远处浅滩-3个.json', '稻妻-野伏众-海祇岛北方略偏左-4个.json', '稻妻-野伏众-海祇岛曚云神社北方-4个.json', '稻妻-野伏众-海祇岛望泷村东北方河边瀑布边-4个.json', '稻妻-野伏众-海祇岛望泷村左侧崖上-2个.json', '稻妻-野伏众-海祇岛望泷村左侧崖下岸边-3个.json', '稻妻-野伏众-海祇岛水月池东南岸边-3个.json', '稻妻-野伏众-海祇岛水月池南略偏右-3个.json', '稻妻-野伏众-海祇岛珊瑚宫下火炬间-1个.json', '稻妻-野伏众-海祇岛珊瑚宫东北方-3个.json', '稻妻-野伏众-清籁岛天云峠东侧-8个.json', '稻妻-野伏众-清籁岛平海砦-11个.json', '稻妻-野伏众-清籁岛平海砦南方-3个.json', '稻妻-野伏众-清籁岛浅濑神社东-5个.json', '稻妻-野伏众-清籁岛越石村东方崖下-2个.json', '稻妻-野伏众-神无冢九条阵屋东南-9个.json', '稻妻-野伏众-神无冢九条阵屋西北-2个.json', '稻妻-野伏众-神无冢九条阵屋西崖下-3个.json', '稻妻-野伏众-神无冢九条阵屋西海岸-7个.json', '稻妻-野伏众-神无冢踏鞴砂东-5个.json', '稻妻-野伏众-神无冢踏鞴砂东南-7个.json', '稻妻-野伏众-神无冢踏鞴砂北岸边-3个.json', '稻妻-野伏众-神无冢踏鞴砂南方略偏东岸边-5个.json', '稻妻-野伏众-神无冢踏鞴砂南方略偏西岸边-5个.json', '稻妻-野伏众-神无冢踏鞴砂西崖上-2个.json', '稻妻-野伏众-鸣神岛刃连岛崖上-4个.json', '稻妻-野伏众-鸣神岛刃连岛崖下-13个.json', '稻妻-野伏众-鸣神岛白狐之野东南-1个.json', '稻妻-野伏众-鸣神岛神里屋敷东北-3个.json', '稻妻-野伏众-鸣神岛绀田村西侧和北侧-8个.json', '稻妻-野伏众-鸣神岛镇守之森东南-4个.json', '稻妻-野伏众-鸣神岛鸣神大社北岸边-2个.json', '稻妻-野伏众-鸣神岛鸣神大社北崖上-2个.json', '稻妻-野伏众-鸣神岛鸣神大社南侧瀑布下-2个.json', '稻妻-野伏众-鸣神岛鸣神大社西侧海岸-2个.json'] + const areas = { + path_restriction_NarukamiIsland: "鸣神岛", + path_restriction_Kannazuka: "神无冢", + path_restriction_YashioriIsland: "八酝岛", + path_restriction_SeiraiIsland: "清籁岛", + path_restriction_WatatsumiIsland: "海祇岛" + }; + const base_path = "assets/pathing/"; + let pathing = []; + let minimum = typeof(settings.path_restriction_min) === 'undefined' ? 0 : parseInt(settings.path_restriction_min, 10); + let maximum = typeof(settings.path_restriction_max) === 'undefined' ? 0 : parseInt(settings.path_restriction_max, 10); + + // 获取路径包含的数目信息,未获取到则返回0 + function get_pathing_num(pathing_name) { + const match = pathing_name.match(/-(\d+)个\.json$/); + return match ? parseInt(match[1], 10) : 0; + } + + // 根据脚本配置筛选路径并显示配置 + function pathing_filter() { + const ban_area = []; + + log.info(`<--------当前配置-------->`) + + // 检查并添加禁用的区域 + for (const [key, value] of Object.entries(areas)) { + if (settings[key]) { + ban_area.push(value); + log.info(`地区:${value} <-已禁用->`); + } else { + log.info(`地区:${value} <-已启用->`); + } + } + + // 过滤禁用的区域路径 + let temp_pathing = raw_pathing.filter(path => !ban_area.some(region => path.includes(region))); + // 过滤路径的数量 + if (minimum < maximum) { + temp_pathing = temp_pathing.filter(path => { + const amount = get_pathing_num(path); + return minimum < amount && amount <= maximum; + }); + log.info(`单个路径限制个体数:(${minimum}, ${maximum}]`) + } else { + log.info("错误:未配置'最小值'和'最大值'或配置错误!"); + log.info("单个路径限制个体数:不限"); + } + return temp_pathing; + } + + async function main() { + pathing = pathing_filter(); + // 延迟10s启动 + const responseTime = settings.response_time !== undefined ? parseInt(settings.response_time, 10) : 10; + log.info(`将在${responseTime}s后开始...`); + await sleep(responseTime * 1000); + + // 总路径数 + const pathing_num = pathing.length; + // 总个体数 + let entity_num = pathing.reduce((total, p) => total + get_pathing_num(p), 0); + + let pathing_count = 0; // 计数用 + let entity_count = 0; // 计数用 + for (const element of pathing) { + try { + log.info(`开始地图追踪:${element}`); + + dispatcher.addTimer(new RealtimeTimer("AutoPick", { "forceInteraction": true })); + let file_path = base_path + element; + await pathingScript.runFile(file_path); + + pathing_count++; + entity_count += get_pathing_num(element); + log.info(`当前进度(地图追踪):${pathing_count}/${pathing_num}`); + log.info(`当前进度(野伏众):${entity_count}/${entity_num}`) + } catch (error) { + log.info(`地图追踪:${element} 执行中发生错误`); + } + } + } + await main(); +})(); \ No newline at end of file diff --git a/repo/js/AutoNobushi/manifest.json b/repo/js/AutoNobushi/manifest.json new file mode 100644 index 00000000..65f6c477 --- /dev/null +++ b/repo/js/AutoNobushi/manifest.json @@ -0,0 +1,14 @@ +{ + "manifest_version": 1, + "name": "野伏众(全流程+自选)[自动拾取]", + "version": "1.0", + "bgi_version": "0.39.1", + "description": "脚本名称:野伏众(全流程+自选)[自动拾取]\n功能描述:包含全图野伏众自动追踪路径、支持自主筛选路径\n核心功能------------------------------>\n1.根据路径点包含的野伏众数量筛选,通过选择最小值和最大值确定区间\n2.支持手动排除不想刷取的区域\n3.每次路径执行结束后显示刷取进度\n注意事项------------------------------>\n1.在设置脚本配置的'限制路径点包含的野伏众数量'时,应当确保'最小值'小于'最大值'\n2.避免使用位移距离较大的角色,以免意外掉出路径(跳崖or跳水)\n3.设置中的'延迟启动'指的是脚本在开始执行前的等待时间,用于再次确认配置是否正确\n---------------------------------------->\n版本:ver1.0\n作者:提瓦特钓鱼玳师\n脚本反馈邮箱:hijiwos@hotmail.com", + "authors": [ + { + "name": "提瓦特钓鱼玳师" + } + ], + "settings_ui": "settings.json", + "main": "main.js" +} diff --git a/repo/js/AutoNobushi/settings.json b/repo/js/AutoNobushi/settings.json new file mode 100644 index 00000000..0c1e8fcf --- /dev/null +++ b/repo/js/AutoNobushi/settings.json @@ -0,0 +1,93 @@ +[ + { + "name": "path_restriction_min", + "type": "select", + "label": "限制路径点包含的野伏众数量:最小值", + "options": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16" + ] + }, + { + "name": "path_restriction_max", + "type": "select", + "label": "限制路径点包含的野伏众数量:最大值", + "options": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16" + ] + }, + { + "name": "path_restriction_NarukamiIsland", + "type": "checkbox", + "label": "排除地区:鸣神岛" + }, + { + "name": "path_restriction_Kannazuka", + "type": "checkbox", + "label": "排除地区:神无冢" + }, + { + "name": "path_restriction_YashioriIsland", + "type": "checkbox", + "label": "排除地区:八酝岛" + }, + { + "name": "path_restriction_SeiraiIsland", + "type": "checkbox", + "label": "排除地区:清籁岛" + }, + { + "name": "path_restriction_WatatsumiIsland", + "type": "checkbox", + "label": "排除地区:海祇岛" + }, + { + "name": "response_time", + "type": "select", + "label": "延迟启动时间(s)", + "options": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10" + ] + } +]