ECheck

Kontakt

Gästebuch

Impressum

Farbauswahl

46777 Besucher
seit 15.11.04

Kontakt

Gästebuch

Impressum

Farbauswahl

46777 Besucher
seit 15.11.04

  • ECheck
  • English
  • Download
  • Eressea
  • Faroul

ECheck   V 4.1.4

Was geht?       Was geht nicht?       Installation       Aufruf       Umgebungsvariablen
Eingaben       Meta-Befehle       Testergebnis       Sonstiges

(english version)

ECheck ist ein Syntax-Checker für das PBeM Eressea. Er testet eine Zugdatei auf Rechtschreibfehler und meldet Fehler.

Das Programm läuft auch auf dem Spiel-Server und verschickt für alle eingehenden Züge das Testergebnis.

nach oben

Was ECheck kann

ECheck macht hauptsächlich eine "Rechtschreibprüfung", es werden also falsch geschriebene Befehle und Talente angemerkt.

In der Zugvorlage des Servers stehen aber auch Informationen über Anzahl und Silbervorrat der Einheiten drin. Dies versucht ECheck auch zu berücksichtigen, wenn Silber für die Ernährung, das Rekrutieren von neuen Personen, den Gebäudeunterhalt oder teure Talente benötigt wird.
Trotzdem kann ECheck dabei natürlich nicht (bzw. nur eher mangelhaft) berücksichtigen, daß Einheiten Geld verdienen können oder gar Silber von Einheiten anderer Parteien bekommen.

Ebenso kann ECheck aus der Zugvorlage entnehmen, ob eine Einheit auf einem Schiff ist (in den [ ] im Kommentar steht sowas wie "s124", wenn die Einheit auf Schiff 124 ist, bzw. "S124", wenn sie das Kommando über Schiff 124 hat), ein Gebäude unterhalten muß (Markierung "U200" heißt, daß für ein Gebäude 200 Silber bezahlt werden muß, "U250+" sind 250 Silber und noch etwas anderes, wie z.B. Holz bei der Schmiede) und Untote oder Illusionen sind mit einem "I" markiert.

ECheck macht folgende Tests:

nach oben

Was ECheck nicht kann

ECheck hat nur wenige Daten über die Einheiten und die Partei. Daraus ergibt sich, daß folgende Tests in der Regel nicht möglich sind:

Dadurch, daß ECheck keine wirklichen Einheiten-Daten hat, kann es also zu Fehlermeldungen kommen, die letztlich keine sind.

Der Silberpool-Modus (Option -l) ist nur bedingt anwendbar: Einheiten auf Schiffen, die von einer anderen Partei gesteuert werden, werden nicht aus der Region bewegt (weil deren Ziel nicht bekannt ist), ebenso passiert dies z.B. bei magischer Bewegung oder Bewegung in besondere Richtungen.

Von Spenden (HELFE SILBER) und Silber-Übergaben (GIB xxx yyy SILBER) anderer Parteien hat ECheck natürlich nicht die blasseste Ahnung. Daher sind hier Warnungen vorprogrammiert.

Auch der DEFAULT-Befehl kann zu Effekten führen, die als Fehler angemerkt werden, obwohl sie keine sind.

Einige der oben genannten Effekte lassen sich aber mit den Meta-Befehlen eingrenzen.

nach oben

Installation

Für eine komplette Installation braucht man neben dem Programm selber die Zusatzdateien seiner Sprache, in der alle Gegenstände, Talente, Zauber usw. aufgelistet sind. Das Format der Dateien ist in den Dateien selbst erklärt.

Wo das Programm und die Zusatzdateien liegen, ist völlig egal, solange das System das Programm findet und ECheck die Zusatzdateien finden kann; dazu gibt es drei Möglichkeiten:

nach oben

Aufruf

      ECheck [-<Optionen>] Zugdatei

Optionen:

