Skocz do zawartości
  • 0

Kuszą przyciągająca


Pytanie

14 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
Godzinę temu, Ebrawscool napisał:

Cześć potrzebuje skryptu na kusze przyciągającą. Gdy trafi się nią w gracza przyciąga go do niego (do tej samej kratki) I żeby cooldown był 60 sekund

Proszę uprzejmie. Skrypt nie był testowany.

Na górze skryptu dodałem możliwość podstawowej konfiguracji skryptu. Trzecia opcja odpowiada za siłę przyciągania, należy ją dobrać metodą prób i błędów. Samą kuszę można otrzymać za pomocą komendy /kusza, która wymaga permisji w niej ustawionej - ją również można zmienić.

options:
	crossbowName: "&bKusza przyciągająca"
	crossbowLore "&7Ta kusza jest w stanie przyciągać trafionych graczy do ciebie." and "&7Cooldown: &c60 sekund"
	pullForceAmplification: 1.0

on shoot:
	shooter is a player
	name of shooter's tool is {@crossbowName}
	lore of shooter's tool is {@crossbowLore}
	{pullingCrossbow::cooldown::%uuid of shooter%} is set:
		set {_cooldown} to 1 minute
		difference between {pullingCrossbow::cooldown::%uuid of shooter%} and now is smaller than {_cooldown}
		send "&6Cooldown kuszy jest aktywny &e(1 minuta)&6." to shooter
		stop
	set {pullingCrossbow::cooldown::%uuid of shooter%} to now

on damage:
	projectile is an arrow
	set {_shooter} to shooter of projectile
	{_shooter} is a player
	set {_v} to vector from victim to {_shooter}
	push victim ({@pullForceAmplification} * {_v})
	
command /kusza [<text>]:
	permission: server.command.kusza
	permission message: &6Nie posiadasz wystarczających uprawnień do wykonania tej komendy.
	executable by: players
	trigger:
		give player crossbow named {@crossbowName} with lore {@crossbowLore}

Pozdrawiam.

Odnośnik do komentarza
https://skript.pl/temat/57812-kusz%C4%85-przyci%C4%85gaj%C4%85ca/#findComment-343594
Udostępnij na innych stronach

  • 0
W dniu 9.07.2024 o 13:30, Kormic napisał:

Proszę uprzejmie. Skrypt nie był testowany.

Na górze skryptu dodałem możliwość podstawowej konfiguracji skryptu. Trzecia opcja odpowiada za siłę przyciągania, należy ją dobrać metodą prób i błędów. Samą kuszę można otrzymać za pomocą komendy /kusza, która wymaga permisji w niej ustawionej - ją również można zmienić.

options:
	crossbowName: "&bKusza przyciągająca"
	crossbowLore "&7Ta kusza jest w stanie przyciągać trafionych graczy do ciebie." and "&7Cooldown: &c60 sekund"
	pullForceAmplification: 1.0

on shoot:
	shooter is a player
	name of shooter's tool is {@crossbowName}
	lore of shooter's tool is {@crossbowLore}
	{pullingCrossbow::cooldown::%uuid of shooter%} is set:
		set {_cooldown} to 1 minute
		difference between {pullingCrossbow::cooldown::%uuid of shooter%} and now is smaller than {_cooldown}
		send "&6Cooldown kuszy jest aktywny &e(1 minuta)&6." to shooter
		stop
	set {pullingCrossbow::cooldown::%uuid of shooter%} to now

on damage:
	projectile is an arrow
	set {_shooter} to shooter of projectile
	{_shooter} is a player
	set {_v} to vector from victim to {_shooter}
	push victim ({@pullForceAmplification} * {_v})
	
command /kusza [<text>]:
	permission: server.command.kusza
	permission message: &6Nie posiadasz wystarczających uprawnień do wykonania tej komendy.
	executable by: players
	trigger:
		give player crossbow named {@crossbowName} with lore {@crossbowLore}

Pozdrawiam.

nie działa 

korzystam z:

-1.20.1

-skript 2.8.7

Odnośnik do komentarza
https://skript.pl/temat/57812-kusz%C4%85-przyci%C4%85gaj%C4%85ca/#findComment-343917
Udostępnij na innych stronach

  • 0
1 godzinę temu, Ebrawscool napisał:

Przyciąganie 

Dziwne. Przychodzą mi jedynie do głowy dwie rzeczy: albo przemnażanie wektora przez stałą nie działa tak jak powinno, albo też u Pana nie działa wyrażenie 'shooter of %projectile%' tak jak powinno.

Co do pierwszego, proszę sprawdzić czy zamiana ostatniej linijki w listenerze zdarzenia 'on damage' na poniższą pomoże.

