zogre / getCDM

// ==UserScript==
// @name        getCDM
// @namespace   https://www.carto-nacridan.dynamic-dns.net/
// @description recuperation des cdm via la page evenement et des lvl, etat via la vue
// @copyright 2015, Tass
// @license MIT
// @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/*
// @exclude http://nacridan.raistlin.fr/conquest/profile.php?id=*
// @exclude http://http://nacridan.raistlin.fr/test/nacridan2*
// @require https://code.jquery.com/jquery-2.1.4.min.js
// @version     1.6.6
// @grant GM_xmlhttpRequest
// @oujs:author zogre
// @downloadURL https://openuserjs.org/install/zogre/getCDM.user.js
// ==/UserScript==
/*
1.6.6 Update all url domain
1.6.5 Mise à jour script pour prendre en compte nouvelle methode GM/Jquery et dns
1.6.3 chgmt resolv dns youdontcare pour planisphere
1.6.2 nom de domaine nacridan.com
1.6.1 serveur de raistlin
1.6 : recuperation auto (clic tuile) et post auto (clic anywhere)  des cdms
1.5.8.1 petit message de prise en compte cdm
1.5.8 : refonte post etat, nom et niveau
1.5.7 : mise à jour pour V0 refonte Gestion CDM post and Get
1.5.6.1 : correction de la recuperation des cdm sur page evenement
1.5.6 : modification pour gestion du getCDM depuis un batiment(a faire evoluer encore)
1.5.5 : ajout du menu getCDM : Gestion CDM et MAX
1.5.4 : ajout du menu, liens planisphere, postcdm d'une cdm fraiche
1.5.3 : positionnement de la meta: @exclude ...profile.php?id=*
1.5.2 : exclusion des feu follets, kradjeck, dorane, etc
*/

var $;
var Globals;
var docClick;
var save = '';
var lieu = '';

// Add jQuery
    (function(){
        if (typeof unsafeWindow.jQuery == 'undefined') {
            var GM_Head = document.getElementsByTagName('head')[0] || document.documentElement,
                GM_JQ = document.createElement('script');

            GM_JQ.src = 'https://code.jquery.com/jquery-2.1.4.min.js';
            GM_JQ.type = 'text/javascript';
            GM_JQ.async = true;

            GM_Head.insertBefore(GM_JQ, GM_Head.firstChild);
        }
        GM_wait();
    })();

// Check if jQuery's loaded
    function GM_wait() {
        if (typeof unsafeWindow.jQuery == 'undefined') {
            window.setTimeout(GM_wait, 100);
        } else {
            $ = unsafeWindow.jQuery.noConflict(true);
            letsJQuery();
        }
    }

// All your GM code must be inside this function
    function letsJQuery() {
        //alert($); // check if the dollar (jquery) function works
       // alert($().jquery); // check jQuery version
        Globals = {
            init: function () {
                var menu = $('.menuright');
                var dt = $('<dt>Nmap</dt>');
                menu.append(dt);
                var dd = $('<dd id=\'vuemenu\'/>');
                menu.append(dd);
                dd.hide();
                var ul = $('<ul/>');
                dd.append(ul);
                var li = $('<li/>');
                ul.append(li);
                var sp = $('<a/>');
                li.append(sp);
                sp.append('Planisphere');
                sp.attr('href', 'https://www.carto-nacridan.dynamic-dns.net/');
                sp.attr('target', '_blank');
                li = $('<li/>');
                ul.append(li);
                sp = $('<a/>');
                li.append(sp);
                sp.append('Post CDM');
                sp.click(function () {
                    postCDM();
                });
                li = $('<li/>');
                ul.append(li);
                sp = $('<a/>');
                li.append(sp);
                sp.append('Get CDM');
                sp.click(function () {
                    getCDM();
                });
                dt.click(function () {
                    $('#vuemenu').show();
                });
                //console.log(this.cds);
            }
        }


if(document.getElementsByClassName('centerareaview')[0]){
    save = document.getElementsByClassName('centerareaview')[0].innerHTML;
    lieu = 'OUT';
    // 1.5.6.1 zogre
}else if(document.getElementsByClassName('insidebuildingleft')[0]){
    save = document.getElementsByClassName('insidebuildingleft')[0].innerHTML;
    lieu = 'IN';
}

function getCDM() {
    //  alert('Not Implemented yet');
    var pid = window.prompt('Quel id ?:', '');
    //alert('lu->' + pid);
    getCDMServer(pid);
}
function getCDMServer(pluid) {
    //alert('coucou=>'+pluid);
    GM_xmlhttpRequest({
        method: 'POST',
        //url: 'http://nasblabla.youdontcare.com/nacridan/getCDM.php',
        url: 'https://www.carto-nacridan.dynamic-dns.net/getCDM.php',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded'
        },
        //data: JSON.stringify(data),
        data: "pid=" + pluid,
        //data: "username=johndoe&password=xyz123",
        onload: function (response) {
            console.error(response.responseText);
            //var save = document.getElementsByClassName('centerareaview')[0].innerHTML;
            //alert(save);
            if (lieu == 'OUT'){
                document.getElementsByClassName('centerareaview')[0].innerHTML = +' ' + response.responseText + ' ' + save;
            }else if (lieu == 'IN'){
                document.getElementsByClassName('insidebuildingleft')[0].innerHTML = +' ' + response.responseText + ' ' + save;
            }
        },
        onerror: function (e) {
               console.error ('=> error ', e);
           },
           onabort: function (e) {
               console.error ('=> abort ', e);
           },
           ontimeout: function (e) {
               console.error ('=> timeout ', e);
           }
    });
}

