Generate games at the light of speed

The Ultimate Nevosa Manifest

Generate the games you want with the light of speed.

Nevosa Store

Shop

Acquisti privati, consegna rapida e supporto dello staff sempre disponibile.

🛒
Nevosa Store
Tutti gli acquisti vengono gestiti tramite un ticket privato di acquisto, con lo staff pronto ad aiutare nella scelta.
Private orders
Fast delivery
Staff support
Order Flow
1
Apri un ticket di acquisto
2
Comunica allo staff cosa vuoi comprare
3
Completa il pagamento e ricevi la consegna
Apri un Ticket
🎮
Game Packs
Scegli il pacchetto più adatto a te tra Starter e Large Pack.
Starter Packs
1,000 Games1€
3,000 Games3€
4,000 Games4€
Large Packs
20,000 Games6€
28,000 Games9€
30,000 Games12€
40,000 Games16€
60,000 Games20€
Acquista Pack
Premium, Bot & Bundle
Accesso Premium illimitato, metodo bot completo e bundle esclusivi.
Premium
Premium Access Downloads illimitati · No cooldown · Priorità 5€
Bot Method
Discord Bot Method Full Setup + Config server 25€
Bundle Deals
4,000 + Premium7€
28,000 + Premium12€
40,000 + Premium16€
60,000 + Premium22€
Ottieni Premium
🔄
Resell
Diventa rivenditore ufficiale Nevosa. Attualmente in manutenzione.
🔧
In Manutenzione
Non disponibile al momento.
Torna presto per aggiornamenti.
const isLoggedIn = false; const userTier = ''; let currentAppId = null; let userStatus = null; const DISCORD_SVG = ''; const SPARKLE_SVG = ''; const CHECK_SVG = ''; // Fetch user status on load async function fetchUserStatus() { if (!isLoggedIn) return; try { const res = await fetch('/api/user-status'); userStatus = await res.json(); } catch(e) { console.error(e); } } fetchUserStatus(); function buildCounterBar() { if (!userStatus || !userStatus.logged_in) return ''; if (userStatus.tier === null || userStatus.reason === 'not_in_server') { return '
⚠ Devi essere nel server Discord con il ruolo Membro o Premium per generare
'; } if (userStatus.tier === 'premium') { return '
⚡ Premium — Generazioni illimitate
'; } // Membro const used = userStatus.used || 0; const limit = userStatus.limit || 3; const remaining = limit - used; const pct = (used / limit) * 100; return '
' + '' + used + '/' + limit + ' usate' + '
' + '' + remaining + ' rimaste (24h)' + '
'; } function buildGenButton() { if (!isLoggedIn) { return ''; } if (!userStatus) { return ''; } if (userStatus.tier === null) { return ''; } if (userStatus.tier === 'membro' && !userStatus.can_generate) { return ''; } return ''; } async function extractData() { const appId = document.getElementById('appIdInput').value.trim(); if (!appId || isNaN(appId)) return; currentAppId = appId; const area = document.getElementById('resultArea'); const btn = document.getElementById('extractBtn'); btn.disabled = true; area.innerHTML = '
Fetching data for App ID ' + appId + '...
'; // Refresh user status if (isLoggedIn) await fetchUserStatus(); try { const res = await fetch('/api/steam/' + appId); const data = await res.json(); if (data.error) throw new Error(data.error); if (!data[appId] || !data[appId].success) throw new Error('Game not found. Check the App ID.'); const g = data[appId].data; const genres = (g.genres || []).map(x => '' + esc(x.description) + '').join(''); const img = g.header_image || ''; const desc = g.short_description || 'No description available.'; area.innerHTML = '
' + '
' + '' + esc(g.name) + '' + '
APP ID: ' + appId + '
' + '
' + '
' + '
' + esc(g.name) + '
' + '
' + desc + '
' + '
' + genres + '
' + buildCounterBar() + buildGenButton() + '
' + '
' + '
'; } catch(err) { area.innerHTML = '
' + esc(err.message) + '
'; } btn.disabled = false; } let generatedLuaContent = null; const DL_SVG = ''; async function handleGenerate() { if (!currentAppId) return; const btn = document.getElementById('generateBtn'); const out = document.getElementById('genOutput'); if (!btn) return; btn.disabled = true; btn.innerHTML = '
Generating...'; try { const res = await fetch('/api/generate/' + currentAppId); if (!res.ok) { // Try to parse error JSON from server let errMsg = 'Generation failed (' + res.status + ')'; try { const errData = await res.json(); if (errData.error) errMsg = errData.error; } catch(e) { // Response wasn't JSON, use default message } throw new Error(errMsg); } const text = await res.text(); // Verify we got actual Lua content if (!text || text.trim().length < 10) { throw new Error('Empty response from API'); } // Check if response is actually an error JSON try { const maybeErr = JSON.parse(text); if (maybeErr.error) throw new Error(maybeErr.error); } catch(e) { // Not JSON = good, it's Lua content if (e.message && !e.message.includes('JSON')) throw e; } generatedLuaContent = text; // Replace generate button with download button btn.outerHTML = ''; // Refresh counter await fetchUserStatus(); const counterEl = document.querySelector('.counter-bar'); if (counterEl && userStatus && userStatus.tier === 'membro') { const used = userStatus.used || 0; const limit = userStatus.limit || 3; const remaining = limit - used; const pct = (used / limit) * 100; counterEl.innerHTML = '' + used + '/' + limit + ' usate' + '
' + '' + remaining + ' rimaste (24h)'; } } catch(err) { out.innerHTML = '
' + esc(err.message) + '
'; btn.innerHTML = SPARKLE_SVG + ' Retry'; btn.disabled = false; } } function downloadLua() { if (!generatedLuaContent) return; const blob = new Blob([generatedLuaContent], { type: 'text/plain' }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = 'manifest_' + currentAppId + '.lua'; document.body.appendChild(a); a.click(); document.body.removeChild(a); URL.revokeObjectURL(url); } function esc(s) { return String(s).replace(/&/g,'&').replace(//g,'>').replace(/"/g,'"'); } // ─── PARTICLES ─── const canvas = document.getElementById('particles'); const ctx = canvas.getContext('2d'); let pts = []; function resize() { canvas.width = innerWidth; canvas.height = innerHeight; } resize(); addEventListener('resize', resize); class P { constructor() { this.reset() } reset() { this.x = Math.random() * canvas.width; this.y = Math.random() * canvas.height; this.vx = (Math.random() - .5) * .3; this.vy = (Math.random() - .5) * .3; this.r = Math.random() * 1.5 + .5; this.o = Math.random() * .3 + .05; this.h = Math.random() > .5 ? 210 : 230; } update() { this.x += this.vx; this.y += this.vy; if (this.x < 0 || this.x > canvas.width) this.vx *= -1; if (this.y < 0 || this.y > canvas.height) this.vy *= -1; } draw() { ctx.beginPath(); ctx.arc(this.x, this.y, this.r, 0, Math.PI * 2); ctx.fillStyle = 'hsla(' + this.h + ',80%,70%,' + this.o + ')'; ctx.fill(); } } for (let i = 0; i < 60; i++) pts.push(new P()); function loop() { ctx.clearRect(0, 0, canvas.width, canvas.height); for (let i = 0; i < pts.length; i++) { pts[i].update(); pts[i].draw(); for (let j = i + 1; j < pts.length; j++) { const dx = pts[i].x - pts[j].x, dy = pts[i].y - pts[j].y; const d = Math.sqrt(dx * dx + dy * dy); if (d < 120) { ctx.beginPath(); ctx.moveTo(pts[i].x, pts[i].y); ctx.lineTo(pts[j].x, pts[j].y); ctx.strokeStyle = 'rgba(59,130,246,' + (.06 * (1 - d / 120)) + ')'; ctx.lineWidth = .5; ctx.stroke(); } } } requestAnimationFrame(loop); } loop(); // Mouse glow const glow = document.getElementById('mouseGlow'); document.addEventListener('mousemove', e => { glow.style.left = e.clientX + 'px'; glow.style.top = e.clientY + 'px'; }); // Page navigation function showPage(page) { const home = document.getElementById('homePage'); const shop = document.getElementById('shopPage'); const navHome = document.getElementById('navHome'); const navShop = document.getElementById('navShop'); if (page === 'shop') { home.classList.add('hidden'); shop.classList.add('active'); navHome.classList.remove('active'); navShop.classList.add('active'); } else { shop.classList.remove('active'); home.classList.remove('hidden'); navHome.classList.add('active'); navShop.classList.remove('active'); } }