您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds an healthbar and energybar to BiteFight
当前为
// ==UserScript== // @name BiteFight Healthbar // @namespace https://lobby.bitefight.gameforge.com/ // @version 0.3 // @description Adds an healthbar and energybar to BiteFight // @author Spychopat // @match https://*.bitefight.gameforge.com/* // @grant GM_getValue // @grant GM_setValue // @grant GM_addStyle // ==/UserScript== (function () { 'use strict'; // Script storage keys const KEY_CHARACTER = 'character'; // Define character object const CHARACTER = GM_getValue(KEY_CHARACTER, { energy: 0, maxEnergy: 0, health: 0, maxHealth: 0, regenHealth: 0 }); // Get Stats var allStatsElement = document.getElementsByClassName("gold")[0]; var statsValues = allStatsElement.textContent.split("\n"); statsValues = statsValues.map(value => value.trim()); statsValues.shift(); // Extract energy, fragments, gold, health, and hellStones var energy = statsValues[3].trim(); var currentEnergy = energy.split("/")[0]; var maxEnergy = energy.split("/")[1]; if (currentEnergy && maxEnergy) { CHARACTER.energy = parseInt(currentEnergy); // Use parseFloat to preserve decimals CHARACTER.maxEnergy = parseInt(maxEnergy); // Use parseFloat to preserve decimals } var health = statsValues[4].trim(); var currentHealth = formatNumber(health.split("/")[0]); var maxHealth = formatNumber(health.split("/")[1]); if (currentHealth && maxHealth) { CHARACTER.health = parseInt(currentHealth); CHARACTER.maxHealth = parseInt(maxHealth); } checkRegenHealth(); updateCharacter(); removeTheShit(); insertProgressBars(); // Insert progress bars after updating the character console.log(CHARACTER); function removeTheShit() { GM_addStyle(` #upgrademsg { display: none; } #premium > img { display: none; } #mmonetbar { display: none !important; visibility: hidden; } `); } // Format texts to return as numbers (no thousand separators) function formatNumber(value) { while (value.indexOf(".") > 0) value = value.replace(".", ""); return value; } function checkRegenHealth() { var elements = document.getElementsByClassName("triggerTooltip"); // Loop through the elements for (let i = 0; i < elements.length; i++) { // Check if the inner text or inner HTML contains "/ h" if (elements[i].innerText.includes("/ h") || elements[i].innerHTML.includes("/ h")) { CHARACTER.regenHealth = parseInt(elements[i].textContent); //console.log("Regen per hour found : ", parseInt(elements[i].textContent)); break; // Exit the loop once the element is found } } } // Update character in local storage function updateCharacter() { GM_setValue(KEY_CHARACTER, CHARACTER); } // Function to insert progress bars into the page function insertProgressBars() { // Check if progress bars are already inserted if (document.getElementById('energyProgressBar') && document.getElementById('healthProgressBar')) { return; // If bars are already present, do nothing } // Create container for the progress bars let container = document.createElement('div'); container.style.marginTop = '0px'; container.style.paddingTop = '3px'; container.style.paddingBottom = '8px'; container.style.paddingLeft = '60px'; container.style.paddingRight = '60px'; container.style.textAlign = 'center'; container.style.display = 'flex'; // Use flexbox for side-by-side layout container.style.justifyContent = 'space-between'; // Space out the bars // Energy Progress Bar let energyBarContainer = document.createElement('div'); energyBarContainer.style.flex = '1'; // Ensure bars take equal space energyBarContainer.style.backgroundColor = 'black'; // Black background for the container energyBarContainer.style.borderRadius = '0px'; // Rounded corners for container energyBarContainer.style.padding = '2px'; // Padding for spacing between container and bar energyBarContainer.style.outline = '2px solid #333'; // Outline around the container energyBarContainer.style.position = 'relative'; // Positioning context for the text energyBarContainer.style.marginRight = '100px'; energyBarContainer.id = 'energyProgressBar'; // Set an ID to easily find it later let energyBar = document.createElement('div'); energyBar.style.height = '20px'; energyBar.style.width = `${(CHARACTER.energy / CHARACTER.maxEnergy) * 100}%`; energyBar.style.backgroundColor = '#0000a4'; energyBar.style.borderRadius = '0px'; energyBar.style.outline = '2px solid #000'; // Outline for the progress bar // Create the text for the energy value let energyText = document.createElement('div'); energyText.textContent = `${CHARACTER.energy}`; energyText.style.position = 'absolute'; energyText.style.top = '50%'; energyText.style.left = '50%'; energyText.style.transform = 'translate(-50%, -50%)'; energyText.style.color = 'white'; energyText.style.fontSize = '12px'; energyText.style.fontWeight = 'bold'; energyText.style.fontFamily = 'monospace'; energyBarContainer.appendChild(energyBar); energyBarContainer.appendChild(energyText); // Add the text to the container container.appendChild(energyBarContainer); // Health Progress Bar let healthBarContainer = document.createElement('div'); healthBarContainer.style.flex = '1'; // Ensure bars take equal space healthBarContainer.style.backgroundColor = 'black'; // Black background for the container healthBarContainer.style.borderRadius = '0px'; // Rounded corners for container healthBarContainer.style.padding = '2px'; // Padding for spacing between container and bar healthBarContainer.style.outline = '2px solid #333'; // Outline around the container healthBarContainer.style.position = 'relative'; // Positioning context for the text healthBarContainer.id = 'healthProgressBar'; // Set an ID to easily find it later let healthBar = document.createElement('div'); healthBar.style.height = '20px'; healthBar.style.width = `${(CHARACTER.health / CHARACTER.maxHealth) * 100}%`; healthBar.style.backgroundColor = '#b80000'; healthBar.style.borderRadius = '0px'; healthBar.style.outline = '2px solid #000'; // Outline for the progress bar // Create the text for the health value let healthText = document.createElement('div'); healthText.textContent = `${CHARACTER.health > 999 ? CHARACTER.health.toString().replace(/\B(?=(\d{3})+(?!\d))/g, '.') : CHARACTER.health}`; healthText.style.position = 'absolute'; healthText.style.top = '50%'; healthText.style.left = '50%'; healthText.style.transform = 'translate(-50%, -50%)'; healthText.style.color = 'white'; healthText.style.fontSize = '12px'; healthText.style.fontWeight = 'bold'; healthText.style.fontFamily = 'monospace'; healthBarContainer.appendChild(healthBar); healthBarContainer.appendChild(healthText); // Add the text to the container container.appendChild(healthBarContainer); // Insert the container into the body or any desired element on the page document.getElementsByClassName("gold")[0].appendChild(container); } // Start real-time health regeneration function startHealthRegeneration() { const regenInterval = 100; // Update every second (1000 ms) const regenPerSecond = CHARACTER.regenHealth / 36000; // Convert regenHealth from per hour to per second setInterval(() => { if (CHARACTER.health < CHARACTER.maxHealth) { CHARACTER.health = Math.min(CHARACTER.maxHealth, CHARACTER.health + regenPerSecond); updateCharacter(); updateProgressBars(); // Update the existing progress bars } }, regenInterval); } // Update the existing progress bars function updateProgressBars() { // Update Energy Progress Bar const energyBar = document.getElementById('energyProgressBar').children[0]; energyBar.style.width = `${(CHARACTER.energy / CHARACTER.maxEnergy) * 100}%`; const energyText = document.getElementById('energyProgressBar').children[1]; energyText.textContent = `${CHARACTER.energy}`; // Update Health Progress Bar const healthBar = document.getElementById('healthProgressBar').children[0]; healthBar.style.width = `${(CHARACTER.health / CHARACTER.maxHealth) * 100}%`; const healthText = document.getElementById('healthProgressBar').children[1]; // Ensure health is an integer and remove decimals let healthWithoutDecimals = Math.floor(CHARACTER.health); // Use Math.floor() to round down (or use Math.trunc() to simply cut decimals off) // Format the health value with thousands separators healthText.textContent = `${healthWithoutDecimals > 999 ? healthWithoutDecimals.toString().replace(/\B(?=(\d{3})+(?!\d))/g, '.') : healthWithoutDecimals}`; } // Start health regeneration on page load startHealthRegeneration(); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址