- // ==UserScript==
- // @name Bloble.io NoobScript V3 GameUtils Fragment
- // @namespace http://tampermonkey.net/
- // @version 1.1
- // @description A fragment of code from NoobScript V3 - The FPS and resolution setter.
- // @author NoobishHacker
- // @match http://bloble.io/*
- // @grant none
- // ==/UserScript==
-
- window.UIList = window.UIList || [];
- window.initFuncs = window.initFuncs || [];
- window.statusItems = window.statusItems || [];
- // Resolution and FPS chooser.
- var resolution = 1;
- var rate = 0;
-
- window.removeEventListener("mousemove", gameInput);
-
- window.gameInput = function (a) {
- a.preventDefault();
- a.stopPropagation();
- mouseX = a.clientX * resolution;
- mouseY = a.clientY * resolution;
- }
- window.addEventListener("mousemove", gameInput, false);
- window.removeEventListener("resize", resize);
- window.resize = function (n) {
- screenWidth = window.innerWidth * resolution;
- screenHeight = window.innerHeight * resolution;
- scaleFillNative = MathMAX(screenWidth / maxScreenWidth, screenHeight / maxScreenHeight);
- if (n !== true) {
- mainCanvas.width = screenWidth;
- mainCanvas.height = screenHeight;
- mainCanvas.style.width = (screenWidth / resolution) + "px";
- mainCanvas.style.height = (screenHeight / resolution) + "px";
- }
-
- mainContext.setTransform(scaleFillNative, 0, 0, scaleFillNative, Math.floor((screenWidth - maxScreenWidth * scaleFillNative) / 2), Math.floor((screenHeight - maxScreenHeight * scaleFillNative) / 2));
- player || renderBackground()
- }
- window.addEventListener("resize", resize);
- window.statusItems.push({
- order: 3,
- value: function () {
- return document.getElementById('fps').textContent;
- }
- }, {
- order: 4,
- name: 'Resolution',
- value: function () {
- return document.getElementById('res').textContent;
- }
- });
- window.UIList.push({
- level: 3,
- x: 4,
- html: '<div id="res" onclick=setRes()>Normal Res</div>'
- }, {
- level: 3,
- x: 5,
- html: '<div id="fps" onclick=setFPS()>Unlim FPS</div>'
- }, {
- level: 3,
- x: 1,
- html: '<div id="afk" onclick=afk()>AFK off</div>'
- });
- var afkinterval = false;
- window.afk = function () {
- var element = document.getElementById('afk');
- if (afkinterval) {
- clearInterval(afkinterval)
- afkinterval = false;
- element.textContent = 'AFK off';
- } else {
- afkinterval = setInterval(function () {
- socket.emit("2", Math.round(camX), Math.round(camY));
- }, 1000)
- element.textContent = 'AFK on';
- }
- }
- window.setRes = function () {
- var el = document.getElementById('res');
- if (resolution === 2) {
- resolution = .5;
- el.textContent = 'Low Res';
- } else if (resolution === .5) {
- resolution = .8;
- el.textContent = 'Med Res';
- } else if (resolution === .8) {
- resolution = 1;
- el.textContent = 'Normal Res';
- } else if (resolution === 1) {
- resolution = 1.5;
- el.textContent = 'High Res';
- } else {
- resolution = 2;
- el.textContent = 'Retina Res';
- }
- unitSprites = {};
- resize();
- window.statusBar();
- }
- window.setFPS = function () {
- var el = document.getElementById('fps');
- if (rate === 0) {
- el.textContent = '45 FPS'
- rate = 22;
- } else if (rate === 22) {
- el.textContent = '40 FPS'
- rate = 25;
- } else if (rate === 25) {
- el.textContent = '35 FPS'
- rate = 28;
- } else if (rate === 28) {
- el.textContent = '30 FPS';
- rate = 33;
- } else if (rate === 33) {
- el.textContent = '25 FPS';
- rate = 40;
- } else if (rate === 40) {
- el.textContent = '20 FPS';
- rate = 50;
- } else {
- el.textContent = 'Unlim FPS';
- rate = 0;
- }
- window.statusBar();
- }
-
- window.callUpdate = function () {
- requestAnimFrame(callUpdate);
- currentTime = window.performance.now();
- var a = currentTime - then;
- if (a >= rate) {
- then = currentTime;
- updateGameLoop(a);
- }
- updateMenuLoop(a)
- }
-
- window.makeUI = function () {
- if (window.hasMadeUI) return;
- window.hasMadeUI = true;
- window.statusItems.sort(function (a, b) {
- return a.order - b.order;
- })
- var levels = [];
- window.UIList.forEach((item) => {
- if (!levels[item.level]) levels[item.level] = [];
- levels[item.level].push(item)
- })
-
- levels = levels.filter((a) => {
- if (a) {
- a.sort(function (a, b) {
- return a.x - b.x;
- })
- return true;
- } else {
- return false;
- }
- })
-
- var headAppend = document.getElementsByTagName("head")[0],
- style = document.createElement("div");
-
- var toast = document.createElement('div');
- toast.id = "snackbar";
- var css = document.createElement('div');
-
- css.innerHTML = '<style>\n\
- #snackbar {\n\
- visibility: hidden;\n\
- min-width: 250px;\n\
- margin-left: -125px;\n\
- background-color: rgba(40, 40, 40, 0.5);\n\
- color: #fff;\n\
- text-align: center;\n\
- border-radius: 4px;\n\
- padding: 10px;\n\
- font-family: "regularF";\n\
- font-size: 20px;\n\
- position: fixed;\n\
- z-index: 100;\n\
- left: 50%;\n\
- top: 30px;\n\
- }\n\
- #snackbar.show {\n\
- visibility: visible;\n\
- -webkit-animation: fadein 0.5s;\n\
- animation: fadein 0.5s;\n\
- }\n\
- #snackbar.hide {\n\
- visibility: visible;\n\
- -webkit-animation: fadeout 0.5s;\n\
- animation: fadeout 0.5s;\n\
- }\n\
- @-webkit-keyframes fadein {\n\
- from {top: 0; opacity: 0;}\n\
- to {top: 30px; opacity: 1;}\n\
- }\n\
- @keyframes fadein {\n\
- from {top: 0; opacity: 0;}\n\
- to {top: 30px; opacity: 1;}\n\
- }\n\
- @-webkit-keyframes fadeout {\n\
- from {top: 30px; opacity: 1;}\n\
- to {top: 0; opacity: 0;}\n\
- }\n\
- @keyframes fadeout {\n\
- from {top: 30px; opacity: 1;}\n\
- to {top: 0; opacity: 0;}\n\
- }\n\
- </style>'
- var height = levels.length * (14 + 19) + (levels.length - 1) * 7 + 15;
- style.innerHTML = "<style>\n\
- #noobscriptUI, #noobscriptUI > div > div {\n\
- background-color:rgba(40,40,40,.5);\n\
- margin-left: 3px;\n\
- border-radius:4px;\n\
- pointer-events:all\n\
- }\n\
- #noobscriptUI {\n\
- top: -" + (height + 12) + "px;\n\
- transition: 1s;\n\
- margin-left:10px;\n\
- position:absolute;\n\
- padding-left:24px;\n\
- margin-top:9px;\n\
- padding-top:15px;\n\
- width:580px;\n\
- height: " + height + "px;\n\
- font-family:arial;\n\
- left:25%\n\
- }\n\
- #noobscriptUI:hover{\n\
- top:0px\n\
- }\n\
- #noobscriptUI > div > div {\n\
- color:#fff;\n\
- padding:7px;\n\
- height:19px;\n\
- display:inline-block;\n\
- cursor:pointer;\n\
- font-size:15px\n\
- }\n\
- </style>"
-
- headAppend.appendChild(style);
- headAppend.appendChild(css);
-
-
- var contAppend = document.getElementById("gameUiContainer"),
- menuA = document.createElement("div");
-
- var code = ['<div id="noobscriptUI">\n'];
-
- levels.forEach((items, i) => {
- code.push(i === 0 ? ' <div>\n' : ' <div style="margin-top:7px;">\n');
- items.forEach((el) => {
- code.push(' ' + el.html + '\n');
- })
- code.push(' </div>\n');
- })
- code.push(' <div id="confinfo" style="margin-top:4px; color: white; text-align: center; font-size: 10px; white-space:pre"></div>')
- code.push('</div>');
-
- menuA.innerHTML = code.join("");
- contAppend.insertBefore(menuA, contAppend.firstChild)
- contAppend.appendChild(toast)
- var toastTimeout = false;
- window.showToast = function (msg) {
- toast.textContent = msg;
-
- if (toastTimeout) clearTimeout(toastTimeout);
- else toast.className = "show";
- toastTimeout = setTimeout(function () {
- toast.className = 'hide'
- setTimeout(function () {
- toast.className = '';
- }, 400);
- toastTimeout = false;
- }, 3000);
- }
- window.statusBar = function () {
- var el = document.getElementById('confinfo');
- var text = [];
-
- window.statusItems.forEach((item, i) => {
- if (i !== 0) text.push(' ');
- if (item.name) text.push(item.name + ': ');
- text.push(item.value());
- })
-
- el.textContent = text.join('');
- }
- window.statusBar();
-
- window.initFuncs.forEach((func) => {
- func();
- })
- }
- setTimeout(() => {
- window.makeUI();
- }, 1000)