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