KI-Andromeda

Améliore l'expérience de Kraland

安装此脚本?
作者推荐脚本

您可能也喜欢KI-Hécate-MinichatPlus

安装此脚本
// ==UserScript==
// @name KI-Andromeda
// @description Améliore l'expérience de Kraland
// @match http://www.kraland.org/*
// @version 1.3.3
// @author Gyeongeun
// @namespace http://www.kraland.org/main.php?p=5_2_0_306385_1
// @grant none
// @license CC-BY-SA-4.0
// ==/UserScript==

//+------------ Options par défaut --------------+

var tailleDesAvatarsForum = 110;
var tailleDesAvatarsJeu = 40;
var tailleDesAvatarsPopup= 110;
//Taille en pixel (défaut: 110 forum ; 50 jeu)

var tailleMaxImgRapportPrivé = 99;
var tailleMaxImgForum = 100;
var tailleMaxImgEvenement = 100;
// Taille en % du cadre (défaut: 100)

var PoliceDeCaracteres = "" ;
// mettez la police de votre choix entre les guillemets. (Par défaut : "")

var pageAccueil = [2,1,0];
// 2=Cybermonde, 1=Forum, 0=Bienvenue
// Mettez les cadres dans l'ordre de vos préférences

var Goupil=false;
// true pour désactiver les smileys Poule, false sinon

var maxCache=5;
// nombre de posts en cours de rédaction sauvegardé

//+------------ Paramétrages du Script --------------+

//--- Variables Globales
var kdocument=document;
var theUrl=window.location.href;

var aparam={
    avaFora: tailleDesAvatarsForum,
    avaIg: tailleDesAvatarsJeu,
    avaOrder: tailleDesAvatarsPopup,
    imgRP: tailleMaxImgRapportPrivé,
    imgFora: tailleMaxImgForum,
    imgRE: tailleMaxImgEvenement,
    fontFam: PoliceDeCaracteres,
    colorL: -1,
    tCache: maxCache,
    goupil: Goupil,
    motd: pageAccueil,
    erlite: true,
    avaItem: 32,
}

var savedTxtData=[];

//--- Initialisation
Euryphaessa();
function Euryphaessa(){
    //--- redirection vers le site sans frame
    if(window.location.href=="http://www.kraland.org/" || window.location.href.startsWith("http://kraland.org/")){
        location.replace("http://www.kraland.org/main.php");
    }

    //--- accès aux paramètres sauvegardés
    if(localStorage.aparam){
		aparam=JSON.parse(localStorage.aparam);
    }

    if(localStorage.std){
        savedTxtData=JSON.parse(localStorage.std);
    }

    //--- accès aux options
    var nowUrl=window.location.href.toString();
    var opId= new RegExp("p=8_4");
    if(opId.test(nowUrl)){
        AndroButton();
    }

    gImgRsz();
    AvatarRsz();
    ezSpoiler();
    colorless();
    if(aparam.goupil){goupil();}
    Hestia();
    ERLite();
    setArea();
}

//+------------ Réarrangement Page d'accueil --------------+
function Hestia(){
    var triptyque=kdocument.querySelectorAll('#central-text .bx-left');
    if(triptyque.length>0){
        var centralText=kdocument.getElementById('central-text');
        centralText.innerHTML="";
        var order=aparam.motd;
        var newOrder=[3];
        for(let i=0;i<order.length;i++){
            if(order[i]!=-1){
                var j=order[i];
                newOrder[i]=kdocument.createElement('div');
                newOrder[i].classList.add("bx-left");
                newOrder[i].innerHTML=triptyque[j].innerHTML;
            }else{
                newOrder[i]=null;
            }
            if(newOrder[i]!=null){centralText.appendChild(newOrder[i]);}
        }
    }
}

