Skocz do zawartości
  • 0

Atak potworów


TeZetYT

Pytanie

10 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
2 godziny temu, TeZetYT napisał:

Witam. Istnieje jakiś sposób żeby iron golem i ravager się nie atakowali za pomocą skryptu? Z góry dzięki za odpowiedź.

Tak. Można w tym celu wykorzystać zdarzenie 'on target', które można anulować. Wystarczy przed jego anulowaniem sprawdzić czy 'event-entity' jak i 'target' są golemem lub dewastatorem (ravager).

Pozdrawiam.

Odnośnik do komentarza
https://skript.pl/temat/58071-atak-potwor%C3%B3w/#findComment-344731
Udostępnij na innych stronach

  • 0
4 godziny temu, Kormic napisał:

Tak. Można w tym celu wykorzystać zdarzenie 'on target', które można anulować. Wystarczy przed jego anulowaniem sprawdzić czy 'event-entity' jak i 'target' są golemem lub dewastatorem (ravager).

Pozdrawiam.

Przed tym jak zdążyłem napisać że już ogarnąłem to to napotkałem inny problem. Ta metoda nie działa kiedy dwa moby ze sobą walczą nie dlatego że na ogół się nie lubią (tak jak np. golem i ravager, albo enderman i endermite albo golem i zombie) tylko dlatego, że jeden zaatakował z jakiegoś powodu drugiego. Wtedy nie da się tego tak anulować. Czy jest jakiś inny sposób na anulowanie tego? Mam nadzieję że dobrze wytłumaczyłem xD

Odnośnik do komentarza
https://skript.pl/temat/58071-atak-potwor%C3%B3w/#findComment-344735
Udostępnij na innych stronach

  • 0
5 godzin temu, TeZetYT napisał:

Przed tym jak zdążyłem napisać że już ogarnąłem to to napotkałem inny problem. Ta metoda nie działa kiedy dwa moby ze sobą walczą nie dlatego że na ogół się nie lubią (tak jak np. golem i ravager, albo enderman i endermite albo golem i zombie) tylko dlatego, że jeden zaatakował z jakiegoś powodu drugiego. Wtedy nie da się tego tak anulować. Czy jest jakiś inny sposób na anulowanie tego? Mam nadzieję że dobrze wytłumaczyłem xD

Jeżeli zdarzenie 'on target' nie obsługuje tego przypadku, można spróbować dodać moby do tej samej drużyny w Minecraft'cie. Przykład poniżej.

/team add noAttack
/team modify noAttack friendlyFire false
/team join noAttack @e[type=<skeleton>]

Drużynę moba można ustawiać również przy jego spawnowaniu. Można tutaj również wykorzystać Bukkit API wraz ze skript-reflect. Finalnie, można spróbować wyczyścić fragment NBT wskazujący na właściciela pocisku przy pomocy SkBee (zakładam, że stąd te pytanie).

Pozdrawiam.

Odnośnik do komentarza
https://skript.pl/temat/58071-atak-potwor%C3%B3w/#findComment-344737
Udostępnij na innych stronach

  • 0
W dniu 16.08.2024 o 00:18, Kormic napisał:

Jeżeli zdarzenie 'on target' nie obsługuje tego przypadku, można spróbować dodać moby do tej samej drużyny w Minecraft'cie. Przykład poniżej.

/team add noAttack
/team modify noAttack friendlyFire false
/team join noAttack @e[type=<skeleton>]

Drużynę moba można ustawiać również przy jego spawnowaniu. Można tutaj również wykorzystać Bukkit API wraz ze skript-reflect. Finalnie, można spróbować wyczyścić fragment NBT wskazujący na właściciela pocisku przy pomocy SkBee (zakładam, że stąd te pytanie).

Pozdrawiam.

a jak dodać to do skryptu bez execute command?

w sensie na przykładzie bo nie umiem XD

Kormic

Łączę posty.

Notatka dodana przez Kormic

Odnośnik do komentarza
https://skript.pl/temat/58071-atak-potwor%C3%B3w/#findComment-344774
Udostępnij na innych stronach

  • 0
1 godzinę temu, TeZetYT napisał:

