18. Červen 2018 - 09:56

Poslední příspěvky

Stran: 1 ... 8 9 [10]
91
TADS / Re: Seriál o programování textových her v TADS 3
« Poslední příspěvek od Kroužící orel kdy 25. Leden 2018 - 12:53 »
Jů, na konverzaci se dvěma postavami zároveň se docela těším, nevím, jestli jí v Otěžích využiji, každopádně mě čeká pochopit nejprve tu klasickou, bude jí tam požehnaně jak jsem již psal v jednom našem minulém tématu.

S výklenkem máš recht, určitě bude lepší „stojíš ve výklenku“. A už vidím parádní příklad, v roomYourCabin jsem našel definici spacáku a Tebou popisované vlastnosti, už stojím v malém výklenku a dostanu se dolů z malého výklenku, hurá. Tyhle hrátky s češtinou nejsou na první pohled triviální, ale vyplatí se, reakce hry je radost sledovat.

Dveře jsem upravil dle Tvého doporučení, funkcionalita zůstala stejná. Já se inšpiroval právě u Heidi, kde jsou plně definovány také jen na jednom místě, viz cottageDoor na řádku 425 a cottageDoorInside na řádku 706. Budu ale používat syntaxi, kterou uvádíš, určitě je přehlednější.

Když už jsme u těch dveří, podíval jsem se na mříž, která je definována stejně a pokud hráč prolézá nahoru a je otevřená, přidal jsem TravelMessage s popisem, což vypadá zase o chlup reálněji. Jen mě napadá, že po jejím přepilování nemají smysl příkazy otevři/zavři mříž, které sice hráč zapsat může a parser mu odpoví, efekt zde však není žádný a hlášení nevypadá dobře. U jiného objektu, např. Immovable, bych situaci řešil metodami cannotOpenMsg a cannotCloseMsg, dveře však tuto metodu nemají, tak jediné, co mě napadá, je metoda dobjFor(Close).

V Základně jsem našel parádní příklad, regionBase.t definuje IndirectDoor s využitím IndirectLockable a následné direktivy, které jsem si upravil na:

dobjFor(Open) { verify { illogical (cannotOpenMsg); } }
dobjFor(Close) { verify { illogical(cannotCloseMsg); } }
cannotOpenMsg = 'Mříž nedokážeš otevřít. '
cannotCloseMsg = 'Mříž nedokážeš zavřít. '

Toto jsem využil i u mříže a celá akce s ní je nyní mnohem logičtější. A právě zde je třeba všechny metody definovat z obou stran mříže, parádní příklad potvrzující Tebou popsanou definici dveří, toto v Heidi pravděpodobně nebylo potřeba.

Ještě chvíli počkám, zda někdo nebude reportovat další chyby, poté vydám další verzi včetně komentářů nově nabitých zkušeností. Webová verze tentokrát nebude, administrátor IFDB mě upozornil, že pokud hra obsahuje podobný text jako původní Exoter, bylo by to porušení licenčních pravidel. Nechám to tedy tak, nová hra už nic z Bad Nightu využívat nebude, takže no problemo.

Dnes budu mít jen jeden technický dotaz ohledně monitoru vhodného pro programování. Vývojařina samozřejmě unavuje oči, displej na mém armádním notebooku není zrovna dvakrát šetrný. Napadlo mě situaci řešit e-ink displejem, jediný dostupný monitor nabízí Dasung E-Ink PaperLike Pro s šílenou cenou a ne zrovna jednoduchým objednáním z ciziny. Hezky vysvětlené je to na tomto fóru:

https://hardwarerecs.stackexchange.com/questions/2415/e-ink-monitor-display-panel

možná by byl vhodný ten BenQ EW2775ZH s přeci jenom rozumnější cenou. Jaké máš zkušenosti jako vývojář Ty, můžeš mi vhodné zobrazovadlo doporučit?
92
TADS / Re: Seriál o programování textových her v TADS 3
« Poslední příspěvek od gaspoda kdy 23. Leden 2018 - 19:59 »
1. Pochodeň, křesadlo, seno a pes
Jasně, otrávenou jehlu musím označit jako PreferredIobj a draka ani PreferredIobj, ani PreferredDobj, poté vše krásně funguje.

Setkal jsi se a potrápil s tímto typem řetězení i u Základny?

Při té poslední úpravě jsem to právě udělal tak, aby Actor mel v konverzačních příkazech přednost. Ne, na základně to bylo docela jednoduché. Ale docela zajímavý problém byl, když jsem se snažil modelovat konverzaci se dvěma postavami zároveň, aby nevypadala jako rozhovor jen s jednou postavou.

2. Výklenek
>stoupni na
(na malý výklenek)
Fajn, teď stojíš na malému výklenku.
>stoupni si do výklenku
Už stojíš na malému výklenku.
Popis místnosti: Ve výklenku (stojíš na malému výklenku)

