Repciu

parkour

Mar 14th, 2024 (edited)
832
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.75 KB | None | 0 0
  1.  
  2. #aktualne miejsce odrodzenia gracza, zmienne w zależnośći od checkpointu, ktróy zaliczymy
  3. aktualnaPozycjaOdrodzenia=player.position()
  4. #zmienna pomocnicza dzięki niej dany etap będzie tworzony raz w ramach jednej rozgrywki
  5. czyEtap1=False
  6. czyEtap2=False
  7. czyEtap3=False
  8. czyEtap4=False
  9.  
  10.  
  11.  
  12. #budujemy schody oraz pierwszą platformę ładującą etap 1
  13. def nowyParkour():
  14.     #teleportujemy konstrukotr w okolice gracza
  15.     builder.teleport_to(pos(5, 0, 0))
  16.     #obracamy
  17.     builder.face(EAST)
  18.     for i in range(70):
  19.         #konstruktor umieszcza blok schodów
  20.         builder.place(PURPUR_STAIRS)
  21.         #konstruktor przemieszcza się odpowiednio w przód,górę i lewo o podaną liczbę bloków
  22.         builder.shift(1, 1, 0)
  23.     #oznaczamy bieżącą pozycję konstruktora
  24.     builder.mark()
  25.     builder.shift(2, 0, -4)
  26.     #konstruktor wypełnia przestrzeń blokami od znaku(mark) do obecnej pozycji
  27.     builder.fill(DIAMOND_BLOCK)
  28. player.on_chat("start", nowyParkour)
  29.  
  30.  
  31. def smierc():
  32.     #dodajemy przerwę żeby poprawnie działało odradzanie gracza na platformie checkpoint
  33.     loops.pause(500)
  34.     player.teleport(aktualnaPozycjaOdrodzenia)
  35. player.on_died(smierc)
  36.  
  37.  
  38. def etap1i2(obrotKonstruktora,rodzajToru,rodzajCheckpoint):
  39.     #teleport konstruktora pod platformę i przesunięcie
  40.     builder.teleport_to(pos(1, -4, 0))
  41.     builder.mark()
  42.     builder.face(EAST)
  43.     for i in range(2):
  44.         for j in range(5):
  45.             #przesuwamy konstruktor
  46.             builder.move(FORWARD, randint(3, 8))
  47.             #tworzymy linie z danego bloku
  48.             builder.line(rodzajToru)
  49.             #przesuwamy konstruktor w celu zrobienia przerwy pomiędzy blokami
  50.             builder.move(FORWARD, randint(2, 3))
  51.             #oznaczamy aktulaną pozycję żeby to od niej budowała się kolejna linia
  52.             builder.mark()
  53.             #obrót konstruktora
  54.         builder.turn(obrotKonstruktora)
  55.     builder.mark()
  56.     builder.shift(2, 0, -4)
  57.     builder.fill(rodzajCheckpoint)
  58. def etap3():
  59.     shapes.sphere(SLIME_BLOCK, pos(4, -30, 0), 1, ShapeOperation.REPLACE)
  60.  
  61.     builder.teleport_to(pos(6, -32, 0))
  62.     builder.mark()
  63.     builder.face(EAST)
  64.     builder.set_origin()
  65.     builder.move(FORWARD, 65)
  66.     builder.line(NETHERRACK)
  67.  
  68.     builder.move(FORWARD, 4)
  69.     builder.mark()
  70.     builder.shift(2,0,-4)
  71.     builder.fill(MOSS_STONE)
  72.  
  73.     builder.teleport_to_origin()
  74.     builder.move(UP, 1)
  75.     for i in range(11):
  76.         builder.move(FORWARD, randint(3,8))
  77.         builder.place(FIRE)
  78.  
  79. def etap4():
  80.     builder.move(DOWN, 30)
  81.     builder.face(SOUTH)
  82.     builder.move(FORWARD, 6)
  83.  
  84.     builder.mark()
  85.     builder.shift(2,2,2)
  86.     builder.fill(BRICKS)
  87.     builder.shift(-1,0,-1)
  88.     builder.place(WATER)
  89.     builder.move(FORWARD, 4)
  90.     builder.set_origin()
  91.  
  92.     while not (blocks.test_for_block(SEA_LANTERN, pos(0, -1, 0))):
  93.         builder.teleport_to_origin()
  94.         builder.face(SOUTH)
  95.  
  96.         for i in range(30):
  97.             if not blocks.test_for_block(SEA_LANTERN, pos(0, -1, 0)):
  98.                 builder.place(POLISHED_GRANITE)
  99.                 builder.move(FORWARD, 1)
  100.                 builder.move(UP, 1)
  101.                 builder.turn(RIGHT_TURN)
  102.             else:
  103.                 break
  104.         builder.mark()
  105.         builder.shift(-2,0,2)
  106.         builder.fill(SEA_LANTERN)
  107.         builder.teleport_to_origin()
  108.         builder.face(SOUTH)
  109.         loops.pause(8000)
  110.         for i in range(30):
  111.             if not blocks.test_for_block(SEA_LANTERN, pos(0, -1, 0)):
  112.                 builder.place(MAGMA_BLOCK)
  113.                 builder.move(FORWARD, 1)
  114.                 builder.move(UP, 1)
  115.                 builder.turn(RIGHT_TURN)
  116.                 loops.pause(1000)
  117.             else:
  118.                 break
  119.  
  120.     player.execute('/clear')  
  121.     mobs.give(mobs.target(NEAREST_PLAYER), WATER_BUCKET, 5)
  122.  
  123. #pętla sterująca ładowaniem etapów oraz system checkpoint
  124. while True:
  125.     if blocks.test_for_block(DIAMOND_BLOCK, pos(0, -1, 0)) and not czyEtap1:
  126.         #aktualizujemy pozycje gracza
  127.         aktualnaPozycjaOdrodzenia = player.position()
  128.         czyEtap1 = True
  129.         etap1i2(RIGHT_TURN,SLIME_BLOCK,GOLD_BLOCK)
  130.        
  131.  
  132.     elif blocks.test_for_block(GOLD_BLOCK, pos(0, -1, 0)) and not czyEtap2:
  133.         aktualnaPozycjaOdrodzenia = player.position()
  134.         czyEtap2 = True
  135.         etap1i2(LEFT_TURN,MAGENTA_STAINED_GLASS_PANE,BEDROCK)
  136.        
  137.     elif blocks.test_for_block(BEDROCK, pos(0, -1, 0)) and not czyEtap3:
  138.         aktualnaPozycjaOdrodzenia = player.position()
  139.         czyEtap3 = True
  140.         etap3()
  141.  
  142.     elif blocks.test_for_block(MOSS_STONE, pos(0, -1, 0)) and not czyEtap4:
  143.         aktualnaPozycjaOdrodzenia = player.position()    
  144.         czyEtap4 = True
  145.         etap4()  
  146.        
Advertisement
Add Comment
Please, Sign In to add comment