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

[urwigo]: Verwendung symbolischer Namen als Inkrementwert?

satanklaus

Geomaster
Titel sagt eigentlich alles.

Konkreter Anwendungsfall wäre z.B. im Wettlauf Bsp. aus dem Handbuch sowohl die Countdown Duration des Timers als auch den Inkrementwert im OnElapsed Handler aus einem Variablenwert zu beziehen, den man zentral ändern kann.

Ich nehme an in LUA geht so was wie in jeder vernünftigen Programmiersprache auch. Aber beim grafischen Zusammenclicken? Sowohl bei den Timer Properties als auch bei denen der Increment Operation wird nur ein konkreter numerischer Wert akzeptiert und keine Variablen-Referenz.

Gerade bei komplexeren Szenarien könnte das zentrale Pflegen von mehrfach verwendeten Informationen sicher das Ergebnis robuster machen.

Ideen oder Tipps?
 

Charlenni

Geomaster
Lua-Befehlszeile und dann
Code:
variable = variable + value
wobei variable der Name der Variablen ist, die geändert werden soll, und value der Wert, um den variable erhöht werden soll.
 

Charlenni

Geomaster
I would use "Lua User Code" for this, because it is code. If you can say, which part of the Wherigo you would change, than I could try to give an example with "Lua User Expression". :)
 
OP
satanklaus

satanklaus

Geomaster
Ich habe parallel mal ein bisschen rumprobiert:

Ich kann mir noch vorstellen, dass ich eine Increment Action durch ein komplexeres Konstrukt ersetze, innerhalb dessen dann ein Stück LUA code ausgeführt wird.
Aber wie soll ich sowas in die Eingabemaske für den Contundown Wert des Timers reinbekommen?
 
OP
satanklaus

satanklaus

Geomaster
If you can say, which part of the Wherigo you would change, than I could try to give an example with "Lua User Expression".

Konkret diese beiden Stellen (wir können schon bei deutsch bleiben :D )
Hier soll die explizite 1 jeweils durch eine Variable ersetzt werden.

urwigo-countdown.JPG

urwigo-onelapse.JPG

Hier vielleicht noch mal der Link zum Projekt aus dem Handbuch, auf den sich das alles bezieht...
 

Charlenni

Geomaster
Oh, hier wird gewürfelt. :roll:

Einmal handelt es sich um die Zeitdauer (Duration) eines Timers. Die setzt Du so
Code:
timerName.Duration = variable
Beim anderen handelt es sich um Dinge, die bei jedem Ablaufen des Timers auftreten. Die behandelst Du so
Code:
ZeitVerstrichen = ZeitVerstrichen + variable
.

Sieht dann so aus (wobei beide verschiedenen Lua Varianten benutzt wurden)
 

Anhänge

  • LuaCode.JPG
    LuaCode.JPG
    24,5 KB · Aufrufe: 1.020
OP
satanklaus

satanklaus

Geomaster
Danke schon mal (von unterwegs).
Die Idee beim Countdown ist also., den Wert aus der Eingabemaske dann noch mal per Code zu überschreiben. Wo mache ich das am besten? Beim onstart Event der Cartridge?
 

Sabeta

Geocacher
Das geht auch ohne LUA, direkt im Urwigo. Erst wenn man die Variable direkt aus einer Table liest würde ich Lua verwenden, dies mache ich z.B. bei Animationen: Bild = img[index] wenn img={Bild1, Bild2, ..., Bildn}] ist.

Hier wird einfach vor dem Starten des Timer die Dauer festgelegt, das kann von einer Variable erledigt werden oder von einen festen Wert, der nicht immer gleich sein muß. Innerhalb des Timers greift man einfach die Dauer direkt ab.

Sabeta
 

Anhänge

  • var.jpg
    var.jpg
    49,9 KB · Aufrufe: 925
OP
satanklaus

satanklaus

Geomaster
Sieht dann so aus (wobei beide verschiedenen Lua Varianten benutzt wurden) ...

(... habe es leider nicht geschafft, auch das Bild zu kopieren. Gabe es früher nicht mal einen "Zitieren" Knopf)

Ich habe den Vorschlag mit der LUA Expression zum Inkrementieren der Gesamtzeit getestet.
urwigo-wettlauf-mit-variable.JPG

Und bekomme einen Laufzeitfehler.
urwigo-runtime-error.JPG

@Charlenni: Hast du deinen Vorschlag erfolgreich getestet?
 

Charlenni

Geomaster
Kann nicht funktionieren, da Deine Variable nur in Urwigo "ZeitVerstrichen" heißt. Wenn Du die Kennung auf "Automatisch" lässt, dann hat die Variable in Lua einen unbekannten Namen (z.B _6tzh5). Damit es mit den Lua Befehlen funktioniert musst Du in das Feld Kennun etwas eintragen.
 
Oben