您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
隐藏地图中已经标记的点
当前为
// ==UserScript== // @name 原神Wiki地图工具助手 // @namespace http://tampermonkey.net/ // @version 0.2 // @description 隐藏地图中已经标记的点 // @author You // @match https://wiki.biligame.com/ys/%E5%8E%9F%E7%A5%9E%E5%9C%B0%E5%9B%BE%E5%B7%A5%E5%85%B7* // @grant none // @require https://cdn.staticfile.org/jquery/3.3.0/jquery.min.js // @require https://cdn.staticfile.org/jquery-cookie/1.4.1/jquery.cookie.min.js // ==/UserScript== function run() { // “设置界面”是否已经显示 var g_is_setting_shown = false; // 需要隐藏的选项 var g_marked_hidden_categories = new Set(); // info,error自动清除 定时器ID var g_info_timer = -1; var g_error_timer = -1; function isEmpty(e) { return e==null || e.length==0; } function init() { // 从cookie读取配置 var cookie_YsHelper_markedHiddenCategories = $.cookie('YsHelper_markedHiddenCategories'); if (!isEmpty(cookie_YsHelper_markedHiddenCategories)) { g_marked_hidden_categories = new Set(cookie_YsHelper_markedHiddenCategories.split(',')); } // 添加按钮 const export_icon = '<svg t="1617886898612" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9744" width="20" height="20"><path d="M810.666667 938.666667H213.333333a128 128 0 0 1-128-128V213.333333a128 128 0 0 1 128-128h469.333334a42.666667 42.666667 0 0 1 30.293333 12.373334l213.333333 213.333333A42.666667 42.666667 0 0 1 938.666667 341.333333v469.333334a128 128 0 0 1-128 128zM213.333333 170.666667a42.666667 42.666667 0 0 0-42.666666 42.666666v597.333334a42.666667 42.666667 0 0 0 42.666666 42.666666h597.333334a42.666667 42.666667 0 0 0 42.666666-42.666666V358.826667L665.173333 170.666667z" p-id="9745" fill="#1296db"></path><path d="M725.333333 938.666667a42.666667 42.666667 0 0 1-42.666666-42.666667v-298.666667H341.333333v298.666667a42.666667 42.666667 0 0 1-85.333333 0v-341.333333a42.666667 42.666667 0 0 1 42.666667-42.666667h426.666666a42.666667 42.666667 0 0 1 42.666667 42.666667v341.333333a42.666667 42.666667 0 0 1-42.666667 42.666667zM640 384H298.666667a42.666667 42.666667 0 0 1-42.666667-42.666667V128a42.666667 42.666667 0 0 1 85.333333 0v170.666667h298.666667a42.666667 42.666667 0 0 1 0 85.333333z" p-id="9746" fill="#1296db"></path></svg>'; const import_icon = '<svg t="1617887010389" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12733" width="20" height="20"><path d="M927.68 384a32.16 32.16 0 0 1 32.064 35.968l-52.992 419.968A64.416 64.416 0 0 1 842.624 896H181.376a64.416 64.416 0 0 1-64.128-56.064L64.256 419.968a32.064 32.064 0 0 1 28.032-35.712l2.016-0.192L927.68 384z m-36.576 64H132.896l48.48 384h661.248l48.48-384zM342.944 128c24.512 0 46.88 13.728 57.824 35.424L447.36 256h387.68a64.32 64.32 0 0 1 64.608 64v64h-64.64v-64H407.456l-64.48-128H188.928v192H124.32V192c0-35.36 28.928-64 64.64-64h153.984z" fill="#1296db" p-id="12734"></path></svg>'; const setting_icon = '<svg t="1617461830172" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2080" width="20" height="20"><path d="M979.52953384 636.2602336l-73.41605545-62.76490615a402.86174806 402.86174806 0 0 0 5.27122536-64.78041321c0-21.74102172-1.79549069-43.4899012-5.27122536-64.78434205l73.41605545-62.76359654c11.31774649-9.63619288 15.46531688-25.32676461 10.41934635-39.45233899l-1.0070987-2.91128796c-20.28603257-56.59659025-50.3208854-108.60295816-89.3227147-154.55625685l-2.01943593-2.3533893a36.0027967 36.0027967 0 0 0-39.34364041-10.64853006l-91.11689576 32.39217105c-33.6245246-27.57014574-71.1713647-49.31509633-111.73819131-64.55384874l-17.59999947-95.26708539c-2.68734273-14.68347303-14.23427293-26.11515656-28.91643635-28.80773777l-3.02784423-0.55789865c-58.39339055-10.53459303-119.80938685-10.53459303-178.20277744 0l-3.02522498 0.55789865c-14.68478263 2.69258121-26.22647437 14.12426477-28.91905557 28.80773777l-17.70607878 95.71497583c-40.23680208 15.24137165-77.56100659 36.8671467-110.96027633 64.3299035l-91.79004107-32.61611625c-14.01032771-4.93072386-29.70220907-0.78184385-39.33709233 10.64853006l-2.02074551 2.3533893c-39.00444854 46.06199724-69.04192062 98.06836515-89.32402433 154.55625685l-1.00971794 2.91128796c-5.04204166 14.00901808-0.89970978 29.70613794 10.42327521 39.45233899l74.3065979 63.43805146c-3.47442509 21.06918605-5.15728833 42.58626253-5.15728836 63.99464047 0 21.52100535 1.68286324 43.03808184 5.15728836 63.99725971l-74.3065979 63.43674185c-11.32298499 9.6388121-15.46531688 25.32807424-10.42327521 39.45102934l1.00971794 2.91521685c20.2821037 56.48789171 50.31957578 108.60295816 89.32402433 154.55625681l2.02074551 2.35338931a35.99755824 35.99755824 0 0 0 39.33709233 10.6498397l91.79004107-32.61742587c33.39796012 27.46144715 70.72216464 49.20377851 110.96027633 64.33645159l17.70607878 95.71497585c2.69258121 14.68347303 14.23427293 26.11384697 28.91905557 28.80118965l3.02522498 0.55920826a503.64102911 503.64102911 0 0 0 89.10269835 7.96249697c29.92615429 0 59.96362637-2.69389082 89.10007909-7.96249697l3.02784423-0.55920826c14.68216338-2.68734273 26.22909363-14.11771667 28.91643635-28.80118965l17.59999947-95.26577577c40.56813625-15.24922938 78.11366675-36.87369481 111.73819131-64.56039683l91.11689576 32.39217103c14.01032771 4.93072386 29.70613794 0.78184385 39.34364041-10.6498397l2.01943593-2.35338931c39.00182927-46.06330684 69.03668213-98.06836515 89.3227147-154.55625681l1.0070987-2.91521685c5.04597053-13.78114399 0.89840015-29.47171573-10.41934635-39.22446488zM826.54482245 457.16036566a317.23478443 317.23478443 0 0 1 4.25626895 51.66717602c0 17.37736386-1.45498917 34.74425073-4.25626895 51.66455675l-7.39935983 44.94619999 83.72015514 71.62056478c-12.66272751 29.25038974-28.68856225 56.82446435-47.74355085 82.48780158l-104.00487809-36.87369479-35.19476044 28.91774594c-26.78830188 21.96496695-56.60444798 39.22708414-88.87875309 51.33191299l-42.70281882 16.02321549-20.06208734 108.71820486c-31.49508051 3.58443326-63.6567582 3.58443326-95.268395 0l-20.05946809-108.94215007-42.36493656-16.24847036c-31.94297095-12.10613848-61.64125116-29.36563641-88.2056078-51.2219048l-35.18821234-29.02775415-104.6858811 37.20764823c-19.05105975-25.66595651-34.96950557-53.34611039-47.74224124-82.48518237l84.61593606-72.28847159-7.28280356-44.82964368c-2.69258121-16.70421855-4.14757038-33.96502609-4.14757037-50.99926918 0-17.14687051 1.34498098-34.29897953 4.14757037-50.99534035l7.28280356-44.82964367-84.61593606-72.29240047c12.6640371-29.25038974 28.6911815-56.8218451 47.74224124-82.4878016l104.6858811 37.20764821 35.18821234-29.02775413c26.56435663-21.85626838 56.26263684-39.11707594 88.2056078-51.2166663l42.48018322-16.03107325 20.05946812-108.94084045c31.49639013-3.58574288 63.65806782-3.58574288 95.26708534 0l20.06339698 108.71820485 42.70150918 16.02976361c32.16167768 12.09959037 62.09176084 29.36039792 88.87351461 51.32536488l35.19476042 28.91905557 104.00618773-36.87369481c19.05629825 25.66595651 34.97081521 53.35265851 47.74878935 82.49304007l-83.72670325 71.6140167 7.29066127 44.7196355z m0 0" fill="#1296db" p-id="2081"></path><path d="M516.86917167 300.35941806c-108.9382212 0-197.25383718 88.32216409-197.25383718 197.25907567 0 108.94215005 88.31561599 197.25776602 197.25383718 197.25776604 108.94215005 0 197.25645642-88.31692561 197.25645642-197.25776604 0-108.93691157-88.31561599-197.25907566-197.25645642-197.25907567z m88.76481607 286.02389173c-23.75783837 23.65306869-55.25160926 36.76499625-88.76481607 36.76499626-33.50927793 0-65.00435842-13.11323718-88.76612568-36.76499626-23.64913982-23.75652877-36.75844814-55.25029966-36.75844815-88.76481606 0-33.50665868 13.10930834-65.00435842 36.75844815-88.76481606 23.76176725-23.76176725 55.25684776-36.75844814 88.76612568-36.75844816 33.51320678 0 65.00828729 12.99668091 88.76481607 36.75844816 23.65175908 23.76176725 36.76237701 55.25815737 36.76237701 88.76481606 0 33.51451641-13.11061794 65.00828729-36.76237701 88.76481606z m0 0" fill="#1296db" p-id="2082"></path></svg>'; var btn_export = '<a class="ys-helper-btn-upload" onclick="window.YsHelper_export();" style="margin-left:10px;display:none;">' + export_icon + '</a>'; var btn_import = '<a class="ys-helper-btn-download" onclick="window.YsHelper_import();" style="margin-left:10px;display:none;">' + import_icon + '</a>'; var btn_setting = '<a class="ys-helper-btn-setting" onclick="window.YsHelper_showSetting();" style="margin-left:10px;">' + setting_icon + '</a>'; $('.mapMenu').after('<input type="file" id="local_file" style="display:none;">'); $('.mapMenu').after('<div id="ys-helper-btn-group" style="text-align:right;float:right;padding:0px 25px 0;">' + btn_export + btn_import + btn_setting + '</div>'); $('.mapMenu').after('<div id="ys-helper-info-msg" style="color:green;margin-top:5px;"></div>'); $('.mapMenu').after('<div id="ys-helper-error-msg" style="color:red;margin-top:5px;"></div>'); $('#local_file').change(function(e){ var reader = new FileReader(); var file = e.target.files[0]; reader.readAsText(file); reader.onload = function () { try { var data = JSON.parse(reader.result); if (!(data instanceof Array)) { return error('输入文件格式错误'); } $.cookie('last_marked', getMarked()); var marked = JSON.stringify(data); console.log(marked); setMarked(marked); infoReloadPage('读取成功'); } catch(err) { console.log(err); return error('输入文件格式错误, 无法解析'); } }; reader.onerror = function(){ error('读取本地文件失败 (' + reader.error + ')'); } e.target.value=''; }); info('欢迎使用!'); } function info(msg, timeout) { if (msg != '') { $('#ys-helper-error-msg').html(''); msg = '原神助手[提示]:' + msg; clearTimeout(g_info_timer); if (timeout == null) { timeout = 5000; } if (timeout > 0) { g_info_timer = setTimeout(function(){info('');}, timeout); } } $('#ys-helper-info-msg').html(msg); } function error(msg, timeout) { if (msg != '') { $('#ys-helper-info-msg').html(''); msg = '原神助手[错误]:' + msg; clearTimeout(g_error_timer); if (timeout == null) { timeout = 10000; } if (timeout > 0) { g_error_timer = setTimeout(function(){error('');}, timeout); } } $('#ys-helper-error-msg').html(msg); } function infoReloadPage(prefix, suffix) { var msg = ''; if (prefix && prefix != '') { msg += prefix + ', '; } msg += '请<a onclick="location.reload();">【刷新】</a>本页面'; if (suffix && suffix != '') { msg += ', ' + suffix; } return info(msg, 0); } function showSetting() { $('.ys-helper-btn-upload').show(); $('.ys-helper-btn-download').show(); $('.select-item').css('flex', '0 0 45%'); $(".select-item").each(function(){ var categoryid = $(this).attr('categoryid'); var $cbHidden = $('<input class="cb-marked-hidden" type="checkbox" onclick="window.YsHelper_checkStateChanged(\'' + categoryid + '\')" categoryid="' + categoryid + '"' + (isMarkedHidden(categoryid)?'checked="true"':'') + '>'); $(this).before($cbHidden); }); } function hideSetting() { $('.ys-helper-btn-upload').hide(); $('.ys-helper-btn-download').hide(); $('.select-item').css('flex', '0 0 50%'); $('.cb-marked-hidden').remove(); } function isMarkedHidden(categoryid) { return g_marked_hidden_categories.has(categoryid); } function setMarkedHidden(categoryid, hidden) { if (hidden) { g_marked_hidden_categories.add(categoryid); } else { g_marked_hidden_categories.delete(categoryid); if (isShown(categoryid)) { clickIcon(categoryid, 2); } } saveSetting(); } function saveSetting() { $.cookie('YsHelper_markedHiddenCategories', Array.from(g_marked_hidden_categories).toString()); } function isChecked(categoryid) { return $('input[type="checkbox"][categoryid="' + categoryid + '"]').prop('checked'); } window.YsHelper_showSetting = function() { if (g_is_setting_shown) { hideSetting(); g_is_setting_shown = false; } else { showSetting(); g_is_setting_shown = true; } } window.YsHelper_checkStateChanged = function(categoryid) { var checked = isChecked(categoryid); setMarkedHidden(categoryid, checked); } function getMarked() { return localStorage.wikiYsOpacData; } function setMarked(marked) { localStorage.wikiYsOpacData = marked; } function getIconSrcByCategoryid(categoryid) { return $('.select-item[categoryid="' + categoryid + '"]').find('.list-img')[0].currentSrc; } function removeParam(url) { var idx = url.indexOf('?'); return idx==-1 ? url : url.substr(0, idx); } function clickIcon(categoryid, times) { times = times ? times : 1; var $el = $('.select-item[categoryid="' + categoryid + '"]')[0]; for (var i = 0; i < times; ++i) { $el.click(); } } function isShown(categoryid) { return $('.select-item[categoryid="' + categoryid + '"]').hasClass('item-active'); } function showIcon(categoryid) { var $elem = $('.select-item[categoryid="' + categoryid + '"]'); if (!$elem.hasClass('item-active')) { $elem[0].click(); } } function hideIcon(categoryid) { var $elem = $('.select-item[categoryid="' + categoryid + '"]'); if ($elem.hasClass('item-active')) { $elem[0].click(); } } function hideMarkedIcon(categoryid) { var $img = $('img'); var count = 0; var iconSrc = removeParam(getIconSrcByCategoryid(categoryid)); for (var i = 0; i < $img.length; ++i) { if (removeParam($img[i].src) == iconSrc && $img[i].id != '') { var yst = $img[i]; if (yst.style.opacity != '1') { yst.parentNode.removeChild(yst); count++; } } } if (count > 0) { console.log(name + ': ' + count); } return count; } function saveToFile(content, filename) { let downLink = document.createElement('a'); downLink.download = filename; let blob = new Blob([content]) downLink.href = URL.createObjectURL(blob) document.body.appendChild(downLink) downLink.click() document.body.removeChild(downLink) } window.YsHelper_import = function() { return $("#local_file").trigger("click"); } window.YsHelper_export = function() { var marked = getMarked(); if (isEmpty(marked)) { return error('当前没有任何已标记的点'); } var filename = '原神wiki_地图工具_标记点_' + getTimeStr(new Date()) + '.txt'; return saveToFile(marked, filename); } function getTimeStr(time) { var date = new Date(time); var year = date.getFullYear(), month = date.getMonth()+1, day = date.getDate(), hour = date.getHours(), min = date.getMinutes(), sec = date.getSeconds(); var str = year + '' + (month < 10? '0' + month : month) + '' + (day < 10? '0' + day : day) + '_' + (hour < 10? '0' + hour : hour) + '' + (min < 10? '0' + min : min) + '' + (sec < 10? '0' + sec : sec); return str; } function refreshMap() { var $items = $('.select-item'); for (var i = 0; i < $items.length; ++i) { var $item = $items.eq(i); if ($item.hasClass('item-active')) { var categoryid = $items.eq(i).attr('categoryid'); clickIcon(categoryid, 2); } } } /**************************************************/ /* */ /* ready */ /* */ /**************************************************/ init(); setInterval(function(){ for (var categoryid of g_marked_hidden_categories) { hideMarkedIcon(categoryid); } }, 1000); } (function() { 'use strict'; run(); })();