Size
14.0 KB
Version
1.0.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.0.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');
15
16 // Intercept localStorage to unlock all items
17 const originalSetItem = localStorage.setItem;
18 const originalGetItem = localStorage.getItem;
19
20 // Override localStorage.setItem to intercept game data
21 localStorage.setItem = function(key, value) {
22 try {
23 // Check if this is game data related to unlocks
24 if (key && typeof value === 'string') {
25 let data = value;
26
27 // Try to parse as JSON
28 try {
29 let parsed = JSON.parse(value);
30
31 // Look for unlock-related data structures
32 if (parsed && typeof parsed === 'object') {
33 // Unlock weapons
34 if (parsed.weapons || parsed.Weapons) {
35 console.log('[Veck.io Unlocker] Found weapons data, unlocking all...');
36 let weaponsKey = parsed.weapons ? 'weapons' : 'Weapons';
37 if (Array.isArray(parsed[weaponsKey])) {
38 parsed[weaponsKey] = parsed[weaponsKey].map(w => ({...w, unlocked: true, locked: false, owned: true}));
39 } else if (typeof parsed[weaponsKey] === 'object') {
40 for (let wKey in parsed[weaponsKey]) {
41 parsed[weaponsKey][wKey].unlocked = true;
42 parsed[weaponsKey][wKey].locked = false;
43 parsed[weaponsKey][wKey].owned = true;
44 }
45 }
46 }
47
48 // Unlock items
49 if (parsed.items || parsed.Items) {
50 console.log('[Veck.io Unlocker] Found items data, unlocking all...');
51 let itemsKey = parsed.items ? 'items' : 'Items';
52 if (Array.isArray(parsed[itemsKey])) {
53 parsed[itemsKey] = parsed[itemsKey].map(i => ({...i, unlocked: true, locked: false, owned: true}));
54 } else if (typeof parsed[itemsKey] === 'object') {
55 for (let iKey in parsed[itemsKey]) {
56 parsed[itemsKey][iKey].unlocked = true;
57 parsed[itemsKey][iKey].locked = false;
58 parsed[itemsKey][iKey].owned = true;
59 }
60 }
61 }
62
63 // Unlock skins
64 if (parsed.skins || parsed.Skins) {
65 console.log('[Veck.io Unlocker] Found skins data, unlocking all...');
66 let skinsKey = parsed.skins ? 'skins' : 'Skins';
67 if (Array.isArray(parsed[skinsKey])) {
68 parsed[skinsKey] = parsed[skinsKey].map(s => ({...s, unlocked: true, locked: false, owned: true}));
69 } else if (typeof parsed[skinsKey] === 'object') {
70 for (let sKey in parsed[skinsKey]) {
71 parsed[skinsKey][sKey].unlocked = true;
72 parsed[skinsKey][sKey].locked = false;
73 parsed[skinsKey][sKey].owned = true;
74 }
75 }
76 }
77
78 // Add unlimited currency
79 if (parsed.coins !== undefined) {
80 parsed.coins = 999999;
81 console.log('[Veck.io Unlocker] Set coins to 999999');
82 }
83 if (parsed.money !== undefined) {
84 parsed.money = 999999;
85 console.log('[Veck.io Unlocker] Set money to 999999');
86 }
87 if (parsed.currency !== undefined) {
88 parsed.currency = 999999;
89 console.log('[Veck.io Unlocker] Set currency to 999999');
90 }
91 if (parsed.credits !== undefined) {
92 parsed.credits = 999999;
93 console.log('[Veck.io Unlocker] Set credits to 999999');
94 }
95
96 data = JSON.stringify(parsed);
97 }
98 } catch (e) {
99 // Not JSON, continue with original value
100 }
101
102 return originalSetItem.call(this, key, data);
103 }
104 } catch (error) {
105 console.error('[Veck.io Unlocker] Error intercepting setItem:', error);
106 }
107
108 return originalSetItem.call(this, key, value);
109 };
110
111 // Override localStorage.getItem to return unlocked data
112 localStorage.getItem = function(key) {
113 let value = originalGetItem.call(this, key);
114
115 if (!value) return value;
116
117 try {
118 let parsed = JSON.parse(value);
119
120 if (parsed && typeof parsed === 'object') {
121 let modified = false;
122
123 // Unlock weapons
124 if (parsed.weapons || parsed.Weapons) {
125 let weaponsKey = parsed.weapons ? 'weapons' : 'Weapons';
126 if (Array.isArray(parsed[weaponsKey])) {
127 parsed[weaponsKey] = parsed[weaponsKey].map(w => ({...w, unlocked: true, locked: false, owned: true}));
128 modified = true;
129 } else if (typeof parsed[weaponsKey] === 'object') {
130 for (let wKey in parsed[weaponsKey]) {
131 parsed[weaponsKey][wKey].unlocked = true;
132 parsed[weaponsKey][wKey].locked = false;
133 parsed[weaponsKey][wKey].owned = true;
134 }
135 modified = true;
136 }
137 }
138
139 // Unlock items
140 if (parsed.items || parsed.Items) {
141 let itemsKey = parsed.items ? 'items' : 'Items';
142 if (Array.isArray(parsed[itemsKey])) {
143 parsed[itemsKey] = parsed[itemsKey].map(i => ({...i, unlocked: true, locked: false, owned: true}));
144 modified = true;
145 } else if (typeof parsed[itemsKey] === 'object') {
146 for (let iKey in parsed[itemsKey]) {
147 parsed[itemsKey][iKey].unlocked = true;
148 parsed[itemsKey][iKey].locked = false;
149 parsed[itemsKey][iKey].owned = true;
150 }
151 modified = true;
152 }
153 }
154
155 // Unlock skins
156 if (parsed.skins || parsed.Skins) {
157 let skinsKey = parsed.skins ? 'skins' : 'Skins';
158 if (Array.isArray(parsed[skinsKey])) {
159 parsed[skinsKey] = parsed[skinsKey].map(s => ({...s, unlocked: true, locked: false, owned: true}));
160 modified = true;
161 } else if (typeof parsed[skinsKey] === 'object') {
162 for (let sKey in parsed[skinsKey]) {
163 parsed[skinsKey][sKey].unlocked = true;
164 parsed[skinsKey][sKey].locked = false;
165 parsed[skinsKey][sKey].owned = true;
166 }
167 modified = true;
168 }
169 }
170
171 // Add unlimited currency
172 if (parsed.coins !== undefined) {
173 parsed.coins = 999999;
174 modified = true;
175 }
176 if (parsed.money !== undefined) {
177 parsed.money = 999999;
178 modified = true;
179 }
180 if (parsed.currency !== undefined) {
181 parsed.currency = 999999;
182 modified = true;
183 }
184 if (parsed.credits !== undefined) {
185 parsed.credits = 999999;
186 modified = true;
187 }
188
189 if (modified) {
190 return JSON.stringify(parsed);
191 }
192 }
193 } catch (e) {
194 // Not JSON, return original
195 }
196
197 return value;
198 };
199
200 // Intercept IndexedDB for Unity games
201 const originalIDBOpen = indexedDB.open;
202 indexedDB.open = function(...args) {
203 const request = originalIDBOpen.apply(this, args);
204
205 request.addEventListener('success', function() {
206 console.log('[Veck.io Unlocker] IndexedDB opened:', args[0]);
207
208 const db = request.result;
209
210 // Try to read and modify game data
211 try {
212 const storeNames = Array.from(db.objectStoreNames);
213 console.log('[Veck.io Unlocker] Object stores:', storeNames);
214
215 storeNames.forEach(storeName => {
216 try {
217 const transaction = db.transaction(storeName, 'readwrite');
218 const store = transaction.objectStore(storeName);
219 const getAllRequest = store.getAll();
220
221 getAllRequest.onsuccess = function() {
222 const data = getAllRequest.result;
223 console.log(`[Veck.io Unlocker] Data from ${storeName}:`, data);
224
225 // Modify and put back
226 if (Array.isArray(data)) {
227 data.forEach((item, index) => {
228 if (item && typeof item === 'object') {
229 if (item.unlocked !== undefined) item.unlocked = true;
230 if (item.locked !== undefined) item.locked = false;
231 if (item.owned !== undefined) item.owned = true;
232
233 try {
234 store.put(item, index);
235 } catch (e) {
236 console.log('[Veck.io Unlocker] Could not modify item:', e);
237 }
238 }
239 });
240 }
241 };
242 } catch (e) {
243 console.log('[Veck.io Unlocker] Error accessing store:', e);
244 }
245 });
246 } catch (e) {
247 console.error('[Veck.io Unlocker] Error modifying IndexedDB:', e);
248 }
249 });
250
251 return request;
252 };
253
254 // Monitor for Unity game objects
255 let checkInterval = setInterval(() => {
256 // Check for Unity instance
257 if (typeof unsafeWindow.unityInstance !== 'undefined') {
258 console.log('[Veck.io Unlocker] Unity instance found!');
259
260 // Try to send messages to Unity
261 try {
262 unsafeWindow.unityInstance.SendMessage('GameManager', 'UnlockAll', '');
263 } catch (e) {
264 console.log('[Veck.io Unlocker] Could not send Unity message:', e);
265 }
266 }
267
268 // Check for game objects in window
269 for (let key in unsafeWindow) {
270 if (key.toLowerCase().includes('game') || key.toLowerCase().includes('player')) {
271 try {
272 let obj = unsafeWindow[key];
273 if (obj && typeof obj === 'object') {
274 // Try to unlock items
275 if (obj.weapons) {
276 console.log('[Veck.io Unlocker] Found weapons in', key);
277 if (Array.isArray(obj.weapons)) {
278 obj.weapons.forEach(w => {
279 if (w) {
280 w.unlocked = true;
281 w.locked = false;
282 w.owned = true;
283 }
284 });
285 }
286 }
287 if (obj.items) {
288 console.log('[Veck.io Unlocker] Found items in', key);
289 if (Array.isArray(obj.items)) {
290 obj.items.forEach(i => {
291 if (i) {
292 i.unlocked = true;
293 i.locked = false;
294 i.owned = true;
295 }
296 });
297 }
298 }
299 }
300 } catch (e) {
301 // Skip
302 }
303 }
304 }
305 }, 2000);
306
307 // Stop checking after 30 seconds
308 setTimeout(() => {
309 clearInterval(checkInterval);
310 console.log('[Veck.io Unlocker] Stopped monitoring for game objects');
311 }, 30000);
312
313 console.log('[Veck.io Unlocker] All hooks installed. Weapons and items should be unlocked!');
314})();