-
Verwendet stdin anstelle einer Eingabedatei.
-b
unterdrückt Warnungen und Fehler (brief)
-q
unterdrückt sonstige Ausgaben (quiet)
-rnnn
Legt Rekrutierungskosten auf nnn Silber fest
-c
schreibt die Warnungen und Fehler in einer Compiler-ähnlichen Form:
dateiname|(zeile)|warnlevel|text
fette Texte stehen fest, die anderen sind sinngemäß zu ersetzen. Warnlevel 0 sind Fehler.
-m
schreibt die Warnungen und Fehler für Magellan lesbar:
dateiname|zeile|warnlevel|text
fette Texte stehen fest, die anderen sind sinngemäß zu ersetzen. Warnlevel 0 sind Fehler.
-e
schreibt die geprüfte Datei auf stdout, Fehler nach stderr
-E
schreibt die geprüfte Datei auf stdout, Fehler auch nach stdout
-h
zeigt diese kleine Hilfe an
-hb
zeigt Liste der Befehle für befehle.txt
-hp
zeigt Liste der Parameter für parameter.txt
-hr
zeigt Liste der Richtungen für richtungen.txt
-hm
zeigt Liste der Meldungen für meldungen.txt
-hf
zeigt Liste der Dateien, die ECheck versucht, einzulesen
-s
verwendet stderr für Warnungen, Fehler etc., kein stdout
-p
(zusammen mit -e) generiert eine "Piping-taugliche" Ausgabe: von Gegenständen, Tränken und Kräutern wird nur der erste Teil des Namens ausgegeben.
Dies ist für den DEFAULT-Befehl notwendig, wenn die Ausgabe von ECheck als Eingabe eines weiteren ECheck-Laufes benutzt wird. Dies geht nicht bei Zaubern, da dort das erste Wort nicht eindeutig ist!
-n
zählt Zeilen mit NameMe-Kommentaren (;;) nicht mit
-l
Silberpool-Modus: fehlendes Silber wird aus der Region geholt
-noship
Keine Warnungen "Einheit will Schiff bewegen und hat evlt. kein Kommando"
-nolost
Keine Warnungen "Einheit verliert Silber und evtl. Gegenstände
-noroute
Keine Warnungen "ROUTE ist kein Kreis"
-w[n]
Warnung der Stufe n (default: 4). Die Warning-Levels:
  1. - es werden keine Warnungen ausgegeben
  2. - Syntaktische Fehler
  3. - fehlende Texte, Anzahl/Nummer fehlt, langer Befehl fehlt, logische Fehler (LEHRE ohne LERNE usw.)
  4. - zu wenig Geld/Silber/Personen bei Einheiten, zu wenig Silber in Regionen, kein Kommando usw.
  5. - "Vorsichtshalber"; Warnungen, bei denen auch ECheck nicht sicher sein kann
  6. - Lehrer/Schüler-Check
-x
Normalerweise beginnt ECheck die Zeilenzählung am Anfang der Datei. Benutzt man -x, so beginnt ECheck bei PARTEI.
-Ppfad
Pfadangabe für die Zusatz-Dateien.
Das ECheck-Locale wird angehängt (pfad/de/...).
-Lloc
Setzt das ECheck-Locale auf loc.
-vMainversion.Level
Da viele Spieler zum Teil völlig veraltete ECheck-Versionen benutzen, wurde hier ein Mechanismus entwickelt, der die Spieler darauf hinweist.
In der Zugvorlage des Servers wird immer die aktuelle ECheck-Version benutzt.

Beispiele:

echeck -r80 Zug
Testet die Datei Zug. Die Rekrutierungskosten sind auf 80 Silber festgelegt.
echeck -c -e Zug >mailzug
Testet die Datei "Zug". Die Fehlermeldungen werden Compiler-ähnlich ausgegeben, und die getestete Datei wird nach mailzug geschrieben.

nach oben

Umgebungsvariablen

ECheck liest direkt nach dem Start die Umgebungsvariablen ECHECKPATH, welche den Standard-Suchpfad enthält, und ECHECKOPTS, in der alle Optionen angegeben werden können. Beispiel:

  setenv ECHECKOPTS "-c -l -r75"
  setenv ECHECKPATH "~/eressea/zug:/usr/local/lib/echeck:."

nach oben

Eingaben in der Zugdatei

Die meisten Optionen können auch in der Zugdatei angegeben werden. Dazu muß vor dem ersten REGION der Zugdatei eine Kommentarzeile stehen, die die Optionen enthält. Zur Erkennung muß diese Zeile mit dem Wort ECHECK beginnen:

  ; ECHECK -r80 -w2
