Händlerscript: Unterschied zwischen den Versionen

Aus Horizon
Wechseln zu: Navigation, Suche
Zeile 1: Zeile 1:
 
Dieses Script ergänzt die Anzeige eines Händlerevents um Informationen wie gut oder schlecht die einzelnen Handelsvorschläge sind.
 
Dieses Script ergänzt die Anzeige eines Händlerevents um Informationen wie gut oder schlecht die einzelnen Handelsvorschläge sind.
 +
[[File:haendlerscript.jpg|Händlerscript]]
 +
== Konfigurationsmöglichkeiten ==
 +
=== Verhältnisse ===
 +
Über die Zeilen
 +
<pre>
 +
var erz = 4;
 +
var mineral = 2;
 +
var ts = 1;
 +
</pre>
 +
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:
 +
<pre>
 +
var gut = "#00FF00";
 +
var gleich = "#00FFFF";
 +
var schlecht = "#CC3333";
 +
</pre>
 +
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.<br>
 +
"gleich" wird verwendet, wenn das Tauschverhältnis innerhalb der Toleranzen gleich dem geforderten Tauschverhältnis ist. Standardfarbe hier ist blau.<br>
 +
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.
 
<pre>
 
<pre>
 
// ==UserScript==
 
// ==UserScript==

Version vom 28. März 2013, 18:42 Uhr

Dieses Script ergänzt die Anzeige eines Händlerevents um Informationen wie gut oder schlecht die einzelnen Handelsvorschläge sind. Händlerscript

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);
        } 
    }
	
  }
}