Tady by asi bylo vhodnější, aby hra mluvila o to, že stojíš ve výklenku a ne na výklenku. To samozřejmě není problém, podívej se, jak v Základně je nadefinovaný objekt spacáku. Vlastnosti objInPrep, objIntoPrep, objIntoCase a objOutOfPrep definují, jaké předložky a pád použít.

3. Dveře
Ano, zde mě zmátlo fungující „Jsou otevřené.“ z jedné strany a „Je otevřené.“ ze strany druhé. Sákryš, samozřejmě, že isPlural = true znám, vždyť jej mám u dveří na konci chodby, doplnil jsem je ještě ke dveřím druhým a tady k dračím hlavám.
 
Potíž ovšem stále přetrvává, je zajímavé, že z jedné strany vše funguje jak má a ze druhé nikoliv – nejde jen o množné číslo, ale právě z jedné strany je lze otevřít i zavřít, po zavření pokud chci projít parser automaticky doplní otevření dveří. Ze strany druhé ovšem nikoliv – množné číslo je i přes direktivu isPlural špatné a mohu projít i při zavřených dveřích, aniž by se parser o cokoliv pokusil.

Hele já nevím, které dveře máš na mysli, ale asi to bude u všech stejné a nemyslím, že bys to měl opravené. Níže máš jednu půlku dveří dobře a tu druhou máš úplně bez definice. Ta by měla být stejná, nejen isPlural, ale i keyList a slovník a jakékoliv další vlastnosti. To, že jsou obě půlky mezi seou prolinkované, aby se dalo procházet ještě neznamená, že bys nemusel uvést všechno ostatní.

Kód: [Vybrat]
chodba_se_zeleznymi_dvermi: Room 'Chodba' 'do chodby'
    "Stojíš v chodbě. Na jihu jsou masivní železné dveře. \bMůžeš jít na sever. "
    north = chodba_se_zebrikem
    south = dvere_chodba_se_zeleznymi_dvermi
;

+ dvere_chodba_se_zeleznymi_dvermi : LockableWithKey, Door 'dveře' 'dveře' *3
  "Masivní železné dveře. "

     isPlural = true
     keyList = [svazek_klicu]

     gcName = 'dveří, dveřím, dveře, dveřích, dveřmi'
     gcVocab = 'dveří/dveřím/dveřích/dveřmi'
;

//po použití svazku klíčů od strážce: "Podařilo se ti odemknout železné dveře. "

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

zatuchla_komurka: Room 'Zatuchlá komůrka' 'do zatuchlé komůrky'
    "Nacházíš se v malé zatuchlé komůrce. Na severu jsou vidět masivní železné dveře.
    \bMůžeš jít na sever. "
    north = chodba_se_zeleznymi_dvermi
;

+ dvere_zatuchla_komurka : LockableWithKey, Door -> dvere_chodba_se_zeleznymi_dvermi 'dveře' 'dveře' *3
    // Tady chybí uvést to samé, co u prvních dveří
;
93
Nové textové hry / Exoter v systému TADS a práce na nové hře
« Poslední příspěvek od Kroužící orel kdy 22. Leden 2018 - 11:44 »
Konečně po všech perepetiích člověka jen málo políbeného vejvojařinou mohu představit předělávku staré známé textovky do systému TADS. Nakonec se mi jí podařilo dokončit podle představ a je maximálně věrná původní verzi. Díky TADSu je zde však mnohem zajímavější a bohatší parser, který mě tak okouzlil u Základny.

V příloze zasílám zdrojový soubor Exoter.t, který můžete prozkoumat a klidně využít při vlastní tvorbě, doplnil jsem komentáře ke všem akcím, které nejsou zrovna triviální. K případným úpravám a kompilaci doporučuji fórum zde:

http://textovky.panprase.cz/index.php?topic=226.0

a stránky:

http://tads.cz/cs/preklad-tads-3-do-ceskeho-jazyka

Chcete-li si rovnou zahrát, jsou zde 3 možnosti:

1. ve Windows stačí spustit instalátor Exoter.exe, výsledek vypadá na pohled velmi pěkně a s příjemným ovládáním.
2. dle mého názoru asi ideální pro Windows, Linux či BSD představuje QTADS:

http://qtads.sourceforge.net/

který má velmi příjemné rozhraní, můžete si nastavit barvy podle svých představ a vesele hrát. Ukládání pozic je u obou možností samozřejmostí.

3. trochu archaická možnost v příkazové řádce Linuxu nebo BSD je instalace balíčku frobtads a spuštění pomocí:
frob Exoter.t3
- zde však v rozhraní ncurses není funkční čeština

