Skocz do zawartości
  • 0

kowadla spadajace


Mrddkdkkd

Pytanie

command /kowadla:
    trigger:
        if player has permission "kowadla.activate":
            set {_region} to "KOWADLA" # Nazwa regionu WorldGuard
            set {_world} to world of player
            set {_minX} to minimum x-coordinate of region {_region} in {_world}
            set {_maxX} to maximum x-coordinate of region {_region} in {_world}
            set {_minZ} to minimum z-coordinate of region {_region} in {_world}
            set {_maxZ} to maximum z-coordinate of region {_region} in {_world}
            set {_area} to (({_maxX} - {_minX}) + 1) * (({_maxZ} - {_minZ}) + 1)
            set {_count} to round({_area} * 0.55)
            loop {_count} times:
                set {_randX} to random integer between {_minX} and {_maxX}
                set {_randZ} to random integer between {_minZ} and {_maxZ}
                set {_randY} to 256 # Maksymalna wysokość, skąd spadnie kowadło
                if block at {_randX}, 0, {_randZ} in {_world} is not air: # Upewniamy się, że punkt jest na ziemi
                    create a falling block of anvil at {_randX}, {_randY}, {_randZ} in {_world}
            broadcast "Spadają kowadła na regionie %{_region}%!"
        else:
            send "Nie masz uprawnień do używania tej komendy." to player

  • krypt rozpoczyna się od definicji komendy /kowadla, która może być aktywowana tylko przez graczy z odpowiednim pozwoleniem.
  • Następnie skrypt oblicza obszar regionu "KOWADLA" i na podstawie jego wielkości wylicza, ile kowadeł ma zostać wygenerowanych, aby pokryć około 55% jego powierzchni.
  • Dla każdego kowadła, skrypt losowo wybiera punkt na powierzchni regionu, zaczynając generowanie kowadeł z maksymalnej wysokości, aby zapewnić, że spadną one na ziemię.
  • W skrypcie zakładamy, że chcemy, aby kowadła spadały tylko na solidną powierzchnię, stąd sprawdzamy, czy blok na wybranych koordynatach X i Z jest inny niż powietrze na wysokości Y=0, co jest prostym sposobem na upewnienie się, że nie generujemy kowadeł nad pustką.

 

[22:00:00 INFO]: [Skript] Reloading kowadlo.sk...
[22:00:00 INFO]: Line 6: (kowadlo.sk)
[22:00:00 INFO]:     Can't understand this expression: 'minimum x-coordinate of region {_region} in {_world}'
[22:00:00 INFO]:     Line: set {_minX} to minimum x-coordinate of region {_region} in {_world}
[22:00:00 INFO]:  
[22:00:00 INFO]: Line 7: (kowadlo.sk)
[22:00:00 INFO]:     Can't understand this expression: 'maximum x-coordinate of region {_region} in {_world}'
[22:00:00 INFO]:     Line: set {_maxX} to maximum x-coordinate of region {_region} in {_world}
[22:00:00 INFO]:  
[22:00:00 INFO]: Line 8: (kowadlo.sk)
[22:00:00 INFO]:     Can't understand this expression: 'minimum z-coordinate of region {_region} in {_world}'
[22:00:00 INFO]:     Line: set {_minZ} to minimum z-coordinate of region {_region} in {_world}
[22:00:00 INFO]:  
[22:00:00 INFO]: Line 9: (kowadlo.sk)
[22:00:00 INFO]:     Can't understand this expression: 'maximum z-coordinate of region {_region} in {_world}'
[22:00:00 INFO]:     Line: set {_maxZ} to maximum z-coordinate of region {_region} in {_world}
[22:00:00 INFO]:  
[22:00:00 INFO]: Line 16: (kowadlo.sk)
[22:00:00 INFO]:     Variables cannot be used here.
[22:00:00 INFO]:     Line: if block at {_randX}, 0, {_randZ} in {_world} is not air:# Upewniamy się, że punkt jest na ziemi
[22:00:00 INFO]:  
[22:00:00 INFO]: [Skript] Encountered 5 errors while reloading kowadlo.sk! (72ms)

Odnośnik do komentarza
https://skript.pl/temat/57190-kowadla-spadajace/
Udostępnij na innych stronach

9 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
4 godziny temu, Fendi napisał:

wydaje mi sie ze chce znaleźć ostatnią kratkę ktora nalezy do regionu

ciężko znaleźć ostatnią kratkę w osi X i Z, bo takie są 4. W osi Y jest jedna 

Odnośnik do komentarza
https://skript.pl/temat/57190-kowadla-spadajace/#findComment-341094
Udostępnij na innych stronach

  • 0
28 minut temu, CoFFeIN04 napisał:

ciężko znaleźć ostatnią kratkę w osi X i Z, bo takie są 4. W osi Y jest jedna 

        set {_} to y-loc of location of player
        set {_x} to x-loc of location of player
        set {_z} to z-loc of location of player
        while location({_x}, {_}, {_z}) is in region "jakisregion":
            add 1 to {_}
        send {_}

A to w zasadzie by dzialalo?

Odnośnik do komentarza
https://skript.pl/temat/57190-kowadla-spadajace/#findComment-341096
Udostępnij na innych stronach

  • 0

O Y bym się nie bał, bo można przyjąć bezpieczną wartość 255. 

Gorzej z X i Z. 

