FAQ Suche Mitglieder Groups Persönlicher Bereich Private Messages
Foren-Übersicht   Registrieren   Anmelden  
Aktuelle Zeit: 19.08.2017, 04:43
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: 1036
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: 16
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: 408
Registriert: 12.05.2009, 19:39

Re: GM Script Entwicklungsanlage

Beitragvon Lord-FaKe » 30.05.2017, 06:25

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


Hi, ich nehm Coolius mal in Schutz, der hat halt in meinem Repo weiter an "deinem Werk" gearbeitet. Der Fehler liegt dann wohl bei mir, der ich dachte dass du das initial von Coolius erstellte, von mir verfeinerte Script weiterentwickelt hast und es damit zum Allgemeingut für Revorix in diesem Forum gehörte. Außerdem hab ich euch beide ob der Lizenz für das Repository angefragt und sah mich damit auf der fragenden Seite. Wenn dir das schon der Schritt zuviel war tut es mir leid. Der @contributor Tag ist für mich auch gar keine Notwendigkeit, hab das damals reingemacht in Coolius Script weil GM das halt erlaubte.

@42, und auch Wintermoon
Ich freu mich natürlich über Beteiligung, Github Accounts bitte gerne per PM hier im Forum schicken. Jemand hat heute früh schon einen PullRequest geschickt um den ich mich im Laufe der nächsten Tage kümmere. Da sich der Dateiname geändert hat würde ich versuchen wollen per UpdateURL eventuelle Nutzer zumzuleiten.
It's not a bug, it's a feature

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

Re: GM Script Entwicklungsanlage

Beitragvon Wintermoon » 30.05.2017, 13:11

Jo, es ist ja keine Lizenz drauf von daher alles gut, nur vom ursprünglichen Skript ist eigentlich nur noch eine Zeile da, welche das Mapping über die Modulos berechnet.
Ich habe eben gesehen, dass Coolius 2 Zeilen bei dir geaddet hatte, die das Ganze nicht in die obere Tabelle anfügt sowie Unterstützung für HTTPS , das lief dann zeitgleich mit meinem Update und ich hatte das falsch verstanden.
Soweit ich es im Kopf habe ist so ziermlich alles Andere von mir gewesen. Wollte auch keine Haarspalterei hier lostreten.

Der Pull Request ist von mir, ich habe das Skript nochmals schöner gemacht und weitere Funktionalität eingepflegt. Es ist nun möglich während der Planung alle Module zu entfernen, sowie einzelne Baupläne zu entfernen.
Die View wird entsprechend aktualisiert.
Den Namen fand ich passender und folgt meiner Terminologie für GM_Skripte in Rx .
Ich schreibe gerne "Revorix" davor, da ich auch anderes laufen habe wegen der Übersicht, bisher hatte sich das Skript an der Stelle immer durchgemogelt, für diese Version wollte ich das aufräumen.

Beste Grüße

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

Re: GM Script Entwicklungsanlage

Beitragvon Lord-FaKe » 01.06.2017, 09:45

Passt, hab eben die UpdateURL umgestellt und würde alle Nutzer bitten wollen ihr Script gezielt zu Updaten. Am Samstag stelle ich das Script dann auf den neuen Dateinamen um.
Da ich bisher nur in Revorix GM verwendet habe, hatte ich damit noch kein Problem, aber prinzipiell finde ich die Abgrenzung druch den Namensraum gut.
Danke für die nicen Features
lg
It's not a bug, it's a feature

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

Re: GM Script Entwicklungsanlage

Beitragvon [42] » 02.06.2017, 11:21

Das Repo wird größer ^^

Jeder ist eingeladen, Scripte beizutragen. Benutzbarkeit etc. sind jetzt hoffentlich halbwegs verständlich im Readme erklärt.
It could be
that the only purpose of your life
is to serve as a warning to others...
[42]
Sternenbund Ratsmitglied
 
Beiträge: 408
Registriert: 12.05.2009, 19:39


Zurück zu Informatives

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


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