Better MVPtracker.com

Login automatique + calcul automatiquement depuis combien de temps est mort un MVP en fonction de l'heure affiché sur sa tombe http://mvptracker.net/tracker/*

Устаревшая версия за 15.06.2023. Перейдите к последней версии.

// ==UserScript==
// @name         Better MVPtracker.com
// @namespace    http://tampermonkey.net/
// @version      1.1
// @description  Login automatique + calcul automatiquement depuis combien de temps est mort un MVP en fonction de l'heure affiché sur sa tombe http://mvptracker.net/tracker/*
// @match        http://mvptracker.net/tracker/*
// @license      MIT
// @grant        GM_getValue
// @grant        GM_setValue
// ==/UserScript==

let checkboxAutoConnexion;
let nomDuServerInput;
let pseudoInput;

function calculerDifferenceTemps(heureSaisie) {
  const heureActuelle = new Date();

  const heureSaisieSplit = heureSaisie.split("h");
  const heureSaisieHeure = parseInt(heureSaisieSplit[0]);
  const heureSaisieMinute = parseInt(heureSaisieSplit[1]);

  const dateAvecHeureSaisie = new Date(
    heureActuelle.getFullYear(),
    heureActuelle.getMonth(),
    heureActuelle.getDate(),
    heureSaisieHeure,
    heureSaisieMinute
  );
  if (dateAvecHeureSaisie > heureActuelle) {
    dateAvecHeureSaisie.setDate(dateAvecHeureSaisie.getDate() - 1);
  }
  const differenceMinutes = Math.round(
    (heureActuelle - dateAvecHeureSaisie) / (1000 * 60)
  );
  return differenceMinutes;
}

function ajouterTextBoxEtCalculerDifference() {
  const boutons = document.querySelectorAll(
    'button.killMVPButton.killMVPButtonNormal'
  );
  boutons.forEach((bouton) => {
    const textBoxExistante = bouton.nextElementSibling;
    if (textBoxExistante && textBoxExistante.nodeName === "INPUT") {
      return;
    }
    const textBox = document.createElement("input");
    textBox.type = "text";
    textBox.size = "3";
    textBox.classList.add("custom-textbox");
    textBox.style.marginLeft = "5px";
    textBox.style.marginTop = "-20px";
    textBox.addEventListener("input", function () {
      const heureSaisie = this.value;
      const differenceMinutes = calculerDifferenceTemps(heureSaisie);
      const textBoxKilled = this.parentNode.parentNode.querySelector(
        'input[name^="killed"]'
      );
      if (textBoxKilled) {
        textBoxKilled.value = differenceMinutes;
      }
    });
    bouton.parentNode.insertBefore(textBox, bouton.nextSibling);
  });
}

function ConnexionAutomatique() {
  if (GM_getValue("AutoConnexion", true)) {
    document.getElementById("txtPass").setAttribute("value", GM_getValue("NomDuServer", ""));
    var boutonImage1 = document.getElementById('btnSubmit');
    boutonImage1.click();
    setTimeout(function() {
      document.getElementById("txtDName").setAttribute("value", GM_getValue("Pseudo", ""));
      var boutonImage2 = document.getElementById('btnLogin');
      boutonImage2.click();
    }, 300);
  }
}

function afficherFenetreConfiguration() {
  const html = `
    <h2>Configuration</h2>
    <input type="checkbox" id="checkboxAutoConnexion" ${GM_getValue(
      "AutoConnexion",
      false
    ) ? "checked" : ""}>
    <label for="checkboxAutoConnexion">Activer la connexion automatique</label>
    <br><br>
    <label for="nomDuServer">Nom du serveur :</label>
    <input type="text" id="nomDuServerInput" name="nomDuServer" value="${GM_getValue(
      "NomDuServer",
      ""
    )}">
    <br><br>
    <label for="pseudo">Pseudo :</label>
    <input type="text" id="pseudoInput" name="pseudo" value="${GM_getValue(
      "Pseudo",
      ""
    )}">
    <br><br>
    <button id="sauvegarderConfig">Sauvegarder</button>
    <div style="position: absolute; bottom: 3px; right: 3px; text-align: right;">
      <div>Développé par Fri</div>
      <div>Discord: .fri.</div>
    </div>
  `;
  const container = document.createElement("div");
  container.innerHTML = html;
  container.style.position = "fixed";
  container.style.top = "20px";
  container.style.left = "20px";
  container.style.padding = "10px";
  container.style.backgroundColor = "white";
  container.style.border = "1px solid black";
  container.style.zIndex = "9999";
  document.body.appendChild(container);

  checkboxAutoConnexion = document.getElementById("checkboxAutoConnexion");
  nomDuServerInput = document.getElementById("nomDuServerInput");
  pseudoInput = document.getElementById("pseudoInput");

  checkboxAutoConnexion.addEventListener("change", function() {
    if (this.checked) {
      nomDuServerInput.disabled = false;
      pseudoInput.disabled = false;
    } else {
      nomDuServerInput.disabled = true;
      pseudoInput.disabled = true;
    }
  });

  const sauvegarderBtn = document.getElementById("sauvegarderConfig");
  sauvegarderBtn.addEventListener("click", function() {
    GM_setValue("AutoConnexion", checkboxAutoConnexion.checked);
    GM_setValue("NomDuServer", nomDuServerInput.value);
    GM_setValue("Pseudo", pseudoInput.value);
    container.remove();
    NomDuServer = GM_getValue("NomDuServer", "0");
    Pseudo = GM_getValue("Pseudo", "0");
    ConnexionAutomatique();
  });
}

window.addEventListener("load", function () {
  ajouterTextBoxEtCalculerDifference();
  ConnexionAutomatique();
});

function observerMutations(mutationsList) {
  for (let mutation of mutationsList) {
    if (mutation.type === "childList") {
      observer.disconnect();
      ajouterTextBoxEtCalculerDifference();
      observer.observe(document.body, config);
      break;
    }
  }
}

// Options de configuration pour l'observateur de mutations
const config = { childList: true, subtree: true };
const observer = new MutationObserver(observerMutations);
observer.observe(document.body, config);

const configBtn = document.createElement("img");
configBtn.src = "https://cdn-icons-png.flaticon.com/512/2099/2099058.png";
configBtn.style.position = "fixed";
configBtn.style.top = "30px";
configBtn.style.left = "30px";
configBtn.style.zIndex = "9999";
configBtn.style.width = "50px";
configBtn.style.height = "50px";
configBtn.style.cursor = "pointer"; // Modifier le curseur au survol
configBtn.addEventListener("click", afficherFenetreConfiguration);
document.body.appendChild(configBtn);