// ==UserScript==
// @name Survev.io Anniversary Edition
// @namespace http://tampermonkey.net/
// @license MIT
// @version 0.2.2
// @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
var region,DOM_observer,ws,sendTime={},receiveTime={},teamJoined=document.getElementById("msg-wait-reason"),endBtn=document.getElementById("ui-stats-options");function wsUrl(){var e=[];return"na"===region?e.push("usr"):"eu"===region?e.push("eur"):"asia"===region?e.push("asr"):"sa"===region&&e.push("sa");`wss://${e}.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=()=>{receiveTime=Date.now();e=receiveTime-sendTime;pingDisplay.innerHTML=`${e} ms`;setTimeout((()=>{doSend(new ArrayBuffer(1))}),1500)};ws.onerror=()=>{pingDisplay.innerHTML="ERR."}}window.onload=()=>{var e=document.getElementsByClassName("btn-green btn-darken menu-option");[e[0],e[1],e[2]].forEach((e=>{e.onclick=()=>{region=document.getElementById("server-select-main").value;getPing()}}));e[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();
// Create LAT display
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);
// #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);