// fin function call getCDMServer
function postCDMServer(pid,pname,pvie,ptcar1,pvcar1,ptcar2,pvcar2) {
    //alert("id="+pid+"&name="+pname+"&vie="+pvie+"&tcar1="+ptcar1+"&tcar2="+ptcar2+"&vcar1="+pvcar1+"&vcar2="+pvcar2);
    GM_xmlhttpRequest({
        method: 'POST',
        //url: 'http://nasblabla.youdontcare.com/nacridan/postCDM.php',
        url: 'https://www.carto-nacridan.dynamic-dns.net/postCDM.php',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded'
        },
        //data: JSON.stringify(data),
        data: "id="+pid+"&name="+pname+"&vie="+pvie+"&tcar1="+ptcar1+"&vcar1="+pvcar1+"&vcar2="+pvcar2+"&tcar2="+ptcar2,
        //data: "username=johndoe&password=xyz123",
        onload: function (response) {
            //window.alert(response.responseText);
           // document.getElementById('msgCdm').value = 'Merci pour les infos';
           // msgcdm.value = 'Merci pour les infos !';
        },
        onerror: function (error) {
          //  document.getElementById('msgCdm').value = 'Oups ! On a un problème.';
            //console.log(error);
            //alert(error);
        }
    });
}
// fin function call getCDMServer
function postLvlServer(pid,pname,petat,plvl) {
    //alert("id="+pid+"&name="+pname+"&vie="+pvie+"&tcar1="+ptcar1+"&tcar2="+ptcar2+"&vcar1="+pvcar1+"&vcar2="+pvcar2);
    GM_xmlhttpRequest({
        method: 'POST',
        url: 'https://www.carto-nacridan.dynamic-dns.net/postLvl.php',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded'
        },
        //data: JSON.stringify(data),
        data: "id="+pid+"&name="+pname+"&etat="+petat+"&lvl="+plvl,
        //data: "username=johndoe&password=xyz123",
        onload: function (response) {
            //window.alert(response.responseText);
        },
        onerror: function (error) {
            //console.log(error);
            //alert(error);
        }
    });
}
function postCDM() {
    //alert('postcdm');
    var myDiv = document.getElementsByClassName('mainmsg centerareawidthmsg');
    //alert(myDiv[0]);
    var valeur;
    var chaineRetour;
    //var adresse = 'https://docs.google.com/forms/d/1DG_9Yl4G0fFRw_Lgi8UPDiL_RC93rH9UyyJYAyLd1lw/formResponse?';
    //var champ = 'entry.398840644=';
    if (myDiv[0] != null) {
        var texte = myDiv[0].innerHTML;
        var tab1 = texte.split('<br>');
        var posdebut = 0;
        var chaine;
        var nomPerso;
        var idPerso;
        var carac;
        var vie;
    var carac1Type;
    var carac2Type;
    var carac1Value;
    var carac2Value;
        for (var m = 1; m < tab1.length; m++) {
            chaine = tab1[m];
            //alert(chaine);
            if (chaine.indexOf('Vous estimez') > - 1)
            {
                // on récupère l'id du perso et son nom
                //Vous estimez les caractéristiques de Nain (9374):   33
                /*
                nomPerso = chaine.substring(41, chaine.indexOf('('));
                idPerso = chaine.substring(chaine.indexOf('(') + 1, chaine.indexOf(')'));
                chaineRetour = idPerso + ':' + nomPerso + '|';
                m++;
                while (chaine != '') {
                    chaine = tab1[m];
                    carac = chaine.substring(0, chaine.indexOf(':') - 1);
                    valeur = chaine.substring(chaine.lastIndexOf(':') + 2, chaine.length);
                    chaineRetour = chaineRetour + carac + ':' + valeur + '|';
                    m++;
                }
                chaineRetour = adresse + champ + chaineRetour;
                //alert(chaineRetour);
                $.get(chaineRetour);*/
                nomPerso = chaine.substring(37, chaine.indexOf('('));
            idPerso = chaine.substring(chaine.indexOf('(') + 1, chaine.indexOf(')'));
            //chaineRetour = idPerso + ':' + nomPerso + '|';
            // DEBUT MODI
            chaine = tab1[m+1];
            // vie = chaine.substring(0, chaine.indexOf(':') - 1);
            vie = chaine.substring(chaine.lastIndexOf(':') + 2, chaine.length);
            chaine = tab1[m+2];
            carac1Type = chaine.substring(0, chaine.indexOf(':') - 1);
            carac1Value = chaine.substring(chaine.lastIndexOf(':') + 2, chaine.length);
            chaine = tab1[m+3];
            carac2Type = chaine.substring(0, chaine.indexOf(':') - 1);
            carac2Value = chaine.substring(chaine.lastIndexOf(':') + 2, chaine.length);
            //alert(idPerso+';'+nomPerso+';'+  vie+';'+ carac1Type +'='+carac1Value+ ';'+carac2Type +'='+carac2Value);
            postCDMServer(idPerso,nomPerso,vie,carac1Type,carac1Value,carac2Type,carac2Value);
              myDiv[0].innerHTML=texte+"<br><font color=red>Merci pour les infos</font><br>";
            }
        }
    }
}
// fin fonction postCDM
// code toujours actif pour CDM sur PAGE EVENEMENT SAVOIR FAIRE
var myDiv = document.getElementsByClassName('histomsg');
//alert('OUT'+myDiv[0].innerHTML);
var valeur;
var chaineRetour;
//var adresse = 'https://docs.google.com/forms/d/1DG_9Yl4G0fFRw_Lgi8UPDiL_RC93rH9UyyJYAyLd1lw/formResponse?';
//var champ = 'entry.398840644=';
if (myDiv[0] != null) {
    //alert('IN'+myDiv[0].innerHTML);
    var texte = myDiv[0].innerHTML;
    var tab1 = texte.split('<br>');
    var posdebut = 0;
    var chaine;
    var nomPerso;
    var idPerso;
    var carac;
    var vie;
    var carac1Type;
    var carac2Type;
    var carac1Value;
    var carac2Value;
    for (var m = 1; m < tab1.length; m++) {
        chaine = tab1[m];
        if (chaine.indexOf('Vous avez estimé') > - 1)
        {
            // on récupère l'id du perso et son nom
            //Vous estimez les caractéristiques de Nain (9374):   33
            nomPerso = chaine.substring(41, chaine.indexOf('('));
            idPerso = chaine.substring(chaine.indexOf('(') + 1, chaine.indexOf(')'));
            //chaineRetour = idPerso + ':' + nomPerso + '|';
            // DEBUT MODI
            chaine = tab1[m+1];
            // vie = chaine.substring(0, chaine.indexOf(':') - 1);
            vie = chaine.substring(chaine.lastIndexOf(':') + 2, chaine.length);
            chaine = tab1[m+2];
            carac1Type = chaine.substring(0, chaine.indexOf(':') - 1);
            carac1Value = chaine.substring(chaine.lastIndexOf(':') + 2, chaine.length);
            chaine = tab1[m+3];
            carac2Type = chaine.substring(0, chaine.indexOf(':') - 1);
            carac2Value = chaine.substring(chaine.lastIndexOf(':') + 2, chaine.length);
            //alert(idPerso+';'+nomPerso+';'+  vie+';'+ carac1Type +'='+carac1Value+ ';'+carac2Type +'='+carac2Value);
            postCDMServer(idPerso,nomPerso,vie,carac1Type,carac1Value,carac2Type,carac2Value);
            myDiv[0].innerHTML=texte+"<br><font color=red>Merci pour les infos</font><br>";
            // FIN MODIF
            /*  m++;
      while (chaine != '') {
        chaine = tab1[m];
        carac = chaine.substring(0, chaine.indexOf(':') - 1);
        valeur = chaine.substring(chaine.lastIndexOf(':') + 2, chaine.length);
        chaineRetour = chaineRetour + carac + ':' + valeur + '|';
        m++;
      }
      chaineRetour = adresse + champ + chaineRetour;
       // alert(chaineRetour);
      $.get(chaineRetour);*/
        }
    }
}
// code toujours actif pour NIVEAU DES MONSTRES DANS LA VUE
myDiv = document.getElementsByClassName('eventbtnext');
if (myDiv[0] == null) {
    var node = document.querySelectorAll('.stylenpc');
    //alert(node[0].parentNode.textContent);
    var nodeParent;
    var niveau;
    var etat;
    for (var i = 0; i < node.length; i++)
    {
        chaineRetour = '';
        nodeParent = node[i].parentNode;
        chaine = nodeParent.textContent;
        nomPerso = chaine.substring(1, chaine.indexOf('(') - 1);
        //alert(nomPerso);
        if (nomPerso == 'Kradjeck ferreux' || nomPerso == 'Tortue Géante' || nomPerso == 'Feu Fol' || nomPerso == 'Nain' || nomPerso == 'Dorane' || nomPerso == 'Humain') {
            continue;
        }
        idPerso = chaine.substring(chaine.indexOf('(') + 6, chaine.indexOf(')'));
        // ALERT
        //alert(idPerso + nomPerso);
        // ALERT
        nodeParent = nodeParent.parentNode;
        niveau = nodeParent.getElementsByTagName('td') [0].textContent;
        niveau = niveau.substring(niveau.indexOf('.') + 2, niveau.length);
        etat = chaine.substring(chaine.indexOf(')') + 1, chaine.length);
        //chaineRetour = idPerso + ':' + nomPerso + '|niveau:' + niveau + '|';
       // if (etat.length > 5)
        //{
        //    chaineRetour = chaineRetour + 'etat:' + etat
        //}
        //chaineRetour = adresse + champ + chaineRetour;
        //alert(chaineRetour);
        postLvlServer(idPerso,nomPerso,etat,niveau);
        //$.get(chaineRetour);
    }
}
function multilineStr(dummyFunc) {
    var str = dummyFunc.toString();
    str = str.replace(/^[^\/]+\/\*!?/, '') // Strip function () { /*!
    .replace(/\s*\*\/\s*\}\s*$/, '') // Strip */ }
    .replace(/\/\/.+$/gm, '') // Double-slash comments wreck CSS. Strip them.
    ;
    return str;
}

  docClick=function() {
  //do something
//alert(current_tile);
var i;
var j;
var tmp;
var tmp2;
//var tmp3;
//var children = document.getElementsByClassName('centerareaview') [0].childNodes;
//var children = document.getElementsByClassName('bottomarea') [0].childNodes;
var children = document.getElementsByClassName('bottomarea') [0];
var toto = children.innerHTML;
//if(toto.indexOf('display')>-1){
 // alert('display inside');
 // alert(toto);
//}
//var cNodes = children.childNodes;
    var cNodes = children.getElementsByTagName('div');
var lAttr;
for (i = 0; i < cNodes.length; i++)
{
    tmp2 = tmp2 + '+++' + cNodes[i].textContent; // ok
    //alert(tmp2);
    if(cNodes[i].hasAttributes()){
       // alert('ici');
        if(cNodes[i].attributes.length > 2){
            for(j = 0; j < cNodes[i].attributes.length; j++){
                if(cNodes[i].attributes[j].value.indexOf('block') > -1){
                    //alert(cNodes[i].textContent);
                    var d = cNodes[i].textContent.indexOf('id : ');
                    // les PJ ne contiennent pas le : apres le id donc on filtre rapide comme ça...
                    // on vire les portails aussi
                    if(d>-1 && cNodes[i].textContent.indexOf('Portail')==-1){
                        var f = cNodes[i].textContent.indexOf(')');
                        var sid = cNodes[i].textContent.substring(d+5,f);
                        //alert('$'+sid+'$');
                        getCDMServer(sid);
                    }
                }
                //alert('attr diff 1 pour :' + i + '=>' + cNodes[i].attributes.length); // ok
                //alert('name :'+ cNodes[i].attributes[2].name); // ok
                //alert('value :'+ cNodes[i].attributes[2].value); // ok
            }
        }
    }
}
   // alert(tmp2);
// fin partie getcdm auto
//debut partie postcdm auto
postCDM();
// fin partie postcdm auto
}
}


Globals.init();
$(document).click(docClick);