push victim {_v}

Jeżeli zadziała, proszę spróbować tak:

on damage:
	projectile is an arrow
	set {_shooter} to shooter of projectile
	{_shooter} is a player
	set {_v} to vector from victim to {_shooter}
	set {_constV} to vector({@pullForceAmplification}, {@pullForceAmplification}, {@pullForceAmplification})
	push victim ({_constV} * {_v})

Druga opcja jest taka, aby spróbować oprzeć mechanizm na metadata.

options:
	crossbowName: "&bKusza przyciągająca"
	crossbowLore "&7Ta kusza jest w stanie przyciągać trafionych graczy do ciebie." and "&7Cooldown: &c60 sekund"
	pullForceAmplification: 1.0

on shoot:
	shooter is a player
	name of shooter's tool is {@crossbowName}
	lore of shooter's tool is {@crossbowLore}
	{pullingCrossbow::cooldown::%uuid of shooter%} is set:
		set {_cooldown} to 1 minute
		difference between {pullingCrossbow::cooldown::%uuid of shooter%} and now is smaller than {_cooldown}
		send "&6Cooldown kuszy jest aktywny &e(1 minuta)&6." to shooter
		stop
	set {pullingCrossbow::cooldown::%uuid of shooter%} to now
	set metadata tag "projectileShooter" of projectile to shooter

on damage:
	projectile is set
	set {_shooter} to metadata tag "projectileShooter" of projectile
	{_shooter} is set
	set {_v} to vector from victim to {_shooter}
	push victim ({@pullForceAmplification} * {_v})
	
command /kusza [<text>]:
	permission: server.command.kusza
	permission message: &6Nie posiadasz wystarczających uprawnień do wykonania tej komendy.
	executable by: players
	trigger:
		give player crossbow named {@crossbowName} with lore {@crossbowLore}

Tutaj również proszę spróbować podmieniać ostatnią linijkę w listenerze zdarzenia 'on damage' jak wyżej.

Pozdrawiam.

Odnośnik do komentarza
https://skript.pl/temat/57812-kusz%C4%85-przyci%C4%85gaj%C4%85ca/#findComment-343950
Udostępnij na innych stronach

  • 0
command /dajkusze:
    permission: op
    trigger:
        give player crossbow named "&aKusza przyciągająca" with lore "&5&lCooldown: &e1 min"
function dodajCD(p: player, v: text, t: text, s: timespan) :: boolean:
    if difference between {cooldown::%{_v}%::%{_p}%} and now is smaller than {_s}:
        remove difference between now and {cooldown::%{_v}%::%{_p}%} from {_s}
        set {_s} to "%{_s}%"
        replace all "seconds" and "second" with "s" in {_s}
        replace all "minute" and "minutes" with "m" in {_s}
        replace all "hours" and "hour" with "h" in {_s}
        send "%{_t}% %{_s}%" to {_p}
        return false
    else:
        set {cooldown::%{_v}%::%{_p}%} to now
        return true
on right click:
    name of player's tool is "&aKusza przyciągająca"
    cancel event
    player has 1 of arrow
    dodajCD(player, "kusza", "&8Przed następnym użyciem poczekaj&7", 1 minute) = true
    remove 1 of arrow from player
    shoot an arrow from player at speed 3
    set name of last shot arrow to "kusza%player%"
on projectile hit:
    projectile is an arrow
    name of projectile is "kusza%shooter%"
    set {_v} to vector between victim and shooter 
    push victim {_v}

Przetestowane i działa ;)

Edytowane przez Fendi
Odnośnik do komentarza
https://skript.pl/temat/57812-kusz%C4%85-przyci%C4%85gaj%C4%85ca/#findComment-343981
Udostępnij na innych stronach

  • 0
5 godzin temu, Ebrawscool napisał:

Oba skrypty nie działają 

-wersją 1.20.1

-skript 2.8.7

-silnik nie wiem ale chyba paper/spigot/bukkit

Jakieś błędy? A i używasz nie wspieranej wersji. Zaktualizuj do 1.20.6

Silnik najlepiej paper

Ja to testowałem na 1.19.4.

I działa to tylko na realnych graczy

Oraz musisz mieć minimum 1 strzale w eq

Edytowane przez Fendi
Odnośnik do komentarza
https://skript.pl/temat/57812-kusz%C4%85-przyci%C4%85gaj%C4%85ca/#findComment-344009
Udostępnij na innych stronach

  • 0

Dodam, że warto przetestować skrypt bez obecności innych skryptów i dodatków do Skripta na serwerze. Jeżeli skrypt będzie działał, należy je przywracać jeden po drugim i restartować cały czas serwer (nie używać komendy /reload ani PlugMan i tym podobnych, zwyczajny restart), aby określić co jest przyczyną braku działania.

