Skocz do zawartości
  • 0

Flagi z WorldGuard do skripta


shaqupl1
 Udostępnij

Pytanie

18 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
1 minutę temu, shaqupl1 napisał:

Da się odczytać jakoś jakie są flagi na region, na który wszedł gracz?

Skript nie udostępnia takiego wyrażenia.

Jedyny sposób to odczyt z pliku .yml danego regionu w folderze plugins/WorldGuard/worlds/twój_świat. Mógłbyś to zrobić przykładowo poprzez dodatek skript-yaml.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

Jedyne coś takiego znalazłem Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

jak widać wymaga dodatku SkStuff

 

edit: na SkUnity ktoś dodał taki przykład:

command /flagtest:
    trigger:
        set {_dad} to "pvp" parsed as worldguard flag
        set {_dad2} to "mainlobby" parsed as a region
        send "%wg flag {_dad} of {_dad2}%"

 

Edytowane przez CoFFeIN04
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
1 minutę temu, Kormic napisał:

Skript nie udostępnia takiego wyrażenia.

Jedyny sposób to odczyt z pliku .yml danego regionu w folderze plugins/WorldGuard/worlds/twój_świat. Mógłbyś to zrobić przykładowo poprzez dodatek skript-yaml.

Potrzebuje to zrobić na wersji 1.16.4 a skript-yaml na tej wersji nie działa

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
Teraz, shaqupl1 napisał:

Potrzebuje to zrobić na wersji 1.16.4 a skript-yaml na tej wersji nie działa

 

W takim wypadku jeszcze są trzy dodatki do YAMLa w Skript. Mam tutaj na myśli:

  • SkUtilities
  • SkQuery
  • Skellett

Z tych trzech najlepszym wyborem będzie pierwszy. Teoretycznie powinien zadziałać.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
Teraz, shaqupl1 napisał:

SkStuff

SkStuff nie jest do YAMLa, ma składnie do sprawdzania flag:

15 minut temu, CoFFeIN04 napisał:
command /flagtest:
    trigger:
        set {_dad} to "pvp" parsed as worldguard flag
        set {_dad2} to "mainlobby" parsed as a region
        send "%wg flag {_dad} of {_dad2}%"

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
12 minut temu, shaqupl1 napisał:

Napisałby ktoś kawałek skripta jak to odczytaćza pomocą yamla z worldguarda za pomocą tego SkStuff? 

W tym dodatku nie ma żadnego YAMLa. Tam masz po prostu do podania flagę, przykład masz wyżej.

EDIT:

Uważam, że mimo wszystko nie rozwiązuje to problemu, gdyż pozwala to na sprawdzenie tylko jednej flagi. Lepiej jest użyć chociażby SkQuery w celu przechwycenia wszystkich flag.

set {_flags::*} to yaml nodes "regions.twojRegion.flags" from "../../WorldGuard/worlds/twojSwiat/regions.yml"
send "%{_flags::*}%"

Zamień jedynie "twojRegion" na nazwę twojego regionu oraz "twojSwiat" na nazwę twojego świata.

Jeżeli podana ścieżka do pliku nie zadziała, spróbuj:

from "plugins/WorldGuard/worlds/twojSwiat/regions.yml"

 

Edytowane przez Kormic
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
41 minut temu, Kormic napisał:

W tym dodatku nie ma żadnego YAMLa. Tam masz po prostu do podania flagę, przykład masz wyżej.

EDIT:

Uważam, że mimo wszystko nie rozwiązuje to problemu, gdyż pozwala to na sprawdzenie tylko jednej flagi. Lepiej jest użyć chociażby SkQuery w celu przechwycenia wszystkich flag.

set {_flags::*} to yaml nodes "regions.twojRegion.flags" from "../../WorldGuard/worlds/twojSwiat/regions.yml"
send "%{_flags::*}%"

Zamień jedynie "twojRegion" na nazwę twojego regionu oraz "twojSwiat" na nazwę twojego świata.

Jeżeli podana ścieżka do pliku nie zadziała, spróbuj:

from "plugins/WorldGuard/worlds/twojSwiat/regions.yml"

 