frob -i plain -k utf8 Exoter.t3
- zde se jedná o klasický řádkový režim s plně funkční češtinou, pokud Vám jí správně zobrazuje klasická konzole, velmi doporučuji, člověk se opravdu cítí jako za prehistorickým terminálem, kde místo úpravy konfiguráků mastí textovku

Každého zájemce prosím o zaslání zkušeností s hrou, měla by být plně dohratelná, pokud se však objeví jakékoliv chyby, sem s nimi. Ideální pro testování je při spuštěné hře zapnout ukládání hráčových příkazů pomocí volby:

Zapni zápis

vše, co hráč zadá, se bude ukládat do zvoleného textového souboru. Pokud zde potřebujete zaslat nějaký komentář, lze tak učinit pomocí znaku * a psaní svého komentáře, toto pomůže pro zpětnou vazbu, ladění chyb i popsání průběhu hry.


A až Vás omrzí Exoter, můžete se těšit na úplně novou hru velmi lehce inspirovanou mým oblíbeným Bad Nightem:

http://www.textovky.cz/navody/bad-night-recenze-a-navod-na-textovou-hru-od-palase/

jmenuje se Otěžemi zimní noci a s využitím všech nabraných zkušeností na ní právě teď pracuji. Nápady mám a chuť tvořit také, takže není co řešit, chci si zde vyzkoušet ty parádní pokročilé konstrukce, které jsem si užíval u Základny. Nebude to jen klasická textovka z hradu, i když i ten se zde určitě objeví, rád bych využil i venkovní lokace divoké severské noční zimní přírody, nechte se překvapit. Pro nedočkavce zde zveřejňuji úvod do příběhu, ten se samozřejmě ještě může změnit:

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Vítej, hráči, v textové konverzační hře Otěžemi zimní noci.

Temná ranně březnová noc. Večer štiplavý mráz a ve dne čvachtající břečka pod nohama, ne, to jistě není dobrý čas na cestování. Ale co naplat, myšlenky Ti letí hlavou jako hvízdající vítr a uklidnit jejich dravý tok je nemožné. Jenomže měl jsi na výběr? Chudý rytíř Česlav z Krašova patřící do malého bezvýznamného rodu žijící v ne zrovna výstavné tvrzi se může spolehnout možná na svůj úsudek a meč, ale jinak na máloco jiného. Takový člověk opravdu může být skromný a bez ambicí, ovšem chyba lávky, jiní a mocnější právě toto chování mohou pochopit špatně a poté se dějí věci nevídané. Jen matně si vzpomínáš na začátek dnešní noci, se svojí milovanou Kaškou jste šli spát brzy s tím, že si uprostřed noci dáte svojí oblíbenou číši rudého vína pod svitem měsíce, ale ouha, vypili jste jí opravdu nebo to byl jen sen? "Odcházím směrem půlnočním..." točí se Ti stále v hlavě, zdála se Ti tak slova nebo ne? Probudil Tě právě jejich šepot nebo spíše otevřené okno noční jizby? Co se vůbec stalo? Úplně omámen jsi popadl jen to nejnutnější, žena na tvrdé zmrzlé zemi pod oknem naštěstí nebyla... a hnal se jako vítr naznačeným směrem, bez koně, pořádné výbavy, ale vlastně kam? Noční chlad Tě trochu uklidnil, ale zároveň si uvědomuješ, že Ti začíná být opravdu zima a k tomu se stále více a častěji ozývá vytí vlků. Pchá, to, že žerou lidi, jsou jen povídačky pro malé děti a hlupáky... ale najednou si uvědomuješ, že v takovém nečase, venku a především pod studeným svitem měsíce může být na těch hloupostech třeba i špetka pravdy...
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Moc děkuji Gaspodovi za jeho nekonečnou trpělivost u mých nekonečných otázek, začít s OOP pomocí TADSu bylo pro mě sice těžké, ale nesmírně zábavné.

Takže vesele testujte, po Otěžích notně předělám první díl Kroužícího orla a připravím další dva, poté bych rád nějaký příběh z aztéckého, mongolského a sibiřského prostředí, určitě nebude chybět ani něco z válek, třeba ta ruská občanská mě opravdu láká, není kam spěchat, textovky nestárnou a díky takovým bezva systémům, mezi něž určitě patří i TADS, je bude možno tvořit vždy.
94
TADS / Re: Seriál o programování textových her v TADS 3
« Poslední příspěvek od Kroužící orel kdy 22. Leden 2018 - 10:59 »
Zdravím do nového týdne,

tak konečně jsem problém s dveřmi vyřešil, trošku mě zmátla definice u Heidi, kde se používají mezi místností venku a místností uvnitř chaty, nyní se již dveře chovají správně, mohu je prvotně odemknout a následně zamyklat a otevírat dle libosti, množné číslo se také ukazuje správně.

