Untitled
unknown
python
a year ago
5.8 kB
6
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 czyEtap3 = False czyEtap4 = 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 etapu2 czyEtap2 = True # buduje etap 2 etap1i2(LEFT_TURN, MAGENTA_STAINED_GLASS_PANE, BEDROCK) elif blocks.test_for_block(BEDROCK, pos(0, -1, 0)) and not czyEtap3: # aktualizuje checkpoint aktualnaPozycjaOdrodzenia = player.position() # wylaczam budowanie etapu3 czyEtap3 = True # buduje etap 3 etap3() elif blocks.test_for_block(MOSS_STONE, pos(0, -1, 0)) and not czyEtap4: # aktualizuje checkpoint aktualnaPozycjaOdrodzenia = player.position() # wylaczam budowanie etapu3 czyEtap4 = True # buduje etap 3 etap4() # 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) # funkcja ładująca etap 3 def etap3(): # tworze kule szlamu ktora dziala jak trampolina shapes.sphere(SLIME_BLOCK, pos(4, -30, 0), 1, ShapeOperation.REPLACE) # ustawiam konstruktor builder.teleport_to(pos(6, -32, 0)) builder.mark() builder.face(EAST) # ustawic pozycje dla konstruktora bo wrocimy w to samo miejsce zeby ustawic ogien builder.set_origin() builder.move(FORWARD, 65) builder.fill(NETHERRACK) # teleportuje sie z powrotem i ustawiam ogien builder.teleport_to_origin() builder.move(UP, 1) for i in range(11): builder.move(FORWARD, randint(3, 8)) builder.place(FIRE) # buduje checkpoint builder.mark() builder.shift(2, 0, -4) builder.fill(MOSS_STONE) # Funkcja budujaca etap4 -> skok wiary, zejscie schodkami, jump bucket challenge def etap4(): # skok wiary builder.move(DOWN, 30) builder.face(SOUTH) builder.move(FORWARD, 6) # studnia z woda builder.mark() builder.shift(2, 2, 2) builder.fill(BRICKS) # woda na srodku studni builder.shift(-1, 0, -1) builder.place(WATER) builder.move(FORWARD, 4) builder.set_origin() # spiralne schody while not (blocks.test_for_block(SEA_LANTERN, pos(0, -1, 0))): builder.teleport_to_origin() builder.face(SOUTH) for i in range(30): if blocks.test_for_block(SEA_LANTERN, pos(0, -1, 0)): builder.place(POLISHED_GRANITE) builder.move(FORWARD, 1) builder.move(UP, 1) builder.turn(TurnDirection.RIGHT) else: break builder.mark() builder.shift(2, 0, -4) builder.fill(SEA_LANTERN) builder.teleport_to_origin() builder.face(SOUTH) # zamieniam schody na bloki magmy for i in range(30): if blocks.test_for_block(SEA_LANTERN, pos(0, -1, 0)): builder.place(MAGMA_BLOCK) builder.move(FORWARD, 1) builder.move(UP, 1) builder.turn(TurnDirection.RIGHT) loops.pause(1000) else: break # bucket challenge player.execute("/clear") mobs.give(mobs.target(NEAREST_PLAYER), WATER_BUCKET, 5)