Skocz do zawartości
  • 0

Frozen player


gnomq

Pytanie

15 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0

Nie testowane, pisane z telefonu

On damage:
    If attacker's tool is bow named "&atest":
       If damage was caused by projectile:		
           If projectile is a arrow:
               If shooter is a attacker:
                  Set walk speed of victim to 0
                  Wait 2 second
                  Set walk speed of victim to 1

Wytabuj to sobie

Edytowane przez xXx_Skrypter_xXx
Odnośnik do komentarza
https://skript.pl/temat/41587-frozen-player/#findComment-260436
Udostępnij na innych stronach

  • 0
1 minutę temu, xXx_Skrypter_xXx napisał:

Nie testowane, pisane z telefonu


On damage:
    If attacker's tool is bow named "&atest":
       If damage was caused by projectile:		
           If projectile is a arrow:
               If shooter is a attacker:
                  Set walk speed of victim to 0
                  Wait 2 second
                  Set walk speed of victim to 1

Wytabuj to sobie

To nie zadziała, gdyż zanim strzała trafi kogoś, to osoba, która strzeliła może już w tym czasie zmienić narzędzie na coś innego.

Odnośnik do komentarza
https://skript.pl/temat/41587-frozen-player/#findComment-260439
Udostępnij na innych stronach

  • 0
On shoot:
    If shooter's tool is bow named "&atest":
    Set {_zamrozenie} to 1
       If damage was caused by projectile:		
           If projectile is a arrow:
               If shooter is a attacker:
                  If {_zamrozenie} is 1:
                      Set {_zamrozenie} to 2
                      Set walk speed of victim to 0
                      Wait 2 second
                      Set walk speed of victim to 1
                      Delete {_zamrozenie}
                  
                  

Nie testowane

14 minut temu, Kormic napisał:

 

 

Odnośnik do komentarza
https://skript.pl/temat/41587-frozen-player/#findComment-260444
Udostępnij na innych stronach

  • 0
Teraz, xXx_Skrypter_xXx napisał:

On shoot:
    If shooter's tool is bow named "&atest":
    Set {_zamrozenie} to 1
       If damage was caused by projectile:		
           If projectile is a arrow:
               If shooter is a attacker:
                  If {_zamrozenie} is 1:
                      Set {_zamrozenie} to 2
                      Set walk speed of victim to 0
                      Wait 2 second
                      Set walk speed of victim to 1
                      Delete {_zamrozenie}
                  
                  

Nie testowane

 

To również nie zadziała, event 'on shoot' aktywuje się przy wystrzeleniu strzały, rzuceniu śnieżką itp. 

Odnośnik do komentarza
https://skript.pl/temat/41587-frozen-player/#findComment-260445
Udostępnij na innych stronach

  • 0
import:
    org.bukkit.event.entity.EntityShootBowEvent
    
on EntityShootBowEvent:
    set {_player} to event.getEntity()
    if {_player} is a player:
        if name of {_player}'s tool is "&aTest":
            set {bow.freeze::%{_player}%} to true
            
on damage:
    projectile exists
    projectile is arrow
    attacker != victim
    if {bow.freeze::%attacker%} is set:
        delete {bow.freeze::%attacker%}
        set {_speed} to victim's walk speed
        if victim's walk speed > 0:
            set victim's walk speed to 0
            wait 2 seconds
            set victim's walk speed to {_speed}
            
on any movement:
    set {_location::%player%} to player's location
    if player's walk speed <= 0.01:
        remove jump boost from player
        apply jump boost -10 to player for 0.01 second
        teleport player to {_location::%player%}

Wymagany skript-mirror

Edytowane przez ShadowEk
#attacker != victim
Odnośnik do komentarza
https://skript.pl/temat/41587-frozen-player/#findComment-260452
Udostępnij na innych stronach

  • 0
8 minut temu, ShadowEk napisał:

import:
    org.bukkit.event.entity.EntityShootBowEvent
    
on EntityShootBowEvent:
    set {_player} to event.getEntity()
    if {_player} is a player:
        if name of {_player}'s tool is "&aTest":
            set {bow.freeze::%{_player}%} to true
            
on damage:
    projectile exists
    projectile is arrow
    attacker != victim
    if {bow.freeze::%attacker%} is set:
        delete {bow.freeze::%attacker%}
        set {_speed} to victim's walk speed
        if victim's walk speed > 0:
            set victim's walk speed to 0
            wait 2 seconds
            set victim's walk speed to {_speed}
            
on any movement:
    set {_location::%player%} to player's location
    if player's walk speed <= 0.01:
        remove jump boost from player
        apply jump boost -10 to player for 0.01 second
        teleport player to {_location::%player%}

Wymagany skript-mirror

