您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Eléments supplémentaires pour le Système Tactique des Bricol' Trolls
// ==UserScript== // @name MH - H2P - Bricol' Trolls // @namespace bricoltrolls // @description Eléments supplémentaires pour le Système Tactique des Bricol' Trolls // @include http*://trolls.ratibus.net/* // @include https://it.mh.raistlin.fr/* // @icon https://xballiet.github.io/ImagesMH/BricolTrolls.png // @version 2.5 // @author 43406 - H2P // ==/UserScript== // Variables globales var checkDate; var indexHref; var indexProfil; var nodesHref; var nodesProfil; var timeout; var now = new Date(); var one_day = 1000 * 60 * 60 * 24; var one_month = 31 * one_day; // Récupération de la date de la veille yesterday = new Date(now.getTime() - one_day); yyyy = yesterday.getFullYear(); mm = yesterday.getMonth() + 1; if (mm < 10) { mm = '0' + mm; } dd = yesterday.getDate(); if (dd < 10) { dd = '0' + dd; } hh = yesterday.getHours(); if (hh < 10) { hh = '0' + hh; } mi = yesterday.getMinutes(); if (mi < 10) { mi = '0' + mi; } ss = yesterday.getSeconds(); if (ss < 10) { ss = '0' + ss; } var yesterdayString = '' + yyyy + mm + dd + hh + mi + ss; // Récupération de la date d'il y a un mois yestermonth = new Date(now.getTime() - one_month); yyyy = yestermonth.getFullYear(); mm = yestermonth.getMonth() + 1; if (mm < 10) { mm = '0' + mm; } dd = yestermonth.getDate(); if (dd < 10) { dd = '0' + dd; } hh = yestermonth.getHours(); if (hh < 10) { hh = '0' + hh; } mi = yestermonth.getMinutes(); if (mi < 10) { mi = '0' + mi; } ss = yestermonth.getSeconds(); if (ss < 10) { ss = '0' + ss; } var yestermonthString = '' + yyyy + mm + dd + hh + mi + ss; // Fonction d'appel récursif aux liens de mises à jour function nextNodeHref() { if (checkDate) { // Récupération de la date de dernière mise à jour node = document.evaluate("../../td[@class='date']", nodesHref.snapshotItem(indexHref), null, XPathResult.STRING_TYPE, null).stringValue; dateMAJ = node.substring(node.indexOf('MAJ : ') + 6); yyyy = dateMAJ.substring(6, 10); mm = dateMAJ.substring(3, 5); dd = dateMAJ.substring(0, 2); hh = dateMAJ.substring(11, 13); mi = dateMAJ.substring(14, 16); ss = dateMAJ.substring(17); dateMAJString = yyyy + mm + dd + hh + mi + ss; // On ne met à jour que si on a une date de dernière mise à jour et qu'elle est entre hier et il y a un mois majOK = (dateMAJString == '' || (yestermonthString < dateMAJString && dateMAJString < yesterdayString)); //alert("hiddenFrame.src = _" + nodesHref.snapshotItem(indexHref).href + "_\r\nyestermonth = " + yestermonthString + ", dateMAJ = " + dateMAJString + " et yesterday = " + yesterdayString + " => majOK = " + majOK); } else { majOK = true; } if (majOK) { hiddenFrame.src = nodesHref.snapshotItem(indexHref).href; } // On passe au lien de mise à jour suivant s'il y en a un, sinon on rafraîchit la page indexHref++; if (indexHref < nodesHref.snapshotLength) { if (majOK) { setTimeout(nextNodeHref, timeout); } else { nextNodeHref(); } } else { setTimeout("location.href = '" + location.href + "'", 1000); alert("Mise à jour terminée."); } } // Fonction d'appel récursif aux liens de profils (pas implémenté pour le moment) function nextNodeProfil() { hiddenFrameProfils.src = nodesProfil.snapshotItem(indexProfil).href; //alert(document.getElementById('iFrameProfils').src); alert(document.getElementById('iFrameProfils').getElementsByTagName('btnUpdateProfil')); //alert("hiddenFrameProfils.src = _" + nodesProfil.snapshotItem(indexProfil).href + "_"); // On passe au lien de mise à jour suivant s'il y en a un, sinon on rafraîchit la page indexProfil++; if (indexProfil < nodesProfil.snapshotLength) { setTimeout(nextNodeProfil, timeout); } else { setTimeout("location.href = '" + location.href + "'", 1000); } } // Fonction générique de mise à jour function updateAll(href, notHref, tempo, doubleHidden) { // Récupération de tous les liens dont le href contient <href> et ne contient pas <notHref> nodes = document.evaluate("//a[contains(@href, '" + href + "')][not(contains(@href, '" + notHref + "'))]", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); // Appels récursifs dans la frame cachée des liens récupérés timeout = tempo; if (doubleHidden) { indexProfil = 0; nodesProfil = nodes; nextNodeProfil(); } else { indexHref = 0; nodesHref = nodes; nextNodeHref(); } } // Fonction de mise à jour de tous les trolls depuis la page d'accueil function updateAllTrolls() { checkDate = true; updateAll('update_info.php?id=', 'XBT', 3000); } // Fonction de mise à jour de tous les trolls depuis la page d'accueil sans vérification de la date de dernière mise à jour function updateAllTrollsWithoutDateTest() { if (confirm("Voulez-vous vraiment tout mettre à jour ?\r\n(attention à la limite d'appel des scripts publics)")) { checkDate = false; updateAll('update_info.php?id=', 'XBT', 3000); } } // Fonction de mise à jour de tous les profils depuis la page d'accueil (pas implémenté pour le moment) function updateAllProfils() { checkDate = true; updateAll('profil.php?id=', 'XBT', 10000, true); } // Fonction de mise à jour de tous les trolls et leurs profils depuis la page d'accueil (pas implémenté pour le moment) function updateAllTrollsAndProfils() { checkDate = true; alert("MàJ de tout"); } // Fonction de mise à jour générique function updateAllBroll() { checkDate = true; updateAll('update_', 'id_mouche', 3000); } // Fonction d'ajout d'un élément (bouton, frame cachée...) function makeElement(type, appendto, attributes, checked, chkdefault) { var element = document.createElement(type); if (attributes != null) { for (var i in attributes) { element.setAttribute(i, attributes[i]); } } if (checked != null) { if (GM_getValue(checked, chkdefault) == 'checked') { element.setAttribute('checked', 'checked'); } } if (appendto) { appendto.appendChild(element); } return element; } // Pour le lien vers la page des compétences et sortilèges, on enlève les compétences/sortilèges que personne n'a document.evaluate("//a[@href='competences-sortileges.php']", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.href = "competences-sortileges.php?cleanEmpty=1"; // Suppression des publicités de bas de page document.getElementById("footer").outerHTML = ""; // Suppression des cadres News (et Diplomatie) et réduction du cadre Mémo if (document.getElementById("news") != null) { document.getElementById("news").outerHTML = ""; } /*if (document.getElementById("diplomatie") != null) { document.getElementById("diplomatie").outerHTML = ""; }*/ if (document.getElementById("memoContent") != null) { document.getElementById("memoContent").style = "display: none;"; } // Frame cachée pour les mises à jour des profils depuis la page générale var hiddenFrameProfils = makeElement('iframe', document.body, {'style':'position: absolute; top: 50%; left: 1px; width: 100%; height: 25%; border: 2px solid red; display: none;', 'name':'iFrameProfils', 'id':'iFrameProfils'}); // Frame cachée pour les mises à jour var hiddenFrame = makeElement('iframe', document.body, {'style':'position: absolute; top: 75%; left: 1px; width: 100%; height: 25%; border: 2px solid red; display: none;', 'name':'iFrameHref', 'id':'iFrameHref'}); // Traitements pour la page d'accueil if (location.href.indexOf('index.php') != -1) { // Récupération de tous les liens des vues var hrefVues = document.evaluate("//a[contains(@href, 'vue.php?vue=15&id=')]", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); // Parcours des liens des vues et remplacements avec des vues plus adéquates (vue max, pas de gowaps, pas de composants, pas de GG) for (var index = 0 ; index < hrefVues.snapshotLength ; index++) { hrefVues.snapshotItem(index).href = hrefVues.snapshotItem(index).href.replace('vue.php?vue=15&id=', 'vue.php?vue=100&gowapOff=1&composantOff=1&gigotsOff=1&id='); } // Bouton de mise à jour de tout //var updateAllTrollsButton = makeElement('input', document.body, {'type':'submit', 'value':'MàJ tout', 'style':'font-family: comic; font-size: 16pt; position: absolute; left: 70px; top: 30px; width: 200px; height: 35px; cursor: pointer;'}); //updateAllTrollsButton.addEventListener('click', updateAllTrollsAndProfils, false); // Bouton de mise à jour des trolls var updateAllTrollsButton = makeElement('input', document.body, {'type':'submit', 'value':'MàJ tous les trolls', 'style':'font-family: comic; font-size: 16pt; position: absolute; left: 70px; top: 70px; width: 200px; height: 35px; cursor: pointer;'}); updateAllTrollsButton.addEventListener('click', updateAllTrolls, false); // Bouton de mise à jour des trolls sans tester la date de dernière mise à jour var updateAllTrollsWithoutDateTestButton = makeElement('input', document.body, {'type':'submit', 'value':'MàJ trolls sans check', 'style':'font-family: comic; font-style: italic; color: red; font-size: 16pt; position: absolute; left: 305px; top: 70px; width: 200px; height: 35px; cursor: pointer;'}); updateAllTrollsWithoutDateTestButton.addEventListener('click', updateAllTrollsWithoutDateTest, false); // Bouton de mise à jour de tous les profils //var updateAllProfilsButton = makeElement('input', document.body, {'type':'submit', 'value':'MàJ tous les profils', 'style':'font-family: comic; font-size: 16pt; position: absolute; left: 70px; top: 110px; width: 200px; height: 35px; cursor: pointer;'}); //updateAllProfilsButton.addEventListener('click', updateAllProfils, false); } // Traitements pour les pages de profils if (location.href.indexOf('profil.php') != -1) { // Bouton de mise à jour var updateAllProfilButton = makeElement('input', document.body, {'type':'submit', 'name':'btnUpdateProfil', 'id':'btnUpdateProfil', 'value':'MàJ tout le profil', 'style':'font-family: comic; font-size: 16pt; position: absolute; left: 70px; top: 70px; width: 200px; height: 35px; cursor: pointer;'}); updateAllProfilButton.addEventListener('click', updateAllBroll, false); } // Traitements pour les pages de gowaps et tanières if (location.href.indexOf('gowaps_tanieres.php') != -1) { // Bouton de mise à jour var updateAllGowapsTanieresButton = makeElement('input', document.body, {'type':'submit', 'name':'btnUpdateGowapsTanieres', 'id':'btnUpdateGowapsTanieres', 'value':'MàJ tous les Gowaps et Tanières', 'style':'font-family: comic; font-size: 16pt; position: absolute; left: 70px; top: 70px; width: 300px; height: 35px; cursor: pointer;'}); updateAllGowapsTanieresButton.addEventListener('click', updateAllBroll, false); } // Traitements pour les pages de possessions if (location.href.indexOf('possessions.php') != -1) { // Bouton de mise à jour var updateAllPossessionsButton = makeElement('input', document.body, {'type':'submit', 'name':'btnUpdatePossessions', 'id':'btnUpdatePossessions', 'value':'MàJ les possessions', 'style':'font-family: comic; font-size: 16pt; position: absolute; left: 70px; top: 70px; width: 200px; height: 35px; cursor: pointer;'}); updateAllPossessionsButton.addEventListener('click', updateAllBroll, false); } // Traitements pour les pages de listes de vente if (location.href.indexOf('listes_vente.php') != -1) { // Bouton de mise à jour var updateAllListesVenteButton = makeElement('input', document.body, {'type':'submit', 'name':'btnUpdateListesVente', 'id':'btnUpdateListesVente', 'value':'MàJ les listes de vente', 'style':'font-family: comic; font-size: 16pt; position: absolute; left: 70px; top: 70px; width: 300px; height: 35px; cursor: pointer;'}); updateAllListesVenteButton.addEventListener('click', updateAllBroll, false); }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址