Ranking
Popularna zawartość
Treść z najwyższą reputacją w 08/29/20 w Odpowiedzi
-
SkCylinder - skrypt na tworzenie okręgów, kół i walców
Misio12320 oraz jeden pozostały przyznał(a) reputację Kormic za temat
SkCylinder Witam Państwa, dzisiaj mam przyjemność zaprezentować mój pierwszy opublikowany w tej sekcji skrypt, a mianowicie skrypt na tworzenie okręgów, kół i walców. EDIT: Z pewnością niektórzy z Was mogą zauważyć pewne zmiany w tym artykule. Są one związane z aktualizacją owego skryptu do wersji 2.0, w której ograniczenia dla wersji 1.0 są już nieaktualne. Zanim zacznę - najważniejsza informacja. Każdy kto stwierdza a priori, że ten skrypt nie może się równać z pluginem WorldEdit, ma rację. Nie został on stworzony z myślą jakiejkolwiek konkurencji, gdyż wydajnościowo jest zdecydowanie słabszy. Nie neguję również możliwej wadliwości zastosowanych w nim rozwiązań. Jest to dzieło o podłożu czysto hobbystycznym, mające na celu chociażby pokazanie podstawowych zastosowań matematyki. Cechy: Możliwość tworzenia walców (cylindrów): - pełnych i pustych, - o określonym promieniu, - o określonej wysokości. Dodatkowo: Skrypt zawiera dwie funkcje służące do tworzenia okręgów i kół o zadanym promieniu. Więcej informacji w dalszej części artykułu. Wymagania: - Skript min. 2.2 Definicje funkcji w skrypcie: 1. skCylinder_drawCircle([...]) - funkcja tworząca okrąg. skCylinder_drawCircle(centerLoc: location, radius: number) Parametry funkcji: centerLoc - lokalizacja wyznaczająca środek okręgu (typ: location) radius - promień okręgu (typ: number) Typ zwracanej wartości: blocks (lista bloków potrzebna do utworzenia okręgu) 2. skCylinder_drawDisk([...]) - funkcja tworząca koło. skCylinder_drawDisk(centerLoc: location, radius: number) Parametry funkcji: centerLoc - lokalizacja wyznaczająca środek koła (typ: location) radius - promień koła (typ: number) Typ zwracanej wartości: blocks (lista bloków potrzebna do utworzenia koła) 3. skCylinder_drawCylinder([...]) - funkcja tworząca walec. skCylinder_drawCylinder(startLoc: location, radius: number, height: integer, filled: boolean) Parametry funkcji: startLoc - lokalizacja wyznaczająca środek górnej warstwy walca (typ: location) radius - promień walca (typ: number) height - wysokość walca (typ: number) filled - wartość logiczna (prawda/fałsz) określająca czy chcemy wypełniony walec (typ: boolean) Typ zwracanej wartości: blocks (lista bloków potrzebna do utworzenia walca) Uznałem, że dodawanie opisu funkcji skCylinder_squaredDistance([...]) jest zbędne, gdyż jest ona używana jedynie wewnątrz funkcji tworzącej koło. Jej istnienie jest uzasadnione faktem, iż przy tysiącach operacji na blokach dobrym rozwiązaniem jest uniknięcie obliczania pierwiastka kwadratowego. Zalecenia: Ważna informacja - udostępnione niżej przykładowe kody zawierają instrukcje dostępne w dodatku SkQuery (wersja min. 3.6.2-Lime) w celu zapewnienia możliwie wysokiej wydajności. Poniżej opiszę ich działanie. 1. $ thread - instrukcja pozwalająca na wykonanie następującej po niej linijki na innym wątku, co pozwala na uniknięcie generowania obciążenia na głównym wątku serwera. 2. @noupdate:: - instrukcja pozwalająca na ustawienie bloków bez aktualizowania stanu bloków dookoła (np. piasek zawieszony w powietrzu obok nie spadnie po utworzeniu danej struktury). Oczywiście można skryptu używać bez tego dodatku po usunięciu wyżej opisanych efektów. Proszę mieć jednak na względzie, że skrypt będzie obciążał serwer przy większych strukturach. Przykładowe zastosowania: Ze względu na to, że tworzenie wyżej wymienionych struktur odbywa się poprzez funkcję, to wystarczy ją wywołać podając przy tym odpowiednie argumenty, a następnie zwróconą listę bloków użyć do utworzenia danej struktury. Przykład z walcem wypełnionym, bądź nie (w zależności od wartości argumentu nr 3): command /cylinder <number> <integer> [<boolean=false>] [<item = yellow wool>]: executable by: players trigger: $ thread set {_blocks::*} to skCylinder_drawCylinder(location of block at player, arg-1, arg-2, arg-3) set blocks in {_blocks::*} to arg-4 with no update # Komenda bez użycia składni dodatku SkQuery (niezalecane): command /cylinder <number> <integer> [<boolean=false>] [<item = yellow wool>]: executable by: players trigger: set {_blocks::*} to skCylinder_drawCylinder(location of block at player, arg-1, arg-2, arg-3) set blocks in {_blocks::*} to arg-4 Przykład z okręgiem i kołem: command /circle <number> [<boolean=false>] [<item = yellow wool>]: executable by: players trigger: if arg-2 is true: $ thread set {_blocks::*} to skCylinder_drawDisk(location of block at player, arg-1) else: $ thread set {_blocks::*} to skCylinder_drawCircle(location of block at player, arg-1) set blocks in {_blocks::*} to arg-3 with no update # Komenda bez użycia składni dodatku SkQuery (niezalecane): command /circle <number> [<boolean=false>] [<item = yellow wool>]: executable by: players trigger: if arg-2 is true: set {_blocks::*} to skCylinder_drawDisk(location of block at player, arg-1) else: set {_blocks::*} to skCylinder_drawCircle(location of block at player, arg-1) set blocks in {_blocks::*} to arg-3 Końcowe informacje: 1. Co prawda funkcje akceptują promień jako liczbę niecałkowitą (ściślej mówiąc, nie należącą do zbioru liczb naturalnych), jednakże najlepszy efekt uzyskuje się dla wartości naturalnych. 2. Bardziej dociekliwi mogą zauważyć, że wprowadzona na sztywno w skrypcie wartość liczby pi jest niedokładna (pomijając fakt, iż jest liczbą niewymierną). Proszę się jednak nie martwić tym, gdyż wedle moich szacowań metodą "pi razy drzwi", błędy numeryczne powinny być fizycznie widoczne dopiero przy tworzeniu okręgu o promieniu rzędu tysięcy kratek. Zakładam, że nikt nie będzie używał SkCylinder do tego typu zastosowań. Jeśli jednak ktoś będzie miał taką potrzebę, mogą Państwo śmiało dopisać więcej cyfr znaczących. Pobieranie: https://code.skript.pl/OSlCMrpe - v. 1.0 https://code.skript.pl/jXtexOTY - v. 2.0 Rozwiązywanie problemów i składanie propozycji: W razie jakichś błędów czy też sugestii, jak ulepszyć skrypt, prosiłbym bardzo, aby dać mi znać o nich w komentarzach do tego artykułu. Postaram się możliwie szybko na nie odpowiedzieć. Dziękuję bardzo za przeczytanie artykułu, życzę miłych wrażeń z użytkowania skryptu. Czekam na wszelki odzew, czy to pozytywny, czy też krytyczny.2 punkty -
SkCylinder - skrypt na tworzenie okręgów, kół i walców
xAxee oraz jeden pozostały przyznał(a) reputację PanMaruda za temat
No dobra, skoro już temat na pw pociągnąłeś... zaokrąglanie współrzędnych jest tutaj naprawdę zbędne (jeszcze bym zrozumiał gdyby było wyrównane do środka bloku w którym gracz się znajduje) - przez zaokrąglanie do rogu bloku struktury mogą wyjść niesymetryczne co do generowania koła (pomijając sposób który ci wysłałem na pw) najlepiej byłoby to zrobić w taki sposób: mamy współrzędne środka, tworzymy sobie od niej dwie współrzędne przeciwległych boków kwadratu opisanego na kole o danym promieniu (czyli dla jednego dodajemy promień do X i Z środka, a dla drugiego odejmujemy) zapętlamy wszystkie bloki wewnątrz tego kwadratu sprawdzamy czy odległość pomiędzy środkiem, a blokiem z pętli jest mniejsza lub równa promieniowi jeżeli tak, dodajemy współrzędne bloku do listy ORAZ blok do drugiej listy robimy pętlę powtarzającą się wysokość-razy, a w niej kolejną pętlę z listą współrzędnych bloków dodajemy 1 do każdej współrzędnej Y z pętli i dodajemy blok na tych nowych współrzędnych do listy bloków po zakończeniu pętli, lista bloków będzie miała wszystkie bloki wypełnionego walca, ustawiamy je za pomocą efektu @noupdate::set (lista bloków) to (rodzaj bloku) wszystko powyższe robimy w funkcji, którą odpalamy w osobnym wątku - linijkę przed jej wywołaniem wpisujemy $ thread drawCylinder(coś tam) co do pustych w środku walców - wracamy do punkty trzeciego: sprawdzamy czy odległość pomiędzy środkiem, a blokiem z pętli ZAWIERA SIĘ POMIĘDZY PROMIENIEM A PROMIENIEM POMNIEJSZONYM O 1 pamiętaj żeby możliwie jak najbardziej ograniczać tworzenie zmiennych przy tak dużych pętlach zrób tak jak powyżej, a będziesz mógł usunąć te limity z posta2 punkty -
AxAutoUpdate - Skrypt ułatwiający automatyczną aktualizacje
Maksiu_Kozak przyznał(a) reputację xAxee za temat
AxAutoUpdate Cześć, chciałbym przedstawić skrypt do fajnego zarządzania aktualizacjami skryptów oraz ich automatycznego aktualizowania. Skrypt jest głównie przeznaczony dla osób które piszą skrypt i chcą aby ich skrypt automatycznie aktualizował się użytkownikom Działanie Skrypt co godzinę sprawdza czy wersje wszystkich zarejestrowanych skryptów są aktualne, jeżeli nie i aktualizowanie nie jest zablokowane, nowa wersja pobiera się sama. Jeżeli jednak aktualizowanie jest zablokowane to wysyła wiadomość do konsoli serwera i wszystkich operatorów. Aby skrypt wykrywał wersję skryptu trzeba gdzieś w kodzie umieścić jego wersje między #$ i $# np: #$ Version: 1.0 $# oraz wywołać np przy ładowaniu skryptu funkcje AxUpdate_register(nazwa, link, skrypt) z odpowiednimi argumentami np: on load: AxUpdate_register("AxUpdate", "https://code.skript.pl/0uFoPX6y/raw", script) Jeżeli chcesz dać użytkownikom wolną rękę aby nie musieli pobierać tego skryptu ale jeżeli pobiorą to wasz skrypt będzie się automatycznie aktualizował, starczy że ustawisz te zmienne na dane twojego skryptu przy ładowaniu set {AxUpdate::<nazwa>::link} to "<link>" set {AxUpdate::<nazwa>::status} to true set {AxUpdate::<nazwa>::name} to "<nazwa>" set {AxUpdate::<nazwa>} to script np: on load: set {AxUpdate::mHelix::link} to "https://code.skript.pl/yyY0eOdW/raw" set {AxUpdate::mHelix::status} to true set {AxUpdate::mHelix::name} to "mHelix" set {AxUpdate::mHelix} to script Wymagania - Skript min. 2.2 - SkUtilities Główna komenda update: Zamienniki: autoupdate Składnia: /update <list/unregister/update/on/off>* <name> list #Wyświetla wszystkie zarejestrowane skrypty oraz podaje różne informacje unregister <name> #Odrejestrowuje skrypt update <name> #Pobiera nowy albo resetuje kod skryptu on <name> #Włącza automatyczne pobieranie nowych wersji off <name> #Wyłącza automatycznie pobieranie nowych wersji Uprawnienia AutoUpdate #Uprawnienie do głównej komendy Środowisko Skript 2.2 SkUtilities 0.9.2 Serwer Spigot 1.8.8 Informacja Skrypt aktualizuje się automatycznie SS Przykłady Lista skryptów które mają wsparcie tego skryptu Zmiany i wydania 1.0 Napisanie i wydanie skryptu Wszelkie błędy / poprawki / pomysły proszę zgłaszać na pw albo pod tematem w odpowiedzi1 punkt -
mcMMOgui czyli innowacyjny, wydajny skrypt na przyjazny interfejs użytkownika z pluginem mcMMO Jeśli na swoim serwerze masz mcMMO, jeśli używają jego setki graczy, to na swoim serwerze powinienieś mieć swój nowy skrypt! Powstał on głównie dla graczy, w krótce - dla lepszego komfortu i orientacji w świecie mcMMO. Wszystko w jednym miejscu zostało przygotowane specjalnie po to, aby łatwiej zarządzać swoimi statystykami. Funkcje Skrypt umożliwia wiele możliwości na raz, i to w jednym miejscu - w przyjaznym graficznym interfejsie użytkownika - bardzo przyjazny podgląd swoich statystyk mcMMO - wiele informacji na temat swoich umiejętności - rankingi umiejętności, top 10 graczy z największym poziomem - bardzo obszerna konfiguracja skryptu w prosty sposób - skrypt napisany w języku angielskim Wymagania Zasada, którą ja wyznaję - wydajność, optymalizacja, jakość - skrypt wymaga jedynie skript-reflect, oraz, oczywiście - samego mcMMO, do odczytu danych i prawidłowego działania. Skrypt testowano na poszczególnych pluginach i silniku: (prawdopodobnie działa wstecz, aż do 1.13.2) - Skript (2.6-beta2) - skript-reflect* (2.2.3) - mcMMO (2.1.201) - Purpur (#1267) UPDATE 1.4 Cały skrypt został napisany od nowa. Rozmiar zmniejszył się o 5KB, przy tym dodano podgląd rankingów, podgląd i menadżer drużyn. Wprowadzono bardzo obszerną konfigurację. Skrypt doczekał się ogólnej renowacji. Skrypt jest kompatybilny z nowszymi wersjami mcMMO, jako, że wcześniej nie działał. TO-DO LISTA - skrypt ładuje się w +12 sekund, trzeba zmniejszyć czas oczekiwania do maks. 3 sekund. - ogólny brud do usunięcia, funkcje do optymalizacji. - 15 nowych interfejsów dot. sub-umiejętności każdego skilla. - dodać sprawdzanie innych graczy od nowa - każda rozsądna propozycja uczestnika tego forum POBIERZ (1.4): code.skript.pl1 punkt
-
Proszę. on load: set {automessage::messageNumber} to 1 every 30 seconds: if {automessage::messageNumber} is 1: broadcast "" broadcast "1" broadcast "" else if {automessage::messageNumber} is 2: broadcast "" broadcast "2" broadcast "" else if {automessage::messageNumber} is 3: broadcast "" broadcast "3" broadcast "" else if {automessage::messageNumber} is 4: broadcast "" broadcast "4" broadcast "" else if {automessage::messageNumber} is 5: broadcast "" broadcast "5" broadcast "" else if {automessage::messageNumber} is 6: broadcast "" broadcast "6" broadcast "" add 1 to {automessage::messageNumber} if {automessage::messageNumber} is greater than 6: set {automessage::messageNumber} to 11 punkt
-
jeżeli chodzi o połączenie bungee to od wersji skripta 2.3 skript posiada efekt connect %players% to [server] %text% czyli np command /lobby [<text>]: trigger: connect player to "lobby"1 punkt
-
Hasło
dziwakkolega przyznał(a) reputację Koksu123 za pytanie
dostalem kiedys od kolegi, lecz robilem format kompa, jak bym mial lub znajde to ci wysle1 punkt -
on join: if player doesn't have permission "join.moderator": stop broadcast "&aModerator &a&l%player% &fdołączył na serwer!" on disconnect: if player doesn't have permission "join.moderator": stop broadcast "&aModerator &a&l%player% &fwyszedł z serwera!" Proszę.1 punkt
-
Z tym się zgodzę, ale jednak klasa z danym rozszerzeniem może zapewnić gotowe metody. Interfejs tak jak napisałeś, może tylko pomóc.1 punkt
-
Core to zestaw funkcji, które przygotowujesz sobie do użytku przez inne Twoje pluginy. Oczywiście pomijam fakt, że polaczki zaczęły robić z core'a jeden duży plugin, ale to zła praktyka. W core tworzysz sobie funkcje i instancje, które będą na przykład odpowiedzialne za zapis i odczyt z bazy danych, interfejsy, które możesz sobie rozszerzać i używać na przykład do łatwego i wygodnego tworzenia npc, hologramów, scoreboardów. Jednym zdaniem to zestaw podstawowych funkcji, których używasz w Twoich pluginach.1 punkt
-
Poradnik pisania skryptów
Helios1993 przyznał(a) reputację Kormic za temat
Nie chciałbym być niemiły, lecz w twoich ostatnio wrzucanych skryptach można było się doszukać błędów. Jeśli to są podstawy podstaw, mogę zrozumieć (chociaż z drugiej strony jest masa poradników dla świeżych), ale jeśli jest to coś już ponad podstawy to lepiej abyś dał sobie z tym spokój. Jak wspomniałem wyżej, w twoich skryptach były błędy, pomyśl jak bardzo złe działanie będzie miało utrwalanie twoich błędów przez widzów. Dodam, że twoje błędy nie będą jedynie wiązały się z wprowadzaniem ich w błąd, w gorszym przypadku możesz trafić na wrednego widza, który nie zostawi na tobie suchej nitki. Nie bierz tego jako argument ad personam, przemyśl jeszcze raz czy to jest rzeczywiście dobry pomysł, aby uczyć w (najprawdopodobniej) błędny sposób oglądające cię osoby i utrwalać w ich wiedzy twoje błędy. Dlatego właśnie wpierw naucz się samemu pisać skrypty, a dopiero później nauczaj innych.1 punkt -
Tym sobie głowy nie warto zaprzątać. W potocznym znaczeniu core to taki plugin, w którym jest wszystko, aby serwer mógł funkcjonować.1 punkt
-
Hasło
dziwakkolega przyznał(a) reputację Koksu123 za pytanie
Gdy gracz wpisze komende /remember jego haslo sie zapisuj i podczas ponownego wejscia na serwer nie bedzie musial wpisywac hasla1 punkt -
jak coś to reply a nie replay XD polecam skrypt 9/101 punkt
-
nie zapomnij o tym, że zapytałem cię czy mogę zapłacić te 30 złotych za miesiąc z góry, bo nie miałem pewności czy serwer tyle zarobi. zgodziłeś się (mam dowody). temat jest prosty. gdy chciałem rozwiązać współpracę po kilku dniach domagałeś się reszty pieniędzy chyba sobie jaja robisz z samego siebie chłopie w dodatku męczyłeś mnie ciągle o kolejne wpłaty, jak to ująłeś: "potrzebuję szybko pieniędzy". czy ty jesteś zdrowy na umyśle?0 punktów
-
0 punktów
-
Hasło
Koksu123 przyznał(a) reputację dziwakkolega za pytanie
mozna tak powiedziec ale wolalbym aby haslo zapisywalo sie na max 3-5 dni0 punktów -
Nie musisz podawać ID, wystarczy nawet sama treść. Poszukam wszystkich ticketów stworzonych przez Ciebie z mniej więcej taką treścią i zobaczymy czy jest jakiś ticket, który wisiał miesiąc0 punktów
-
Najwięcej postów w tygodniu
-
Najwięcej tematów w tygodniu
-
Aktywni użytkownicy
-
1
-
2
-