Twój skrypt jest dość dobry, lecz ma jedną wadę. Jeżeli gracz wystrzeli wiele zamrażających strzał w jednym momencie, to tylko ta pierwsza, która trafi, spowoduje zamrożenie, reszta będzie bez efektu, gdyż zmienna się wyczyści.

Próbowałem dodawać tag do NBT projectile'ów (to by było najlepsze), próbowałem również dodawać je do listy, niestety żadne z tych nie poskutkowało. Być może twój skrypt jest najlepszym wyjściem, nie wiadomo.

Edytowane przez Kormic
Odnośnik do komentarza
https://skript.pl/temat/41587-frozen-player/#findComment-260454
Udostępnij na innych stronach

  • 0
14 minut temu, Kormic napisał:

Twój skrypt jest dość dobry, lecz ma jedną wadę. Jeżeli gracz wystrzeli wiele zamrażających strzał w jednym momencie, to tylko ta pierwsza, która trafi, spowoduje zamrożenie, reszta będzie bez efektu, gdyż zmienna się wyczyści.

Próbowałem dodawać tag do NBT projectile'ów (to by było najlepsze), próbowałem również dodawać je do listy, niestety żadne z tych nie poskutkowało. Być może twój skrypt jest najlepszym wyjściem, nie wiadomo.

Wydaje mi się, że o to chodzi, żeby zamrożenie nie było możliwe do nabijania się jako efekt, byłoby to za silne (przynajmniej dla mnie).

A to przypadkiem nie jest tak, że po wystrzale zmienna ustawia się automatycznie? Przynajmniej tak u mnie działało, gdy testowałem. Można też wrzucić usuwanie zmiennej pod "wait 2 seconds", chociaż to i tak nie ma znaczenia.

Ja tam dałem jeszcze takie "ala zabezpieczenie", jeśli szybkość gracza jest większa niż 0, bo po co ustawiać szybkość gracza na 0, kiedy już jest ustawiona, może dlatego? :P

Nie wiem szczerze mówiąc, jak będzie okej to spoko, jak nie to niech autor napisze co poprawić i to się zrobi :D

// EDIT: Rozumiem, no tak, przecież. W jednym momencie to rzeczywiście będzie bez efektu, prawda. Wydaję mi się, że można dodawać 1 do zmiennej co każde wystrzelenie, a potem sprawdzać czy jest ona większa od zera, jeśli tak to wykonuje event, jeśli nie to przerywa i tyle :D Tylko by trzeba było sprawdzać, czy "entity" został trafiony, a to już jest bardziej ciekawe. Więcej bawienia się i straconego czasu :P

Edytowane przez ShadowEk
Odnośnik do komentarza
https://skript.pl/temat/41587-frozen-player/#findComment-260455
Udostępnij na innych stronach

  • 0
2 minuty temu, ShadowEk napisał:

Wydaje mi się, że o to chodzi, żeby zamrożenie nie było możliwe do nabijania się jako efekt, byłoby to za silne (przynajmniej dla mnie).

A to przypadkiem nie jest tak, że po wystrzale zmienna ustawia się automatycznie? Przynajmniej tak u mnie działało, gdy testowałem. Można też wrzucić usuwanie zmiennej pod "wait 2 seconds", chociaż to i tak nie ma znaczenia.

Ja tam dałem jeszcze takie "ala zabezpieczenie", jeśli szybkość gracza jest większa niż 0, bo po co ustawiać szybkość gracza na 0, kiedy już jest ustawiona, może dlatego? :P

Nie wiem szczerze mówiąc, jak będzie okej to spoko, jak nie to niech autor napisze co poprawić i to się zrobi :D

// EDIT: Rozumiem, no tak, przecież. W jednym momencie to rzeczywiście będzie bez efektu, prawda. Wydaję mi się, że można dodawać 1 do zmiennej co każde wystrzelenie, a potem sprawdzać czy jest ona większa od zera, jeśli tak to wykonuje event, jeśli nie to przerywa i tyle :D

Tak jak mówiłem, dobra robota z tym skryptem, szczerze ciężko o coś lepszego. Dodanie do listy albo do NBT pewnych informacji byłoby bezcenne, ale niestety działa to dość opornie.

Odnośnik do komentarza
https://skript.pl/temat/41587-frozen-player/#findComment-260457
Udostępnij na innych stronach

  • 0
3 minuty temu, Kormic napisał:

Tak jak mówiłem, dobra robota z tym skryptem, szczerze ciężko o coś lepszego. Dodanie do listy albo do NBT pewnych informacji byłoby bezcenne, ale niestety działa to dość opornie.

Z tym NBT nawet dobry pomysł, niech autor zdecyduje, czy ten skrypt mu wystarczy, czy o to mu chodziło :P

