Untitled
3 years ago in JavaScript
// ==UserScript==
// @name Surviv.io Counters
// @namespace https://tampermonkey.net/
// @version 1.0
// @description An ingame counter overlay to view connection stats and in-game health stats.
// @author jaf
// @match *://surviv.io/*
// @match *://surviv2.io/*
// @match *://2dbattleroyale.com/*
// @match *://2dbattleroyale.org/*
// @match *://piearesquared.info/*
// @match *://thecircleisclosing.com/*
// @match *://drchandlertallow.com/*
// @match *://parmainitiative.com/*
// @match *://ot38.club/*
// @match *://c79geyxwmp1zpas3qxbddzrtytffta.ext-twitch.tv/c79geyxwmp1zpas3qxbddzrtytffta/1.0.2/ce940530af57d2615ac39c266fe9679d/*
// @match *://*.c79geyxwmp1zpas3qxbddzrtytffta.ext-twitch.tv/c79geyxwmp1zpas3qxbddzrtytffta/1.0.2/ce940530af57d2615ac39c266fe9679d/*
// @match *://twitch.tv/popout/survivio/extensions/c79geyxwmp1zpas3qxbddzrtytffta/*
// @match *://*.twitch.tv/popout/survivio/extensions/c79geyxwmp1zpas3qxbddzrtytffta/*
// @grant GM_xmlHttpRequest
// ==/UserScript==
let times = [];
const getPing = () => {
let ping = new Date;
let request = new XMLHttpRequest();
request.open(`GET`, window.location.href, true);
request.onload = (() => {
document.querySelector(`#latWrapper > span`).innerHTML = `${new Date - ping} LAT`;
setTimeout(getPing, 500);
});
request.send();
}
const getFPS = () => {
window.requestAnimationFrame(() => {
const now = performance.now();
while(times.length > 0 && times[0] <= now - 1000) times.shift();
times.push(now);
document.querySelector(`#fpsWrapper > span`).innerHTML = `${times.length} FPS`;
getFPS();
});
}
const getHealth = () => {
let healthBar = document.querySelector(`#ui-health-actual`);
return Math.round(healthBar.clientWidth / 4);
}
const getBoost = () => {
let boostActualWidth = 0;
let boosts = document.querySelectorAll(`.ui-boost-base .ui-bar-inner`);
boosts.forEach((boost, i) => {
if(i <= 1) boostActualWidth += parseInt(boost.style.width.slice(0, boost.style.width.length - 1)) / 4;
else if(i == 2) boostActualWidth += parseInt(boost.style.width.slice(0, boost.style.width.length - 1)) / 2.5;
else if(i == 3) boostActualWidth += parseInt(boost.style.width.slice(0, boost.style.width.length - 1)) / 10;
});
return Math.round(boostActualWidth);
}
const injectCSS = () => {
let style = document.createElement(`style`);
style.innerHTML = `
.box-container {
background: rgba(0, 0, 0, 0.25);
border-radius: 5px;
padding: 8px;
}
#hpWrapper, #btWrapper {
width: 50px;
margin-right: 5px;
display: inline-block;
}
#fpsWrapper, #latWrapper {
margin: 5px 0px;
width: 192px;
}
#ui-spectate-options {
top: 85px;
}
#copd {
position: relative;
top: 97px;
left: -55%;
width: 205px;
text-align: center;
}
`;
document.head.appendChild(style);
}
const createElements = () => {
//Add FPS
let fpsWrapper = document.createElement(`div`);
fpsWrapper.id = `fpsWrapper`;
fpsWrapper.classList.add(`box-container`);
let fps = document.createElement(`span`);
fpsWrapper.appendChild(fps);
document.querySelector(`#ui-top-left`).appendChild(fpsWrapper);
//Add LAT
let latWrapper = document.createElement(`div`);
latWrapper.id = `latWrapper`;
latWrapper.classList.add(`box-container`);
let lat = document.createElement(`span`);
latWrapper.appendChild(lat);
document.querySelector(`#ui-top-left`).appendChild(latWrapper);
//Create bottom wrapper.
let boostCounter = document.querySelector(`#ui-boost-counter`);
let botWrapper = document.createElement(`div`);
botWrapper.id = `numWrapper`;
document.querySelector(`#ui-bottom-center-0`).insertBefore(botWrapper, boostCounter);
//Add HP
let hpWrapper = document.createElement(`div`);
hpWrapper.classList.add(`box-container`);
hpWrapper.id = `hpWrapper`;
let hpTxt = document.createElement(`span`);
setInterval(() => (hpTxt.innerHTML = `HP: ${getHealth()}`));
hpWrapper.appendChild(hpTxt);
botWrapper.appendChild(hpWrapper);
//Add Boost
let adWrapper = document.createElement(`div`);
adWrapper.classList.add(`box-container`);
adWrapper.id = `btWrapper`;
let adTxt = document.createElement(`span`);
setInterval(() => (adTxt.innerHTML = `AD: ${getBoost()}`));
adWrapper.appendChild(adTxt);
botWrapper.appendChild(adWrapper);
}
const runScripts = () => {
let a = document.createElement(`div`);
a.id = `copd`;
a.classList.add(`box-container`);
let sp = document.createElement(`span`);
sp.innerHTML = `Subscribe to jaf :D`;
a.appendChild(sp);
let b = document.querySelector(`#numWrapper`);
document.querySelector(`#ui-bottom-center-0`).insertBefore(a, b);
}
const mainScript = () => {
createElements();
injectCSS();
getFPS();
getPing();
runScripts();
}
mainScript();