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

NUR 1! Gegenstand mitnehmen!

meja13

Geocacher
Hallo, folgendes prob. Spieler steht in einer Zone, hat drei oder mehrere Gegenstände zur Auswahl! Er darf aber nur eins immer aufnehmen, um dann später wiederzukommen! Wie kann man das Lösen? Ich bastle mit Urwigo.

Grüße
 

Charlenni

Geomaster
Du musst beim Aufnehmen überprüfen, ob sich schon einer der anderen Gegenstände im Inventar befindet. Wenn ja, dann Nachricht ausgeben. Wenn nicht, dann den Gegenstand ins Inventar packen.
 

Charlenni

Geomaster
Genau. Im Bereich des Kommandos "Nehmen" des ersten Gegenstandes kommt als erstes einen Wenn-Sonst Abfrage, ob Spieler.Inventar den Gegenstand 2 oder 3 enthält. Wenn ja, dann Meldung. Wenn nein, dann Gegenstand ins Inventar des Spielers verschieben.
 
OP
M

meja13

Geocacher
Na ja, der Spieler bekommt ja nicht vorgeschrieben, welches erzuerst nehmen muss. Er darf selber entscheiden welchen er aufnimmt. Ob richtig oder falsch entscheidet sich später
 

Charlenni

Geomaster
Klar. Deshalb musst du die Wenn-Sonst Entscheidung beim "Nehmen" des ersten Gegenstandes, beim "Nehmen" des zweiten Gegenstandes und beim "Nehmen" des dritten Gegenstandes einfügen.
 
OP
M

meja13

Geocacher
Ich krieg es nicht hin. Ich steh voll aufn Schlauch! Vlt besteht die Möglichkeit einer Beispieldatei?
 

hinzundkunz

Geocacher
Ich würde eine boolean-Variable festlegen: "Gegenstand aufgenommen":
Wenn ein Gegenstand aufgenommen wird, diese auf "wahr" setzen.
Sobald die Aktion mit dem Gegenstand beendet ist, diesen wieder auf "falsch" setzen.

Beim Nehmen befehlen dann folgenden "Wenn-Dann"-Zweig einfügen:

Wenn "Gegenstand aufgenommen" = true
Meldung "Du hast bereits einen Gegenstand in deiner Hand" (Bei Klick: Hauptbildschirm)

Sonst:
Setze "Gegenstand aufgenommen" = true
Verschiebe Gegenstand bis Spieler
Meldung "Du hast den Gegenstand genommen".
Bei Klick: Hauptbildschirm

Der Vorteil: Diese Routine kannst du in jede "Nehme"-Routine reinkopieren und musst nicht abfragen, um welchen Gegenstand es sich handelt.

Bei den Gegenständen selber musst du nur noch reinschreiben "Gegenstand aufnehmen = false"

z Bsp."Leiter" mit dem Befehl "Aufstellen"

Bewege Leiter bis Zone
Setze "Gegenstand aufgenommen" = false
Meldung "Du stellst die Leiter an die große Eiche"
Bei Klick; Hauptbildschirm

Ich hoffe, das hilft dir weiter ....
 
OP
M

meja13

Geocacher
Könnte funktionieren, wenn da diese nervige Fehlermeldung nicht wäre! Wie bekomme ich die Weg?
Hab schon alles mögliche probiert!fehlermeldung.PNG
 

hinzundkunz

Geocacher
Im Wenn - Bereich nicht "Festlegen" sondern "Vergleichen" reinschieben.

Aufgrund deines Anmeldedatums und deinen Fragen gehe ich davon aus, dass du noch blutjunger Anfänger bist.
Das ist nicht weiter schlimm. Wir haben alle klein angefangen - und Übung macht bekanntlich den Meister.

Es gibt allerdings sehr viele gute Seiten, die die Programmierung von Wigos erklären.
Ich habe damals angefangen, hier im Forum zu stöbern. Da bin ich dann auf gute Seiten gestoßen.

Z.Bsp. hat Krolock eine tolle Seite für Einsteiger, Fortgeschrittene etc. Ich habe dort einfach selber seine "Jagd nach dem Drachengold" nachgebastelt. Daducrh kann man schon viele Grundprinzipien kennen lernen.
Stöber mal ein bisschen durch das Internet. Viel Spaß ....
 
OP
M

meja13

Geocacher
Natürlich habe ich Krolock seine Seite studiert. Es aber nicht ganz so einfach, einen WIG zu programmieren. (Für Anfänger)
 

Charlenni

Geomaster
Du musst natürlich einen Vergleich machen, sonst gibt es ja keine Unterscheidung, welcher Zweig abgearbeitet werden soll. In dem Fall ein Vergleich is die Variable "Gegenstand aufgenommen" ungleich "wahr" ist.
 

Vruno84

Geonewbie
Das Thema ist warscheinlich gegessen , aber am einfachsten wird wohl sein wenn du eine wenn/sonst abfrage machst und dann den Vergleich mit inventory count machst. Dann hast du nur zwei Zweige und brauchst auch keine extra Variablen definieren.
Wenn: Vergleich Inventory.count <2
Sonst:
 
Oben