Substituce parametrů ve zprávách
Úvod
Většina zpráv v knihovně obsahuje zvláštní parametry napsané ve složených závorkách. To umoňuje, aby stejná zpráva mohla být použita v různých kontextech. Konkrétně se tím řeší následující situace:
- dosazení názvů objektů a postav do zpráv
- odkazování se na postavu hráče v jiné, než druhé osobě
- změna přítomného času vyprávění na minulý
- zprávy mohou popisovat chování dalších postav, nejen hráče
Použití parametrů je možné i ve hře, nejen v knihovně. Nejčastěji půjde o dosazování názvů postav a objektů do zpráv. Parametry ke změně osoby a času vyprávění není nutné používat, pokud o to autor hry vysloveně nestojí.
Formát parametrů
Parametry se zapisují do složených závorek. Buď jen samotný název parametru {je}, nebo název parametru a objekt, kterého se parametr týká {kdoco dobj}.
Dostupné parametry pro český jazyk
Názvy objeků a postav
Parametry {kdoco}, {kohočeho}, {komučemu}, {kohoco}, {komčem}, {kýmčím} slouží ke vložení jména postavy hráče nebo názvu objektu v příslušném pádu do generované zprávy. Pokud objekt není specifikován, dosadí se postava hráče.
{Kdoco dobj} už {je} pod {kýmčím iobj}.
Parametry berou název z objektu, kde se vkládá pomocí atributů name, nameKohoCeho, nameKomuCemu, nameKohoCo, nameKomCem, nameKymCim. Pokud některý z atributů není zadán, použije se první pád, resp. atribut name.
torch: Flashlight, OpenableContainer 'malou modrou svítilnu/svítilny' 'malá modrá svítilna'
"{Je|Byla} to jen malá modrá svítilna. "
nameKohoCo = 'malou modrou svítilnu'
nameKohoCeho = 'malé modré svítilny'
gender = 3
;
Pravidelná slovesa v přítomném čase
Parametry {eš}, {neš}, {ješ}, {íš}, {áš} se používají k možnosti změnit osobu a čas slovesa v přítomném čase. Odpovídají pěti slovesným třídám a používají se následujícím způsobem:
"Stoj{íš} před chatou. Les se táhne na východ."
Předpokládá se, že text je napsán ve druhé osobě přítomného času jednotného čísla (obvyklý způsob vyprávění v textových hrách) a charakteristická koncovka slovesa se uzavře do závorek. Pokud bude vyprávění přepnuto do jiné osoby, nebo bude vyprávěno z pohledu jiného pozorovatele, nahradí se patřičně koncovka. Tedy např. v první osobě (pcReferralPerson = FirstPerson u objektu hráče) se vypíše: "Stojím před chatou. Les se táhne na východ."
Pravidelná slovesa v minulém čase
V minulém čase vůbec nezáleží na osobě, ale zato záleží na rodu. Používá se parametr {a}, který je podle rodu v jednotném čísle nahrazen -/a/o a v množném i/y/a.
Ničeho takového si {nejsi} vědom{a}.
Nepravidelná slovesa
Nepravidelná slovesa se vymykají změnám koncovek, a tak musejí být nadefinované každé zvlášť. V knihovně jsou k dispozici některá často používaná: {je}, {není}, {nejsi}, {bys}, {chceš}
I když některá nepravidelná slovesa (např. abys) nejsou samostatně zadaná, lze je dosáhnout s předponou: a{bys}. Podobně jde u některých sloves vyrobit zápory, např. ne{chceš}.
Slovesa v přítomném i minulém čase zároveň
Pokud má zpráva fungovat v obou časech, zavádí se parametr rozvětvení {přítomný čas|minulý čas}. Pokud v některém čase má být uvniř obsažen také parametr k nahražení, uzavře se do hranatých závorek, např.:
Křič{[íš]|el[a] [jsi]} tak hlasitě, jak {|[jsi]} jen doved{[eš]|l[a]}.
V prvním kroku se podle času vyprávění vybere správná část, např. pro minulý čas se zpráva přepíše na:
Křičel{a} {jsi} tak hlasitě, jak {jsi} jen dovedl{a}.
a ve druhém kroku se provede běžné nahrazení parametrů, např. pokud postava hráče je muž a je oslovován v první osobě, věta bude znít: "Křičel jsem tak hlasitě, jak jsem jen dovedl."
Přídavná jména
| Pád | Šablona | Nahrazuje se za |
|---|---|---|
| 1. pád | {ý} | ý, ý, á, é, í, é, é, á |
| 6. pád | {ém} | ém, ém, é, ém, ých, ých, ých, ých |
| 7. pád | {ým} | ým, ým, ou, ým, ými, ými, ými, ými |
Spojení slovesa být a zvratného zájmena
{ses}, {sis}
Osobní zájmena
Název parametru je odvozen z kombinace druhé a třetí osoby ženského či mužského rodu, aby se jednoznačně odlišily všechny pády. Např. Je od {tebe/ní} příliš daleko. vs. Je na {tebe/ni} moc velký.
| Pád | Šablona | Nahrazuje se za |
|---|---|---|
| 1. pád | {ty} | já, ty, on, ona, ono, my, vy, oni, ony, ona |
| 2. pád | {tebe/jí} | mne, tebe, jeho, jí, jeho, nás, vás, jich |
| 2. pád | {tebe/ní} | mne, tebe, něho, ní, něho, nás, vás, nich |
| 2. pád | {tě/jí} | mě, tě, ho, jí, ho, nás, vás, jich |
| 2. pád | {tě/ní} | mě, tě, ho, ní, ho, nás, vás, nich |
| 3. pád | {tobě/jemu} | mně, tobě, jemu, jí, jemu, nám, vám, jim |
| 3. pád | {tobě/němu} | mně, tobě, němu, ní, němu, nám, vám, nim |
| 3. pád | {ti/jí} | mi, ti, mu, jí, mu, nám, vám, jim |
| 3. pád | {ti/ní} | mi, ti, mu, ní, mu, nám, vám, nim |
| 4. pád | {tebe/ji} | mne, tebe, jeho, ji, jej, nás, vás, je |
| 4. pád | {tebe/ni} | mne, tebe, něho, ni, něj, nás, vás, ně |
| 4. pád | {tebe/jej} | mne, tebe, jej, ji, jej, nás, vás, je |
| 4. pád | {tebe/něj} | mne, tebe, něj, ni, něj, nás, vás, ně |
| 4. pád | {tě/ji} | mě, tě, ho, ji, ho, nás, vás, je |
| 4. pád | {tě/ni} | mě, tě, ho, ni, ho, nás, vás, ně |
| 6. pád | {tobě/něm} | mně, tobě, něm, ní, něm, nás, vás, nich |
| 7. pád | {tebou/jím} | mnou, tebou, jím, jí, jím, námi, vámi, jimi |
| 7. pád | {tebou/ním} | mnou, tebou, ním, ní, ním, námi, vámi, nimi |
Přivlastňovací zájmena
| Pád | Rod | Šablona | Nahrazuje se za |
|---|---|---|---|
| 1. pád | mužský živ. | {tvůj} | můj, tvůj, jeho, její, jeho, náš, váš, jejich |
| 1. pád | ženský | {tvoje} | moje, tvoje, jeho, její, jeho, naše, vaše, jejich |
| 4. pád | ženský | {tvoji} | moji, tvoji, jeho, její, jeho, naši, vaši, jejich |
Předložky pro postoje
{na obj/kohoco}, {na obj/komčem}
Implicitní vztažné objekty
Parametry svůj tvar volí podle času vyprávění, podle osoby, ve které je NPC či hráč oslovován a podle rodu a čísla objektu, ke kterému se parametr vztahuje. V rámci některých parametrů je vztažný objekt přímo určen, u jiných použití se tvar určí implicitně. Pravidla jsou následující:
- Pokud u parametru je objekt specifikován, řídí se tvar specifikovaným objektem.
- Pokud objekt specifikován není a parametr se implicitně vztahuje k postavě, pak se bude řídit postavou.
- Pokud objekt specifikován není a parametr se implicitně nevztahuje k ničemu, pak se řídí posledním zapamatovaným objektem z předchozích parametrů.
Pro příklad vezmeme větu z knihovny, která generuje třeba hlášku: "Klavír byl pro Sally příliš těžký na zdvihnutí."
{Kdoco dobj} {je} pro {kohoco} příliš těžk{ý dobj} na zdvihnutí.
- {Kdoco dobj}
- Vygeneruje název přímého objektu v prvním pádu. První písmeno názvu parametru je velké, takže velkým písmenem bude začínat i název objektu. Objekt musíme zvolit, protože implicitně by generovalo jméno postavy.
- {je}
- Parametr nemá implicitní vztažný objekt, takže se bude vztahovat k předchozímu použitému parametru a jeho objektu, což chceme.
- {kohoco}
- Parametr se vztahuje implicitně k postavě, takže vygeneruje její jméno ve čtvrtém pádu.
- těžk{ý dobj}
- Parametr sice nemá určen implicitní objekt, ale poslední objekt ve větě byla postava, takže musíme říci, že se místo ní má vztahovat k přímému objektu věty.
Přehled parametrů
Atribut specifikuje jméno atributu či metody ve zdrojovém kódu, podle kterého se dosazuje. Implicitní objekt specifikuje, zda má parametr nějaký výchozí objekt určen či nikoliv.
| Parametr | Atribut | Implicitní objekt |
|---|---|---|
| {kdoco} | Thing::name | actor |
| {kohočeho} | Thing::nameKohoCeho | actor |
| {komučemu} | Thing::nameKomuCemu | actor |
| {kohoco} | Thing::nameKohoCo | actor |
| {komčem} | Thing::nameKomCem | actor |
| {kýmčím} | Thing::nameKymCim | actor |
| {ty} | Actor::zajmenoTy | actor |
| {tobě} | Actor::zajmenoTobe | actor |
| {ti} | Actor::zajmenoTi | actor |
| {tebe} | Actor::zajmenoTebe | actor |
| {tě} | Actor::zajmenoTe | actor |
| {tebou} | Actor::zajmenoTebou | actor |
| {tvůj} | Actor::zajmenoTvuj | actor |
| {eš} | slovesoEs | actor |
| {neš} | slovesoNes | actor |
| {ješ} | slovesoJes | actor |
| {íš} | slovesoIs | actor |
| {áš} | slovesoAs | actor |
| {á} | slovesoMin | actor |
| {ses} | spojeniSes | actor |
| {sis} | spojeniSis | actor |
| {je} | Thing::slovesoJe | - |
| {není} | Thing::slovesoNeni | - |