Přejít na obsah


Fotka

Earwigo - časovač a běh


  • Pokud chcete vložit odpověď, přihlašte se
23 odpovědí na toto téma

#1 Thinuviel

Thinuviel

    Advanced Member

  • Members
  • PipPipPip
  • 37 příspěvků(y)

Publikováno 17 červen 2013 - 22:25

Vytvářím svou první wigo kešku v programu earwigo. Vše už mám hotové jen nemohu vyřešit poslední zapeklitou záležitost. Ráda bych měla v jedné zóně úkol ve kterém je třeba do určitého času uběhnout danou vzdálenost (nebo doběhnout do další zóny - záleží na tom co je možné použít). Již jsem si připravila časovač a zprávu s buttonem kde se po kliknutí časovač spustí. Chápu i použití funkce "if" ale nevím jak nastavit podmínku zda stihl hráč doběhnout na dané místo včas. Musí se to nějak propojit se novou zónou? Našel by se někdo s chytrou radou?
  • 0

#2 Thinuviel

Thinuviel

    Advanced Member

  • Members
  • PipPipPip
  • 37 příspěvků(y)

Publikováno 17 červen 2013 - 22:33

A ještě bych se v rámci svého dotazu chtěla zeptat, zda je vhodné a bezpečné pro wigo používat češtinu. Testovala jsem zatím na dvou různých smartphonech a čeština funguje bez problémů. Nevím ale, jak je na tom třeba Garmin.
  • 0

#3 mh.mail

mh.mail

    Advanced Member

  • Members
  • PipPipPip
  • 844 příspěvků(y)

Publikováno 17 červen 2013 - 23:07

Nejdřív jednu OT: Doporučil bych používat Urwigo, připadá mi jako mnohem příjemnější a kvalitnější builder. A teď k tvým dotazům. 1. Běh do zóny. Nejjednodušší postup se mi jeví takto: a. Po stisku tlačítka "Start" spustit časovač. b. Po doběhnutí do zóny (událost "Při vstupu" - "On Enter") vypnout časovač a zachovat se tak, že hráč úkol splnil. c. Po doběhnutí časovače deaktivoat zónu a zachovat se tak, že hráč úkol nesplnil. Jak to funguje? Časovač po startu odpočítává čas pro doběhnutí do zóny. Jakmile hráč do této zóny vstoupí ještě před vypršením časovače, časovač je zastaven a tedy neproběhne jeho kód, ale proběhne kód při vstupu do zóny (úspěch). Pokud to však hráč nestihne včas, nejprve doběhne časovač, který deaktivuje zónu a tedy neproběhne její kód, ale proběhne kód po uplynutí časovače (neúspěch). 2. Čeština. V žádném případě nepoužívat. Garminy místo českých znaků zobrazí otazníky a není vyloučeno, že by se mohly odporoučet do věčných lovišť.
  • 0

„Kdo podvádí, ochuzuje jenom sám sebe.“
http://gc.i-mh.net/ | gc@i-mh.net


#4 Thinuviel

Thinuviel

    Advanced Member

  • Members
  • PipPipPip
  • 37 příspěvků(y)

Publikováno 17 červen 2013 - 23:20

Díky moc za radu - myslím, že je jsem to snad pochopila správně, tak to hned vyzkouším. Jinak poznámka proč používám Earwigo a né Urwigo - mám macbook s operačním systémem Mac OS, takže Urwigo si bohužel nenainstaluji. Každopádně se mi Earwigo zdá jednoduché a celkem dobře pochopitelné, takže si nemůžu stěžovat :-)
  • 0

#5 Thinuviel

Thinuviel

    Advanced Member

  • Members
  • PipPipPip
  • 37 příspěvků(y)

Publikováno 17 červen 2013 - 23:32

Tak přeci jen jsem narazila na problém s popsaným řešením. Jde totiž o to, že v zóně č.1 lze učinit několik úkonů - buď si popovídat s osobou v zóně, nebo za ní běžet. Kdybych použila tvoje řešení tak nastane problém ve chvíli kdy hráč vybere, že si chce s osobou pouze popovídat a poté pokračovat do zóny 2. Jenže zóna 2 je až za zónou do které má hráč doběhnout v případě, že zvolí běh. Takže pokud použiji podmínku vázanou na vstup do zóny tak se informace o úspěšném doběhnutí zobrazí i ve chvíli kdy hráč nezvolí běh, ale povídání a pak zónou projde při pokračování do zóny 2. Snad je to trochu srozumitelné :-)
  • 0

#6 Thinuviel

Thinuviel

    Advanced Member

  • Members
  • PipPipPip
  • 37 příspěvků(y)

Publikováno 17 červen 2013 - 23:36

Takže leda nastavit té zóně do které se má doběhnout nějakou podmínku která by říkala, že pokud uživatel spustil časovač, tak aktivovat zónu jinak zónu neaktivovat. To ale opravdu nevím jak udělat. :-/
  • 0

#7 matejcik

matejcik

    Advanced Member

  • Members
  • PipPipPip
  • 389 příspěvků(y)

Publikováno 17 červen 2013 - 23:40

