-
Ilość zawartości
11012 -
Rejestracja
-
Ostatnia wizyta
-
Wygrane w rankingu
230
Treść opublikowana przez Kormic
-
Jeżeli na serwerze nie występuje wiele golemów, poniższa komenda powinna wystarczyć. Proszę ją dodać do wyżej wysłanego przeze mnie kodu. command /killboss [<text>]: permission: server.command.killboss permission message: &6Nie posiadasz wystarczających uprawnień do wykonania tej komendy. trigger: kill all golems where [name of entity input contains "{@golemBoss.name}"] Pozdrawiam.
-
Ach tak, moje niedopatrzenie. Zapomniałem, że zmieniłem nazwę opcji. Proszę podmienić skrypt na poniższy. options: golemBoss: coords: -50, -34, -50 world: world health: 5000 name: &c&lBOSS command /rboss: permission: op trigger: set {_location} to location {@golemBoss.coords} in world "{@golemBoss.world}" spawn iron golem at {_location}: set max health of golem to {@golemBoss.health} heal golem set name of golem to "{@golemBoss.name}" send title "" with subtitle "" to all players for 5 seconds wait second broadcast "" on damage: name of victim contains "{@golemBoss.name}" set name of victim to "{@golemBoss.name} &6%health of victim%/{@golemBoss.health}" on death: name of victim contains "{@golemBoss.name}" attacker is a player execute attacker command "tuwpiszswojakomendenadaniesvipa" send "&a%attacker% zabił bossa!" to all players Możliwe, że linijka z leczeniem golema będzie zbędna, gdyż ustawienie jego maksymalnej ilości punktów życia przy przywoływaniu już samo w sobie go leczy w 100%. Tu też moje niedopatrzenie - nie zauważyłem, że ustawia Pani ilość punktów życia golema, a nie ich maksymalną ilość. To już poprawiłem w kodzie wyżej. Proszę ustawić ilość punktów życia golema w opcjach na przykładowo 5000 i sprawdzić czy działa. Jeśli nie, oznacza to, że najprawdopodobniej doświadczyła Pani limitu punktów życia jaką mogą posiadać wszystkie byty w grze. Jeśli mnie pamięć nie myli, można tę wartość zmienić w pliku spigot.yml. Innym rozwiązaniem jest przemnożenie zadawanych obrażeń golemowi przez (maksymalna dopuszczalna ilość punktów życia na serwerze w pliku spigot.yml) / (żądana maksymalna ilość punktów życia golema), dzięki czemu graczom będzie wydawało się, że golem faktycznie ma tyle punktów życia. Przykład poniżej. on damage: name of victim contains "{@golemBoss.name}" set damage to damage * (2048 / {@golemBoss.health}) set name of victim to "{@golemBoss.name} &6%health of victim%/{@golemBoss.health}" 2048 to przykładowa maksymalna ilość punktów życia dopuszczalna z pliku spigot.yml. Pozdrawiam.
-
Jeżeli korzysta Pan z wersji Skripta 2.9, a serwer jest postawiony na wersji 1.20.5 lub nowszej, można skorzystać z tego efektu. Przykład poniżej. command /hidetooltip [<text>]: executable by: players trigger: player's tool is not air hide entire tooltip of player's tool # Lub: hide additional tooltip of player's tool Na starszych wersjach najlepiej jest posiłkować się dodatkiem skript-reflect. import: org.bukkit.inventory.ItemFlag # [...] set {_item} to player's tool set {_meta} to {_item}.getItemMeta() {_meta}.addItemFlags(ItemFlag.HIDE_ENCHANTS) {_item}.setItemMeta({_meta}) set player's tool to {_item} Pozdrawiam.
-
Napiszę gotowe rozwiązanie, tak będzie prościej. options: golemBoss: coords: -50, -34, -50 world: world health: 5000 name: &c&lBOSS command /rboss: permission: op trigger: set {_location} to location {@golemBoss.coords} in world "{@golemBoss.world}" spawn iron golem at {_location}: set health of golem to {@golemBoss.hpboss} set name of golem to "{@golemBoss.name}" send title "" with subtitle "" to all players for 5 seconds wait second broadcast "" on damage: name of victim contains "{@golemBoss.name}" set name of victim to "&c&lBOSS &6%health of victim%/{@golemBoss.health}" on death: name of victim contains "{@golemBoss.name}" attacker is a player execute attacker command "tuwpiszswojakomendenadaniesvipa" send "&a%attacker% zabił bossa!" to all players Błędem było użycie nieistniejącej opcji '{@hpboss}'. Prawidłową nazwa w przypadku Pani kodu byłaby '{@golemLocation.hpboss}'. Ponadto, kod ustawiający punkty zdrowia golema nie był przypisany do sekcji przywołującej go - kwestia źle zrobionego wcięcia w kodzie. Poprawiłem kod tak, aby wykorzystywał wszystkie opcje z sekcji 'options', ponieważ u Pani część z nich była nieużywana. Pozdrawiam.
-
Zgadza się. Wiele serwerów w celu zachowania starych mechanik PVP korzysta z wtyczki OldCombatMechanics. Też prawda, ale częściowa. Nowsze wersje Minecrafta mają mniejszy potencjał w utrzymaniu dużej ilości graczy jednocześnie na serwerze, ale wersja 1.12.2 też się nada. Generalnie, wszystko przed wersją 1.13 jest względnie przyjemne dla serwera. Prawda częściowa, bo najnowsze wersje zaczęły iść w dobrą stronę i wiele rzeczy działa o wiele wydajniej w porównaniu do starszych wersji. Trzeba pamiętać, że sama wersja serwera to nie wszystko. Nawet na nowszych wersjach można utrzymać kilkuset graczy, wymaga to po prostu porządnej konfiguracji serwera i pluginów oraz dobrej maszyny. Można mieć serwer na 1.8, który i tak będzie gniotem. Łączenie anticheatów generalnie kojarzy mi się ze starym, dobrym NoCheatPlusem. Odkładając wspominki na bok, Grim wykrywa jedynie rozbieżności w poruszaniu się względem własnej jego symulacji. Z tego co widzę, Polar posiada wszystko, więc nie ma potrzeby łączenia. Odnosząc się jeszcze do dołączania graczy na różnych wersjach, oczywiście wystarczy tu ViaVersion wraz z ViaBackwards i ViaRewind (dla wersji 1.7 i 1.8). Pozdrawiam. EDIT: Widzę, że mnie Helios uprzedził, ale to w sumie dobrze, bo odniósł się do sprawy bardziej szczegółowo. Warto czasem posłuchać mądrego.
-
Jak sam błąd mówi, opóźnienia nie mogą być używane w sekcji przywołującej moba. Tak więc jeśli wstawiła do niej Pani jakieś opóźnienie, proszę je usunąć. Jeśli jednak Pani nic nie zmieniała w kodzie, proszę podać: wersję Skripta, listę zainstalowanych dodatków do Skripta wraz z ich wersjami, wersję serwera. Pozdrawiam.
-
Status Kliknięcia Button(Przycisku)
Kormic odpowiedział(a) na danielo535 pytanie w Pytania i problemy
Jak najbardziej można to sprawdzić, ale rozwiązanie jest zależne od wersji serwera lub Skripta, na której Pan działa. Dla wersji Skripta 2.5 i nowszych: Najprostszym rozwiązaniem będzie sprawdzenie obecnej mocy przycisku. Jeżeli jest ona równa 15, przycisk jest wciśnięty. Należy tutaj uważać na jeden szczególny przypadek - przycisk nie może być jakkolwiek zasilany, to on musi być źródłem zasilania. Jeżeli na przykład dźwignia będzie włączona i redstone od niej zostanie poprowadzony do tego przycisku, skrypt nie zadziała poprawnie. if redstone power of clicked block is 15: send "Przycisk jest wciśnięty." to player Istnieją jeszcze dwa rozwiązania. Wybór jednego z nich zależy od wersji serwera. Dla wersji serwera 1.13 i nowszych: Należy sprawdzić 'block data' bloku. if clicked block is dark oak button[facing:up;powered=true]: send "Przycisk jest wciśnięty." to player Powyższy kod sprawdza czy przycisk jest aktywnym przyciskiem wykonanym z ciemnego dębu zwróconym w górę. Prawdę mówiąc, nie mam pewności czy zdefiniowanie jedynie stanu 'powered' zadziałałoby, wymaga to przetestowania. Można również spróbować wyświetlić 'block data' bloku na czacie i zobaczyć co ono zawiera. Można też spróbować zapisać je do zmiennej i próbować jakoś modyfikować, nie wiem. Niestety w tym przypadku dokumentacja Skripta jest zbyt uboga i nie zagłębia się w ten temat, więc musi Pan to przetestować na własną rękę. Dla wersji serwera starszych niż 1.13: Tutaj trzeba skorzystać z 'data value' bloku, które jest de facto maską bitową, choć nie widać tego na pierwszy rzut oka. Niestety w Skript, ani w skript-reflect nie ma możliwości skorzystania z operatorów bitowych, a definiowanie ich na nowo nie ma sensu, więc można skorzystać z dodatku Bitshift. Czym jest maska bitowa? Najprościej jest ją zinterpretować jako pewną liczbę, która przechowuje w sobie kilka mniejszych liczb. W ten sposób Minecraft do wersji 1.12.2 przechowywał przeróżne informacje o bloku w postaci jednej liczby. W naszym przypadku chcemy sprawdzić czy 'data value' bloku zawiera liczbę '8', która oznacza, że przycisk (dla dźwigni również zadziała, dla innych przełączników prawdopodobnie też) został wciśnięty. Skoro już wiemy, że 'data value' jest maską bitową, możemy użyć koniunkcji bitowej (&), aby wydobyć z niej informację o tym czy blok jest uruchomiony, czy też nie. # 8 odpowiada 0x8 w systemie szesnastkowym, wpisanie samej liczby 8 również by zadziałało if ((data value of clicked block) & 0x8) > 0: send "Przycisk jest wciśnięty." to player No, to właściwie tyle. Mam nadzieję, że pomogłem. Pozdrawiam. -
Status Kliknięcia Button(Przycisku)
Kormic odpowiedział(a) na danielo535 pytanie w Pytania i problemy
Ten temat został przeniesiony. -
Ten temat został zamknięty.
-
Jak najbardziej. Z racji faktu, iż to jest zlecenie, podam od razu gotowy kod. command /rboss: permission: op trigger: set {_location} to location (100, 100, 100) in world "world" spawn iron golem at {_location}: set health of golem to {@hpboss} set name of golem to "&c&lBOSS" send title "&a%player% zrespił bossa" with subtitle "&6Na kordach %location of player%" to all players for 5 seconds wait second broadcast "&a%player% zrespił bossa na kordach (100, 100, 100)" Teraz wyjaśnię dlaczego kod wygląda tak, a nie inaczej. Pierwsza linijka wyzwalacza (trigger) jest opisana w dokumentacji Skripta. Każde przywołanie bytu możemy wykorzystać do otwarcia sekcji, która pozwala na wykonywanie operacji na tym bycie (możemy się odwoływać do bytu po jego typie lub po 'entity'). Dzięki takiemu zabiegowi unikamy korzystania ze "śliskiego" wyrażenia 'last spawned entity'. Wysyłanie 'title' zostało dodane w wersji 2.3, więc korzystanie z SkRayFall (wnioskuję po składni) jest w tym przypadku zbędne. Można pokusić się o ustawienie lokalizacji w opcji/opcjach (sekcja 'options'): options: golemLocation: coords: 100, 100, 100 world: world # [...] trigger: set {_location} to location {@golemLocation.coords} in world "{@golemLocation.world}" # [...] Pozdrawiam.
-
W samym Skript'cie nie jest to możliwe. Można co najwyżej nasłuchiwać do pakietów dzwięków, co jest możliwe do zrobienia w skript-reflect, jednak lepiej będzie skorzystać z istniejącego już pluginu: https://dev.bukkit.org/projects/stop-sounds. Co prawda plugin jest dość stary, ale korzysta on głównie z ProtocolLib, więc powinien być kompatybilny z wieloma wersjami. Pozdrawiam.
-
Przetestowałem kod Knugiego na serwerze Spigot 1.12.2 ze Skriptem 2.6.4, czyli najnowszym dostępnym dla wersji 1.12.2. command /test [<text>]: trigger: set {_x} to "stone" parsed as item send "%id of {_x}%" Powyższy kod powoduje wyświetlenie liczby '1' na czacie. Co więcej, wyrażenie 'damage value of %item%' również poprawnie działa, co sprawdziłem za pomocą poniższego kodu. command /test [<text>]: trigger: set {_x} to "andesite" parsed as item send "%id of {_x}%:%damage value of {_x}%" Na czacie wyświetla się wiadomość '1:5'. Zaznaczam, że używanie aliasów takich jak 'stone' i 'andesite' niczym nie różni się w działaniu od parse'owania ich jako przedmiot. Będąc ścisłym, w wersji 1.13 numeryczne ID zostały usunięte i zostały całkowicie zastąpione ich "słownymi" odpowiednikami. Cały ten proces został nazwany "The Flattening", o czym można przeczytać tutaj. Niemożliwym jest więc, aby na wersji nowszej niż 1.12 zadziałały ci numeryczne ID. W ramach weryfikacji wystarczy wejść na dowolną wersję 1.12 i 1.13. W ramach ciekawostki dodam, że wbudowana komenda '/give' przestała wspierać numeryczne ID już w wersji 1.8. Raczej nie, a przynajmniej nie słyszałem o czymś takim. Jeżeli nie jesteś w stanie użyć numerycznych ID, najprawdopodobniej będziesz musiał stworzyć własną tabelę lub listę z ID przedmiotów, aby móc je posortować w ten sam sposób. Pozdrawiam.
-
Skrypter na zlecenie - tworzenie skryptów do wtyczki Skript
Kormic opublikował(a) temat w Współpraca
Witam wszystkich czytających ten post. Jest on ofertą współpracy w formie tworzenia skryptów do wtyczki Skript (w grze Minecraft). Bez zbędnego gadania, pokrótce opiszę co oferuję i czego oczekuję. Stanowisko Jak wyżej, skrypter tworzący skrypty do wtyczki Skript. Przyjmuję oferty współpracy krótkotrwałej i długotrwałej. Portfolio i doświadczenie W mojej ocenie tworzenie portfolio w celu zareklamowania swoich usług na te stanowisko byłoby niedorzeczne, więc nie posiadam takowego. Moja działalność na forum jest odzwierciedleniem moich umiejętności, a jeśli osobom zainteresowanym to nie wystarcza, poniżej udostępniam linki do moich trzech upublicznionych skryptów: SkWand, SkCylinder, SkArmorEvent (projekt porzucony, ale i tak znalazł się w dziale promowanych skryptów). Zawsze staram się, aby pisane przeze mnie skrypty były w miarę możliwości najlepsze (optymalne), dlatego mogę zagwarantować ze swojej strony porządek w kodzie i ograniczenie obciążenia serwera. Innymi słowy, pisane przeze mnie skrypty są możliwie "lekkie". Posiadam również podstawową wiedzę o Javie, więc jeśli zlecenie tego wymaga, pisane przeze mnie skrypty mogą się "łączyć" z pluginami (o ile autor pluginu to umożliwił, mowa o API). Wynagrodzenie Nie będę tutaj załączał jakiejkolwiek tabelki z widełkami cenowymi, ponieważ nie ma to sensu. Zlecenie będę wyceniał na podstawie złożoności skryptu, a więc i czasu jaki na niego poświęcę. Rzecz jasna, pozostawiam zawsze zleceniodawcy pole do negocjacji. Akceptowane przeze mnie metody płatności to BLIK i PayPal. Jeżeli chodzi o samą formę płatności, nie wykonuję zleceń bez zaliczki (jej kwota również podlega negocjacjom). Muszę mieć w końcu jakąś formę zabezpieczenia na wypadek ewentualnej próby oszustwa ze strony klienta. Również jest to dla mnie zrozumiałe, że wymaganie 100% wynagrodzenia z góry wymaga ogromnego kredytu zaufania, stąd ta próba odnalezienia złotego środka. Sprawy dodatkowe Na samym początku tego fragmentu chciałbym zaznaczyć, że poniższe możliwości współpracy również będą wyceniane. Ze względu na moje niewystarczające doświadczenie w niżej opisanych dziedzinach, ceny będą oczywiście odpowiednio niższe. Tworzenie wtyczek (pluginów) do gry Minecraft Tak jak napisałem, mam podstawową wiedzę o Javie. Ponadto, napisałem łącznie kilkanaście prostych wtyczek serwerowych na własny użytek. Niemniej jednak, nie posiadam na tyle dużej wprawy, aby oferować usługę tworzenia ich. Gdyby jednak ktoś nalegał, mogę napisać wtyczkę, ale w takiej sytuacji wymagam wyrozumiałości, ponieważ ostatni raz wtyczkę do Minecrafta napisałem ponad 3 lata temu. Konfigurowanie pluginów i zarządzanie serwerem (w skrócie: technik serwerowy) Konfigurowanie większości pluginów to dla mnie pestka. Jeśli będzie trzeba, wesprę dobrą radą. Co do samego zarządzania serwerem (bycia technikiem serwerowym), sytuacja jest podobna do tej z tworzeniem wtyczek (pluginów). Wiedzę posiadam, ale nie na tyle dostateczną, abym mógł zaoferować profesjonalną pomoc w tej dziedzinie. Dlatego też będę pomagał jedynie w szczególnych przypadkach. Kontakt Zgłoszenia zleceń przyjmuję w forumowych wiadomościach prywatnych i na Discordzie. Przy wysyłaniu zlecenia oczekuję szczegółowego opisu żądanego działania skryptu. Pozwala to na zaoszczędzenie mojego i Waszego czasu. Discord: kormic9057. Dziękuję za przeczytanie i zapraszam zainteresowanych do kontaktu za pomocą wyżej wymienionych metod. Pozdrawiam. -
Nie ma tutaj potrzeby tworzenia zmiennej globalnej, trzeba szanować miejsce w pliku variables.csv (o ile autor pytania nie korzysta z bazy danych). Ja pokażę jak można to zrobić w ogóle bez zmiennych, choć skorzystanie ze zmiennej lokalnej byłoby tak samo poprawne. command /x [<text>]: trigger: give player diamond sword of sharpness 1 named "&6Bardzo ostry miecz" set lore of player's tool to "Aktualna ostrość: 1" on death of player: if: name of attacker's tool is "&6Bardzo ostry miecz" level of sharpness of attacker's tool != 15 then: add 1 to level of sharpness of attacker's tool set lore of attacker's tool to "Aktualna ostrość: %level of sharpness of attacker's tool%" Pozdrawiam.
-
Problem został rozwiązany.
-
Szukałem chwilę i nie znalazłem takiego pluginu dodającego GUI do PS (ProtectionStones). Zakładam więc, że twórcy tego serwera napisali prosty plugin podłączający się do ProtectionStones API, który wykonuje odpowiednie akcje (na przykład usuwa działkę). Czym jest API? Najprościej będzie je określić w tym przypadku jako zbiór "narzędzi" udostępnionych dla programistów przez twórcę PS, dzięki którym twórcy innych pluginów mogą łatwo dodawać do niego nowe funkcje. Plugin sam w sobie wiązałby się z utworzeniem jednego GUI i skorzystaniem z ProtectionStones API, a więc dla chcącego nic trudnego. Samo zlecenie myślę, że byłoby warte kilkadziesiąt złotych (widełek nie podam, gdyż każdy w inny sposób wycenia swoje usługi). Od razu mówię, że ja pluginów nie tworzę. W dziale "Współpraca" może Pan znaleźć kilkanaście ofert tworzenia pluginów. Co prawda napisanie tego pluginu nie wymaga specjalistycznej wiedzy, ale mimo wszystko warto znaleźć jakiegoś zleceniobiorcę godnego zaufania. Pozdrawiam.
-
Zlecenie zostało wykonane.
-
Ten temat został przeniesiony.
-
Ten temat został przeniesiony do kosza!
-
Powyższa komenda nie zadziała, ponieważ jej zapis sugeruje próbę poszukiwania gracza, który posiada w ekwipunku tylko 5 mikstur siły zebranych w jednym slocie. Oczywiście jest to niemożliwe, ponieważ mikstury w Minecraft'cie nie mogą się stackować. Pytanie nawet nie dotyczy Skripta, ale zostało zadane w tym dziale, więc podpowiem jak właśnie za pomocą Skripta można się z tym uporać. Wystarczy zapętlić przedmioty w ekwipunkach wszystkich graczy, aby policzyć ile każdy z graczy posiada mikstur siły. Jeśli jest ich co najmniej 5, można wymusić na graczu wykonanie komendy. Pomocne linki do dokumentacji: lista przedmiotów w ekwipunku (można skorzystać z drugiego wzorca, aby pobrać tylko mikstury), wymuszenie na graczu wykonania komendy. W ramach sprawdzania samej mikstury podpowiem, że można sprawdzić czy zapętlany przedmiot jest nią w poniższy sposób: if loop-item is a potion of strength: # [...] Należy pamiętać, że mikstury o wydłużonym czasie działania i drugiego tieru są postrzegane jako inne przedmioty: if loop-item is a potion of extended strength: if loop-item is a potion of level 2 strength: Pozdrawiam.
-
Ten temat został przeniesiony.
-
Problem został rozwiązany.
-
Co prawda dodatek nie wspiera wersji 1.20.1, ale wspiera wersję 1.19.4, więc uznałem, że warto spróbować. Jeżeli pomimo poprawnej instalacji (do której notabene opis krok po kroku znajduje się na stronie dodatku) Skungee sypie błędami w konsoli lub w ogóle nie funkcjonuje, najprawdopodobniej nie będzie działał. Inna opcja jaką jeszcze widzę to dodatek ZulfBungee, który oferuje wsparcie dla wersji 1.20.x. Dodatek ten oferuje zmodyfikowaną wersję efektu 'broadcast'. W ostateczności sugeruję skorzystać z istniejących już pluginów, które pozwalają na wysyłanie wiadomości w obrębie całej sieci. Pozdrawiam.
-
Problem został rozwiązany.
-
Ten temat został przeniesiony.
