Ahoj, jde ve Wherigu mít zónu, jejíž souřadnice se spočítají až při běhu cartridge (z dat, které nasbírá hráč)?
Dynamická zóna
#2
Publikováno 16 červen 2022 - 7:51
Zadne Wigo sice na konte nemam, ale presto jsem si takrka jisty, ze to jde.
#3
Publikováno 16 červen 2022 - 13:43
#4
Publikováno 16 červen 2022 - 19:55
Počítám, že to bude podobná konstrukce jako v "hýbavých" zónách. Ovšem tam bylo pár problémků s funkčností. Poté, co jsem pár kačerům hodně pokazil zábavu při hledání kešky "Go West", opustil jsem náhodu (náhoda je blbec) a začal vše dělat pseudonáhodně. Tím pádem mám vše pod kontrolou a třeba takový "Houbičky" fungujou jak z praku už docela dlouho. Samozřejmě pokud to udělá Miloš, tak to fungovat bude.
#5
Publikováno 21 červen 2022 - 18:50
Tak jsem se doprogramoval do stavu, že mi wigo funguje, ale zjistil jsem, že u dynamické zóny mi funguje jen první update. Pokud uživatel změní vstupní hodnotu, tak už k updatu souřadnic zóny nikdy nedojde. Po dvou hodinách debugování jsem si skoro jist, že mi kód dělá to co má a problém je někde v tom updatování samotném. Netušíte, v čem může být problém?
Edit: Ted jsem zjistil, ze pri update se zona presune na mape tam, kam ma, ale navigace (sipka, vzdalenost) porad miri k puvodnimu mistu.
Tento příspěvek byl upraven od mandevil: 21 červen 2022 - 20:54
#6
Publikováno 21 červen 2022 - 21:08
#7
Publikováno 21 červen 2022 - 21:10
Zkus před přesunem zónu deaktivovat a po přesunu znovu aktivovat.
To jsem zkusil, ale nepomáhá.
objFinalka.Active = false objFinalka.Visible = false objFinalka.Points = bounding_box(n, e) objFinalka.OriginalPoint = ZonePoint(n, e, 0) objFinalka.Visible = true objFinalka.Active = true
#8
Publikováno 21 červen 2022 - 21:41
Možná bych to zkusil řešit pomocí dvou zón, např. A a B. Aktivní a viditelná je A, deaktivovaná je B. Nastavím nové souřadnice do B. Deaktivuji A a aktivuji B. Nastavím nové souřadnice do A. Deaktivuji B a aktivuji A. A tak pořád dokola.
Pro události vytvořím funkce a budu je volat u A i u B. Anebo ten kód budu mít 2x a při změnách to budu muset udělat na dvou místech. Funkce je v tomhle lepší.
#9
Publikováno 21 červen 2022 - 21:46
Hm, ono se to v mapě nezaktualizuje, když z mapy vyskočíš a pak se vrátíš, tak by se to mělo zaktualizovat. Tohle je věc WhereYouGo a asi s tím nic neuděláš. Ale ta zóna by měla být aktivní na tom novém místě (událost při vstupu atd.), takže funkční by to mělo být.
Vzhledem k tomu, že ke updatu té zóny může dojít jen v inventáři, tak tou mapou to asi nebude.
Možná bych to zkusil řešit pomocí dvou zón, např. A a B. Aktivní a viditelná je A, deaktivovaná je B. Nastavím nové souřadnice do B. Deaktivuji A a aktivuji B. Nastavím nové souřadnice do A. Deaktivuji B a aktivuji A. A tak pořád dokola.
Pro události vytvořím funkce a budu je volat u A i u B. Anebo ten kód budu mít 2x a při změnách to budu muset udělat na dvou místech. Funkce je v tomhle lepší.
No já to zatím testuju ve webwigo.net. Ještě mě napadlo, jestli tu zónu pokaždé nevytvořit dynamicky znovu -- akorát nevím, jak smažu tu starou. Metodu se dvěma zónami zkusím, stejně mi nic jiného nezbývá.
Tento příspěvek byl upraven od mandevil: 21 červen 2022 - 22:28
#10
Publikováno 21 červen 2022 - 22:35
Bohužel ty emulátory nelze brát doslova, určité rozdíly oproti telefonům tam jsou. Tyhle technické vychytávky se musí ladit přímo v telefonu.
#11
Publikováno 22 červen 2022 - 8:39
Jo počkej, ten problém máš ve webwigu? Tak si zkompiluj cartridge a vyzkoušej to přímo v telefonu. Tam to může fungovat dobře.
Bohužel ty emulátory nelze brát doslova, určité rozdíly oproti telefonům tam jsou. Tyhle technické vychytávky se musí ladit přímo v telefonu.
Tak jsem to teda zkusil v telefonu ... a jsem zděšen. To co vidím ve WhereYouGo moc nepřipomíná to, co je v emulátoru. Hned na začátku WYG vyhodí nějakou kryptickou chybu, ale kartridž běží dál. Proměnné se z nějakých důvodů neinicializují, takže nevidím finálku, když mám zadat vstup, tak mi přes to WYG hodí okno s inventářem, v úkolech nejsou vůbec vidět popisy... prostě běs a hrůza.
Asi budu chvíli přemýšlet, jestli fakt chci dělat wherigo.
Tento příspěvek byl upraven od mandevil: 22 červen 2022 - 9:06
#12
Publikováno 22 červen 2022 - 10:13
Btw. Ta chyba, kterou jsi vyfotil, říká, že je použitá nějaká funkce s názvem "__len", která neexistuje. Čert ví, kdo ji tam používá. Přímo ty sám, nebo webwigo?
A jestli to píšeš přímo v Lua, tak to není úplně to nejlepší.
Jak jsem psal výše - nainstaluj si Urwigo a většinu funkčnosti vytvoř pomocí diagramů, Lua použij jen výjimečně.
Já teď pár dnů nebudu k dispozici, ale případně bych ti pak mohl pomoci radou. Odkud jsi? Jestli z Prahy a okolí, mohli bychom se i sejít.
Budu si sice přihřívat vlastní polívčičku, ale jestli to neznáš, tak mrkni zatím sem:
http://gc.i-mh.net/w...wigo/index.html
#13
Publikováno 22 červen 2022 - 10:48
A v čem tu cartridge vyvíjíš? Přímo v tom webwigu? Jestli ano, tak důrazně doporučuji Urwigo, ten builder je bez konkurence.
Základ jsem udělal v Urwigo a pak nějakou dodatečnou logiku dodělal přímo v Lua skriptu.
Btw. Ta chyba, kterou jsi vyfotil, říká, že je použitá nějaká funkce s názvem "__len", která neexistuje. Čert ví, kdo ji tam používá. Přímo ty sám, nebo webwigo?
A jestli to píšeš přímo v Lua, tak to není úplně to nejlepší. Jak jsem psal výše - nainstaluj si Urwigo a většinu funkčnosti vytvoř pomocí diagramů, Lua použij jen výjimečně.
"__len" je nějaká haluz, obecně je to metametoda u typu "table", která je k dispozici až od Lua 5.2, zatímco pokud vím, tak Wherigo jede na Lua 5.1. Proč se to něco snaží použít není jasné, můj kód to rozhodně není.
Jinak osobně radši píšu program než klikám v builderu, ale jestli to jinak nepůjde, tak budu muset přilézt zpátky ke křížku. Potíž je, že když děláš 10x stejnou věc, tak ve skriptu je to ctrl-c ctrl-v, zatímco v builderu se uklikáš k smrti.
Já teď pár dnů nebudu k dispozici, ale případně bych ti pak mohl pomoci radou. Odkud jsi? Jestli z Prahy a okolí, mohli bychom se i sejít.
Budu si sice přihřívat vlastní polívčičku, ale jestli to neznáš, tak mrkni zatím sem:
http://gc.i-mh.net/w...wigo/index.html
Nejsem z Prahy. Na tvoje stránky se podívám, nějak jsem je nenašel, když jsem hledal.
#14
Publikováno 22 červen 2022 - 11:02
Já jsem taky programátor, ale je lepší vše, co půjde, naklikat přes diagramy. Urwigo totiž vygeneruje prověřený kód a odpadne spousta problémů. Lua si nech jenom na speciality, na které diagramy nestačí. Ale člověk musí být fest opatrný - Lua 5.1 a všechno si ověřovat nejlépe přímo v telefonu.
#15
Publikováno 25 červen 2022 - 19:37
Tak jsem to teda zkusil v telefonu ... a jsem zděšen. To co vidím ve WhereYouGo moc nepřipomíná to, co je v emulátoru. Hned na začátku WYG vyhodí nějakou kryptickou chybu, ale kartridž běží dál. Proměnné se z nějakých důvodů neinicializují, takže nevidím finálku, když mám zadat vstup, tak mi přes to WYG hodí okno s inventářem, v úkolech nejsou vůbec vidět popisy... prostě běs a hrůza.
Asi budu chvíli přemýšlet, jestli fakt chci dělat wherigo.
BTW, přišel jsem na to, co způsobuje výše uvedenou chybu -- dám sem řešení, kdyby to někdo hledal.
Potíž spočívá v tom, že ve funkci
string.len(s)
operand "s" není správně převeden na typ řetězec, pokud je náhodou typu číslo. Když si to zkusíte v normálním interpreteru lua v počítači, tak to úplně normálně funguje:
Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio > print(string.len(123)) 3
Ve Wherigo runtimu to ale je nějak zmršené a musíte explicitně převádět čísla na řetězce:
string.len(tostring(s))
Super platforma, kde nemůžete věřit vůbec ničemu... ani že programovací jazyk se chová podle specifikace.
Tento příspěvek byl upraven od mandevil: 25 červen 2022 - 19:38
#16
Publikováno 25 červen 2022 - 21:44
#17
Publikováno 25 červen 2022 - 22:27
Ve WherYouGo je jako Lua virtual machine použita knihovna Krka/Kahlua (odkaz je v aboutu), jejíž poslední aktualizace je z listopadu 2011. Tvůj příklad je v Lua z roku 2012. Podstatu problému se string.len bych hledal někde tady, je tam prostě hodně stará Lua.
I podle dokumentace k verzi 5.1 se mají provádět automatické převody mezi typy. Tohle mi přijde jako chyba, ale kdoví, jak to je. Každopádně Wherigo už mi funguje, díky za výpomoc.
#18
Publikováno 26 červen 2022 - 6:13
V každém případě držím pěsti, abys vytrval a dotáhnul ho do konce. A kdykoliv budeš potřebovat, tak se ozvi.
1 uživatel(ů) prochází toto téma
0 uživatelů, 1 návštěvníků 0 anonymních uživatelů