Lpc Manpages

num2string()

FUNKTION:
     varargs string num2string(int number, int options, int casus, int demon);

DEFINIERT IN:
     /std/thing/language.c

BESCHREIBUNG:
     Diese Funktion wandelt eine uebergebene Zahl in das zugehoerige
     Zahlwort um. Wer nur das reine Wort braucht, muss ausser der Zahl
     kein weiteres Argument angeben.

     Die Optionen koennen beliebig kombiniert werden, auch Optionen aus
     der selben Gruppe. Die Kombinationen machen aber nicht immer Sinn.
     Sinnfreie Aufrufe werden teilweise abgefangen und in sinnvolle
     Bahnen gelenkt, aber nicht in jedem Fall.

     Wenn eine Zahl als Adjektiv benutzt wird (z. B. "der vierte Mann"),
     sollte immer die automatische Deklination NUM_DECLINE gewaehlt werden.

     Wer mit NUM_STEM die Endungen selbst anhaengen will (zum Beispiel wenn
     es Gegenstaende nur in der Raumbeschreibung aber nicht als Objekt gibt)
     muss sich darueber im Klaren sein, dass manche Zahlentypen nur im
     Singular oder im Dual dekliniert werden. Beispiele:
        "Da steht eine Eiche" (Zahlwort 1 muss dekliniert werden)
        "Da stehen drei Eichen" (Zahlwort 3 darf nicht dekliniert werden)
     Nenner von Bruechen:
        "Er isst den ganzen Kuchen" (Zahlwort 1 dekliniert)
        "Er isst den halben Kuchen" (Zahlwort 2 dekliniert)
        "Er isst einen drittel Kuchen" (Zahlwort 3 nicht dekliniert)

     Bei Benutzung der automatischen Deklination NUM_DECLINE wird ebenso wie
     bei anderen deklinierten Adjektiven automatisch ein Blank angehaengt.

     Die Argumente casus und denom werden nur zum Deklinieren gebraucht und
     koennen sonst weggelassen werden.
               
ARGUMENTE:
     number
          Die Zahl, die als Zahlwort dargestellt werden soll.

     options
          Naehere Angaben ueber die Zahlenart, die gewuenscht wird, und
          die genaue Form. Die Optionen sind in <language.h> vordefiniert
          und koennen beliebig miteinander kombiniert werden, z. B.
          NUM_ORDINAL | NUM_DECLINE

          Es gibt drei Hauptgruppen von Optionen: Die Zahlenart, das
          aeussere Erscheinungsbild und die Modifier.

          Zahlenarten:

          NUM_CARDINAL
            Kardinalzahl ("normale" Zahl): eins, zwei, drei
            Dies ist der Standard, wenn keine Zahlenart angegeben wird

          NUM_ORDINAL
            Ordnungszahl: erst(er), zweit(er), dritt(er)

          NUM_FRACTION
            Nenner eines Bruchs: ganz, halb, drittel, viertel

          NUM_GROUP
            Staerkenangabe einer Gruppe: allein, zu zweit, zu dritt

          NUM_TIMES
            Wie oft: einmal, zweimal, dreimal

          NUM_MULTIPLE
            Vielfachheit: einfach, doppelt, dreifach

          Erscheinungsbilder:

          NUM_WORD
            als Zahlwort: eins, zwei, drei  (Standard)

          NUM_NUM
            als arabische Zahl (Dezimalsystem): 1, 2, 3

          NUM_ROMAN
            als roemische Zahl: I, II, III

          NUM_AUTO
            Automatische Entscheidung ob Ziffern oder Wort benutzt wird.
            Zahlen bis 12 werden als Wort, darueber hinaus in Ziffern
            ausgegeben.
            NUM_AUTO | NUM_ROMAN gibt roemische Zahlen bis ca. 10000 an,
            danach wird wegen Haeufung des Tausenderzeichens M auf
            arabische Zahlen umgeschaltet

          NUM_CENTURY
            Zahlen 1100 bis 1999 werden bei der Ausformulierung 
            aufgeteilt wie die damals ueblichen Jahreszahlen, also
            1980 = "neunzehnhundertachtzig" statt
              "eintausendneunhundertachtzig"

          NUM_COLL
            (colloquial) Bestimmte Zahlwoerter werden durch umgangs-
            sprachliche Namen ersetzt: eine handvoll, ein Dutzend etc.

          NUM_ROUGH
            Anstelle einer praezisen Zahlenangabe wird eine ungefaehre
            Groessenordnung zurueckgegeben: 26 -> "etwa zwei Dutzend"

          Modifier:

          NUM_RAW
            Die blanke Zahl als Stand-Alone, bzw. als Adverb:
            eins, zwei, drei, einmal, zweimal, dreimal

          NUM_STEM
            Der Wortstamm ohne Endung, so dass der Anwender dem Wort
            selbst die grammatisch passende Endung hinzufuegen kann:
            ein, zwei, drei, erst, zweit, dritt, einmalig, zweimalig

          NUM_DECLINE
            Das Wort wird automatisch passend fuer das Objekt
            dekliniert, in dem die Funktion aufgerufen wird:
            "dritter " in "Ein dritter Ork greift Dich an"
            Dafuer muessen die beiden hinteren Argumente casus und
            demon angegeben werden.
          
     casus
          (Nur fuer automatische Deklination)
          Der grammatische Fall, in dem die Zahl stehen soll:
             WER, WESSEN, WEM, WEN

     demon
          (Nur fuer automatische Deklination)
          Bezieht sich die Zahl auf einen bestimmten oder einen
          unbestimmten Gegenstand?
             0 = INDEF_ARTICLE = es wird zum Gebrauch nach dem unbestimmten
                   Artikel dekliniert, z. B. "ein zweiter "
             1 = DEF_ARTICLE   = es wird zum Gebrauch nach dem bestimmten
                   Artikel dekliniert, z. B. "der zweite "
             2 = AUTO_ARTICLE  = es wird automatisch auf bestimmt oder
                   unbestimmt entschieden (siehe SuggestArticle),
                   genau wie bei name(), DeclAdj() und anderen Funktionen
             3 = NO_ARTICLE    = es wird zum Gebrauch als Stand-Alone
                   ohne Artikel dekliniert, z. B. "in zweiter Reihe"

RUECKGABEWERT:
     Das gewuenschte Zahlwort als String.
     
BEISPIELE:
     
     write( "Die Antwort ist " + num2string(42) +".\n" );
     Die Antwort ist zweiundvierzig.

     pl = find_player("marita");
     say( pl->Name(WER) + " springt den "
	  + num2string( 2, NUM_MULTIPLE | NUM_STEM)
          + "en Rittberger.\n");
     Marita springt den doppelten Rittberger.

     write( "Ueber dem Hauseingang steht geschrieben: Erbaut anno "
            + num2string(1648, NUM_ROMAN) + "\n" );
     Ueber dem Hauseingang steht geschrieben: Erbaut anno MDCXLVIII

     monster = find_object("ork");
     write( "Das ist " + monster->name(WER) + ". Du koenntest jetzt "
	   + monster->QueryArticle(WEN,1)
           + monster->num2string( 37, NUM_ORDINAL | NUM_DECLINE, WEN, 1)
	   + monster->name(RAW)
           + " fuer heute killen.\n" );
     Das ist ein Ork. Du koenntest jetzt den siebenunddreissigsten Ork
     fuer heute killen.

SIEHE AUCH:
     /sys/thing/language.h, /std/thing/description.c,
     DeclAdj, SuggestArticle, name, QueryArticle
     array_to_string