Diskussion:DEFAULT
Entwurf für Defaultbefehle
TODO - mit Seiten Befehl und Befehle einschicken synchronisieren
Nachdem ich meine Befehle eingeschickt habe und der Server die Auswertung erstellt hat, kommen für jede Einheit bestimmte Befehle zurück. Das sind die Defaultbefehle. Sie werden in der nächsten Woche ausgeführt, falls ich für diese Einheit keine Befehle einschicke. Die Defaultbefehle bekommt man mit dem Report als Textdatei (auch Befehlsvorlage genannt) zugeschickt, falls man sie nicht mit OPTION ZUGVORLAGE NICHT abgeschaltet hat. Außerdem sind sie im Computerreport (CR) enthalten. Der Normalreport (NR) enthält immer nur den ersten langen Defaultbefehl. Man kann dort also nicht alle Defaultbefehle sehen.
In die Defaultbefehle einer Einheit werden normalerweise alle langen Befehle übernommen. Ausgenommen davon sind ATTACKIERE, FOLGE und NACH. Außerdem werden alle //-Kommentare und alle Befehle, die mit @ beginnen übernommen. Die Schreibweise wird dabei möglicherweise standardisiert.
Eingeschickte Befehle:
EINHEIT abc ; diese Woche nur 10 kAufe 10 Bals VERKAUFE 100 Öl // nächste Woche mehr Balsam kaufen @GIB xyz ALLES Balsam ; Transporter GIB abc 100 Silber REKRUTIERE 1
Defaultbefehle der nächsten Woche
EINHEIT abc KAUFE 10 Bals VERKAUFE 100 Öl // nächste Woche mehr Balsam kaufen @GIB xyz ALLES Balsam ; Transporter
Was passiert, wenn die Einheit illegalerweise mehrere lange Befehle bekommen hat (zum Beispiel LERNE und ARBEITE), ist übrigens nicht genau definiert. Das Gleiche gilt für sonstige ungültige Befehle.
Der Befehl DEFAULT
Der Befehl DEFAULT ändert dieses Verhalten, indem die Defaultbefehle, die vom Server zurückkommen, verändert werden. Wenn die Einheit einen DEFAULT-Befehl bekommen hat, werden ihre langen Befehle nicht in die Vorlage übernommen. Lange Kommentare und kurze @-Befehle werden dagegen übernommen. Die gegebenen Befehle werden dabei bis zu einem gewissen Grade validiert. Ungültige Befehle werden also nicht übernommen. Diese Prüfung hat jedoch Grenzen, es ist besser, sich nicht darauf zu verlassen.
Man kann auch kurze Befehle mit dem Befehl DEFAULT einfügen.
Eingeschickte Befehle:
EINHEIT abc ; diese Woche nur 10 Kaufe 10 Balsam VERKAUFE 100 Öl // nächste Woche lernen @GIB xyz ALLES Balsam ; Transporter GIB abc 100 Silber REKRUTIERE 1 DEFAULT "GIB 123 50 Silber; nicht vergessen" DEFAULT "LERNE Handel" DEFAULT "XXX" ; kein Befehl, wird nicht übernommen
Defaultbefehle der nächsten Woche
EINHEIT abc GIB 123 50 Silber; nicht vergessen LERNE Handel // nächste Woche lernen @GIB xyz ALLES Balsam ; Transporter
Der Befehl DEFAULT ohne Parameter löscht einfach alle langen Befehle.
Defaultbefehle:
ARBEITE // nix
Eingeschickte Befehle
DEFAULT ARBEITE
Defaultbefehle der nächsten Woche
// nix
Die Einheit würde also dann in der Woche keinen langen Befehl ausführen.
Der Befehl NACH
Der NACH-Befehl spielt eine besondere Rolle: Er wird nicht in die Vorlage übernommen. Stattdessen werden die langen Befehle übernommen, die die Einheit in der letzten Woche in der Vorlage hatte, allerdings nur lange Befehle.
Defaultbefehle
LERNE Reiten @GIB 0 10 Silber // no comment
Eingeschickte Befehle
NACH o
Defaultbefehle der nächsten Woche
LERNE Reiten
Was passiert, wenn sowohl NACH als auch DEFAULT im Spiel ist?
Vorlage:
ARBEITE // jetzt nach westen
Eingeschickte Befehle
DEFAULT "LERNE Ausdauer" // nun lernen NACH w
Defaultbefehle der nächsten Woche
LERNE Ausdauer // nun lernen
DEFAULT löscht also auch hier die langen Defaultbefehle (hier ARBEITE) und setzt sie neu.
Es ist möglich, NACH mit DEFAULT zu setzen. Vorlage:
ARBEITE @GIB 0 1 Silber
Eingeschickte Befehle
DEFAULT "NACH o" ARBEITE @GIB 0 2 Silber
Defaultbefehle der nächsten Woche
NACH o @GIB 0 2 Silber
Defaultbefehle der übernächsten Woche, wenn sonst keine Befehle für die Einheit eingeschickt werden:
@GIB 0 2 Silber
Auch hier würde die Einheit also dann keinen langen Befehl ausführen.
DEFAULT DEFAULT
Ist es möglich, DEFAULT-Befehle zu schachteln, um für mehrere Wochen im Voraus Befehle zu machen? Nun, so etwas wie DEFAULT "DEFAULT 'LERNE Ausdauer'" funktioniert anscheinend, wie man es erwarten würde, aber die Spielleitung möchte lieber keine Garantien dafür abgeben. Für solche Vorhaben sind Scriptsprachen wie Vorlage, ExtendedCommands oder Vorlage besser geeignet.