Files
d4rkbot/docs/ls-feed.md
T
D4rkst3randClaude Opus 5 1075b91121
Deploy / check (push) Has been cancelled
Deploy / deploy (push) Has been cancelled
Kanaele werden auch angezeigt, Monate statt Schluessel, Sorten auf Deutsch
Die Kanalauswahl blieb leer, obwohl "einsatzbereit" gruen daneben stand — ein
Widerspruch, der die Ursache schon verraet: der Wert lag in der Datenbank, das
Formular bekam ihn nur nie zu sehen. Ich hatte beim letzten Mal das Speichern
repariert und uebersehen, dass currentSettings() dieselbe von Hand gepflegte
Liste fuehrt. Jetzt holt auch sie die Schluessel aus dem Modul-Register.
Geheimes bleibt aussen vor: gitea_api_token steht unter requires, faellt aber
durch die Namenspruefung und wird weiterhin nur als "ist gesetzt" gemeldet.

Dazu die Uebersetzung. Im Embed standen wheat, clover_windrow und seeds, weil
der Feed nun mal Englisch spricht. Jetzt Weizen, Rotklee (Schwad) und Saatgut,
mit lesbarem Rueckfall fuer alles, was nicht in der Liste steht — 371 Sorten
uebersetzt niemand von Hand.

Und der Monat. Die zwoelf Perioden sind schlicht Monate, EARLY_SPRING ist
Maerz. Also nimmt das Feld jetzt "September", "sept" oder "9" statt
EARLY_AUTUMN; Mehrdeutiges wie "Ju" wird abgelehnt statt geraten.

Weiterzaehlen kann der Bot selbst, seit klar ist, dass ein Monat ueber einen
Tag laeuft. Nicht ueber playTime — die steht im Savegame und wird nur beim
Autosave geschrieben: ueber zwei Stunden gemessen stieg sie um 50, waehrend
die Spieluhr 18,7 Stunden weiterlief. dayTime in der Statusabfrage ist dagegen
live, und jeder Ruecksprung um Mitternacht ist ein Monatswechsel. Steht der
Server leer, steht die Spielzeit — und der Monat bleibt richtigerweise stehen.

Geprueft: alle zwoelf Monate hin und zurueck, Abkuerzungen, Monatszahlen,
Mehrdeutiges, acht Sorten Unsinn, der Jahreswechsel von Februar auf Maerz, der
Ruecksprung um Mitternacht samt Erstlauf, und dass jede Sorte der
Standardauswahl einen deutschen Namen hat.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-09 02:31:20 +02:00