Doplnil jsem komentáře k různým akcím, které jsme společně řešili a myslím, že čas uzrál pro konečné testování. Pokud budeš mít čas a chuť, prosím o projití hry, ještě poprosím svého kamaráda a Thoorina s využitím Zapni zápis plus pokud se na fóru najde další zájemce, je vítán. Také si jsem vložil hru na IFarchiv:

https://www.ifarchive.org/cgi-bin/upload.py

a zatím čekám na schválení do adresáře unprocessed, případných dalších úprav snad již nebude mnoho.

A nyní je čas na hru novou, opravdovou, začínám na ní pracovat a pokusím se využít všechny zkušenosti, které jsem od Tebe získal, moc moc se těším. Budu využívat QT Creator, ať si zvyknu na větší IDE, až při tvorbě zjistím, zda mi více vyhovuje nebo bude vhodnější investovat čas do VIMu či EMACSu, ideální bude pár dní vyzkoušet všehny tři možnosti.
95
TXT / Re: Kroužící orel
« Poslední příspěvek od Kroužící orel kdy 22. Leden 2018 - 10:57 »
Přesně ten samý problém jsem měl ve WINE a vypadá to, že ani třetí verze na tom nebude lépe. Je super, že na tom pracuješ, až bude nová verze, sem s ní a moc rád vyzkouším pod aktuálním Debianem a Archem.
96
TXT / Re: Kroužící orel
« Poslední příspěvek od pedromagician kdy 19. Leden 2018 - 20:54 »
Ano o tomto probléme viem, na ReactOS som to fixol znovu nastavením pozície a veľkosti okna. Žiaľ pod wine to nestačí, skúsil som všetko. Mne sa nestrácalo úplne ale ostalo také malé cca 10x10px a keď som zúrivo klikal tak sa občas zväčšilo.
V novej verzii bude fungovať kláves F10 na znovu vytvorenie okna. Takže keď aplikácia získa focus tak to pôjde riešiť.

Odoslané pomocou Tapatalku
97
TADS / Re: Seriál o programování textových her v TADS 3
« Poslední příspěvek od Kroužící orel kdy 19. Leden 2018 - 13:47 »
Krásné ráno přeji,
zase se dostávám k tvorbě a dokončuji dokumentaci a úpravu systaxe zdrojáku. Ještě bych se vrátil k webovému hraní, nevím, zda mám nastavené něco špatně, zkoušel jsem rozchodit gameserver pod Archem i Debianem a nyní těsně před spuštěním dostávám chyby.

Pod Archem využívám jako úložiště sqlite a pod Debianem mariadb. V prvním případě dostávám při spuštění např. pomocí:

http://localhost/t3launch/t3launch.php?storyfile=http%3A%2F%2Flocalhost%2Fasteroid-web.t3
- inspiroval jsem se Tvojí minulou odpovědí a např. url Heidi:
http://gs1.tads.cz/t3launch.php?storyfile=http%3A%2F%2Ftads.cz%2Fheidi.t3&key=8e6dec6f9554e0b1e4eaaf02c86ebcc9

chybové hlášení:

PHP Fatal error:  Uncaught Error: Call to a member function bindValue() on boolean in /srv/http/t3launch/t3launch.php:293\nStack trace:\n#0 /srv/http/t3launch/t3launch.php(54): fetchGame('http://localhos...')\n#1 {main}\n  thrown in /srv/http/t3launch/t3launch.php on line 293

U Debianu s mariadb:

Error
An error occurred starting the game.
Try again
Error details: The game displayed the following message(s) before it exited:

Warning: -webhost mode specified, but couldn't read web config file "/usr/games/tadsweb.config"
frob: http://localhost/asteroid-web.t3: file not found.

Note that the game must be designed for Web play to run properly with this service. Standard TADS games won't work on this system. IFDB home page

To samé u Archu s mariadb, zkusil jsem oba systémy, abych vyloučil novější verze serverových démonů. Warning je OK, stačí vytvořit tadsweb.config.

Horší je to s druhou hláškou, pokud zadám http://localhost/asteroid-web.t3, soubor mohu bez problémů stáhnout.

Také příkaz
frob -i plain -p -N 44 asteroid-web.t3

umožňuje po zadání do prohlížeče:

http://localhost:54055/?TADS_session=2524812e-ad34-2a9b-866e7cdd40c7-e8cc

hru hrát.

Problémy s právy v adresářích, kam vidí Apache, určitě nejsou, vyzkoušel jsem i jiné webové aplikace. Všechna nastavení včetně apačích access a error logů zasílám v příloze. Prozkoumal jsem i diskuzi na IFDB, ovšem ani Error copying resource file when compiling for Web play, Is there a Javascript Interpreter for TADS that I can run on my website nebo TADS 3 - IFComp entry online play nepomohly.

