Geocaching & GPS location based games

Thema anzeigen - LUA wäre schön...


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 


Autor Nachricht
 Betreff des Beitrags: LUA wäre schön...
BeitragVerfasst: Do 8. Mär 2012, 00:51 
Offline
Geocacher

Registriert: Do 8. Mär 2012, 00:36
Beiträge: 15
Hallo,
ich würde mich gerne mal an LUA für einen WIG ausprobieren und hab den ein oder anderen Thread hier durchgelesen.
Leider komme ich mit URWIGO nicht zum gewünschten Ergebnis.
Ich möchte beim Betreten einer Zone folgende Funktion ausführen:

Benutzer Funktion:
function GetTime()
objTime = 5
end

Dazu hab ich die Variable "Time" als Zahl mit Wert 0 definiert
Beim Betreten der Zone rufe ich über "Benutzerdefinierer Code" die Funktion "GetTime()"

Zone.Beim Betreten
Meldung
Time
Beim Anklicken
Benutzerdefinierter Code
GetTime
Meldung
Time

Leider bekomme ich immer nur den Wert 0 angezeigt.
Was muss ich anders machen um bei der letzten Meldung den Wert 5 angezeigt zu bekommen?
Danke
Atokad


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: LUA wäre schön...
BeitragVerfasst: Do 8. Mär 2012, 07:50 
Offline
Geocacher
Benutzeravatar

Registriert: Mi 11. Mai 2011, 11:01
Beiträge: 224
Atokad hat geschrieben:
Hallo,
ich würde mich gerne mal an LUA für einen WIG ausprobieren und hab den ein oder anderen Thread hier durchgelesen.
Leider komme ich mit URWIGO nicht zum gewünschten Ergebnis.
Ich möchte beim Betreten einer Zone folgende Funktion ausführen:

Benutzer Funktion:
function GetTime()
objTime = 5
end

Dazu hab ich die Variable "Time" als Zahl mit Wert 0 definiert
Beim Betreten der Zone rufe ich über "Benutzerdefinierer Code" die Funktion "GetTime()"

Zone.Beim Betreten
Meldung
Time
Beim Anklicken
Benutzerdefinierter Code
GetTime
Meldung
Time

Leider bekomme ich immer nur den Wert 0 angezeigt.
Was muss ich anders machen um bei der letzten Meldung den Wert 5 angezeigt zu bekommen?
Danke
Atokad


Spontan würde ich sagen, dass du die Klammern hinter GetTime vergessen hast. Funktionsaufrufe erfolgen immer in der Form
Code:
FunktionsName([opt. Parameter])

bzw.
Code:
Variable = FunktionsName([opt. Parameter])

Heißt deine Variable denn auch wirklich objTime?

PS: Sinnvollerweise würde ich innerhalb der Funktion mit einer lokalen Variable arbeiten und diese mittels return zurückgeben. Das hat den Vorteil, dass du den Wert auch anderen Variablen außer objTime zuweisen kannst, ohne eine neue Funktion schreiben zu müssen. Sieht dann etwa so aus:
Code:
function GetTime()
   local varTime = 5
   return varTime
end

Der Aufruf erfolgt dann über:
Code:
objTime = GetTime()


Wenn du in der Funktion auch noch die Konstante 5 durch was gescheites ersetzt - Urwigo hat bspw. die Zeitfunktion _Urwigo.SecondInYear eingebaut - kannste in deiner Funktion die aktuelle Zeit ausgeben. Geht in etwa so
Code:
local varTime = _Urwigo.SecondInYear(os.date "*t")

Nur mal so am Rande ;)

_________________
Do you think a pile of shit feels popular because it's surrounded by flies?


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: LUA wäre schön...
BeitragVerfasst: Do 8. Mär 2012, 23:44 
Offline
Geocacher

Registriert: Do 8. Mär 2012, 00:36
Beiträge: 15
leider wars das nicht :(
Die Klammern sind auf jeden Fall gesetzt.
Dateianhang:
Bild1.png
Bild1.png [ 117.83 KiB | 313-mal betrachtet ]

Dabei ist es auch egal ob ich die Variable als "Time" oder "objTime" verwende.
es kommt jedes Mal der Wert "0" zur Anzeige.

Zitat:
Urwigo hat bspw. die Zeitfunktion

Genau das möchte ich mal verwenden! Aber ich bekomme das Ergebnis nicht auf die
Cartige. Erst wenn ich aus LUA ein Ergebnis in eine definierte Variable zur Anzeige bekomme kann ich mich dem Thema os.time() widmen. Die kann ich mir zumindest schon mal im Urwigo LUA Debug ermitteln lassen...nur auf die Cartige bekomme ich sie halt nicht.

:hilfe:


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: LUA wäre schön...
BeitragVerfasst: Fr 9. Mär 2012, 08:13 
Offline
Geocacher
Benutzeravatar

Registriert: Mi 11. Mai 2011, 11:01
Beiträge: 224
Schreib mal in das Feld mit dem User Code, wo derzeit nur "GetTime()" drin steht "objTime = GetTime()" rein. Ansonsten wird ja deiner Varaiblen Time (deren Lua-Name vermutlich objTime ist) kein Wert zugewiesen, sondern nur der lokalen Variablen "Time". Dann sollte es gehen.
Zugriff auf die Urwigo-Zeitfunktionen hast du über das Menü auf der linken Seite. Da ist irgendein Baustein für Zeit/Datum drin. Dazu brauchste nicht mal User Code. Nimmst einfach den Set-Befehl (in der deutschen Version Festlegen genannt) und packst deine Variable Time sowie den Zeit/Datumsbaustein rein. Da kannste dann noch festlegen, was du der Variablen Time zuweisen willst (z.B. Sekunden seit dem 1.1. oder Tage seit dem 1.1. und solche Geschichten).
Ich kann grad keine screenshots zu Urwigo liefern. Sitz am falschen Rechner. Aber ich hab dir was gemalt (siehe Anahng). ;)
Das fügste anstelle deines User Codes ein.