a jak dodać to do skryptu bez execute command?

w sensie na przykładzie bo nie umiem XD

Tak jak mówiłem, można wykorzystać w tym celu Bukkit API, a dokładniej to interfejs Scoreboard. Aby pobrać jego implementację, korzystamy z metody Bukkit.getScoreboardManager(), a dalej możemy wykorzystać główny scoreboard serwera lub stworzyć własny. Ja pokażę przykład wykorzystujący pierwszy sposób.

Pobieranie głównego scoreboarda i tworzenie nowej drużyny z wyłączonym atakowaniem innych członków drużyny:

set {_sm} to Bukkit.getScoreboardManager()
set {_msb} to {_sm}.getMainScoreboard()
set {_team} to {_msb}.registerNewTeam("exampleteam")
{_team}.setAllowFriendlyFire(false)

Przywołanie dwóch domyślnie agresywnych względem siebie mobów i dodanie ich do drużyny:

set {_sm} to Bukkit.getScoreboardManager()
set {_msb} to {_sm}.getMainScoreboard()
set {_team} to {_msb}.getTeam("exampleteam")
spawn ravager at player:
	{_team}.addEntity(event-entity)
spawn iron golem at player:
	{_team}.addEntity(event-entity)

Oczywiście, do drużyn można dodawać dowolne byty, w tym graczy.

Należy jednak pamiętać, że nie wyłącza to obrażeń od sojuszników w obrębie drużyny, a zapobiega jedynie ich atakowaniu siebie wzajemnie. Na przykład po użyciu nieco zmodyfikowanego kodu pokazanego powyżej, szkielety mogą trafiać w siebie strzałami jeżeli będą one wystrzeliwane niecelnie, ale nie będą się z tego powodu skupiały na innych szkieletach.

Pozdrawiam.

Odnośnik do komentarza
https://skript.pl/temat/58071-atak-potwor%C3%B3w/#findComment-344778
Udostępnij na innych stronach

  • 0
Godzinę temu, Kormic napisał:

Tak jak mówiłem, można wykorzystać w tym celu Bukkit API, a dokładniej to interfejs Scoreboard. Aby pobrać jego implementację, korzystamy z metody Bukkit.getScoreboardManager(), a dalej możemy wykorzystać główny scoreboard serwera lub stworzyć własny. Ja pokażę przykład wykorzystujący pierwszy sposób.

Pobieranie głównego scoreboarda i tworzenie nowej drużyny z wyłączonym atakowaniem innych członków drużyny:

set {_sm} to Bukkit.getScoreboardManager()
set {_msb} to {_sm}.getMainScoreboard()
set {_team} to {_msb}.registerNewTeam("exampleteam")
{_team}.setAllowFriendlyFire(false)

Przywołanie dwóch domyślnie agresywnych względem siebie mobów i dodanie ich do drużyny:

set {_sm} to Bukkit.getScoreboardManager()
set {_msb} to {_sm}.getMainScoreboard()
set {_team} to {_msb}.getTeam("exampleteam")
spawn ravager at player:
	{_team}.addEntity(event-entity)
spawn iron golem at player:
	{_team}.addEntity(event-entity)

Oczywiście, do drużyn można dodawać dowolne byty, w tym graczy.

Należy jednak pamiętać, że nie wyłącza to obrażeń od sojuszników w obrębie drużyny, a zapobiega jedynie ich atakowaniu siebie wzajemnie. Na przykład po użyciu nieco zmodyfikowanego kodu pokazanego powyżej, szkielety mogą trafiać w siebie strzałami jeżeli będą one wystrzeliwane niecelnie, ale nie będą się z tego powodu skupiały na innych szkieletach.

Pozdrawiam.

a da się to z skbee zrobić? bo kod widzę chyba z javy jest troche a jak pisze kod to chce zawsze wiedziec jak dziala a javy nie umiem ani troche a w dokumentacji widzialem ze skbee obsluguje teamy ale w ogóle nie widziałem jak stworzyć team bo było np. jak dodać gracza, moba, usunąć itp ale stworzyć to nigdzie nie widziałem

