Vorlage DokumentationVorlageFAQ
Allgemeines
   Aufruf
   Einleitung
   Installation
   Konfiguration
   Syntax
Einführung
   MetabefehlsAusdruecke
   MetabefehlsSyntax
   RegulaereAusdruecke
   VordefinierteVariablen
Funktionen
   abs()
   after()
   and()
   antoi()
   before()
   ceil()
   change()
   close()
   crop()
   equals()
   exp()
   flatten()
   float()
   floor()
   int()
   isnothing()
   itoan()
   length()
   log()
   log10()
   match()
   not()
   open()
   or()
   random()
   read()
   readline()
   sign()
   status()
   statustext()
   substr()
   system()
   time()
   tolower()
   toupper()
   typeof()
   write()
   writeline()
   xname()
   xor()
Metabefehle
   #after
   #array
   #break
   #call
   #config
   #const
   #debug
   #default
   #dict
   #else
   #every
   #forever
   #func
   #if
   #ifregion
   #ifunit
   #include
   #input
   #message
   #next
   #notrace
   #proc
   #return
   #sort
   #table
   #tag
   #trace
   #var
   #while
Rückruf-Prozeduren
   CalcUnitCapacities
   CreateRegionHeader
   CreateUnitHeader
   EndRegion
   EndUnit
   OnBuilding
   OnExit
   OnInit
   OnRegion
   OnShip
   OnUnit
   OutputLineFilter
Report-Objekte
   building
   grenze
   partei
   preise
   races
   region
   report
   ship
   things
   unit
Anhang
   Danksagungen
   SkriptDebugger
   VorlageFAQ

Häufig gestellte Fragen

Warum gibst Du den Source nicht heraus? Ist Vorlage so geheim?

Ich habe, weil ich ursprünglich nicht vorhatte Vorlage überhaupt zu veröffentlichen, und weil auch ich ein fauler Mensch bin, Templates und Klassen verwendet deren Benutzung mir erlaubt ist, die Veröffentlichung des Quelltextes jedoch nicht. Nun kann man darüber streiten ob das klug war, aber die Tatsache bleibt bestehen. Solange ich also nicht eine Version ohne diese Anteile schreibe, kann der Source nicht freigegeben werden.

Es ist leider sehr schwierig diese Teile zu entfernen, weil sie sehr tiefgreifend in Vorlage verwendet werden und das Programm quasi darum aufgebaut ist. Ich habe schon vor langer Zeit begonnen eine Version ohne solche Klassen zu schreiben, aber meine Zeit reicht kaum, dort nennenswerte Fortschritte zu erzielen, darum wird dies wohl noch eine Weile dauern. Einen auch nur geschätzten Termin gebe ich nicht bekannt, da ich damit schonmal gründlich daneben lag. wink


Warum zuckt nur kurz ein Fenster auf wenn ich Vorlage starte und das war's?

Vorlage ist eine Konsolenanwendung, d.h. es wird z.B. unter Windows nicht durch Doppelklick gestartet, sondern über die Eingabeaufforderung (das "DOS-Fenster"). Wie Vorlage richtig zu benutzen ist erfährt man am besten im Abschnitt über den Aufruf, oder man benutzt im Windows-Fall z.B. WinVorlage.
ALERT! Achtung: WinVorlage ist sehr veraltet und unterstützt die aktuelle Version von Vorlage nur noch bedingt. Abhilfe ist z.B. -> Vorlage GUI von Ronny Gorzelitz. Alternativ kann man Vorlage auch aus -> Magellan, einem komfortablen grafischen Eressea-Java-Client, heraus benutzen.


Warum bekomme ich bei Befehlen mit Ausdrücken so viele Fehlermeldungen?

Parameter für Metabefehle werden, wie auch bei Eressea-Befehlen durch Leerzeichen getrennt. Daraus resultiert, das in Ausdrücken im Gegensatz zu vielen anderen Programmiersprachen keine Leerzeichen vorkommen dürfen. Es empfiehlt sich also danach mal zu schauen.


Ich habe mich bei einem Objekt-Attribut vertippt. Warum bekam ich keine Fehlermeldung?

Vorlage sollte nicht abhängig davon sein, welche Attribute mir zum Zeitpunkt der Implementation bekannt sind. Daher kann es nicht wissen, ob es ein Attribut gibt, und gibt im Zweifelsfall eben nichts (oder 0) zurück. Um das zu unterbinden, bietet sich die Option '--pedantic' an. Sie erzwingt, das die Attribute Vorlage bekannt sein müssen (neue also in der Konfigurationsdatei nachgepflegt werden müssen).