Jeśli chodzi o mój skrypt, czy sprawdził Pan to co napisałem nad kodem skryptu? Możliwe, że przemnażanie wektora powoduje problem.

Pozdrawiam.

Odnośnik do komentarza
https://skript.pl/temat/57812-kusz%C4%85-przyci%C4%85gaj%C4%85ca/#findComment-344015
Udostępnij na innych stronach

  • 0
18 godzin temu, Fendi napisał:

Jakieś błędy? A i używasz nie wspieranej wersji. Zaktualizuj do 1.20.6

Silnik najlepiej paper

Ja to testowałem na 1.19.4.

I działa to tylko na realnych graczy

Oraz musisz mieć minimum 1 strzale w eq

Właśnie jest problem bo musze robić na 1.20.1 i chciałbym żeby skrypt był na 1.20.1

Odnośnik do komentarza
https://skript.pl/temat/57812-kusz%C4%85-przyci%C4%85gaj%C4%85ca/#findComment-344024
Udostępnij na innych stronach

  • 0
1 godzinę temu, Ebrawscool napisał:

Właśnie jest problem bo musze robić na 1.20.1 i chciałbym żeby skrypt był na 1.20.1

Po co ci niby ta wersja xd Żaden plugin takich nie wspiera. Ale to i tak raczej powinno działać. Napewno masz minimum 1 strzałe w eq jak na nagraniu niżej?

https://streamable.com/o8v7zi

https://imgur.com/a/GiGl4jE

 

I @Kormic sprawdziłem sobie też twój skrypt, on nie działa. Wypycha moba do przodu zamiast go przyciągnąć

Edytowane przez Fendi
Odnośnik do komentarza
https://skript.pl/temat/57812-kusz%C4%85-przyci%C4%85gaj%C4%85ca/#findComment-344027
Udostępnij na innych stronach

  • 0
41 minut temu, Fendi napisał:

I @Kormic sprawdziłem sobie też twój skrypt, on nie działa. Wypycha moba do przodu zamiast go przyciągnąć

Który? Wysłałem dwa. Poza tym niemożliwe jest aby to tak działało, nie popycham przecież moba do przodu. Popycham go wzdłuż wektora od trafionego do strzelającego.

Jeśli chodzi o drugi, nad samym drugim skryptem napisałem również co należy zrobić jeśli popychanie nie będzie działało jak należy. Być może przemnażanie wektora przez stałą działa nie tak jak zaplanowali to sobie twórcy Skripta. To jest jedynie zmiana modułu wektora, ponieważ jest to przemnażanie każdej jego składowej przez stałą.

Zdaje się, że autor nie sprawdził tego o co poprosiłem, więc jeśli mógłbyś to przetestować to dziękuję.

Pozdrawiam.

Odnośnik do komentarza
https://skript.pl/temat/57812-kusz%C4%85-przyci%C4%85gaj%C4%85ca/#findComment-344030
Udostępnij na innych stronach

  • 0
W dniu 16.07.2024 o 22:59, Fendi napisał:
command /dajkusze:
    permission: op
    trigger:
        give player crossbow named "&aKusza przyciągająca" with lore "&5&lCooldown: &e1 min"
function dodajCD(p: player, v: text, t: text, s: timespan) :: boolean:
    if difference between {cooldown::%{_v}%::%{_p}%} and now is smaller than {_s}:
        remove difference between now and {cooldown::%{_v}%::%{_p}%} from {_s}
        set {_s} to "%{_s}%"
        replace all "seconds" and "second" with "s" in {_s}
        replace all "minute" and "minutes" with "m" in {_s}
        replace all "hours" and "hour" with "h" in {_s}
        send "%{_t}% %{_s}%" to {_p}
        return false
    else:
        set {cooldown::%{_v}%::%{_p}%} to now
        return true
on right click:
    name of player's tool is "&aKusza przyciągająca"
    cancel event
    player has 1 of arrow
    dodajCD(player, "kusza", "&8Przed następnym użyciem poczekaj&7", 1 minute) = true
    remove 1 of arrow from player
    shoot an arrow from player at speed 3
    set name of last shot arrow to "kusza%player%"
on projectile hit:
    projectile is an arrow
    name of projectile is "kusza%shooter%"
    set {_v} to vector between victim and shooter 
    push victim {_v}

Przetestowane i działa ;)

Jednak super działa dziękuję

 

Odnośnik do komentarza
https://skript.pl/temat/57812-kusz%C4%85-przyci%C4%85gaj%C4%85ca/#findComment-344059
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ę...