//+------------ Taille maximum des images --------------+
function gImgRsz(){
    var impc=aparam.imgFora;
    var css=".rimg > img{max-width: 100% !important;} .limg > img{max-width: 100% !important;}";
    if(theUrl.search("4_4")==34){
        impc=aparam.imgRE;
        css+="td.ev_normal img{max-width: "+impc+"%;}";
        css+="td.ev_normal {word-break: break-word;}";
    }else{
        css+= "td.forum-message img{max-width: "+impc+"%;} ";
        css+= "td.forum-message {word-break: break-word;}";
    }
    css+=".rimg{max-width: "+impc+"%;}.limg{max-width: "+impc+"%;} ";
    css+="#report img{max-width: "+aparam.imgRP+"%;} ";
    css+="#report .forum tr{word-break: break-word;}";
    css+=".op img{max-width: "+aparam.imgRP+"%;} ";
    css+="div {font-family: "+aparam.fontFam+";}";


    var style = kdocument.createElement("style");
    style.id="andromedaStyle";
    style.type = "text/css";
    style.appendChild(kdocument.createTextNode(css));
    kdocument.head.appendChild(style);
}

//+------------ Redimensionnement des avatars --------------+
function AvatarRsz(){
    var theUrl=window.location.href;

    if(aparam.avaFora!=null){
        var avatarsForum = kdocument.querySelectorAll(".forum-cartouche img[alt=avatar]");
        for(let i=0; i<avatarsForum.length; i++) {
            avatarsForum[i].width = aparam.avaFora;
            avatarsForum[i].height = aparam.avaFora;
        }
    }


    if(aparam.avaItem!=null && aparam.avaItem>32){
    var avatarsItem = kdocument.querySelectorAll(".tdbc img");
    for(let j=0; j<avatarsItem.length; j++) {
        if(!avatarsItem[j].src.includes("http://img.kraland.org/2/cyb")) {
            avatarsItem[j].width = aparam.avaItem;
            avatarsItem[j].height = aparam.avaItem;
        }
    }}else

        if(aparam.avaIg!=null && kdocument.querySelector(".on a")!=null && kdocument.querySelector(".on a").innerHTML=="Se Déplacer"){
    var avatarsJeu = kdocument.querySelectorAll(".left-frame .tdbc img");
    for(let j=0; j<avatarsJeu.length; j++) {
        if(!avatarsJeu[j].src.includes("http://img.kraland.org/2/cyb")) {
            avatarsJeu[j].width = aparam.avaIg;
            avatarsJeu[j].height = aparam.avaIg;
        }
    }}

    if(aparam.avaOrder!=null && theUrl.search("3000")==36){
        var avatarOrderPopup=kdocument.querySelector("div.oc div.opc div.op div.rimg img");
        avatarOrderPopup.width = aparam.avaOrder;
        avatarOrderPopup.height = aparam.avaOrder;
    }

}


//+------------ Assassin de la Poulice --------------+
function goupil(){
    var icones = ["6A","6B","6C","6D","6E","6F","70","71","72","73","74","75","76","77","78","79","7A","7B","7C","7D","7E"];
    var icones2 = ["0F","12","08","19","3B","3C","3A","3D","29","31","10","37","5D","18","23","36","5F","5B","64","2D","27"];
    var url = ["http://img.kraland.org/s/","http://img.kraland.org/s2/"];

    kdocument.querySelectorAll('img[src*="http://img.kraland.org/s/"]').forEach(noPoulet);
    kdocument.querySelectorAll('img[src*="http://img.kraland.org/s2/"]').forEach(noPoulet);

    function noPoulet(item){
        for(var i=0;i<icones.length;i++){
      if(item.src.endsWith(icones[i]+".gif")){
          item.src=item.src.replace(icones[i], icones2[i]);
          item.setAttribute('alt', ' ');
      }}
    }

    var toolframe=kdocument.getElementsByName('tools_frame')[0];
    if(toolframe!=null){
        var tfDoc=toolframe.contentDocument;
        if(tfDoc.querySelector('a[href="post.php?p0=2&p1=6&p2="]')!=null){
            tfDoc.querySelector('a[href="post.php?p0=2&p1=6&p2="]').remove();
        }else if(tfDoc.querySelector('a[href="post.php?p0=2&p1=6&p2=1"]')!=null){
            tfDoc.querySelector('a[href="post.php?p0=2&p1=6&p2=1"]').remove();
        }
    }
}


//+------------ Décoloration des grands messages --------------+
function colorless(){
    if(aparam.colorL>=0){
    var fontc=kdocument.getElementsByTagName('FONT');
    for(let i=0;i<fontc.length;i++){
        if(fontc[i].innerHTML.length>aparam.colorL){
            fontc[i].removeAttribute("color");
        }
    }
}}