Odnośnik do komentarza
https://skript.pl/temat/58071-atak-potwor%C3%B3w/#findComment-344780
Udostępnij na innych stronach

  • 0
6 godzin temu, TeZetYT napisał:

a da się to z skbee zrobić? bo kod widzę chyba z javy jest troche a jak pisze kod to chce zawsze wiedziec jak dziala a javy nie umiem ani troche a w dokumentacji widzialem ze skbee obsluguje teamy ale w ogóle nie widziałem jak stworzyć team bo było np. jak dodać gracza, moba, usunąć itp ale stworzyć to nigdzie nie widziałem

SkBee nie wspiera rejestrowania nowych drużyn, ale można sobie z tym poradzić poprzez stworzenie własnego efektu w skript-reflect.

import:
	org.bukkit.Bukkit

effect register [a] [new] team [named] %text%:
	trigger:
		set {_sm} to Bukkit.getScoreboardManager()
		set {_msb} to {_sm}.getMainScoreboard()
		set {_team} to {_msb}.registerNewTeam(expr-1)

Warto byłoby w wyzwalaczu ('trigger') dodać jeszcze sprawdzanie czy podana nazwa nie jest pusta (mowa o "") i nie zawiera spacji, ponieważ nazwa drużyny nie może się składać z więcej niż jednego słowa.

Pozdrawiam.

Odnośnik do komentarza
https://skript.pl/temat/58071-atak-potwor%C3%B3w/#findComment-344789
Udostępnij na innych stronach

  • 0
17 godzin temu, Kormic napisał:

SkBee nie wspiera rejestrowania nowych drużyn, ale można sobie z tym poradzić poprzez stworzenie własnego efektu w skript-reflect.

import:
	org.bukkit.Bukkit

effect register [a] [new] team [named] %text%:
	trigger:
		set {_sm} to Bukkit.getScoreboardManager()
		set {_msb} to {_sm}.getMainScoreboard()
		set {_team} to {_msb}.registerNewTeam(expr-1)

Warto byłoby w wyzwalaczu ('trigger') dodać jeszcze sprawdzanie czy podana nazwa nie jest pusta (mowa o "") i nie zawiera spacji, ponieważ nazwa drużyny nie może się składać z więcej niż jednego słowa.

Pozdrawiam.

jeśli zainstaluje skript-reflect i wkleje ten kod to jak ten efekt będzie wyglądał w skripcie? register new team named "nazwa"?

Odnośnik do komentarza
https://skript.pl/temat/58071-atak-potwor%C3%B3w/#findComment-344800
Udostępnij na innych stronach

  • 0
9 godzin temu, TeZetYT napisał:

jeśli zainstaluje skript-reflect i wkleje ten kod to jak ten efekt będzie wyglądał w skripcie? register new team named "nazwa"?

Jest to jeden z możliwych wariantów, ponieważ wszystko to, co znajduje się w nawiasach kwadratowych, jest opcjonalne. Najkrótsza wersją będzie 'register team "nazwa"'.

Pozdrawiam.

Odnośnik do komentarza
https://skript.pl/temat/58071-atak-potwor%C3%B3w/#findComment-344810
Udostępnij na innych stronach

  • 0
W dniu 17.08.2024 o 15:33, Kormic napisał:

SkBee nie wspiera rejestrowania nowych drużyn, ale można sobie z tym poradzić poprzez stworzenie własnego efektu w skript-reflect.

import:
	org.bukkit.Bukkit

effect register [a] [new] team [named] %text%:
	trigger:
		set {_sm} to Bukkit.getScoreboardManager()
		set {_msb} to {_sm}.getMainScoreboard()
		set {_team} to {_msb}.registerNewTeam(expr-1)

Warto byłoby w wyzwalaczu ('trigger') dodać jeszcze sprawdzanie czy podana nazwa nie jest pusta (mowa o "") i nie zawiera spacji, ponieważ nazwa drużyny nie może się składać z więcej niż jednego słowa.

Pozdrawiam.

dobrze dziękuję.

Edytowane przez TeZetYT
Odnośnik do komentarza
https://skript.pl/temat/58071-atak-potwor%C3%B3w/#findComment-344817
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ę...