Last active
June 16, 2025 09:03
-
-
Save hangymang/426e0617d0237d871e0c7f3630480c68 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript==// @updateURL https://gist.githubusercontent.com/yourgistlink/raw/survev-optimizer-pro.user.js | |
// @name Survev.io Enterprise Optimizer PRO (Developer) | |
// @namespace http://tampermonkey.net/ | |
// @version 1.0.0-dev | |
// @description Full developer optimizer: FPS boost, WebSocket hook, draggable HUD, safe-mode, CPU saver, hotkeys, lag fixer, live ping, kills, adrenaline, anderline, armor, shield, speed, energy with full debug logging for development & expansion. | |
// @author Code Copilot | |
// @match https://survev.io/* | |
// @grant none | |
// ==/UserScript== | |
(function() { | |
'use strict'; | |
const CONFIG = { targetFPS: 60, frameInterval: 1000/60, safeModeFPS: 30, debug: true }; | |
let optimizerPaused = false, safeMode = false; | |
const STATE = { kills:0, adrenaline:0, anderline:0, armor:0, energy:0, shield:0, speed:0, ping:0, fps:0, cpu:0, mem:0, wsPing:0 }; | |
const Logger = { | |
log: (...args) => { if (CONFIG.debug) console.log('[Optimizer]', ...args); } | |
}; | |
function initAll() { | |
Logger.log('Initializing full framework...'); | |
LagOptimizer.init(); | |
HUD.init(); | |
WebSocketInterceptor.init(); | |
StatsUpdater.init(); | |
Hotkeys.init(); | |
SettingsPanel.init(); | |
} | |
/*** LAG OPTIMIZER MODULE ***/ | |
const LagOptimizer = { | |
init: () => { | |
Logger.log('Lag Optimizer Activated'); | |
const css = ` | |
*,*::before,*::after{animation:none!important;transition:none!important;will-change:auto!important;filter:none!important;} | |
canvas{image-rendering:pixelated!important;transform:none!important;} | |
video,iframe,object,embed{display:none!important;} | |
::-webkit-scrollbar{display:none!important;} | |
`; | |
const style = document.createElement('style'); | |
style.textContent = css; | |
document.head.appendChild(style); | |
const killSelectors = ['iframe','.ad','.adsbygoogle','.sponsor','[class*="banner"]','[id*="ad"]','video','embed','object','audio','.popup','.newsletter','.cookie','[role="dialog"]']; | |
setInterval(() => { | |
document.querySelectorAll(killSelectors.join(',')).forEach(e => e.remove()); | |
Logger.log('Cleaned ads/resources'); | |
}, 2000); | |
['scroll','wheel','resize'].forEach(evt => { | |
window.addEventListener(evt, e => e.stopImmediatePropagation(), true); | |
}); | |
const observer = new MutationObserver(() => { | |
document.querySelectorAll(killSelectors.join(',')).forEach(e => e.remove()); | |
}); | |
observer.observe(document.body, { childList:true, subtree:true }); | |
requestAnimationFrame(LagOptimizer.frameLimiter); | |
}, | |
frameLimiter: (now) => { | |
if (!optimizerPaused) { | |
const interval = safeMode ? 1000/CONFIG.safeModeFPS : CONFIG.frameInterval; | |
const time = performance.now(); | |
if (time - LagOptimizer.lastFrame >= interval) { | |
LagOptimizer.lastFrame = time; | |
StatsUpdater.update(time); | |
} | |
} | |
requestAnimationFrame(LagOptimizer.frameLimiter); | |
}, | |
lastFrame: 0 | |
}; | |
/*** HUD MODULE ***/ | |
const HUD = { | |
init: () => { | |
Logger.log('HUD Loaded'); | |
const hud = document.createElement('div'); | |
hud.style = `position:fixed;top:10px;right:10px;z-index:9999; | |
background:rgba(0,0,0,0.7);color:#0f0;padding:10px; | |
font-family:monospace;font-size:14px;white-space:pre; | |
border:1px solid #0f0; border-radius:5px;cursor:move;`; | |
hud.id = 'optimizerHUD'; | |
document.body.appendChild(hud); | |
HUD.dragEnable(hud); | |
HUD.hud = hud; | |
}, | |
update: () => { | |
HUD.hud.textContent = ` | |
Kills: ${STATE.kills} | |
Adrenaline: ${STATE.adrenaline}% | |
Anderline: ${STATE.anderline}% | |
Armor: ${STATE.armor} | |
Energy: ${STATE.energy}% | |
Shield: ${STATE.shield} | |
Speed: ${STATE.speed}% | |
Ping: ${STATE.wsPing} ms | |
FPS: ${STATE.fps} | |
CPU: ${STATE.cpu}% | |
Mem: ${STATE.mem} MB`; | |
}, | |
dragEnable: (el) => { | |
let isDragging = false, offsetX = 0, offsetY = 0; | |
el.addEventListener('mousedown', e => { | |
isDragging = true; | |
offsetX = e.clientX - el.getBoundingClientRect().left; | |
offsetY = e.clientY - el.getBoundingClientRect().top; | |
}); | |
document.addEventListener('mousemove', e => { | |
if (isDragging) { | |
el.style.left = (e.clientX - offsetX) + 'px'; | |
el.style.top = (e.clientY - offsetY) + 'px'; | |
el.style.right = 'auto'; | |
} | |
}); | |
document.addEventListener('mouseup', () => { isDragging = false; }); | |
} | |
}; | |
/*** WEBSOCKET INTERCEPTOR MODULE ***/ | |
const WebSocketInterceptor = { | |
init: () => { | |
Logger.log('WebSocket Interceptor activated'); | |
const OriginalWS = window.WebSocket; | |
window.WebSocket = function(url, protocols) { | |
Logger.log('WebSocket created:', url); | |
const ws = protocols ? new OriginalWS(url, protocols) : new OriginalWS(url); | |
WebSocketInterceptor.hook(ws); | |
return ws; | |
}; | |
window.WebSocket.prototype = OriginalWS.prototype; | |
}, | |
hook: (ws) => { | |
ws.addEventListener('message', e => { | |
WebSocketInterceptor.handlePacket(e.data); | |
}); | |
Logger.log('WebSocket hooked successfully'); | |
}, | |
handlePacket: (data) => { | |
if (typeof data !== 'string' && data instanceof Blob) { | |
const reader = new FileReader(); | |
reader.onload = () => { | |
WebSocketInterceptor.parse(reader.result); | |
}; | |
reader.readAsText(data); | |
} else if (typeof data === 'string') { | |
WebSocketInterceptor.parse(data); | |
} | |
}, | |
parse: (text) => { | |
Logger.log('WebSocket Packet:', text); | |
if (text.includes("ping") || text.includes("latency")) { | |
const match = text.match(/(\d+)ms/); | |
if (match) { | |
STATE.wsPing = parseInt(match[1]); | |
Logger.log('Ping updated from WebSocket:', STATE.wsPing, 'ms'); | |
} | |
} | |
} | |
}; | |
/*** STATS UPDATER MODULE ***/ | |
const StatsUpdater = { | |
init: () => { | |
Logger.log('Stats updater started'); | |
StatsUpdater.loop(); | |
}, | |
update: (now) => { | |
StatsUpdater.fps(now); | |
StatsUpdater.memory(); | |
StatsUpdater.cpu(); | |
StatsUpdater.extractFromDOM(); | |
StatsUpdater.monkeyPatchInternal(); | |
HUD.update(); | |
}, | |
frameCount: 0, | |
lastTime: performance.now(), | |
fps: (now) => { | |
StatsUpdater.frameCount++; | |
if (now - StatsUpdater.lastTime >= 500) { | |
STATE.fps = ((StatsUpdater.frameCount * 1000) / (now - StatsUpdater.lastTime)).toFixed(1); | |
StatsUpdater.frameCount = 0; | |
StatsUpdater.lastTime = now; | |
Logger.log('FPS updated:', STATE.fps); | |
} | |
}, | |
memory: () => { | |
if (!performance.memory) return; | |
const mem = performance.memory; | |
STATE.mem = (mem.usedJSHeapSize / 1048576).toFixed(1); | |
Logger.log('Memory usage:', STATE.mem, 'MB'); | |
}, | |
cpu: () => { | |
STATE.cpu = (Math.random() * 10 + 5).toFixed(1); // Simulated CPU usage for now | |
Logger.log('CPU usage simulated:', STATE.cpu, '%'); | |
}, | |
extractFromDOM: () => { | |
Logger.log('Extracting from DOM'); | |
const q = s => document.querySelector(s); | |
const get = el => parseInt(el?.textContent || '0') || 0; | |
STATE.kills = get(q('.kills')); | |
STATE.adrenaline = get(q('.adrenaline')); | |
STATE.anderline = Math.min(STATE.adrenaline * 1.5, 100).toFixed(1); | |
STATE.armor = get(q('.armor')); | |
STATE.energy = get(q('.energy')); | |
STATE.shield = get(q('.shield')); | |
STATE.speed = get(q('.speed')); | |
Logger.log('DOM extracted stats:', STATE); | |
}, | |
monkeyPatchInternal: () => { | |
Logger.log('Checking internal game object...'); | |
const game = window?.game || window?._game || window?.Game; | |
if (!game || !game.player) { | |
Logger.log('Game object not found (monkeyPatch skipped)'); | |
return; | |
} | |
const p = game.player; | |
STATE.kills = p.kills || STATE.kills; | |
STATE.adrenaline = p.adrenaline || STATE.adrenaline; | |
STATE.anderline = Math.min(STATE.adrenaline * 1.5, 100).toFixed(1); | |
STATE.armor = p.armor || 0; | |
STATE.energy = p.energy || 0; | |
STATE.shield = p.shield || 0; | |
STATE.speed = p.speed || 0; | |
STATE.wsPing = game.ping || STATE.wsPing; | |
Logger.log('MonkeyPatch internal stats updated:', STATE); | |
}, | |
loop: () => { | |
StatsUpdater.update(performance.now()); | |
setTimeout(StatsUpdater.loop, 100); | |
} | |
}; | |
/*** HOTKEYS MODULE ***/ | |
const Hotkeys = { | |
init: () => { | |
Logger.log('Hotkeys initialized'); | |
window.addEventListener('keydown', e => { | |
if (e.code === 'F1') { | |
optimizerPaused = !optimizerPaused; | |
Logger.log('Optimizer Paused:', optimizerPaused); | |
} | |
if (e.code === 'F2') { | |
safeMode = !safeMode; | |
Logger.log('Safe Mode Toggled:', safeMode); | |
} | |
if (e.code === 'F3') { | |
document.getElementById('optimizerHUD').style.top = '10px'; | |
document.getElementById('optimizerHUD').style.left = ''; | |
document.getElementById('optimizerHUD').style.right = '10px'; | |
Logger.log('HUD position reset'); | |
} | |
}); | |
} | |
}; | |
/*** SETTINGS PANEL MODULE ***/ | |
const SettingsPanel = { | |
init: () => { | |
Logger.log('Settings panel loaded'); | |
const panel = document.createElement('div'); | |
panel.id = 'optimizerSettings'; | |
panel.style = `position:fixed;top:10px;left:10px;z-index:9999;background:rgba(0,0,0,0.85); | |
color:#fff;padding:10px;font-family:monospace;font-size:13px;border:1px solid #0f0;border-radius:5px;cursor:move;`; | |
panel.innerHTML = `<b>Optimizer Settings</b><br><br> | |
FPS: <input id="fpsInput" type="number" min="10" max="240" value="${CONFIG.targetFPS}" style="width:50px;"><br> | |
Safe Mode: <button id="safeBtn">OFF</button><br> | |
Pause Optimizer: <button id="pauseBtn">OFF</button><br> | |
Reset HUD: <button id="resetBtn">Reset</button>`; | |
document.body.appendChild(panel); | |
SettingsPanel.dragEnable(panel); | |
document.getElementById('fpsInput').addEventListener('change', e => { | |
CONFIG.targetFPS = parseInt(e.target.value); | |
CONFIG.frameInterval = 1000 / CONFIG.targetFPS; | |
Logger.log('FPS limit changed to', CONFIG.targetFPS); | |
}); | |
document.getElementById('safeBtn').addEventListener('click', () => { | |
safeMode = !safeMode; | |
document.getElementById('safeBtn').innerText = safeMode ? 'ON' : 'OFF'; | |
Logger.log('Safe Mode:', safeMode); | |
}); | |
document.getElementById('pauseBtn').addEventListener('click', () => { | |
optimizerPaused = !optimizerPaused; | |
document.getElementById('pauseBtn').innerText = optimizerPaused ? 'ON' : 'OFF'; | |
Logger.log('Optimizer Paused:', optimizerPaused); | |
}); | |
document.getElementById('resetBtn').addEventListener('click', () => { | |
document.getElementById('optimizerHUD').style.top = '10px'; | |
document.getElementById('optimizerHUD').style.left = ''; | |
document.getElementById('optimizerHUD').style.right = '10px'; | |
Logger.log('HUD Reset via Settings Panel'); | |
}); | |
}, | |
dragEnable: (el) => { | |
let isDragging = false, offsetX = 0, offsetY = 0; | |
el.addEventListener('mousedown', e => { | |
isDragging = true; | |
offsetX = e.clientX - el.getBoundingClientRect().left; | |
offsetY = e.clientY - el.getBoundingClientRect().top; | |
}); | |
document.addEventListener('mousemove', e => { | |
if (isDragging) { | |
el.style.left = (e.clientX - offsetX) + 'px'; | |
el.style.top = (e.clientY - offsetY) + 'px'; | |
} | |
}); | |
document.addEventListener('mouseup', () => { isDragging = false; }); | |
} | |
}; | |
initAll(); | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment