FAQ Suche Mitglieder Groups Persönlicher Bereich Private Messages
Foren-Übersicht   Registrieren   Anmelden  
Aktuelle Zeit: 23.05.2017, 17:53
Foren-Übersicht

GM Script Entwicklungsanlage

Hier könnt ihr nützliche Informationen zum Spiel sammeln (Tipps für Newbies, Guidelines, Linksammlungen etc.)
Wenn ihr also einen Geistesblitz habt für eure Mitspieler, dann her damit ;)

Moderator: Helferlein

GM Script Entwicklungsanlage

Beitragvon Lord-FaKe » 28.03.2017, 13:35

Hi,

nachdem das Script den Thread vom Liga-Planer gekapert hat hab ich mir mal gedacht ich zieh das raus in einen eigenen Thread.

Ich habe für meine RX GM Scripte auf Github ein Repository angelegt.
Da wollte ich meine Scripte zusammensammeln, habe aber bisher nur das Entwicklungsscript an dem ich mitgewirkt habe aufgenommen. Die Änderungen von Winter sind da bereits eingeflossen und auch die Umstellung auf https habe ich nachgepflegt.
Das Script selbst verweist per UpdateURL auf diese Location und kann sich zukünftig, so man die Versionierung beachtet, eigenständig updaten.

Anleitung: Einfach mal per UpdateURL (oben verlinkt) installieren, oder im Repository die Datei aufmachen und auf RAW klicken. Wenn zukünftig Änderungen am Script erfolgen sollen, kann man das Script editieren und mir einen Pullrequest schicken, dann kann das Update an alle zurückfließen.

PS: Gerne können wir an dieser Stelle weitere GM Scripte sammeln, oder dieses Script/Repository an einen RX Github Account übergeben. Und für Engagierte vergebe ich auch gerne weitere Rechte an dem Repository, oder nehme Andere Scripte zur konsolidierung mit auf.
It's not a bug, it's a feature

Wurmlochscout - Das Licht am Ende des Wurmlochs sehen!
Benutzeravatar
Lord-FaKe
Sternenbund-Veteran
 
Beiträge: 1028
Registriert: 20.06.2006, 22:24

Re: GM Script Entwicklungsanlage

Beitragvon coolius » 30.03.2017, 10:52

Coole Sache

Hab das Skript so angepasst, dass es mit HTTP/HTTPS immer klappt und das mich shcon lange nervige Layout angepasst, so dass der Inhalt nun in einer eigenen Tabelle steht.

Code: Alles auswählen
// ==UserScript==
// @name Entwicklungsliste
// @namespace coolcow.dyndns.org
// @description Script zum Uebertrag von Schiffsplaenen aus dem Sternenbund nach Revorix
// @author coolius
// @contributor Lord-FaKe
// @contributor   Wintermoon
// @downloadURL https://raw.githubusercontent.com/tpummer/gm-revorix/master/entwicklung/entwicklungsliste.user.js
// @updateURL https://raw.githubusercontent.com/tpummer/gm-revorix/master/entwicklung/entwicklungsliste.user.js
// @include http*revorix.info/php/entwicklung_neu.php*
// @version 3.2017032901
// @run-at document-idle
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js
// @grant GM_setValue
// @grant GM_getValue
// @grant unsafeWindow
// ==/UserScript==

//Preconditions
var url = "";
//Should be deprecated because we no longer make use of unsafeWindow
//var isMonkey = typeof unsafeWindow != 'undefined';

//Get the shipname
//if(isMonkey){
//var shipname = window.shipname;
var shipname = $('#v>tbody>tr>td')[2].textContent;
//console.log(shipname);

//Container for layout
var containerControls = document.createElement('div');
var containerLists = document.createElement('div');

//Persistent list
var list = document.createElement('ul');
list.style.marginBottom = "5px"
list.style.marginLeft = "5px"
list.style.float = "left";
//console.log(shipname);

//Eventreciever persistent data
window.addEventListener ("message", recvMessage, false);

//Helper func to reset the persistent variable
function reset() {
    //console.log("Reset persistent variables")
   GM_setValue('urlStore', "");
}

//Add default button
switch (shipname)
{
default :
addButton(shipname + " übernehmen");
//Restore View
viewUrlStore();
break;
}

