Skocz do zawartości
  • 0

AntiVOID


347Aza

Pytanie

Hej, chce zrobic skrypt do lobby
Jak ma działać?
Jeżeli gracz spadnie poniżej kratki 100, to slyszy dzwiek fireballa, pojawiaja sie wiadomosc i jest tepany na spawna

Problemem jest to, że nie wiem jak wykryć wysokość gracza, ewentualnie jak jest to problematyczne i duzo trzeba z tym kombinowac to czy jest cos typu on chat: co pozwoli mi sprawdzic czy gracz jest w voidzie.
Wiem, ze da sie sprawdzic typ dmg zadanego dla gracza, ale nie chce aby gracz nawet dmg to dostal. Nie moze to zżerać dużo zasobów bo lobby ma tylko 2 gb ramu.

Odnośnik do komentarza
https://skript.pl/temat/57997-antivoid/
Udostępnij na innych stronach

9 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
options:
    prefix: USUNALEM_ABY_NIE_REKLAMOWAC &8» 
on damage:
    victim is a player
    set {_} to y-pos of victim
    if {_} < -100:
        cancel event
        teleport victim to spawn
        send "{@prefix} &cNawet najdzielniejszym zdarza się upadek." to victim
        play sound "entity_ghast_shoot" with volume 10 and pitch 1 to victim

 

Sprawdz, powinno dzialac wtedy kiedy gracz dostanie dmg od voidu

 

Lub mozna to zrobic w javie

Odnośnik do komentarza
https://skript.pl/temat/57997-antivoid/#findComment-344455
Udostępnij na innych stronach

  • 0
11 godzin temu, Fendi napisał:
options:
    prefix: USUNALEM_ABY_NIE_REKLAMOWAC &8» 
on damage:
    victim is a player
    set {_} to y-pos of victim
    if {_} < -100:
        cancel event
        teleport victim to spawn
        send "{@prefix} &cNawet najdzielniejszym zdarza się upadek." to victim
        play sound "entity_ghast_shoot" with volume 10 and pitch 1 to victim

 

Sprawdz, powinno dzialac wtedy kiedy gracz dostanie dmg od voidu

 

Lub mozna to zrobic w javie

Dziękuje za chęć pomocy, ale ja nie chce aby wykonywało sie po dmg. Mój skrypt działa, pytanie jest czy został poprawnie wykonany, czy coś można jeszcze fajnego dodac

 

Odnośnik do komentarza
https://skript.pl/temat/57997-antivoid/#findComment-344478
Udostępnij na innych stronach

  • 0
W dniu 2.08.2024 o 22:59, 347Aza napisał:

Czy został on poprawnie wykonany?

Pytanie trochę źle zadane, bo "poprawnie" raczej interpretowałbym jako to, że przeładowanie skryptu odbywa się bez błędów i nie występuje dziwne działanie z jego strony. No ale dobrze, mniejsza o to.

Jeżeli gracz ma być teleportowany po przekroczeniu pewnej wysokości to nie ma innego sposobu aby to zrobić, bo musimy sprawdzać co tick czy gracz się poruszył (to właśnie robi zdarzenie 'on player move') i czy spadł poniżej zadanej wysokości. Oczywiście ktoś mógłby wpaść na genialny pomysł wykorzystania regionów i zdarzenia 'on region enter', ale wszystko nadal kręci się wokół zdarzenia 'PlayerMoveEvent', które wykorzystują zarówno Skript jak i chociażby WorldGuard za kulisami.

Mogę więc stwierdzić, że trudno o wymyślenie lepszego rozwiązania.

Pozdrawiam.

Odnośnik do komentarza
https://skript.pl/temat/57997-antivoid/#findComment-344483
Udostępnij na innych stronach

  • 0
Godzinę temu, Kormic napisał:

Pytanie trochę źle zadane, bo "poprawnie" raczej interpretowałbym jako to, że przeładowanie skryptu odbywa się bez błędów i nie występuje dziwne działanie z jego strony. No ale dobrze, mniejsza o to.

Jeżeli gracz ma być teleportowany po przekroczeniu pewnej wysokości to nie ma innego sposobu aby to zrobić, bo musimy sprawdzać co tick czy gracz się poruszył (to właśnie robi zdarzenie 'on player move') i czy spadł poniżej zadanej wysokości. Oczywiście ktoś mógłby wpaść na genialny pomysł wykorzystania regionów i zdarzenia 'on region enter', ale wszystko nadal kręci się wokół zdarzenia 'PlayerMoveEvent', które wykorzystują zarówno Skript jak i chociażby WorldGuard za kulisami.

Mogę więc stwierdzić, że trudno o wymyślenie lepszego rozwiązania.

Pozdrawiam.

A optymalizacyjne aby skrypt zużywał jak najmniej zasobów to którą opcję byś wybrał?
Domyślam się, że on player move jest trochę obciążające przy wiekszej ilosci graczy, czy on region enter jest lepsze patrząc pod tym kątem?

Odnośnik do komentarza
https://skript.pl/temat/57997-antivoid/#findComment-344484
Udostępnij na innych stronach

  • 0
45 minut temu, 347Aza napisał:

A optymalizacyjne aby skrypt zużywał jak najmniej zasobów to którą opcję byś wybrał?
Domyślam się, że on player move jest trochę obciążające przy wiekszej ilosci graczy, czy on region enter jest lepsze patrząc pod tym kątem?

Tak jak napisałem, oba te zdarzenia wykorzystują zdarzenie 'PlayerMoveEvent', które pochodzi z Bukkit API (w dużym skrócie, z tego korzystają wszystkie wtyczki (pluginy)), więc są one porównywalne. Warto jednak zauważyć, że zdarzenie 'on region enter' wiąże się z potencjalnym sprawdzaniem wielu informacji ze strony pluginu zarządzającego regionami, co skłania raczej ku użyciu zdarzenia 'on player move' jeżeli nie ma potrzeby wykorzystania regionów przy tym problemie.

Jeszcze jedno. Proszę się nie bać korzystania ze zdarzenia 'on player move', ponieważ dla każdego gracza jest ono wywoływane nie więcej niż 20 razy na sekundę. Tego typu zdarzenia mają złą reputację przez to, że wielu twórców pluginów i skryptów (zwłaszcza tych drugich) ma tendencję do dodawania dziesiątek linijek kodu do listenerów tego zdarzenia. Kod, który Pan pokazał, nie będzie obciążający dla serwera.
Swoją drogą, istnieją zdarzenia, które są znacznie częściej wywoływane. Dobrym przykładem jest zdarzenie 'on physics', które jest powiązane z każdą zmianą stanu bloku, która może być spowodowana przez jakikolwiek byt lub być następstwem naturalnych procesów zachodzących w grze. Na serwerach z większą ilością graczy zdarzenie te jest wywoływane czasem tysiące razy na sekundę (a więc niejednokrotnie kilkaset razy na tick).

Pozdrawiam.

Odnośnik do komentarza
https://skript.pl/temat/57997-antivoid/#findComment-344485
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

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