pořád to úplně nechápu s těmi zónami můžeš jim prosím přiřadit nějaké názvy, nebo písmenka, nebo očíslovat, a říct, ve které se co má stát? :e) tip, který ti možná pomůže (a možná ne): není zakázáno mít dvě zóny na stejném místě můžeš si tedy udělat jednu zónu, která bude ve své události "vstup" řešit doběhnutí, a druhou, která bude řešit něco jiného. pak je tedy potřeba postarat se o to, aby byla aktivní jenom jedna z nich, ale to mi připadá že se řeší samo tím, že budou na začátku neaktivní obě, a když si vybereš běh, tak aktivuješ tu běhací, zatímco když si vybereš to mluvení, aktivuješ tu druhou. (pochopitelně to bude vypadat zase trochu jinak, pokud chceš mít nějaké předměty v té zóně, pak bys to musela přesouvat. případně by bylo jednodušší udělat si proměnnou, nastavenou podle toho, jestli běháš nebo mluvíš, a udělat if-podmínku podle téhle proměnné)
  • 0

#8 Thinuviel

Thinuviel

    Advanced Member

  • Members
  • PipPipPip
  • 37 příspěvků(y)

Publikováno 18 červen 2013 - 0:06

Díky Matejcik, máš pravdu. Řešení od mh.mail nakonec funguje bezvadně. Jen bylo třeba se nad tím pořádně zamysler B) Díky moc oběma.
  • 0

#9 Thinuviel

Thinuviel

    Advanced Member

  • Members
  • PipPipPip
  • 37 příspěvků(y)

Publikováno 18 červen 2013 - 19:09

Můžete mi ještě poradit, jestli jde nějak zobrazit odpočet? Teď když odpočet spustím, tak se zobrazí jen základní obrazovka s nabídkami a vypadá to jako by se nic nedělo. Teprve když časovač dojede do konce tak se zobrazí zprávy, tak jak mají. Takže bych chtěla aby bylo vidět, že je časovač spuštěný.
  • 0

#10 matejcik

matejcik

    Advanced Member

  • Members
  • PipPipPip
  • 389 příspěvků(y)

Publikováno 18 červen 2013 - 19:26

no, to příliš dobře nejde máš několik možností, z toho žádná ideální: 1. vložit do inventáře nějaký předmět např. se jménem "časovač běží", a zase ho odebrat až to vypneš. Pak je ale vidět jenom v nabídce inventáře, případně v malém v tom náhledu seznamu předmětů. 2. použít SetStatusText, pak se objeví "status bar" a v něm informace o běhu časovače. tohle ale na Garminech nezobrazí nic, a u smartphonů bych to taky asi nesliboval 3. oblíbený způsob: spustit další časovač s intervalem 1s, a v každém kroku ukazovat MessageBox s textem "časovač běží". Tohle je i cesta, jak ukazovat, kolik času zbývá, tenhle MessageBox může používat hodnotu timer.Remaining z toho hlavního časovače, která obsahuje počet vteřin do konce. (povídá se, že časovače můžou být nespolehlivé a že je lépe si tohle dopočítat z reálného času, což je zase zcela jiný problém, který je na mnoha místech detailně popsán) nevýhoda je, že hráče blokují neustále vyskakující MessageBoxy a v průběhu odpočítávání nemůže nic dělat ale pokud je toho času hodně, třeba víc než dvě minuty, tak může mít smysl dát ten druhý časovač na interval 30s a čas od času se "připomínat" no a nebo ukázat po spuštění časovače jeden messagebox (v tom samém eventu, ve kterém se spouští časovač) s textem "běží ti čas, tak makej", a nechat zbytek na představivosti hráče
  • 0

#11 Thinuviel

Thinuviel

    Advanced Member

  • Members
  • PipPipPip
  • 37 příspěvků(y)

Publikováno 18 červen 2013 - 19:32

A když ukážu hned po spuštění časovače messagebox, nepřestane díky tomu časovač odpočítávat? Předpokládám že ne - časovač běží na pozadí dokud nenarazí na příkaz "stop" nebo nedoběhne do konce - je to tak?
  • 0

#12 matejcik

matejcik

    Advanced Member

  • Members
  • PipPipPip
  • 389 příspěvků(y)

Publikováno 18 červen 2013 - 19:32

přesně tak.
  • 0

#13 Thinuviel

Thinuviel

    Advanced Member

  • Members
  • PipPipPip
  • 37 příspěvků(y)

Publikováno 18 červen 2013 - 23:54

Tak zrada - když vložím zprávu, tak časovač pokaždé spadne a přestane fungovat. Asi raději vymyslím možnost, jak se tomu časovači co nejlépe vyhnout. Keška mi dala dost práce a byla by škoda kdyby mi to v tomhle místě zbytečně padalo.
  • 0

#14 matejcik

matejcik

    Advanced Member

  • Members
  • PipPipPip
  • 389 příspěvků(y)

Publikováno 18 červen 2013 - 23:56

to zní dost divně jak přesně se pozná, že "spadne a přestane fungovat"?
  • 0

#15 mh.mail

mh.mail

    Advanced Member

  • Members
  • PipPipPip
  • 844 příspěvků(y)

