Vorlage Dokumentationxname()
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

xname()

Erzeugung von Zeichenmustern für Benennungen

Syntax

<str>=xname(<rne>,<maxrep>)

Beschreibung

Mit xname() wird ein Name mittels xNamer-Mechanismen erzeugt, wobei bei Kollisionen (also doppelten Namen) max. maxrep erneute Versuche unternommen werden.

Parameter

rne Regulärer Namensausdruck, eine Regel, mit der der Name erzeugt werden soll.
maxrep Maximale Anzahl von erneuten Versuchen bei Erzeugung von schon vorhandenen Namen.

Reguläre Namensausdrücke

Die Regulären Namensausdrücke erzeugen über ein paar einfache Regeln die Zeichenmuster, die einen Namen ausmachen. Dabei gibt es folgende Regeln:

(<regel> <regel> ...) Die runden Klammern sorgen für eine Zusammenfügung der dazwischen angegebenen Regeln.
[<regel>|<regel>|...] Die eckigen Klammern bewirken, das die durch den Strich getrennten Regeln als Alternativen angesehen werden, xNamer also eine von ihnen zufällig auswählt.
[<regel>|<regel>|...]<n> Diese Variante der vorherigen Regel erzwingt die n-fache Wiederholung zufälliger Auswahl aus den Regeln, wobei die Teilergebnisse aneinandergefügt werden.
[<regel>|<regel>|...]<n>:<m> Diese Variante der vorherigen Regel bewirkt eine Wiederholung um einen Zufallswert zwischen n und m.
$name Wird durch das Ergebnis der Regel mit dem Namen $name ersetzt.
irgendwelche Buchstaben Einfache Buchstaben werden direkt übernommen, wobei ein # als Leerzeichen verwendet werden kann.

Beispiel

Es sei dies eine Regeldatei die Vorlage mittels der Option '-xn' übergeben wurde:

; Dies ist eine (einfache) Vornamen-Regel
$fore = [Carl|Pete|Hank]

; Dies ist eine Nachnamen-Regel
$sur  = [Higgins|Johnson|Smith]

; Diese Regel kombiniert die Namensteile zu vollen Namen
$name = ($fore # $sur)

Aus dieser Regel könnten durch #message xname('$name',10) z.B. folgende Namen entstehen:

Carl Johnson
Hank Higgins
Hank Johnson
Pete Smith
Carl Higgins

Natürlich ist die ein äußerst primitives Beispiel, aber alle Namen meiner Zwerge sind nach xNamer-Regeln benannt, und auch Gulrak ist auf diese Weise entstanden. Hierzu müssen natürlich schon die Namensteile aus kurzen, möglichst gut zusammenpassenden Zeichenfolgen zusammengesetzt werden.

Referenzen

-

Revision 07 Aug 2003

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