Portál AbcLinuxu, 21. května 2025 19:22
Pomocí skriptu lze s uživatelem komunikovat. Lze mu zobrazit zprávu nebo dotaz s výběrem. Zpráva se může tvářit jako informační dialog nebo jako řeč některé jednotky. Nejčastěji se tak simuluje rozhovor několika jednotek mezi sebou, čímž se uživatel nenápadně uvede do příběhu a poskytnou se mu potřebné informace. Všechny dialogy a dotazy se dělají pomocí elementu [message].
Zadaný text se objeví jako zpráva pro uživatele.
[message] speaker=narrator message = "This is example of message box." [/message]
Zadaný text se zobrazí jako text, který pronáší určená jednotka. Jednotka se určuje pomocí její vlastnosti description (jméno jednotky, které se nepřekládá).
[message] speaker=unit-description message = "This is example of unit dialog." [/message]
U leadera v multiplayeru je ten problém, že jeho description není předem znám, závisí na tom, kdo za stranu hraje. Lze si ale vypomoci malý trikem, který není nikde popsaný, ale vypozoroval jsem ho studiem cizích scénářů. Řeší se to uvedením strany, kterou leader vede a vlastností canrecruit, která je pravdivá právě jen u leadera.
[message] side=1 canrecruit=1 message = "This is example of leader dialog." [/message]
Chvíli jsem pátral jak ve WML udělat dotaz s výběrem, nikde jsem nenašel příklad tak jeden poskytuji. Jedná se o výběr jedné jednotky ze dvou, která se má vytvořit. Tak je např. možno do hry dostat jednu mimořádnou jednotku na vysoké úrovni (dle preferencí hráče), kterou není možno rekrutovat.
[message] speaker=narrator message = "Select your friend." [option] message = "Paladin" [command] [unit] side=1 type=Paladin x,y=10,10 [/unit] [/command] [/option] [option] message = "Elvish Sylph" [command] [unit] side=1 type=Elvish Sylph x,y=10,10 [/unit] [/command] [/option] [/message]
Pozor: Toto nelze jednoduše použít v multiplayeru. Při hře přes síť na tom často spadnou připojení spoluhráči s chybovou hláškou The file you have tried to load is corrupt. Žádné řešení jsem nenalezl, v multiplayeru pravděpodobně není možno dát hráči něco na výběr.
Aby se tak nestalo, je potřeba splnit nějaké podmínky. Ty nejsou nikde přesně uvedené, takže jen co jsem vypozoroval ve vývojové verzi (1.3.8) bez nároku na přesnost:
Mezery se zachovávají, tedy kolik jich uděláte, tolik jich vidíte, neslučují se v jednu jako je tomu v HTML.
Zalomení řádku lze provést fyzickým zalomením řádku ve zdrojáku. Žádný zástupný znak neexistuje. Vzhledem k zachovávání mezer to značně znepřehledňuje odsazený zdrojový kód. Řeším tak, že si v eventu prestart vytvořím proměnnou $BR která obsahuje jen znak zalomení a tu pak používám jako zástupný znak.
Prázdný řádek nejde udělat dvěma zalomeními řádku za sebou, sloučí se v jedno zalomení. Stačí ale vložit mezeru mezi dvě zalomení.
Na začátku řetězce nesmí být parametr makra, to končí s chybou. Opět si lze vypomoci mezerou, která se vloží před parametr. Text se sice trochu odsadí, ale je to lepší než nic.
"{PARAMETR} nelze, končí chybou" " {PARAMETR} lze"
Pomocí speciálních sekvencí lze zvýraznit řádek textu. Tyto sekvence musí být na začátku řádku a řádek je obarvený až do konce. Tyto sekvence jsou:
Tiskni
Sdílej:
# turn X' this event triggers at the start of turn X. X cannot be 1.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.