您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds to games a quick reference of how many points you'll need to max out your remaining NP. Currently doesn't account for computer science bonus (hoping to add it soon keep an eye out for update)
当前为
// ==UserScript== // @name GC - Games Points til Max NP // @namespace https://greasyfork.org/en/users/1202961-13ulbasaur // @version 0.3 // @description Adds to games a quick reference of how many points you'll need to max out your remaining NP. Currently doesn't account for computer science bonus (hoping to add it soon keep an eye out for update) // @author You // @match https://www.grundos.cafe/games/html5/* // @icon https://www.google.com/s2/favicons?sz=64&domain=grundos.cafe // @grant none // @license MIT // ==/UserScript== //Set up the observer for when np changes const npElement = document.getElementById('np_earned'); const config = { attributes: true, childList: true, subtree: true }; const gameInfo = document.querySelector('div.games-info div.bg-action') let featuredGame = false; try { featuredGame = document.querySelector('strong.green.large-font').innerText.includes('This game is featured'); } catch{ } gameInfo.querySelector('div:nth-child(2)').insertAdjacentHTML('beforebegin',`<span id="npToEarn" style='text-align:center'></span>`) const npToEarnElem = document.getElementById('npToEarn') // Callback function to execute when mutations are observed const callback = (mutationList, observer) => { for (const mutation of mutationList) { console.log(`mutation type: ${mutation.type}`); updatePoints(); } }; // Create an observer instance linked to the callback function const observer = new MutationObserver(callback); // Start observing the target node for configured mutations observer.observe(npElement, config); function updatePoints() { // Your code here... //Get the np per points info let npPerPoints = Number(gameInfo.querySelector('div:first-child span:first-child strong:nth-child(2)').textContent.replaceAll(/(?=NP).*/gi,'').replaceAll(',','').trim()); if (featuredGame) { npPerPoints = npPerPoints*2; } //Get max NP const maxNP = Number(gameInfo.querySelector('div:last-child span:first-child strong:last-child').textContent.replaceAll(',','').trim()); //Get the remaining NP to obtain const npRemaining = maxNP-Number(document.getElementById('np_earned').textContent.replaceAll('NP','').replaceAll(',','').trim()); let pointsToEarn; if (npRemaining > 0) { //Points to get calculation: //Rounded up since I dont think any games have decimal point points. pointsToEarn = Math.ceil(npRemaining/npPerPoints) } else { pointsToEarn = 'All Done!' } npToEarnElem.innerHTML = `Points to Max:<br><strong>${pointsToEarn}</strong>`; } updatePoints();