BFDIA 5b Mod Menu

Mod menu to change level progress, deaths, win tokens, and additional features in BFDIA 5b

当前为 2025-02-03 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         BFDIA 5b Mod Menu
// @namespace    http://tampermonkey.net/
// @version      1.5
// @description  Mod menu to change level progress, deaths, win tokens, and additional features in BFDIA 5b
// @author       Blake and BakedCake
// @match        https://coppersalts.github.io/HTML5b/
// @license      CC BY-ND 4.0 - See below
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Create the mod menu container
    let menu = document.createElement("div");
    menu.style.position = "fixed";
    menu.style.top = "10px";
    menu.style.left = "10px";
    menu.style.padding = "10px";
    menu.style.border = "2px solid white";
    menu.style.fontFamily = "Arial, sans-serif";
    menu.style.zIndex = "9999";
    menu.style.borderRadius = "8px";
    menu.style.width = "300px";  // Increased width for a larger menu
    menu.style.cursor = "move";
    menu.style.userSelect = "none";
    menu.style.transition = "all 0.3s ease-in-out";

    // Function to update theme based on time of day
    function updateTheme() {
        let hour = new Date().getHours();
        if (hour >= 7 && hour < 19) {
            menu.style.background = "rgba(255, 255, 255, 0.9)";
            menu.style.color = "black";
            menu.style.border = "2px solid black";
        } else {
            menu.style.background = "rgba(0, 0, 0, 0.8)";
            menu.style.color = "white";
            menu.style.border = "2px solid white";
        }
    }

    updateTheme();
    setInterval(updateTheme, 60000);

    // Make menu draggable
    let isDragging = false;
    let offsetX, offsetY;

    menu.addEventListener("mousedown", (e) => {
        isDragging = true;
        offsetX = e.clientX - menu.offsetLeft;
        offsetY = e.clientY - menu.offsetTop;
    });

    document.addEventListener("mousemove", (e) => {
        if (isDragging) {
            menu.style.left = `${e.clientX - offsetX}px`;
            menu.style.top = `${e.clientY - offsetY}px`;
        }
    });

    document.addEventListener("mouseup", () => {
        isDragging = false;
    });

    // Close button
    let closeButton = document.createElement("button");
    closeButton.innerText = "X";
    closeButton.style.position = "absolute";
    closeButton.style.top = "5px";
    closeButton.style.right = "5px";
    closeButton.style.cursor = "pointer";
    closeButton.addEventListener("click", () => {
        if (confirm("Are you sure you want to close the mod menu?")) {
            menu.remove();
        }
    });
    menu.appendChild(closeButton);

    // Title
    let title = document.createElement("h3");
    title.innerText = "BFDIA 5b Mod Menu";
    title.style.margin = "0 0 10px 0";
    title.style.textAlign = "center";
    menu.appendChild(title);

    // Input box for level progress
    let inputLevel = document.createElement("input");
    inputLevel.type = "number";
    inputLevel.placeholder = "Enter level...";
    inputLevel.style.width = "100%";
    inputLevel.style.marginBottom = "5px";
    menu.appendChild(inputLevel);

    // Button to set level progress
    let buttonLevel = document.createElement("button");
    buttonLevel.innerText = "Set Level";
    buttonLevel.style.width = "100%";
    buttonLevel.style.cursor = "pointer";
    menu.appendChild(buttonLevel);

    // Input box for death count
    let inputDeath = document.createElement("input");
    inputDeath.type = "number";
    inputDeath.placeholder = "Enter deaths...";
    inputDeath.style.width = "100%";
    inputDeath.style.marginBottom = "5px";
    menu.appendChild(inputDeath);

    // Button to set death count
    let buttonDeath = document.createElement("button");
    buttonDeath.innerText = "Set Deaths";
    buttonDeath.style.width = "100%";
    buttonDeath.style.cursor = "pointer";
    menu.appendChild(buttonDeath);

    // Display current level progress
    let levelDisplay = document.createElement("p");
    levelDisplay.style.marginTop = "10px";
    levelDisplay.style.textAlign = "center";
    menu.appendChild(levelDisplay);

    // Unlock all levels button
    let unlockButton = document.createElement("button");
    unlockButton.innerText = "Unlock all levels";
    unlockButton.style.width = "100%";
    unlockButton.style.cursor = "pointer";
    unlockButton.style.marginTop = "5px";
    menu.appendChild(unlockButton);

    // Collect all win tokens button
    let winTokenButton = document.createElement("button");
    winTokenButton.innerText = "Collect all Win Tokens";
    winTokenButton.style.width = "100%";
    winTokenButton.style.cursor = "pointer";
    winTokenButton.style.marginTop = "5px";
    menu.appendChild(winTokenButton);

    // Wipe all data button
    let wipeDataButton = document.createElement("button");
    wipeDataButton.innerText = "Wipe Data";
    wipeDataButton.style.width = "100%";
    wipeDataButton.style.cursor = "pointer";
    wipeDataButton.style.marginTop = "5px";
    menu.appendChild(wipeDataButton);

    // Function to update level progress display
    function updateLevelDisplay() {
        let currentProgress = localStorage.getItem('levelProgress') || "0";
        let currentDeaths = localStorage.getItem('deathCount') || "0";
        levelDisplay.innerText = `Level Progress: ${currentProgress} | Deaths: ${currentDeaths}`;
    }

    // Set new level progress on button click
    buttonLevel.addEventListener("click", function() {
        let newValue = inputLevel.value;
        if (newValue !== "") {
            localStorage.setItem('levelProgress', newValue);
            updateLevelDisplay();
        }
    });

    // Set new death count on button click
    buttonDeath.addEventListener("click", function() {
        let newValue = inputDeath.value;
        if (newValue !== "") {
            localStorage.setItem('deathCount', newValue);
            updateLevelDisplay();
        }
    });

    // Unlock all levels button functionality
    unlockButton.addEventListener("click", function() {
        localStorage.setItem('levelProgress', "53");
        updateLevelDisplay();
    });

    // Collect all win tokens functionality
    winTokenButton.addEventListener("click", function() {
        localStorage.setItem('gotCoin', 'true,'.repeat(53).slice(0, -1));
    });

    // Wipe data functionality
    wipeDataButton.addEventListener("click", function() {
        localStorage.clear();
        updateLevelDisplay();
    });

    // Credits
    let credits = document.createElement("p");
    credits.innerHTML = "Thanks to <a href='https://www.youtube.com/@minechat638' target='_blank'>@minechat638</a> | <a href='https://www.youtube.com/@bakedcake02' target='_blank'>BakedCake</a>";
    credits.style.textAlign = "center";
    credits.style.marginTop = "10px";
    menu.appendChild(credits);

    // Initialize level display
    updateLevelDisplay();

    // Append menu to body
    document.body.appendChild(menu);
})();