116 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Was ein LS-Server über sich verrät
Aufgeschrieben, damit die Frage „können wir nicht auch …" nicht dreimal
gestellt wird. Alles hier ist an einem echten FS25-Server (1.21.0.0) geprüft,
nicht aus der Dokumentation abgeschrieben — die schweigt zu den Einzelheiten.
## Die Endpunkte
Alle brauchen `?code=<Zugangs-Code>`. Der Code steht in der Abfrage-URL, die
der Hoster ausgibt; der Port ist **nicht** immer 8080.
| Endpunkt | Grösse | Inhalt |
|---|---|---|
| `dedicated-server-stats.xml` | ~49 KB | Server, Spieler, Mods, Parzellen, Felder, Fahrzeuge |
| `dedicated-server-stats-map.jpg` | 51 KB 1,5 MB | Luftbild, `size=` 512…4096, `quality=` 1…100 |
| `dedicated-server-savegame.html?file=careerSavegame` | ~20 KB | Einstellungen, Geld, Spielzeit, Modliste |
| `dedicated-server-savegame.html?file=vehicles` | ~39 KB | jedes Fahrzeug mit Preis, `farmId`, Betriebsstunden |
| `dedicated-server-savegame.html?file=economy` | ~305 KB | Preiskurve je Fruchtart über zwölf Perioden |
Andere Dateinamen antworten mit `204` und leerem Rumpf. Geprüft und **nicht**
verfügbar: `farms`, `farmland`, `farmlands`, `fields`, `field`, `items`,
`placeables`, `environment`, `sales`, `players`, `production`, `productions`,
`missions`, `densityMapHeight`, `treePlants`, `growth`, `weeds`, `fillTypes`.
## Was in der Statusabfrage steht
```xml
<Server version="1.21.0.0" mapSize="4096" mapName="…" dayTime="46057948">
<Slots capacity="4" numUsed="3">
<Player isUsed="true" isAdmin="true" uptime="128" x="…" y="…" z="…">Name</Player>
</Slots>
<Mods> <Mod name="…" author="…" version="…">Titel</Mod> <!-- 110x -->
<Farmlands><Farmland id="1" owner="0" area="22.3" price="1340352" x="…" z="…"/>
<Fields> <Field id="1" x="…" z="…" isOwned="false"/>
<Vehicles> <Vehicle name="…" type="…" x="…" z="…" fillTypes="…" fillLevels="…" isAIActive="false"/>
```
`owner` ist die Hof-**Nummer**, nicht der Spielername. Welcher Spieler zu
welchem Hof gehört, steht in keinem Endpunkt — deshalb die Zuordnung im Panel.
## Koordinaten
**x nach rechts, z nach unten, und die Welt läuft von `-mapSize` bis
`+mapSize`** — also doppelt so weit, wie der Name vermuten lässt.
Das ist die Stelle, an der man zweimal falsch abbiegt:
`-mapSize/2 … +mapSize/2` wirkt naheliegend und sieht auf den ersten Blick
sogar richtig aus, weil die Parzellen zueinander stimmen. Tatsächlich zieht es
jede Parzelle um Faktor zwei vom Mittelpunkt weg, und am Ende liegen die
Felder im Wald.
Ein Test, der die Koordinaten auf ihre eigene Bounding-Box normiert, merkt das
**nicht** — er prüft nur die Anordnung und besteht bei jedem Maßstab.
### Woran man es festmacht
Viele Karten tragen eingebrannte Marken `H1…H8` mit einer Legende, welche
Parzelle das ist (`131 H1`, `132 H2`, …). Das sind acht kostenlose Passpunkte.
Mit dem richtigen Maßstab liegen die Parzellen-Schwerpunkte **unter 15 px** von
ihrer Marke entfernt, gemessen auf einem 1024er Bild; mit dem falschen rund
200 px. Der Unterschied ist so deutlich, dass eine einzige Prüfung reicht.
## Was es nicht gibt
**Welche Frucht auf einem Feld steht und wie weit sie ist.** Das liegt in
`densityMap_fruits.gdm`, einer Binärdatei ohne öffentliche Spezifikation, die
nur im kompletten Savegame-ZIP steckt — und das lädt man über die
Admin-Oberfläche, nicht über den Code.
Daran ändert auch kein Mod etwas. [Crop Growth Stage
Info](https://www.farming-simulator.com/mod.php?mod_id=232903) und [Additional
Field Info](https://github.com/yumi-modding/FS25_additionalFieldInfo) berechnen
genau diese Werte, sind aber reine HUD-Overlays: Lua, `modDesc.xml`, ein Icon —
nichts, was eine Datei schreibt oder einen Port öffnet.
Bestätigt durch die Konkurrenz. Keiner dieser Bots zeigt Feldfrüchte, obwohl
einer davon Geld kostet:
- [GamePuls](https://bot.dein-gamepuls.de) — kommerziell, mit Premium-Stufe
- [Farm Sim Game](https://www.farmsimgame.com/) — gehostet
- [IceEagle132](https://github.com/IceEagle132/Farming-Simulator-25-Discord-Bot)
- [DJWoodZ](https://github.com/DJWoodZ/Farming-Simulator-Discord-Bot)
- [cloudmaker97](https://github.com/cloudmaker97/FS25-Discord-Bot)
**Der aktuelle Monat.** Er steht in keinem Endpunkt.
`playTime` aus dem Savegame taugt nicht dafür: die Datei wird nur beim
Autosave geschrieben und hinkt bis zu einer Viertelstunde hinterher. Über zwei
Stunden gemessen stieg `playTime` um 50, während die Spieluhr 18,7 Stunden
weiterlief — daraus lässt sich nichts rechnen.
`dayTime` in der Statusabfrage ist dagegen live und zählt Millisekunden seit
Tagesbeginn. Bei `plannedDaysPerPeriod = 1` ist jeder Rücksprung um Mitternacht
ein Monatswechsel. Also: Monat einmal im Panel eintragen, danach zählt der Bot
an dieser Uhr selbst weiter. Steht der Server leer, steht auch die Spielzeit —
und der Monat bleibt richtigerweise stehen.
Die zwölf Perioden sind übrigens schlicht Monate: `EARLY_SPRING` ist März,
`EARLY_AUTUMN` September.
**`growthMode`** sagt, ob überhaupt etwas wächst (`2` = pausiert). Auf die
Preise hat das keinen Einfluss — die Kurve hängt am Monat, nicht am Wachstum.
## Fallstricke
- **Parzellen haben nur Schwerpunkt und Fläche, keine Umrisse.** Die Karte
zeichnet flächengleiche Kreise. Bei langen schmalen Feldern sieht man das.
- **Die Modliste steht vor den Parzellen.** Wer nur die ersten Zeilen
anschaut, hält den Feed für eine reine Statusabfrage.
- **Spargel sprengt jede Preisliste.** Er schwankt zwischen 26 und 7540 € und
verdrängt nach Schwankungsbreite sortiert jede echte Feldfrucht. Deshalb
arbeitet die Preisliste mit einer Auswahl statt mit einem Ranking.
- **Das Luftbild als PNG ist zehnmal so gross wie nötig** — 2,5 MB statt
250 KB. Es ist ein Foto, also JPEG.