//+------------ Ergonomie des Spoiler --------------+
function ezSpoiler(){
    var allspoiler=kdocument.querySelectorAll(".pre-spoiler");
    for(let i=0;i<allspoiler.length;i++){
        allspoiler[i].addEventListener("click",displayB,false);
    }
}

function displayB(){
    this.parentNode.querySelector(".spoiler").style.display="";
    this.removeEventListener("click", displayB);
    this.addEventListener("click",displayN,false);
}

function displayN(){
    this.parentNode.querySelector(".spoiler").style.display="none";
    this.removeEventListener("click",displayN);
    this.addEventListener("click",displayB,false);
}

//+------------ Ergonomie du Rapport d'Evènement --------------+
function ERLite(){
    if(kdocument.querySelector('.ev_normal')!=null){
        var centralText=kdocument.getElementById('central-text');
        var ERHelp=centralText.querySelector('.forum-c2');
        ERHelp.parentNode.removeChild(ERHelp);
        if(aparam.erlite==true){
        var selectEv=centralText.getElementsByClassName('forum-top')[1];
        selectEv.style.display="none";
        centralText.getElementsByClassName('forum-top')[0].addEventListener("click",function(){
            if(selectEv.style.display=="none"){selectEv.style.display="block";}else{selectEv.style.display="none";}
        },false);
    }}
}

//+------------ Textearea cache --------------+
function setArea(){
    var amsga=kdocument.getElementsByName('message');
    var hautforum=kdocument.getElementsByClassName('forum-top')[0];
    if(hautforum!=null){
        sortTextData();
        let msgts=kdocument.getElementsByClassName('forum-message')[0].getElementsByTagName('textarea')[0];
        msgts.addEventListener("keyup",savetxt,false);
        var selecTxt=kdocument.createElement("SELECT");
        selecTxt.id="slc";
        for(let i=0;i<savedTxtData.length;i++){
            let opSelecTxt=kdocument.createElement("OPTION");
            opSelecTxt.value=i;
            opSelecTxt.innerHTML=i;
            selecTxt.appendChild(opSelecTxt);
        }
        hautforum.appendChild(selecTxt);
        selecTxt.style.cssFloat="right";
        selecTxt.addEventListener("change",retrieveTxt,false);
    }else if(amsga[0]!=null && window.location.href.search("order")==23){
        sortTextData();
        let inputp12=kdocument.getElementsByName('p12');
        for(let i=0; i<amsga.length;i++){
            amsga[i].addEventListener("keyup",savetxt,false);
            inputp12[i].parentNode.appendChild(kdocument.createTextNode(" "));
            let selectxt=kdocument.createElement("SELECT");
            selectxt.id="slc"+i;
            for(let i=0;i<savedTxtData.length;i++){
                let opSelecTxt=kdocument.createElement("OPTION");
                opSelecTxt.value=i;
                opSelecTxt.innerHTML=i;
                selectxt.appendChild(opSelecTxt);
            }
            inputp12[i].parentNode.appendChild(selectxt);
            selectxt.addEventListener("change",function(){retrieveTxtO(i);},false);
        }
    }
}

function sortTextData(){
    savedTxtData.unshift('');
    if(savedTxtData.length>aparam.tCache){
        savedTxtData.pop();
    }
}

function savetxt(){
    savedTxtData[0]=this.value;
    localStorage.std=JSON.stringify(savedTxtData);
}

function retrieveTxt(){
    var msgts=kdocument.getElementsByClassName('forum-message')[0].getElementsByTagName('textarea')[0];
    var nbv=parseInt(this.value);
    let oneTxt=savedTxtData[nbv];
    msgts.value=oneTxt;
}

function retrieveTxtO(i){
    let id="slc"+i;
    var nbv=parseInt(kdocument.getElementById(id).value);
    let oneTxt=savedTxtData[nbv];
    kdocument.getElementsByName('message')[i].value=oneTxt;

}

//+------------ GUI pour paramétrer Andromeda --------------+

//--- Affichage de la GUI
function AndroMenu(){
    kdocument.querySelector('.on').classList.remove('on');
    kdocument.getElementById('aMenu').classList.add('on');
    var cContent=kdocument.getElementById('central-text');
    cContent.innerHTML=AndromedaBoard();
    opMenuSetValue();

    var lsb=kdocument.querySelectorAll('.localSave');
    //var gsb=kdocument.querySelectorAll('.globalSave');
    for(let i=0;i<lsb.length;i++){
        lsb[i].addEventListener('click',opSetAndromeda,false);
        //lsb[i].addEventListener('change',opSetAndromeda,false);
    }
}

