Händlerscript
Dieses Script ergänzt die Anzeige eines Händlerevents um Informationen wie gut oder schlecht die einzelnen Handelsvorschläge sind. Händlerscript
Inhaltsverzeichnis
Konfigurationsmöglichkeiten
Verhältnisse
Über die Zeilen
var erz = 4; var mineral = 2; var ts = 1;
wird das Verhältnis definiert, über das die einzelnen Ressourcenarten umgerechnet werden. Sollen hier Dezimalzahlen verwendet werden so ist das Dezimalzeichen ein Punkt: 1.890
Toleranz
Um Rundungsprobleme auszuschließen kann man eine Toleranz festlegen, in dem ein Angebot noch als gleichwertig betrachtet und somit mit der Farbe "gleich" (Standardmässig blau) versehen wird. Die Angabe erfolgt dabei in Prozent.
Farben
Das Script unterscheidet 3 Farben:
var gut = "#00FF00"; var gleich = "#00FFFF"; var schlecht = "#CC3333";
Die Farbe "gut" wird verwendet, wenn das tatsächliche Verhältnis besser ist, als das durch die Konfiguration oben vorgebene. Standardmässig ist das grün.
"gleich" wird verwendet, wenn das Tauschverhältnis innerhalb der Toleranzen gleich dem geforderten Tauschverhältnis ist. Standardfarbe hier ist blau.
Bleibt als letztes die Standardfarbe rot für den Fall, dass das geforderte Tauschverhältnis schlechter ist, als das gewünschte.
Code
Unterhalb von //Script sollte nichts geändert werden.
// ==UserScript== // @name Haendlerrechner_0.60 // @namespace goetterheimat // @include *game.horiversum.org/game/main/main.php?cmd=message&send=sent&subcmd=*&action=view* // Version: 0.2b // ==/UserScript== //Settings:(nur hier was verändern) //Variablen //Faktoren immer erz:mineral:teibstoff als ist basis ts var erz = 4; var mineral = 2; var ts = 1; // in welchen bereich das angebot noch den gleichteueren zugeordnet wird, Ausschalten bei 0 // Bsp: toleranz = 0.05 -> von 1:1.95 bis 2.05 (inklusive) ist der preis gleich! var toleranz = 2; //Farben der ausgewerteten Angebote var gut = "#00FF00"; var gleich = "#00FFFF"; var schlecht = "#CC3333"; //Script function my_parseNumber(n) { if (n.length==undefined) n = "" + n; var val = 0; var div = 1; var komma = div; for(var i=0;i<n.length;i++) { var ch = n.charAt(i); if (ch.match(/^\d$/)) { val = val * 10 + (ch*1); div = div * komma; } else if (ch==','||ch=='.') { komma = 10; } else if (ch.toLowerCase()=='m') { return Math.floor(val * 1000000 / div); } else if (ch.toLowerCase()=='k') { return Math.floor(val * 1000 / div); } } return Math.floor(val/div); } function my_numberFormat(strObj){ // Formatierung hinzufügen, aber nur für Zahlen var sign=""; if (strObj<0) sign="-"; var strZahl = my_parseNumber(strObj); if(strZahl) { var integer = Math.abs(strZahl).toString(); if (integer.length>3) { // ab Tausenderwerten for (var i = integer.length - 3; i > 0; i -= 3) integer = integer.substring (0 , i) + "'" + integer.substring (i); return sign+integer; } else { return strZahl; } } else { return 0; } } var vergleichswerte = new Array(ts/erz,mineral/erz,erz/mineral,ts/mineral,erz/ts,mineral/ts); var toleranzplus = new Array(toleranz,toleranz,toleranz,toleranz,toleranz,toleranz); var toleranzminus = new Array(-toleranz,-toleranz,-toleranz,-toleranz,-toleranz,-toleranz); var td = null; // '//table[@class="MessageTable"]//td[@class="MessageTableCellLeft"]' // /html/body/div[5]/div[2]/div[2]/form/table[2]/tbody/tr/td var tab = document.evaluate('//form//td[@class="MessageTableCellLeft"]', document, null, XPathResult.ANY_TYPE, null ); tab.iterateNext(); td = tab.iterateNext(); if (td != null && td.innerHTML.match(/Fliegender H.ndler/) && td.childNodes.length >=17){ var i = 0; td.childNodes[3].innerHTML += " ... Verhältnis: [ " + my_numberFormat(erz) + " : " + my_numberFormat(mineral) + " : " + my_numberFormat(ts) + " ] Toleranz: " + toleranz; for (i = 0;i < 6; i += 1){ //alert(td.childNodes[(i*2+5)].innerHTML); var a = td.childNodes[((i+1)*2+5)].childNodes[1]; var nummer = a.innerHTML.split("nur"); nummer[0] = nummer[0].replace(/\D+/ig,""); var wert = nummer[1].replace(/\D+/ig,""); var soll = vergleichswerte[i]*nummer[0]; var sollplus = (1+toleranzplus[i]/100)*soll; var sollminus = (1+toleranzminus[i]/100)*soll; a.innerHTML = a.innerHTML + " " + my_numberFormat(soll) + " (" + my_numberFormat(soll-wert) + ")"; if (wert < sollminus) { a.setAttribute("style","color:"+ gut); } else { if (wert<sollplus) { a.setAttribute("style","color:"+ gleich); } else { a.setAttribute("style","color:"+ schlecht); } } } }