Untitled
unknown
python
a year ago
3.0 kB
5
Indexable
Never
# aktualne miejsce odrodzenia gracza, zmienne w zależności od checkpointu, który zaliczymy aktualnaPozycjaOdrodzenia = player.position() # zmienna pomocnicza dzięki niej dany etap będzie tworzony raz w ramach jednej rozgrywki czyEtap1 = False czyEtap2 = False # budujemy schody oraz pierwszą platformę ładującą etap 1 def nowyParkour(): # teleportujemy konstruktor w okolice gracza builder.teleport_to(pos(5, 0, 0)) # obracamy na wschód builder.face(EAST) # buduje 70 stopniowe schodki w petli for for i in range(70): # konstruktor umieszcza blok schodów builder.place(PURPUR_STAIRS) # konstruktor przemieszcza się w przód, górę builder.shift(1, 1, 0) # oznaczamy bieżącą pozycję konstruktora builder.mark() builder.shift(2, 0, -4) # konstruktor wypełnia przestrzeń blokami od znaku(mark) do obecnej pozycji builder.fill(DIAMOND_BLOCK) player.on_chat("start", nowyParkour) # zdarzenie że po śmierci gracza -> powinien odrodzić się na danej platformie. def smierc(): # krotka przerwa do poprawnego działania checkpointu loops.pause(500) # 0.5s pauzy # teleport gracza do poprzedniej zapisanej pozycji player.teleport(aktualnaPozycjaOdrodzenia) # przypisac funkcje do smierci gracza player.on_died(smierc) # petla sterujaca dzialaniem etapow i sytemu checkpointow while True: # petla zawsze if blocks.test_for_block(DIAMOND_BLOCK, pos(0, -1, 0)) and not czyEtap1: # aktualizuje checkpoint aktualnaPozycjaOdrodzenia = player.position() # wylaczam budowanie etapu czyEtap1 = True # buduje etap 1 etap1i2(RIGHT_TURN, SLIME_BLOCK, GOLD_BLOCK) elif blocks.test_for_block(GOLD_BLOCK, pos(0, -1, 0)) and not czyEtap2: # aktualizuje checkpoint aktualnaPozycjaOdrodzenia = player.position() # wylaczam budowanie etapu czyEtap2 = True # buduje etap 1 etap1i2(LEFT_TURN, MAGENTA_STAINED_GLASS_PANE, BEDROCK) # funkcje budujaca etap1 i etap2 def etap1i2(obrot, blokToru, blokCheckpoint): # teleport konstruktora pod platformę i przesunięcie builder.teleport_to(pos(1, -4, 0)) builder.mark() # ustawienie kierunku builder.face(EAST) # budowa odcinkow parkour 2x5 for kierunek in range(2): for odcinek in range(5): # przesuwamy konstruktor o losowa wartosc randint(3,8) - buduje platforme builder.move(FORWARD, randint(3,8)) # tworze linie z wybranego bloku toru builder.fill(blokToru) # przesuwam konstruktor o loswa wartosc przerwy randint(2,3) - buduje przerwe builder.move(FORWARD, randint(2,3)) builder.mark() # zaznaczam pozycje dla kolejnej platformy # obrot konstruktora, builder.turn(obrot) # budowa checkpointu builder.mark() builder.shift(2, 0, -4) builder.fill(blokCheckpoint)