• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Probleme beim Timer progamieren

theisensch

Geocacher
Hallo

ich mache gerade meinen ersten Wherigo. Um eine Zone weiter zu kommen muss der Spieler Fragen beantworten. Wenn er einen falsche Antwort gibt , soll ein Timer von 60 Sekunden runterlaufen, bis man nochmal die richtige Antwort geben kann. Aber das mit dem Timer bekomme ich nicht hin.Nach der falschen antwort springt man sofort wieder zur Frage zurück. Kann mir jemand helfen.

Ich programiere mit Urwigo.

Danke Thomas
 
OP
T

theisensch

Geocacher
docfred schrieb:
Ein (oder mehrere) Screenshot(s) wäre(n) gut. ggf. auch die urwigo Datei.
docfred

Danke für die Antwort. Ich kann nur nicht viel damit anfangen. Kannst du mir genauer beschreiben wie ich was machen müsste. Ich habe gemerkt dass mein timer im Hindergrund läuft. Denn nach 60 sekunden kommt die meldung: "nächste eingabe jetzt möglich". Aber mir wird kein timer angezeigt und ich kann ganz normal mit dem Wherigo weiter machen. Ich hätte aber gerne, dass für 60 Sekunden gar nix machbar ist.

MfG Thomas
 

Charlenni

Geomaster
Dann musst Du einfach alles sperren für diese Zeit (alle Zonen auf inaktive, alle Gegenstände und Charaktere auf unsichtbar usw.) und nach 60 Sekunden in der Timer-Funktion alles wieder rückgängig machen. Eventuell wäre ein Gegenstand "Uhr" ganz nützlich, auf dem man die Wartezeit sieht.

Apropos: diese 60 Sekunden werden intensiv genutzt, um über Dich zu fluchen ;-)
 

jonny65

Geomaster
theisensch schrieb:
Aber mir wird kein timer angezeigt und ich kann ganz normal mit dem Wherigo weiter machen. Ich hätte aber gerne, dass für 60 Sekunden gar nix machbar ist.

Das passt aber nicht zur 1. Mail, wo du schreibst es wird sofort wieder gefragt. Klingt so, als ob der Timer überhaupt nicht anläuft nach dem Compare im Input Teil (Wenn Antwort falsch, starte Timer ... im Elapse vom Timer dann wieder den Input rufen). DAs gibt dann eine (beabsichtigte) Dauerschleife bis die Antwort richtig ist.

Alle Items Tasks, Zonen usw. platt machen macht imho keinen Sinn, wozu auch. Der Spieler kommt ja eh nicht weiter, da hierfür erst die Antwort richtig sein muss. Und es geht auch nix kaputt, wenn er in der Zwischenzeit in den Tasks rumblättert oder wie Charlenni schreibt über den Owner mit den blöden Einfällen flucht. :D By the way, über 60 Sekunden würd ich mich auch aufregen, erst recht, wenn ich die Antwort wusste, mich aber verklickt habe :motz:
 
OP
T

theisensch

Geocacher
Man kann nach der falschen Antwort bis jetzt auch weiter machen. Ich habe aber festgestellt, als ich den Wherigo vor Ort ausprobiert habe, dass nach 60 sek die Meldung kommt "nächste eingabe jetzt möglich". Diese kommt dann im laufenden Spiel. Als muß ja im Hintergrund der Timer runterlaufen. Ich habe mal ein Bild gemacht.
 

Anhänge

  • Timerbild.jpg
    Timerbild.jpg
    30,6 KB · Aufrufe: 750

kansu_makugen

Geocacher
theisensch schrieb:
Man kann nach der falschen Antwort bis jetzt auch weiter machen. Ich habe aber festgestellt, als ich den Wherigo vor Ort ausprobiert habe, dass nach 60 sek die Meldung kommt "nächste eingabe jetzt möglich". Diese kommt dann im laufenden Spiel. Als muß ja im Hintergrund der Timer runterlaufen. Ich habe mal ein Bild gemacht.

Ich würde behaupten, dass das "Eingabe holen" im rechten Zweig da nicht hingehört. Die Eingabeaufforderung dürfte nämlich unabhängig vom Timer auftauchen.
 

Charlenni

Geomaster
Ist klar. Du startest den Timer mit 60 Sekunden Laufzeit und machst dann weiter. Nach 60 Sekunden wird die Funktion aufgerufen, die Du für den Timer hinterlegt hast.

Was Du wolltest, ist eine "Sleep" Funktion, die den Ablauf für 60 Sekunden unterbricht und dann erst weiter macht. Eine kurze Suche beschwert die Gewissheit, dass Lua soetwas nicht von Haus aus hat. Du kannst es natürlich selber bauen. Sieht so aus:
Code:
local clock = os.clock
function sleep(n)  -- seconds
  local t0 = clock()
  while clock() - t0 <= n do end
end
Funktion vergleicht einfach die Uhrzeiten und macht nichts anderes. Kann natürlich durch ein Ereignis unterbrochen werden (Spieler betritt Zone oder so).

Mit Timern geht es auch. Hat Jonny65 ja schon beschrieben. Also im Timer Tick immer wieder die Abfrage machen und wenn Antwort richtig, dann nächste Zone freischalten.
 

jonny65

Geomaster
Kansu_Makugen schrieb:
Ich würde behaupten, dass das "Eingabe holen" im rechten Zweig da nicht hingehört. Die Eingabeaufforderung dürfte nämlich unabhängig vom Timer auftauchen.

Ja is falsch, der Input muss NACH Ablauf des Timers aufgerufen werden, das soll ja genau bezweckt werden. Timerstart vor Anzeige der Messagebox, sonst addiert sich nochmal Wartezeit bis OK geklickt
warteantwort.JPG

Und wo kommt er dann hin ? Natürlich ins Elapse Event vom Timer
timerinput.JPG

Der Spieler muss also solange eingeben bis die Antwort richtig ist, dann zieht der linke Zweig und es kommen Sachen wie neue Zone aktiv o.ä.

Aber ich würds mir dennoch überlegen ..60 Sekunden wozu denn ?
IPhone Spieler massakrieren dich eh, die dürfen nämlich 2 Minuten warten, außer du setzt Timer.Duration auf 30 nach Check auf iPhone.
 
Oben