Inventaire tools

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

当前为 2016-05-23 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Inventaire tools
  3. // @namespace http://userscripts.org/scripts/show/138760
  4. // @version 3.3
  5. // @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
  6. // @include http*://*.ogame.*/game/index.php?page=shop*
  7. // @include http*://*.ogame.*/game/index.php?page=resourceSettings*
  8. // @copyright 19 juillet 2012, nitneuc -- Libre d'être modifié ou reproduit, tant que cette ligne @copyright reste identique
  9. // ==/UserScript==11
  10.  
  11. /*
  12. // ****** Informations ******
  13. Inventaire tools
  14. ----------------
  15.  
  16. Installation:
  17. -------------
  18. http://userscripts.org/scripts/show/138760
  19. compatible chrome et firefox
  20.  
  21.  
  22. Variables persistantes stockées:
  23. --------------------------------
  24. *booléen= texte.script + "_" + pseudoJeu + "_" + universJeu + "_" + langue + "_premiereExecution"
  25. *array= texte.script + "_" + pseudoJeu + "_" + universJeu + "_" + langue + "_proprietesPlanetes_production"
  26.  
  27.  
  28. ChangeLog:
  29. ----------
  30.  
  31. v1.0:
  32. *première version stable
  33.  
  34. v1.1:
  35. *Correction bug affichage
  36. *Correction: le tableau ne s'affichait pas si on passait de la boutique à l'inventaire
  37.  
  38. v1.2:
  39. *Simplification du code
  40. *Amélioration de l'affichage
  41.  
  42. v2.0:
  43. *intégration du changelog dans le script
  44. *nom du script = Inventaire tools
  45. *séparation de la fonction afficherSurPage() et constructionElementHTML()
  46. *ajout du tableau de production hebdomadaire des boosters
  47. *tableau des productions sur planète se MAJ si changement quantité production/déménagement/renommage
  48.  
  49. v2.1:
  50. *les 2 tableaux sont mis-en-page et réunis en bas
  51. *nouvel emplacement pour les variables persistantes
  52. *simplification du code
  53.  
  54. v2.1.1:
  55. *compatible Firefox
  56.  
  57. v2.1.2:
  58. *correction: initialisation programme
  59.  
  60. v2.1.3:
  61. *correction: les productions nulles étaient exclues
  62. *correction: les lunes étaient incluses (production nulle)
  63.  
  64. v2.2:
  65. *ajout du 3ème tableau: cumul des gains booster (en nombre de ressources)
  66. *simplification du code du 1er tableau (temps cumulés)
  67. *nouvelle mise-en-page du 1er tableau (temps cumulés)
  68.  
  69. v2.3:
  70. *utilisation d'un CSS
  71. *travail de compatibilité avec autres script (uniformisation)
  72. *modification de la structure de la variable permanente des propriétés
  73.  
  74. v2.4:
  75. *compatibilité v5
  76. *modification de l'affichage des alertes
  77.  
  78. v3:
  79. *modification du stockage des variables
  80. *transformation de fonctions en prototypes
  81. *Refonte et grande simplification de l'affichage
  82.  
  83. v3.1
  84. *Correction bug d'affichage
  85.  
  86. v3.2
  87. *rétablissement de l'affichage après 'contentWrapper' en raisons de retours de bugs
  88.  
  89. v3.2.1
  90. *réctification mineure
  91.  
  92. v3.2.2
  93. *correction de l'affichage
  94.  
  95. v3.3
  96. *HTTP et HTTPS tolérés
  97. *document.getElementById = $
  98. *lecture de la production par planète sur la page 'resourceSettings' au lieu de la page 'resource'. Modifier la doc au passage
  99. *affichage d'alerte sur la page 'resourceSettings' au lieu de la page 'resource'
  100. *simplification de la fonction d'affichage d'alerte
  101. *correction sytaxes css
  102. */
  103.  
  104. var strFunc = (function(){
  105. // ****** Prototypes ******
  106. Storage.prototype.setObj = function(key, obj) {
  107. return this.setItem(key, JSON.stringify(obj));
  108. };
  109. Storage.prototype.getObj = function(key) {
  110. return JSON.parse(this.getItem(key));
  111. };
  112. Number.prototype.ajoutSeparateurMilliers = function(car) {
  113. // v1: fonction ; v2: prototype ; v2.1: prise en charge des nombres négatifs ; v2.2: prise en charge des nombre décimaux
  114. var dec = "";
  115. if (this < 0) var neg = true;
  116. if (this != Math.floor(this)) {
  117. dec = ((this-Math.floor(this))+"").substr(1,(this+"").length-(Math.floor(this)+"").length);
  118. var str = Math.floor(this)+"";
  119. } else {
  120. var str = this+"";
  121. }
  122. if (neg) str = str.substring(1);
  123. var str_decoupe = new Array();
  124. for (var tmp=0; tmp<Math.ceil(str.length/3) ; tmp++) str_decoupe[tmp] = str.substring(str.length-3*tmp-3,str.length-3*tmp); // on remplit un array() de groupes de 3 chiffres
  125. var str_2 = str_decoupe[str_decoupe.length-1]; // on cree une string composée des groupes de 3 chiffres + du signe
  126. for (var tmp = str_decoupe.length-2; tmp>=0; tmp--) str_2 = str_2 + car + str_decoupe[tmp];
  127. if (neg) str_2 = "-"+str_2;
  128. return str_2+dec;
  129. };
  130. Array.prototype.niemeValeurDifferenteDe = function(n,val) {
  131. var tmp_2=0;
  132. for (var tmp=0; tmp<this.length; tmp++) {
  133. if (this[tmp] != val) tmp_2++;
  134. if (tmp_2 == n) return tmp;
  135. }
  136. return -1;
  137. };
  138. // ****** fonctions 'hard' ******
  139. function $(id) { // Abrégé de document.getElementById(id);
  140. return document.getElementById(id);
  141. }
  142.  
  143. function minutes2hhmm(minutes) {
  144. var div = divEuclidienne(minutes,60);
  145. if (div[1] == 0) div[1] = "";
  146. return div;
  147. }
  148. function divEuclidienne(divise,diviseur) { // retourne le résultat d'une division euclidienne sous forme d'array(quotient , reste)
  149. return new Array(Math.floor(divise/diviseur) , divise-Math.floor(divise/diviseur)*diviseur);
  150. }
  151. function positionPlanete2nombre(position) {
  152. return 1000000*parseInt(position.split(":")[0])+1000*parseInt(position.split(":")[1])+parseInt(position.split(":")[2]);
  153. }
  154. function max_array(liste) { // fonction récupérée sur http://www.journaldunet.com/
  155. var max = liste[0];
  156. for (var i=0; i<liste.length; i++) if (liste[i]*1>max) max = liste[i];
  157. return max;
  158. }
  159. function insererLigneArray(element,table,numLigne) {
  160. for (var i=table.length-1 ; i>=numLigne ; i--) table[i+1] = table[i];
  161. table[numLigne] = element;
  162. return table;
  163. }
  164. function compterValeursArrayNonNulles(table) {
  165. var incr = 0;
  166. for (var j_4=0 ; j_4<table.length ; j_4++) if (table[j_4] != 0) incr++;
  167. return incr;
  168. }
  169. function removeElement(id) { // fonction recopiée sur http://www.roseindia.net
  170. var el = $(id);
  171. var remElement = (el.parentNode).removeChild(el);
  172. }
  173. function testPlaneteExiste(id,tableProprietes) { // test su la planète existe déjà dans la table
  174. for (var i=0 ; i<tableProprietes.length ; i++) if (tableProprietes[i][0][0] == id) return i;
  175. return -1;
  176. }
  177. // ****** fonctions affichage ******
  178. function creer_CSS() { // ajoute des classes CSS
  179. document.getElementsByTagName("head")[0].innerHTML = '<style type="text/css">'
  180. +'.table1 { width:'+ config.table1_width +'px; padding-top: 20px; padding-bottom: 20px; } '
  181. +'.table { width:100%; border-width: 3px; border-style: double; border-color: #666666; text-align: center; font-size:' +config.valeur_fontSize +'px ; } '
  182. +'.header2 { background-color:'+ config.header2_bgColor+ '; color:'+ config.header2_fontColor +'; font-size:'+ config.header2_fontSize +'px ; font-weight:'+ config.header2_fontBold +'; text-align:'+ config.header2_textAlign +'; } '
  183. +'.header3 { background-color:'+ config.header3_bgColor+ '; color:'+ config.header3_fontColor +'; font-size:'+ config.header3_fontSize +'px ; font-weight:'+ config.header3_fontBold +'; text-align:'+ config.header3_textAlign +'; } '
  184. +'.headerLigne { background-color:'+ config.headerLigne_bgColor+ '; color:'+ config.headerLigne_fontColor +'; font-size:'+ config.headerLigne_fontSize +'px ; font-weight:'+ config.headerLigne_fontBold +'; } '
  185. +'.valeur { background-color:'+ config.valeur_bgColor+ '; color:'+ config.valeur_fontColor +'; font-size:'+ config.valeur_fontSize +'px ; font-weight:'+ config.valeur_fontBold +'; text-align:'+ config.valeur_textAlign +';} '
  186. +'.valeursMax { background-color:'+ config.valeursMax_bgColor+ '; color:'+ config.valeursMax_fontColor +'; font-size:'+ config.valeursMax_fontSize +'px ; font-weight:'+ config.valeursMax_fontBold +'; } '
  187. +'.cachette_alerte { background-color:'+ config.alerte_bgColor+ '; color:'+ config.alerte_fontColor +'; font-size:'+ config.alerte_fontSize +'px ; font-weight:'+ config.alerte_fontBold +'; text-align:'+ config.alerte_textAlign +' ;} '
  188. +'</style>'+document.getElementsByTagName("head")[0].innerHTML;
  189. }
  190. function affichage_alerte(texteAAfficher) { // affiche alerte de confirmation
  191. $("inhalt").innerHTML = '<div class="cachette_alerte">' +texteAAfficher +'</div>'+$("inhalt").innerHTML;
  192. }
  193. function afficherTable(tout,affichageTempsCumules,affichageGainBooster,affichageProdBooster) {
  194. var elHTML = document.getElementsByClassName("footer")[0];
  195. var inner = elHTML.innerHTML;
  196. var ajoutHTML_2 = ""; // Déclaration
  197. var ajoutHTML_1 = '<div align="center"><table class="table1"><tr><td style="padding-bottom: 12px;" align="center"><table style="width:250px; align: center;" class="table">'
  198. +'<tr><td colspan="3" style="padding-top: 5px; ; padding-bottom: 5px;" class="header2">CUMULS DES GAINS</td></tr><tr>';
  199. for (var i=0; i<=2 ; i++) ajoutHTML_1 = ajoutHTML_1 + '<td class="header3" width="33%">'+affichageTempsCumules[i].split(":")[0] +'</td>';
  200. ajoutHTML_1 = ajoutHTML_1 + '</tr><tr>';
  201. for (var i=0; i<=2 ; i++) ajoutHTML_1 = ajoutHTML_1 + '<td class="valeur">'+affichageTempsCumules[i].split(":")[1] +'</td>';
  202. ajoutHTML_1 = ajoutHTML_1 + '</tr>';
  203. if (tout) { // si tous les tableaux doivent être affichés
  204. ajoutHTML_1 = ajoutHTML_1 + '<tr>';
  205. for (var i=0; i<=2 ; i++) ajoutHTML_1 = ajoutHTML_1 + '<td class="header3" width="33%">'+ressource[0][i] +'</td>';
  206. ajoutHTML_1 = ajoutHTML_1 + '</tr><tr>';
  207. for (var i=0; i<=2 ; i++) ajoutHTML_1 = ajoutHTML_1 + '<td class="valeur">'+affichageGainBooster[i].ajoutSeparateurMilliers(".")+'</td>';
  208. ajoutHTML_1 = ajoutHTML_1 + '</tr>';
  209. }
  210. ajoutHTML_1 = ajoutHTML_1 + '</table></td></tr>';
  211. if (tout) {
  212. var nombre_type_booster = compterValeursArrayNonNulles(nombre_booster); // définit le nombre de colonnes à fabriquer dans le grand tableau
  213. ajoutHTML_2 = '<tr><td style="padding-bottom: 30px;" align="center"><table class="valeur table" width="'+ (142+nombre_type_booster*(config.prodBooster_largeurColonne+2)) +'px"><tr><td colspan="'+(nombre_type_booster+2)+'" style="padding-top: 5px ; padding-bottom: 5px;" class="header2">GAIN SUR 1 SEMAINE</td></tr><tr>';
  214. for (var i=0; i<=nombre_type_booster+1 ;i++) {
  215. ajoutHTML_2 = ajoutHTML_2 + '<td class="header3" width=';
  216. if (i==0) ajoutHTML_2 = ajoutHTML_2+ '"91px" align="left">'+ affichageProdBooster.length + "/" + recuperer_nombreColonies().split("/")[0] + ' planètes</td>';
  217. if (i==1) ajoutHTML_2 = ajoutHTML_2+ '"45px">position</td>';
  218. if (i>=2) {
  219. var j = nombre_booster.niemeValeurDifferenteDe(i-1,0);
  220. 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] +'</td>';
  221. }
  222. }
  223. ajoutHTML_2 = ajoutHTML_2+ '</tr>';
  224. for (var i=0; i<affichageProdBooster.length; i++) { // i = les lignes du tableau
  225. ajoutHTML_2 = ajoutHTML_2+ '<tr><td class="headerLigne" align="left">'
  226. +'<a href="http://uni'+ universJeu +'.ogame.'+ langue +'/game/index.php?page=shop&cp='+ affichageProdBooster[i][0][0] + '#page=inventory" style="color:'+ config.headerLigne_fontColor +'; text-decoration:none;">';
  227. (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];
  228. ajoutHTML_2 = ajoutHTML_2+'</a></td><td class="headerLigne">'+ affichageProdBooster[i][0][1] +'</td>';
  229. for (var k=0; k<=2; k++) { // k= chaque ressource
  230. var maxProd = max_planete(affichageProdBooster,k); // maximum de production entre les planètes pour la ressource k
  231. for (var l=1 ; l<=3 ; l++) {
  232. if (nombre_booster[3*k+l-1] != 0) { // le contenu du td est nul si le booster n'est pas dans l'inventaire
  233. ajoutHTML_2 = ajoutHTML_2+'<td';
  234. if ((affichageProdBooster[i][1][k]) == maxProd) ajoutHTML_2 = ajoutHTML_2+ ' class="valeursMax"';
  235. ajoutHTML_2 = ajoutHTML_2+ '>'+ Math.ceil((affichageProdBooster[i][1][k])*l*.1*168).ajoutSeparateurMilliers(".") +'</td>';
  236. }
  237. }
  238. }
  239. ajoutHTML_2 = ajoutHTML_2+'</tr>';
  240. }
  241. ajoutHTML_2 = ajoutHTML_2 +'</table></td></tr>';
  242. }
  243. elHTML.innerHTML = inner+ ajoutHTML_1 + ajoutHTML_2;
  244. }
  245. function max_planete(table,n) {
  246. var table_temp = new Array();
  247. for (var tmp=0; tmp<table.length; tmp++) table_temp[tmp] = table[tmp][1][n];
  248. return max_array(table_temp);
  249. }
  250. // ****** Fonctions 'recuperer' ******
  251. function recuperer_infoInventaire() {
  252. var inventaire = $("js_inventorySlider").getElementsByClassName("item_img_box"); // On récupère un élément HTML de la page
  253. var liste = new Array();
  254. for (var i=0 ; i < inventaire.length ; i++) { // fais le tour des objets de la page
  255. var inventaire2 = inventaire[i].getElementsByTagName("a");
  256. var nbObjet = inventaire2[0].getElementsByClassName("level amount")[0].innerHTML; // récupère le nombre de l'objet
  257. var attributObjet = inventaire2[0].getAttribute("title").split("|")[0]; // récupère le titre de l'objet
  258. liste[i] = (attributObjet.split(" en ")[0] + ":" + attributObjet.split(" en ")[1] + ":" + nbObjet).toLowerCase();
  259. }
  260. return liste;
  261. }
  262. function recuperer_nombreColonies() {
  263. return $("countColonies").getElementsByTagName("span")[0].innerHTML;
  264. }
  265. function recuperer_infoPlaneteCourante() {
  266. var ensembleBaliseMeta = document.getElementsByTagName("meta"); // récupère toutes les balises meta du <head>
  267. var info = new Array();
  268. for (var i=0 ; i<ensembleBaliseMeta.length ; i++) { //trouve certaines balises dans la liste
  269. if (ensembleBaliseMeta[i].getAttribute("name") == "ogame-planet-id") info[0] = ensembleBaliseMeta[i].getAttribute("content");
  270. if (ensembleBaliseMeta[i].getAttribute("name") == "ogame-planet-coordinates") info[1] = ensembleBaliseMeta[i].getAttribute("content");
  271. if (ensembleBaliseMeta[i].getAttribute("name") == "ogame-planet-name") info[2] = ensembleBaliseMeta[i].getAttribute("content");
  272. if (ensembleBaliseMeta[i].getAttribute("name") == "ogame-planet-type") info[3] = ensembleBaliseMeta[i].getAttribute("content");
  273. }
  274. return info;
  275. }
  276. function recuperer_productionCourante() { // renvoie la production M,C et D, sous forme d'Array(). Attention les objets s'appliquent sur les mines et pas sur la prod totale de la planète (hors plasma, hors prod initiale, hors objets, ...)
  277. var production = new Array();
  278. lignesTabl = $('inhalt').getElementsByClassName('list listOfResourceSettingsPerPlanet')[0].getElementsByTagName('tr');
  279. for (var i=2; i<lignesTabl.length; i++) { // Les 2 premières lignes ne sont concernent en aucun cas les mines (en-têtes)
  280. if ( lignesTabl[i].getElementsByTagName('td')[0].innerHTML.indexOf('Mine de métal') != -1 ) production[0] = lignesTabl[i].getElementsByTagName('td')[2].getElementsByTagName('span')[0].innerHTML.replace(/[^0-9-]/g,"");
  281. if ( lignesTabl[i].getElementsByTagName('td')[0].innerHTML.indexOf('Mine de cristal') != -1 ) production[1] = lignesTabl[i].getElementsByTagName('td')[3].getElementsByTagName('span')[0].innerHTML.replace(/[^0-9-]/g,"");
  282. if ( lignesTabl[i].getElementsByTagName('td')[0].innerHTML.indexOf('Synthétiseur de deutérium') != -1 ) production[2] = lignesTabl[i].getElementsByTagName('td')[4].getElementsByTagName('span')[0].innerHTML.replace(/[^0-9-]/g,"");
  283. }
  284. return production;
  285. }
  286. // ****** autres fonctions ******
  287. function affichageInventaire() {
  288. if ($("js_inventorySlider")) {
  289. if (pageCouranteEstInventaire == false) {
  290. pageCouranteEstInventaire = true;
  291. // Préparation du tableau tempsCumulés
  292. var duree_kraken = 0; // remise à zéro des compteurs de duree/nombre pour chaque type d'items
  293. var duree_detroid = 0;
  294. var duree_newtron = 0;
  295. var listeItem = recuperer_infoInventaire();
  296. for (var i=0 ; i<listeItem.length ; i++) { // modifie les compteurs de duree des 3 types d'item
  297. if (listeItem[i].split(":")[0] == "kraken") duree_kraken = duree_kraken + niveauItem2temps(listeItem[i].split(":")[1],listeItem[i].split(":")[2]);
  298. if (listeItem[i].split(":")[0] == "detroid") duree_detroid = duree_detroid + niveauItem2temps(listeItem[i].split(":")[1],listeItem[i].split(":")[2]);
  299. if (listeItem[i].split(":")[0] == "newtron") duree_newtron = duree_newtron + niveauItem2temps(listeItem[i].split(":")[1],listeItem[i].split(":")[2]);
  300. if ((listeItem[i].split(":")[0] == "booster de métal") || (listeItem[i].split(":")[0] == "booster de cristal") || (listeItem[i].split(":")[0] == "booster de deutérium")) {
  301. //calcul l'emplacement de la case de l'array() à incrémenter
  302. if (listeItem[i].split(":")[0] == "booster de métal") var a = 1;
  303. if (listeItem[i].split(":")[0] == "booster de cristal") var a = 2;
  304. if (listeItem[i].split(":")[0] == "booster de deutérium") var a = 3;
  305. if (listeItem[i].split(":")[1] == "bronze") var b = 1;
  306. if (listeItem[i].split(":")[1] == "argent") var b = 2;
  307. if (listeItem[i].split(":")[1] == "or") var b = 3;
  308. nombre_booster[3*a+b-4] = listeItem[i].split(":")[2];
  309. }
  310. }
  311. var affichage = new Array(// les valeurs à afficher à l'écran sont entrées dans un array()
  312. "Bâtiments : "+ minutes2hhmm(duree_kraken)[0]+ "h"+ minutes2hhmm(duree_kraken)[1],
  313. "Chantier spatial : "+ minutes2hhmm(duree_detroid)[0]+ "h"+ minutes2hhmm(duree_detroid)[1],
  314. "Recherche : "+ minutes2hhmm(duree_newtron)[0]+ "h"+ minutes2hhmm(duree_newtron)[1]
  315. );
  316. if ((compterValeursArrayNonNulles(nombre_booster) != 0)&&(typeof proprietesPlanetes_production[0] != 'undefined')) { // si on affiche les 3 tables
  317. afficherTable(true,affichage,gainTotalBooster(proprietesPlanetes_production),proprietesPlanetes_production);
  318. } else { // si on affiche qu'une table
  319. afficherTable(false,affichage);
  320. }
  321. }
  322. }
  323. else { // si la page courante n'est pas l'inventaire
  324. pageCouranteEstInventaire = false;
  325. removeElement("tempsCumules"); // efface les tableaux
  326. removeElement("prodBooster");
  327. }
  328. }
  329. function niveauItem2temps(niveau,nombre) { // renvoit la durée associée à chaque item en fonction de son nombre
  330. if (niveau == "bronze") return nombre*config.duree_bronze;
  331. if (niveau == "argent") return nombre*config.duree_argent;
  332. if (niveau == "or") return nombre*config.duree_or;
  333. }
  334. function ajouterPlanete(info,proprietesAAjouter,tableProprietes,nomVariablePersistante) { // ajout d'une planète (id) +ses proprietes (array de 3 cases) à la liste
  335. var pos = 0;
  336. if (tableProprietes.length != 0) for (var pos=0 ; pos<tableProprietes.length ; pos++) if (positionPlanete2nombre(info[1]) < positionPlanete2nombre(tableProprietes[pos][0][1])) break;
  337. insererLigneArray(new Array(info,proprietesAAjouter),tableProprietes,pos);
  338. localStorage.setObj(texte.script+ "_"+ pseudoJeu+ "_"+ universJeu+ "_"+ langue+ "_"+ nomVariablePersistante,tableProprietes);
  339. affichage_alerte(texte.alerte_planeteAjoutee); // affiche alerte de confirmation
  340. }
  341. function maxProdEmpire(tableProprietes) { // trouve les meilleures productions de l'empire, pour trouver les meilleures planètes où appliquer les boosters
  342. var maxProd_temp = new Array(0,0,0);
  343. for (var i=0 ; i<tableProprietes.length ; i++) for (var j=0 ; j<=2 ; j++) if (parseInt(tableProprietes[i][1][j]) > maxProd_temp[j]) maxProd_temp[j] = parseInt(tableProprietes[i][1][j]);
  344. return maxProd_temp;
  345. }
  346. function gainTotalBooster(tableProprietes) {
  347. var maxProd_temp = maxProdEmpire(tableProprietes);
  348. var gain_parRessource = new Array(0,0,0);
  349. 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);
  350. return gain_parRessource;
  351. }
  352. function initialiserDonneesUtilisateur() { // initialise les données utilisateur du script
  353. var proprietes = new Array();
  354. localStorage.setObj(texte.script + "_" + pseudoJeu + "_" + universJeu + "_" + langue + "_proprietesPlanetes_production",proprietes);
  355. localStorage.setObj(texte.script + "_" + pseudoJeu + "_" + universJeu + "_" + langue + "_premiereExecution",false);
  356. return proprietes;
  357. }
  358. // ****** Script ******
  359. const langue = location.href.split("/")[2].split(".")[2];
  360. const universJeu = location.href.split("/")[2].split(".")[0].replace("uni","");
  361. const pseudoJeu = document.getElementsByName("ogame-player-name")[0].getAttribute("content");
  362. var pageCouranteEstInventaire = false;
  363. var nombre_booster = new Array(0,0,0,0,0,0,0,0,0); // array() contenant le nombre de chaque booster
  364. // ****** Paramètres utilisateur ******
  365. var config = {
  366. duree_bronze:30,
  367. duree_argent:120,
  368. duree_or:360,
  369. header2_fontColor:"#FFFFFF",
  370. header2_fontSize:"9",
  371. header2_fontBold:"bold",
  372. header2_bgColor:"#00002D",
  373. header2_textAlign:"center",
  374. header3_fontColor:"#FFFF00",
  375. header3_fontSize:"9",
  376. header3_fontBold:"bold",
  377. header3_bgColor:"#00002D",
  378. header3_textAlign:"center",
  379. headerLigne_fontColor:"#FF8000",
  380. headerLigne_fontSize:"9",
  381. headerLigne_fontBold:"bold",
  382. headerLigne_bgColor:"#000000",
  383. valeur_fontColor:"#FFFFFF",
  384. valeur_fontSize:"9",
  385. valeur_fontBold:"normal",
  386. valeur_bgColor:"#000000",
  387. valeur_textAlign:"center",
  388. valeursMax_fontColor:"#FFFFFF",
  389. valeursMax_fontSize:"9",
  390. valeursMax_fontBold:"normal",
  391. valeursMax_bgColor:"#FF0000",
  392. prodBooster_largeurColonne:70,
  393. alerte_fontColor:"#FFFFFF",
  394. alerte_fontSize:"9",
  395. alerte_fontBold:"bold",
  396. alerte_bgColor:"#FF0000",
  397. alerte_textAlign:"center",
  398. };
  399. var texte = {
  400. script:"Inventaire tools",
  401. alerte_planeteAjoutee:"Inventaire tools: Planète ajoutée",
  402. alerte_proprietesModifiees:"Inventaire tools: Propriétés modifiees",
  403. };
  404. var ressource = new Array(
  405. new Array("Métal","Cristal","Deutérium"),
  406. new Array("mét","cri","deut")
  407. );
  408. // ****** script ******
  409. creer_CSS();
  410. // **** **** **** ****
  411. // *** *** *** ***
  412. // ** ** ** **
  413. // * * * *
  414. // localStorage.removeItem(texte.script + "_" + pseudoJeu + "_" + universJeu + "_" + langue + "_premiereExecution");// A DECOMMENTER POUR INITIALISER LES DONNES UTILISATEUR
  415. // * * * *
  416. // ** ** ** **
  417. // *** *** *** ***
  418. // **** **** **** ****
  419. if (localStorage.getObj(texte.script + "_" + pseudoJeu + "_" + universJeu + "_" + langue + "_premiereExecution") != false) { // teste si l'utilisateur est à sa première exécution ou non
  420. var proprietesPlanetes_production = initialiserDonneesUtilisateur();
  421. } else {
  422. var proprietesPlanetes_production = localStorage.getObj(texte.script + "_" + pseudoJeu + "_" + universJeu + "_" + langue + "_proprietesPlanetes_production");
  423. }
  424. var url = location.href.split("page=")[1].split("&")[0].split("#")[0];
  425. if (url == "resourceSettings") { // si la page courante est la page 'ressourcesSettings'
  426. // if (url == "resources") { // si la page courante est la page 'ressources'
  427. // Récuperation des infos sur la planète courante
  428. var infoPlanete = recuperer_infoPlaneteCourante();
  429. var productionPlaneteCourante = recuperer_productionCourante();
  430.  
  431. if (infoPlanete[3] == "planet") { // teste si la planète courante n'est pas une lune
  432. // teste si la planète courante a déjà été enregistrée
  433. var existe = testPlaneteExiste(infoPlanete[0],proprietesPlanetes_production);
  434. if (existe == -1) { // si la planète n'existe pas dans la liste
  435. ajouterPlanete(infoPlanete,productionPlaneteCourante,proprietesPlanetes_production,"proprietesPlanetes_production");
  436. } else { // si la planète est déjà dans la liste
  437. if ((proprietesPlanetes_production[existe][0][1] != infoPlanete[1])
  438. || (proprietesPlanetes_production[existe][0][2] != infoPlanete[2])
  439. || (proprietesPlanetes_production[existe][1][0] != productionPlaneteCourante[0])
  440. || (proprietesPlanetes_production[existe][1][1] != productionPlaneteCourante[1])
  441. || (proprietesPlanetes_production[existe][1][2] != productionPlaneteCourante[2])) { // on test si les valeurs des productions+nom+emplacement ont changées
  442. proprietesPlanetes_production[existe] = new Array(infoPlanete,productionPlaneteCourante);
  443. localStorage.setObj(texte.script + "_" + pseudoJeu + "_" + universJeu + "_" + langue + "_proprietesPlanetes_production",proprietesPlanetes_production);
  444. affichage_alerte(texte.alerte_proprietesModifiees);
  445. }
  446. }
  447. }
  448. }
  449. if (url == "shop") setInterval(affichageInventaire,500);
  450. }).toString();
  451.  
  452. var script = document.createElement("script");
  453. script.setAttribute("type","text/javascript");
  454. script.text = "(" + strFunc + ")();";
  455. document.body.appendChild(script);