Skocz do zawartości
  • 0

Teleportacja


MajstereQ123

Pytanie

command /tpa [<gracz>]:
    trigger:
        if arg 1 is not set:
            send "&cBłąd: &7Wpisz nick gracza!"
            stop
        if arg 1 is "%player%":
            send "&cBłąd: &7Nie możesz wysłać prośby do samego siebie!"
            stop
        if player's inventory contains 15 gold ingot:
            remove 15 gold ingot from player's inventory
            delete {tpa::%player%}
            delete {tpa::ocz::%player-arg%}
            set {tpa::%player%} to "%player-arg%"
            set {tpa::ocz::%player-arg%} to "%player%"
            set {tpa::position::%player%} to location of player
            send "&aWysłano prośbę o teleportację do &7%arg 1%&a." to player
            send "&aOtrzymałeś prośbę o teleportację od &7%player%&a." to player-arg
            send "&7Wpisz &a/tpaccept lub &c/tpdeny" to player-arg
        else:
            send "&cBłąd: &7Nie posiadasz &a15 &7sztuk &6złota, &7aby wysłać prośbę." to player
        stop

on quit:
    delete {tpa::*}

command /tpdeny:
    trigger:
        if {tpa::ocz::%player%} is set:
            set {_} to "%{tpa::ocz::%player%}%" parsed as player
            delete {tpa::ocz::%player%}
            delete {tpa::%{_}%}
            delete {tpa::position::%{_}%}
            send "&cGracz &7%player% &cnie zaakceptował twojej prośby!" to {_}
            send "&cNie zaakceptowałeś prośby gracza &7%{tpa::ocz::%player%}% &c!" to player
        else:
            send "&cBłąd: &7Nie otrzymałeś żadnej prośby o teleportację!"

command /tpaccept:
    trigger:
        if {tpa::ocz::%player%} is set:
            set {_} to "%{tpa::ocz::%player%}%" parsed as player
            send "&aGracz &7%{tpa::ocz::%player%}% &a zostanie przeteleportowany do ciebie za 15 sekund!" to player
            send "&aGracz &7%player% &azaakceptował twoją prośbę..." to {_}
            wait 15 seconds
            if location of {_} is not {tpa::position::%{_}%}:
                send "&7Teleportacja anulowana, ponieważ się poruszyłeś!" to {_}
                send "&7Teleportacja gracza &7%{_}% &czostała anulowana, ponieważ się poruszył!" to player
            else:
                teleport {_} to player
                send "&aGracz &7%{tpa::ocz::%player%}% &a zostanie przeteleportowanydo ciebie!" to player
                send "&aZostałeś przeteleportowany do &7%player%&a!" to {_}
            delete {tpa::%{_}%}
            delete {tpa::ocz::%player%}
            delete {tpa::position::%{_}%}
        else:
            send "&cBłąd: Nie otrzymałeś żadnej prośby o teleportację!"

command /tpcancel:
    trigger:
        if {tpa::%player%} is set:
            set {_} to "%{tpa::%player%}%" parsed as player
            delete {tpa::%player%}
            delete {tpa::ocz::%{_}%}
            delete {tpa::position::%player%}
            send "&cAnulowano swoją prośbę o teleportację do &7%{_}%&c!" to player
            send "&cGracz &7%player% &canulował swoją prośbę o teleportację!" to {_}
        else:
            send "&cNie masz żadnych aktywnych próśb o teleportację!" to player



jak zedytować kod, aby podczas poruszania myszką nie anulowało też tpka

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

1 odpowiedź na to pytanie

Rekomendowane odpowiedzi

  • 0
Godzinę temu, MajstereQ123 napisał:

jak zedytować kod, aby podczas poruszania myszką nie anulowało też tpka

Należy pamiętać, że lokalizacja gracza oprócz informacji o współrzędnych i świecie, przechowuje również informację o tym w jakim kierunku spogląda gracz (yaw i pitch).

Jeśli Pan chce aby teleportacja następowała pomimo obracania się podczas odliczania, musi Pan sprawdzać jedynie koordynaty i świat. Może Pan to zrobić w poniższy sposób.

set {tpa::position::%player%} to location at (x-loc of player, y-loc of player, z-loc of player) in player's world

# ...

# Sprawdzanie warunku teleportacji (porównanie lokalizacji)
set {_teleportedPlayerLoc} to location at (x-loc of {_}, y-loc of {_}, z-loc of {_}) in {_}'s world
if {_teleportedPlayerLoc} is not {tpa::position::%{_}%}:
	# Dalszy kod...

Powiem jeszcze o kilku innych rzeczach, które przykuły moją uwagę.

  1. Dlaczego u Pana typ argumentu komendy (1. linijka) to 'gracz', a nie 'player'? Mam duże wątpliwości co do poprawności takiego zapisu.
  2. Dlaczego Pan zapisuje gracza podanego w argumencie komendy jako tekst do zmiennej, a nie jako obiekt gracza? Jest to dla mnie niezrozumiałe.
  3. Nie rozumiem również dlaczego Pan przyrównuje argument komendy do tekstu. Schludniejszym zapisem jest operowanie na obiekcie gracza.
  4. Jaki jest powód czyszczenia zawartości listy {tpa::*} przy każdorazowym wyjściu dowolnego gracza z serwera? Konsekwencją tego jest uniemożliwienie teleportacji wszystkim graczom na serwerze, ponieważ wszystkie zmienne z tej listy są czyszczone.
  5. Pan powinien cyklicznie sprawdzać przy teleportacji (na przykład co sekundę) czy gracz się poruszył. Lepiej od razu przerwać teleportację przy poruszeniu się i ją ponowić niż czekać aż upłynie 15 sekund (tak jak jest to ustalone w skrypcie).

Pozdrawiam.

Odnośnik do komentarza
https://skript.pl/temat/57547-teleportacja/#findComment-342642
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ę...