Dokument Setting up a custom TADS Web server určitě není aktuální, rád bych ale vše zprovoznil na dnešních linuxech a připravil dokumentaci pro ostatní, která skutečně funguje. Samozřejmě to není nutné, pro svůj Exoter využiji IFDB, TADS se ale stal mým oblíbencem a rád bych, aby vše fungovalo jak má, tak parádní systém si to určitě zaslouží a vidina serveru běžícího nad RPi je stále lákavá.

Pokud najdeš chvilku, prosím o kontrolu, není to ale nic zásadního.

Krásný víkend přeje
Orel
98
Nové textové hry / Re: Winter Of The Bomia
« Poslední příspěvek od thoorin kdy 13. Leden 2018 - 13:23 »
Hah, už jsem se bál, že budu jediný kdo závěrečného bosse porazí. Good job. :-D

99
TADS / Re: Seriál o programování textových her v TADS 3
« Poslední příspěvek od Kroužící orel kdy 11. Leden 2018 - 11:54 »
Krásné ráno přeji po Novém roce,
nic se neděje, nastavení kapsy naprosto chápu, se spamem bojujeme všichni, až budu příště něco posílat, tedy raději dvakrát. Hlavně, že jsi přání dostal, to je důležité, řechtavá banda už zase řádí u balíku.
S tou učebnicí mě to fakt mrzí, těšil jsem se, že něco parádního sesmolíš, ale neva, až – jestli – kdovíkdyazdavůbec ze mě bude programátor, vrhnu se na to s radostí sám.

1. Pochodeň, křesadlo, seno a pes
Ano, je to řetězová závislost, se kterou jsem se zatím nesetkal. Vše jsem nastavil jak píšeš a zapálení pochodně je už v pořádku. Kupka sena je také v pohodě, zapálit jí pochodní i křesadlem není  problém. U psa je také vše OK, zkusil jsem křesadlo a pochodeň dát i drakovi, dostávám:

>dej drakovi kresadlo
Pokud ho probudíš, se zlou se potážeš.
>dej kresadlo drakovi
Nemůžeš křesadlu nic dát.

U draka mám direktivu PreferredDobj. Pokud jí vymažu, příklady výše jsou OK, ale:

>pichni draka jehlou
Píchl jsi draka jehlou. Drak překvapeně otevřel oči, pak sebou však několikrát škubnul a bylo po něm.
>pichni jehlou draka
Spícím drakem nemůžeš zaútočit.

Jasně, otrávenou jehlu musím označit jako PreferredIobj a draka ani PreferredIobj, ani PreferredDobj, poté vše krásně funguje.

A dobře, že se to stalo, nyní vidím stejný problém i u strážce. Ten je také označen jako PreferredDobj:

>dej strazci sekeru
Chystá se zabít tě.
>dej sekeru strazci
Nemůžeš sekeře nic dát.

Vymazání PreferredDobj vše řeší, jsem rád, že jsem si s tím tak dlouho hrál, protože zde je opravdu rozdíl mezi kvalitním parserem, který tak obdivuji u Základny a předem nalajnovaným. Dal jsem si tu práci a draka i jehlu postupně označoval jako Iobj, Dobj i nic z toho, abych si vyzkoušel všechny možnosti a na nich si vše vyzkoušel, hurá.

Nová verze české knihovny tedy funguje parádně, je super, že mohu alespoň malinko přispět k jejímu zlepšování.

Setkal jsi se a potrápil s tímto typem řetězení i u Základny?

2. Výklenek
Ten výkenek je opravdu zajímavý, moc díky za upřesnění, CustomFixture bude vhodnějí. A samozřejmě neodolal jsem, juknul na Return of the Ditch Day a v souborech bridge.t a intro.t našel dva zajímavé příklady, o kterých píšeš. To mě také donutilo vyzkoušet si příkaz stoupni a stoupni na, který jsem předtím netestoval, to určitě využiji v další hře. Nyní mám:
+
 maly_vyklenek : CustomFixture, Platform
 
a mohu:

>stoupni na
(na malý výklenek)
Fajn, teď stojíš na malému výklenku.
>stoupni si do výklenku
Už stojíš na malému výklenku.
Popis místnosti: Ve výklenku (stojíš na malému výklenku)

Autor dle zdrojáku využívá i něco jako schovej se ve výklenku, tohle jako milovník příběhů o zlodějích prostě nemohu nevyužít. Vidím, že hra zatím příkaz schovej se nezná, zatím si to nechám jako věc, kterou budu řešit hnedle při další tvorbě.

Úžasné, jak člověk stále něco nového objevuje, ten TADS je prostě systém s velikým eS, dokážu jsi představit jak jsi musel být příjemně překvapený možnostmi, když jsi tvořil Základnu, píšeš to i v jejích komentářích, např. střepy v zadku při rvačce v kosmickém baru…

