Size
17.4 KB
Version
1.1.1
Created
Jan 20, 2026
Updated
14 days 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.1
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 Unlocker] Extension loaded - Unlocking ALL weapons and items!');
15
16 // Intercept localStorage to unlock all items
17 const originalSetItem = localStorage.setItem;
18 const originalGetItem = localStorage.getItem;
19
20 // Force unlock all items immediately
21 try {
22 localStorage.setItem('allItemsUnlocked', 'true');
23 localStorage.setItem('rainbowItemsUnlocked', 'true');
24 localStorage.setItem('level', '100');
25 localStorage.setItem('Level', '100');
26 localStorage.setItem('LEVEL', '100');
27 localStorage.setItem('playerLevel', '100');
28 localStorage.setItem('currentLevel', '100');
29 localStorage.setItem('userLevel', '100');
30 localStorage.setItem('xp', '999999999');
31 localStorage.setItem('XP', '999999999');
32 localStorage.setItem('exp', '999999999');
33 localStorage.setItem('EXP', '999999999');
34 localStorage.setItem('experience', '999999999');
35 localStorage.setItem('playerXP', '999999999');
36 console.log('[Veck.io Unlocker] ✓ All items unlocked immediately!');
37 } catch (e) {
38 console.error('[Veck.io Unlocker] Error setting initial values:', e);
39 }
40
41 // Override localStorage.setItem to prevent game from locking items
42 localStorage.setItem = function(key, value) {
43 try {
44 // Force unlock flags to always be true
45 if (key === 'allItemsUnlocked' || key === 'rainbowItemsUnlocked') {
46 console.log(`[Veck.io Unlocker] Forcing ${key} to true`);
47 return originalSetItem.call(this, key, 'true');
48 }
49
50 // Keep level at max
51 if (key === 'level' || key === 'Level' || key === 'LEVEL' ||
52 key === 'playerLevel' || key === 'currentLevel' || key === 'userLevel') {
53 const newLevel = parseInt(value) || 0;
54 if (newLevel < 100) {
55 console.log(`[Veck.io Unlocker] Keeping ${key} at 100 (game tried to set ${value})`);
56 return originalSetItem.call(this, key, '100');
57 }
58 }
59
60 // Keep XP at max
61 if (key === 'xp' || key === 'XP' || key === 'exp' || key === 'EXP' ||
62 key === 'experience' || key === 'playerXP') {
63 const newXP = parseInt(value) || 0;
64 if (newXP < 999999999) {
65 console.log(`[Veck.io Unlocker] Keeping ${key} at max (game tried to set ${value})`);
66 return originalSetItem.call(this, key, '999999999');
67 }
68 }
69
70 // Check if this is game data related to unlocks
71 if (key && typeof value === 'string') {
72 let data = value;
73
74 // Try to parse as JSON
75 try {
76 let parsed = JSON.parse(value);
77
78 // Look for unlock-related data structures
79 if (parsed && typeof parsed === 'object') {
80 let modified = false;
81
82 // Unlock weapons
83 if (parsed.weapons || parsed.Weapons) {
84 console.log('[Veck.io Unlocker] Found weapons data, unlocking all...');
85 let weaponsKey = parsed.weapons ? 'weapons' : 'Weapons';
86 if (Array.isArray(parsed[weaponsKey])) {
87 parsed[weaponsKey] = parsed[weaponsKey].map(w => ({...w, unlocked: true, locked: false, owned: true}));
88 modified = true;
89 } else if (typeof parsed[weaponsKey] === 'object') {
90 for (let wKey in parsed[weaponsKey]) {
91 parsed[weaponsKey][wKey].unlocked = true;
92 parsed[weaponsKey][wKey].locked = false;
93 parsed[weaponsKey][wKey].owned = true;
94 }
95 modified = true;
96 }
97 }
98
99 // Unlock items
100 if (parsed.items || parsed.Items) {
101 console.log('[Veck.io Unlocker] Found items data, unlocking all...');
102 let itemsKey = parsed.items ? 'items' : 'Items';
103 if (Array.isArray(parsed[itemsKey])) {
104 parsed[itemsKey] = parsed[itemsKey].map(i => ({...i, unlocked: true, locked: false, owned: true}));
105 modified = true;
106 } else if (typeof parsed[itemsKey] === 'object') {
107 for (let iKey in parsed[itemsKey]) {
108 parsed[itemsKey][iKey].unlocked = true;
109 parsed[itemsKey][iKey].locked = false;
110 parsed[itemsKey][iKey].owned = true;
111 }
112 modified = true;
113 }
114 }
115
116 // Unlock skins
117 if (parsed.skins || parsed.Skins) {
118 console.log('[Veck.io Unlocker] Found skins data, unlocking all...');
119 let skinsKey = parsed.skins ? 'skins' : 'Skins';
120 if (Array.isArray(parsed[skinsKey])) {
121 parsed[skinsKey] = parsed[skinsKey].map(s => ({...s, unlocked: true, locked: false, owned: true}));
122 modified = true;
123 } else if (typeof parsed[skinsKey] === 'object') {
124 for (let sKey in parsed[skinsKey]) {
125 parsed[skinsKey][sKey].unlocked = true;
126 parsed[skinsKey][sKey].locked = false;
127 parsed[skinsKey][sKey].owned = true;
128 }
129 modified = true;
130 }
131 }
132
133 // Add unlimited currency
134 if (parsed.coins !== undefined) {
135 parsed.coins = 999999;
136 modified = true;
137 }
138 if (parsed.money !== undefined) {
139 parsed.money = 999999;
140 modified = true;
141 }
142 if (parsed.currency !== undefined) {
143 parsed.currency = 999999;
144 modified = true;
145 }
146 if (parsed.credits !== undefined) {
147 parsed.credits = 999999;
148 modified = true;
149 }
150
151 if (modified) {
152 data = JSON.stringify(parsed);
153 }
154 }
155 } catch (e) {
156 // Not JSON, continue with original value
157 }
158
159 return originalSetItem.call(this, key, data);
160 }
161 } catch (error) {
162 console.error('[Veck.io Unlocker] Error intercepting setItem:', error);
163 }
164
165 return originalSetItem.call(this, key, value);
166 };
167
168 // Override localStorage.getItem to return unlocked data
169 localStorage.getItem = function(key) {
170 // Force return unlocked values for specific keys
171 if (key === 'allItemsUnlocked' || key === 'rainbowItemsUnlocked') {
172 return 'true';
173 }
174
175 if (key === 'level' || key === 'Level' || key === 'LEVEL' ||
176 key === 'playerLevel' || key === 'currentLevel' || key === 'userLevel') {
177 return '100';
178 }
179
180 if (key === 'xp' || key === 'XP' || key === 'exp' || key === 'EXP' ||
181 key === 'experience' || key === 'playerXP') {
182 return '999999999';
183 }
184
185 let value = originalGetItem.call(this, key);
186
187 if (!value) return value;
188
189 try {
190 let parsed = JSON.parse(value);
191
192 if (parsed && typeof parsed === 'object') {
193 let modified = false;
194
195 // Unlock weapons
196 if (parsed.weapons || parsed.Weapons) {
197 let weaponsKey = parsed.weapons ? 'weapons' : 'Weapons';
198 if (Array.isArray(parsed[weaponsKey])) {
199 parsed[weaponsKey] = parsed[weaponsKey].map(w => ({...w, unlocked: true, locked: false, owned: true}));
200 modified = true;
201 } else if (typeof parsed[weaponsKey] === 'object') {
202 for (let wKey in parsed[weaponsKey]) {
203 parsed[weaponsKey][wKey].unlocked = true;
204 parsed[weaponsKey][wKey].locked = false;
205 parsed[weaponsKey][wKey].owned = true;
206 }
207 modified = true;
208 }
209 }
210
211 // Unlock items
212 if (parsed.items || parsed.Items) {
213 let itemsKey = parsed.items ? 'items' : 'Items';
214 if (Array.isArray(parsed[itemsKey])) {
215 parsed[itemsKey] = parsed[itemsKey].map(i => ({...i, unlocked: true, locked: false, owned: true}));
216 modified = true;
217 } else if (typeof parsed[itemsKey] === 'object') {
218 for (let iKey in parsed[itemsKey]) {
219 parsed[itemsKey][iKey].unlocked = true;
220 parsed[itemsKey][iKey].locked = false;
221 parsed[itemsKey][iKey].owned = true;
222 }
223 modified = true;
224 }
225 }
226
227 // Unlock skins
228 if (parsed.skins || parsed.Skins) {
229 let skinsKey = parsed.skins ? 'skins' : 'Skins';
230 if (Array.isArray(parsed[skinsKey])) {
231 parsed[skinsKey] = parsed[skinsKey].map(s => ({...s, unlocked: true, locked: false, owned: true}));
232 modified = true;
233 } else if (typeof parsed[skinsKey] === 'object') {
234 for (let sKey in parsed[skinsKey]) {
235 parsed[skinsKey][sKey].unlocked = true;
236 parsed[skinsKey][sKey].locked = false;
237 parsed[skinsKey][sKey].owned = true;
238 }
239 modified = true;
240 }
241 }
242
243 // Add unlimited currency
244 if (parsed.coins !== undefined) {
245 parsed.coins = 999999;
246 modified = true;
247 }
248 if (parsed.money !== undefined) {
249 parsed.money = 999999;
250 modified = true;
251 }
252 if (parsed.currency !== undefined) {
253 parsed.currency = 999999;
254 modified = true;
255 }
256 if (parsed.credits !== undefined) {
257 parsed.credits = 999999;
258 modified = true;
259 }
260
261 if (modified) {
262 return JSON.stringify(parsed);
263 }
264 }
265 } catch (e) {
266 // Not JSON, return original
267 }
268
269 return value;
270 };
271
272 // Intercept IndexedDB for Unity games
273 const originalIDBOpen = indexedDB.open;
274 indexedDB.open = function(...args) {
275 const request = originalIDBOpen.apply(this, args);
276
277 request.addEventListener('success', function() {
278 console.log('[Veck.io Unlocker] IndexedDB opened:', args[0]);
279
280 const db = request.result;
281
282 // Try to read and modify game data
283 try {
284 const storeNames = Array.from(db.objectStoreNames);
285 console.log('[Veck.io Unlocker] Object stores:', storeNames);
286
287 storeNames.forEach(storeName => {
288 try {
289 const transaction = db.transaction(storeName, 'readwrite');
290 const store = transaction.objectStore(storeName);
291 const getAllRequest = store.getAll();
292
293 getAllRequest.onsuccess = function() {
294 const data = getAllRequest.result;
295 console.log(`[Veck.io Unlocker] Data from ${storeName}:`, data);
296
297 // Modify and put back
298 if (Array.isArray(data)) {
299 data.forEach((item, index) => {
300 if (item && typeof item === 'object') {
301 if (item.unlocked !== undefined) item.unlocked = true;
302 if (item.locked !== undefined) item.locked = false;
303 if (item.owned !== undefined) item.owned = true;
304
305 try {
306 store.put(item, index);
307 } catch (e) {
308 console.log('[Veck.io Unlocker] Could not modify item:', e);
309 }
310 }
311 });
312 }
313 };
314 } catch (e) {
315 console.log('[Veck.io Unlocker] Error accessing store:', e);
316 }
317 });
318 } catch (e) {
319 console.error('[Veck.io Unlocker] Error modifying IndexedDB:', e);
320 }
321 });
322
323 return request;
324 };
325
326 // Monitor for Unity game objects and window properties
327 let checkInterval = setInterval(() => {
328 // Check for Unity instance
329 if (typeof unsafeWindow.unityInstance !== 'undefined') {
330 console.log('[Veck.io Unlocker] Unity instance found!');
331
332 // Try to send messages to Unity
333 try {
334 unsafeWindow.unityInstance.SendMessage('GameManager', 'UnlockAll', '');
335 } catch (e) {
336 console.log('[Veck.io Unlocker] Could not send Unity message:', e);
337 }
338 }
339
340 // Check for game objects in window
341 for (let key in unsafeWindow) {
342 if (key.toLowerCase().includes('game') || key.toLowerCase().includes('player')) {
343 try {
344 let obj = unsafeWindow[key];
345 if (obj && typeof obj === 'object') {
346 // Try to unlock items
347 if (obj.weapons) {
348 console.log('[Veck.io Unlocker] Found weapons in', key);
349 if (Array.isArray(obj.weapons)) {
350 obj.weapons.forEach(w => {
351 if (w) {
352 w.unlocked = true;
353 w.locked = false;
354 w.owned = true;
355 }
356 });
357 }
358 }
359 if (obj.items) {
360 console.log('[Veck.io Unlocker] Found items in', key);
361 if (Array.isArray(obj.items)) {
362 obj.items.forEach(i => {
363 if (i) {
364 i.unlocked = true;
365 i.locked = false;
366 i.owned = true;
367 }
368 });
369 }
370 }
371 }
372 } catch (e) {
373 // Skip
374 }
375 }
376 }
377 }, 2000);
378
379 // Stop checking after 30 seconds
380 setTimeout(() => {
381 clearInterval(checkInterval);
382 console.log('[Veck.io Unlocker] Stopped monitoring for game objects');
383 }, 30000);
384
385 console.log('[Veck.io Unlocker] ✓ All hooks installed!');
386 console.log('[Veck.io Unlocker] ✓ All weapons unlocked!');
387 console.log('[Veck.io Unlocker] ✓ All items unlocked!');
388 console.log('[Veck.io Unlocker] ✓ Rainbow items unlocked!');
389 console.log('[Veck.io Unlocker] ✓ Overpowered weapons unlocked!');
390 console.log('[Veck.io Unlocker] ✓ Level set to 100!');
391 console.log('[Veck.io Unlocker] ✓ XP set to maximum!');
392})();