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

Alle Zonen deaktivieren

Hallo zusammen

Freudestrahlend wollte ich heute meinen neuen WiG testen, doch schon nach Sekunden hatte ich auf meinem Androiden ein Problem. Dabei hat doch im Urwigo-Emulator alles so prima funktioniert...

Ich konnte das Problem nun zu Hause mit deaktivieren/aktivieren von bestimmten Codeblöcken eingrenzen. Und zwar mag mein Androide die folgende Funktion nicht:
Code:
-----------------------------
-- Alle Zonen deaktivieren
-----------------------------
function deactivateAllZones(myCartridge)
	for k, v in ipairs(myCartridge.AllZObjects) do
		if v.Class.ClassName == 'Zone' then
			v.Visible = false
			v.Active = false
		end;
	end;
end

Was ganz analoges habe ich noch gebaut um dem Spieler alle Gegenstände wegzunehmen. Ich bin zwar beim Test auf dem Androiden nicht so weit gekommen, gehe aber extrem stark davon aus, dass das auch nicht funzt.

Sagt dies jemandem etwas? Wie gesagt: Im Emulator funktioniert der obige Code prima, von da her gehe ich davon aus, dass es nicht am Aufruf oder an Bezeichnungs-Problemen liegt. Ich tippe drauf, dass Wheryougo irgend ein Stück des obigen Codes nicht mag...

Ach ja, fast noch wichtiger: Sollte ich mit meiner Idee richtig liegen: Hat jemand eine Idee, wie man das zum Laufen bringen könnte?
 

Charlenni

Geomaster
Ich nehme an, dass ClassName unter OpenWIG nicht definiert ist. Also einfach mal durch .tostring ersetzen und auf "a Zone object" (nur aus dem Kopf) ersetzen.

Genaueres kann ich sagen, wenn ich wieder an meinem PC sitze.
 

Charlenni

Geomaster
Tut mir leid, keine Benachrichtigung bekommen.

Versuche mal die Funktion so umzuschreiben:
Code:
function deactivateAllZones(myCartridge)
   for k, v in ipairs(myCartridge.AllZObjects) do
      if tostring(v) == "a Zone instance" then
         v.Visible = false
         v.Active = false
      end;
   end;
end
Genaueres kannst Du unter http://forum.geoclub.de/viewtopic.php?f=74&t=66196 nachlesen.

Wenn die Sache mit ".Class.ClassName" auf dem Emulator läuft, dann würde ich das für einen Zufall halten. Dürfte auf keinem anderen Player klappen. Gibt es im Lua Standard nämlich nicht.
 
OP
W

whiterussian_ch

Geocacher
Wenn ich nicht ganz falsch liege habe ich das aus dem Blog von Krolock. Ich probiere gerne mal obige Version aus, sobald ich dazu komme.

Jedenfalls schon mal: Vielen Dank!
 

bodenseepingu

Geomaster
Das ClassName Dingens hab ich noch nie verwendet sondern meine Cartridges mit der tostring-Version liefen auf allen relevanten Playern (tschuldige I-Phone kann ich nicht testen)
 
OP
W

whiterussian_ch

Geocacher
Nur der Vollständigkeit halber: Die von Charlenni gepostete Version funktioniert natürlich perfekt.

Vielen Dank!
 

Krolock

Geocacher
Der Codeschnipsel stammt aus http://krolock.blogspot.de/2012/10/mit-lua-alle-zonen-des-wherigos-erfassen.html.
Ich habe die Problematik mit dem ClassName dort als Erweiterung erfasst und werde die toString Version auf dem Oregon testen.
Auf der Garmin-Hardware funktioniert Class.ClassName übrigens
 
Oben