Om du skriver egna namn på exits, så kom ihåg att det första
("officiella") namnet bör passa in i meningen "Spelarnamn
går
riktning." (t.ex. Zytor går norrut.
)
Till exempel:
@dig "in i sfären,in" to #62
$phys (#141)
.
$phys
definierar följade verb och properties:
Property | Definition |
---|---|
OBJ .genus
| Objektnummer för genusobjektet som gäller det här objektet. |
STR .dname
| Namn i bestämd form (t.ex. "den gröna gurkan") |
Verb | Definition |
STR :dtitle()
| Egenligen definierad på $root_class ; returnerar
namn i bestämd form (motsvarande :title ).
|
STR :dtitlec()
| Egenligen definierad på $root_class ; returnerar
namn i bestämd form med stor bokstav (motsvarande
:titlec ).
|
:set_dname(STR name)
| Sätter .dname . Motsvarar :set_name.
|
:set_genus(OBJ genus)
| Sätter .genus .
|
STR :genus_sub(STR text, LIST objekt [, LIST alt])
| Se nedan. |
För att göra det enklare att se till att .dname
är
korrekt satt, tar alla kommandon som sätter namn
(@create
, @rename
, o.s.v) numera följande
syntax:
namn,dnamn,alias,alias,...
namn:dnamn,alias,alias,...
namn:dnamn:alias,alias,...
I normalt användande ska namn ha obestämd artikel (en eller
ett) och dnamn ha bestämd artikel (den, det eller de) om
det normalt används (normalt om det finns ett adjektiv med i namnet.)
Ingendera ska ha stor bokstav, utom för namn (som alltid ska skrivas
som namn oavsett platsen i meningen.) För namn ska det inte vara någon
obestämd artikel.
Till exempel:
För att sedan sätta rätt genus på grejerna, använd kommandot@create $thing named "en grön gurka,den gröna gurkan,grön gurka,gröna gurkan,gurka,gurkan"
@create $phys named "ett staket,staketet,staket"
@genus
:
Följande genus finns definierade:@genus gurka är rs
@genus staket är ns
maskulinum singularis (ms) #169
femininum singularis (fs) #170
reale singularis (rs) #171
neutrum singularis (ns) #172
maskulinum pluralis (mp) #173
femininum pluralis (fp) #174
reale pluralis (rp) #175
neutrum pluralis (np) #176
För att bygga texter med hjälp av detta finns det nya verbet
$genus_utils:substitute
och hjälpverbet
:genus_sub
definierat på $phys
. Det senare
används på följande sätt:
objekt:genus_sub(text [,{andra_objekt} [,{special}]])
... där objekt är huvudobjekt, normalt player
,
andra_objekt är andra föremål som behöver nämnas, och
special används normalt inte. text kan vara en
sträng eller lista av strängar, som kan innehålla följande
specialsekvenser. Alla sekvenser börjar med %
följt av
en siffra; om siffran är 0 eller saknas avses huvudobjektet, annars
avses ett objekt i listan andra_objekt;
t.ex. %3n
gäller det tredje objektet i listan
andra_objekt. Dessutom kan alla sekvenser skrivas med stor
bokstav, t.ex. %3N
, för att få samma text med stor
bokstav.
Sekvens | Definition |
---|---|
% nr n
| Objektets namn i obestämd form. |
% ~ nr n
| Objektets namn i obestämd form, utan inledande en eller ett. |
% nr d
| Objektets namn i bestämd form. |
% ~ nr d
| Objektets namn i bestämd form, utan inledande den, det, eller de. |
% nr s
| Objektets pronomen i subjektsform (t.ex. han). |
% nr o
| Objektets pronomen i objektsform (t.ex. honom). |
% nr r
| Objektets pronomen i reflexiv form (t.ex. sig). |
% nr p vad
| Objektets pronomen i possesiv form (t.ex. sin,
sitt eller sina). Formen ska passa
vad, som antingen kan vara en siffra av samma typ som
nr (och då anpassas till motsvarande objekt) eller en
bokstav n , t eller a för
n-form (maskulinum, femininum eller reale), t-form (neutrum) eller
pluralform, respektive.
|
% nr g vad
| Objektets pronomen i genitivform (t.ex. hans).
Formen ska passa vad, som antingen kan vara en siffra av
samma typ som nr (och då anpassas till motsvarande
objekt) eller en bokstav n , t eller
a för n-form (maskulinum, femininum eller reale),
t-form (neutrum) eller pluralform, respektive. (Formen används
inte i tredje person, men har betydelse när man använder
special, se nedan.)
|
% nr e
| Artikel för ental i obestämd form, d.v.s. en eller ett. Om objektet är i plural blir det ingenting; dessutom utplånas eventuella blanktecken som följer kommandot. |
% nr ( property )
| Innehållet av property på det respektiva objektet. |
% nr < verb >
| Anropar
objekt:verb_sub("verb") och
sätter i resultatet; om inte
objekt:verb_sub existerar, sätter in
verb omodifierat.
|
% nr { n-form ,
t-form , pluralform }
| Välj fras beroende på det specificerade objektets genus. Kan
användas b.la. för att prata om något i less specifika termer,
t.ex. %{någon sådan,något sådant,några sådana} .
|
% nr #
| Objektets objektnummer, t.ex. #123. |
Listan special specificerar att vissa objekt inte har sina
normala pronomen; special börjar med huvudobjektet och
sedan alla objekten i andra_objekt i tur och ordning. Om
special saknar värden, eller värdena är icke-objekt
(t.ex. 0
) antas att det objektet inte har någonting
speciellt.
Special används normalt med objekten $jag
,
$du
, $vi
och $ni
för att få
meddelanden att anpassa sig efter den det är riktat till. För att
ytterligare underlätta, finns det två specialsekvenser som normalt ger
namn, men ger pronomen om de används med special:
Sekvens | Definition |
---|---|
% nr m typ
| Objektets namn i obestämd form (som %n ), eller
pronomen av typ typ.
|
% nr c typ
| Objektets namn i bestämd form (som %d ), eller
pronomen av typ typ.
|
; me:genus_sub("%Ms äter %1d.", {#231})
=> "Zytor äter den gröna gurkan."
; me:genus_sub("%Ms äter %1d.", {#231}, {$du})
=> "Du äter den gröna gurkan."
; me:genus_sub("%Ms äter %1d.", {#233})
=> "Zytor äter det vita brödet."
; me:genus_sub("%Ms äter %1d.", {#233}, {$du})
=> "Du äter det vita brödet."
; me:genus_sub("%Ms äter %1n.", {#231}, {$du})
=> "Du äter en grön gurka."
; me:genus_sub("%Ms äter %1n.", {#231})
=> "Zytor äter en grön gurka."
; me:genus_sub("%Ms äter %1n.", {#233})
=> "Zytor äter ett vitt bröd."
; me:genus_sub("%Ms äter %1n.", {#233}, {$du})
=> "Du äter ett vitt bröd."
; me:genus_sub("%Ms sätter %r.")
=> "Zytor sätter sig."
; me:genus_sub("%Ms sätter %r.", {}, {$jag})
=> "Jag sätter mig."
; me:genus_sub("%Ms sätter %r.", {}, {$du})
=> "Du sätter dig."
; me:genus_sub("%Ms sätter %r.", {}, {$vi})
=> "Vi sätter oss."
; me:genus_sub("%Ms sätter %r.", {}, {$ni})
=> "Ni sätter er."
Sekvens | Singularis | Pluralis | Special | ||||||
---|---|---|---|---|---|---|---|---|---|
Maskulinum | Femininum | Reale | Neutrum | $jag
| $du
| $vi
| $ni
| ||
%s
| han | hon | den | det | de | jag | du | vi | ni |
%o
| honom | henne | den | det | dem | mig | dig | oss | er |
%r
| sig | mig | dig | oss | er | ||||
%pn
| sin | min | din | vår | er | ||||
%pt
| sitt | mitt | ditt | vårt | ert | ||||
%pa
| sina | mina | dina | våra | era | ||||
%gn
| hans | hennes | dess | deras | min | din | vår | er | |
%gt
| mitt | ditt | vårt | ert | |||||
%ga
| mina | dina | våra | era | |||||
%e
| en | ett | <inget> | Påverkas ej av special |
För maximal flexibilitet rekommenderas det att använda följade teknik för att koda meddelanden:
Lagra alla meddelanden som properties med namn som slutar med
_msg
. Denna konvention används i LambdaCore för att ange
att detta är ett meddelande som kan sättas av en Builder eller annan
användare. Ett exempel på en sådan sträng:
@prop #1234.spark_msg "%Ms sparkar till %1d."
Denna sträng kan ändras med kommandot:
@spark föremål is "%Ms sparkar till %1d."
Definiera ett verb som har som alias alla dina
_msg
-strängar. Detta verb definieras lämpligen som:
return player:genus_sub(this.(verb),{this,player.location,dobj,iobj},args);
Du kan sedan använda det i kod på följande sätt:
player:tell(this:spark_msg($du));
player.location:announce(this:spark_msg());
För det givna meddelandet, kommer den som gör något att se:
Du sparkar till den lustiga lilla strutsen.
... medan resten av alla närvande ser:
Zytor sparkar till den lustiga lilla strutsen.
En sak som är värd att tänka på är att ibland kan det vara lämpligt
att ha olika meddelandesträngar för dig och alla andra. LambdaCore
brukar ha ett "o" före den "offentliga" versionen av sådana
meddelanden; t.ex. $thing
har
take_failed_msg
som bara användaren ser, och
otake_failed_msg
som alla andra ser, men som normalt är
blank. I det ovanstående exemplet kan du göra något som:
@prop #1234.spark_msg "%Ms sparkar till %1d. Är %ms helt pucko?"
@prop #1234.ospark_msg "%Ms sparkar till %1d. Har %s ballat ur totalt?"
player:tell(this:spark_msg($du));
player.location:announce(this:ospark_msg());
Du ser då:
Du sparkar till den lustiga lilla strutsen. Är du helt pucko?
... medan resten av alla närvande ser:
Zytor sparkar till den lustiga lilla strutsen. Har han ballat ur totalt?
Följade nya inbyggda funktioner har laggts till i servern för att stödja icke-ASCII-tecken:
Funktion | Betydelse |
---|---|
INT isupper(STR c)
| Sant om första tecknet i c är en stor bokstav. |
INT islower(STR c)
| Sant om första tecknet i c är en liten bokstav. |
INT isalpha(STR c)
| Sant om första tecknet i c är en bokstav. |
INT isdigit(STR c)
| Sant om första tecknet i c är en siffra. |
INT isxdigit(STR c)
| Sant om första tecknet i c är en hexadecimal siffra. |
INT isspace(STR c)
| Sant om första tecknet i c är ett blanktecken. |
INT isprint(STR c)
| Sant om första tecknet i c är ett icke kontrolltecken. |
INT isgraph(STR c)
| Sant om första tecknet i c är ett icke kontroll-, icke blanktecken. |
INT ispunct(STR c)
| Sant om första tecknet i c är ett punkteringstecken. |
INT iscntrl(STR c)
| Sant om första tecknet i c är ett kontrolltecken. |
INT isalnum(STR c)
| Sant om första tecknet i c är en bokstav eller siffra. |
INT isascii(STR c)
| Sant om första tecknet i c är ett tecken som finns i 7 bitars ASCII. |
STR tolower(STR s)
| Returnerar en sträng med alla stora bokstäver i s utbytta mot små. |
STR toupper(STR s)
| Returnerar en sträng med alla små bokstäver i s utbytta mot stora. |
INT ord(STR c)
| Returnerar ISO-koden för första tecknet i c. |
STR chr(INT n, ...)
| Returnerar en sträng med tecken av de givna ISO-koderna. Om de
givna koderna inte är legala teckenkoder returneras
E_INVARG . (Legala teckenkoder är f.n. 9, 32-126, och
161-255.)
|
Funktion | Betydelse |
---|---|
STR ctime([INT t [, STR zon]])
| Returnerar tiden t (eller nuvarande tid) som sträng. Om zon är angiven anpassa tiden till den angivna zonen. (zon är lokalt tillägg.) |
FLOAT ftime()
| Returnerar nuvarande tid, som time() , men som
flyttal.
|
... plus de följade för avancerad matematik:
Funktion | Betydelse | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FLOAT asinh(FLOAT x)
|