Gesperrt sind die Optionen -e, -E, -P, -s, -h und -?.

Man kann außerdem direkt nach dieser Zeile eine "Version" der Züge angeben. Diese Zeile wird komplett auf den Bildschirm ausgegeben und ist somit auch in der Zugbestätigung vom Server:

  ; VERSION .....
oder
  ; ECHECK VERSION .....

In Eressea beendet das Ende der Zeile einen Befehl. Damit man längere Befehlszeilen eingeben kann ohne daß z.B. das Mailprogramm falsch Umbrüche einbaut, erkennt ECheck den Backslash \ als "Zeilenverlängerer".

Ebenso erkennt ECheck nicht-eindeutige Abkürzungen nicht "korrekt". Es sei jedem Spieler empfohlen, seine Befehle nur eindeutig abzukürzen, zumal ich BEN E "Lehrer" und G 76 7 J deutlich schwieriger zu lesen finde als Benenne Einheit "Lehrer" und Gib 76 7 Juwelen...

nach oben

Zu guter letzt gibt es einige "Meta-Kommandos" für ECheck. Diese Kommandos werden hinter dem Kommentar-Befehl // oder einem ; am Zeilenanfang gegeben.

ECHECK NACH x y
Hier kann man angeben, wohin eine Einheit z.B. auf einem Schiff einer anderen Partei befördert wird. ECheck berücksichtigt dies.
ECHECK ROUTE
Hiermit wird das "noroute"-Flag gewechselt. Hat ECheck also nicht-zyklische ROUTEn zuvor angemerkt, tut es das nach ECHECK ROUTE nicht mehr. Ein weiteres ECHECK ROUTE schaltet die Warnungen dann wieder an.
ECHECK KOMMANDO [nummer]
Die Einheit bekommt das Kommando über das Schiff, auf dem sie ist oder Schiff nummer. Dadurch unterbleibt die "hat kein Kommando"-Warnung.
ECHECK EMPTY
Der Einheit wird alles Silber genommen. Dadurch unterbleibt die "verliert Silber"-Warnung, wenn die Einheit alle Personen abgibt.
ECHECK silberbetrag
Der Region der Einheit wird der entsprechende Betrag als zum Silbervorrat addiert. So kann man z.B. für Botschafter, die von einer anderen Partei mit HELFE SILBER ernährt werden, die Warnung vermeiden.
ECHECK LOHN silberbetrag
Hiermit kann man festlegen, wieviel Silber in einer Region mit ARBEITE verdient werden kann. Die Zugvorlage des Servers enthält dies automatisch. Dieses Meta-Kommando muß zwischen REGION und dem ersten EINHEIT stehen.
ECHECK NOWARN
schaltet direkte Warnungen für die kommende Zeile ab. "Indiirekte Warnungen" wie z.B. zu wenig Silber, Lehrer/Schüler-Check werden hiervon nich beeinflußt.

nach oben

Ein "Testergebnis"

Folgende Befehle werden z.B. eingeschickt. Ich habe die Fehler darin einmal mit einem Kommentar versehen.

PARTEI 123 "EinsZweiDrei"

 ; ECHECK -l -w4 -r100

 REGION 9,10 ; Ger Mani

 EINHEIT ki8;          Herr Müller [1,0$]
    Unterhalte
    Gib 4800 1 Person
 EINHEIT 7530;         Frau Müller und Sohn [2,60$]
    Lerne Unterhaltung
 EINHEIT alf;          Alfred E. Neumann [1,0$]
    Unterhalte
 EINHEIT h3z;          Ein Bauer [1,0$]
    Lere 1234 uh4q Temp 77              ; Tippfehler: LEHRE
    Betrete Burg 4r
 EINHEIT 5045;         Handelsvertreter [1,110$]
    Lerne Uterhaltung                   ; Tippfehler: UNTERHALTUNG
    Gib 4jL 1000 Silber                 ; Soviel Silber hat die Einheit nicht
    Betrete Burg 4r

 REGION 6,10 ; Schubidu

 EINHEIT 43f;          Wanderer [1,110$]
    Nach Westen

 REGION 1,10 ; Irgendwo

 EINHEIT rt4a;         Kräuterfrau [1,0$]     ; Einheit hat kein Silber
    Mache Kräuter
 EINHEIT bote;         Bote [1,$30]      ; Einheit hat genug Silber für beide,
    Nach Südosten                        ; doch sie verläßt die Region

 NAECHSTER

