NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name cartoCelestus // @namespace // @description carto Celestus // @version 0.6.1 // @author Kôtaro Inugamie // @collaborator Aquaofkaos // @license MIT // @copyright 2021, Kôtaro Inugamie (https://openuserjs.org/users/K%C3%B4taro_Inugamie) // @include *horizon.celestus.fr* // @exclude *forum.celestus.fr* // @run-at document-body // @noframes // @grant GM_setValue // @grant GM_getValue // @updateURL https://openuserjs.org/meta/Kôtaro_Inugamie/cartoCelestus.meta.js // @downloadURL https://openuserjs.org/install/Kôtaro_Inugamie/cartoCelestus.user.js // ==/UserScript== console.log ("Chargement du script"); var pageJeu = document; var fenetre; var dansIframe; //Détermine si on est dans un frame (jeu) ou dans la page courante (radar, RC, etc.) if (window.top === window.self && (frames[0] || document.getElementsByTagName("frameset").length > 0)) { dansIframe = false; } else { dansIframe = true; } function chargersys(fenetre) { fenetre.copyToClipboard = str => { console.log("Copie des données vers le presse-papiers."); const el = pageJeu.createElement("textarea"); el.value = str; el.setAttribute("readonly", ""); el.style.position = "absolute"; el.style.left = "-9999px"; pageJeu.body.appendChild(el); const selected = pageJeu.getSelection().rangeCount > 0 ? pageJeu.getSelection().getRangeAt(0) : false; el.select(); pageJeu.execCommand("copy"); pageJeu.body.removeChild(el); if (selected) { pageJeu.getSelection().removeAllRanges(); pageJeu.getSelection().addRange(selected); } }; fenetre.Carto = new Object(); fenetre.exportCarto = function () { var texte = ""; Object.keys(frames[0].Carto.Sys).forEach( function (item, index) { if (item != 0) { var sysa = frames[0].Carto.Sys[item]; var syshex = frames[0].Carto.Hex[sysa.HexID]; texte += `${item}\t\ ${sysa.AG}\t\ ${sysa.Acces}\t\ ${sysa.Alliance}\t\ ${sysa.Const}\t\ ${syshex.ConstNom}\t\ ${sysa.Datee}\t\ ${sysa.FactionBase}\t\ ${sysa.Gal}\t\ ${syshex.HexID}\t\ ${sysa.HexSecu}\t\ ${sysa.Nom}\t\ ${sysa.RegionNom}\t\ ${sysa.Sys}\t\ ${sysa.SysNom}\t\ ${sysa.X}\t\ ${sysa.Y}\t\ ${sysa.Astre}\t\ ${sysa.TN}\t\ ${sysa.CB}\t\ ${sysa.PDC}\t\ ${sysa.AVP}\t\ ${sysa.CT}\t\ ${sysa.CM}\t\ ${syshex.HexDom}\t\ ${syshex.HexProp}\n`; } }); fenetre.copyToClipboard(texte); fenetre.Carto.Sys = (GM_getValue("Carto")) ? JSON.parse(GM_getValue("Carto")) : []; }; fenetre.clearCarto = function () { fenetre.Carto.Sys = (GM_getValue("Carto")) ? JSON.parse(GM_getValue("Carto")) : []; }; } const mutationObserver = new MutationObserver(function (mutations) { this.disconnect(); //console.log("mutations"); mutations.forEach(function (mutation) { //console.log(mutation.target); switch (mutation.target.id) { case 'SysCartouche' : //console.log("carte detecter"); frames[0].Carto.Sys[frames[0].Sys[0][0].ID] = mergeCarto(frames[0].Sys); GM_setValue("Carto",JSON.stringify(frames[0].Sys.Data)); //console.log(GM_getValue("Carto")); //console.log(frames[0].Carto); break; default: } }); startObserve(); }); function startObserve() { mutationObserver.observe(pageJeu.documentElement, { //attributes: true, //characterData: true, childList: true, subtree: true, //attributeOldValue: true, //characterDataOldValue: true }); } var convArrToObj = function(array){ //console.log(array); var thisEleObj = new Object(); if(typeof array == "object"){ for(var i in array){ var thisEle = convArrToObj(array[i]); thisEleObj[i] = thisEle; //console.log(thisEle); } }else { thisEleObj = array; } return thisEleObj; }; function mergeCarto(objCarto) { var mergedCarto = { AG : objCarto.Data.AG, Acces : objCarto.Data.Acces, Alliance : objCarto.Data.Alliance, Const : objCarto.Data.Const, //ConstNom : objCarto.Data.ConstNom, Datee : objCarto.Data.Date, FactionBase : objCarto.Data.FactionBase, Gal : objCarto.Data.Gal, HexID : objCarto.Data.HexID, //HexSecu : objCarto.Data.HexSecu, Nom : objCarto.Data.Nom, RegionNom : objCarto.Data.RegionNom, Sys : objCarto.Data.Sys, SysNom : objCarto.Data.SysNom, X : objCarto.Data.X, Y : objCarto.Data.Y, Astre : objCarto[0][0].Type, TN : 0, CB : 0, PDC : 0, AVP : 0, CT : 0, CM : 0 }; mergedCarto.X = mergedCarto.X / 1000000000; mergedCarto.Y = mergedCarto.Y / 1000000000; frames[0].Carto.Hex[objCarto.Data.HexID].HexSecu = objCarto.Data.HexSecu; frames[0].Carto.Hex[objCarto.Data.HexID].ConstNom = objCarto.Data.ConstNom; //console.log("testmerge", objCarto); //mergedCarto = convArrToObj(objCarto.Data); /* var mergedCarto; */ //console.log(objPlanete); objCarto.forEach(function (val, pos) { if (pos > 0){ val.forEach(function (res, lun) { //console.log(pos,lun); if (objCarto[pos][lun].IMG == "32") { mergedCarto.AVP = mergedCarto.AVP + 1; frames[0].Carto.Hex[objCarto.Data.HexID].HexDom = objCarto[pos][lun].TAG; frames[0].Carto.Hex[objCarto.Data.HexID].HexProp = objCarto[pos][lun].Pseudo; } switch (objCarto[pos][lun].Type) { case "TN" : mergedCarto.TN = mergedCarto.TN + 1; break; case "CB" : mergedCarto.CB = mergedCarto.CB + 1; break; case "PDC" : mergedCarto.PDC = mergedCarto.PDC + 1; break; case "CT" : mergedCarto.CT = mergedCarto.CT + 1; break; case "CM" : mergedCarto.CM = mergedCarto.CM + 1; break; default : } }); } }); //console.log("result ",mergedCarto); console.log("système enregistré"); return mergedCarto; } function run (){ fenetre = frames[0].window; pageJeu = document; //chargersys(fenetre); //console.log("heu"); startObserve(); } setTimeout (run (),1000); if (dansIframe) { //console.log("Page secondaire détectée."); fenetre = window; pageJeu = document; chargersys(fenetre); fenetre.Carto.Sys = (GM_getValue("Carto")) ? JSON.parse(GM_getValue("Carto")) : []; startObserve(); } else { //console.log("Page jeu principal détectée."); setTimeout(function () { fenetre = frames[0].window; pageJeu = frames[0].document; chargersys(fenetre); fenetre.Carto.Sys = (GM_getValue("Carto")) ? JSON.parse(GM_getValue("Carto")) : []; console.log("execution du script"); startObserve(); }, 10000); } //mutationObserver.disconnect();