您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Tenta prever onde a bola vai bater na parede em salas públicas de Haxball.
当前为
// ==UserScript== // @name Haxball Ball Trajectory Predictor (Beta) // @namespace http://tampermonkey.net/ // @version 0.1 // @description Tenta prever onde a bola vai bater na parede em salas públicas de Haxball. // @author Você // @match https://www.haxball.com/play* // @grant none // ==/UserScript== (function () { 'use strict'; const canvas = document.querySelector("canvas"); if (!canvas) return; let lastPos = null; let lastTime = performance.now(); function drawPrediction(ctx, ballPos, ballSpeed) { let predictedX = ballPos.x; let predictedY = ballPos.y; let vx = ballSpeed.x; let vy = ballSpeed.y; let steps = 300; ctx.strokeStyle = "yellow"; ctx.beginPath(); ctx.moveTo(predictedX, predictedY); for (let i = 0; i < steps; i++) { predictedX += vx; predictedY += vy; if (predictedX <= 0 || predictedX >= canvas.width) vx *= -1; if (predictedY <= 0 || predictedY >= canvas.height) vy *= -1; ctx.lineTo(predictedX, predictedY); } ctx.stroke(); } function trackBall() { const ctx = canvas.getContext("2d"); const imgData = ctx.getImageData(0, 0, canvas.width, canvas.height); const data = imgData.data; let found = false; let centerX = 0, centerY = 0, count = 0; for (let y = 0; y < canvas.height; y += 2) { for (let x = 0; x < canvas.width; x += 2) { const idx = (y * canvas.width + x) * 4; const r = data[idx], g = data[idx + 1], b = data[idx + 2]; // Detecta a bola (geralmente branca com tom amarelado) if (r > 200 && g > 200 && b < 150) { centerX += x; centerY += y; count++; } } } if (count > 0) { centerX = centerX / count; centerY = centerY / count; const now = performance.now(); const dt = (now - lastTime) / 1000; if (lastPos) { const vx = (centerX - lastPos.x) / dt; const vy = (centerY - lastPos.y) / dt; // Redesenha a previsão drawPrediction(ctx, { x: centerX, y: centerY }, { x: vx, y: vy }); } lastPos = { x: centerX, y: centerY }; lastTime = now; } requestAnimationFrame(trackBall); } setTimeout(() => { console.log("[Previsão de Trajetória] Iniciando..."); trackBall(); }, 3000); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址