您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
The completion logs now show images of undiscovered items/monsters/pets, including those entities that do not count towards completion.
- // ==UserScript==
- // @name Melvor Completion Log Helper
- // @namespace http://tampermonkey.net/
- // @version 0.7.1
- // @description The completion logs now show images of undiscovered items/monsters/pets, including those entities that do not count towards completion.
- // @author GMiclotte
- // @include https://melvoridle.com/*
- // @include https://*.melvoridle.com/*
- // @exclude https://melvoridle.com/index.php
- // @exclude https://*.melvoridle.com/index.php
- // @exclude https://wiki.melvoridle.com/*
- // @exclude https://*.wiki.melvoridle.com/*
- // @inject-into page
- // @noframes
- // @grant none
- // ==/UserScript==
- /* jshint esversion: 6 */
- // Thanks to Breindahl#2660 for the original implementation
- // Big thanks to Visua#9999 for helping with parts of the code and troubleshooting
- ((main) => {
- const script = document.createElement('script');
- script.textContent = `try { (${main})(); } catch (e) { console.log(e); }`;
- document.body.appendChild(script).parentNode.removeChild(script);
- })(() => {
- function patchCode(code, additionalPatch) {
- code = code.toString();
- code = code.replace(/!items\[[a-zA-Z]*\].ignoreCompletion/g, 'true');
- code = code.replace(/!MONSTERS\[[a-zA-Z]*\].ignoreCompletion/g, 'true');
- code = code.replace(/!PETS\[[a-zA-Z]*\].ignoreCompletion/g, 'true');
- if (additionalPatch !== undefined) {
- code = additionalPatch(code);
- }
- return code.replace(/^function (\w+)/, 'window.$1 = function');
- }
- const toPatch = [
- filterItemLog,
- createItemLogTooltip,
- createMonsterLogTooltip,
- createPetLogTooltip,
- ];
- function additionalPatchApplyCompletionLogEntryElement(code) {
- code = code.split(/Element\(-8,/);
- for (let i = 1; i < code.length; i++) {
- code[i] = code[i].replace(';', `; const htmlIdx = html.lastIndexOf('<img ') + 5; html = html.substring(0, htmlIdx) + 'style="opacity: 25%"' + html.substring(htmlIdx); `);
- }
- return code.join('Element(id,');
- }
- function startCompletionLogHelper() {
- // patch functions
- toPatch.forEach(x => eval(patchCode(x)));
- eval(patchCode(applyCompletionLogEntryElement, additionalPatchApplyCompletionLogEntryElement));
- // reset loaded variables
- itemLogLoaded = false;
- monsterLogLoaded = false;
- petLogLoaded = false;
- // build Monster and pet logs
- buildMonsterLog();
- buildPetLog();
- // logging
- console.log('Melvor Completion Log Helper Loaded');
- }
- function loadScript() {
- if (typeof confirmedLoaded !== typeof undefined && confirmedLoaded) {
- clearInterval(scriptLoader);
- startCompletionLogHelper();
- }
- }
- const scriptLoader = setInterval(loadScript, 200);
- });