3. Dveře
Ano, zde mě zmátlo fungující „Jsou otevřené.“ z jedné strany a „Je otevřené.“ ze strany druhé. Sákryš, samozřejmě, že isPlural = true znám, vždyť jej mám u dveří na konci chodby, doplnil jsem je ještě ke dveřím druhým a tady k dračím hlavám.
 
Potíž ovšem stále přetrvává, je zajímavé, že z jedné strany vše funguje jak má a ze druhé nikoliv – nejde jen o množné číslo, ale právě z jedné strany je lze otevřít i zavřít, po zavření pokud chci projít parser automaticky doplní otevření dveří. Ze strany druhé ovšem nikoliv – množné číslo je i přes direktivu isPlural špatné a mohu projít i při zavřených dveřích, aniž by se parser o cokoliv pokusil.

V Základně jsem se se zamčenými dveři nesetkal, právě se dívám na zdroják k české Heidi a zdá se mi, že mám dveře i průchody nastaveny správně. V příloze zasílám zdroják i transkript, kde jsou všechny dveřní operace zaznamenány, mohu poprosit o kontrolu, kde dělám chybu?

4. Množné číslo, mixování mužského a ženského rodu a kaluž
V Základně vidím pěkný příklad množného čísla v souboru roomAlien a příklad s přihrádkami. Zkusil jsem přidat „*drahokamy“ ke všem čtyřem kouskům, příkaz „prozkoumej drahokamy“ už funguje tak jak má.

Synonyma v jiném rodu jsem v naší komunikaci nenašel, ale vůbec nevadí, zase vidím parádní příklad v Základně, soubor regionShip obsahuje changeGender = 'plavi:4, trup:2' a vyzkoušel jsem jej u svého lana.

U kaluže jsem měl skutečně v gcVocab čárky místo lomítka a to samé u střepů, již jsem opravil a vše krásně fungue, uff, pamatuji se, že jsem se tam také dlouho zasekl a pak dělám takovéhle špeky.

5. Webový server
Super, je paráda, že t3launch mám nastavený správně, jen potřebný parametr ?storyfile jsem nikde nedohledal. Dokument Setting up a custom TADS Web server holt už není nejnovější, viz mé menší potíže s Archem a právě jeden dotaz na storyfile jsem našel v diskuzním fóru, kde nabízíš svojí emailovou pomoc. Gameserver nyní funguje parádně, databázi tedy momentálně ani nepotřebuji, jak píšeš, slouží jen ke kešování. Mě to zajímá hlavně z technického hlediska, samozřejmě jsem si mnohem jistější administrací linuxu, než programováním a po dokončení hry jí určitě umístím na IFDB a využiji jejich storage server.

Každopádně Tvé technoplaneťácké řešení je perfektní v tom, že si můžeš hostovat hry nezávisle, to se mi strašně líbí a vidím v tom přínos, protože TADS se teď zrovna moc nevyvíjí. Je mi jasné, že jsi si s tím dal kopu práce a nebude sranda vše dát dohromady pro obecné využití, každopádně minimálně za mě se ke zveřejnění, až budeš mít čas a chuť, moc moc přimlouvám a s radostí pomohu třeba s dokumentací, hnedle si game i storage server nainstaluji na více distribucích a vše zdokumentuji, v TADSu je vše otevřené a pokud bych tímto způsobem mohl pomoci, budu strašně rád. Malé Raspberry bude k hostování TADSu jako stvořené.
Pokud mají mít textovky budoucnost, tak to vypadá, že na webu a čím více serverů bude k dispozici, tím lépe.

6. Co ještě zbývá na Exoterovi
Nyní tedy snad již poslední bolest představují ty dveře. Dívám se na svůj soubor věcí k dodělání, mám zde ještě kromě slova uřízni k doplnění usekni a u kaluže slova kapalina, louže - to nebude problém. Plus lze prozkoumat mrtvolu psa pomocí „prozkoumej mrtvolu“, protože jsem jej definoval jako samostatný objekt jak jsi mi doporučil, u draka ani strážce toto možné není, zde bych pravděpodobně musel postupovat stejně.
Ještě dodělám skóre, ať je hráč více motivován a teď se vrhnu na sjednocení zdrojového kódu, juknu na Základnu a Heidi a určím si svůj styl odsazení, kterého se budu držet. Znovu si projedu naši komunikaci a do zdrojáku doplním věci, které mi nebyly jasné stejně jako v Základně.
100
TADS / Re: Seriál o programování textových her v TADS 3
« Poslední příspěvek od gaspoda kdy 8. Leden 2018 - 20:19 »
Tebou popsané příklady mají hlavu a patu a jsou krásně srozumitelné, neuvažuješ o tvorbě nějaké učebnice?
Myslím to vážně, ideálně určené starším dětěm nebo študentíkům např. ve stylu knihy Python for Kids.

