Skocz do zawartości

Ranking

Popularna zawartość

Treść z najwyższą reputacją w 02/29/20 w Odpowiedzi

  1. 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-TOES
    1 punkt
  2. xAxee

    Komendy

    command /blokada [<player>]: Trigger: set {blok::%player%} to now on jump: if difference between {blok::%player%} and now < 5 second: cancel event Na przyszłość pisz od razu w treści zlecenia. Zaznacz najlepsza odpowiedź i zostaw
    1 punkt
  3. NieZiemniaQ

    Warny z pluginie skript

    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
  4. xAxee

    Warny z pluginie skript

    gdzieś masz za dużo " i brakuje ci jednostki czasu bo pewnie w optionsach masz liczbe a nie time span
    1 punkt
  5. PanMaruda

    Prosty skrypt na LvL

    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
  6. CountingDogs

    Prosty skrypt na LvL

    variables: {lvl::%player%} = 0 #Zmienna odpowiadajaca za poziom na chacie. Zmien jak chcesz
    1 punkt
  7. PanMaruda

    Prosty skrypt na LvL

    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
  8. boleknowak

    Zostanę web developerem

    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ło
    1 punkt
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. Peridot

    MTitle

    Dodaj jeszcze informację że działa od wersji 1.8 wzwyż
    1 punkt
  15. xAxee

    POTKI SILY 2

    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
  16. PanMaruda

    Wejście/wyjście z chunkó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
Ten Ranking jest ustawiony na Warszawa/GMT+02:00
  • Najwięcej postów w tygodniu

    Fendi
    Fendi
    3 posty
    xSebixx1
    xSebixx1
    2 posty
    Kormic
    Kormic
    2 posty
    Bananek355
    Bananek355
    1 post
    0j_12
    0j_12
    1 post
    karepas
    karepas
    1 post
    F3lip3za
    F3lip3za
    1 post
    Nieaktywny
    Nieaktywny
    1 post
    LusiaMC
    LusiaMC
    1 post
  • Najwięcej tematów w tygodniu

    xSebixx1
    xSebixx1
    1 temat
    karepas
    karepas
    1 temat
    Nieaktywny
    Nieaktywny
    1 temat
    LusiaMC
    LusiaMC
    1 temat
    Antychryst
    Antychryst
    1 temat
    MICHALBEZSKINOW
    MICHALBEZSKINOW
    1 temat
    artur9010
    artur9010
    1 temat
    0j_12
    0j_12
    1 temat
  • Aktywni użytkownicy

×
×
  • Dodaj nową pozycję...