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