Haha, dobrý vtip.

3. PreferredIobj
Podíval jsem se do knihovny, kde se s PreferredIobj vůbec nesetkám a celý svůj TADS adresář jsem si tímto výrazem grepnul, používáš jej ve svém překladu,
u Základny a já u Exoteru, ano, už si vzpomínám, že jsme se o něm a úpravou Dobj bavili v souvislosti s novou verzí češtiny.

PreferredIobj s velkým P na začátku je mix-in třída, která slouží jen jako označení, je to jen deklarované a pak v jednom ifu.

Teď je mi také jasné, že u křesadla a pochodně budou stejné potíže, hned jsem to vyzkoušel a hnedle u zapálení samotné pochodně křesadlem a využití těchto předmětů u psa je to horší:

>zapal pochoden
Čím ji chceš zapálit?
>kresadlem
To není něco, co by mohlo hořet.

>zapal kresadlem pochoden
To není něco, co by mohlo hořet.

>zapal pochoden kresadlem
Zapaluješ pochodeň.

Tady se vytvořila řetězová závislost, kdy křesadlem zapaluješ pochodeň a pochodní zapaluješ seno. Tedy pochodeň je jednou přímým objektem a podruhé je nepřímým. Proto pochodeň nemůžeš označit ani jako PreferredDobj, ani PreferredIobj. Protože je to řetězec jen na tři, tak pochodeň, která je uprostřed, nech bez zakéhokoliv označení (tedy uber PreferredDobj u pochodně), křesadlo označ jako PreferredIobj, protože křesadlo je vždy to, co zapaluje něco jiného a kupku sena označ jako PreferredDobj (to už máš), protože to se vždy nechává zapálit něčím jiným.

>dej pochoden psovi
Nemůžeš pochodeň nic dát.

>dej kresadlo psovi
Nemůžeš křesadlu nic dát.

Vše jsem vyřešil stejným způsobem, vše funguje krom:
>zapal pochodni seno
{Tím iobj} nemůžeš nic zapálit

Zkoušel jsem ke kupce sena dát dle diskuze s Tekketem direktivu:
preferredIobj = pochoden

ale zatím bez úspěchu, budu na tom ještě pracovat, PreferredDobj u pochodně potřebuji. Jak vidno, tyto předměty budu muset doladit – kombinace
křesadlo, pochodeň, zapálení sena a správné hlášky, pokud tyto předměty chci umožnit ve hře cizí postavě dát, není zrovna triviální.

Tohle opět koliduje s výše uvedeným řešením, ale upavil jsem knihovnu, aby dávala přednost tomu, že pro konverzační akce je Actor před těmi ad hoc vlajkami. Mimochodem ten nedosazený parametr {Tím iobj} jsem v nové verzi překladu také opravil.

6. TADS Web server
Neodolal jsem a podle návodu Setting up a custom TADS Web server jsem si nainstaloval lokální server s frobem. Po trošce laborování jsem byl úspěšný, v Ubuntu 16.04 je možné pro Apache povolit a2enmod a mohu v prohlížeči spustit t3launch, v Archu už a2enmod není, v souboru .htaccess v podadresáři t3launch stačí zakomentovat všechny 3 řádky a vše je OK. Test, který popisují, proběhne v pořádku, pokud v prohlížeči zadám
http://localhost/t3launch/

dostávám hlášení a dále viz můj dotaz níže:

Missing Parameters
The link you used to reach this page is missing some required information.

Jasně. Ty skripty, které sis nainstaloval slouží ke spuštění webového hraní a fungují jako univerzální gameserver pro TADSové webové hry. Ta chybová hláška znamená, že jsi neřekl, jakou hru chceš spustit. Jako minimum musíš předat parametr storyfile s odkazem na hru. Měl bysis tedy vyrobit třeba nějakou startovací stránku a hru spustit odkazem ve tvaru:

<a href="http://localhost/t3launch/?storyfile=http%3A%2F%2Flocalhost%2Fasteroid-web.t3">spustit základnu</a>

Gameserver je dělaný univerzálně, aby si hru stáhnul z internetu, proto se tam dává HTTP odkaz a ten může věst kamkoliv na internet, kde je soubor se hrou vystavený. Pokud si to chceš hostovat sám, tak si dej soubor se hrou např. do kořenového adresáře webu, tj. zkontroluj si, že když zadáš http://localhost/asteroid-web.t3, tak že ti to nabídne soubor ke stažení a pak bude ten odkaz na t3launch výše fungovat.

V konfiguráku config.php jsem nastavil cestu k lokální databázi, využívám mariadb a vytvořeného uživatele t3launch s databází t3launch a heslem password. Ten se např. pomocí phpmyadmina do databáze dostane, při příkazu uložit se mi ovšem pozice nabídne ke stažení na lokální počítač a v databázi není nic.

