Xyntegi_ok 2 Opublikowano 2 sierpnia 2024 Udostępnij Opublikowano 2 sierpnia 2024 da rade zrobić skrypt który na terenie np. "kowadla" co 10 minut te kowadła sie regenerowały? Odnośnik do komentarza https://skript.pl/temat/57995-stawianie-blokow-na-danym-terenie/ Udostępnij na innych stronach Więcej opcji udostępniania...
0 Saanjuk 50 Opublikowano 4 sierpnia 2024 Udostępnij Opublikowano 4 sierpnia 2024 da się kwestia tylko czy cały region "kowadła" ma być wypełniony kowadłami? Odnośnik do komentarza https://skript.pl/temat/57995-stawianie-blokow-na-danym-terenie/#findComment-344494 Udostępnij na innych stronach Więcej opcji udostępniania...
0 CoFFeIN04 696 Opublikowano 5 sierpnia 2024 Udostępnij Opublikowano 5 sierpnia 2024 every 10 minutes: set all blocks in region "kowadla" to anvil Odnośnik do komentarza https://skript.pl/temat/57995-stawianie-blokow-na-danym-terenie/#findComment-344538 Udostępnij na innych stronach Więcej opcji udostępniania...
0 PolsatGraniePL 124 Opublikowano 5 sierpnia 2024 Udostępnij Opublikowano 5 sierpnia 2024 Jestem zawiedziony poziomem interpretacji w postach skryptowiczów powyżej. Użytkownik jasno stwierdza, że potrzebuje skryptu na regenerację kowadeł w danym regionie. Zarys skryptu, który opublikował @CoFFeIN04 jest okej, jednakże zamienia on wszystkie bloki na kowadła, zamiast kowadła na kowadła. Jeszcze bardziej zagłębiając się w sens pierworodnego posta można domyślić się, iż użytkownikowi bardziej przydał by się na skrypt na niezniszczalne kowadła niż na regenerację ich co przykładowe 10 minut. Opcja z regeneracją kowadeł: every 10 minutes: set {_anvils::*} to all blocks in region "kowadla" where [block input is an anvil] loop {_anvils::*}: set block at loop-value to an anvil Domysłowe lepsze rozwiązanie z ich niezniszczalnością (Niestety ta wersja anuluje zniszczenie wszystkich kowadeł, nawet tych poza regionem): on anvil damage: cancel event Odnośnik do komentarza https://skript.pl/temat/57995-stawianie-blokow-na-danym-terenie/#findComment-344541 Udostępnij na innych stronach Więcej opcji udostępniania...
0 CoFFeIN04 696 Opublikowano 6 sierpnia 2024 Udostępnij Opublikowano 6 sierpnia 2024 Muszę sprostować moją wypowiedź: tyczy się ona regionu, w którym kowadła są ustawione w wielki stos w prostopadłościanie. Taką wizję tego regionu "kowadla" przyjąłem po przeczytaniu posta. 11 godzin temu, CoFFeIN04 napisał: every 10 minutes: set all blocks in region "kowadla" to anvil Jeśli jest jednak trochę inaczej - jedną z opcji może być: on rightclick on anvil: region at location of clicked block = "kowadla" cancel event open anvil inventory to player lub on rightclick on anvil: region at location of clicked block = "kowadla" set event-block to anvil PolsatGraniePL 1 Odnośnik do komentarza https://skript.pl/temat/57995-stawianie-blokow-na-danym-terenie/#findComment-344543 Udostępnij na innych stronach Więcej opcji udostępniania...
0 Xyntegi_ok 2 Opublikowano 6 sierpnia 2024 Autor Udostępnij Opublikowano 6 sierpnia 2024 temat do zamknięcia, dzieki za pomoc Odnośnik do komentarza https://skript.pl/temat/57995-stawianie-blokow-na-danym-terenie/#findComment-344557 Udostępnij na innych stronach Więcej opcji udostępniania...
0 Kormic 1951 Opublikowano 7 sierpnia 2024 Udostępnij Opublikowano 7 sierpnia 2024 @CoFFeIN04 @polsatgraniepl @Xyntegi_ok Zanim zamknę temat, chciałbym powiedzieć, że wszystkie powyższe kody nie działają na wersji 1.21 z najnowszą wersją Skripta i WorldGuarda, ponieważ: Skript nie jest w stanie zrozumieć tekstu jako regionu (to znaczy, pobrać regionu na podstawie jego nazwy), porównywanie obiektu regionu z tekstem nigdy nie zadziała, co jest bezpośrednio powiązane z tym co napisałem wyżej. Jak można więc pobrać region na podstawie nazwy? Cóż, jedyny działający sposób w czystym Skript'cie to użycie wyrażenia '%text% parsed as %*type%'. Przykład poniżej. set {_region} to "kowadla" parsed as region Dzięki powyższej linijce uzyskujemy region na podstawie jego nazwy. Należy jednak uważać, ponieważ nie zadziała on dla regionów dzielących tę samą nazwę, ale istniejących w różnych światach (WorldGuard dopuszcza tworzenie takich regionów). Po otrzymaniu obiektu reprezentującego region reszta kodu regenerującego uszkodzone kowadła staje się trywialna. every 10 seconds: set {_region} to "kowadla" parsed as region set (blocks in region {_region} where [input is any anvil]) to anvil Wspomnę jeszcze tylko o tym, że choć wedle dokumentacji słowo 'region' w składni wyrażenia 'blocks in %region%' jest opcjonalne, ze względu na kolizję składni musi ono się tam znaleźć. Finalnie, jeszcze mam trzy uwagi- jedną do Coffeina i dwie do polsatgranie. @CoFFeIN04: otwieranie GUI kowadła poprzez Skripta co prawda zadziała, ale takie GUI jest bezużyteczne, ponieważ nic nie da się w nim zrobić. Warto tu powiedzieć, że jest to problem związany z Bukkit API, a nie z samym Skriptem. Aby uporać się z tym problemem, należy wykorzystać albo wysyłanie pakietów, albo pakiet NMS. Można się tutaj posłużyć biblioteką AnvilGUI, która zdecydowanie ułatwia te zadanie. @polsatgraniepl: Alias 'an anvil' obejmuje jedynie nieuszkodzone kowadło. Aby skrypt obsługiwał kowadła w dowolnym stanie, należy użyć aliasu 'any anvil'. Zalecam nie podawać typu przy wyrażeniu 'input', ponieważ czasem powoduje to brak działania filtru. Przynajmniej tak było w wersji Skripta 2.9.0, nie miałem okazji przetestować tego w wersji 2.9.1. W dniu 6.08.2024 o 00:12, polsatgraniepl napisał: Domysłowe lepsze rozwiązanie z ich niezniszczalnością (Niestety ta wersja anuluje zniszczenie wszystkich kowadeł, nawet tych poza regionem): on anvil damage: cancel event Zdarzenie 'anvil damage' jest jednym z tych zdarzeń, których użyteczność jest niemalże bliska zerowej, ponieważ (najprawdopodobniej) nie posiada jakichkolwiek wartości możliwych do pobrania związanych ze zdarzeniem, co jest następstwem wpakowania go do klasy SimpleEvents, która "przechowuje" dziesiątki innych takich mało użytecznych zdarzeń. Pozdrawiam. CoFFeIN04 1 Odnośnik do komentarza https://skript.pl/temat/57995-stawianie-blokow-na-danym-terenie/#findComment-344580 Udostępnij na innych stronach Więcej opcji udostępniania...
0 PolsatGraniePL 124 Opublikowano 7 sierpnia 2024 Udostępnij Opublikowano 7 sierpnia 2024 32 minuty temu, Kormic napisał: że wszystkie powyższe kody nie działają na wersji 1.21 z najnowszą wersją Skripta i WorldGuarda Dementuje. Swoje kody testowałem na wersji purpur-1.21-2275, Skript-2.9.1 oraz worldguard-bukkit-7.0.11-beta1-dist wraz z worldedit-bukkit-7.3.5. Kod działał oraz nie zwracał żadnego błędu. Kormic 1 Odnośnik do komentarza https://skript.pl/temat/57995-stawianie-blokow-na-danym-terenie/#findComment-344586 Udostępnij na innych stronach Więcej opcji udostępniania...
0 Kormic 1951 Opublikowano 7 sierpnia 2024 Udostępnij Opublikowano 7 sierpnia 2024 1 godzinę temu, polsatgraniepl napisał: Dementuje. Swoje kody testowałem na wersji purpur-1.21-2275, Skript-2.9.1 oraz worldguard-bukkit-7.0.11-beta1-dist wraz z worldedit-bukkit-7.3.5. Kod działał oraz nie zwracał żadnego błędu. Faktycznie, zwracam honor. Wyrażenie zwraca listę bloków i je ustawia. Niemniej jednak, moja uwaga co do 'an anvil' nadal jest słuszna, ponieważ skrypt podmienia jedynie nieuszkodzone kowadła, więc nie ma mowy o regeneracji. Wątpię aby silnik miał wpływ na to, bo aliasy są zdefiniowane w samym Skript'cie. Mogę tutaj tylko powiedzieć, że mój serwer postawiony na localhost'cie jest oparty o silnik Paper 1.21-111. a wymienione wtyczki mają dokładnie te same wersje co Twoje. Przetestowałem również kod Coffeina i warunek porównujący region z tekstem działa, więc musiałem najprawdopodobniej zapomnieć o usunięciu drugiego takiego samego regionu w innym świecie (choć byłem święcie przekonany, że go usunąłem). Ewentualnie doznałem jakiegoś bardzo rzadkiego błędu ze strony Skripta. Nadal jednak oba kody Coffeina borykają się z błędami, o których wspominałem wyżej i wymienię je ponownie: otwieranie niefunkcjonalnego GUI kowadła i działanie naprawiającego skryptu jedynie po kliknięciu na nieuszkodzone kowadło. Aby on działał, należałoby wykorzystać zdarzenie 'on rightclick on any anvil'. Przepraszam za zamieszanie i pozdrawiam. Odnośnik do komentarza https://skript.pl/temat/57995-stawianie-blokow-na-danym-terenie/#findComment-344589 Udostępnij na innych stronach Więcej opcji udostępniania...
0 Kormic 1951 Opublikowano 8 sierpnia 2024 Udostępnij Opublikowano 8 sierpnia 2024 Zlecenie zostało wykonane. Odnośnik do komentarza https://skript.pl/temat/57995-stawianie-blokow-na-danym-terenie/#findComment-344601 Udostępnij na innych stronach Więcej opcji udostępniania...
Pytanie
Xyntegi_ok 2
da rade zrobić skrypt który na terenie np. "kowadla" co 10 minut te kowadła sie regenerowały?
Odnośnik do komentarza
https://skript.pl/temat/57995-stawianie-blokow-na-danym-terenie/Udostępnij na innych stronach
9 odpowiedzi na to pytanie
Rekomendowane odpowiedzi