Skocz do zawartości

Ranking

Popularna zawartość

Treść z najwyższą reputacją w 06/20/24 uwzględniając wszystkie działy

  1. Kormic

    Pytanie o graczy (! WAŻNE !)

    Dobrze. Widzę, że trzeba wyjaśnić kilka spraw. Lakonicznie odpowiadając na Pana pytanie, Skript sam w sobie nie jest obciążający dla serwera. To źle i niewydajnie napisane skrypty są powodem obciążenia serwera. A teraz pora na dłuższą odpowiedź. 1. Wiele osób piszących w Skript w nonszalancki sposób: wykorzystuje zapis zmiennych globalnych, tworzy ogromne pętle działające na wielu danych, wykonuje kosztowne w zasobach serwera operacje w sposób synchroniczny, podczas gdy często istnieje możliwość wykorzystania takich dodatków jak skript-reflect (czy też SkQuery) do asynchronicznego wykonania kodu. System zmiennych globalnych w Skript jest bardzo niewydajnie napisany, co zresztą wielokrotnie przyznawali twórcy pluginu. Niewydajność wynika z tego, że Skript każdą zmienną (globalną) zapisuje do pamięci RAM (rzecz normalna), ale również na dysku. Innymi słowy, za każdym razem gdy skrypt wykonuje efekt 'set {zmienna::globalna} to <coś>', zmiana ta jest zapisywana na dysku. W przypadku zapisu setek (a czasem tysięcy) zmiennych w jednym momencie, taka operacja staje się niezwykle kosztowna. Trzeba również pamiętać o tym, że Skript "lubi" często przeorganizowywać plik ze zmiennymi globalnymi (variables.csv), co jest kolejnym powodem niskiej wydajności tego systemu. W ramach ciekawostki powiem, że na pewno do niedawna (a może i do teraz, kto wie) poniższy kod był w stanie zatrzymać pracę serwera (wywalić go). command /test: trigger: loop 10000 times: set {testVariable::%loop-number%} to loop-number W przypadku używania zmiennych lokalnych takiego ryzyka nie ma, gdyż są one zapisywane jedynie w pamięci RAM. Dodam, że miłą alternatywą dla zmiennych globalnych może się okazać dodatek skript-yaml. Ogromną przewagą tego pluginu jest fakt, iż to skrypter decyduje kiedy dane mają być zapisane na dysku, nie Skript (czyli właściwie każdorazowo gdy zapisujemy zmienną globalną). Do momentu zapisu na dysku dane są przechowywane w pamięci RAM, a więc pod tym kątem są tak samo wydajne jak zmienne lokalne. Wniosek? Generalnie kierujemy się zasadą: zmiennych globalnych należy używać tylko wtedy gdy nie jesteśmy w stanie rozwiązać danego problemu przy pomocy zmiennych lokalnych. 2. Część (skripterów?) przecenia możliwości Skripta i myśli, że jest on w stanie w 100% zastąpić pluginy. Wtedy zaczyna się tworzenie w nim wielkich projektów - od anticheatów, poprzez całe tryby, kończąc na skryptach obsługujących dosłownie wszystko. Skript został stworzony w celu dodawania mało skomplikowanych mechanizmów i rzeczy na serwer gdy tworzenie osobnego pluginu jest zwyczajnie nieopłacalne. Plugin ten nie jest i nigdy nie będzie dobry do tworzenia ogromnych projektów. Oczywiście, istnieją wielkie dzieła napisane wydajnie w Skript, jednakże jest to nie więcej niż promil podjętych prób tworzenia ich. Dlatego też odradzam takiego postępowania dopóki nie jest się absolutnie pewnym tego co się robi. 3. Na koniec jeszcze jedno. Zła reputacja Skripta bierze się w dużej mierze z ignorancji rzeszy jego użytkowników, którzy myślą, że to akurat ich skrypty są dobre. Nie, nie są. Wystarczy spojrzeć na to, że połowa (jak nie więcej) skrypterów nie potrafi posługiwać się dokumentacją, więc nie ma mowy o pisaniu dobrego (to znaczy, wydajnego i schludnego) kodu. Myślę, że powiedziałem o wszystkich ważniejszych rzeczach. Gdyby jeszcze zrodziły się jakieś pytania, śmiało je można zadawać. Z miłą chęcią odpowiem. Pozdrawiam.
    2 punkty
  2. naujan

    GUI z zestawami

    Dziękuje bardzo, wszystko działa poprawnie. Pozdrawiam
    1 punkt
  3. Kormic

    GUI z zestawami

    Nic się nie stało. Proszę, oto skrypt. Co prawda testowałem go na samym sobie, ale z tego co widzę, powinien działać bezproblemowo. options: GUIName: &aSety command /sety: executable by: players trigger: set {_gui} to chest inventory with 4 rows named "{@GUIName}" set slots (integers from 27 to 35) of {_gui} to dark gray glass pane named "" set slot 31 of {_gui} to lime dye named "&a&lDodaj sety" open {_gui} to player inventory click: event-inventory is not player's inventory name of event-inventory is "{@GUIName}" index of clicked slot is between 27 and 35 cancel event index of clicked slot is 31 set {_items::*} to (slots (integers from 0 to 26) of player's top inventory) where [input is not air] close player's inventory if size of {_items::*} = 0: send "&6Nie włożyłeś jakichkolwiek przedmiotów do GUI." to player stop loop all players where [input is not player]: if loop-player has enough space for {_items::*}: send "&aOtrzymałeś &6%size of {_items::*}% &aróżnych przedmiotów od &b%player%&a." to loop-player continue send "&6Otrzymałeś &e%size of {_items::*}% &6różnych przedmiotów od &b%player%&6. Niestety, nie posiadasz na nie wystarczająco dużo miejsca w ekwipunku." to loop-player if player doesn't have enough space for {_items::*}: send "&6Niestety, nie posiadasz wystarczająco dużo miejsca w ekwipunku na przedmioty, które dałeś wszystkim graczom." to player give {_items::*} to all players send "&aWręczyłeś innym graczom &6%size of {_items::*}% &aróżnych przedmiotów." to player Gdyby wystąpiły jakieś błędy lub pojawiły się problemy z tym skryptem, proszę śmiało pisać. Pozdrawiam.
    1 punkt
  4. Kormic

    GUI z zestawami

    Chciałbym się upewnić czy dobrze zrozumiałem treść zlecenia. Więc tak: gracz może wsadzić dowolne elementy zbroi do tego GUI, a po kliknięciu barwnika GUI się zamyka (to sobie dopowiedziałem) i każdy z graczy otrzymuje tę zbroje. Pojawiają się więc dwa pytania: Czy gracz wkładający zbroję traci ją bezpowrotnie? Co jeśli któryś z graczy nie posiada miejsca w ekwipunku na zbroję? Jest ona wyrzucana na ziemi czy też po prostu nie jest dawana? A może coś innego się dzieje? Jeśli Pan może, proszę doprecyzować co skrypt dokładnie ma robić. Pozdrawiam.
    1 punkt
  5. Deyvson

    zapłace

    Zapłacę z promo servera Survival Games
    0 punktów
Ten Ranking jest ustawiony na Warszawa/GMT+02:00
  • Najwięcej postów w tygodniu

    Quexsu
    Quexsu
    6 postów
    NikoSkript
    NikoSkript
    1 post
    Notro
    Notro
    1 post
    Grabsky
    Grabsky
    1 post
    Nicku
    Nicku
    1 post
    mervi_X
    mervi_X
    1 post
  • Najwięcej tematów w tygodniu

    Quexsu
    Quexsu
    1 temat
    mervi_X
    mervi_X
    1 temat
  • Aktywni użytkownicy

    Nikt jeszcze nie otrzymał reputacji w tym tygodniu.

×
×
  • Dodaj nową pozycję...