Ne, takhle je to v pořádku, skripty t3launch nedělají nic jiného, než spuštění hry a do databáze si zaznamenávají jen jedinou tabulku s informacema o stažených hrách, aby věděly, jestli při příštím stažení mohou použít nakešovanou kopii nebo musí stahovat hru znovu.

Ty máš na ostrém serveru rozhraní, které zadá jméno a heslo nového uživatele do databáze, se kterou pracuje instance spuštěného frobu s adresou např. 127.0.0.1:4417, která je přesměrována na venkovní adresu.

To je funkcionalita storage serveru, která je k dispozici na stránkách ifdb.tads.org. Když máš zaregistrovaný účet na IFDB, tak si můžeš spouštět TADSové hry a při ukládání místo aby se nabídl save file ke stažení, tak se pozice uloží online. Tahle funkcionalita je k dispozici pro každého, i ty si můžeš nahrát svou webovou hru na IFDB a vůbec nemusíš řešit vlastní server, protože dobrovolníci provozují několik veřejných TADS gameserverů.

Já jsem si podobnou funkcionalitu vytvořil sám pro sebe, tj. provozuji vastní gameserver i storageserver, takže i když IFDB nevyužívám, mám také možnost ukládání pozic online pod jménem a heslem. Potřeboval jsem to totiž propojit s uživatelskými účty na Technoplanetě a IFDB mi neposkytne tu bezešvou integraci. Navíc jsem měl naprogramováno odesílání událostí ze hry (změna skóre atp.) do online žebříčku a to by na IFDB také nešlo.

Naprogramování a nastavení storage serveru není nikde zdokumentované a zveřejněné a je to už pokročilá záležitost. Možná to někdy zveřejním, ale nebude to brzy, protože bych to musel pořádně dotáhnout a vyseparovat z jiného kódu.

7. Dokončování hry
Výklenek v místnosti se sekerou jsem prvně chtěl definovat jako Decoration, chybí mi však vhodná zpráva u sebrání, takže si dekoraci nechám jinam a využiji CustomImmovable.

Může být. Přesnější by bylo CustomFixture než CustomImmovable, liší se to v malém detailu, že Fixture je něco, co je pro hráče zcela evidentně součástí lokace a tudíž nepřenosné, kdežto Immovable se z pohledu hráče nemusí jevit nepřenosně, byť nepřenosné je. Samozřejmě se to dá dál rozvíjet, třeba v Return to ditch day je výklenek součástí jednoho puzzlu. Tam je deklarovaný jako Fixture, Platform, aby se dalo stoupnout do výklenku. Ale to už je vyšší dívčí :-)

Jdu-li na sever a dveře zase prozkoumám, dostávám:
>prozkoumej dveře
Je otevřené.

No musíš si dveře označit isPlural = true, vždyť to víš, jen nesmíš zapomenout.

Tady si pořádně nastuduji vše o množném číslu, podobná potíž se vyskytuje také u drahokamů, pokud jich držím více:
>prozkoumej drahokamy
Slovo "drahokamy" v tomto pribehu neni dulezite.

Stačí přidat množné číslo do slovníku, plurál se odděluje hvězdičkou 'první drahokam*drahokamy', koukni v Základně.

Další zajímavost je mixování mužského a ženského rodu:
>prozkoumej provaz
Je pevný.
>prozkoumej lano
Je pevný.

No jasně, o tom jsme v tomhle vláknu už také myslím mluvili. Když jsou synonyma, která jsou v jiném rodu, tak se dají ty další rody zadat pomocí vlastnosti changeGender, např. changeGender = 'lan:4'.

Namočit jehlu mohu jen příkazem „namoč jehlu v kaluž“, pro využití „v kaluži“ bude určitě vhodné něco jako {komučemu xxx}, to už jsem viděl v Heidi i v Základně.

Příkaz "namoč jehlu v kaluži" řekne, že Slovo „kaluži“ v tomto příběhu není důležité, protože jsi slova v gcVocab objektu kaluz oddělil čárkami, což není správné. Změn to na lomítka gcVocab = 'kaluže/kaluži/kaluží'

Užij si Vánoční čas, zkoušel jsem posílat své koňské přání na Tvůj kapsový email uvedený v překladu TADSu, ale bez úspěchu, tak to napravuji zde společně s aktuálním zdrojákem a plánovaným webem.

Díky, kapsácký mail by měl fungovat normálně, nevím, jestli jsi neposlal moc velkou fotku. Jo a je na něm greylisting, takže poprvé mail od serveru odmítne a pokud to poštovní server za chvíli zkusí znovu, tak mail od něj už přijme. To je obrana proti masovému spamu, ale běžný poštovní server by si s tím měl poradit.
Stran: 1 ... 8 9 [10]