Natomiast można uzyskać dwa punkty dzięki SharpSK, o ile dobrze rozumiem to są te punkty, które gracz zaznaczał podczas tworzenia regionu, ale może to zła interpretacja.

https://docs.skunity.com/syntax/search/id:1941 (get point 1 i get point 2)

Wtedy wystarczy między tymi punktami o Y 255 spawnować kowadła.

 

edit: point 2 prawdopodobnie sam w sobie posiada ustawiony maksymalny Y regionu, dlatego nie trzeba przyjmować 255.

Edytowane przez CoFFeIN04
Odnośnik do komentarza
https://skript.pl/temat/57190-kowadla-spadajace/#findComment-341097
Udostępnij na innych stronach

  • 0
3 godziny temu, CoFFeIN04 napisał:

O Y bym się nie bał, bo można przyjąć bezpieczną wartość 255. 

Gorzej z X i Z. 

Natomiast można uzyskać dwa punkty dzięki SharpSK, o ile dobrze rozumiem to są te punkty, które gracz zaznaczał podczas tworzenia regionu, ale może to zła interpretacja.

https://docs.skunity.com/syntax/search/id:1941 (get point 1 i get point 2)

Wtedy wystarczy między tymi punktami o Y 255 spawnować kowadła.

 

edit: point 2 prawdopodobnie sam w sobie posiada ustawiony maksymalny Y regionu, dlatego nie trzeba przyjmować 255.

Chodzi po prostu że na regionie na danej wysokosci maja tworzyc sie te kowadla (prawd 55%) (zeby nie bylo ze na calej mapie  beda spadac) xD

 

mysle ze mozna jakos to ominac np, ze na kordach 10,100,10 w promieniu 20 kratek bedzie sie tak robic. byle by dzialalo 

Odnośnik do komentarza
https://skript.pl/temat/57190-kowadla-spadajace/#findComment-341103
Udostępnij na innych stronach

  • 0
options:
    region: kowadla
    
command /kowadla:
    permission: kowadla.activate
    trigger:
        if region at player is "kowadla":
            loop all blocks in region "{@region}": 
                if loop-block is not air: 
                    if y-coordinate of loop-block < 1:
                        if y-coordinate of loop-block >= 0:
                            add block to {_blocks::*} 
                            set {_pos1} to location of loop-block 
                            set {_pos1}'s y-pos to 256
                            set {_pos1}'s x-pos to floor({_pos1}'s x-pos)
                            set {_pos1}'s z-pos to floor({_pos1}'s z-pos)
                            add {_pos1}  to {_kowadla::*}
            set {_blocks::blocksCount} to size of {_kowadla::*}
            set {_var} to floor(0.55 * {_blocks::blocksCount})
            send "%{_var}%" to player
            loop {_var} times:
                set {_block} to random element of {_kowadla::*}
                set block at {_block} to anvil
                remove {_block} from {_kowadla::*}

ja coś to nie wiem czy u wszystkich ale u mnie WordGuard dziwnie zapisuje bloki w regionie ( ich kordy to np X 1.5 Y 10.5 Z 34.5) więc dodałem zabezpiecznie żeby prawidłowo przepisywało kordy i wykrywało jedynie bloki na Y0 nawet jeżeli WG widzi ich lokalizacje na 0.5

 

Odnośnik do komentarza
https://skript.pl/temat/57190-kowadla-spadajace/#findComment-341109
Udostępnij na innych stronach

  • 0

Może zamiast się głowić, ustaw do zmiennej po prostu dwa punkty odpowiadające dwóm przeciwległym rogom regionu (na odpowiednim Y), wtedy będzie o wiele prościej

Odnośnik do komentarza
https://skript.pl/temat/57190-kowadla-spadajace/#findComment-341110
Udostępnij na innych stronach

  • 0
W dniu 6.03.2024 o 23:06, Saanjuk napisał:
options:
    region: kowadla
    
command /kowadla:
    permission: kowadla.activate
    trigger:
        if region at player is "kowadla":
            loop all blocks in region "{@region}": 
                if loop-block is not air: 
                    if y-coordinate of loop-block < 1:
                        if y-coordinate of loop-block >= 0:
                            add block to {_blocks::*} 
                            set {_pos1} to location of loop-block 
                            set {_pos1}'s y-pos to 256
                            set {_pos1}'s x-pos to floor({_pos1}'s x-pos)
                            set {_pos1}'s z-pos to floor({_pos1}'s z-pos)
                            add {_pos1}  to {_kowadla::*}
            set {_blocks::blocksCount} to size of {_kowadla::*}
            set {_var} to floor(0.55 * {_blocks::blocksCount})
            send "%{_var}%" to player
            loop {_var} times:
                set {_block} to random element of {_kowadla::*}
                set block at {_block} to anvil
                remove {_block} from {_kowadla::*}

ja coś to nie wiem czy u wszystkich ale u mnie WordGuard dziwnie zapisuje bloki w regionie ( ich kordy to np X 1.5 Y 10.5 Z 34.5) więc dodałem zabezpiecznie żeby prawidłowo przepisywało kordy i wykrywało jedynie bloki na Y0 nawet jeżeli WG widzi ich lokalizacje na 0.5

 

ciagle pisze 0

Odnośnik do komentarza
https://skript.pl/temat/57190-kowadla-spadajace/#findComment-341145
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Nieaktywny
Odpowiedz na pytanie...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...