您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Displays the time it took you to restock an item on grundos.cafe
当前为
- // ==UserScript==
- // @name GC Restock timer
- // @namespace https://github.com/windupbird144/
- // @version 0.4
- // @description Displays the time it took you to restock an item on grundos.cafe
- // @author github.com/windupbird144/
- // @match https://www.grundos.cafe/*
- // @grant none
- // @license https://unlicense.org/
- // ==/UserScript==
- (function() {
- /**
- * Displays a timer to show how long it took you to restock an item on neopetsclassic.
- * The timer is shown on the page that says "<Item> has been added to your inventory" page.
- * Limitation: The exact time when your restock is confirmed is only known on the neopetsclassic
- * server. We can only approximate it here.
- */
- "use strict";
- // If you change the way time is measured, update the version
- const timingVersion = "0";
- const newTimer = () => ({ start: Date.now(), stop: -1 });
- const stopTimer = (t) => ({ start: t.start, stop: Date.now() });
- const durationMs = (t) => t.stop - t.start;
- const save = (t) => localStorage.setItem('timer', JSON.stringify(t));
- const load = () => JSON.parse(localStorage.getItem('timer'));
- // Reset the timer and saves it. Only runs when you visit or refresh a shop
- function resetTimer() {
- const path = window.location.pathname;
- if (path.includes('viewshop')) {
- save(newTimer());
- return true;
- }
- }
- // Stops the timer and displays the duration on the page
- function stopAndDisplayTimer() {
- const target = document.querySelector(`button[onclick*='viewshop']`);
- if (!target) {
- return;
- }
- let timer = load();
- if (!timer) {
- return;
- }
- timer = stopTimer(timer);
- const seconds = (durationMs(timer) / 1000).toFixed(3);
- const msg = `You restocked this item in ${seconds} seconds.`;
- const html = `<div title="timing version ${timingVersion}"><br><b>${msg}</b></div>`;
- target.insertAdjacentHTML('afterend', html);
- }
- // If you run resetTimer, do not run stopAndDisplayTimer and vice verse
- resetTimer() || stopAndDisplayTimer();
- })();