command /flagtest:
	trigger:
		set {_flags::*} to yaml nodes "regions.spawn.flags" from "../../WorldGuard/worlds/world/regions.yml"
		send "%{_flags::*}%"

Po użyciu komendy zwraca <none>
Generalnie moim problem jest to że gracz może dowolnie zmieniać flagę "-g NONMEMBER entry" na false lub true tak żeby nikt nie mógł wchodzić na dany region.

Gdy jakiś gracz spoza działki wejdzie na region a właściciel działki zablokuje na nią wchodzenie poprzez zmianę flagi, gracz który wszedł utyka w miejscu i czasami zostaje wyrzucony za fly. Gracze wykorzystują to do zwabienia w pułapkę i zabicia. Może jest jakiś inny sposób aby rozwiązać mój problem.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
1 minutę temu, shaqupl1 napisał:

Po użyciu komendy zwraca <none>

Czy wypróbowałeś drugą podaną przeze mnie ścieżkę? Zgaduję, że nie.

2 minuty temu, shaqupl1 napisał:

Generalnie moim problem jest to że gracz może dowolnie zmieniać flagę "-g NONMEMBER entry" na false lub true tak żeby nikt nie mógł wchodzić na dany region.

A dlaczego zwykły gracz może to zmieniać?

2 minuty temu, shaqupl1 napisał:

Gdy jakiś gracz spoza działki wejdzie na region a właściciel działki zablokuje na nią wchodzenie poprzez zmianę flagi, gracz który wszedł utyka w miejscu i czasami zostaje wyrzucony za fly. Gracze wykorzystują to do zwabienia w pułapkę i zabicia. Może jest jakiś inny sposób aby rozwiązać mój problem.

Jakie znowu działki?

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
1 minutę temu, Kormic napisał:

Czy wypróbowałeś drugą podaną przeze mnie ścieżkę? Zgaduję, że nie.

A dlaczego zwykły gracz może to zmieniać?

Jakie znowu działki?

Działki to regiony z worldguarda, właściciel działki może zmieniać kilka flag takich jak pvp czy entry (możliwość wejścia na działkę przez graczy nie dodanych do regionu) po tym jak ktoś obcy wejdzie na działkę a właściciel zablokuje wchodzenie podczas gdy osoba się na niej znajduje, nie może ona się ruszać. Próbuje jakoś temu zapobiec.

Moim pomysłem było to aby podczas zmieniania flagi entry na false wszyscy gracze niedodani na działkę zostali teleportowani np na spawn.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
Teraz, shaqupl1 napisał:

Działki to regiony z worldguarda, właściciel działki może zmieniać kilka flag takich jak pvp czy entry (możliwość wejścia na działkę przez graczy nie dodanych do regionu) po tym jak ktoś obcy wejdzie na działkę a właściciel zablokuje wchodzenie podczas gdy osoba się na niej znajduje, nie może ona się ruszać. Próbuje jakoś temu zapobiec.

Moim pomysłem było to aby podczas zmieniania flagi entry na false wszyscy gracze niedodani na działkę zostali teleportowani np na spawn.

Mógłbyś użyć w tym celu eventu 'on command' i zapętlałbyś wszystkich graczy. Następnie sprawdzałbyś czy zapętlany gracz jest w tym regionie. Jeżeli tak, dalej sprawdzasz czy lista 'members of [twój region]' zawiera tego gracza. Jeżeli nie zawiera, teleportujesz go na spawn.

Będzie z tym niestety trochę roboty, gdyż będziesz musiał sprawdzać również argumenty podane w komendzie.

command is "rg" or "region" # Sprawdzamy pierwsze słowo w komendzie
set {_args::*} to arguments # Ustawiamy do listy argumenty podane w komendzie
{_args::1} is "flag" # Sprawdzamy czy argument nr 1 to "flag"
loop all regions in world "world": # Zapętlamy wszystkie regiony w świecie "world" (podejrzewam, że nie ma takiej listy, ale raczej rozumiesz co mam na myśli; można opcjonalnie zobaczyć dodatek SharpSK, który dodaje taką listę)
	set {_r::*} to ("%loop-value%") split at " " # loop-value zawiera "%nazwa regionu% in world %nazwa swiata%" i chcemy przechwycić jedynie pierwsze słowo, czyli nazwę regionu
	add {_r::1} to {_rgs::*} # Dodajemy pierwsze słowo do listy
{_rgs::*} contains {_args::2} # Sprawdzamy czy lista zawierająca nazwy wszystkich regionów w tym świecie zawiera również nazwę regionu podaną w argumencie nr 2
# I dalsze sprawdzanie argumentów...

