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

per LUA feststellen in welcher Zone ein Gegenstand liegt

Lässt sich per LUA feststellen, in welcher Zone ein Gegenstand liegt? Ich habe in Urwigo einen Testgegenstand in die ZoneA angelegt und mir den Code angesehen. Irgendwie steht dann da nur
Code:
Gegenstand.ObjectLocation = Wherigo.INVALID_ZONEPOINT

Hintergrund: ich möchte die Zone als Argument einer Benutzerfunktion verwenden.

Besten Dank für eure Hilfe.
 

Sabeta

Geocacher
man könnte jede Zone abfrage

Code:
objZone:Contains(objItem)

wenn das Item in der Zone ist, dann ist dieser Ausdruck true, mittels if then kann man die Zone einer Variablen zuweisen

Code:
if objZone1:Contains(objItem1) then
   InZone=objZone1.Name
end
if objZone2:Contains(objItem1) then
   InZone=objZone2.Name
end
if objZone3:Contains(objItem1) then
   InZone=objZone3.Name
end

Sabeta
 
OP
W

whiterussian_ch

Geocacher
Vielen Dank schon mal.

Ich habe mir gerade nochmals Gedanken dazu gemacht: Funktioniert das auch für Gegenstände, die der Spieler im Inventory hat, wenn er in einer Zone steht? Oder wie lässt sich abfragen, in welcher Zone ein Spieler steht?
 

kansu_makugen

Geocacher
whiterussian_ch schrieb:
Funktioniert das auch für Gegenstände, die der Spieler im Inventory hat, wenn er in einer Zone steht? Oder wie lässt sich abfragen, in welcher Zone ein Spieler steht?

Zum ersten Teil deiner Frage würde ich sagen: Nein, weil in diesem Fall der Spieler das Item "enthält". Hab es nicht getestet, aber es wäre logisch (wobei man ja in dem einen oder anderen Thread liest, dass Wherigoprogrammierung jeglicher Logik entbehrt).
Zum zweiten Teil: Vermutlich ja. Man kann ja den Abstand des Spielers zur Zone bestimmen. Bodenseepingu hat hier sowas mal durchexerziert. Gibt aber vielleicht auch ne einfachere Variante.
 
OP
W

whiterussian_ch

Geocacher
Wenn ich mir nochmals Gedanken darüber mache: Wie kann ich denn feststellen, in welcher Zone ein Spieler steht bzw. ob er in einer Zone steht?
 

Krolock

Geocacher
Genauso wie beim Gegenstand, nur dass du Player statt Item nimmst.
Code:
if objZone1:Contains(Player) then ...
 

bodenseepingu

Geomaster
Unter http://wherigobuilder.wikispaces.com/Wherigo+(Class) gibt es eine Auflistung aller
LUA-ObjectClasses - wie man dort sieht ist vieles nicht so ganz klar...

Weiterhin geht leider nicht alles in jedem Player - gemäß obiger Doku müsste aber IsPointInZone funktionieren
- aufgerufen mit Player.ObjectLocation und einer Zone.

Leider funktioniert das Durch-Iterieren aller Zonen auch nicht auf jedem Player (siehe Thread GetAllofType), so dass du letztendlich versuchen kannst, ob eine Testcartridge auf jedem relevanten Player geht - die Chancen für IsPointInZone stehen denke ich nicht so schlecht.

Weiterhin gemäß obiger Doku müsste noch gehen:

Player.InsideOfZones
A table containing a reference to each zone object which currently contains the player. The player can be in more than one zone at a time if the zones overlap.

Player.Inventory
A table containing a reference to each item object which is in the inventory of the player.

Damit sollte man dann Zonen per Schleife durchiterieren können oder auch ebenfalls Items, die der Player hat.
Zusammen mit Contains müsste sich da über LUA schon was machen lassen...
 
Oben