ScriptUnitHider

Aus Horizon
Wechseln zu: Navigation, Suche

Das Script erzeugt einen Knopf H (für unitHider) in der Planetentickbar, wenn man auf den klickt kommt man zu einem ausgefeilten Eingabefenster in dem man eintragen kann welche Einheiten ausgeblendet werden sollen.

Wie es dann aussieht kann man es sich hier angucken: http://sm-horizon.tk/files/unithider/unithider.screenshot.png

Die Einheiten sind dabei durch ein Pipe-Symbol (auf der deutschen Tastatur per Alt-Gr + <>|, meistens auf der linken Seite) zu trennen.

Es ist möglich entweder für einen konkreten Planeten Einstellungen vorzunehmen (Standardverhalten) oder global für alle Planeten. Ersteres muss für jeden Planet einzeln vorgenommen werden (Planet auswählen, H klicken, einstellen, OK klicken). Zu beachten ist dabei, dass es einzig vom Planetennamen abhängt, wenn er also umbenannt wird, dann müssen die Einstellungen neu getätigt werden.

Die globalen Einstellungen (die also für alle Planeten gelten) können vorgenommen werden, indem man sich in den Menüpunkt "Einstellungen" begibt (wo man den Urlaubsmodus usw. einstellen kann) und dann auf das H klickt.

Man erkennt auch an der Fragestellung des Einstellungsdialoges ob man gerade Planetenspezifische oder globale Einstellungen vornimmt.

Gespeichert wird alles im Browser des Spielers (LocalStorage), vor einem Browserupdate oder Cache löschen also sicherheitshalber mal ein Backup machen.

Hier findet man das Script: http://sm-horizon.tk/files/unithider/horizon.unithider.planets.user.js

Ein Verwendungsbeispiel um die Eisen- sowie Mineralmine, die ersten 3 Jägertypen und die dicken Bodenverteidigungen auszublenden wäre:

metalmine|crystalmine|WADR|LFGT|SFGT|APTU|PTTU

Wer es nicht über den obigen Link installieren will kann es hier herauskopieren:

// ==UserScript==

// @name          Horizon - hide unwanted units per planet or globally

// @namespace     http://www.sm-horizon.tk

// @description   hides unwanted units in browsergame Horizon

// @include       http://*horitest.goetterheimat.de/*
// @include       http://*horiversum.*

// @author        Dr.Ecksack
// @version       2014.05.15.1

// ==/UserScript==

function getPlanetName(){
    var selectbox = document.getElementsByClassName("PlanetSelectBox")[0];
    if (window.location.search.match("account|impressum")) return "allen Planeten";
    return selectbox.item(selectbox.selectedIndex).textContent;
}

function unitHiderInit(){    
    if (!unitHiderButtonBuilder()) return false;
    if (!window.location.search.match("shipyard|building|defence")) return false;
    
    var planet  = getPlanetName();
    var unittables = document.getElementsByClassName('BldTable');
    
    try{
        var tohide = JSON.parse( window.localStorage.getItem('Horizon_unitstohide') );		
	}catch(e){
		console.error("error while JSON.parse: " + e);
	}
    if (tohide == null) return; //if there is nothing defined, we can skip
    if ( (tohide[planet] == undefined || tohide[planet] == "" ) 
            && 
          (tohide["allen Planeten"] == undefined || tohide["allen Planeten"] == "")
        ) return;	
    if (tohide[planet] == undefined || tohide[planet] == "") tohide[planet] = "xxxxxxxxxxxxx";
    if (tohide["allen Planeten"] == undefined || tohide["allen Planeten"] == "") tohide["allen Planeten"] = "xxxxxxxxxxxxx";
    
    for (var i=0; i<unittables.length; i++){
        for (var j=0; j<unittables.item(i).rows.length; j++){
            if (   unittables.item(i).rows.item(j).textContent.match(tohide[planet])
                || unittables.item(i).rows.item(j).textContent.match(tohide["allen Planeten"])
                ){
                unittables.item(i).rows.item(j).hidden = true;
                unittables.item(i).rows.item(j+1).hidden = true;
            }
        }
    }
}
function unitHiderButtonBuilder(){
    var planetsdiv = document.getElementsByClassName('TickPlanetList');
    if (!planetsdiv[0]) return false;	//There is no Planettickbar, we can stop here
    
	var hiderTickEntry = document.createElement('div');
	hiderTickEntry.setAttribute('class', 'TickPlanetEntry');

	var hiderTickImageDiv = document.createElement('div');
	hiderTickImageDiv.className = "TickPlanetDiv";
	hiderTickImageDiv.style.cursor = 'pointer';
    hiderTickImageDiv.onclick = function(){
        var planet  = getPlanetName();
        var tohide;
        var newtext;
        
        //read the data, if there is nothing to read/parse we need to build an empty object
        try{
        	tohide = JSON.parse( window.localStorage.getItem('Horizon_unitstohide') );
            if (tohide == null) tohide["allen Planeten"] = "";
		}catch(e){
			console.error("error with JSON: " + e);
            tohide = JSON.parse( '{ }' );
		}
        tohide[planet] = prompt("Welche Einheiten sollen auf " + planet + " versteckt werden? Groß- und kleinschreibung beachten! Trennung durch | ",tohide[planet]);
        if (tohide[planet] != null){
        	window.localStorage.setItem('Horizon_unitstohide', JSON.stringify(tohide) );
        }
    }
    
    hiderTickImageDiv.appendChild(document.createTextNode('H'));
	hiderTickImageDiv.style.color = "white";
	hiderTickImageDiv.style.fontSize = "15px";
	hiderTickImageDiv.style.fontWeight = "bold";
	hiderTickImageDiv.style.textAlign = "center";

	hiderTickEntry.appendChild(hiderTickImageDiv);

	planetsdiv[0].appendChild(hiderTickEntry);
    
    return true;
}

unitHiderInit();