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

Mehere Items kombinieren

izaseba

Geomaster
Hallo,
Nachdem ich den Urwigo entdeckt habe, habe ich mein Projekt wieder rausgekrammt und bin ein wenig am Programmieren.

Natürlich bin ich zuerst wieder auf die Nase gefallen.
Es ist schon mal sehr blöd, daß die Onclick Events vom Oregon nicht behandelt werden...
Das Problem konnte ich zuerst wunderbar lösen, und mein Cardrige sieht bis jetzt gut aus.
Allerdings wollte ich noch eine Spielerei einbauen.
Und zwar sollen zwei gefundene Items miteinander kombiniert werden, damit was neues entsteht...
Beispiel:
Ball ohne Luft + Luftpumpe -> aufgepumpter Ball

Hierfür habe ich beim Ball und bei der Pumpe je ein Command gemacht "Benutzen mit"
Nur wie mache ich das jetzt benutzerfreundlich?

Ball "Benutzen mit" klicken, daraufhin öffnet sich Itemscreen und hier wäre das gut, wenn ich bei der Pumpe ein Onclick Event behandeln könnte...
Geht bei Oregon nicht :(

Eine Lösung, die läuft ist folgene:
Ball "Benutze" klicken, darauf hin öffnet sich die Item Auswahl.
Dann auf Luftpumpe klicken und jedenfalls "Benutzen" klicken.

Das ist aber wenig Benutzerfreundlich und gefällt mir nicht.
Wie macht Ihr das?
Ich hoffe, ich habe das Problem klar genug beschrieben.
Das ist echt schade, daß einem so Steine in den Weg gelegt werden.

Gruß Sebastian
 

eifelente

Geocacher
Das kommt darauf an, wieviele Items du insgesamt verwendest.
Sollten es nicht soviele sein wäre es am einfachsten wenn du für jede mögliche Aktion bei jedem Item ein eigenes Command erstellt.
Bspw.
Benutze mit Ball
Benutze mit Taschenlampe
...
Die einzelnen Commands kann man dann zu Beginn alle auf nicht-enabled setzen damit sie nicht auftauchen, bevor der entsprechende Gegenstand gefunden wurde.
Sobald der entsprechende Gegenstand dann gefunden ist müssen dann die entsprechenden Commands mit einem Set aktiviert werden.

Bsp:
Ball wird gefunden
SET Luftpumpe.Command.Benutze_mit_Ball.Enabled=True ...

Das ganze ist natürlich nur realisierbar, wenn es nur wenige Items gibt. Ansonsten ist es durch die vielen verschiedenen Commands schon ein wenig aufwändig.
 
OP
izaseba

izaseba

Geomaster
Hallo eifelente,

So ist das natürlich gut gelöst, wobei je nach Anzahl Items wie Du schon sagst ziemlich aufwendig.
Ich wollte eigentlich mehrere Items benutzen, darunter auch Dummy Items, die nicht gebraucht werden, sogar nicht mitgenommen werden müssen.
Das macht die Programmierung noch aufwendiger, also
if player contains roteFarbe
set roteFarbe.Command.Benutze_mit_Ball.Enabled=True
usw. usw.

Gibt es da nicht die Möglichkeit die Commands im laufenden Programm zu generieren?
Also mit einer while Schleife die Items durchlaufen und für jeden Eintrag ein Command generieren?

Danke für die Antwort und Gruß

Sebastian
 

TeamBunteBlitze

Geocacher
Hallo Sebastian,

izaseba schrieb:
Gibt es da nicht die Möglichkeit die Commands im laufenden Programm zu generieren?
Also mit einer while Schleife die Items durchlaufen und für jeden Eintrag ein Command generieren?

meines Wissens geht das nicht.
 

TeamBunteBlitze

Geocacher
Hallo,

so, ich habe jetzt mehr Zeit. Also dein Problem ist einfach zu lösen, allerdings kann ich dir das nur anhand des originalen Builders beschreiben, das sollte bei dir aber so ähnlich funktionieren.

Öffne das Item Luftpumpe. Füge z.B. das Custom Command "Benutzen" hinzu und setze dabei die Option 'This item is intended to be used with an other item or character'. Zu deutsch: dieses Item ist dazu bestimmt, mit einem anderne Item oder Charakter verwendet zu werden.

Wenn du willst kannst du über die Option 'Works with a List of Objects' noch die Objekte beschränken die dem Spieler zur Auswahl angezeigt werden sollen aus denen er wählen kann auf was das Item angewendet wird.

In der Ereignisbehandlungsroutine benutzt du dann 'if the targetobject is item or character' um passend zu reagieren, z.B.

If target is ball then
(aufpumpen)
end
if target is Reifen
(aufpumpen)
end
if target is Taschenrechner
(Hinweis an Spieler: was soll das werden?)
end

Du kannst das ganze natürlich auch mit if..then..else lösen, dann brauchst du nur die behandeln wo etwas passiert und im else könntest du allgemein einen Hinweis geben das da nichts passiert.

hth.

Sven
 
OP
izaseba

izaseba

Geomaster
Hallo Sven,

Vielen Dank für Deine Hilfe :2thumbs:

Die Sache mit den Targets bei den Commands ist eine feine Sache, die ich direkt ausprobieren musste :D

Zuerst dachte ich, klasse, klappt perfekt, wenn ein Item als Target gekennzeichnet ist und nicht im Inventar ist, wird es nicht zu Auswahl angeboten, super.

Leider wird es aber angeboten, wenn es nicht im Inventar ist, aber in der Zone liegt, wo der Spieler sich gerade befindet :???:

Jetzt muß ich mir überlegen, ob ich damit leben kann, weil die Vorteile überwiegen da...
Oder aber ich verstecke den Command "aufpumpen" bei der Pumpe, bis der Ball gefunden und aufgesammelt wurde.

Auf jedem Fall bin ich jetzt ein gutes Stück weiter, danke nochmal.

Sebastian
 

TeamBunteBlitze

Geocacher
Hallo,

eigentlich logisch ;) Wenn der Ball „nur” vor mir liegt kann ich ihn doch auch aufpumpen. Spaß beiseite. Das soll so funktionieren. Stelle dir vor du möchtest mit einem „Schlüssel” ein „Burgtor” aufschließen lassen, soll es der Spieler dann erst aufheben müssen? Nicht wirklich, oder?

Prüfe in der Ereignisbehandlungsroutine, ob der Spieler den Ball besitzt, wenn nicht teile ihm mit „Du mußt den Ball erst aufheben.”
 
OP
izaseba

izaseba

Geomaster
Hallo Sven,
natürlich hast Du recht, manchmal sieht man die Lösung, die auf der Hand liegt nicht ;)

Ich habe es soweit umgesetzt, klappt wunderbar und gefällt mir sehr gut :^^:

Vielen Dank nochmal für Deine Hilfe
 
Oben