gf2:projekte:minecraft:interaktionen

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
gf2:projekte:minecraft:interaktionen [2022/11/18 12:17] lehmannrgf2:projekte:minecraft:interaktionen [2024/12/09 14:07] (aktuell) marroc
Zeile 80: Zeile 80:
  
 </sxh> </sxh>
 +
 +Falls ein Spieler nicht durch das Programm durch ''player.execute("kill @s")'' stirbt, sondern z.B. im Kampf mit Monstern, funktioniert der Trick von oben natürlich nicht so. Dann muss man den neuen Spawnpoint des Spielers einfach setzen, wenn er eine bestimmte Leistung erreicht hat (genügend Punkte erzielt, bis zu einem bestimmten Block gekommen etc.).
  
 Dafür kann man auch Command-Blocks verwenden (siehe Punkt 4 unten), doch es ist meist viel einfacher, dies direkt im Python-Code zu tun. Dafür kann man auch Command-Blocks verwenden (siehe Punkt 4 unten), doch es ist meist viel einfacher, dies direkt im Python-Code zu tun.
Zeile 117: Zeile 119:
 </sxh> </sxh>
  
 +===== 5. Testen, welche Items sich in einer Kiste befinden =====
 +Hierzu kann man einen Trick verwenden:
 +  - Die Kiste an einen fernen Ort kopieren
 +  - Den Agenten auch dorthin teleportieren
 +  - Die Kiste zerstören
 +  - Agent sammelt die Items ein
 +  - Testen, welche Items der Agent im Inventar hat
 +  - Diesen Vorgang könnte man in eine ''loops.forever''-Schleife packen (siehe Beispiel unten)
 + 
 +Beispielcode
 +<sxh python>
 +# Die folgende Funktion testet, ob ein Diamant in der Truhe ist.
 +# Sie gibt true oder false als Rückgabewert, sodass man sie weiterverwenden kann.
 +
 +def isDiamondInChest():
 +    diamondFound = False
 +    # Agent weit weg teleportieren und alles wegschmeissen
 +    agent.teleport(world(20,-60,12),NORTH)
 +    agent.drop_all(FORWARD)
 +    
 +     # Kiste kopieren (sie steht bei (-7,-60,3))
 +    blocks.clone(world(2, -60, 12), world(2,-60,12), world(10,-60,12), CloneMask.REPLACE, CloneMode.NORMAL)
 +    
 +    # Agenten zur Kiste teleportieren
 +    agent.teleport(world(10, -60, 13), NORTH)
 +    
 +    # Kiste zerstören und Objekte aufsammeln
 +    agent.destroy(FORWARD)
 +    agent.collect_all()
 +    for slotNumber in range(1,10):
 +        itemID = agent.get_item_detail(slotNumber)
 +        if (itemID == 264):
 +            diamondFound = True
 +    return diamondFound    
 +
 +# Nun können wir z.B. ein Mal pro Sekunde testen, ob ein Diamand in der Truhe ist   
 +def on_forever():
 +    if (isDiamondInChest()==True):  
 +        player.say("Ein Diamant in der Truhe")
 +    else:
 +        player.say("Nope, kein Diamand in der Truhe")
 +    loops.pause(1000)
 +
 +loops.forever(on_forever)
 +</sxh>
  
  
-[[gf2:projekte:minecraft:start|Zurück zur Übersicht des Projektes]] 
  
  • gf2/projekte/minecraft/interaktionen.1668770245.txt.gz
  • Zuletzt geändert: 2022/11/18 12:17
  • von lehmannr