//Helper function for layout and controls
function addButton(text){
    //console.log("addButton");
   
    var sterbnd = document.createElement("input"); //input element, text
    sterbnd.style.marginBottom = "5px"
    sterbnd.style.marginLeft = "5px"
    sterbnd.style.float = "left";
    sterbnd.setAttribute('type',"text");
    sterbnd.setAttribute('name',"sterbnd");
    sterbnd.setAttribute('placeholder', "Sternenbund Permalink");
    sterbnd.size = "120";
   
    var shpName = document.createElement("input"); //input element, text
    shpName.style.marginBottom = "5px"
    shpName.style.marginLeft = "5px"
    shpName.style.float = "left";
    shpName.setAttribute('type',"text");
    shpName.setAttribute('name',"shpName");
    shpName.setAttribute('placeholder', "Kommentar");
    shpName.size = "40";
   
    var plan = document.createElement("input");
    plan.style.marginLeft="5px"
    plan.style.marginBottom = "5px"
    plan.style.float = "left";
    plan.setAttribute("type", "button");
    plan.setAttribute("value", text);
    plan.addEventListener('click', addPlan, true);
   
    var resetBtn = document.createElement("input");
    resetBtn.style.marginLeft="5px"
    resetBtn.style.marginBottom = "5px"
    resetBtn.style.float = "left";
    resetBtn.setAttribute("type", "button");
    resetBtn.setAttribute("value", "Reset Url Store");
    resetBtn.addEventListener('click', reset, true);
   
    var saveBtn = document.createElement("input");
    saveBtn.style.marginLeft="5px"
    saveBtn.style.marginBottom = "5px"
    saveBtn.style.float = "left";
    saveBtn.setAttribute("type", "button");
    saveBtn.setAttribute("value", "Bauplan dauerhaft speichern");
    saveBtn.addEventListener('click', sendMessage, true);
   
    //Insert stuff
    baseNode=document.getElementsByClassName("mr")[0];
    baseNode.appendChild(document.createElement("table"));
    baseNode.parentNode.insertBefore(shpName, baseNode.previousSibling);
    baseNode.parentNode.insertBefore(sterbnd, baseNode.previousSibling);
    containerControls.appendChild(plan);
    containerControls.appendChild(saveBtn);   
    containerControls.appendChild(resetBtn);
    baseNode.parentNode.insertBefore(containerControls, baseNode.previousSibling);
    containerLists.appendChild(list);
    baseNode.parentNode.insertBefore(containerLists, containerControls.nextSibling);
}

//Update view
function viewUrlStore(){
    //console.log("aktualisiere view!");
    var urlStore = GM_getValue('urlStore');
    //console.log(urlStore);
    l = urlStore.split(", ")
    //console.log(l);
    for(var i = 0; i < l.length; i++) {
        // Create the list item:
        var item = document.createElement('li');
        // Set its contents:
        item.appendChild(document.createTextNode(l[i]));
        //Add Eventlistener Archive
        item.addEventListener('click', function(){
            //Get URL
            url = this.childNodes[0].nodeValue.split(": ")[1];
            //Add Plan
            addPlan();
        }, true);
        // Add it to the list:
        list.appendChild(item);
    }
    list.parentNode.replaceChild(list, list);
}

//(Helper for checking if String contains something)
function isEmpty(str) {
    return (!str || 0 === str.length);
}

//Message passing endpoint
function sendMessage(){
    //Old value
    if (isEmpty(document.getElementsByName('shpName')[0].value)){
        console.log("Not enough parameter, provide a comment");
        return;
    }
    if (isEmpty(document.getElementsByName('sterbnd')[0].value)){
        console.log("Not enough parameter, provide a link");
        return;
    }
    var urlStore = GM_getValue('urlStore');
    //console.log("persistent: " + urlStore);
    //Add url to list
    if (isEmpty(urlStore)){
        urlStore += document.getElementsByName('shpName')[0].value + " Typ " + document.getElementById('shplvl').value + ": " + document.getElementsByName('sterbnd')[0].value;
    }
    else{
        urlStore += ", " + document.getElementsByName('shpName')[0].value + " Typ " + document.getElementById('shplvl').value + ": " + document.getElementsByName('sterbnd')[0].value;
    }
    //UrlStore
    var objMap = {"Url" : urlStore};
    var messageTxt  = JSON.stringify (objMap);
    window.postMessage (messageTxt, "*");
}

//Message reciever endpoint
function recvMessage(event){
    var messageJSON;
    try {
        messageJSON     = JSON.parse (event.data);
        //console.log(messageJSON);
    }
    catch (zError) {
        // Do nothing
    }
    var safeValue = messageJSON.Url;
    //console.log("recieved value: " + safeValue);
    GM_setValue("urlStore", safeValue);
}

