您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Tracks and estimates hourly XP rate in Nitro Type races
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.cn-greasyfork.org/scripts/501962/1418071/drawXpPieChart.js
- // ==UserScript==
- // @name drawXpPieChart
- // @version 3.5
- // @description Tracks and estimates hourly XP rate in Nitro Type races
- // @author TensorFlow - Dvorak
- // @match *://*.nitrotype.com/race
- // @match *://*.nitrotype.com/race/*
- // @license MIT
- // ==/UserScript==
- function drawXpPieChart() {
- const canvas = document.getElementById('xpPieChart');
- const ctx = canvas.getContext('2d');
- const data = [
- { label: 'Placement', value: xpCategories.placement, cumulative: cumulativeXpCategories.placement, color: '#ff6384' },
- { label: 'Accuracy', value: xpCategories.accuracy, cumulative: cumulativeXpCategories.accuracy, color: '#36a2eb' },
- { label: 'Wampus', value: xpCategories.wampus, cumulative: cumulativeXpCategories.wampus, color: '#cc65fe' },
- { label: 'Friends', value: xpCategories.friends, cumulative: cumulativeXpCategories.friends, color: '#4caf50' },
- { label: 'Gold Bonus', value: xpCategories.goldBonus, cumulative: cumulativeXpCategories.goldBonus, color: '#ffeb3b' },
- { label: 'Speed', value: xpCategories.speed, cumulative: cumulativeXpCategories.speed, color: '#f44336' },
- { label: 'Other', value: xpCategories.other, cumulative: cumulativeXpCategories.other, color: '#ffce56' }
- ].filter(category => category.value > 0); // Filter out categories with value 0
- const total = data.reduce((acc, category) => acc + category.value, 0);
- ctx.clearRect(0, 0, canvas.width, canvas.height);
- let startAngle = 0;
- data.forEach(category => {
- const sliceAngle = (category.value / total) * 2 * Math.PI;
- ctx.beginPath();
- ctx.moveTo(150, 150); // Adjusted for smaller canvas
- ctx.arc(150, 150, 150, startAngle, startAngle + sliceAngle); // Adjusted for smaller canvas
- ctx.closePath();
- ctx.fillStyle = category.color;
- ctx.fill();
- // Draw labels centered within the slice and as far away from the center as possible
- const midAngle = startAngle + sliceAngle / 2;
- const labelX = 150 + (150 - 20) * Math.cos(midAngle); // Adjusted for smaller canvas
- const labelY = 150 + (150 - 20) * Math.sin(midAngle); // Adjusted for smaller canvas
- ctx.fillStyle = "#fff";
- ctx.textAlign = "center";
- ctx.font = "bold 12px Arial";
- ctx.fillText(`${category.label} (${formatNumber(category.cumulative)})`, labelX, labelY);
- startAngle += sliceAngle;
- });
- }