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})();