Jak samemu widzisz, masa roboty, gdyż trzeba sprawdzać czy gracz w ogóle dobrze wykonał komendę.

Najlepiej byłoby użyć pluginu na działki (PlotSquared, ProtectionStones), który eliminuje tego typu problemy.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
1 godzinę temu, CoFFeIN04 napisał:

Jedyne coś takiego znalazłem Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

jak widać wymaga dodatku SkStuff

 

edit: na SkUnity ktoś dodał taki przykład:

command /flagtest:
    trigger:
        set {_dad} to "pvp" parsed as worldguard flag
        set {_dad2} to "mainlobby" parsed as a region
        send "%wg flag {_dad} of {_dad2}%"

 

[01:33:14 ERROR]: Can't understand this expression: '"pvp" parsed as worldguard flag' (dzialki.sk, line 75: set {_dad} to "pvp" parsed as worldguard flag')
[01:33:14 ERROR]: Can't understand this expression: wg flag {_dad} of {_dad2} (dzialki.sk, line 77: send "%wg flag {_dad} of {_dad2}%"')
[01:33:14 INFO]: [Skript] Encountered 2 errors while reloading dzialki.sk!

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
4 minuty temu, Kormic napisał:

Jak samemu widzisz, masa roboty, gdyż trzeba sprawdzać czy gracz w ogóle dobrze wykonał komendę.

Najlepiej byłoby użyć pluginu na działki (PlotSquared, ProtectionStones), który eliminuje tego typu problemy.

Właśnie widzę ile roboty. Co masz na myśli z pluginem ponieważ używam pluginu ProtectionStones

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
Teraz, shaqupl1 napisał:

Właśnie widzę ile roboty. Co masz na myśli z pluginem ponieważ używam pluginu ProtectionStones

Zdawało mi się, że ProtectionStones pozbywa się tego problemu. Którego ProtectionStones używasz? Pytam, gdyż jest kilka jego osobnych wersji.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
1 minutę temu, Kormic napisał:

Zdawało mi się, że ProtectionStones pozbywa się tego problemu. Którego ProtectionStones używasz? Pytam, gdyż jest kilka jego osobnych wersji.

[01:43:45 INFO]: ProtectionStones: 2.7.7
[01:43:45 INFO]: Developers: [EspiDev]
[01:43:45 INFO]: Bukkit:  git-Paper-393 (MC: 1.16.4)
[01:43:45 INFO]: WG: 7.0.4+f7ff984

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
2 minuty temu, shaqupl1 napisał:

[01:43:45 INFO]: ProtectionStones: 2.7.7
[01:43:45 INFO]: Developers: [EspiDev]
[01:43:45 INFO]: Bukkit:  git-Paper-393 (MC: 1.16.4)
[01:43:45 INFO]: WG: 7.0.4+f7ff984

Czyli używasz najnowszej.

Sprawdzałeś czy aby przypadkiem nie należy ustawić czegoś, co teleportuje gracza przy zablokowaniu go w regionie?

Jeżeli jesteś pewien, że nie ma nic takiego, możesz wejść na ich Discorda i zapytać jak rozwiązać ten problem (link na stronie pluginu).

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

Fajnie i bardzo praktyczne. Chodzisz po mapie i sprawdzasz wszystkie flagi.

fES21t.png

Cytat

właściciel działki może zmieniać kilka flag takich jak pvp czy entry

/lp user user|group permission set worldguard.region.flag.flags.entry false #?

/lp user St4sPro permission set worldguard.region.flag.flags.pvp false #?

Pytanie czemu może?

Edytowane przez luk4sMC
Odnośnik do komentarza
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.

 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

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