Die meisten Bedienoberflächen für FIBS beinhalten eine Spielerliste, so dass man ständig sehen kann, wer gerade online ist.
Leider passiert es häufig, dass in dieser Liste nicht alle Spieler auch wirklich angezeigt werden.
Für die Bedienoberfläche JavaFIBS20011) wird im folgenden eine Lösung zur Behebung dieses Problems erklärt.
Zunächst wird der technische Hintergrund erklärt. Wer nur an der Lösung interessiert ist, kann auch direkt
zum letzten Kapitel springen, in dem die Lösung realisiert wird.
Nach dem Einloggen erstellt JavaFIBS2001 die Spielerliste über das Kommando "who". FIBS antwortet darauf, indem es alle Spieler
meldet, die gerade online sind. Dabei werden für jeden Spieler diverse Informationen übermittelt, u.a.:
- Der Name des Spielers,
- ob er spielt, bereit ist, eingeladen zu werden oder nur online ist,
- von welcher Internet-Adresse aus er eingeloggt ist,
- über welche Erfahrung ("experience") der Spieler verfügt,
- welches Rating der Spieler hat und
- mit welchem Interface (Bedienoberfläche) der Spieler online ist.
Wieviele Spieler jeweils online sind, wird rechts oberhalb der Spielerliste angezeigt:
Leider ist diese Liste anfangs noch sehr unvollständig. Warum?
Nun, der Umfang der mit dem who-Command erzeugten Antwort ist relativ groß. FIBS stellt seine Antwort jedoch nach einer gewissen Zeit ein. Und zwar
bevor alle Informationen übermittelt wurden. Da die FIBS-Software leider nicht mehr im ausreichenden Umfang gepflegt wird, werden wir mit diesem
Problem Problem also langfristig leben müssen.
Allerdings kann man die gewünschte Information, sprich eine vollständige Spielerliste, mit ein paar Tricks doch aus FIBS "herauskitzeln".
Die Reihenfolge, in der FIBS auf das who-Command antwortet, wird nämlich über die FIBS-Variable "sortwho" bestimmt. Diese Variable kann
folgende Werte annehmen:
- rating
- rrating
- name
- login
Wenn die Variable den Wert "rating" hat, werden die Spieler in aufsteigender Reihenfolge ihres ratings gemeldet, bei "rrating" in absteigender
Reihenfolge, usw.
FIBS-Variablen werden für jeden Spieler separat abgespeichert. Den Wert der FIBS-Variablen kann man also für sich ändern. Dies erfolgt über das Kommando
"set". Die Syntax hierür ist
set Variable Neuer_Wert
Für die Variable sortwho lautet das Kommando also beispielsweise "set sortwho rating", einzugeben in der Kommando-Zeile von JavaFIBS2001 (links unten):
Der Lösungsansatz besteht nun darin, FIBS mehrere who-Kommandos zu senden, zwischen den einzelnen "who" aber die Reihenfolge, in der FIBS antwortet
über die FIBS-Variable "sortwho" zu ändern. FIBS wird zwar auf die "who" jeweils nur unvollständig antworten, jedoch ist durch die unterschiedlichen
Antwort-Reihenfolgen sichergestellt, dass jeder Spieler wenigstens einmal gesendet wurde und somit in die Spielerliste aufgenommen wird.
Folgende Kommandos sind also zu geben:
- set sortwho rating
- who
- (danach erst einmal ein paar Sekunden warten, um FIBS' Antwort abzuwarten)
- set sortwho rrating
- who
In der Regel ist die Spielerliste dann komplett. Ich gebe aber um ganz sicher zu gehen, nach einer kleinen Pause, noch die Kommandos:
Damit werden nun wirklich alle Spieler angezeigt!
Nun ist es aber doch recht lästig, nach jedem Einloggen diese 6 Kommandos geben zu müssen. JavaFIBS 2001 bietet über die "Programmable
Buttons"
2) einen komfortablen Weg, diese Kommandos zu realisieren.
Ich habe für JavaFIBS2001 6 "Programmable Buttons" eingerichtet:
Diese 6 Buttons sind wie folgt definiert:
- Button1: set sortwho rating
- Button2: who
- Button3: set sortwho rrating
- Button4: who
- Button5: set sortwho name
- Button6: who
Nach dem Einloggen
- drückt man dann die Buttons 1 und 2,
- wartet 1, 2 Sekunden, um FIBS Zeit zu geben, auf das "who" zu antworten,
- drückt die Buttons 3 und 4,
- wartet wieder ein wenig und
- drückt dann die Buttons 5 und 6.
Wenn man während dieser Aktion auf die Zahl der Spieler online schaut ....
... wird man sehen, dass sich die Zahl deutlich erhöht. Am Ende hat man die gewünschte vollzählige Spielerliste!
Diese 6 Buttons kann man auf drei verschienden Arten realisieren:
Diese Methode empfiehlt sich, wenn man keine weiteren "Programmable Buttons" verwendet. Ansonsten bitte Methode 2 oder 3 verwenden.
1. Sollte JavaFIBS2001 laufen: JavaFIBS2001 beenden
3) .
2. Konfigurationsdatei
hier downloaden. (Achtung: Bitte
rechte Maustaste nutzen und "Ziel speichern unter ..."
nutzen, sonst öffnet sich die Datei direkt im Browser.)
3. Datei im Stammverzeichnis von JavaFIBS2001 unter /user/
user-Name/ abspeichern
4) .
Beim Öffnen von JavaFIBS2001 sind jetzt die 6 Buttons installiert.
Wer bereits "Programmable Buttons" verwendet und diese nicht überschreiben will, kann die Konfigurationsdatei direkt editieren.
Die Datei "buttons" lässt sich mit jedem einfachen Editor öffnen und editieren. Jeder Button belegt in dieser Datei zwei Zeilen:
- Aktion
- Bilddatei, die für diesen Button verwendet wird5)
Zum Erzeugen der 6 Buttons geht man also wie folgt vor:
1. Sollte JavaFIBS2001 laufen: JavaFIBS2001 beenden
3) .
2. Die Datei "buttons" mit einem Editor öffnen.
3. Folgende Zeilen über Copy & Paste in die Datei einfügen:
set sortwho rating
images\say1.gif
who
images\say2.gif
set sortwho rrating
images\say3.gif
who
images\say4.gif
set sortwho name
images\say5.gif
who
images\say6.gif
4. Datei speichern. (Die Datei muss den selben Namen behalten. Also Sicherstellen, dass der Editor aus der Datei nicht "buttons.txt" macht. Die Datei
muss "buttons" heißen - ohne irgendeine Endung!)
Mit dem vorgestellten Verfahren werden somit die 6 Buttons mit den vordefinierten Button-Bildern say1.gif, say2.gif, usw. hinterlegt.
Man kann natürlich auch andere vordefinierte Bilder hierfür verwenden oder selbst eigene Bildchen hierfür kreieren.
Die "Programmable Buttons" können auch direkt in JavaFIBS2001 erstellt werden:
1. JavaFIBS2001 starten.
2. Menü "Preferences"
3. Menüeintrag "Programmable Buttons ..." anklicken:
4. Zuerst die gewünschte Graphik für Button 1 auswählen (Feld 1 in obigem Bild).
5. Den Befehl hierfür in Feld 2 eintragen.
6. Button "Add" drücken (3. in obigem Bild).
7. Die Schritte 4 bis 6 (entspricht 1. bis 3. im Bild) wiederholen, bis alle 6 Buttons erstellt sind.
8. Abschließen durch Betätigen des OK-Buttons (entspricht 4. im Bild).
Zu dem Problem von FIBS, dessen Lösung zuvor vorgestellt wurde, gesellt sich nun noch ein Bug von JavaFIBS2001. Manchmal, wennauch selten,
passiert es, dass in der Spielerliste alle Spieler doppelt erscheinen:
Hier hilft nur eins: Die Liste aktualisieren. Hierfür bietet JavaFIBS2001 einen eigenen Button an:
Mit Betätigung dieses Buttons wird die Liste wieder über ein who-Kommando neu aufgebaut. Danach sind keine Spieler mehr doppelt in der Liste,
die Liste ist aber wieder einmal unvollständig. Dann muss man nochmals die Buttons 1 bis 6 bedienen, wie oben beschrieben.
Das Phänomen der doppelten Spieler-Anzeige passiert glücklicherweise relativ selten, so dass man danach
in der Regel dann über eine korrekte Spielerliste verfügt.
|
|
1. JavaFIBS2001 ist Shareware. Der Autor ist Peter Nevalainen. Die JavaFIBS2001-Homepage findet sich unter
http://www.fibs.com/~cthulhu/
2. "Programmierbare Bedien-Knöpfe" - mir fällt keine besser Übersetung ein.
3. JavaFIBS2001 speichert die Konfigurationsdateien beim Beenden jeweils ab. Wenn man die Konfugurationsdateien bei laufendem JavaFIBS2001
editiert, werden diese beim Beenden von JavaFIBS2001 also wieder mit den alten Werten überschrieben.
4. Beispiel: JavaFIBS2001 ist unter D:/JavaFIBS2001/ installiert. Der Nutzer heisst "Mustermann". Dann befindet sich die Buttons-Datei unter
D:/JavaFIBS2001/user/Mustermann/buttons.
5. JavaFIBS2001 wird bereits mit einigen Bilddateien für Buttons ausgeliefert. Diese befinden sich im Verzeichnis /images/. Im Falle des unter 4.
genannten Beispieles also unter D:/JavaFIBS2001/images/.
|
Letzte Aktualisierung: 27. Mai 2009
|