Greasy Fork

Survev.io Anniversary Edition

Give survev.io better experience

目前为 2024-11-12 提交的版本。查看 最新版本

// ==UserScript==
// @name         Survev.io Anniversary Edition
// @namespace    http://tampermonkey.net/
// @license      MIT
// @version      0.2.3
// @description  Give survev.io better experience
// @author       chess5321, .junako, asultra, samerkizi, wzld, #NARS //are in Discord
// @match        https://survev.io/
// @icon         https://cdn.discordapp.com/icons/947128006030282792/c80363d8d6dea22ef392c4d325e0c9f4.png?size=64
// @grant        GM_addStyle
// ==/UserScript==

// #FPS Booster
(function() {
    'use strict';
let MAX=120; //frame rate you desire
requestAnimationFrame=e=>setTimeout(e,1e3/MAX);
})();

// #CSS
(function() {
    'use strict';
// bg
document.addEventListener("mousemove",(e=>{const n=e.clientX/window.innerWidth*100,t=e.clientY/window.innerHeight*100;document.getElementById("background").style.transform=`translate(-${n/10}%, -${t/10}%)`}));
// preload
function preloadImages(o){const e=[];o.forEach((o=>{const r=new Image;r.src=o;r.onload=()=>{e.push(r);console.log(`Image loaded successfully: ${o}`)};r.onerror=()=>{console.error(`Error loading image: ${o}`)}}))}
// Array of image URLs to preload
const imagesToPreload=[
'https://i.imgur.com/N9mhKPf.png',
'https://i.imgur.com/ZwWc1V6.png',
'https://i.imgur.com/ECmba9f.png',
'https://i.imgur.com/aFpnqJh.png',
'https://i.imgur.com/83OJWoB.png',
'https://i.imgur.com/9d2Ovts.png',
'https://i.imgur.com/RhtMT8x.png',
'https://i.imgur.com/AkqE1MW.png',
'https://i.imgur.com/1QYyOVm.png',
'https://i.imgur.com/7fHEEwN.png',
'https://i.imgur.com/GOTXovX.png',
'https://i.imgur.com/MK7KzfH.png',
'https://i.imgur.com/cVXsZuK.png',
'https://i.imgur.com/nI4potb.png',
];
// Call the preload function
preloadImages(imagesToPreload);
// main
GM_addStyle(`
#background{width: 111.090775988% !important;height: 111.090775988% !important}
#start-menu{margin-left: 330px;padding-top: 20px;padding-right: 20px;padding-bottom: 12px;padding-left: 20px}
#team-menu,
#team-mobile-link{margin-left: 167.5px}
#btn-team-mobile-link-leave{margin-left: 205.5px;position: unset}
#social-share-block{pointer-events: none !important;opacity: 0 !important}
#btn-help,#start-help,.ui-emote-hl{display: none !important}
#news-block{opacity: 0 !important;transition: 0.3s !important}
#news-block:hover{opacity: 1 !important}
#start-bottom-right{transition: 0.3s !important;opacity: 0 !important}
#start-bottom-right:hover{opacity: 1 !important}
#btn-customize,.btn-team-option,.btn-start-option,.btn-game-menu,#ui-modal-keybind-list > .ui-keybind-container > .btn-game-menu,#ui-modal-keybind-footer > .btn-darken,#ui-stats-options > .btn-darken,#ui-spectate-buttons,#btn-team-leave,#btn-team-mobile-link-leave{background-color: #35363a;border-bottom: 2px solid #202124;box-shadow: inset 0 -2px #202124}
.player-name-input,#team-link-input,.name-self,#keybind-code-input{background-color: #35363a;color: #ffd700}
#btn-game-tabs > .btn-game-container > .btn-game-menu-selected,.customize-list-item-selected,.btn-hollow-selected,#color-picker-hex,.ui-outline-hover:hover{border-color: #202124 !important}
.btn-hollow,#btn-game-tabs > .btn-game-container > .btn-game-menu{border-color: #3a3a3a !important}
.menu-option:focus,.menu-option.focus{box-shadow: 0 0 1px 1px #202124}
.modal-header,.modal-footer,#ui-modal-keybind-header.modal-header,#ui-modal-keybind-footer.modal-footer,.ui-keybind-container > .btn-keybind-desc-selected,#modal-customize-header.modal-header,#modal-customize-footer.modal-footer,.slider,.slider::-webkit-slider-thumb{background-color: #202124}
#modal-settings-body.modal-body,
#ui-modal-keybind-body.modal-body,#modal-customize-body.modal-body,.modal-customize-cat-selected,.modal-content-right{background-color: #35363a !important}
.modal-customize-cat-connect{background-color: #998000 !important}
#background{animation: change 70s infinite ease-in-out}
@keyframes change {
0%,
2.4% {
background-image: url(https://i.imgur.com/N9mhKPf.png);
}
4.8%,
9.6% {
background-image: url(https://i.imgur.com/ZwWc1V6.png);
}
12%,
16.8% {
background-image: url(https://i.imgur.com/ECmba9f.png);
}
19.2%,
24% {
background-image: url(https://i.imgur.com/83OJWoB.png);
}
26.4%,
31.2% {
background-image: url(https://i.imgur.com/aFpnqJh.png);
}
33.6%,
38.4% {
background-image: url(https://i.imgur.com/9d2Ovts.png);
}
40.8%,
45.6% {
background-image: url(https://i.imgur.com/RhtMT8x.png);
}
48%,
52.8% {
background-image: url(https://i.imgur.com/AkqE1MW.png);
}
55.2%,
60% {
background-image: url(https://i.imgur.com/1QYyOVm.png);
}
62.4%,
67.2% {
background-image: url(https://imgur.com/7fHEEwN.png);
}
69.6%,
74.4% {
background-image: url(https://i.imgur.com/GOTXovX.png);
}
76.8%,
81.6% {
background-image: url(https://i.imgur.com/MK7KzfH.png);
}
84%,
88.8% {
background-image: url(https://i.imgur.com/cVXsZuK.png);
}
91.2%,
96% {
background-image: url(https://i.imgur.com/nI4potb.png);
}
98.4%,
100% {
background-image: url(https://i.imgur.com/N9mhKPf.png);
}
}
`);
})();

