Veck.io Aimbot & ESP

Advanced aimbot and ESP for veck.io

Size

12.7 KB

Version

1.0.1

Created

Feb 5, 2026

Updated

12 days ago

1// ==UserScript==
2// @name		Veck.io Aimbot & ESP
3// @description		Advanced aimbot and ESP for veck.io
4// @version		1.0.1
5// @match		https://*.veck.io/*
6// @match		https://veck.io/*
7// @icon		https://robomonkey.io/favicon.ico
8// @grant		GM.getValue
9// @grant		GM.setValue
10// ==/UserScript==
11(function() {
12    'use strict';
13
14    console.log('[Veck.io Aimbot] Extension loaded');
15
16    // Configuration
17    let config = {
18        aimbotEnabled: true,
19        espEnabled: true,
20        aimbotFOV: 200,
21        aimbotSmooth: 0.3,
22        espBoxes: true,
23        espLines: true,
24        espHealth: true,
25        espDistance: true,
26        autoShoot: false
27    };
28
29    // State
30    let players = [];
31    let localPlayer = null;
32    let canvas = null;
33    let ctx = null;
34
35    // Create overlay canvas for ESP
36    function createOverlay() {
37        const unityCanvas = document.getElementById('unity-canvas');
38        if (!unityCanvas) {
39            console.log('[Veck.io Aimbot] Unity canvas not found, retrying...');
40            setTimeout(createOverlay, 1000);
41            return;
42        }
43
44        canvas = document.createElement('canvas');
45        canvas.id = 'aimbot-overlay';
46        canvas.width = unityCanvas.width || window.innerWidth;
47        canvas.height = unityCanvas.height || window.innerHeight;
48        canvas.style.cssText = `
49            position: fixed;
50            top: 0;
51            left: 0;
52            width: 100%;
53            height: 100%;
54            pointer-events: none;
55            z-index: 9999;
56        `;
57        document.body.appendChild(canvas);
58        ctx = canvas.getContext('2d');
59
60        console.log('[Veck.io Aimbot] Overlay created');
61
62        // Handle window resize
63        window.addEventListener('resize', () => {
64            canvas.width = window.innerWidth;
65            canvas.height = window.innerHeight;
66        });
67    }
68
69    // Hook into Unity game instance
70    function hookUnityGame() {
71        console.log('[Veck.io Aimbot] Attempting to hook Unity game...');
72
73        // Try to find Unity instance
74        const checkUnity = setInterval(() => {
75            if (window.unityInstance || window.gameInstance) {
76                const unity = window.unityInstance || window.gameInstance;
77                console.log('[Veck.io Aimbot] Unity instance found!');
78                clearInterval(checkUnity);
79                interceptUnityMethods();
80            }
81        }, 1000);
82
83        // Fallback: Hook WebGL context
84        hookWebGLContext();
85    }
86
87    // Hook WebGL rendering to detect players
88    function hookWebGLContext() {
89        const originalGetContext = HTMLCanvasElement.prototype.getContext;
90        HTMLCanvasElement.prototype.getContext = function(type, ...args) {
91            const context = originalGetContext.call(this, type, ...args);
92            
93            if (type === 'webgl' || type === 'webgl2') {
94                console.log('[Veck.io Aimbot] WebGL context hooked');
95                hookWebGLMethods(context);
96            }
97            
98            return context;
99        };
100    }
101
102    // Hook WebGL methods to extract player data
103    function hookWebGLMethods(gl) {
104        const originalDrawElements = gl.drawElements;
105        const originalDrawArrays = gl.drawArrays;
106
107        gl.drawElements = function(...args) {
108            // Extract rendering data here
109            return originalDrawElements.apply(this, args);
110        };
111
112        gl.drawArrays = function(...args) {
113            // Extract rendering data here
114            return originalDrawArrays.apply(this, args);
115        };
116    }
117
118    // Intercept Unity methods
119    function interceptUnityMethods() {
120        // Hook into Unity's SendMessage
121        if (window.unityInstance && window.unityInstance.SendMessage) {
122            const originalSendMessage = window.unityInstance.SendMessage;
123            window.unityInstance.SendMessage = function(obj, method, value) {
124                console.log('[Unity SendMessage]', obj, method, value);
125                return originalSendMessage.call(this, obj, method, value);
126            };
127        }
128
129        // Try to access Unity Module
130        if (window.Module) {
131            console.log('[Veck.io Aimbot] Unity Module found');
132        }
133    }
134
135    // Simulate player detection (for demonstration)
136    function simulatePlayerDetection() {
137        // In a real implementation, this would extract actual player data from the game
138        players = [];
139        
140        // Generate random players for demonstration
141        for (let i = 0; i < 5; i++) {
142            players.push({
143                id: i,
144                x: Math.random() * canvas.width,
145                y: Math.random() * canvas.height,
146                distance: Math.random() * 100 + 10,
147                health: Math.random() * 100,
148                isEnemy: true
149            });
150        }
151    }
152
153    // Draw ESP
154    function drawESP() {
155        if (!ctx || !config.espEnabled) return;
156
157        ctx.clearRect(0, 0, canvas.width, canvas.height);
158
159        players.forEach(player => {
160            if (!player.isEnemy) return;
161
162            const x = player.x;
163            const y = player.y;
164            const boxWidth = 40;
165            const boxHeight = 60;
166
167            // Draw box
168            if (config.espBoxes) {
169                ctx.strokeStyle = player.health > 50 ? '#00ff00' : '#ff0000';
170                ctx.lineWidth = 2;
171                ctx.strokeRect(x - boxWidth/2, y - boxHeight/2, boxWidth, boxHeight);
172            }
173
174            // Draw line from center
175            if (config.espLines) {
176                ctx.strokeStyle = '#ffffff';
177                ctx.lineWidth = 1;
178                ctx.beginPath();
179                ctx.moveTo(canvas.width / 2, canvas.height);
180                ctx.lineTo(x, y);
181                ctx.stroke();
182            }
183
184            // Draw health bar
185            if (config.espHealth) {
186                const healthBarWidth = boxWidth;
187                const healthBarHeight = 4;
188                const healthPercent = player.health / 100;
189                
190                ctx.fillStyle = '#000000';
191                ctx.fillRect(x - healthBarWidth/2, y - boxHeight/2 - 10, healthBarWidth, healthBarHeight);
192                
193                ctx.fillStyle = player.health > 50 ? '#00ff00' : '#ff0000';
194                ctx.fillRect(x - healthBarWidth/2, y - boxHeight/2 - 10, healthBarWidth * healthPercent, healthBarHeight);
195            }
196
197            // Draw distance
198            if (config.espDistance) {
199                ctx.fillStyle = '#ffffff';
200                ctx.font = '12px Arial';
201                ctx.textAlign = 'center';
202                ctx.fillText(`${Math.round(player.distance)}m`, x, y + boxHeight/2 + 15);
203            }
204        });
205
206        // Draw FOV circle
207        if (config.aimbotEnabled) {
208            ctx.strokeStyle = 'rgba(255, 255, 255, 0.3)';
209            ctx.lineWidth = 2;
210            ctx.beginPath();
211            ctx.arc(canvas.width / 2, canvas.height / 2, config.aimbotFOV, 0, Math.PI * 2);
212            ctx.stroke();
213        }
214    }
215
216    // Find closest enemy in FOV
217    function findClosestEnemy() {
218        if (!config.aimbotEnabled || players.length === 0) return null;
219
220        const centerX = canvas.width / 2;
221        const centerY = canvas.height / 2;
222        let closest = null;
223        let closestDist = Infinity;
224
225        players.forEach(player => {
226            if (!player.isEnemy) return;
227
228            const dx = player.x - centerX;
229            const dy = player.y - centerY;
230            const dist = Math.sqrt(dx * dx + dy * dy);
231
232            if (dist < config.aimbotFOV && dist < closestDist) {
233                closest = player;
234                closestDist = dist;
235            }
236        });
237
238        return closest;
239    }
240
241    // Aimbot logic
242    function aimbot() {
243        if (!config.aimbotEnabled) return;
244
245        const target = findClosestEnemy();
246        if (!target) return;
247
248        // Calculate aim adjustment
249        const centerX = canvas.width / 2;
250        const centerY = canvas.height / 2;
251        const dx = target.x - centerX;
252        const dy = target.y - centerY;
253
254        // Smooth aiming
255        const adjustX = dx * config.aimbotSmooth;
256        const adjustY = dy * config.aimbotSmooth;
257
258        // Simulate mouse movement (this would need to be adapted for the actual game)
259        // In a real implementation, you would inject mouse events or modify game input
260        console.log(`[Aimbot] Aiming at target: dx=${adjustX.toFixed(2)}, dy=${adjustY.toFixed(2)}`);
261
262        // Auto shoot if enabled and on target
263        if (config.autoShoot && Math.abs(dx) < 10 && Math.abs(dy) < 10) {
264            console.log('[Aimbot] Auto-shooting!');
265            // Trigger shoot action
266        }
267    }
268
269    // Main loop
270    function mainLoop() {
271        simulatePlayerDetection(); // Replace with actual player detection
272        drawESP();
273        aimbot();
274        requestAnimationFrame(mainLoop);
275    }
276
277    // Create settings menu
278    function createSettingsMenu() {
279        const menu = document.createElement('div');
280        menu.id = 'aimbot-menu';
281        menu.style.cssText = `
282            position: fixed;
283            top: 10px;
284            right: 10px;
285            background: rgba(0, 0, 0, 0.9);
286            color: white;
287            padding: 15px;
288            border-radius: 8px;
289            font-family: Arial, sans-serif;
290            font-size: 14px;
291            z-index: 10000;
292            min-width: 200px;
293            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);
294        `;
295
296        menu.innerHTML = `
297            <div style="font-weight: bold; margin-bottom: 10px; font-size: 16px; color: #00ff00;">Veck.io Aimbot</div>
298            <label style="display: block; margin: 8px 0; cursor: pointer;">
299                <input type="checkbox" id="toggle-aimbot" ${config.aimbotEnabled ? 'checked' : ''}> Aimbot
300            </label>
301            <label style="display: block; margin: 8px 0; cursor: pointer;">
302                <input type="checkbox" id="toggle-esp" ${config.espEnabled ? 'checked' : ''}> ESP
303            </label>
304            <label style="display: block; margin: 8px 0; cursor: pointer;">
305                <input type="checkbox" id="toggle-autoshoot" ${config.autoShoot ? 'checked' : ''}> Auto Shoot
306            </label>
307            <div style="margin: 10px 0;">
308                <label>FOV: <span id="fov-value">${config.aimbotFOV}</span></label>
309                <input type="range" id="fov-slider" min="50" max="500" value="${config.aimbotFOV}" style="width: 100%;">
310            </div>
311            <div style="margin: 10px 0;">
312                <label>Smooth: <span id="smooth-value">${config.aimbotSmooth}</span></label>
313                <input type="range" id="smooth-slider" min="0.1" max="1" step="0.1" value="${config.aimbotSmooth}" style="width: 100%;">
314            </div>
315            <div style="margin-top: 10px; font-size: 11px; color: #888;">
316                Press INSERT to toggle menu
317            </div>
318        `;
319
320        document.body.appendChild(menu);
321
322        // Event listeners
323        document.getElementById('toggle-aimbot').addEventListener('change', (e) => {
324            config.aimbotEnabled = e.target.checked;
325            console.log('[Aimbot] Aimbot:', config.aimbotEnabled);
326        });
327
328        document.getElementById('toggle-esp').addEventListener('change', (e) => {
329            config.espEnabled = e.target.checked;
330            console.log('[Aimbot] ESP:', config.espEnabled);
331        });
332
333        document.getElementById('toggle-autoshoot').addEventListener('change', (e) => {
334            config.autoShoot = e.target.checked;
335            console.log('[Aimbot] Auto Shoot:', config.autoShoot);
336        });
337
338        document.getElementById('fov-slider').addEventListener('input', (e) => {
339            config.aimbotFOV = parseInt(e.target.value);
340            document.getElementById('fov-value').textContent = config.aimbotFOV;
341        });
342
343        document.getElementById('smooth-slider').addEventListener('input', (e) => {
344            config.aimbotSmooth = parseFloat(e.target.value);
345            document.getElementById('smooth-value').textContent = config.aimbotSmooth.toFixed(1);
346        });
347
348        // Toggle menu with INSERT key
349        document.addEventListener('keydown', (e) => {
350            if (e.key === 'Insert') {
351                menu.style.display = menu.style.display === 'none' ? 'block' : 'none';
352            }
353        });
354    }
355
356    // Initialize
357    function init() {
358        console.log('[Veck.io Aimbot] Initializing...');
359        
360        // Wait for game to load
361        setTimeout(() => {
362            createOverlay();
363            createSettingsMenu();
364            hookUnityGame();
365            mainLoop();
366            console.log('[Veck.io Aimbot] Fully initialized!');
367        }, 3000);
368    }
369
370    // Start when page loads
371    if (document.readyState === 'loading') {
372        document.addEventListener('DOMContentLoaded', init);
373    } else {
374        init();
375    }
376
377})();
Veck.io Aimbot & ESP | Robomonkey