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

Befehle über LUA erzeugen/definieren

wendenzo

Geocacher
Hallo wiedermal,

ich hätte wieder einmal eine Frage: Kann man durch ein Lua-Script in dessen Ablauf einen (Urwigo-)Befehl erzeugen? Als Beispiel: wenn ich einen Gegenstand "Haus" habe und wenn im Ablauf des Programmes z.B. Fenster=true gesetzt wird, dann erzeuge den Befehl "Fenster einschlagen" im Gegenstand "Haus". Und ich meine wirklich erzeugen, nicht sichtbar machen oder verschieben.

Danke und Grüße
 

Charlenni

Geomaster
Einfach ein Wherigo.ZCommand erzeugen
Code:
Einschlagen = Wherigo.ZCommand{Text="Einschlagen", CmdWith=false, Enabled=true, EmptyTargetListText="Hier ist nichts, womit man die Scheibe einschlagen kann."},
Dann das Commando dem Item hinzufügen
Code:
table.insert(zitemFenster.Commands, Einschlagen)
Noch als Anmerkung: alles aus dem Kopf, also keine Garantie. Außerdem kann es sein, dass nicht alle Player das Commando gleich anzeigen, weil das Item nicht aktualisiert wird.

Wenn es nicht funktioniert, dann nochmal melden :D
 

Charlenni

Geomaster
So, jetzt nochmals kurz überprüft und dabei festgestellt, dass noch ein Schritt fehlt.
Code:
Einschlagen = Wherigo.ZCommand{Text="Einschlagen", CmdWith=false, Enabled=true, EmptyTargetListText="Hier ist nichts, womit man die Scheibe einschlagen kann."})
tbl = zitemItem.Commands
table.insert(tbl, Einschlagen)
zitemItem.Commands = tbl
Wichtig ist hier, dass Du die Tabelle explizit dem Eintrag "Commands" zuweist, da sonst die Änderung nicht funktioniert.

Allerdings muss ich Deine Freude gleich dämpfen: im Normalfall ist das Command nicht sofort zu sehen. Du musst erst die Detailansicht des Items verlassen und dann wieder auftreten. Und auf dem iPhone funktioniert es überhaupt nicht :( WhereYouGo und OpenWIG habe ich nicht getestet.
 

Charlenni

Geomaster
Ah, und jetzt natürlich noch die alles entscheidende Frage vergessen: warum?

Du kannst ja eigentlich die Kommandos schon im voraus anlegen und Enabled = false machen. Dann ist das Kommando nicht zu sehen, aber schon vorhanden. Bei Bedarf dann Text und Enabled = true setzen und schon ist es sichtbar.
 
OP
wendenzo

wendenzo

Geocacher
Wieder mal vielen Dank für deine umgehende Hilfe!

Das der Befehl im Item nicht sofort sichtbar ist, wäre eigentlich nicht so ein großes Problem, damit könnte ich leben. Was ich aber nicht ganz verstehe ist warum das auf dem Iphone nicht läuft? Diese Code-Zeilen schreiben ja den Befehl genauso in das table als wie wenn man es schon vorher in Urwigo definiert hätte, also der Aufruf müsste doch immer klappen, egal mit welchem System?

Zum Warum: Hintergrund der Geschichte ist (ganz allgemein gesehen) das Wehrigokonstrukt variabel zu halten, d.h. wenn das ganze Spiel (Befehle, Items usw.) von gewissen Zonen abhängt, nachträglich aber vielleicht Zonen verändert, hinzugefügt oder gelöscht werden. Um nicht alles manuell eingeben zu müssen dachte ich mir, es wäre doch sinnvoll, wenn sich der WIG seine "Umgebung" selbst erstellt, abhängig von klar definierten Voraussetzungen. Wie gesagt, es geht mir nicht um einen speziellen Wehrigo, sondern ganz allgemein.
 

Charlenni

Geomaster
Der iPhone Player liest vermutlich die Commands des Items beim Start aus und dann nicht mehr. Er bekommt einfach nicht mit, dass sich die Tabelle Commands ändert. Ist auch bei anderen Sachen so. Z.B. wenn Du den Namen eines Items änderst. Das wird auch nicht sofort angezeigt.

Also nicht ärgern :)
 
Oben