// ==UserScript== // @name Inventaire tools // @namespace http://userscripts.org/scripts/show/138760 // @version 3.3.1 // @description Recupere les informations sur la page inventaire d'ogame et affiche le temps de reduction possible ainsi que la production supplémentaire acquise par les boosters // @include *://*.ogame.gameforge.com/game/index.php?page=shop* // @include *://*.ogame.gameforge.com/game/index.php?page=resourceSettings* // @copyright 19 juillet 2012, nitneuc -- Libre d'être modifié ou reproduit, tant que cette ligne @copyright reste identique // @downloadURL none // ==/UserScript==1111 /* // ****** Informations ****** Inventaire tools ---------------- Installation: ------------- http://userscripts.org/scripts/show/138760 compatible chrome et firefox Variables persistantes stockées: -------------------------------- *booléen= texte.script + "_" + pseudoJeu + "_" + universJeu + "_" + langue + "_premiereExecution" *array= texte.script + "_" + pseudoJeu + "_" + universJeu + "_" + langue + "_proprietesPlanetes_production" ChangeLog: ---------- v1.0: *première version stable v1.1: *Correction bug affichage *Correction: le tableau ne s'affichait pas si on passait de la boutique à l'inventaire v1.2: *Simplification du code *Amélioration de l'affichage v2.0: *intégration du changelog dans le script *nom du script = Inventaire tools *séparation de la fonction afficherSurPage() et constructionElementHTML() *ajout du tableau de production hebdomadaire des boosters *tableau des productions sur planète se MAJ si changement quantité production/déménagement/renommage v2.1: *les 2 tableaux sont mis-en-page et réunis en bas *nouvel emplacement pour les variables persistantes *simplification du code v2.1.1: *compatible Firefox v2.1.2: *correction: initialisation programme v2.1.3: *correction: les productions nulles étaient exclues *correction: les lunes étaient incluses (production nulle) v2.2: *ajout du 3ème tableau: cumul des gains booster (en nombre de ressources) *simplification du code du 1er tableau (temps cumulés) *nouvelle mise-en-page du 1er tableau (temps cumulés) v2.3: *utilisation d'un CSS *travail de compatibilité avec autres script (uniformisation) *modification de la structure de la variable permanente des propriétés v2.4: *compatibilité v5 *modification de l'affichage des alertes v3: *modification du stockage des variables *transformation de fonctions en prototypes *Refonte et grande simplification de l'affichage v3.1 *Correction bug d'affichage v3.2 *rétablissement de l'affichage après 'contentWrapper' en raisons de retours de bugs v3.2.1 *réctification mineure v3.2.2 *correction de l'affichage v3.3 *HTTP et HTTPS tolérés *document.getElementById = $ *lecture de la production par planète sur la page 'resourceSettings' au lieu de la page 'resource'. Modifier la doc au passage *affichage d'alerte sur la page 'resourceSettings' au lieu de la page 'resource' *simplification de la fonction d'affichage d'alerte *correction sytaxes css v3.3.1 *@include modifié pour chrome : *.ogame.* -> *.ogame.gameforge.com */ var strFunc = (function(){ // ****** Prototypes ****** Storage.prototype.setObj = function(key, obj) { return this.setItem(key, JSON.stringify(obj)); }; Storage.prototype.getObj = function(key) { return JSON.parse(this.getItem(key)); }; Number.prototype.ajoutSeparateurMilliers = function(car) { // v1: fonction ; v2: prototype ; v2.1: prise en charge des nombres négatifs ; v2.2: prise en charge des nombre décimaux var dec = ""; if (this < 0) var neg = true; if (this != Math.floor(this)) { dec = ((this-Math.floor(this))+"").substr(1,(this+"").length-(Math.floor(this)+"").length); var str = Math.floor(this)+""; } else { var str = this+""; } if (neg) str = str.substring(1); var str_decoupe = new Array(); for (var tmp=0; tmp=0; tmp--) str_2 = str_2 + car + str_decoupe[tmp]; if (neg) str_2 = "-"+str_2; return str_2+dec; }; Array.prototype.niemeValeurDifferenteDe = function(n,val) { var tmp_2=0; for (var tmp=0; tmpmax) max = liste[i]; return max; } function insererLigneArray(element,table,numLigne) { for (var i=table.length-1 ; i>=numLigne ; i--) table[i+1] = table[i]; table[numLigne] = element; return table; } function compterValeursArrayNonNulles(table) { var incr = 0; for (var j_4=0 ; j_4'+document.getElementsByTagName("head")[0].innerHTML; } function affichage_alerte(texteAAfficher) { // affiche alerte de confirmation $("inhalt").innerHTML = '
' +texteAAfficher +'
'+$("inhalt").innerHTML; } function afficherTable(tout,affichageTempsCumules,affichageGainBooster,affichageProdBooster) { var elHTML = document.getElementsByClassName("footer")[0]; var inner = elHTML.innerHTML; var ajoutHTML_2 = ""; // Déclaration var ajoutHTML_1 = '
'; if (tout) { var nombre_type_booster = compterValeursArrayNonNulles(nombre_booster); // définit le nombre de colonnes à fabriquer dans le grand tableau ajoutHTML_2 = ''; } elHTML.innerHTML = inner+ ajoutHTML_1 + ajoutHTML_2; } function max_planete(table,n) { var table_temp = new Array(); for (var tmp=0; tmp var info = new Array(); for (var i=0 ; i maxProd_temp[j]) maxProd_temp[j] = parseInt(tableProprietes[i][1][j]); return maxProd_temp; } function gainTotalBooster(tableProprietes) { var maxProd_temp = maxProdEmpire(tableProprietes); var gain_parRessource = new Array(0,0,0); for (var i=0 ; i<=2 ; i++) for (var j=3*i ; j<=3*i+2 ; j++) gain_parRessource[i] = gain_parRessource[i] + nombre_booster[j]*Math.ceil(maxProd_temp[i]*168*(j+1-3*Math.floor(j/3))/10); return gain_parRessource; } function initialiserDonneesUtilisateur() { // initialise les données utilisateur du script var proprietes = new Array(); localStorage.setObj(texte.script + "_" + pseudoJeu + "_" + universJeu + "_" + langue + "_proprietesPlanetes_production",proprietes); localStorage.setObj(texte.script + "_" + pseudoJeu + "_" + universJeu + "_" + langue + "_premiereExecution",false); return proprietes; } // ****** Script ****** const langue = location.href.split("/")[2].split(".")[2]; const universJeu = location.href.split("/")[2].split(".")[0].replace("uni",""); const pseudoJeu = document.getElementsByName("ogame-player-name")[0].getAttribute("content"); var pageCouranteEstInventaire = false; var nombre_booster = new Array(0,0,0,0,0,0,0,0,0); // array() contenant le nombre de chaque booster // ****** Paramètres utilisateur ****** var config = { duree_bronze:30, duree_argent:120, duree_or:360, header2_fontColor:"#FFFFFF", header2_fontSize:"9", header2_fontBold:"bold", header2_bgColor:"#00002D", header2_textAlign:"center", header3_fontColor:"#FFFF00", header3_fontSize:"9", header3_fontBold:"bold", header3_bgColor:"#00002D", header3_textAlign:"center", headerLigne_fontColor:"#FF8000", headerLigne_fontSize:"9", headerLigne_fontBold:"bold", headerLigne_bgColor:"#000000", valeur_fontColor:"#FFFFFF", valeur_fontSize:"9", valeur_fontBold:"normal", valeur_bgColor:"#000000", valeur_textAlign:"center", valeursMax_fontColor:"#FFFFFF", valeursMax_fontSize:"9", valeursMax_fontBold:"normal", valeursMax_bgColor:"#FF0000", prodBooster_largeurColonne:70, alerte_fontColor:"#FFFFFF", alerte_fontSize:"9", alerte_fontBold:"bold", alerte_bgColor:"#FF0000", alerte_textAlign:"center", }; var texte = { script:"Inventaire tools", alerte_planeteAjoutee:"Inventaire tools: Planète ajoutée", alerte_proprietesModifiees:"Inventaire tools: Propriétés modifiees", }; var ressource = new Array( new Array("Métal","Cristal","Deutérium"), new Array("mét","cri","deut") ); // ****** script ****** creer_CSS(); // **** **** **** **** // *** *** *** *** // ** ** ** ** // * * * * // localStorage.removeItem(texte.script + "_" + pseudoJeu + "_" + universJeu + "_" + langue + "_premiereExecution");// A DECOMMENTER POUR INITIALISER LES DONNES UTILISATEUR // * * * * // ** ** ** ** // *** *** *** *** // **** **** **** **** if (localStorage.getObj(texte.script + "_" + pseudoJeu + "_" + universJeu + "_" + langue + "_premiereExecution") != false) { // teste si l'utilisateur est à sa première exécution ou non var proprietesPlanetes_production = initialiserDonneesUtilisateur(); } else { var proprietesPlanetes_production = localStorage.getObj(texte.script + "_" + pseudoJeu + "_" + universJeu + "_" + langue + "_proprietesPlanetes_production"); } var url = location.href.split("page=")[1].split("&")[0].split("#")[0]; if (url == "resourceSettings") { // si la page courante est la page 'ressourcesSettings' // if (url == "resources") { // si la page courante est la page 'ressources' // Récuperation des infos sur la planète courante var infoPlanete = recuperer_infoPlaneteCourante(); var productionPlaneteCourante = recuperer_productionCourante(); if (infoPlanete[3] == "planet") { // teste si la planète courante n'est pas une lune // teste si la planète courante a déjà été enregistrée var existe = testPlaneteExiste(infoPlanete[0],proprietesPlanetes_production); if (existe == -1) { // si la planète n'existe pas dans la liste ajouterPlanete(infoPlanete,productionPlaneteCourante,proprietesPlanetes_production,"proprietesPlanetes_production"); } else { // si la planète est déjà dans la liste if ((proprietesPlanetes_production[existe][0][1] != infoPlanete[1]) || (proprietesPlanetes_production[existe][0][2] != infoPlanete[2]) || (proprietesPlanetes_production[existe][1][0] != productionPlaneteCourante[0]) || (proprietesPlanetes_production[existe][1][1] != productionPlaneteCourante[1]) || (proprietesPlanetes_production[existe][1][2] != productionPlaneteCourante[2])) { // on test si les valeurs des productions+nom+emplacement ont changées proprietesPlanetes_production[existe] = new Array(infoPlanete,productionPlaneteCourante); localStorage.setObj(texte.script + "_" + pseudoJeu + "_" + universJeu + "_" + langue + "_proprietesPlanetes_production",proprietesPlanetes_production); affichage_alerte(texte.alerte_proprietesModifiees); } } } } if (url == "shop") setInterval(affichageInventaire,500); }).toString(); var script = document.createElement("script"); script.setAttribute("type","text/javascript"); script.text = "(" + strFunc + ")();"; document.body.appendChild(script);
' +''; for (var i=0; i<=2 ; i++) ajoutHTML_1 = ajoutHTML_1 + ''; ajoutHTML_1 = ajoutHTML_1 + ''; for (var i=0; i<=2 ; i++) ajoutHTML_1 = ajoutHTML_1 + ''; ajoutHTML_1 = ajoutHTML_1 + ''; if (tout) { // si tous les tableaux doivent être affichés ajoutHTML_1 = ajoutHTML_1 + ''; for (var i=0; i<=2 ; i++) ajoutHTML_1 = ajoutHTML_1 + ''; ajoutHTML_1 = ajoutHTML_1 + ''; for (var i=0; i<=2 ; i++) ajoutHTML_1 = ajoutHTML_1 + ''; ajoutHTML_1 = ajoutHTML_1 + ''; } ajoutHTML_1 = ajoutHTML_1 + '
CUMULS DES GAINS
'+affichageTempsCumules[i].split(":")[0] +'
'+affichageTempsCumules[i].split(":")[1] +'
'+ressource[0][i] +'
'+affichageGainBooster[i].ajoutSeparateurMilliers(".")+'
'; for (var i=0; i<=nombre_type_booster+1 ;i++) { ajoutHTML_2 = ajoutHTML_2 + ''; if (i==1) ajoutHTML_2 = ajoutHTML_2+ '"45px">position'; if (i>=2) { var j = nombre_booster.niemeValeurDifferenteDe(i-1,0); ajoutHTML_2 = ajoutHTML_2+ '"'+ config.prodBooster_largeurColonne +'px">'+ (j-3*Math.ceil((j+1)/3)+4) + '0% '+ ressource[1][Math.floor(j/3)] +'/' + nombre_booster[j] +''; } } ajoutHTML_2 = ajoutHTML_2+ ''; for (var i=0; i'; for (var k=0; k<=2; k++) { // k= chaque ressource var maxProd = max_planete(affichageProdBooster,k); // maximum de production entre les planètes pour la ressource k for (var l=1 ; l<=3 ; l++) { if (nombre_booster[3*k+l-1] != 0) { // le contenu du td est nul si le booster n'est pas dans l'inventaire ajoutHTML_2 = ajoutHTML_2+''+ Math.ceil((affichageProdBooster[i][1][k])*l*.1*168).ajoutSeparateurMilliers(".") +''; } } } ajoutHTML_2 = ajoutHTML_2+''; } ajoutHTML_2 = ajoutHTML_2 +'
GAIN SUR 1 SEMAINE
'+ affichageProdBooster.length + "/" + recuperer_nombreColonies().split("/")[0] + ' planètes
' +''; (affichageProdBooster[i][0][2].length > 14) ? ajoutHTML_2 = ajoutHTML_2+affichageProdBooster[i][0][2].substr(0,13)+"..." : ajoutHTML_2 = ajoutHTML_2+affichageProdBooster[i][0][2]; ajoutHTML_2 = ajoutHTML_2+''+ affichageProdBooster[i][0][1] +'