Ranking
Popularna zawartość
Treść z najwyższą reputacją w 11/28/20 w Odpowiedzi
-
SkArmorEvent - event zakładania i zdejmowania zbroi w Skript
knugi oraz jeden pozostały przyznał(a) reputację Kormic za temat
SkArmorEvent Witam serdecznie wszystkich skrypterów, chciałbym wam zaprezentować już drugą moją publiczną pracę, czyli skrypt dodający dwa eventy - jeden wywołujący się przy zakładaniu zbroi, a drugi przy zdejmowaniu zbroi. Cechy: Możliwość nasłuchiwania do dwóch eventów: - przy zakładaniu zbroi - przy zdejmowaniu zbroi Dodatkowo: Możliwość anulowania (cancelowania) obu eventów w celu blokady zakładania/zdejmowania zbroi. W razie potrzeby można wywołać te eventy w dowolnym kodzie, omówię to w dalszej części postu. Wymagania: - Skript min. 2.5 (zalecany 2.5.3) - skript-reflect (zalecany 2.1.0) Użycie: W mojej ocenie nie ma tutaj nad czym się rozwodzić, więc przejdę do rzeczy. Tak jak napisałem wyżej, skrypt dodaje 2 eventy. Tutaj szybko dla niewtajemniczonych omówię co oznacza dana rzecz w składni: - [ ] oznacza opcjonalność - | oznacza lub - ( ) oznacza wybór jednego spośród kilku elementów Pierwszy to 'on skae armor equip'. Jego składnia wygląda następująco: sk(ae|ArmorEvent) armo[u]r (equip|wear) Drugi event natomiast to 'on skae armor unequip'. Składnia niemalże niczym się nie różni od pierwszego eventu poza przedrostkiem 'un'. sk(ae|ArmorEvent) armo[u]r un(equip|wear) Oczywiście przed dwoma eventami możemy tradycyjnie zastosować 'on', ale nie jest to obowiązkowe. on skae armour equip: # Twój dalszy kod # Lub: skae armour equip: # Twój dalszy kod Wartości do pobrania w evencie: W evencie do dyspozycji mamy dwie wartości: - pierwsza to 'player' (bądź event-player), reprezentuje gracza, który nałożył zbroję - druga to 'item' (bądź event-item), reprezentuje nałożony, bądź zdjęty element zbroi Przykłady użycia: # 1. on skae armour wear: if event-item's name is "&aDobry Helm": send "&aNałożyłeś dobry hełm!" to event-player # 2. skArmorEvent armor unequip: send "&aŚciągnąłeś &6%item%&a!" to player Anulowanie eventu: Event jak najbardziej można anulować za pomocą zwykłego 'cancel event'. Przykłady: # 1. on skae armor equip: cancel event send "&cNie możesz założyć zbroi!" # 2. on skArmorEvent armor unequip: cancel event send "&cNie możesz ściągnąć zbroi!" Wywoływanie eventu: Miałem powiedzieć kilka słów na temat wywoływania tych eventów w dowolnym kodzie, więc teraz to zrobię. Aby poprawnie wywołać event w naszym kodzie, musimy ustawić naszego gracza oraz element zbroi do listy. set {_l::player} to player set {_l::item} to event-item Następnie używamy linijki wywołującej event. call event (custom event "onArmorEquip" with {_l::*}) Tutaj ukazuje nam się "onArmorEquip" i jest to nazwa eventu 'on armor equip', której używamy przy wywoływaniu eventu. W przypadku eventu 'on armor unequip' będzie to "onArmorUnequip". Podsumowując, za pomocą tych 3 linijek możemy w naszym kodzie użyć te eventy kiedykolwiek chcemy. A kiedy może to się przydać? Cóż, tutaj podam przykład: Mamy prostą komendę ustawiającą hełm gracza na diamentowy hełmet. Skrypt domyślnie obsługuje jedynie ręczne nakładanie hełmu przez gracza, więc wtedy właśnie wywołujemy event "onArmorEquip", przekazując przy tym odpowiednie wartości. Komu może przydać się ten skrypt? - osobom, które mają postawiony serwer na silniku Spigot - jest dobrą alternatywą dla przebywania na starszych wersjach ze względu na SharpSK - zamiennik dla eventu 'on armor change' ze względu na dostępność dla serwerów postawionych na silniku PaperSpigot (oraz Tuinity) oraz ze względu na to, że ten event pozwala jedynie na przechwycenie nowo nałożonego elementu zbroi, nie zdejmowanego. Dodatkowo SkArmorEvent pozwala na anulowanie eventu, co w przypadku wcześniej wspomnianego skriptowego eventu jest niemożliwe. Pobieranie: https://code.skript.pl/aFdMxpEb - v. 1.0 https://code.skript.pl/p6ChYMtK - v. 1.1 https://code.skript.pl/UYZsuVif - v. 1.2 (1.9.4 - 1.13.1) https://code.skript.pl/41MK80It - v. 1.2 (1.13.2+) https://code.skript.pl/ynOMxBFf - v. 1.2.1 (1.9.4 - 1.13.1) https://code.skript.pl/12ck83eI - v. 1.2.1 (1.13.2+) Rozwiązywanie problemów: W razie znalezienia jakichkolwiek błędów w skrypcie (miejąc uprzednio na uwadze wymagania skryptu) prosiłbym o dokładne opisanie ich w sekcji komentarzy. Prosiłbym również o podanie wersji serwera, silnika serwera, wersji Skripta oraz listy dodatków do Skripta. Propozycje: Co prawda nie myślę nad dalszym rozwojem skryptu, aczkolwiek jeżeli ktoś zaproponuje coś ciekawego, przemyślę to Dziękuję bardzo za przeczytanie, życzę miłej zabawy ze skryptem.2 punkty -
Pierwszy plugin do gry Minecraft w IntelliJ.
alaneek_jestem przyznał(a) reputację Ixidi za temat
Witajcie Na internecie, jest wiele poradników o tym, jak rozpocząć swoją przygodę z pisaniem wtyczek do Minecrafta. Jednak zdecydowana większość pokazuje, jak robić to z pomocą IDE o nazwie Eclipse. Dzisiaj, pokażę jak robić to z pomocą innego programu, mianowicie IntelliJ. Zaczynajmy! Minecraft pierwotnie został napisany w języku programowania, który nazywa się Java. Silnik serwera tej gry, również napisany jest w tym języku i to właśnie Javy będziemy używali do tworzenia pluginów. Przed rozpoczęciem, należy jednak zapoznać się z podstawami tego języka, naprawdę, będzie Ci o wiele łatwiej Oto kilka kursów w języku polskim: https://javastart.pl/static/darmowy-kurs-java/ https://kobietydokodu.pl/kurs-javy/ Po zapoznaniu się z kursami i napisaniu kilku podstawowych programów, przejdźmy do części właściwej. 1) Instalacja JRE oraz JDK. Przed rozpoczęciem tworzenia czegokolwiek w Javie, musimy ją zainstalować. JRE (Java Runtime Environmen) to środowisko, które pozwala uruchamiać programy napisane w Javie. Pobieramy je tutaj: https://www.java.com/pl/download/ JDK (Java Development Kit) jest to pakiet, niezbędny do programowania w tym języku. Pobieramy je tutaj: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Po pobraniu, po prostu je instalujemy. Instalacja jest bardzo intuicyjna. Sprawdźmy teraz, czy wszystko zrobiliśmy dobrze. Uruchamiamy wiersz poleceń. (Win + R, a następnie wpisujemy cmd i klikamy Enter) W oknie, które się ukaże wpisujemy java. Jeśli dobrze zainstalowaliśmy JRE, powinniśmy ujrzeć coś takiego: Sprawdźmy teraz JDK. Wpisujemy javac. Widzimy coś takiego: Co teraz? Musimy dodać ścieżkę folderu \bin\ dla JDK do zmiennej środowiskowej Path. Jak to zrobić? Na początek, musimy skopiować ścieżkę folderu \bin\. Wchodzimy w Mój Komputer > Dysk C; > Program Files > Java > jdknumer_wersji > bin i kopiujemy ścieżkę: Teraz klikamy PPM na Mój Komputer > Właściwości > Zaawansowane Ustawienia Systemu > Zaawansowane > Zmienne Środowiskowe. Teraz musimy znaleźć zmienną Path. Następnie zaznaczamy ją i klikamy Edytuj. ( Uwaga! Przed jakąkolwiek zmianą radzę zapisać aktualną ścieżkę! ) Teraz, na końcu dopisujemy ; i wklejamy skopiowaną ścieżkę i klikamy Ok > Ok. Tutaj mały schemat: Teraz ponownie uruchamiamy wiersz poleceń i wpisujemy javac. Jeśli zobaczymy coś takiego, to zakończyliśmy instalacje JRE i JDK. 2) Instalacja i uruchomienie IntelliJ. Intellij pobieramy ze strony https://www.jetbrains.com/idea/. (Wybieramy wersje Community) Następnie instalujemy pobrany program, tutaj również instalacja jest bardzo intuicyjna. Po instalacji, przyszła pora na pierwsze uruchomienie. Uruchamiamy nasze IDE. W pierwszym okienku zaznaczamy Do not import settings i klikamy OK. Następnie według własnego upodobania, wybieramy UI, ciemne lub jasne. Ja wybiorę ciemne. Teraz wystarczy kliknąć Next i Start using IntelliJ IDEA. Ukaże nam się takie okno: Brawo! Przejdźmy do następnej części. 3) Tworzenie projektu. Klikamy Create New Project. W następnym okienku wybieramy Java. Teraz musimy wskazać programowi SDK. Klikamy New i podajemy ścieżkę do katalogu z JDK. (C:\Program Files\Java\jdknumer_wersji\) Klikamy dwa razy Next. Teraz wpisujemy nazwę naszego projektu i podajemy ścieżkę, gdzie zostanie zapisany. Ja swój projekt nazwę Poradnik. Klikamy Finish. Ujrzymy takie oto okno. Po lewej stronie znajduje się source tree. To właśnie tu będziemy tworzyć wszystkie pliki. Teraz musimy dodać bibliotekę, będzie nią spigot. Pobieramy go stąd: https://yivesmirror.com/downloads/spigot Wybieramy wersję, pod którą będziemy pisali. Ja wybiorę 1.13.2. Teraz musimy dodać to do naszego projektu. Klikamy File > Project Structure i z menu po lewej stronie wybieramy Libraries. Następnie klikamy na zielony +, wybieramy Java, podajemy ścieżkę do naszej biblioteki i klikamy OK. Jeśli wszystko zrobiliśmy dobrze, będzie wyglądać to tak: Klikamy OK, następnie Apply i OK. Świetnie! Możemy teraz zacząć pisać 4) Pierwsza komenda. Na początek stwórzmy package. Jest to tak jakby połka, na której coś trzymamy - klasy. Każda ma unikalną nazwę. Stwórzmy go. Klikamy PPM na src, New > Package. Package nazywamy małymi literami w następujący sposób. Przypuśćmy, że posiadasz domenę example.com. Twój package będzie nazywał się com.example.poradnik. Jeśli nie posiadasz lub nie chcesz nazywać packagów domeną, nazwij go po prostu me.twojnick.poradnik. Ja posiadam domenę ixidi.pl, więc package nazwę pl.ixidi.poradnik. Wpisujemy nazwę swojego package i kliknij OK. Jak widzisz, w twoim source tree pojawił się nowy package Stwórzmy teraz klasę. Klikamy PPM na nasz package New > Class. Klasy z kolei nazywamy Wielką literą. Istnieją dwie szkoły nazywania głównych klas. Main NazwapluginuPlugin, w moim przypadku PoradnikPlugin Ja nazwę moją główną klasę, PoradnikPlugin. Wpisujemy nazwę, klikamy i OK. Wszystko powinno wyglądać tak: Rozszerzmy teraz naszą klasę główną, o klasę JavaPlugin. W tym celu public class PoradnikPlugin zmieniamy na public class PoradnikPlugin extends JavaPlugin Ale zaraz, czemu słowo JavaPlugin świeci się na czerwono? Znaczy to, że musimy zaimportować klasę JavaPlugin. W tym celu przechodzimy kursorem na czerwone słowo, klikamy LPM, a następnie używamy skrótu ALT + Enter i wybieramy Import class. Tak właśnie importuje się klasy. Skrót ten przydaje się też w wielu innych rzeczach, warto go zapamiętać Dodajmy teraz dwie metody (tak w Javie nazywamy funkcje), dziedziczone z klasy JavaPlugin - onEnable i onDisable. Jak sama nazwa mówi, wykonują kolejno podczas włączenia i wyłączenia pluginu. Zacznijmy pisać onEn i tutaj widzimy jedną z wielu zalet Intellij. Podpowiada nam o jaką metodę może nam chodzić. Wybierzmy public void onEnable() {...} i kliknijmy Enter. Tak samo zróbmy z onDisable. Teraz zróbmy coś wewnątrz metod. Wyślijmy np. wiadomości do konsoli. Służy do tego np. metoda info() klasy Logger. Wywołujemy ją w następujący sposób. this.getLogger().info("Wiadomosc"); Nasz kod powinien wyglądać tak: package twojpackage; import org.bukkit.plugin.java.JavaPlugin; public class PoradnikPlugin extends JavaPlugin { @Override public void onEnable() { this.getLogger().info("Wiadomosc przy wlaczeniu."); } @Override public void onDisable() { this.getLogger().info("Wiadomosc przy wylaczeniu."); } } Ale po co nam plugin, który tylko wysyła wiadomość do konsoli? Dodamy teraz komendę. Przejdźmy kursorem pod metodę onDisable, i zacznijmy pisać onCom. Jak widać, tutaj również nasze IDE pomaga. Metoda o którą nam chodzi to onCommand. Wybierzmy ją. Nasz kod wygląda tak: package twojpackage; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.plugin.java.JavaPlugin; public class PoradnikPlugin extends JavaPlugin { @Override public void onEnable() { this.getLogger().info("Wiadomosc przy wlaczeniu."); } @Override public void onDisable() { this.getLogger().info("Wiadomosc przy wylaczeniu."); } @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { return true; } } Tutaj widzimy, że po słowie public, zamiast void, występuje boolean. Znaczy to, że metoda musi zwracać wartość boolean. (Przybiera ona dwie wartości true lub false) Słowo, które zatrzymuje dalszą część metody to return. Jeśli metoda coś zwraca, po słowie return musi pojawić się zwracana wartość. Metoda onCommand zostanie wywołana gdy ktoś (nie ważne czy gracz, czy konsola) użyje komendy. Powiedzmy, że chcemy sprawdzić, czy wysyłający jest graczem czy konsolą i wysłać odpowiedni komunikat. Najpierw sprawdźmy, czy komenda, którą wpisał gracz, to właśnie ta o którą nam chodzi. Użyjmy do tego metody equalsIgnoreCase() klasy String. Porównuje ona dwa Stringi, bez względu na wielkość liter. Jako parametr, podajemy ciąg znaków (String), z którym chcemy porównać wartość. Nazwijmy więc naszą komendę sprawdz. Nazwę wpisanej komendy uzyskujemy przez command.getName() a więc kod który sprawdzi, czy wpisana komenda to sprawdz będzie wyglądał następujaca if (command.getName().equalsIgnoreCase("sprawdz")) { } Wiemy już że komenda się zgadza, sprawdźmy teraz czy wysyłający jest graczem. Służy do tego słówko instanceof. Aby więc sprawdzić czy wysyłający jest graczem używamy kodu: if (sender instanceof Player) { } Słówko Player świeci się na czerwono. Co musimy zrobić? Zaimportować, tak samo jak robiliśmy to z JavaPlugin. Wiemy już, że komenda się zgadza, a wysyłający jest graczem. Wyślijmy teraz wiadomość informującą. Do wysłania wiadomości służy metoda sendMessage(). Aby wysłać więc wiadomość użyjemy kodu: sender.sendMessage("Jestes graczem!"); Brawo! Chcemy jednak, że jeśli wysyłający jest konsolą, to wyśle się inna wiadomość. Zastosujemy tutaj else. Kod po else wykonuje się, jeśli warunek w if nie jest spełniony. Kod na wysłanie wiadomości do konsoli, wygląda tak samo. Musimy zmienić tylko treść. Nasz kod powinien wyglądać teraz tak: package twojpackage; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; public class PoradnikPlugin extends JavaPlugin { @Override public void onEnable() { this.getLogger().info("Wiadomosc przy wlaczeniu."); } @Override public void onDisable() { this.getLogger().info("Wiadomosc przy wylaczeniu."); } @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (command.getName().equalsIgnoreCase("sprawdz")) { if (sender instanceof Player) { sender.sendMessage("Jestes graczem!"); } else { sender.sendMessage("Jestes konsola!"); } } return true; } } Świetnie! Właśnie skończyliśmy pisać kod. Teraz stwórzmy plik plugin.yml. Zawiera on informacje potrzebne serwerowi przy ładowaniu pluginu. Kliknijmy PPM na nasz projekt (nie na src!) New > File i nazwijmy go plugin.yml. Klikamy OK. Plik plugin.yml musi zawierać trzy podstawowe informacje: Nazwę pluginu name Wersje pluginu version Ścieżkę do klasy main main Oprócz wymaganych informacji, może również zawierać informacje dodatkowe. Więcej o tym pliku tutaj: https://bukkit.gamepedia.com/Plugin_YAML/pl Tak więc mój plugin.yml powinien wyglądać tak: name: PoradnikPlugin version: 1.0 main: pl.ixidi.poradnik.PoradnikPlugin Z racji, iż stworzyliśmy komendę, musimy pokazać serwerowni przy ładowaniu pluginu, że takowa istnieje. Dodajemy więc następującą frazę: commands: sprawdz: description: "Plugin pokazujacy czy jestes graczem" aliases: [spr, spraw] permission: sprawdz.sprawdz permission-message: "Nie masz uprawnien!" Wymagana jest tylko część do słowa sprawdz. Dodałem tu jednak często używane elementy. Oznaczają one: description - Opis naszej komendy. aliases - Aliasy komendy, możemy ją wywołać przez wpisanie sprawdz, spr lub spraw. permission - Uprawnienie wymagane do użycia komendy. permission-message - Wiadomość, wysyłana jeśli nie posiada się uprawnienia. Nasz plugin.yml, source tree oraz PoradnikPlugin.java powinny wyglądać tak: 5) Kompilacja Możemy teraz przejść do czegoś, co wiele osób uważa w Intellij za trudne - kompilacji. Najprościej mówiąc jest to zamiana kodu źródłowego, na kod maszynowy. Aby to zrobić, klikamy File > Project Structure. Z menu po lewej stronie wybieramy Artifacts. Następnie klikamy na zielony +, JAR > From modules with dependencies. Wybieramy nasz projekt i klikamy OK. Teraz wybierzmy ścieżkę, gdzie zostanie zapisany nasz skompilowany plugin. Po niżej widzimy dwa okienka: W pierwszym od lewej, widzimy co będzie zawierał nasz skompilowany plik jar. W drugim znajdują się elementy, które możemy dodać. Na początek usuńmy z naszego jara bibliotekę spigota, jest on naszym serwerem, nie potrzebujemy go skompilowanego w projekcie. Klikamy na niego PPM > - Remove. Teraz musimy dodać do projektu nasz plik plugin.yml. Klikamy na zielony + > File i wybieramy nasz plik plugin.yml. Powinno wyglądać to tak: Następnie klikamy Apply i OK. Stworzyliśmy artefakt, teraz pozostaje tylko skompilować. Klikamy Build > Build Artifacts wybieramy nasz projekt i klikamy Build. Teraz musimy chwileczkę poczekać. Kiedy kompilacja dobiegnie końca, w lewym dolnym rogu zobaczymy taki oto napis: Brawo! Teraz wystarczy tylko wrzucić nasz skompilowany plik do katalogu plugins naszego serwera i sprawdzić działanie To by było na tyle, powodzenia1 punkt -
Witam! Chciałbym odwołać się od decyzji jednego z moderatorów, który stwierdził, że mój temat razi go w oczy. Zacznijmy od początku: Najpierw grono moderatorów i im głęboko wchodzących w intencje użytkowników pisało, że mam powiększyć obrazek, no oczywiście, powiększę, ale forum blokuje do max 800x1080 rozdzielczości. Oczywiście nie utrudniało to zobaczenia prezentacji, bo wystarczyło kliknąć w ten obrazek i się go dało powiększyć. Udało mi się jakoś zmienić rozmiar. Po zmianie obrazka moderator stwierdził, że prezentacja razi go w oczy podczas używania ciemnego stylu, a co mnie to w sumie obchodzi? Czy on będzie nakazywać mi tworzenia prezentacji na ciemnym tle? To chyba moja decyzja tak? Tak czy siak, jeżeli jest taki mądry niech dostosuje mi, aby grafika miała na przezroczystym tle przy ciemnym stylu, białe napisy oraz na jasnym motywie ciemne napisy. Jeżeli zrobi taki obrazek to podziwiam. Podał się potem, że jest w regulaminie, że obrazek musi być dostosowany do ciemnego stylu (głupota) i nie ma czegoś takiego w treści regulaminu (Ups @xNightPower_ nie zna jego podpunktów?). @Libter mam nadzieję, że jako jedyny uczciwy człowiek tego forum zrozumiesz moje zażenowanie tą sytuacją, bo po prostu jest ona dziwna? Jest to robienie z użytkowników posłusznych piesków, bo moderator ustala sobie nowe zasady? P.s podobno jeszcze jeden moderator tutaj kara za brak dostosowanego obrazka do ciemnego stylu. To teraz podsumowując, obrazek jest przystosowany, bo i na ciemnym i na jasnym tle go widać. I tu Cię mam! Używałem, używam i będę używać jasnego stylu i nikt nie ma prawa wywierać na mnie presji, abym przystosowywał coś specjalnie pod jego "widzi mi się". Dlatego drogi moderatorze, nie utrudniaj innym życia, kiedy masz gorsze dni. Jakoś nikomu ten temat nie przeszkadzał. Link do mojego tematu:1 punkt
-
Aby nie kolidowało z sharpsk najlepiej gdybyś dodał jakiś swój niewymagany prefix Ogólnie to spoko dodatek1 punkt
-
Proszę. on right click: player's tool's type is ender pearl "%region at player%" contains "spawn" cancel event1 punkt
-
Skrypt na sklep
Kormic przyznał(a) reputację Andromedos za pytanie
Dopiero co zaczynam, i za dużo nie umiem, ale dalej sobie poradzę. Dzięki za pomoc !1 punkt -
SkArmorEvent - event zakładania i zdejmowania zbroi w Skript
Misio12320 przyznał(a) reputację Kormic za temat
Drogi przyjacielu, prosiłbym uprzednio o przeczytanie tego co napisałem w poście (dokładniej fragment "Komu może przydać się ten skrypt?"). Inaczej to ujmę. Skrypt przyda się głównie osobom, które mają serwer postawiony na Spigot'cie.1 punkt -
Jaki ładny skrypt dodatek napracowałeś się to widać... byłoby szkoda gdyby ktoś... import: com.destroystokyo.paper.event.player.PlayerArmorChangeEvent PlayerArmorChangeEvent: broadcast "zmieniłeś zbroję"1 punkt
-
SkArmorEvent - event zakładania i zdejmowania zbroi w Skript
Kormic przyznał(a) reputację Misio12320 za temat
Bardzo przydatny, zrozumiały poradnik. Polecam tego Pana.1 punkt -
Zablokowanie stawiania bloku na terenie bez gildii
OneXakaGracu przyznał(a) reputację Kormic za pytanie
Używasz w tym celu wyrażenia 'guild at'. if guild at event-block's location is not set: # Twój kod wraz z anulowaniem eventu1 punkt -
Aktualizacja Nieznacznie poprawiłem oraz dopełniłem poradnik o eventy!1 punkt
-
Skript-mirror W tym poradniku przedstawię wam jak tworzyć własne efekty, wyrażenia i warunki za pomocą pięknego dodatku skript-mirror oraz jego forka skript-reflect Ogólny wzór składni [text] Opcjonalne (text) Wymagane text1|text2 albo %text% typ zmiennej np Składnia [(xAxee|Ax)] [the] (plugin|plg) (man|manager) (disable|off) (plugin|plg) %string% Moze jedynie zostać: plg man disable plg "Ticker" Albo: xAxee the plugin manager disable plugin "Ticker" Uwaga ! Jeżeli na początku damy local to dany efekt / wyrażenie / warunek będzie mógł być wykorzystany tylko w skrypcie w którym się znajduje ! ! Efekty / wyrażenia / warunki muszą być nad wykonywanym kodem lub w innym skrypcie ! ! Do podanych argumentów zwracamy się expr-<numer argumentu> ! ! Efekty / wyrażenia / warunki mają małą siłę i zostaną "pokonane" jeżeli jakiś dodatek posiada takie wyrażenie, dlatego dobrze gdy mają przedrostek ! Efekty (Effects) (Coś co wykonuje jakiś kod) dealy effect #Zatrzymuje kod w efekcie i dalszy kod w skrypcie continue #Wznawia zatrzymany kod Najpierw musimy zdefiniować składnie naszego wyrażenia [local] effect <składnia>: parse: #Opcjonalnie #kod (domyślne ustawiania zmiennyc) trigger: #Wymagane #kod np: effect [AxTops] (clear|reset) all [top] points: trigger: loop {points::*}: set {points::%loop-index%} to 0 Taki efekt możemy użyć np tak: command /pointsreset: permission: * trigger: reset all top points send "&7Zresetowanie" stop Warunki (condition) (Warunki wykorzystujemy w ifach) Również najpierw musimy zdefiniować wyrażenie [local] condition <składnia>: check: #wykonywany kod continue ! Continue dajemy wtedy gdy kod spełnił warunek i kod za ifem może się wykonać (czyli zwróci true) ! np: condition [AxTops] %player% can buy (for|with) %number%: check: if {points::%expr-1%} >= expr-2: continue Możemy to wykorzystać jako: command /kupmiecz [<text>]: trigger: if player can buy for 200: add diamond sword to player remove 200 from player's points send "poprawnie zakupiono!" stop send "Nie masz tyle punktow" Wyrażenia (expression) (Coś co zwraca wartość) Definiujemy [plural] [local] expression <składnia>: parse: #Opcjonalnie #kod... get: #Opcjonalnie #kod... return... add: #Opcjonalnie #kod... set: #Opcjonalnie #kod... remove: #Opcjonalnie #kod... remove all: #Opcjonalnie #kod... delete: #Opcjonalnie #kod... reset: #Opcjonalnie #kod... ! W return dajemy wartość którą ma zwrócić wyrażenie (tak jak w funkcji) ! ! Aby pobrać zmienianą wartość w set/add/remove należy wpisać change value ! ! Return type to typ zwracanej wartości ! ! przedrostek pluar określa zwracaną wartość jako pojedyńczą ! np: plural expression [AxTops] %player%['s] points: return type: number get: if {points::%expr-1%} is not set: return 0 return {points::%expr-1%} add: add change value to {points::%expr-1%} set: set {points::%expr-1%} to change value remove: remove change value from {points::%expr-1%} delete: delete {points::%expr-1%} reset: set {points::%expr-1%} to 0 Możemy to wykorzystać jako: command /points [<player>] [<text>] [<number>]: permission: * trigger: if arg 2 is "reset" or "clear": reset arg-1's points send "&7Zresetowanie" stop if arg 2 is "get": send "&7Gracz %arg 1% posiada &a%arg 1's points% &7punktow" stop if arg 3 is set: if arg 2 is "set": set AxTops arg 1's points to arg 3 send "&7Ustawiono punkty" if arg 2 is "add": add arg 3 to AxTops arg 1's points send "&7Dodano punkty" if arg 2 is "remove": remove arg 3 from AxTops arg 1's points send "&7Zabrano punkty" Wszystko razem Skript-reflect Jest to fork skript-mirrora który poprawia wiele rzeczy oraz dodaje np własne wydarzenia (eventy) Zdarzenia (Events) Definiujemy custom event "<nazwa>": pattern: <skladnia> event-values: <zmienne które można pobrać z eventu> check: #kod który wykona się przed wywołaniem eventu w skripcie continue ! Możemy stworzyć event który nie ma w sobie żadnych zmiennych, staczy że usuniemy event-values ! np: custom event "onPlayerBuy": pattern: buy event-values: player, number check: continue aby event zadziałał trzeba jeszcze go kiedyś wywoływać, od tego mamy efekt call event %event% Jednak musimy jeszcze jakoś pobrać event (jako typ) oraz podać mu argumenty które będzie można wykorzystać w evencie, od tego mamy expresje: new custom event %string% [using %objects%] aby podać zmienne które będziemy używać w evencie, musimy je najpierw zapisać do listy a potem podać w wyrażeniu Przykład z użyciem gracza oraz jakiejś liczby set {_list::player} to player set {_list::number} to arg-1 new custom event "onPlayerBuy" using {_list::*} No i brawo! Nasz event jest gotowy do nasłuchiwania Całość w przykładowej komendzie powinna wyglądać tak: #Rejestrujemy event custom event "onPlayerBuy": pattern: buy event-values: player, number check: continue command /kilof [<number>]: trigger: #jakis tam kod od kupowania #Podajemy argumenty oraz pobieramy event set {_list::player} to player set {_list::number} to arg-1 set {_event} to new custom event "onPlayerBuy" using {_list::*} #Wywołujemy event call event {_event} #Nasłuchujemy eventu on buy: send "&7Brawo! udalo ci sie cos kupic! za cene &6%event-number%" to event-player Dzięki za uwagę no i wszelkie błędy / pomysły proszę zgłaszać Pozdrawiam Aksik1 punkt
-
Problem z zapisywanie tabliczki
Misio12320 przyznał(a) reputację Kormic za pytanie
Mógłbyś pokazać w jaki sposób zmienia kolejność? Dzięki temu będzie łatwiej znaleźć problem.1 punkt -
Jeżeli już to prędzej dałbym ten efekt, syntax jest nieco bardziej rozbudowany, co pozwala na łatwiejsze zorientowanie się w tym. https://docs.skunity.com/syntax/search/file move1 punkt
-
Komendy w Skript
Misio12320 przyznał(a) reputację PanMaruda za temat
dobra teraz już rozumiem.... ale to nie powinno się tak dziać raczej - obstawiam że skoro już jest to w zmiennej to tylko ze zmiennej skript korzysta; matma może poczekać - idę to sprawdzić XD1 punkt -
Komendy w Skript
Misio12320 przyznał(a) reputację PanMaruda za temat
wszystkie cooldowny są resetowane po starcie serwera - właśnie w tym celu powstały te zmienne nie mam pojęcia - najprawdopodobniej go anuluje - ale jest też opcja że wywali błąd i coś się zbuguje - sprawdź i podziel się ze wszystkimi zdobytą wiedzą1 punkt -
Wyciąganie itemów z gui
Misio12320 przyznał(a) reputację Kormic za pytanie
Sam wiesz w czym leży problem. Dotyczy on kolejnego GUI, więc pokaż kod z tego nastęnego GUI. Dodam, że 'format slot' jest jednym z najgorszych sposobów na formatowanie GUI. O wiele lepiej jest użyć w tym celu natywnego Skripta.1 punkt -
Wyciąganie itemów z gui
Misio12320 przyznał(a) reputację PanMaruda za pytanie
użyj mojego skryptu mGUI1 punkt -
Skrypt na krzyk i odbieranie wiadomości na chacie, na wyznaczoną odległość
Misio12320 przyznał(a) reputację PanMaruda za pytanie
command /krzyk <text>: cooldown: 6 hours permission: permisja trigger: send "KRZYK %player%: %arg%" to (all players in world of player)1 punkt -
Blokada wyciągania przedmiotów z GUI
Misio12320 przyznał(a) reputację PanMaruda za pytanie
zapewne format slot - tak jak pisałem wyżej - zainteresuj się moim skrypte mGUI - wystarczy że podmienisz składnię w swoim skrypcie i będzie śmigać.1 punkt -
Blokada bezterminowa dla @BrixNW Naruszenie §3.2.3 regulaminu serwera poprzez zainicjowanie konfliktu ze szkodami o wielkich rozmiarach polegających na podpaleniu i wysadzeniu domu i magazynu gracza @Libter oraz dewastacji instalacji artystycznej "tęczowy most". Naruszenie §3.2.4 regulaminu serwera poprzez naruszenie §2.1.2.1 regulaminu forum na Discordzie i w systemie wniosków.0 punktów
-
Najwięcej postów w tygodniu
-
Najwięcej tematów w tygodniu
-
Aktywni użytkownicy
-
1
-
2
-