Gruß

PS: Man möge mir die dilettantische Zeichnung verzeihen


Dateianhänge:
Date_time.jpg
Date_time.jpg [ 8.98 KiB | 288-mal betrachtet ]

_________________
Do you think a pile of shit feels popular because it's surrounded by flies?
Nach oben
 Profil  
 
 Betreff des Beitrags: Re: LUA wäre schön...
BeitragVerfasst: Fr 9. Mär 2012, 08:24 
Offline
Geocacher
Benutzeravatar

Registriert: Mi 11. Mai 2011, 11:01
Beiträge: 224
Nochmal was zum Verständnis:
Wenn du im Urwigo eine Variable erstellst und ihr einen Namen zuweist, wird im Normalfall als Lua-Bezeichner (also quasi als interner Name der Varaiblen) das Kürzel obj vor den eingetragenen Namen gesetzt. d.h. wenn du den Namen "Time" eingetragen hast, heißt der Lua-Bezeichner "objTime". Den Lua-Bezeichner kannst du auch von Hand festlegen. Ist sinnvoll, wenn du irgendwo im UserCode auf die Variable zugreifen willst. Das Problem ist nämlich, dass wenn ein Name mehrfach verwendet wird (bspw. hast du eine Variable "Time", eine Zone "Time" und ein Bild "Time"), wird noch ein Zähler drangehängt. Es gibt dann also objTime1, objTime2 etc.
Die grafische Oberfläche von Urwigo zeigt immer nur den Namen und nicht den Bezeichner an! Im User Code (also auch in den User Functions) steht dagegen immer der Lua-Bezeichner und nicht der Name. Die Variable mit dem Namen "Time" in der Meldung in deinem Beispiel also ist NICHT die Variable "Time" aus deiner Funktion!

_________________
Do you think a pile of shit feels popular because it's surrounded by flies?


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: LUA wäre schön...
BeitragVerfasst: Fr 9. Mär 2012, 13:41 
Offline
Geomaster

Registriert: Do 8. Mär 2007, 22:48
Beiträge: 568
Wohnort: 88682 Salem
Ich möchte hier nochmal auf das Wherigo-Handbuch verweisen

www.das-wherigo-handbuch.de

Da gibt es einen extra Abschnitt über LUA. Sicherlich fehlen noch einige Dinge - auch essentielle, aber vor allem, wenn ein Newcomer mal da drüber geht, kann er wertvolle Hinweise geben bzw. selber dazu beitragen, dass hier was entsteht, was andere auch gebrauchen können.

Das was es wenigstens gibt: genügend herunterladbare Beispiel-Cartridges, die in Urwigo jede Menge LUA-Code verwenden - da bin ich nicht unschuldig daran.

An verschiedenen Stellen ist auch beschrieben, worauf man achten muss - z.B.
- wie sorgt man dafür, dass LUA-Variablen/Tables beim Speichern / Wiederladen auch mitgespeichert werden...

_________________
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: LUA wäre schön...
BeitragVerfasst: Fr 9. Mär 2012, 13:56 
Offline
Geomaster

Registriert: Do 8. Mär 2007, 22:48
Beiträge: 568
Wohnort: 88682 Salem
....hab grad im Wiki noch etwas im Bereich LUA-Codeschnipsel hinzugefügt - gerne darf auch jemand, der das macht die Abschnitte mit aussagekräftigen Screenshots ergänzen...

http://www.das-wherigo-handbuch.de/index.php?title=Beispiele/Codeschnipsel_in_LUA#Zusammenspiel_zwischen_grafischer_Urwigo-Programmierung_und_LUA-User-Code

_________________
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: LUA wäre schön...
BeitragVerfasst: Sa 10. Mär 2012, 00:25 
Offline
Geocacher

Registriert: Do 8. Mär 2012, 00:36
Beiträge: 15
Puh, das war 'ne schwere Geburt. Aber ich hab's geschafft das Ergebnis der Funktion auf die Cartrige zu bringen.
Die Funktion wie beschrieben bleibt wie sie ist, nur ihr Aufruf im Benutzerdefinierten Code wird direkt der Variablen zugewiesen wie sie im Urwigo definiert wurde, ohne "obj" vorne dran.

Dateianhang:
1.jpg
1.jpg [ 9.24 KiB | 236-mal betrachtet ]


Danke für die Infos und Links

PS: die meisten Mysteries sind einfacher zu lösen als ein Problem mit Urwigo und LUA :datz:


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Impressum