function AndromedaBoard(){
    var aForm=`<form id="gForm">
               <h2>Site</h2>
               <div id="divers" class="rbx">
                    <p><label for="cadre1">Page d'accueil :</label>
                    <select id="cadre1" class="fdm">
                        <option value="2">Cybermonde</option>
        	            <option value="1">Forum</option>
        	            <option value="0">Bienvenue</option>
                        <option value="-1">Rien</option>
                     </select>
                     <select id="cadre2" class="fdm">
     	                <option value="1">Forum</option>
                        <option value="2">Cybermonde</option>
        	            <option value="0">Bienvenue</option>
                        <option value="-1">Rien</option>
                     </select>
                     <select id="cadre3" class="fdm">
                        <option value="-1">Rien</option>
                        <option value="0">Bienvenue</option>
                        <option value="2">Cybermonde</option>
        	            <option value="1">Forum</option>
                     </select>
                     </p>
               <table class="t"><tbody>
                    <tr>
                    <td style="text-align:justify;"><label><input id="input10" type="checkbox" class="styled" checked>Cliquer pour afficher le formulaire des Événement.</label></td>
                    </tr>
                    <tr>
                    <td style="text-align:justify;"><label><input id="input11" type="checkbox" class="styled" disabled="disabled" checked>Supprimer l'aide des Événement.</label></td>
                    </tr>
               </tbody></table>
               <p><!--<input class="globalSave" type="button" value="Enregistrer">-->
                    <input class="localSave" type="button" value="Sauvegarder"></p>
               </div>
               <p>Changez l'ordre des cadres de la page d'accueil selon vos préférences. Mettez "rien" pour supprimer.</p><br>
               <div class="hr"><hr></div>
               <h2>Forum et Messages</h2>
               <div id="fetm" class="rbx">
               <p><label for="input16">Police de caractères : </label><input id="input16" type="text" placeholder="Entrer le nom."></p>
               <p><label for="input12">Textearea Cache : </label><input id="input12" type="text"></p>
               <p><label for="input13">Colorless : </label><input id="input13" type="text"></p>
               <table class="t"><tbody>
                    <tr>
                    <td style="text-align:justify;"><label><input id="input7" type="checkbox" class="styled">Goupil</label></td>
                    </tr>
                    <tr>
                    <td style="text-align:justify;"><label><input id="input9" type="checkbox" class="styled" disabled="disabled" checked>Easy Spoiler</label></td>
                    </tr>
               </tbody></table>
               <p><!--<input class="globalSave" type="button" value="Enregistrer">-->
               <input class="localSave" type="button" value="Sauvegarder"></p>
               </div>
               <p><b>Le changement de police s'opère après actualisation de la page.</b></p><br>
               <p><b>Textearea Cache</b> sauvegarde automatiquement vos messages en cours de rédaction.
                     Entrez le nombre de message que vous souhaitez garder en mémoire. Maximum 20.</p><br>
               <p><b>Colorless</b> désactive la couleur des messages trop grand. Entrez le nombre de caractères.
                                     Mettez -1 ou rien pour désactiver la fonction.</p><br>
               <p><b>Goupil</b> remplace les smileys Poule par des normaux. Assassin de la poulice !</p><br>
               <p><b>Easy spoiler</b> vous permet de révéler le contenu en cliquant n'importe où sur le bandeau.</p>
               <div class="hr"><hr></div>
               <h2>Taille des avatars</h2>
               <div id="tailleAvatar" class="rbx">
                    <p><label for="input1">Forum : </label><input type="text" id="input1"><br></p>
                    <p><label for="input2">En jeu : </label><input type="text" id="input2"><br></p>
                    <p><label for="input3">Page Ordre : </label><input type="text" id="input3"><br></p>
                    <p><!--<input class="globalSave" type="button" value="Enregistrer">-->
                    <input class="localSave" type="button" value="Sauvegarder"></p>
               </div>
               <p>Vous pouvez ajuster la taille des avatars sur le site. Taille en pixels.</p>
               <div class="hr"><hr></div>
               <h2>Taille des images</h2>
               <div id="tailleImages" class="rbx">
                    <p><label for="input4">Rapport privé : </label><input type="text" id="input4"><br></p>
                    <p><label for="input5">Forum : </label><input type="text" id="input5"><br></p>
                    <p><label for="input6">Rappot d'évènements : </label><input type="text" id="input6"><br></p>
                    <p><!--<input class="globalSave" type="button" value="Enregistrer">-->
                    <input class="localSave" type="button" value="Sauvegarder"></p>
               </div>
               <p>Vous pouvez régler la taille maximum des images sur le site. Taille en % du cadre.</p>
               <div class="hr"><hr></div>
               <h2>Illustrations</h2>
               <div id="tailleIllustr" class="rbx">
                    <p><label for="input14">Objets : </label><input type="text" id="input14"><br></p>
                    <p><label for="input15">Bâtiments : </label><input type="text" id="input15"><br></p>
                    <p><!--<input class="globalSave" type="button" value="Enregistrer">-->
                    <input class="localSave" type="button" value="Sauvegarder"></p>
               </div>
               <p>Vous pouvez ajuster la taille des illustrations. Taille en pixels.</p>
               <div class="hr"><hr></div>
               </form>`;
    return aForm;
}

