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();