//Eventhandle import modules from Sternenbund
function addPlan()
{
    if (isEmpty(url)){
        url = document.getElementsByName('sterbnd')[0].value;
        if (isEmpty(url)){
            return;
        }
    }
    var elem = url.split('/');
    document.getElementById('shplvl').value = 1 + parseInt(elem[7]); // Schiffsklasse fängt im Sternbund mit 0 an
    //if(isMonkey){
    //Call the page function to set the appropriate shipclass
    unsafeWindow.classy();
    //} else {
        //javascript:classy();
    //}
    var mods = elem[8].split(';');
    //console.log(mods);
    for ( var i = 0; i < mods.length; i++ )
    {
        var mod = mods[i].split(',');
        //console.log(mod);
        for ( j = 0; j < mod[2]; j++ )
        {
            //if(isMonkey){
            //unsafeWindow.add doesn't work anymore:
            //javascript:unsafeWindow.add(mod[0], mod[1]-1);

            /*
               maybe the code in entw.js has changed:
               //needed by html from server
               window.sorty = sorty;
               window.classy = classy;
               window.sort_parm = sort_parm;
               window.multip is accesses by a DOM 0 callback, no way to get around that
               window.multip = 1;
               //missing line ?:
               window.add = add;
            */

            //Test if sorty is defined should pass
            //console.log(unsafeWindow.sorty);

            //console.log('a[data-tree$="'+mod[0]+'"]');
            var secondIndex = mod[1]-1;
            //console.log('[data-index="'+secondIndex+'"]');

            //Simulate click events:
            var link = $('a[data-tree$="'+mod[0]+'"]').filter('[data-index="'+secondIndex+'"]');
            var evt = document.createEvent ("HTMLEvents");
            evt.initEvent ("click", true, true);
            link[0].dispatchEvent (evt);
            //console.log("added module");
            //} else {
                  //javascript:add(mod[0], mod[1]-1);
            //}
        }
    }
    //console.log(url);
}
coolius
Vize-Admiral
 
Beiträge: 110
Registriert: 16.02.2007, 14:05

Re: GM Script Entwicklungsanlage

Beitragvon Wintermoon » 16.05.2017, 23:28

Hallo,

bezüglich Newborns IGM und da ich dein Repo auch schon gegabelt habe..
Jo dann gib mir mal die Rechte, Ich habe noch foilgende GM Skripte:

Bounty Skript -> Damit kann man die Reppkosten und erjagten Gewinne in Game anzeigen lassen. Entworfen von mir.
Raffinerie Skript -> Damit kann man mit der Raff Formel in 2 Felder das gewünschte Level sowie die Erzmenge eintragen und die gewandelten Ressourcen werden automatisch eingetragen, erspart Zeit beim Wandeln.
Artefakt Zählskript -> Selbsterklärend, nachdem das vom Ersteller keine Liebe mehr erhalten hatte, habe ich mich diesem auch angenommen. Nvm. 42's Skript ist umfangreicher.
Besagtes Entwicklunganlagen Skript

Wenn Interesse besteht und du eh ein Git Account hast, push ich das alles da mit rein.

Mit Git kann ich umgehen.
Mein Gitaccount auf dem es nichts öffentliches zu sehen gibt kannst du gerne anfragen bzw im Github nachsehen.

Edit:
Die Änderungen von Winter sind da bereits eingeflossen und auch die Umstellung auf https habe ich nachgepflegt.


Hab das Skript so angepasst, dass es mit HTTP/HTTPS immer klappt und das mich shcon lange nervige Layout angepasst, so dass der Inhalt nun in einer eigenen Tabelle steht.


@Lord-Fake, @Coolius: Mein Werk als Dein/Euer Werk auszugeben finde ich unlustig, nächstes Mal schreibst Du /Ihr mich zuvor in Persona an.

Beste Grüße

Wintermoon
Wintermoon
Korvetten-Ingenieur
 
Beiträge: 11
Registriert: 23.03.2010, 15:47

Re: GM Script Entwicklungsanlage

Beitragvon [42] » 17.05.2017, 22:23

Arti-Script würde ich dazu tun, kommt die Tage als PR, falls ichs nicht vergesse :)
It could be
that the only purpose of your life
is to serve as a warning to others...
[42]
Sternenbund Ratsmitglied
 
Beiträge: 394
Registriert: 12.05.2009, 19:39


Zurück zu Informatives

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de