So sähe die Rückmeldung des Serves aus:

ECheck (Version 4.1.4, Sep 16 2001), Zug-Checker für Eressea - Freeware!

Verarbeite Datei `name@email.de,0'.
Der Dateiname ist die eMail-Adresse des Absenders, die Zahl hinter dem Komma gibt an, wieviele Züge von der Adresse schon eingetroffen sind.
Rekrutierungskosten auf 100 Silber gesetzt, Warning Level 4.
Silberpool aktiviert.
Fehler in Zeile 17: Befehl nicht erkannt.
        `Lere 1234 uh4q Temp 77'
Warnung zur Zeile 16: Einheit h3z hat keinen langen Befehl bekommen.
        `EINHEIT h3z; Ein Bauer [1,0$]'
Dies ist ein Folgefehler. Der falsche Befehl Lere, der natürlich Lehre sein sollte, ist so kein langer Befehl. Darum diese Meldung.
Fehler in Zeile 20: Talent nicht erkannt.
        `Lerne Uterhaltung'
Hier stimmt zwar das Talent nicht, aber der Befehl Lerne ist richtig geschrieben und wird als langer Befehl vermerkt.
Warnung zur Zeile 21: Einheit 5045 hat evtl. zu wenig Silber.
        `Gib 4jL 1000 Silber'
Man beachte das evtl.. Es könnte ja sein, daß die Einheit von einer anderen Partei Silber bekommt (wobei auch das schiefgehen könnte, wenn diese fremde Einheit später als die eigene Einheit drankommt...). Bekommt die Einheit von einer anderen Partei z.B. 800 Silber, kann man dies mit dem Meta-Befehl ; ECHECK: 800 "vermerken".
Warnung zur Zeile 30: Das Silber in Irgendwo (1,10) reicht evtl. nicht zum
Leben; es fehlen 10 Silber.
Auch hier evtl., denn eine fremde Partei könnte auch hier mit Silber aushelfen oder man verdient selber mehr Geld, als ECheck annimmt.

ECheck versucht nach bestem Wissen, die Einheiten auf Schiffen zu bewegen. Dies geht natürlich nur, wenn eine eigene Einheit das Schiff bewegt.

Einheiten, die auf fremden Schiffen sind, bleiben für ECheck an Ort und Stelle, so auch deren Silber. Man kann aber mit dem Meta-Befehl ; ECHECK NACH x y dafür sorgen, daß die Einheit in die Region x,y verschoben wird und so ECheck ggf. genug Silber in der Region vorfindet.

Warnung zur Zeile 19: Einheit 5045 hat -900 Silber
Dies ist eine weitere Meldung zum Gib 4jL 1000 Silber. Die Einheit hat 110 Silber, davon braucht sie 10 Silber zur Ernährung, kann also 100 Silber weggeben. Es fehlen also besagte 900 Silber.
Es wurden Befehle für 1 Partei und 7 Einheiten gelesen.
Es wurden 2 Fehler und 4 Warnungen entdeckt.
Meldet ECheck eine Region als Region (also kein Name), so ist keine Einheit dort vertreten, reist aber dorthin (NACH-Befehl). Da ECheck die Namen der Region aus der Zugvorlage liest, kennt es den Namen der Region darum nicht.

nach oben

Sonstiges

Wer Fehler in ECheck findet, schicke mir bitte eine Mail mit Versionsnummer und die Befehlsdatei (zumindest die Ausschnitte, die den Fehler hervorriefen) oder einer möglichst genauen Beschreibung, wo der Fehler auftrat.

ECheck sollte auf allen Systemen ohne Probleme zu compilieren sein. Beispielaufruf mit dem gcc:

      gcc -s -O2 -o echeck echeck.c

Probleme mit Umlauten können ggf. durch -DUMLAUTE umgangen werden, da dann eigene Routinen benutzt werden.

ECheck kann man per Download in verschiedenen Formaten bekommen werden.

© 2005 Henning Peters