//--- création du bouton dans les options du profil
function AndroButton(){
    var mLeft=kdocument.getElementById('left');

    var nsMenuB=kdocument.createElement('LI');
    nsMenuB.id="aMenu";
    var fakeLink=kdocument.createElement('A');
    fakeLink.href='#';
    fakeLink.innerHTML="Andromeda Script";

    var submenu= mLeft.querySelector('.submenu UL');
    nsMenuB.appendChild(fakeLink);
    submenu.appendChild(nsMenuB);

    nsMenuB.addEventListener('click',AndroMenu,false);
}

function opSetAndromeda(){
    aparam.avaFora = kdocument.getElementById('input1').value;
    aparam.avaIg = kdocument.getElementById('input2').value;
    aparam.avaOrder = kdocument.getElementById('input3').value;
    aparam.avaItem = kdocument.getElementById('input14').value;
    aparam.imgRP = kdocument.getElementById('input4').value;
    aparam.imgFora = kdocument.getElementById('input5').value;
    aparam.imgRE = kdocument.getElementById('input6').value;
    aparam.fontFam = kdocument.getElementById('input16').value;
    let maxTxtCache=parseInt(kdocument.getElementById('input12').value);
    if(maxTxtCache>20){maxTxtCache=20}
    aparam.tCache = maxTxtCache+1;
    aparam.colorL = kdocument.getElementById('input13').value;
    aparam.goupil = kdocument.getElementById('input7').checked;
    aparam.erlite= kdocument.getElementById('input10').checked;

    var motd=[3];
    motd[0]=kdocument.getElementById('cadre1').value;
    motd[1]=kdocument.getElementById('cadre2').value;
    motd[2]=kdocument.getElementById('cadre3').value;
    aparam.motd=motd;

    //--- sauvegarder
    localStorage.aparam=JSON.stringify(aparam);

    //---réinitialiser txtarea
    localStorage.removeItem("std");
}

function opMenuSetValue(){
    kdocument.getElementById('input1').value=aparam.avaFora;
    kdocument.getElementById('input2').value=aparam.avaIg;
    kdocument.getElementById('input3').value=aparam.avaOrder;
    kdocument.getElementById('input14').value=aparam.avaItem;
    kdocument.getElementById('input4').value=aparam.imgRP;
    kdocument.getElementById('input5').value=aparam.imgFora;
    kdocument.getElementById('input6').value=aparam.imgRE;
    kdocument.getElementById('input16').value=aparam.fontFam;
    kdocument.getElementById('input12').value=aparam.tCache-1;
    kdocument.getElementById('input13').value=aparam.colorL;
    kdocument.getElementById('input7').checked=aparam.goupil;
    kdocument.getElementById('input10').checked=aparam.erlite;

    var motd=aparam.motd;
    kdocument.getElementById('cadre1').value= motd[0];
    kdocument.getElementById('cadre2').value= motd[1];
    kdocument.getElementById('cadre3').value= motd[2];
}