Ranking
Popularna zawartość
Treść z najwyższą reputacją w 02/29/20 w Odpowiedzi
-
INFO! Skrypt jak i jego opis został początkowo stworzony i opublikowany przez ZiemniaQ'a. Jako że nie zawsze działał poprawnie, a dodatkowo został porzucony to postanowiłem go poprawić i udostępnić. Link do oryginalnego tematu: https://skript.pl/temat/33308-pyratop-skrypt-na-tworzenie-topki/. Opis ≫ Funkcja automatycznie posegreguje podaną listę zmiennych w kolejności malejącej. Wystarczy wkleić kod do dowolnego pliku i przeładować. Będzie dostępny do użycia globalnie - we wszystkich innych skryptach. Korzystanie ≫ Pierwszym warunkiem jaki należy spełnić jest posiadanie zmiennej w formacie {nazwa::nick_gracza}. W miejscu nazwy może się znajdować cokolwiek: wykopany_stone, zabojstwa, smierci, itp. Gdy już posiadamy naszą zmienną, korzystamy z funkcji, która wygeneruje nam naszą listę z topką: set {_lista::*} to createTop("nazwa", 5) gdzie: pierwszym argumentem funkcji jest tekst zawierający nazwę naszej zmiennej drugim argumentem jest liczba, która oznacza ilość miejsc w topce jaka zostanie wygenerowana Powyższy sposób daje nam już gotową listę, którą możemy zapętlić i wyświetlić powiedzmy na chacie w domyślnym formacie nick gracza - wartość Gdyby jednak zaszła taka potrzeba, zwracany format można dowolnie zmieniać, dodając trzeci argument (tekst) do funkcji. Można korzystać z trzech zmiennych: [INDEX] lub [I] - zostanie zamieniony na pozycję gracza w topce [PLAYER] lub [P] - zostanie zamieniony na nick gracza [VALUE] lub [V] - zostanie zamienione na wartość zmiennej w topce Przykładowo poniższa funkcja będzie zwracać wartości w takim formacie: 1. PanMaruda: 100 createTop("nazwa", 5, "&7[I]. &b[P]&7: &3[V]") Można też dodawać dowolny tekst: PanMaruda zdobył 100 punktów i zajął 1 miejsce createTop("nazwa", 5, "&b[P] &7zdobył &3[V] &7punktów i zajął &9&l[I] &7miejsce.") jeżeli w drugim argumencie podamy wartość większą od zera, wtedy topka wygeneruje się od najwyższej do najniższej wartości - gdy liczba będzie ujemna - wtedy topka będzie odwrócona Zastosowanie ≫ Wygenerowane topki można umieszczać wszędzie i nie ma tu żadnego ograniczenia, mogą to być: listy na chacie, przedmioty w GUI, hologramy, tabliczki, lore, strony internetowe itp. Chciałbym poinformować że nie jest to najwydajniejszy sposób na segregowanie zmiennej, więc w połączeniu ze Skriptem oraz obszerną listą (+200 wyników) ta funkcja może doprowadzić do spadku wydajności tj. znacznego obciążenia procesora. Zalecam używanie jej jednorazowo np. podczas startu serwera lub automatycznie co pewien czas. Moim zdaniem nie powinna być wykonywana na każde życzenie gracza. Przykłady ≫ Wersja 4.3 (zmiany) ≫ od tej wersji funkcja wymaga pluginu Skript w wersji przynajmniej 2.4, co za tym idzie najlepiej wersji gry powyżej 1.14 włącznie od tej wersji wszystkie indeksy (nicki graczy) pobierane są ze zmiennej podanej w pierwszym argumencie usunięto argument czwarty 'reversed = boolean' powodujący generowanie odwróconej listy usunięto argument trzeci 'list = objects' przez który dodawane były indeksy dodano opcję generowania odwróconej listy gdy jej wielkość (argument drugi) będzie liczbą ujemną Wymagania ≫ plugin Skript w wersji 2.4 lub wyższej (zalecane) silnik Spigot lub Paper w wersji 1.14 i wyższe Pobieranie ≫ pyraTop v1.0 wersja ZiemniaQ'a pyraTop REBORN v2.0.0 pyraTop REBORN v3.0.0 pyraTop REBORN v4.0.0 pyraTop REBORN v4.2.0 (ostatnia wersja dla skripta 2.2) pyraTop REBORN v4.3.0 PO-TA-TOES1 punkt
-
Warny z pluginie skript
xAxee przyznał(a) reputację NieZiemniaQ za pytanie
1. Któraś z tych dwóch opcji ma w sobie cudzysłów - znak specjalny - jeżeli chcesz żeby ci go wyświetlało musisz go w tej opcji zapisać podwójnie. 2-3. Warn - czyli nie error. Oznacza że twoje opóźnienie jest mniejsze niż 1 tick (50 ms) i nie jest obsługiwane przez skripta. Ale spokojnie - plugin automatycznie koryguje sobie tą wartość do właśnie tego 1 ticka.1 punkt -
gdzieś masz za dużo " i brakuje ci jednostki czasu bo pewnie w optionsach masz liczbe a nie time span1 punkt
-
on death of player: attacker is a player: if {lvl::%attacker%} is not set: set {lvl::%attacker%} to 0 set {lvlP::%attacker%} to 0 add 1 to {lvlP::%attacker%} if {lvlP::%attacker%} >= ({lvl::%attacker%} + 1): add 1 to {lvl::%attacker%} set {lvlP::%attacker%} to 0 on chat: if {lvl::%player%} > 3: set chat format to "[%{lvl::%player%} ? 0%] %chat format%" else: cancel event send "nie masz 3 lvl"1 punkt
-
Prosty skrypt na LvL
Krozboi przyznał(a) reputację CountingDogs za pytanie
variables: {lvl::%player%} = 0 #Zmienna odpowiadajaca za poziom na chacie. Zmien jak chcesz1 punkt -
on death of player: attacker is a player: if {lvl::%attacker%} is not set: set {lvl::%attacker%} to 0 set {lvlP::%attacker%} to 0 add 1 to {lvlP::%attacker%} if {lvlP::%attacker%} >= ({lvl::%attacker%} + 1): add 1 to {lvl::%attacker%} set {lvlP::%attacker%} to 0 on chat: set chat format to "[%{lvl::%player%}%] %chat format%"1 punkt
-
Zostanę web developerem
Virtuosso przyznał(a) reputację boleknowak za temat
Hej, jeśli faktycznie za darmo oferujesz to spoko, nie ma problemu. ale jeśli nie będziesz miał klientów to polecam stronę https://fakeclients.com/webdesign mi się wylosowało1 punkt -
function chatStatus(p: player, s: string) :: string: if {alerty::player::%{_p}%::%{_s}%} is not set: set {alerty::player::%{_p}%::%{_s}%} to true if {alerty::player::%{_p}%::%{_s}%} is false: return "&cWylaczone" return "&aWlaczone" function changeStatus(p: player, s: string, slot: integer, item: item): if {alerty::player::%{_p}%::%{_s}%}: set {alerty::player::%{_p}%::%{_s}%} to false else: set {alerty::player::%{_p}%::%{_s}%} to true set {_lore::*} to lore of {_item} set {_size} to size of {_lore::*} set {_lore::%{_size}%} to "&6Status: %chatStatus({_p}, {_s})%" set slot {_slot} of current inventory of {_p} to {_item} with lore {_lore::*} command /ustawieniaczatu [<text>]: trigger: open virtual chest inventory with 4 rows named "&8[&6✘&8] &fChat &8[&6✘&8]" to player set {_status} to chatStatus(player, "dzialki") set {_item} to paper of unbreaking 10 named "&8[&6✘&8] &fDzialki &8[&6✘&8]" with lore "&fWylacz wiadomosci &6wkroczenia na dzialke" and "&6Status: %{_status}%" format gui slot 12 of player with {_item} to run function changeStatus(player, "dzialki", 12, {_item}) Błąd pierwszy odnosi się do ostatniej wartości ze zmiennej - liczyłem na to że da się ją zmienić - otóż nie, trzeba zapisać rozmiar zmiennej ręcznie i ustawić zmienną (zakładając że status danego ustawienia będziesz miał zawsze w ostatniej linijce). Drugi błąd dotyczy funkcji w tekście. Nie wiem dlaczego, ale Skript czasem dostaje pierdolca w takich przypadkach - wtedy jedyne co nam pozostaje to funkcję najpierw zapisać do zmiennej, a dopiero potem tą zmienną wstawić do tekstu (w tym przypadku lore) Owszem, nie musi. Ale ja poradziłem mu, żeby tak robił, bo podobnie jak Skript przy funkcjach - tak TuSKe przy itemach dostaje pierdolca. Jeżeli wstawimy gotowy przedmiot w zmiennej to wszystko jest okej, ale gdy tylko dodamy to tak jak w twoim przykładzie (powiedzmy w ilości trzech linijek) to skrypt będzie ładował się nawet kilkanaście sekund.1 punkt
-
hmm set {_item} to paper of unbreaking 10 named "&8[&6✘&8] &fDzialki &8[&6✘&8]" with lore "&fWylacz wiadomosci &6wkroczenia na dzialke" and "&6Status: %chatStatus({_p}, ""dzialki"")%" lub set {_dzialki-status} to chatStatus({_p}, "dzialki") set {_item} to paper of unbreaking 10 named "&8[&6✘&8] &fDzialki &8[&6✘&8]" with lore "&fWylacz wiadomosci &6wkroczenia na dzialke" and "&6Status: %{_dzialki-status}%" ogolnie nie musisz zawsze ustawiać do zmiennej itemów (nw czy wiesz) i możesz zrobić tak (tak samo z lore) format gui slot 12 of player with paper of unbreaking 10 named "&8[&6✘&8] &fDzialki &8[&6✘&8]" with lore "&fWylacz wiadomosci &6wkroczenia na dzialke" and "&6Status: %chatStatus({_p}, ""dzialki"")%" to run player command "ustawieniaczatu 1" co do tego to robisz to jako item tak jak wyżej lub tak jak robiłeś tylko inne nazwy zmiennych (chyba że o co innego ci chodzi)1 punkt
-
Linijka 19 - zmienna {_p} nie istnieje, funkcja dostaje nulla: (...) and "&6Status: %chatStatus({_p}, "dzialki"})%" Swoją drogą - jeżeli chcesz zmieniać tylko jedną linijkę lore (czyli tak naprawdę jeden przedmiot) - powinieneś zrobić sobie osobną funkcję do tego, zamiast kolejny raz wykonywać komendę, która tworzy od nowa całe inventory, np. function chatStatus(p: player, s: string) :: string: if {alerty::player::%{_p}%::%{_s}%} is not set: set {alerty::player::%{_p}%::%{_s}%} to true if {alerty::player::%{_p}%::%{_s}%} is false: return "&cWylaczone" return "&aWlaczone" function changeStatus(p: player, s: string, slot: integer, item: item): #tutaj zmieniamy status zmiennej if {alerty::player::%{_p}%::%{_s}%}: set {alerty::player::%{_p}%::%{_s}%} to false else: set {alerty::player::%{_p}%::%{_s}%} to true #tutaj pobieramy sobie lore z itemu i zmieniamy ostatnią wartość (czyli status) na nowy status pobrany z funkcji set {_lore::*} to lore of {_item} set last element of {_lore::*} to "&6Status: %chatStatus({_p}, {_s})%" #zmieniamy lore w itemie set lore of {_item} to {_lore} #ustawiamy dany slot od nowa (z nowym lore) !nie trzeba używać format slota, wystarczy zmienić przedmiot w taki sposób, a TuSKe i tak zachowa dla niego zapisane efekty po kliknięciu. set slot {_slot} of {_p} to {_item} command /ustawieniaczatu [<text>]: trigger: open virtual chest inventory with 4 rows named "&8[&6✘&8] &fChat &8[&6✘&8]" to player set {_lore::*} to "&fWylacz wiadomosci &6wkroczenia na dzialke" and "&6Status: %chatStatus({_p}, "dzialki"})%" set {_item} to paper of unbreaking 10 named "&8[&6✘&8] &fDzialki &8[&6✘&8]" with lore {_lore::*} #zamiast wykonywać ponownie tą komendę, wywołujemy funkcję, która zmieni status zmiennej i zaaktualizuje przedmiot w slocie. format gui slot 12 of player with {_item} to run function changeStatus(player, "dzialki", 12, {_item})1 punkt
-
"Zostanę Programistą/Technikiem" bez Portfolio
ViselibterPL przyznał(a) reputację CountingDogs za temat
Jeśli to żaden spam to jaka pewność, że wyśle na PW jakąkolwiek swoją prace? Może wątek jest stworzony po to, aby zwabiać innych i na PW można otrzymać po prostu pustkę lub od autora "przekonasz się, że będzie to dobry projekt"... OK jest to sprawa autora, czy wyrobi sobie dobrą reputacje, ale taki wątek to jedynie spam, a nie normalny wątek. Jeśli chodzi o posty to jest to lekki spam, ale każdy chce choć zobaczyć fragment danego projektu autora wątku, bo nikt w ciemno nie będzie zlecał czegoś.1 punkt -
pyraTop REBORN - funkcja generująca topki (v4.3.0)
Misio12320 przyznał(a) reputację PanMaruda za temat
Była teraz taka taktyczna zmiana tematu, więc tamtej wiadomości tu nie ma, ale odniosę się do twojego pytania @kiroxtv (link). Trochę spóźnione, ale czekałem z kolejną wersją i tą odpowiedzią przez święta. Nazwijmy to co teraz napiszę "poradnikiem" dotyczącym korzystania ze skryptu: Można od teraz (tj. wersja druga) ustawiać swoje formatowanie przy każdym tworzeniu nowej topki. Chciałbym tego uniknąć i móc zwracać posortowaną listę, w której nick będzie indeksem, a liczba - wartością zmiennej, lecz niestety ograniczeniem jest skript, który namiętnie segreguje sobie wszystkie indeksy w ustalonym porządku. Dlatego też trzeba skupić się na tym co jest i nauczyć się tego używać. Chcąc zrobić tak jak Kiro - topkę w GUI z głowami graczy - trzeba rozdzielić uzyskane wartości na nicki graczy oraz ich punkty. Jeżeli nie ustalimy własnego formatu, będzie to bardzo proste, ponieważ te dwie wartości oddziela tylko myślnik. Zwracana lista będzie wyglądać tak: Kiro - 100 Maruda - 78 ZiemniaQ - 21 Zatem mamy naszą topkę - trzeba ją zapętlić i użyć wyrażenia 'split at', które zwróci kolejną listę, gdzie pierwszym wynikiem będzie nick gracza, a drugim jego punkty: loop {_topka::*}: #loop-value przechowuje cały czas format "Gracz - Punkty" (wartości są oddzielone dwoma spacjami i myślnikiem) #dzielimy więc nasz tekst na dwie wartości znajdujące się pomiędzy spacjami i myślnikiem: " - " set {_nowaLista::*} to loop-value split at " - " #{_nowaLista::1} zawiera teraz nick gracza (zapisane jako tekst) #{_nowaLista::2} zawiera punkty gracza (również jako tekst) Kod skryptu powinien więc wyglądać mniej więcej tak: command /topkasmierci [<text>]: trigger: #Tworzymy topkę z 9 wynikami (zostawiając domyślny format) set {_topsmierci::*} to createTop("smierciog", 9, all offline players) #Otwieramy inventory z jednym rzędem (ten efekt oraz poniższe do formatowania slotów pochodzą z dodatku TuSKe) open virtual chest inventory with 1 rows named "&f&lTopka &6&lKiroksiewicz" to player #Zapętlamy uzyskaną zmienną loop {_topsmierci::*}: #Oddzielamy graczy od ich punktów (jak w przykładzie powyżej) set {_lista::*} to loop-value split at " - " #{_lista::1} przechowuje nick gracza ale zapisany jako tekst, a do pobrania jego głowy potrzebujemy by zmienna zawierała gracza #Ustawiamy więc tą zmienną na typ gracz set {_lista::1} to ({_lista::1} parsed as offline player) #Potrzebujemy również numer zapętlenia, które aktualnie wykonuje skrypt - przyda się do ustawienia slotu w GUI. Te indeksy zapisują się od 1 #w górę oraz są tekstem. Jako że sloty w GUI numerowane są od zera, to potrzebujemy zapisać indeks jako liczbę i pomniejszyć go o 1 set {_index} to ((loop-index parsed as integer) - 1) #Stwórzmy sobie przedmiot, który wstawimy w GUI - będzie to głowa gracza mająca w nazwie nick gracza, jego punkty oraz zajęte miejsce, #Do wpisania tych wartości, użyjemy stworzonych zmiennych #loop-index - miejsce w topce #{_lista::1} - nick gracza #{_lista::2} - śmierci gracza set {_item} to skull of {_lista::1} named "&6%{_lista::1}% &7zajmuje &e%loop-index% &7miejsce ginąc &e%{_lista::2}% razy" #Mając już przedmiot oraz slot, możemy stworzyć slot w GUI: format gui slot {_index} of player with {_item} Pozdrawiam i życzę miłego pisania. Ps. @xAxee obawiam się że jeżeli chodzi o zwracane wartości, to nic lepszego nie jestem w stanie zrobić poprzez Skripta. Teraz przynajmniej będzie się tego przyjemniej używać (taką mam nadzieję).1 punkt -
POTKI SILY 2
NieZiemniaQ przyznał(a) reputację xAxee za pytanie
on any move: while player has ("373:8233" parsed as item): remove ("373:8233" parsed as item) from player send "Ta potka jest zablokowana!"0 punktów -
Nie wiem czy wiesz, ale to korzysta z tego samego wydarzenia, czyli on walk = on any move Zrób test i sprawdź co bardziej obciąża ci serwer (nie wiem - przez timingi czy coś) - wydarzenie on any move, czy pętla dla każdego gracza z opóźnieniem.0 punktów
-
Najwięcej postów w tygodniu
-
Najwięcej tematów w tygodniu
-
Aktywni użytkownicy
-
1
-
2
-
