您需要先安装一个扩展,例如 篡改猴、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 once I get comp sci bonus myself)
当前为
- // ==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 once I get comp sci bonus myself)
- // @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();