Veck.io FPS Enhancer

Aimbot and ESP features for veck.io FPS game

Size

13.5 KB

Version

1.0.1

Created

Mar 29, 2026

Updated

19 days ago

1// ==UserScript==
2// @name		Veck.io FPS Enhancer
3// @description		Aimbot and ESP features for veck.io FPS game
4// @version		1.0.1
5// @match		https://*.veck.io/*
6// @icon		https://veck.io/favicon/favicon.ico
7// ==/UserScript==
8(function() {
9    'use strict';
10
11    console.log('[Veck.io FPS Enhancer] Extension loaded');
12
13    // Configuration
14    let config = {
15        espEnabled: true,
16        aimbotEnabled: true,
17        espColor: '#00ff00',
18        espBoxColor: '#ff0000',
19        aimbotFOV: 200,
20        aimbotSmoothing: 0.3,
21        showFOVCircle: true
22    };
23
24    // Game state
25    let players = [];
26    let localPlayer = null;
27    let canvas = null;
28    let overlayCanvas = null;
29    let ctx = null;
30
31    // Initialize
32    async function init() {
33        console.log('[Veck.io FPS Enhancer] Initializing...');
34        
35        // Load saved config
36        const savedConfig = await GM.getValue('veckio_config', null);
37        if (savedConfig) {
38            config = { ...config, ...JSON.parse(savedConfig) };
39        }
40
41        // Wait for game canvas
42        waitForCanvas();
43        
44        // Create overlay
45        createOverlay();
46        
47        // Create control panel
48        createControlPanel();
49        
50        // Hook into Unity game
51        hookUnityGame();
52        
53        // Start render loop
54        requestAnimationFrame(renderLoop);
55        
56        console.log('[Veck.io FPS Enhancer] Initialized successfully');
57    }
58
59    function waitForCanvas() {
60        const checkCanvas = setInterval(() => {
61            canvas = document.querySelector('#unity-canvas');
62            if (canvas) {
63                console.log('[Veck.io FPS Enhancer] Game canvas found');
64                clearInterval(checkCanvas);
65            }
66        }, 1000);
67    }
68
69    function createOverlay() {
70        // Create overlay canvas
71        overlayCanvas = document.createElement('canvas');
72        overlayCanvas.id = 'veckio-overlay';
73        overlayCanvas.style.cssText = `
74            position: absolute;
75            top: 0;
76            left: 0;
77            width: 100%;
78            height: 100%;
79            pointer-events: none;
80            z-index: 9999;
81        `;
82        
83        const container = document.querySelector('#unity-container');
84        if (container) {
85            container.style.position = 'relative';
86            container.appendChild(overlayCanvas);
87            
88            // Match canvas size
89            const resizeObserver = new ResizeObserver(() => {
90                if (canvas) {
91                    overlayCanvas.width = canvas.width;
92                    overlayCanvas.height = canvas.height;
93                }
94            });
95            resizeObserver.observe(container);
96            
97            ctx = overlayCanvas.getContext('2d');
98            console.log('[Veck.io FPS Enhancer] Overlay created');
99        }
100    }
101
102    function createControlPanel() {
103        const panel = document.createElement('div');
104        panel.id = 'veckio-control-panel';
105        panel.innerHTML = `
106            <div style="background: rgba(0, 0, 0, 0.9); color: white; padding: 15px; border-radius: 8px; font-family: Arial; font-size: 12px; min-width: 200px;">
107                <h3 style="margin: 0 0 10px 0; font-size: 14px; color: #00ff00;">Veck.io FPS Enhancer</h3>
108                <div style="margin-bottom: 8px;">
109                    <label style="display: flex; align-items: center; cursor: pointer;">
110                        <input type="checkbox" id="esp-toggle" ${config.espEnabled ? 'checked' : ''} style="margin-right: 8px;">
111                        <span>ESP (Wallhack) [G]</span>
112                    </label>
113                </div>
114                <div style="margin-bottom: 8px;">
115                    <label style="display: flex; align-items: center; cursor: pointer;">
116                        <input type="checkbox" id="aimbot-toggle" ${config.aimbotEnabled ? 'checked' : ''} style="margin-right: 8px;">
117                        <span>Aimbot [H]</span>
118                    </label>
119                </div>
120                <div style="margin-bottom: 8px;">
121                    <label style="display: flex; align-items: center; cursor: pointer;">
122                        <input type="checkbox" id="fov-toggle" ${config.showFOVCircle ? 'checked' : ''} style="margin-right: 8px;">
123                        <span>Show FOV Circle</span>
124                    </label>
125                </div>
126                <div style="margin-bottom: 8px;">
127                    <label style="display: block; margin-bottom: 4px;">Aimbot FOV: <span id="fov-value">${config.aimbotFOV}</span></label>
128                    <input type="range" id="fov-slider" min="50" max="500" value="${config.aimbotFOV}" style="width: 100%;">
129                </div>
130                <div style="margin-bottom: 8px;">
131                    <label style="display: block; margin-bottom: 4px;">Smoothing: <span id="smooth-value">${config.aimbotSmoothing}</span></label>
132                    <input type="range" id="smooth-slider" min="0.1" max="1" step="0.1" value="${config.aimbotSmoothing}" style="width: 100%;">
133                </div>
134                <div style="margin-top: 10px; padding-top: 10px; border-top: 1px solid #333; font-size: 10px; color: #888;">
135                    <div>Players detected: <span id="player-count" style="color: #00ff00;">0</span></div>
136                </div>
137            </div>
138        `;
139        panel.style.cssText = `
140            position: fixed;
141            top: 20px;
142            right: 20px;
143            z-index: 10000;
144            pointer-events: auto;
145        `;
146        document.body.appendChild(panel);
147
148        // Event listeners
149        document.getElementById('esp-toggle').addEventListener('change', async (e) => {
150            config.espEnabled = e.target.checked;
151            await saveConfig();
152        });
153
154        document.getElementById('aimbot-toggle').addEventListener('change', async (e) => {
155            config.aimbotEnabled = e.target.checked;
156            await saveConfig();
157        });
158
159        document.getElementById('fov-toggle').addEventListener('change', async (e) => {
160            config.showFOVCircle = e.target.checked;
161            await saveConfig();
162        });
163
164        document.getElementById('fov-slider').addEventListener('input', async (e) => {
165            config.aimbotFOV = parseInt(e.target.value);
166            document.getElementById('fov-value').textContent = config.aimbotFOV;
167            await saveConfig();
168        });
169
170        document.getElementById('smooth-slider').addEventListener('input', async (e) => {
171            config.aimbotSmoothing = parseFloat(e.target.value);
172            document.getElementById('smooth-value').textContent = config.aimbotSmoothing;
173            await saveConfig();
174        });
175
176        // Keyboard shortcuts
177        document.addEventListener('keydown', async (e) => {
178            if (e.key === 'g' || e.key === 'G') {
179                e.preventDefault();
180                config.espEnabled = !config.espEnabled;
181                document.getElementById('esp-toggle').checked = config.espEnabled;
182                await saveConfig();
183                console.log('[Veck.io FPS Enhancer] ESP:', config.espEnabled ? 'ON' : 'OFF');
184            } else if (e.key === 'h' || e.key === 'H') {
185                e.preventDefault();
186                config.aimbotEnabled = !config.aimbotEnabled;
187                document.getElementById('aimbot-toggle').checked = config.aimbotEnabled;
188                await saveConfig();
189                console.log('[Veck.io FPS Enhancer] Aimbot:', config.aimbotEnabled ? 'ON' : 'OFF');
190            }
191        });
192
193        console.log('[Veck.io FPS Enhancer] Control panel created');
194    }
195
196    async function saveConfig() {
197        await GM.setValue('veckio_config', JSON.stringify(config));
198    }
199
200    function hookUnityGame() {
201        // Hook into Unity's WebGL memory to find player data
202        // This is a simplified version - real implementation would need to reverse engineer the game
203        console.log('[Veck.io FPS Enhancer] Hooking into Unity game...');
204        
205        // Simulate player detection for demonstration
206        setInterval(() => {
207            // In a real implementation, this would read from Unity's memory
208            // For now, we'll create mock players for testing
209            players = generateMockPlayers();
210            updatePlayerCount();
211        }, 100);
212    }
213
214    function generateMockPlayers() {
215        // Mock player data for testing
216        // In production, this would come from Unity memory
217        const mockPlayers = [];
218        const numPlayers = Math.floor(Math.random() * 5) + 2;
219        
220        for (let i = 0; i < numPlayers; i++) {
221            mockPlayers.push({
222                id: i,
223                name: `Player${i}`,
224                position: {
225                    x: Math.random() * (overlayCanvas?.width || 800),
226                    y: Math.random() * (overlayCanvas?.height || 600),
227                    z: Math.random() * 100
228                },
229                health: Math.random() * 100,
230                isEnemy: true,
231                distance: Math.random() * 100
232            });
233        }
234        
235        return mockPlayers;
236    }
237
238    function updatePlayerCount() {
239        const countElement = document.getElementById('player-count');
240        if (countElement) {
241            countElement.textContent = players.length;
242        }
243    }
244
245    function renderLoop() {
246        if (!ctx || !overlayCanvas) {
247            requestAnimationFrame(renderLoop);
248            return;
249        }
250
251        // Clear canvas
252        ctx.clearRect(0, 0, overlayCanvas.width, overlayCanvas.height);
253
254        // Draw FOV circle
255        if (config.showFOVCircle && config.aimbotEnabled) {
256            drawFOVCircle();
257        }
258
259        // Draw ESP
260        if (config.espEnabled) {
261            drawESP();
262        }
263
264        // Process aimbot
265        if (config.aimbotEnabled) {
266            processAimbot();
267        }
268
269        requestAnimationFrame(renderLoop);
270    }
271
272    function drawFOVCircle() {
273        const centerX = overlayCanvas.width / 2;
274        const centerY = overlayCanvas.height / 2;
275
276        ctx.beginPath();
277        ctx.arc(centerX, centerY, config.aimbotFOV, 0, Math.PI * 2);
278        ctx.strokeStyle = 'rgba(255, 255, 255, 0.3)';
279        ctx.lineWidth = 2;
280        ctx.stroke();
281
282        // Draw crosshair
283        ctx.beginPath();
284        ctx.moveTo(centerX - 10, centerY);
285        ctx.lineTo(centerX + 10, centerY);
286        ctx.moveTo(centerX, centerY - 10);
287        ctx.lineTo(centerX, centerY + 10);
288        ctx.strokeStyle = 'rgba(0, 255, 0, 0.8)';
289        ctx.lineWidth = 2;
290        ctx.stroke();
291    }
292
293    function drawESP() {
294        players.forEach(player => {
295            if (!player.isEnemy) return;
296
297            const x = player.position.x;
298            const y = player.position.y;
299            const width = 40;
300            const height = 60;
301
302            // Draw box
303            ctx.strokeStyle = config.espBoxColor;
304            ctx.lineWidth = 2;
305            ctx.strokeRect(x - width/2, y - height/2, width, height);
306
307            // Draw health bar
308            const healthBarWidth = width;
309            const healthBarHeight = 5;
310            const healthPercent = player.health / 100;
311
312            ctx.fillStyle = 'rgba(0, 0, 0, 0.5)';
313            ctx.fillRect(x - healthBarWidth/2, y - height/2 - 10, healthBarWidth, healthBarHeight);
314
315            ctx.fillStyle = healthPercent > 0.5 ? '#00ff00' : healthPercent > 0.25 ? '#ffff00' : '#ff0000';
316            ctx.fillRect(x - healthBarWidth/2, y - height/2 - 10, healthBarWidth * healthPercent, healthBarHeight);
317
318            // Draw name and distance
319            ctx.font = '12px Arial';
320            ctx.fillStyle = config.espColor;
321            ctx.textAlign = 'center';
322            ctx.fillText(player.name, x, y - height/2 - 15);
323            ctx.fillText(\`\${Math.floor(player.distance)}m\`, x, y + height/2 + 15);
324
325            // Draw line to player
326            ctx.beginPath();
327            ctx.moveTo(overlayCanvas.width / 2, overlayCanvas.height);
328            ctx.lineTo(x, y);
329            ctx.strokeStyle = 'rgba(0, 255, 0, 0.3)';
330            ctx.lineWidth = 1;
331            ctx.stroke();
332        });
333    }
334
335    function processAimbot() {
336        const centerX = overlayCanvas.width / 2;
337        const centerY = overlayCanvas.height / 2;
338
339        let closestPlayer = null;
340        let closestDistance = Infinity;
341
342        // Find closest player within FOV
343        players.forEach(player => {
344            if (!player.isEnemy) return;
345
346            const dx = player.position.x - centerX;
347            const dy = player.position.y - centerY;
348            const distance = Math.sqrt(dx * dx + dy * dy);
349
350            if (distance < config.aimbotFOV && distance < closestDistance) {
351                closestDistance = distance;
352                closestPlayer = player;
353            }
354        });
355
356        // Aim at closest player
357        if (closestPlayer) {
358            const targetX = closestPlayer.position.x;
359            const targetY = closestPlayer.position.y;
360
361            // Draw target indicator
362            ctx.beginPath();
363            ctx.arc(targetX, targetY, 20, 0, Math.PI * 2);
364            ctx.strokeStyle = 'rgba(255, 0, 0, 0.8)';
365            ctx.lineWidth = 3;
366            ctx.stroke();
367
368            // In a real implementation, this would move the mouse/camera
369            // For Unity games, you'd need to hook into the camera rotation
370            console.log(\`[Veck.io FPS Enhancer] Targeting \${closestPlayer.name} at distance \${Math.floor(closestDistance)}px\`);
371        }
372    }
373
374    // Start the extension
375    if (document.readyState === 'loading') {
376        document.addEventListener('DOMContentLoaded', init);
377    } else {
378        init();
379    }
380
381})();
Veck.io FPS Enhancer | Robomonkey