// #FPS Counter
(function() {
let fps=0,ping=0,lastLoop=performance.now(),frameCount=0;
// Create FPS display
const fpsDisplay = document.createElement('div');
fpsDisplay.style.position = 'absolute';
fpsDisplay.style.top = '50%'; // Middle of the screen vertically
fpsDisplay.style.left = '10px'; // Left side of the screen
fpsDisplay.style.transform = 'translateY(-50%)'; // Centers it vertically based on the top position
fpsDisplay.style.color = 'white';
fpsDisplay.style.fontSize = '14px'; // Smaller font size
fpsDisplay.style.fontFamily = '"roboto condensed", sans-serif'; // Regular Arial font without bold
fpsDisplay.style.textShadow = '1px 1px 2px black'; // Slight shadow for visibility
fpsDisplay.style.backgroundColor = 'rgba(0, 0, 0, 0.3)';
fpsDisplay.style.padding = '3px 5px'; // Padding around the text
fpsDisplay.style.borderRadius = '5px'; // Slightly rounded corners for styling
fpsDisplay.style.zIndex = '10000'; // Ensure the FPS display is on top
fpsDisplay.innerHTML = `0 FPS`;
document.body.appendChild(fpsDisplay);
// Update FPS
function updateCounters(){const e=performance.now(),n=e-lastLoop;frameCount++;n>=1e3&&(fps=frameCount,frameCount=0,lastLoop=e,fpsDisplay.innerHTML=`${fps} FPS`);requestAnimationFrame(updateCounters)}document.body.appendChild(fpsDisplay);updateCounters();
})();

// #LAT Counter
const pingDisplay = document.createElement('div');
pingDisplay.style.position = 'absolute';
pingDisplay.style.top = 'calc(50% + 25px)'; // Positioned below FPS counter
pingDisplay.style.left = '10px'; // Align with FPS counter
pingDisplay.style.transform = 'translateY(-50%)'; // Centers it vertically based on the top position
pingDisplay.style.color = 'white'; // Yellow color for ping counter
pingDisplay.style.fontSize = '14px'; // Same font size as FPS counter
pingDisplay.style.fontFamily = '"roboto condensed", sans-serif'; // Regular Arial font
pingDisplay.style.textShadow = '1px 1px 2px black'; // Slight shadow for visibility
pingDisplay.style.backgroundColor = 'rgba(0, 0, 0, 0.3)';
pingDisplay.style.padding = '3px 5px'; // Padding around the text
pingDisplay.style.borderRadius = '5px'; // Slightly rounded corners for styling
pingDisplay.style.zIndex = '10000'; // Ensure the Ping display is on top
pingDisplay.innerHTML = `NaN ms`; // Use backticks for string interpolation
document.body.appendChild(pingDisplay);
var region,DOM_observer,ws,sendTime={},receiveTime={},teamJoined=document.getElementById("msg-wait-reason"),endBtn=document.getElementById("ui-stats-options");function wsUrl(){var e,n=[];return"na"===region?n.push("usr"):"eu"===region?n.push("eur"):"asia"===region?n.push("asr"):"sa"===region&&n.push("sa"),e=`wss://${n}.mathsiscoolfun.com:8001/ptc`}function doSend(e){1===ws.readyState&&(sendTime=Date.now(),ws.send(e))}function getPing(){var e,n=wsUrl();(ws=new WebSocket(n)).onopen=()=>{doSend(new ArrayBuffer(1))},ws.onclose=()=>{pingDisplay.innerHTML="NaN ms"},ws.onmessage=()=>{e=(receiveTime=Date.now())-sendTime,pingDisplay.innerHTML=`${e} ms`,setTimeout(()=>{doSend(new ArrayBuffer(1))},1500)},ws.onerror=()=>{pingDisplay.innerHTML="ERR."}}window.onload=()=>{var e,n=document.getElementsByClassName("btn-green btn-darken menu-option");[n[0],n[1],n[2]].forEach(e=>{e.onclick=()=>{region=document.getElementById("server-select-main").value,getPing()}}),n[3].onclick=()=>{region=document.getElementById("team-server-select").value,getPing()}},document.getElementById("btn-game-quit").onclick=()=>{ws.close()},document.getElementById("btn-spectate-quit").onclick=()=>{ws.close()},(DOM_observer=new MutationObserver(e=>{1===e[0].addedNodes.length?endBtn.getElementsByTagName("a")[0].onclick=()=>{ws.close()}:3===e[0].addedNodes.length&&(region=document.getElementById("team-server-select").value,getPing())})).observe(endBtn,{childList:!0}),DOM_observer.observe(teamJoined,{childList:!0}),wsUrl();

// #HP&AD Counter
!function(){"use strict";var e=0,t=document.createElement("span");t.style="display:block;position:fixed;z-index: 2;margin:6px 0 0 0;right: 15px;mix-blend-mode: difference;font-weight: bold;font-size:large;";document.querySelector("#ui-health-container").appendChild(t);var n=document.createElement("span");n.style="display:block;position:fixed;z-index: 2;margin:6px 0 0 0;left: 15px;mix-blend-mode: difference;font-weight: bold;font-size: large;";document.querySelector("#ui-health-container").appendChild(n);setInterval((function(){var i=document.getElementById("ui-health-actual").style.width.slice(0,-1);e!==i&&(e=i,t.innerHTML=Number.parseFloat(i).toFixed(1));var o=25*document.getElementById("ui-boost-counter-0").querySelector(".ui-bar-inner").style.width.slice(0,-1)/100+25*document.getElementById("ui-boost-counter-1").querySelector(".ui-bar-inner").style.width.slice(0,-1)/100+37.5*document.getElementById("ui-boost-counter-2").querySelector(".ui-bar-inner").style.width.slice(0,-1)/100+12.5*document.getElementById("ui-boost-counter-3").querySelector(".ui-bar-inner").style.width.slice(0,-1)/100;n.innerHTML=Math.round(o)}))}();

// #Make things easy xlibizi toynet
function delAds(e){document.getElementById(e)&&document.getElementById(e).remove()}
setInterval(function(){
var adsA=document.getElementsByClassName("ad-block-leaderboard-bottom")[0];
delAds("start-top-left");
delAds("leaderboard-front");
delAds("start-bottom-left");
delAds("adunit");
delAds("ad-block-left");
delAds("ui-stats-ad-container-desktop");
delAds("social-share-block-wrapper");
adsA&&adsA.remove();
},100);