NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Nmapv3 // @namespace http://carto-nacridan.dynamic-dns.net/ // @copyright 2014, Tass // @description Récupération de la vue et assemblage par post traitement : contactez Tass in game // @include http://www.nacridan.com/* // @include http://nacridan.raistlin.fr/* // @include http://nacridan.com/* // @exclude http://www.nacridan.com/conquest/profile.php?id=* // @exclude http://http://www.nacridan.com/test/nacridan2* // @exclude http://http://nacridan.com/test/* // @require http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js // @oujs:author zogre // @downloadURL https://openuserjs.org/install/zogre/Nmapv3.user.js // @version 3.4.2 // @grant none // ==/UserScript== /* 3.4.2 change namespace 3.4.1 nom de domain et exclusion serveur de tests */ var reply = ''; //Docu ment var testbaseURL = 'https://docs.google.com/forms/d/1p6UfbpCi9bQg7u7xwQdujpNM4DZiEu9kHvysXBpwTOY/formResponse?'; //Varivable du doc var testbaseTerrain = 'entry.1728234380='; var submitURL; //Variables pour construire la compression var terrain = 'a'; //Terrain var iurl = 'a'; //URL var ibat = 'a'; //Batiement var iTer = 0; //Numéro Terrain var iTer2 = 0; //Numéro URL var iTer3 = 0; //Numéro Batiement //Variables à récupérer pour une case de la vue var valX = ''; var valY = ''; var valTerrain = ''; var valBuilding = ''; var valURL = ''; //Variables temporaires pour parser les chaines de caratère var posSlache; var pos; var debut; var milieu; var fin; //Pour les cases spéciales (arbres, mineraux....) var isSpecial = false; var special = ''; //Récupéation du player var Player = $('select[name=__idCurPlayer] option:selected').text(); //Tableau à parser var children = document.getElementsByClassName('centerareaview') [0].childNodes; var retour = ''; var tmp; var element; var isBuilding = ''; var isPNJ = ''; var elem; //Parcour de la liste des cases de la vue for (i = 0; i < children.length; i++) { valX = ''; valY = ''; valTerrain = ''; valBuilding = ''; valURL = ''; isBuilding = ''; isPNJ = ''; isSpecial = false; special = ''; //On ne s'intéresse qu'a la case de classe "terrainvide" if (children[i].className == 'terrainvide') { var fils = children[i].childNodes; /*Chaque classe terrainvide * a au moins un fils: * - un contenant les coordonnées de la case et le type de terrain * - un contenant le batiement * - un contentant le personage ou le mob * - un pour les autres ressources (cuire, portail,...) */ for (j = 0; j < fils.length; j++) { //Récup du PNJ, on prend l url que l on complete par un chemin absolu if (fils[j].className == 'minimappnj') { valURL = fils[j].style.backgroundImage.replace('../', 'http://www.nacridan.com/').replace('"', '').replace('"', ''); //retour = retour + valURL; isPNJ = 'oui'; //Récup de l'url du bâtiment //Compression du type de batiement } else if (fils[j].className == 'minimapbuilding' || fils[j].className.indexOf('noborder') == - 1) { //valURL = fils[j].style.backgroundImage.replace('../','http://www.nacridan.com/').replace('"','').replace('"',''); //Construtction de la compression //On récupère le chemin d el'image en relatif //On ne conserve que le nom de l'image if (fils[j].className == 'minimapbuilding') { valURL = fils[j].style.backgroundImage; // alert(valURL); debut = valURL.lastIndexOf('/') + 1; //fin = valURL.length - 2; fin = valURL.lastIndexOf('.png') + 4; milieu = fin - debut; valURL = valURL.substr(debut, milieu); //alert(valURL); } else { isSpecial = true; valURL = fils[j].className; //alert(valURL); } //Si ce n'est pas le premier batiment if (iurl.length != 1) { //Si le bâtiement à déjà été rencontré if (iurl.indexOf(valURL) > 0) { //On récupère la numéro de celui-ci valURL = iurl.substr(iurl.indexOf(valURL) - 2, 2); } else { //Sinon, on l'ajoute à la liste des batiements //Et on lui attribu un numéro (sur 2 digits) if (iTer2 < 10) { valURL = '0' + iTer2 + valURL; } else { valURL = iTer2 + valURL; } iurl = iurl + valURL; iTer2 = iTer2 + 1; } //Si c'est le tout premier passage dans la boucle //On ajoute le batiement } else { if (iTer2 < 10) { valURL = '0' + iTer2 + valURL; } else { valURL = iTer2 + valURL; } iurl = valURL; iTer2 = iTer2 + 1; } //alert(valURL + '\n' + iurl); //retour = retour + valURL; isBuilding = 'oui'; //Si la classe est de type noborder //Cette classe contient le terrain } else { if (fils[j].className.indexOf('noborder') > - 1) { valTerrain = fils[j].className.substr(9, fils[j].className.lenght); //Compression du type de terrrain if (terrain.length != 1) { if (terrain.indexOf(valTerrain, 0) > 0) { valTerrain = terrain.substr(terrain.indexOf(valTerrain, 0) - 2, 2); } else { if (iTer < 10) { valTerrain = '0' + iTer + valTerrain; } else { valTerrain = iTer + valTerrain; } terrain = terrain + valTerrain; iTer = iTer + 1; } } else { if (iTer < 10) { valTerrain = '0' + iTer + valTerrain; } else { valTerrain = iTer + valTerrain; } terrain = valTerrain; iTer = iTer + 1; } } //De plus si la classe contient le type onclick, //Elle contient les coord de la case if (fils[j].hasAttribute('onclick') == true) { //Récup des coords tmp = fils[j].getAttributeNode('onclick').nodeValue; debut = tmp.indexOf('_', 0); milieu = tmp.indexOf('_', debut + 1); fin = tmp.indexOf('"', milieu); valX = tmp.substring(debut + 1, milieu); valY = tmp.substring(milieu + 1, fin); } else { //alert ('error \n ' + fils[j].innerHTML); } } } if (isSpecial) { valBuilding = 'OTR'; } else if (isPNJ == 'oui') { valBuilding = 'PNJ'; } else if (isBuilding == 'oui') { //Cas spécial des batiements //Le nom du batiement n'est pas présent au même endroit //On ce sert des coordonnées précèdement récupérées pour trouver le nom du batiement //On compresse ce nom également debut = tmp.indexOf('"', 0); fin = tmp.indexOf('"', debut + 1); tmp = tmp.substring(debut + 1, fin); valBuilding = document.getElementById(tmp).getElementsByClassName('buildingname') [0].innerHTML; if (ibat.length != 1) { if (ibat.indexOf(valBuilding, 0) > 0) { valBuilding = ibat.substr(ibat.indexOf(valBuilding, 0) - 2, 2); } else { if (iTer3 < 10) { valBuilding = '0' + iTer3 + valBuilding; } else { valBuilding = iTer3 + valBuilding; } ibat = ibat + valBuilding; iTer3 = iTer3 + 1; } } else { if (iTer3 < 10) { valBuilding = '0' + iTer3 + valBuilding; } else { valBuilding = iTer3 + valBuilding; } ibat = valBuilding; iTer3 = iTer3 + 1; } } /* * Construction du GET à evoyer au formulaire * Les valeurs de bases sont le type de terrain ainsi que les coord X et Y * la variable submitURL contient l'ensemble des données d'une cellule */ //submitURL = baseURL + baseTerrain + valTerrain + '&' + baseX + valX + '&' + baseY + valY + '&' + basePlayer + Player; submitURL = valTerrain + '|' + valX + '|' + valY; //Si on à un batiment, on l'ajoute if (valBuilding != '') { //submitURL = submitURL + '&' + baseBuilding + valBuilding + '&' + basebURL + valURL; submitURL = submitURL + '|' + valBuilding + '|' + valURL; } //Ajout de la case de vue à la vue totale retour = retour + submitURL + '$'; //retour = retour + ' ' + submitURL + ' '; } } //retour = testbaseURL + testbaseTerrain + retour; retour = testbaseURL + testbaseTerrain + Player + '$' + retour; $.get(retour); //alert(retour);