Odnośnik do komentarza
https://skript.pl/temat/41587-frozen-player/#findComment-260458
Udostępnij na innych stronach

  • 0
2 minuty temu, ShadowEk napisał:

Z tym NBT nawet dobry pomysł, niech autor zdecyduje, czy ten skrypt mu wystarczy, czy o to mu chodziło :P

Tylko jedno mnie zastanawia, dlaczego importowałeś przez skript-mirrora event 'on shoot'? On już jest w Skript'cie, nie ma potrzeby importowania go (no chyba, że o czymś nie wiem i przykładowo importowany event daje np. więcej wartości w event'cie, do których można się odnosić).

Poza tym w mojej ocenie lepszy jest skript-reflect niż skript-mirror. Ten drugi jest już opuszczony, a ten pierwszy oferuje wsparcie.

Edytowane przez Kormic
Odnośnik do komentarza
https://skript.pl/temat/41587-frozen-player/#findComment-260459
Udostępnij na innych stronach

  • 0
5 minut temu, Kormic napisał:

Tylko jedno mnie zastanawia, dlaczego importowałeś przez skript-mirrora event 'on shoot'? On już jest w Skript'cie, nie ma potrzeby importowania go (no chyba, że o czymś nie wiem i przykładowo importowany event daje np. więcej wartości w event'cie, do których można się odnosić).

Poza tym w mojej ocenie lepszy jest skript-reflect niż skript-mirror. Ten drugi jest już opuszczony, a ten pierwszy oferuje wsparcie.

O, to dzięki za informacje, miałem jedynie na serwerze skript-mirror, nie używałem nigdy skript-reflect'a. :P

Ale jeśli oferuje wsparcie, to być może się przeniosę.

Dopiero po przeczytaniu drugiej raz twojej wypowiedzi, która znajduje się na górze, zrozumiałem dokładniej, bo początkowo myślałem, że event "on shoot" zadziała dopiero jak strzała uderzy wroga, mój błąd. Skrypty to ja piszę raz na rok, dlatego importowałem event. :D

Edytowane przez ShadowEk
Odnośnik do komentarza
https://skript.pl/temat/41587-frozen-player/#findComment-260460
Udostępnij na innych stronach

  • 0
9 godzin temu, ShadowEk napisał:

import:
    org.bukkit.event.entity.EntityShootBowEvent
    
on EntityShootBowEvent:
    set {_player} to event.getEntity()
    if {_player} is a player:
        if name of {_player}'s tool is "&aTest":
            set {bow.freeze::%{_player}%} to true
            
on damage:
    projectile exists
    projectile is arrow
    attacker != victim
    if {bow.freeze::%attacker%} is set:
        delete {bow.freeze::%attacker%}
        set {_speed} to victim's walk speed
        if victim's walk speed > 0:
            set victim's walk speed to 0
            wait 2 seconds
            set victim's walk speed to {_speed}
            
on any movement:
    set {_location::%player%} to player's location
    if player's walk speed <= 0.01:
        remove jump boost from player
        apply jump boost -10 to player for 0.01 second
        teleport player to {_location::%player%}

Wymagany skript-mirror

gracza nie zamraża, a błędów brak

Odnośnik do komentarza
https://skript.pl/temat/41587-frozen-player/#findComment-260466
Udostępnij na innych stronach

  • 0
9 godzin temu, gnomq2000 napisał:

gracza nie zamraża, a błędów brak

Dziwne, ja u siebie testowałem to normalnie zamrażało. Jakieś błędy są, czy coś?

Ty masz wersję 1.16.1, jeżeli się nie mylę. Ja to testowałem na 1.8.8.

Edytowane przez ShadowEk
Odnośnik do komentarza
https://skript.pl/temat/41587-frozen-player/#findComment-260586
Udostępnij na innych stronach

  • 0
8 minut temu, ShadowEk napisał:

Dziwne, ja u siebie testowałem to normalnie zamrażało. Jakieś błędy są, czy coś?

Ty masz wersję 1.16.1, jeżeli się nie mylę. Ja to testowałem na 1.8.8.

nie ma żadnych błędów hm..

Odnośnik do komentarza
https://skript.pl/temat/41587-frozen-player/#findComment-260587
Udostępnij na innych stronach

  • 0
5 godzin temu, gnomq2000 napisał:

nie ma żadnych błędów hm..

W konsoli też nic? Dodaj jakąś losową wiadomość po każdym warunku i napisz mi do którego warunku działa skrypt.

Edytowane przez ShadowEk
przed każdym warunkiem -> po każdym warunku
Odnośnik do komentarza
https://skript.pl/temat/41587-frozen-player/#findComment-260599
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ę...