x01 Active Player Score Display for Autodarts

Displays only the active player's points and throws and nothing else, please be aware that this script hides any and all controlls once active!

目前為 2024-06-13 提交的版本,檢視 最新版本

// ==UserScript==
// @name         x01 Active Player Score Display for Autodarts
// @version      0.6
// @description  Displays only the active player's points and throws and nothing else, please be aware that this script hides any and all controlls once active!
// @author       dotty-dev
// @license      MIT
// @match        *://*.autodarts.io/*
// @match        *://autodarts.io/*
// @namespace    https://gf.qytechs.cn/en/users/913506-dotty-dev
// ==/UserScript==
/*jshint esversion: 11 */

(function () {
  "use strict";

  const uiElements = {};

  const documentObserver = new MutationObserver((mutationRecords) => {
    if (mutationRecords[0]?.target.classList.contains("chakra-wrap__list")) {
      uiElements.regularContent = document.querySelector(
        "#ad-ext-player-display"
      ).parentElement.parentElement;
      uiElements.turnRow = document.querySelector("#ad-ext-turn");
      uiElements.playerRow = document.querySelector("#ad-ext-player-display");
      uiElements.activePlayer = document.querySelector(
        ".ad-ext-player-active"
      ).parentElement;
      toggleScoreDisplay();
    } else {
      if (
        (document.querySelector('a[href="/lobbies/new/x01"]') &&
          document.querySelector("#big-score-container")) ||
        (document.querySelector("#big-score-container") &&
          uiElements.bigScoreContainer.parentElement.querySelector(
            ".chakra-heading"
          ) &&
          uiElements.bigScoreContainer.parentElement.querySelector(
            ".chakra-heading"
          ).textContent === "Board has no active match") ||
          (document.querySelector('a[href^="/history/matches/"][href$="leg=0"]'))
      ) {
        uiElements.bigScoreContainer.remove();
        console.log("Toggling");
      }
    }
  });

  documentObserver.observe(document, {
    childList: true,
    attributes: true,
    subtree: true,
    attributeFilter: ["class"],
  });

  const mutationObserver = new MutationObserver((mutations) => {
    mutations.forEach((mutation) => {
      if (mutation.attributeName == "class") {
        if (mutation.target.classList.contains("ad-ext-player-active")) {
          uiElements.activePlayer = mutation.target.parentElement;
          uiElements.bigScoreContainer.insertAdjacentElement(
            "afterbegin",
            uiElements.activePlayer
          );
          uiElements.playerRow.insertAdjacentElement(
            "afterbegin",
            document.querySelector(".ad-ext-player:not(.ad-ext-player-active)")
              .parentElement
          );
        }
      }
    });
  });

  const toggleScoreDisplay = () => {
    uiElements.activePlayer = document.querySelector(
      ".ad-ext-player-active"
    ).parentElement;

    if (document.querySelectorAll("style#active-player-big-score").length < 1) {
      document.head.insertAdjacentHTML(
        "beforeend",
        /*html*/ `
              <style id="active-player-big-score">
                 #big-score-container {
                  display: flex;
                  flex-direction: column;
                  gap: var(--chakra-space-4);
                  padding: var(--chakra-space-4);
                  width: 100%;
                  height: 100%;
                }

                #big-score-container .ad-ext-player > div:first-child {
                  margin: 0;
                }

                #big-score-container .ad-ext-player-score {
                  margin: 0;
                }

                #big-score-container .ad-ext-player + div *:not(.game-shot-message) {
                  font-size: 5vh;
                  line-height: 5vh;
                }

                #big-score-container .ad-ext-player + div > div > div > div {
                  width: unset;
                  height: unset;
                  padding: 3px;
                }

                #big-score-container .ad-ext-player-score {
                  font-size: 18vh;
                  line-height: 18vh;
                }

                #big-score-container .ad-ext-player-score + *:not(.game-shot-message) ,
                #big-score-container .game-shot-message + * {
                  margin-bottom: 2vh;
                }

                #big-score-container .ad-ext-player .chakra-avatar,
                #big-score-container .ad-ext-player .chakra-avatar__img{
                  height: 10vh;
                  width: 10vh;
                }

                #big-score-container .ad-ext-player-score + *:not(.game-shot-message) *,
                #big-score-container .game-shot-message + * *{
                  font-size: 10vh;
                }

                #big-score-container .ad-ext-player-name + img {
                  height: 10vh;
                  width: 6vh;
                }

                #big-score-container .ad-ext-player > .chakra-container > div {
                  width: calc(var(--chakra-sizes-prose) - 2 * var(--chakra-space-4));
                  max-width: 23vw;
                }

                #big-score-container .ad-ext-player > div:nth-child(1) {
                  width: 67%;
                }

                #big-score-container .ad-ext-player > div:nth-child(2) {
                  width: 0%;
                }

                #big-score-container .ad-ext-player > div:nth-child(3) {
                  width: 33%;
                }

                #big-score-container table {
                  height: 100%;
                  width: 100%;
                  max-width: 100%;
                }


                #big-score-container table td {
                  min-width: clamp(11.5vw, 50%, 11.5vw) !important;
                }

                #big-score-container #ad-ext-turn * {
                  font-size: 12vh;
                  line-height: 1.5;
                }

                #big-score-container .game-shot-animation .ad-ext-player-score {
                  font-size: 16vh;
                  line-height: 1.2;
                }

                #big-score-container .game-shot-animation .game-shot-message {
                  font-size: 8vh;
                  line-height: 1.5;
                }

                @media (orientation: landscape) {
                  #big-score-container .ad-ext-player-score {
                    font-size: 43vh;
                    line-height: 46vh;
                  }

                  #big-score-container .ad-ext-player table {
                    font-size: 6vh !important;
                  }
                }

                @media (orientation: portrait) {
                  #big-score-container .ad-ext-player-score + *:not(.game-shot-message) ,
                  #big-score-container .game-shot-message + * {
                    margin-bottom: 1vh;
                  }

                  #big-score-container .ad-ext-player-score + *:not(.game-shot-message) *,
                  #big-score-container .game-shot-message + * *{
                    font-size: 5vh;
                  }

                  #big-score-container .ad-ext-player .chakra-avatar,
                  #big-score-container .ad-ext-player .chakra-avatar__img {
                    height: 5vh;
                    width: 5vh;
                  }

                  #big-score-container .ad-ext-player-name + img {
                    height: 5vh;
                    width: 3vh;
                  }

                  #big-score-container .ad-ext-player {
                    flex-direction: row;
                    flex-wrap: wrap;
                  }

                  #big-score-container .ad-ext-player > .chakra-container {
                    height: unset !important;
                    max-width: unset;
                    display: flex;
                    justify-content: center;
                  }

                  #big-score-container .ad-ext-player > .chakra-container > div{
                    max-width: 35vw;
                  }

                  #big-score-container .ad-ext-player table {
                    font-size: calc(30vh / 6) !important;
                    width: 100%;
                    height: 100%;
                  }

                  #big-score-container .ad-ext-player table td {
                    min-width: 17.5vw !important;
                  }
                  
                  #big-score-container #ad-ext-turn {
                    display: grid;
                    grid-template-columns: 1fr 1fr 1fr 1fr;
                  }

                  #big-score-container #ad-ext-turn * {
                    font-size: 6vh;
                    line-height: 1.5;
                  }
                }
   
              </style>
              `
      );
    }

    if (document.querySelectorAll("#toggle-score-display").length < 1) {
      const extMenu = document.querySelector("#ad-ext-user-menu-extra");
      extMenu.style.display = "";
      let toggleButton = extMenu.parentElement
        .querySelector("button")
        .cloneNode();
      toggleButton.dataset.index++;
      toggleButton.innerHTML = "Toggle Score Display";
      toggleButton.style.display = "";
      toggleButton.id = "toggle-score-display";

      extMenu.insertAdjacentElement("afterend", toggleButton);
      toggleButton.addEventListener("click", toggleScoreDisplay);
    }

    if (document.querySelector("#big-score-container")) {
      console.log(uiElements.regularContent);
      mutationObserver.disconnect();
      uiElements.regularContent.style.height = "auto";
      uiElements.regularContent.style.width = "";
      uiElements.regularContent.style.pointerEvents = "";
      uiElements.regularContent.style.opacity = "";

      uiElements.playerRow.insertAdjacentElement(
        "afterbegin",
        uiElements.activePlayer
      );
      uiElements.playerRow.insertAdjacentElement(
        "afterend",
        uiElements.turnRow
      );
      document.querySelector("#big-score-container").remove();
    } else {
      const gameModeElement = document.querySelector("#ad-ext-game-variant");

      if (gameModeElement && gameModeElement.textContent === "X01") {
        uiElements.regularContent.style.height = "0";
        uiElements.regularContent.style.width = "0";
        uiElements.regularContent.style.opacity = "0";
        uiElements.regularContent.style.pointerEvents = "none";

        uiElements.bigScoreContainer = document.createElement("div");

        uiElements.bigScoreContainer.id = "big-score-container";

        uiElements.bigScoreContainer.insertAdjacentElement(
          "afterbegin",
          uiElements.activePlayer
        );

        uiElements.bigScoreContainer.insertAdjacentElement(
          "beforeend",
          uiElements.turnRow
        );

        if (document.querySelectorAll("#big-score-container").length === 0) {
          uiElements.regularContent.insertAdjacentElement(
            "afterend",
            uiElements.bigScoreContainer
          );
        }

        mutationObserver.observe(uiElements.playerRow, {
          attributes: true,
          childList: true,
          subtree: true,
        });
      }
    }
  };
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址