Veck.io Unlock All Weapons & Items

Unlocks all weapons and items in Veck.io

Size

17.5 KB

Version

1.1.3

Created

Mar 7, 2026

Updated

about 1 month ago

1// ==UserScript==
2// @name		Veck.io Unlock All Weapons & Items
3// @description		Unlocks all weapons and items in Veck.io
4// @version		1.1.3
5// @match		https://*.veck.io/*
6// @icon		https://veck.io/favicon/favicon.ico
7// @grant		GM.getValue
8// @grant		GM.setValue
9// @grant		GM.listValues
10// ==/UserScript==
11(function() {
12    'use strict';
13
14    console.log('[Veck.io Enhanced] Loading ESP & Aimbot...');
15
16    // ============================================
17    // CONFIGURATION
18    // ============================================
19    const config = {
20        esp: {
21            enabled: true,
22            boxColor: '#00FF00',
23            lineWidth: 2,
24            textColor: '#FFFFFF',
25            healthColor: '#FF0000',
26            distanceColor: '#FFFF00'
27        },
28        aimbot: {
29            enabled: true,
30            fov: 150,
31            smoothing: 0.2,
32            autoShoot: false,
33            aimKey: 2 // Right mouse button
34        }
35    };
36
37    let isAiming = false;
38    let players = new Map();
39    let localPlayer = null;
40    let canvas = null;
41    let gl = null;
42    let overlayCanvas = null;
43    let overlayCtx = null;
44
45    // ============================================
46    // UNLOCK ALL ITEMS
47    // ============================================
48    const originalSetItem = localStorage.setItem;
49    const originalGetItem = localStorage.getItem;
50
51    try {
52        localStorage.setItem('allItemsUnlocked', 'true');
53        localStorage.setItem('rainbowItemsUnlocked', 'true');
54        localStorage.setItem('level', '100');
55        localStorage.setItem('xp', '999999999');
56        console.log('[Veck.io Enhanced] ✓ Items unlocked');
57    } catch (e) {
58        console.error('[Veck.io Enhanced] Error:', e);
59    }
60
61    localStorage.setItem = function(key, value) {
62        if (key === 'allItemsUnlocked' || key === 'rainbowItemsUnlocked') {
63            return originalSetItem.call(this, key, 'true');
64        }
65        if (key.toLowerCase().includes('level')) {
66            const level = parseInt(value) || 0;
67            if (level < 100) return originalSetItem.call(this, key, '100');
68        }
69        if (key.toLowerCase().includes('xp') || key.toLowerCase().includes('exp')) {
70            const xp = parseInt(value) || 0;
71            if (xp < 999999999) return originalSetItem.call(this, key, '999999999');
72        }
73        return originalSetItem.call(this, key, value);
74    };
75
76    localStorage.getItem = function(key) {
77        if (key === 'allItemsUnlocked' || key === 'rainbowItemsUnlocked') return 'true';
78        if (key.toLowerCase().includes('level')) return '100';
79        if (key.toLowerCase().includes('xp') || key.toLowerCase().includes('exp')) return '999999999';
80        return originalGetItem.call(this, key);
81    };
82
83    // ============================================
84    // WEBGL HOOKING
85    // ============================================
86    const originalGetContext = HTMLCanvasElement.prototype.getContext;
87    HTMLCanvasElement.prototype.getContext = function(type, ...args) {
88        const context = originalGetContext.call(this, type, ...args);
89        
90        if ((type === 'webgl' || type === 'webgl2') && !gl) {
91            console.log('[Veck.io Enhanced] WebGL context captured!');
92            canvas = this;
93            gl = context;
94            hookWebGL(context);
95        }
96        
97        return context;
98    };
99
100    function hookWebGL(context) {
101        // Hook drawArrays to intercept rendering
102        const originalDrawArrays = context.drawArrays;
103        context.drawArrays = function(mode, first, count) {
104            try {
105                // Capture draw calls for player detection
106                if (count > 100 && count < 10000) {
107                    // This might be a player model
108                    extractPlayerData(context);
109                }
110            } catch (e) {
111                // Silent
112            }
113            return originalDrawArrays.call(this, mode, first, count);
114        };
115
116        // Hook drawElements
117        const originalDrawElements = context.drawElements;
118        context.drawElements = function(mode, count, type, offset) {
119            try {
120                if (count > 100 && count < 10000) {
121                    extractPlayerData(context);
122                }
123            } catch (e) {
124                // Silent
125            }
126            return originalDrawElements.call(this, mode, count, type, offset);
127        };
128
129        console.log('[Veck.io Enhanced] ✓ WebGL hooked');
130    }
131
132    function extractPlayerData(context) {
133        // Try to extract transformation matrices and positions
134        try {
135            const uniformLocations = [];
136            const program = context.getParameter(context.CURRENT_PROGRAM);
137            
138            if (program) {
139                // Get uniform data that might contain positions
140                for (let i = 0; i < 20; i++) {
141                    try {
142                        const uniformName = context.getActiveUniform(program, i);
143                        if (uniformName && uniformName.name.toLowerCase().includes('pos')) {
144                            const location = context.getUniformLocation(program, uniformName.name);
145                            const value = context.getUniform(program, location);
146                            if (value) {
147                                // Store potential player position
148                                const playerId = `player_${i}`;
149                                players.set(playerId, {
150                                    position: value,
151                                    lastSeen: Date.now()
152                                });
153                            }
154                        }
155                    } catch (e) {
156                        // Skip
157                    }
158                }
159            }
160        } catch (e) {
161            // Silent
162        }
163    }
164
165    // ============================================
166    // ESP OVERLAY
167    // ============================================
168    function createOverlay() {
169        overlayCanvas = document.createElement('canvas');
170        overlayCanvas.id = 'veck-esp-overlay';
171        overlayCanvas.style.cssText = `
172            position: fixed;
173            top: 0;
174            left: 0;
175            width: 100vw;
176            height: 100vh;
177            pointer-events: none;
178            z-index: 999999;
179        `;
180        document.body.appendChild(overlayCanvas);
181        overlayCtx = overlayCanvas.getContext('2d');
182        
183        function resize() {
184            overlayCanvas.width = window.innerWidth;
185            overlayCanvas.height = window.innerHeight;
186        }
187        resize();
188        window.addEventListener('resize', resize);
189        
190        console.log('[Veck.io Enhanced] ✓ ESP overlay created');
191    }
192
193    function drawESP() {
194        if (!config.esp.enabled || !overlayCtx) return;
195        
196        overlayCtx.clearRect(0, 0, overlayCanvas.width, overlayCanvas.height);
197        
198        const now = Date.now();
199        const centerX = overlayCanvas.width / 2;
200        const centerY = overlayCanvas.height / 2;
201        
202        // Clean old players
203        for (const [id, player] of players.entries()) {
204            if (now - player.lastSeen > 1000) {
205                players.delete(id);
206            }
207        }
208        
209        // Draw players
210        players.forEach((player, id) => {
211            if (!player.position) return;
212            
213            try {
214                // Simple projection
215                let x = centerX;
216                let y = centerY;
217                
218                if (Array.isArray(player.position)) {
219                    x = centerX + (player.position[0] || 0) * 100;
220                    y = centerY - (player.position[1] || 0) * 100;
221                } else if (player.position.x !== undefined) {
222                    x = centerX + player.position.x * 100;
223                    y = centerY - player.position.y * 100;
224                }
225                
226                // Draw box
227                const boxSize = 40;
228                overlayCtx.strokeStyle = config.esp.boxColor;
229                overlayCtx.lineWidth = config.esp.lineWidth;
230                overlayCtx.strokeRect(x - boxSize/2, y - boxSize, boxSize, boxSize * 2);
231                
232                // Draw distance
233                const distance = Math.sqrt(Math.pow(x - centerX, 2) + Math.pow(y - centerY, 2)) / 10;
234                overlayCtx.fillStyle = config.esp.distanceColor;
235                overlayCtx.font = '12px Arial';
236                overlayCtx.textAlign = 'center';
237                overlayCtx.fillText(`${Math.round(distance)}m`, x, y - boxSize - 5);
238                
239            } catch (e) {
240                // Skip
241            }
242        });
243    }
244
245    // ============================================
246    // AIMBOT
247    // ============================================
248    function getClosestTarget() {
249        if (players.size === 0) return null;
250        
251        const centerX = overlayCanvas.width / 2;
252        const centerY = overlayCanvas.height / 2;
253        let closest = null;
254        let closestDist = Infinity;
255        
256        players.forEach((player, id) => {
257            if (!player.position) return;
258            
259            let x = centerX;
260            let y = centerY;
261            
262            if (Array.isArray(player.position)) {
263                x = centerX + (player.position[0] || 0) * 100;
264                y = centerY - (player.position[1] || 0) * 100;
265            } else if (player.position.x !== undefined) {
266                x = centerX + player.position.x * 100;
267                y = centerY - player.position.y * 100;
268            }
269            
270            const dist = Math.sqrt(Math.pow(x - centerX, 2) + Math.pow(y - centerY, 2));
271            
272            if (dist < config.aimbot.fov && dist < closestDist) {
273                closestDist = dist;
274                closest = { x, y, player };
275            }
276        });
277        
278        return closest;
279    }
280
281    function aimAtTarget(target) {
282        if (!target || !canvas) return;
283        
284        const centerX = canvas.width / 2;
285        const centerY = canvas.height / 2;
286        
287        const dx = target.x - centerX;
288        const dy = target.y - centerY;
289        
290        // Smooth mouse movement
291        const moveX = dx * config.aimbot.smoothing;
292        const moveY = dy * config.aimbot.smoothing;
293        
294        // Simulate mouse movement
295        const moveEvent = new MouseEvent('mousemove', {
296            bubbles: true,
297            cancelable: true,
298            view: window,
299            clientX: centerX + moveX,
300            clientY: centerY + moveY,
301            movementX: moveX,
302            movementY: moveY
303        });
304        canvas.dispatchEvent(moveEvent);
305        
306        // Auto shoot
307        if (config.aimbot.autoShoot && Math.abs(dx) < 10 && Math.abs(dy) < 10) {
308            const clickEvent = new MouseEvent('mousedown', {
309                bubbles: true,
310                cancelable: true,
311                view: window,
312                button: 0
313            });
314            canvas.dispatchEvent(clickEvent);
315            
316            setTimeout(() => {
317                const upEvent = new MouseEvent('mouseup', {
318                    bubbles: true,
319                    cancelable: true,
320                    view: window,
321                    button: 0
322                });
323                canvas.dispatchEvent(upEvent);
324            }, 50);
325        }
326    }
327
328    // ============================================
329    // CONTROL PANEL
330    // ============================================
331    function createControlPanel() {
332        const panel = document.createElement('div');
333        panel.id = 'veck-control-panel';
334        panel.style.cssText = `
335            position: fixed;
336            top: 10px;
337            right: 10px;
338            background: rgba(0, 0, 0, 0.9);
339            color: #00FF00;
340            padding: 15px;
341            border-radius: 8px;
342            font-family: monospace;
343            font-size: 12px;
344            z-index: 999998;
345            border: 2px solid #00FF00;
346            box-shadow: 0 0 20px rgba(0, 255, 0, 0.5);
347            user-select: none;
348        `;
349        
350        panel.innerHTML = `
351            <div style="font-size: 14px; font-weight: bold; margin-bottom: 10px; text-align: center;">
352                🎯 VECK.IO ENHANCED
353            </div>
354            <div style="margin-bottom: 8px;">
355                <label style="display: flex; align-items: center; cursor: pointer;">
356                    <input type="checkbox" id="esp-toggle" ${config.esp.enabled ? 'checked' : ''} style="margin-right: 8px;">
357                    <span>ESP [F1]</span>
358                </label>
359            </div>
360            <div style="margin-bottom: 8px;">
361                <label style="display: flex; align-items: center; cursor: pointer;">
362                    <input type="checkbox" id="aimbot-toggle" ${config.aimbot.enabled ? 'checked' : ''} style="margin-right: 8px;">
363                    <span>Aimbot [F2]</span>
364                </label>
365            </div>
366            <div style="margin-bottom: 8px;">
367                <label style="display: flex; align-items: center; cursor: pointer;">
368                    <input type="checkbox" id="autoshoot-toggle" ${config.aimbot.autoShoot ? 'checked' : ''} style="margin-right: 8px;">
369                    <span>Auto Shoot [F3]</span>
370                </label>
371            </div>
372            <div style="margin-top: 10px; padding-top: 10px; border-top: 1px solid #00FF00; font-size: 10px;">
373                <div>Players: <span id="player-count">0</span></div>
374                <div>Status: <span id="status" style="color: #00FF00;">ACTIVE</span></div>
375            </div>
376        `;
377        
378        document.body.appendChild(panel);
379        
380        document.getElementById('esp-toggle').addEventListener('change', (e) => {
381            config.esp.enabled = e.target.checked;
382            console.log('[Veck.io Enhanced] ESP:', config.esp.enabled ? 'ON' : 'OFF');
383        });
384        
385        document.getElementById('aimbot-toggle').addEventListener('change', (e) => {
386            config.aimbot.enabled = e.target.checked;
387            console.log('[Veck.io Enhanced] Aimbot:', config.aimbot.enabled ? 'ON' : 'OFF');
388        });
389        
390        document.getElementById('autoshoot-toggle').addEventListener('change', (e) => {
391            config.aimbot.autoShoot = e.target.checked;
392            console.log('[Veck.io Enhanced] Auto Shoot:', config.aimbot.autoShoot ? 'ON' : 'OFF');
393        });
394        
395        console.log('[Veck.io Enhanced] ✓ Control panel created');
396    }
397
398    // ============================================
399    // KEYBOARD & MOUSE CONTROLS
400    // ============================================
401    document.addEventListener('keydown', (e) => {
402        if (e.key === 'F1') {
403            e.preventDefault();
404            config.esp.enabled = !config.esp.enabled;
405            const toggle = document.getElementById('esp-toggle');
406            if (toggle) toggle.checked = config.esp.enabled;
407            console.log('[Veck.io Enhanced] ESP:', config.esp.enabled ? 'ON' : 'OFF');
408        } else if (e.key === 'F2') {
409            e.preventDefault();
410            config.aimbot.enabled = !config.aimbot.enabled;
411            const toggle = document.getElementById('aimbot-toggle');
412            if (toggle) toggle.checked = config.aimbot.enabled;
413            console.log('[Veck.io Enhanced] Aimbot:', config.aimbot.enabled ? 'ON' : 'OFF');
414        } else if (e.key === 'F3') {
415            e.preventDefault();
416            config.aimbot.autoShoot = !config.aimbot.autoShoot;
417            const toggle = document.getElementById('autoshoot-toggle');
418            if (toggle) toggle.checked = config.aimbot.autoShoot;
419            console.log('[Veck.io Enhanced] Auto Shoot:', config.aimbot.autoShoot ? 'ON' : 'OFF');
420        }
421    });
422
423    document.addEventListener('mousedown', (e) => {
424        if (e.button === config.aimbot.aimKey) {
425            isAiming = true;
426        }
427    });
428
429    document.addEventListener('mouseup', (e) => {
430        if (e.button === config.aimbot.aimKey) {
431            isAiming = false;
432        }
433    });
434
435    // ============================================
436    // MAIN LOOP
437    // ============================================
438    function mainLoop() {
439        try {
440            // Update player count
441            const countEl = document.getElementById('player-count');
442            if (countEl) {
443                countEl.textContent = players.size;
444            }
445            
446            // Draw ESP
447            if (config.esp.enabled) {
448                drawESP();
449            }
450            
451            // Run aimbot
452            if (config.aimbot.enabled && isAiming) {
453                const target = getClosestTarget();
454                if (target) {
455                    aimAtTarget(target);
456                }
457            }
458        } catch (e) {
459            console.error('[Veck.io Enhanced] Loop error:', e);
460        }
461        
462        requestAnimationFrame(mainLoop);
463    }
464
465    // ============================================
466    // INITIALIZATION
467    // ============================================
468    function init() {
469        console.log('[Veck.io Enhanced] Initializing...');
470        
471        setTimeout(() => {
472            createOverlay();
473            createControlPanel();
474            mainLoop();
475            
476            console.log('[Veck.io Enhanced] ✓ Fully initialized!');
477            console.log('[Veck.io Enhanced] Controls:');
478            console.log('[Veck.io Enhanced] - F1: Toggle ESP');
479            console.log('[Veck.io Enhanced] - F2: Toggle Aimbot');
480            console.log('[Veck.io Enhanced] - F3: Toggle Auto Shoot');
481            console.log('[Veck.io Enhanced] - Hold RIGHT CLICK to aim');
482        }, 2000);
483    }
484
485    if (document.readyState === 'loading') {
486        document.addEventListener('DOMContentLoaded', init);
487    } else {
488        init();
489    }
490
491})();