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

Wandernde Zone LUA Code für Urwigo

bodenseepingu

Geomaster
Ich beantworte jetzt einfach mal die erste Frage, die ich ohne Windows und den Urwigo anzuwerfen beantworten kann.

Die Funktion GetZonePoints(refPt, radi) ist eine LUA Funktion - und unter Urwigo solltest du die unter Ansicht benutzerdefinierte Funktionen oder so ähnlich finden.

Wenn die Funktion dort nur 6 Punkte berechnet, ergibt sich das Sechseck - du kannst aber implementieren was du willst - ob du 3, 4, 5, 6, 7 oder 8 Punkte haben willst.

Gruß bodenseepingu
 

bodenseepingu

Geomaster
....ach ja - da ich ja der Urheber der Cartridge sein dürfte - was schon ne Weile her ist....

Viele Wege führen nach Rom - Ich sag jetzt einfach, ich hab keine Ahnung mehr, warum ich was wie gemacht habe.

Bei Frage 3 habe ich so eine Ahnung - wenn ich schon einen Timer nehme, dann möchte ich auch in dem Timer überprüfen, ob ich die Zone weiterschieben soll. Natürlich kann man auch komplett anders arbeiten - und z.B. beim Betreten oder bei Annäherung an die Zone einfach die Zone weiterschieben.
 

Charlenni

Geomaster
Habe jetzt doch noch den PC angeworfen.

1. Die Anzahl der Punkte am Anfang spielt gar keine Rolle. Können auch 20 sein. Aber da 3 Punkte reichen, um eine Zone zu definieren, hat bodenseepingu nicht mehr gemacht. Wenn man sich die Funktion anschaut

Code:
function GetZonePoints(refPt, radi)
    local dist = Wherigo.Distance(radi, 'm')
    local pts = {
        Wherigo.TranslatePoint(refPt, dist, 0),   -- Punkt 1
        Wherigo.TranslatePoint(refPt, dist, 60),  -- Punkt 2
        Wherigo.TranslatePoint(refPt, dist, 120),  -- Punkt 3
        Wherigo.TranslatePoint(refPt, dist, 180),  -- Punkt 4
        Wherigo.TranslatePoint(refPt, dist, 240),  -- Punkt 5
        Wherigo.TranslatePoint(refPt, dist, 300),  -- Punkt 6
    }

    return pts
end
dann sieht man genau, dass die Zone immer ein Sechseck zurückgibt. Und das unabhängig von den bereits bestehenden Zonenpunkten.

2. Ich nehme mal an, dass der Grund ist, dass nicht alle Player so gut mit Timern umgehen können. Außerdem sind manche Geräte auch nicht die schnellsten. Da muss nicht jede Sekunde viel passieren um sie an den Anschlag zu bringen. Immerhin wird in der Abfrage jedesmal der Agent aus und wieder eingeschaltet.

3. Eine sich bewegende Zone betreten und das bei nicht optimalen Koordinaten kann sehr nervenaufreibend sein. Da kann es schon mal böse Kommentare geben. Auf bis zu 10 m rankommen ist da weit aus einfacher.

Da ich die Routine nicht geschrieben habe, sind alle oben gemachten Äußerungen reine Hypothese und können nur vom Programmierer selbst genau erklärt werden.
 

Vansen

Geocacher
Hallo Bodenseepingu,
ich danke dir herzlichst für deine schnelle Antwort. Es ist echt schwer alles zu verstehen, wenn man Jahre später in so ein Thema "reinstolpert" und die Entwicklung des Wieso und Weshalb nicht mitbekommen hat. Und du hast mir geholfen. Ich wußte nicht, dass es unter Ansicht die Lua-Funktionen gibt. Ich dachte die definiert man wie den Timer oder die Zonen bei den Funktionen. Das erklärt einiges.
Und zur zweiten und dritten Frage. Klar führen viele Wege nach Rom. Und ich wollte Eure Wege verstehen. Denn es scheint ja einige Bugs zu geben, die ihr schon ausgemerzt habt.
Jetzt kann ich zufrieden ins Bett gehen.
Gruß Vansen

PS: ich sehe gerade, Charlenni schreibt auch etwas. Meine Güte ist das ein Support ;-)
 

Vansen

Geocacher
Ok, einen hab ich noch:
Es klappt klappt alles super. Nun will ich eine Zone nicht auf den Spieler hin sondern auf eine Zone zu bewegen. Dafür habe ich eine Zone mit drei Eckpunkten mit den Namen fixpunkt_boot angelegt. Nun soll sich eine andere Zone namens boot_zone darauf zu bewegen. Dafür brauche ich aber eine Koordinate, nicht eine Zone.
Habe es mit zone.OriginalPoint, also fixpunkt_boot.OrginalPoint probiert, es klappt aber nicht:

Code:
entfernung_boot = move_zone(boot_zone, fixpunkt_boot.OriginalPoint, 6,20)

Wenn ich direkt die Koordinate eingeben könnte, dann würde mir das auch reichen. Ich weis aber nicht, wie man die Koordinate deklariert und übergibt.

Habt ihr vielleicht einen Tip für mich?
 

Vansen

Geocacher
Ich antworte mir mal selbst. Für alle die nach mir kommen, es geht genau so. Ich hatte die Kennung vertauscht. zone_boot ist eben nicht boot_zone :)
 
Oben