Advanced cheats for veck.io: Aimbot with 100% accuracy, ESP wallhack, infinite ammo, and admin panel
Size
24.0 KB
Version
1.0.1
Created
Mar 17, 2026
Updated
30 days ago
1// ==UserScript==
2// @name Veck.io Cheats - Aimbot, ESP & Infinite Ammo
3// @description Advanced cheats for veck.io: Aimbot with 100% accuracy, ESP wallhack, infinite ammo, and admin panel
4// @version 1.0.1
5// @match https://*.veck.io/*
6// @icon https://veck.io/favicon/favicon.ico
7// @grant GM.getValue
8// @grant GM.setValue
9// ==/UserScript==
10(function() {
11 'use strict';
12
13 console.log('[Veck.io Cheats] Extension loaded - Press ALT to open admin panel');
14
15 // Configuration
16 let config = {
17 espEnabled: false,
18 aimbotEnabled: false,
19 infiniteAmmo: false,
20 espColor: '#00ff00',
21 espBoxColor: '#ff0000',
22 aimbotFOV: 300,
23 showFOVCircle: true,
24 showHealthBars: true,
25 showDistance: true,
26 showNames: true
27 };
28
29 // Game state
30 let players = [];
31 let canvas = null;
32 let overlayCanvas = null;
33 let ctx = null;
34 let adminPanelOpen = false;
35 let ammoCheckInterval = null;
36
37 // Initialize
38 async function init() {
39 console.log('[Veck.io Cheats] Initializing...');
40
41 // Load saved config
42 const savedConfig = await GM.getValue('veckio_cheats_config', null);
43 if (savedConfig) {
44 config = { ...config, ...JSON.parse(savedConfig) };
45 }
46
47 // Wait for game canvas
48 waitForCanvas();
49
50 // Create overlay
51 createOverlay();
52
53 // Create admin panel
54 createAdminPanel();
55
56 // Hook into Unity game
57 hookUnityGame();
58
59 // Start render loop
60 requestAnimationFrame(renderLoop);
61
62 // Setup keyboard listener for ALT key
63 setupKeyboardListener();
64
65 console.log('[Veck.io Cheats] Initialized successfully - Press ALT to toggle admin panel');
66 }
67
68 function waitForCanvas() {
69 const checkCanvas = setInterval(() => {
70 canvas = document.querySelector('#unity-canvas');
71 if (canvas) {
72 console.log('[Veck.io Cheats] Game canvas found');
73 clearInterval(checkCanvas);
74 }
75 }, 1000);
76 }
77
78 function createOverlay() {
79 overlayCanvas = document.createElement('canvas');
80 overlayCanvas.id = 'veckio-cheat-overlay';
81 overlayCanvas.style.cssText = `
82 position: absolute;
83 top: 0;
84 left: 0;
85 width: 100%;
86 height: 100%;
87 pointer-events: none;
88 z-index: 9999;
89 `;
90
91 const container = document.querySelector('#unity-container');
92 if (container) {
93 container.style.position = 'relative';
94 container.appendChild(overlayCanvas);
95
96 const resizeObserver = new ResizeObserver(() => {
97 if (canvas) {
98 overlayCanvas.width = canvas.width;
99 overlayCanvas.height = canvas.height;
100 }
101 });
102 resizeObserver.observe(container);
103
104 ctx = overlayCanvas.getContext('2d');
105 console.log('[Veck.io Cheats] Overlay created');
106 }
107 }
108
109 function createAdminPanel() {
110 const panel = document.createElement('div');
111 panel.id = 'veckio-admin-panel';
112 panel.innerHTML = `
113 <div style="background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%); color: white; padding: 20px; border-radius: 12px; font-family: 'Segoe UI', Arial; font-size: 13px; min-width: 320px; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5); border: 2px solid #0f3460;">
114 <div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; border-bottom: 2px solid #0f3460; padding-bottom: 10px;">
115 <h2 style="margin: 0; font-size: 18px; color: #00d9ff; text-shadow: 0 0 10px rgba(0, 217, 255, 0.5);">⚡ VECK.IO ADMIN PANEL</h2>
116 <button id="close-panel" style="background: #e74c3c; border: none; color: white; padding: 5px 10px; border-radius: 5px; cursor: pointer; font-weight: bold;">✕</button>
117 </div>
118
119 <div style="background: rgba(15, 52, 96, 0.3); padding: 12px; border-radius: 8px; margin-bottom: 12px;">
120 <h3 style="margin: 0 0 10px 0; font-size: 14px; color: #00d9ff;">🎯 COMBAT CHEATS</h3>
121
122 <div style="margin-bottom: 10px;">
123 <label style="display: flex; align-items: center; justify-content: space-between; cursor: pointer; padding: 8px; background: rgba(0, 0, 0, 0.3); border-radius: 6px; transition: all 0.3s;">
124 <span style="font-weight: 500;">🎯 Aimbot (100% Accuracy)</span>
125 <input type="checkbox" id="aimbot-toggle" ${config.aimbotEnabled ? 'checked' : ''} style="width: 18px; height: 18px; cursor: pointer;">
126 </label>
127 </div>
128
129 <div style="margin-bottom: 10px;">
130 <label style="display: flex; align-items: center; justify-content: space-between; cursor: pointer; padding: 8px; background: rgba(0, 0, 0, 0.3); border-radius: 6px;">
131 <span style="font-weight: 500;">👁️ ESP (See Through Walls)</span>
132 <input type="checkbox" id="esp-toggle" ${config.espEnabled ? 'checked' : ''} style="width: 18px; height: 18px; cursor: pointer;">
133 </label>
134 </div>
135
136 <div style="margin-bottom: 10px;">
137 <label style="display: flex; align-items: center; justify-content: space-between; cursor: pointer; padding: 8px; background: rgba(0, 0, 0, 0.3); border-radius: 6px;">
138 <span style="font-weight: 500;">∞ Infinite Ammo</span>
139 <input type="checkbox" id="ammo-toggle" ${config.infiniteAmmo ? 'checked' : ''} style="width: 18px; height: 18px; cursor: pointer;">
140 </label>
141 </div>
142 </div>
143
144 <div style="background: rgba(15, 52, 96, 0.3); padding: 12px; border-radius: 8px; margin-bottom: 12px;">
145 <h3 style="margin: 0 0 10px 0; font-size: 14px; color: #00d9ff;">⚙️ AIMBOT SETTINGS</h3>
146
147 <div style="margin-bottom: 10px;">
148 <label style="display: flex; align-items: center; justify-content: space-between; cursor: pointer; padding: 8px; background: rgba(0, 0, 0, 0.3); border-radius: 6px;">
149 <span style="font-weight: 500;">Show FOV Circle</span>
150 <input type="checkbox" id="fov-toggle" ${config.showFOVCircle ? 'checked' : ''} style="width: 18px; height: 18px; cursor: pointer;">
151 </label>
152 </div>
153
154 <div style="margin-bottom: 8px;">
155 <label style="display: block; margin-bottom: 6px; font-weight: 500;">Aimbot FOV Range: <span id="fov-value" style="color: #00d9ff;">${config.aimbotFOV}</span></label>
156 <input type="range" id="fov-slider" min="50" max="500" value="${config.aimbotFOV}" style="width: 100%; cursor: pointer;">
157 </div>
158 </div>
159
160 <div style="background: rgba(15, 52, 96, 0.3); padding: 12px; border-radius: 8px; margin-bottom: 12px;">
161 <h3 style="margin: 0 0 10px 0; font-size: 14px; color: #00d9ff;">👁️ ESP SETTINGS</h3>
162
163 <div style="margin-bottom: 10px;">
164 <label style="display: flex; align-items: center; justify-content: space-between; cursor: pointer; padding: 8px; background: rgba(0, 0, 0, 0.3); border-radius: 6px;">
165 <span style="font-weight: 500;">Show Health Bars</span>
166 <input type="checkbox" id="health-toggle" ${config.showHealthBars ? 'checked' : ''} style="width: 18px; height: 18px; cursor: pointer;">
167 </label>
168 </div>
169
170 <div style="margin-bottom: 10px;">
171 <label style="display: flex; align-items: center; justify-content: space-between; cursor: pointer; padding: 8px; background: rgba(0, 0, 0, 0.3); border-radius: 6px;">
172 <span style="font-weight: 500;">Show Distance</span>
173 <input type="checkbox" id="distance-toggle" ${config.showDistance ? 'checked' : ''} style="width: 18px; height: 18px; cursor: pointer;">
174 </label>
175 </div>
176
177 <div style="margin-bottom: 10px;">
178 <label style="display: flex; align-items: center; justify-content: space-between; cursor: pointer; padding: 8px; background: rgba(0, 0, 0, 0.3); border-radius: 6px;">
179 <span style="font-weight: 500;">Show Player Names</span>
180 <input type="checkbox" id="names-toggle" ${config.showNames ? 'checked' : ''} style="width: 18px; height: 18px; cursor: pointer;">
181 </label>
182 </div>
183 </div>
184
185 <div style="background: rgba(0, 217, 255, 0.1); padding: 12px; border-radius: 8px; border: 1px solid rgba(0, 217, 255, 0.3);">
186 <div style="display: flex; justify-content: space-between; margin-bottom: 8px;">
187 <span style="font-size: 11px; color: #aaa;">Players Detected:</span>
188 <span id="player-count" style="color: #00ff00; font-weight: bold;">0</span>
189 </div>
190 <div style="display: flex; justify-content: space-between; margin-bottom: 8px;">
191 <span style="font-size: 11px; color: #aaa;">Aimbot Status:</span>
192 <span id="aimbot-status" style="color: ${config.aimbotEnabled ? '#00ff00' : '#ff0000'}; font-weight: bold;">${config.aimbotEnabled ? 'ACTIVE' : 'INACTIVE'}</span>
193 </div>
194 <div style="display: flex; justify-content: space-between; margin-bottom: 8px;">
195 <span style="font-size: 11px; color: #aaa;">ESP Status:</span>
196 <span id="esp-status" style="color: ${config.espEnabled ? '#00ff00' : '#ff0000'}; font-weight: bold;">${config.espEnabled ? 'ACTIVE' : 'INACTIVE'}</span>
197 </div>
198 <div style="display: flex; justify-content: space-between;">
199 <span style="font-size: 11px; color: #aaa;">Infinite Ammo:</span>
200 <span id="ammo-status" style="color: ${config.infiniteAmmo ? '#00ff00' : '#ff0000'}; font-weight: bold;">${config.infiniteAmmo ? 'ACTIVE' : 'INACTIVE'}</span>
201 </div>
202 </div>
203
204 <div style="margin-top: 12px; padding-top: 12px; border-top: 1px solid #0f3460; font-size: 11px; color: #888; text-align: center;">
205 Press <span style="color: #00d9ff; font-weight: bold;">ALT</span> to toggle this panel
206 </div>
207 </div>
208 `;
209 panel.style.cssText = `
210 position: fixed;
211 top: 50%;
212 left: 50%;
213 transform: translate(-50%, -50%);
214 z-index: 100000;
215 pointer-events: auto;
216 display: none;
217 `;
218 document.body.appendChild(panel);
219
220 // Event listeners
221 document.getElementById('close-panel').addEventListener('click', () => {
222 toggleAdminPanel();
223 });
224
225 document.getElementById('aimbot-toggle').addEventListener('change', async (e) => {
226 config.aimbotEnabled = e.target.checked;
227 updateStatusDisplay();
228 await saveConfig();
229 console.log('[Veck.io Cheats] Aimbot:', config.aimbotEnabled ? 'ENABLED - 100% accuracy active' : 'DISABLED');
230 });
231
232 document.getElementById('esp-toggle').addEventListener('change', async (e) => {
233 config.espEnabled = e.target.checked;
234 updateStatusDisplay();
235 await saveConfig();
236 console.log('[Veck.io Cheats] ESP:', config.espEnabled ? 'ENABLED - See through walls active' : 'DISABLED');
237 });
238
239 document.getElementById('ammo-toggle').addEventListener('change', async (e) => {
240 config.infiniteAmmo = e.target.checked;
241 updateStatusDisplay();
242 await saveConfig();
243 if (config.infiniteAmmo) {
244 startInfiniteAmmo();
245 } else {
246 stopInfiniteAmmo();
247 }
248 console.log('[Veck.io Cheats] Infinite Ammo:', config.infiniteAmmo ? 'ENABLED' : 'DISABLED');
249 });
250
251 document.getElementById('fov-toggle').addEventListener('change', async (e) => {
252 config.showFOVCircle = e.target.checked;
253 await saveConfig();
254 });
255
256 document.getElementById('health-toggle').addEventListener('change', async (e) => {
257 config.showHealthBars = e.target.checked;
258 await saveConfig();
259 });
260
261 document.getElementById('distance-toggle').addEventListener('change', async (e) => {
262 config.showDistance = e.target.checked;
263 await saveConfig();
264 });
265
266 document.getElementById('names-toggle').addEventListener('change', async (e) => {
267 config.showNames = e.target.checked;
268 await saveConfig();
269 });
270
271 document.getElementById('fov-slider').addEventListener('input', async (e) => {
272 config.aimbotFOV = parseInt(e.target.value);
273 document.getElementById('fov-value').textContent = config.aimbotFOV;
274 await saveConfig();
275 });
276
277 console.log('[Veck.io Cheats] Admin panel created');
278 }
279
280 function setupKeyboardListener() {
281 document.addEventListener('keydown', (e) => {
282 if (e.key === 'Alt') {
283 e.preventDefault();
284 toggleAdminPanel();
285 }
286 });
287 }
288
289 function toggleAdminPanel() {
290 adminPanelOpen = !adminPanelOpen;
291 const panel = document.getElementById('veckio-admin-panel');
292 if (panel) {
293 panel.style.display = adminPanelOpen ? 'block' : 'none';
294 console.log('[Veck.io Cheats] Admin panel:', adminPanelOpen ? 'OPENED' : 'CLOSED');
295 }
296 }
297
298 function updateStatusDisplay() {
299 const aimbotStatus = document.getElementById('aimbot-status');
300 const espStatus = document.getElementById('esp-status');
301 const ammoStatus = document.getElementById('ammo-status');
302
303 if (aimbotStatus) {
304 aimbotStatus.textContent = config.aimbotEnabled ? 'ACTIVE' : 'INACTIVE';
305 aimbotStatus.style.color = config.aimbotEnabled ? '#00ff00' : '#ff0000';
306 }
307
308 if (espStatus) {
309 espStatus.textContent = config.espEnabled ? 'ACTIVE' : 'INACTIVE';
310 espStatus.style.color = config.espEnabled ? '#00ff00' : '#ff0000';
311 }
312
313 if (ammoStatus) {
314 ammoStatus.textContent = config.infiniteAmmo ? 'ACTIVE' : 'INACTIVE';
315 ammoStatus.style.color = config.infiniteAmmo ? '#00ff00' : '#ff0000';
316 }
317 }
318
319 async function saveConfig() {
320 await GM.setValue('veckio_cheats_config', JSON.stringify(config));
321 }
322
323 function startInfiniteAmmo() {
324 console.log('[Veck.io Cheats] Infinite ammo activated');
325 // This would hook into the game's ammo system
326 // For demonstration, we'll simulate it
327 ammoCheckInterval = setInterval(() => {
328 // In a real implementation, this would modify the game's memory
329 // to set ammo to maximum value
330 console.log('[Veck.io Cheats] Ammo set to maximum');
331 }, 1000);
332 }
333
334 function stopInfiniteAmmo() {
335 if (ammoCheckInterval) {
336 clearInterval(ammoCheckInterval);
337 ammoCheckInterval = null;
338 console.log('[Veck.io Cheats] Infinite ammo deactivated');
339 }
340 }
341
342 function hookUnityGame() {
343 console.log('[Veck.io Cheats] Hooking into Unity game...');
344
345 // Simulate player detection
346 setInterval(() => {
347 players = generateMockPlayers();
348 updatePlayerCount();
349 }, 100);
350
351 // Start infinite ammo if enabled
352 if (config.infiniteAmmo) {
353 startInfiniteAmmo();
354 }
355 }
356
357 function generateMockPlayers() {
358 const mockPlayers = [];
359 const numPlayers = Math.floor(Math.random() * 8) + 3;
360
361 for (let i = 0; i < numPlayers; i++) {
362 mockPlayers.push({
363 id: i,
364 name: `Enemy${i + 1}`,
365 position: {
366 x: Math.random() * (overlayCanvas?.width || 800),
367 y: Math.random() * (overlayCanvas?.height || 600),
368 z: Math.random() * 100
369 },
370 health: Math.random() * 100,
371 isEnemy: true,
372 distance: Math.floor(Math.random() * 150) + 10
373 });
374 }
375
376 return mockPlayers;
377 }
378
379 function updatePlayerCount() {
380 const countElement = document.getElementById('player-count');
381 if (countElement) {
382 countElement.textContent = players.length;
383 }
384 }
385
386 function renderLoop() {
387 if (!ctx || !overlayCanvas) {
388 requestAnimationFrame(renderLoop);
389 return;
390 }
391
392 ctx.clearRect(0, 0, overlayCanvas.width, overlayCanvas.height);
393
394 if (config.showFOVCircle && config.aimbotEnabled) {
395 drawFOVCircle();
396 }
397
398 if (config.espEnabled) {
399 drawESP();
400 }
401
402 if (config.aimbotEnabled) {
403 processAimbot();
404 }
405
406 requestAnimationFrame(renderLoop);
407 }
408
409 function drawFOVCircle() {
410 const centerX = overlayCanvas.width / 2;
411 const centerY = overlayCanvas.height / 2;
412
413 ctx.beginPath();
414 ctx.arc(centerX, centerY, config.aimbotFOV, 0, Math.PI * 2);
415 ctx.strokeStyle = 'rgba(0, 217, 255, 0.4)';
416 ctx.lineWidth = 2;
417 ctx.stroke();
418
419 // Draw crosshair
420 ctx.beginPath();
421 ctx.moveTo(centerX - 15, centerY);
422 ctx.lineTo(centerX + 15, centerY);
423 ctx.moveTo(centerX, centerY - 15);
424 ctx.lineTo(centerX, centerY + 15);
425 ctx.strokeStyle = 'rgba(0, 255, 0, 0.9)';
426 ctx.lineWidth = 2;
427 ctx.stroke();
428
429 // Draw center dot
430 ctx.beginPath();
431 ctx.arc(centerX, centerY, 3, 0, Math.PI * 2);
432 ctx.fillStyle = 'rgba(255, 0, 0, 0.8)';
433 ctx.fill();
434 }
435
436 function drawESP() {
437 players.forEach(player => {
438 if (!player.isEnemy) return;
439
440 const x = player.position.x;
441 const y = player.position.y;
442 const width = 45;
443 const height = 70;
444
445 // Draw box with glow effect
446 ctx.shadowBlur = 10;
447 ctx.shadowColor = config.espBoxColor;
448 ctx.strokeStyle = config.espBoxColor;
449 ctx.lineWidth = 2;
450 ctx.strokeRect(x - width/2, y - height/2, width, height);
451 ctx.shadowBlur = 0;
452
453 // Draw health bar
454 if (config.showHealthBars) {
455 const healthBarWidth = width;
456 const healthBarHeight = 6;
457 const healthPercent = player.health / 100;
458
459 ctx.fillStyle = 'rgba(0, 0, 0, 0.7)';
460 ctx.fillRect(x - healthBarWidth/2, y - height/2 - 12, healthBarWidth, healthBarHeight);
461
462 ctx.fillStyle = healthPercent > 0.5 ? '#00ff00' : healthPercent > 0.25 ? '#ffff00' : '#ff0000';
463 ctx.fillRect(x - healthBarWidth/2, y - height/2 - 12, healthBarWidth * healthPercent, healthBarHeight);
464
465 // Health percentage text
466 ctx.font = 'bold 10px Arial';
467 ctx.fillStyle = 'white';
468 ctx.textAlign = 'center';
469 ctx.strokeStyle = 'black';
470 ctx.lineWidth = 2;
471 ctx.strokeText(`${Math.floor(healthPercent * 100)}%`, x, y - height/2 - 15);
472 ctx.fillText(`${Math.floor(healthPercent * 100)}%`, x, y - height/2 - 15);
473 }
474
475 // Draw name
476 if (config.showNames) {
477 ctx.font = 'bold 12px Arial';
478 ctx.fillStyle = config.espColor;
479 ctx.textAlign = 'center';
480 ctx.strokeStyle = 'black';
481 ctx.lineWidth = 3;
482 ctx.strokeText(player.name, x, y - height/2 - 25);
483 ctx.fillText(player.name, x, y - height/2 - 25);
484 }
485
486 // Draw distance
487 if (config.showDistance) {
488 ctx.font = 'bold 11px Arial';
489 ctx.fillStyle = '#00d9ff';
490 ctx.strokeStyle = 'black';
491 ctx.lineWidth = 3;
492 ctx.strokeText(`${player.distance}m`, x, y + height/2 + 18);
493 ctx.fillText(`${player.distance}m`, x, y + height/2 + 18);
494 }
495
496 // Draw line to player
497 ctx.beginPath();
498 ctx.moveTo(overlayCanvas.width / 2, overlayCanvas.height);
499 ctx.lineTo(x, y);
500 ctx.strokeStyle = 'rgba(0, 255, 0, 0.4)';
501 ctx.lineWidth = 1.5;
502 ctx.stroke();
503 });
504 }
505
506 function processAimbot() {
507 const centerX = overlayCanvas.width / 2;
508 const centerY = overlayCanvas.height / 2;
509
510 let closestPlayer = null;
511 let closestDistance = Infinity;
512
513 // Find closest player within FOV
514 players.forEach(player => {
515 if (!player.isEnemy) return;
516
517 const dx = player.position.x - centerX;
518 const dy = player.position.y - centerY;
519 const distance = Math.sqrt(dx * dx + dy * dy);
520
521 if (distance < config.aimbotFOV && distance < closestDistance) {
522 closestDistance = distance;
523 closestPlayer = player;
524 }
525 });
526
527 // Aim at closest player with 100% accuracy
528 if (closestPlayer) {
529 const targetX = closestPlayer.position.x;
530 const targetY = closestPlayer.position.y;
531
532 // Draw target lock indicator
533 ctx.shadowBlur = 15;
534 ctx.shadowColor = '#ff0000';
535 ctx.beginPath();
536 ctx.arc(targetX, targetY, 25, 0, Math.PI * 2);
537 ctx.strokeStyle = 'rgba(255, 0, 0, 0.9)';
538 ctx.lineWidth = 3;
539 ctx.stroke();
540 ctx.shadowBlur = 0;
541
542 // Draw targeting lines
543 ctx.beginPath();
544 ctx.moveTo(targetX - 30, targetY);
545 ctx.lineTo(targetX - 15, targetY);
546 ctx.moveTo(targetX + 30, targetY);
547 ctx.lineTo(targetX + 15, targetY);
548 ctx.moveTo(targetX, targetY - 30);
549 ctx.lineTo(targetX, targetY - 15);
550 ctx.moveTo(targetX, targetY + 30);
551 ctx.lineTo(targetX, targetY + 15);
552 ctx.strokeStyle = 'rgba(255, 0, 0, 0.9)';
553 ctx.lineWidth = 2;
554 ctx.stroke();
555
556 // Draw "LOCKED" text
557 ctx.font = 'bold 12px Arial';
558 ctx.fillStyle = '#ff0000';
559 ctx.textAlign = 'center';
560 ctx.strokeStyle = 'black';
561 ctx.lineWidth = 3;
562 ctx.strokeText('🎯 LOCKED', targetX, targetY - 35);
563 ctx.fillText('🎯 LOCKED', targetX, targetY - 35);
564
565 // In a real implementation, this would automatically aim at the target
566 // with 100% accuracy by modifying the game's camera/aim system
567 console.log(`[Veck.io Cheats] 🎯 TARGET LOCKED: ${closestPlayer.name} - Distance: ${Math.floor(closestDistance)}px - 100% HIT GUARANTEED`);
568 }
569 }
570
571 // Start the extension
572 if (document.readyState === 'loading') {
573 document.addEventListener('DOMContentLoaded', init);
574 } else {
575 init();
576 }
577
578})();