// ==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];
}