Warum komme ich beim Nachrechnen für einen Wagenzug auf eine andere Kapazität als Vorlage?

Vorlage berechnet die Kapazität ohne die Fahrer des Wagenzuges abzuziehen. Dies ist halt das tatsächliche Fassungsvermögen (eben die Kapazität) des Zuges. Natürlich kann man ohne die Kutscher nicht fahren, aber das macht den Wert nicht falsch. Um die nutzbare Kapazität zu bekommen muß man das Gewicht der Einheit abziehen, z.B. in einer Funktion:

#func ReitKapazitaet $ENr
{
    $kutscher=unit[$ENr].anzahl*races[unit[$ENr].rasse].Gewicht
    #return unit[$ENr].kap.reiten-$kutscher
}


Warum stimmen die Werte für Eisen oder Laen nicht, wenn ich alle Resourcen meiner Regionen per Skript summiere?

Vorlage gibt für region.eisen oder region.laen u.U. negative Werte zurück. Eine -1 bedeutet dabei, dass es kein Eisen gibt, eine -2 hingegen, das man keine Einheit mit genug Talent in der Region hat, um die Frage zu beantworten. Ob ein Terrain Eisen oder Laen enthalten kann, legen die entsprechenden Spalten im Kapitel [Terrains] der Konfigurationsdateien fest. Man muß also vor dem Aufaddieren jeweils prüfen ob der Wert größer 0 ist.


Wie bekomme ich Anführungszeichen in den CR?

Garnicht. Vorlage verhindert die Ausgabe von Anführungszeichen, weil es bisher in der Strukturbeschreibung keine Aussagen bezüglich der Behandlung gibt. Die Message-Regeln im CR verwenden allerdings inzwischen den Backslash zum escapen, so das sich das vermutlich in Zukunft ändern wird. In der Zwischenzeit kann man sich der Alternativform mit Tilden (~) bedienen.

// Achtung falsch:
// #after 2 { BENENNE EINHEIT "Botschafter Kosh" }

wird zu

// Besser:
// #after 2 { BENENNE EINHEIT Botschafter~Kosh }

bzw. in Ausdrücken

// Wenn es ein Ausdruck ist (unsinniges Beispiel):
// #after 2 { BENENNE REGION '|'+region[0,0].name+'|' }
// oder
// #after 2 { BENENNE REGION change(region[0,0].name,' ','~') }

Eressea behandelt "Foo bar" und Foo~bar gleich, d.h. im späteren Report sind die Tilden nicht mehr enthalten.


Wie kann ich Einheiten für andere Clients als bestätigt markieren?

Früher war der übliche Weg eine Einheit zu markieren, ihr in den Befehlen einen speziellen Kommentar zu geben:

#message 'bestaetigt'

ergibt

; bestaetigt

Und wird dann vom Client u.U. erkannt.

Wenn man einen CR erzeugt, ist aber inzwischen speziell für Magellan üblich, ein zusätzliches Tag ejcOrdersConfirmed in den CR einzufügen. Folgender Code erledigt dies:

#tag EINHEIT ejcOrdersConfirmed 1

Wem das zu lang ist, der kapselt das halt in einer Prozedur mit kurzem Namen. wink


Wie berechnet man den Abstand zwischen zwei Hex-Regionen?

Basierend auf einem Code von Hubert Mackenberg in Vorlage-Skript übertragen:

; Code based on C Code by Hubert Mackenberg. Thanks.
; Abstand zwischen $x1,$y1 und $x2,$y2 berechnen
#func HexDistance $x1 $y1 $x2 $y2
{
    #var $dx $dy
    $dx=$x1-$x2
    $dy=$y1-$y2

    ; Bei negativem dy am Ursprung spiegeln, das veraendert
    ; den Abstand nicht

    #if $dy<0
    {
        $dy=-$dy
        $dx=-$dx
    }

    ; dy ist jetzt >=0, fuer dx sind 3 Faelle zu untescheiden
    #if $dx>=0
    {
        #return $dx+$dy
    }
    #else
    {
        #if -$dx>=$dy { #return -$dx }
        #else { #return $dy }
    }
}
Revision 11 Jan 2006

Page design, graphics and contents (c) copyright 1999-2004
by S.Schümann and contributing authors