Publikováno 19 červen 2013 - 6:58

Pokud tedy netrváš na tom, aby se hráč dozvěděl, že nedoběhl včas, okamžitě, jakmile čas vyprší, ale bude ti to stačit, až dorazí do té cílové zóny, pak lze použít tento postup:

1. Po stisku tlačítka "Start" si zapsat do proměnné např. TimerStart aktuální čas (LUA kód: os.time()).
2. Po vstupu do cílové zóny si zapsat do proměnné např. TimerStop aktuální čas.
3. Odečíst oba časy od sebe TimerStop - TimeStart, převést na sekundy a zjistit, jestli výsledný čas je větší nebo menší, než ten požadovaný.

Viz http://www.urwigo.co...lanky&Itemid=22 (je to sice postup pro Urwigo, ale myslím, že by ti to mohlo pomoci).
  • 0

„Kdo podvádí, ochuzuje jenom sám sebe.“
http://gc.i-mh.net/ | gc@i-mh.net


#16 Thinuviel

Thinuviel

    Advanced Member

  • Members
  • PipPipPip
  • 37 příspěvků(y)

Publikováno 19 červen 2013 - 9:26

Takhle abych to uvedla na pravou míru - co se týče toho časovače který má měřit běh, tak ten je ok - úsek je to velmi krátký a časovač je nastaven na 15 vteřin, takže tam ho není potřeba zobrazovat. Ve wigu mám ale další stage kde dostává hráč penalizaci v podobě 5 minutové přestávky. A tady už je problém. Jednak se bojím aby během tak dlouhé nečinnosti celá aplikace nespadla a také by bylo vhodné průběžně hráče informovat, že je vše v pořádku, časovač běží a musí tedy čekat. Když použiji variantu se zobrazením zprávy po spuštění časovače, tak se časovač buď vůbec nespustí nebo spadne - to nejsem schopná říct. Zpráva se každopádně vůbec nezobrazí a ani po uplynutí nastaveného času se nic nestane - nezobrazí se zpráva o ukončení odpočtu (testuji samozřejmě s kratším 10 vteřinovým intervalem).
  • 0

#17 matejcik

matejcik

    Advanced Member

  • Members
  • PipPipPip
  • 389 příspěvků(y)

Publikováno 19 červen 2013 - 11:53

Když použiji variantu se zobrazením zprávy po spuštění časovače, tak se časovač buď vůbec nespustí nebo spadne - to nejsem schopná říct.

takhle se časovače nechovají. je samozřejmě teoreticky možné, že jsi narazila na nějakou obskurní chybu v playeru, ale daleko pravděpodobnější je, že chyba je někde jinde.

můžeš sem okopírovat tu funkci, ve které spouštíš časovač? z earwigo by to mělo jít normálně tak, že vybereš text a cmd+c/cmd+v sem
  • 0

#18 Thinuviel

Thinuviel

    Advanced Member

  • Members
  • PipPipPip
  • 37 příspěvků(y)

Publikováno 19 červen 2013 - 13:45

Časovač spouštím po kliknutí na button Start ve zprávě takto: Operace s časovačem Prestavka:Start (Časovač se jmenuje Prestavka) Potom v samotném časovači jsem měla příkaz pro zobrazení zprávy při startu nastaven takto: Ukázat zprávu nebo dialog Text:11.4. Odpocet bezi Zkoušela jsem i varinatu kdy jsem funkci zobrazení zprávy dala rovnou pod button Start. Výsledek byl stejný :-/
  • 0

#19 mh.mail

mh.mail

    Advanced Member

  • Members
  • PipPipPip
  • 844 příspěvků(y)

Publikováno 19 červen 2013 - 14:00

Já bych si tipnul, že to bude nějaká blbost, jenom si navzájem neumíme sdělit, co přesně a jak se kde dělá. Umí Earwigo vyexportovat celý projekt ve zdrojovém tvaru jako LUA kód? Pokud ano, bylo by možná nejlepší provést tento export, někam ho vystavit na web a hodit na něj odkaz, nebo mi to poslat na e-mail uvedený v profilu. Jinak to asi nerozlousknem.
  • 0

„Kdo podvádí, ochuzuje jenom sám sebe.“
http://gc.i-mh.net/ | gc@i-mh.net


#20 matejcik

matejcik

    Advanced Member

  • Members
  • PipPipPip
  • 389 příspěvků(y)

Publikováno 19 červen 2013 - 14:28

Thinuviel napsal/a:
Časovač spouštím po kliknutí na button Start ve zprávě takto:
Operace s časovačem Prestavka:Start
(Časovač se jmenuje Prestavka)


a ten konec máš v události časovače Stop, nebo Tick?
má být v události Tick - ta se vyvolá, když časovač doběhne, zatímco Stop se vyvolá, pokud ho zastavíš příkazem
  • 0
<reklama>OpenWIG - Wherigo player pro mobilní telefony</reklama>
"ty vaše kešky" jsou mi celkem ukradené :ep




0 uživatel(ů) prochází toto téma

0 uživatelů, 0 návštěvníků 0 anonymních uživatelů

Reklama