Ranking
Popularna zawartość
Treść z najwyższą reputacją w 01/02/21 uwzględniając wszystkie działy
-
DROP ZE STONE
Kormic oraz jeden pozostały przyznał(a) reputację PanMaruda za pytanie
skąd ja wiedziałem że tak będzie... Nie wiem jak inni (czyt. Kormic), ale ja nie biorę się za pisanie czegokolwiek na tą wersję, bo po pierwsze - jest stara i niewspierana, a po drugie - jest stara i niewspierana. Takie zlecenie to byłby strzał w kolano. Dziękuję, tyle ode mnie.2 punkty -
Poradnik przedstawiający pętle w Skript. Skript - pętle Poznajemy pętle, ich rodzaje i przykładowe zastosowania. I. Wstęp Czym są pętle? Jak je dzielimy? Pętle są wyrażeniami, dzięki którym możemy zapętlić w dany sposób/daną ilość razy jakiś kod. Pętle dzielimy na dwie grupy: - pętle skończone (wykonujące określoną ilość razy dany kod) - pętle nieskończone (wykonujące dany kod przez cały czas działania skryptu) wyjątkiem jest pętla while, która może być skończona lub nieskończona. II. Pętle skończone Czym się charakteryzują? Do czego można ich użyć? Pętle skończone można podzielić na dwie grupy: - pętle ze zdefiniowaną ilością zapętleń: loop 13 times: # kod loop {zmienna} times: # kod loop 4*5+2^30 times: # kod W pętlach tych możemy się odwoływać do zmiennej loop-number, która przechowuje numer zapętlenia. - pętle zapętlające daną grupę obiektów loop {lista::*}: # kod loop all players: # kod loop all sheeps in player's world: # kod loop players in radius 4 of player: # kod loop inventory of clicked block: # kod loop inventory of arg: # kod loop worlds: # kod loop all dropped items: # kod Każda z tych pętli może zawierać inne zmienne: po zapętleniu listy zmiennych: loop-index - nazwa zmiennej, loop-value - wartość zmiennej, po zapętleniu graczy: loop-player - gracz, po zapętleniu owiec: loop-sheep (lub loop-entity) - owca, po zapętleniu ekwipunku: loop-item - przedmiot, po zapętleniu światów: loop-world - świat. Pętle te wykonają dany kod dla każdego obiektu z zapętlonej grupy. Pętle w pętli Jeśli tworzymy kilka pętli w sobie nawzajem i posiadają one zmienne o takich typach, aby się do nich odwołać musimy zdefiniować numer pętli w formacie: nazwa_zmiennej-numer_pętli np. loop-number-2. loop 30 times: loop 4 times: loop-number-1 is 3: send "3 zapętlenie pierwszej pętli, wyświetli się 4 razy" loop-number-2 is 4: send "4 zapętlenie drugiej pętli, wyświetli się 30 razy" loop-number-1 is 30: send "ostatnie zapetlenie pierwszej pętli, wyświetli się 4 razy" III. Pętle nieskończone Czym się charakteryzują? Do czego można ich użyć? Pętle nieskończone, jak sama nazwa wskazuje, wykonują dany kod nieograniczoną ilość razy. Jako jedyne stanowią samodzielne jednostki (nie muszą być zawarte w komendach, zdarzeniach). every <czas>: # kod every 1 tick: # kod every 5 hours: # kod Dany kod będzie wykonywany w nieskończoność co zdefiniowany czas np. co 5 godzin. IV. Pętla while Czym się charakteryzuje? Do czego można jej użyć? Ciekawą pętlą jest pętla while, gdyż może być zarówno skończona jaki i nieskończona. while <warunek>: # kod Słownie można opisać ją tak: dopóki warunek jest spełniony wykonuje dany kod. while 1 is 1: # kod Powyższa pętla będzie wykonywała dany kod w nieskończoność. W praktyce jednak nie ma sensu tworzyć nieskończonej pętli while gdyż będzie ona działała tak samo jak pętle every. Jedyną różnicą jest ta, że jeśli kod w pętli nie będzie zawierał polecenia wait to nieskończona pętla while "zlaguje" serwer gdyż będzie on bez najmniejszej przerwy wykonywał kod w pętli "nie mając czasu" na żadne inne działanie. Tak więc tworzenie nieskończonych pętli while - niewskazane! Przy używaniu tej pętli warto zastosować zabezpieczenie przed nieskończonością, mianowicie: set {_limit} to <limit powtorzen> while <warunek>: # kod remove 1 from {_limit} {_limit} is 0: exit loop V. Przykłady Przykładowe zastosowania różnych pętli. - Pętla every 5 seconds oraz zapętlenie wszystkich graczy na serwerze: every 5 seconds: loop all players: {vampire.%loop-player%} is true sunlight level at the loop-player is greater than 10 ignite the loop-player for 5 seconds Działanie: jeśli zmienna {vampire.%gracz%} ma wartość true i gracz przebywa w słońcu - będzie się palił. - Zapętlenie wszystkich graczy: command /ac [<text>]: trigger: loop all players: loop-player has permission "jestem.adminem": send arg to loop-player Działanie: wysyła wiadomość do wszystkich graczy posiadających uprawnienie jestem.adminem. - Pętla while: on right click on sign: line 1 is "[sklep]" line 2 constains "S" and "K" and ":" set {_i} to 1 while {_k} or {_s} is not set: line 2 of clicked block constains "S %{_i}%:": set {_s} to {_i} line 2 of clicked block constains ":%{_i}% K": set {_k} to {_i} add 1 to {_i} {_i} is 9999: exit loop send "Cena kupna: %{_k}%, Cena sprzedaży: %{_s}%" Działanie: pętla while jest tu wykorzystana do pobrania kwoty kupna i sprzedaży z tabliczki o wzorze: linia 1: [sklep] linia 2: S <cena sprzedaży>:<cena kupna> K Pętla będzie wykonywana tak długo, aż zmienne {_s} i {_k} będą zapisane lub gdy osiągnie 9999 powtórzeń.1 punkt
-
Skarga na xNightPower_
Misio12320 przyznał(a) reputację xMuffionex za temat
Napisz ponownie kiedy nauczysz się poprawnie składać zdania. Pozdrawiam i miłego wieczoru1 punkt -
To jest w końcu pytanie czy zlecenie? Dodam, że skrypt wygląda ohydnie. Dlaczego kilkanaście razy jest powtórzony execute dla tych samych komend? Dlaczego nie zastosowano pętli w ustawianiu slotów? Dlaczego użyto zbugowanego i ograniczonego w możliwościach formatowania GUI z SkQuery?1 punkt
-
System ID gracza
Piotr12345YT przyznał(a) reputację Notro za pytanie
Użyj send "%player% [&4%{NID::%player%}%&f]: %message%" to loop-player1 punkt -
System ID gracza
Piotr12345YT przyznał(a) reputację Kormic za pytanie
Proszę, skrypt nietestowany. Zmienna to {NID::%player%}. on join: set {nextNID} to 1 if {nextNID} is not set set {NID::%player%} to {nextNID} add {NID::%player%} to {usedNID::*} remove {NID::%player%} from {unusedNID::*} if size of {unusedNID::*} >= 1: set {nextNID} to (first element out of sorted {unusedNID::*}) else if size of {usedNID::*} >= 1: set {nextNID} to (last element out of sorted {usedNID::*}) + 1 else: set {nextNID} to 1 on quit: remove {NID::%player%} from {usedNID::*} add {NID::%player%} to {unusedNID::*} clear {NID::%player%} if size of {unusedNID::*} >= 1: set {nextNID} to (first element out of sorted {unusedNID::*}) else if size of {usedNID::*} >= 1: set {nextNID} to (last element out of sorted {usedNID::*}) + 1 else: set {nextNID} to 11 punkt -
Placeholdery na chacie
Mordziotymoja przyznał(a) reputację Gooldzik za temat
Hej, Chcecie mieć liczbę gotówki gracza przed nickiem na chacie, albo marzy Wam się pokazać poziom wyspy gracza przed nickiem? To nic trudnego! Musicie posiadać tylko - EssentialsX, EssentialsX Chat, PlaceholderAPI i ChatInjector Essentials - https://essentialsx.net/downloads.html ChatInjector - https://www.spigotmc.org/resources/chatinjector-1-13.81201/ PlaceholderAPI - https://www.spigotmc.org/resources/placeholderapi.6245/ Co dalej zrobić? Wystarczy zapoznać się z wiki pluginu PlaceholderAPI, aby sprawdzić, jakie są placeholdery. Całą listę znajdziecie tutaj Placeholders · PlaceholderAPI/PlaceholderAPI Wiki (github.com) No i przechodzimy do konfiguracji Aby to uczynić, musimy wejść w config pluginu Essentials, a następnie przejść do sekcji chat, gdzie znajdziemy formaty grup. Przy okazji, możemy ustawić prefixy dla LuckPerms. Aby dodać tylko sam placeholder, bez formatowania prefixów, bądź suffixów grup, zmieniamy tylko linijkę format. format: '{DISPLAYNAME} : {MESSAGE}' Tak jak już wspomniałem, pokaże Wam jak zrobić, aby przed nazwą użytkownika był stan konta. Chciałbym tylko dodać, że będzie to placeholder fixed, który pokazuję pełną kwotę. Placeholder, jaki będziemy stosować, to %vault_eco_balance_fixed% Także przechodzimy do konfiguracji format: '%vault_eco_balance_fixed% {DISPLAYNAME} : {MESSAGE}' No i powinno działać, jednak obierzmy to jeszcze w ładniejszy styl format: '&7[&c%vault_eco_balance_fixed%&7] &r{DISPLAYNAME} : {MESSAGE}' Pozdrawiam1 punkt -
ProtectionStones - Jedyny prawilny plugin na cuboidy (działki)
Helios1993 przyznał(a) reputację Gooldzik za temat
Witajcie, słowem wstępu chciałbym powiedzieć, że ten poradnik, jak i każdy mój inny poradnik znajdzie się na dwóch innych forach. Na jednym jestem pod nickiem AlexsanderARG, a na drugim Krulik. A więc zaczynajmy. Najważniejsze informacje ProtectionStones jest zaawansowanym pluginem na cuboidy, potocznie nazywane działkami. Aby wgrać go na serwer, musicie spełnić kilka warunków, niektóre są obowiązkowe, a niektóre tylko opcjonalne - więc tych drugich nie musicie spełniać. Aby wgrać plugin na swój serwer, musicie posiadać WorldEdit i WorldGuard w wersji 7+, oraz musicie posiadać serwer co najmniej na wersji Spigot 1.13 Opcjonalnymi dodatkami są Vault, który jest wymagany, aby działało połączenie ekonomii z działkami, czyli po prostu, żeby można było działki kupować (Pluginem na ekonomie jest plugin Essentials), oraz drugim opcjonalnym pluginem jest PlaceholderAPI, który umożliwia pełno rzeczy, o których nie będę pisać, ponieważ byłoby to po prostu za dużo. To na co pozwala PlaceholderAPI, znajdziecie tutaj, w zakładce About PlaceholderAPI | SpigotMC - High Performance Minecraft oraz tutaj Placeholders · espidev/ProtectionStones Wiki (github.com) Instalacja pluginu Plugin ProtectionStones instalujemy tak samo jak wszystkie inne pluginy, czyli logujemy się do serwera przy pomocy FTP lub SFTP, oraz wrzucamy plik z rozszerzeniem .jar, a następnie restartujemy serwer. Plugin pobierzecie stąd ProtectionStones [Updated for 1.13 - 1.16 + WG7] | SpigotMC - High Performance Minecraft Konfiguracja pluginu Przejdźmy teraz do najważniejszej rzeczy - konfiguracji pluginu. Aby to zrobić, należy połączyć się z FTP lub SFTP, oraz wejść w folder plugins, a następnie w folder ProtectionStones. Otwieramy plik config.toml https://code.skript.pl/8aNS0fYv I mamy tutaj do opisania kilka rzeczy. Zacznijmy po kolei.. placing_cooldown - Tutaj definiujemy czas, który użytkownik musi odczekać między postawieniem działek - wyrażamy go w sekundach. Jest typem int, czyli podajemy tylko liczbę. async_load_uuid_cache - Definiujemy tutaj, czy chcemy, aby plugin blokował uruchamiania serwera, w celu ładowania pamięci podręcznej (cache) UUID. Jest typem boolean, czyli wpisujemy true albo false allow_duplicate_region_names - Tutaj definiujemy, czy regiony mogą mieć tę samą nazwę. Jest również typem boolean. ps_view_cooldown - Krótko i na temat, czas, który trzeba odczekać między używaniem komendy /ps view base_command - Definiujemy tutaj bazową komendę, na jaką będzie reagować plugin. Domyślnie jest to ps, ale możemy zmienić to np. na działka. Jest to typ string, czyli ciąg znaków - określamy go w cudzysłowie. aliases - Czyli aliasy komendy bazowej, na które również będzie reagować plugin. drop_item_when_inventory_full - Określamy tutaj, czy blok działki ma wypadać na ziemie po zniszczeniu, gdy gracz ma pełne inventory. Jest typem boolean. regions_must_be_adjacent - Dziwna rzecz. Określamy tutaj, czy cuboidy tego samego gracza, które są obok siebie, muszą na siebie nachodzić, albo stykać się granicami. Jest typem boolean allow_merging_regions - Definiujemy zgodę na to, czy regiony graczy mogą na siebie nachodzić, czy też nie. Jest również typem boolean. allow_merging_holes - Definiujemy, czy gracze mogą stawiać regiony w kółko, aby w środku był niezabezpieczony teren. Jest typem boolean. Dalej jest sekcja ekonomii. Aby działało to poprawnie, wymagany jest plugin Essentials (dodaje ekonomie), oraz Vault (jest to API). max_rent_price - Ustawia maksymalną cenę za wynajem działki. Jest typem float, czyli liczbą z przecinkiem - w tym przypadku z kropką. Na przykład 10.50 min_rent_price - Ustawia minimalną cenę za wynajem działki. Również jest typem float. max_rent_period - Tego nie rozumiem, może ktoś w komentarzu mi wyjaśni. min_rent_period - Tego tak samo nie rozumiem. tax_enabled - Podatki, podatki i jeszcze raz podatki. Definiujemy, czy wymagamy od gracza podatku od działki. Jest typem boolean. tax_message_on_join - Definiuje, czy gracze mają dostawać wiadomości o zaległych opłatach za wynajem, przy wejściu na serwer. Również jest typem boolean. Przejdźmy teraz do konfiguracji bloków działek. W tym przypadku block1.toml https://code.skript.pl/gbA6WwB8 Tutaj najważniejsze co zainteresuje przeciętnego administratora, jest type - Określamy jaki blok ma być działką. Jest typem string. alias - Definiujemy alias działki, czyli słowo, którym będzie określana działka w komendzie /ps get. Musi być to jedno słowo - bez spacji. Również jest typem string. description - Czyli po prostu opis działki. Jest typem string. x_radius - Wymiary działki w kierunku x. Jest typem int, czyli wpisujemy samą liczbę. y_radius - Wymiary działku w pionie. Aby ustawić maksymalną wysokość, wpisujemy -1. Również jest typem int. x_radius - Wymiary działki w kierunku z. Jest również integerem. Dla zaawansowanych użytkowników przydadzą się jeszcze flagi flags - Tutaj określamy, jakie flagi mają być ustawione na stałe na działce. allowed_flags - Określamy, jakie flagi użytkownik można nałożyć, zdjąć oraz edytować samemu. hidden_flags_from_info - Określamy, jakie flagi mają zostać ukryte, po wpisaniu komendy /ps info Listę wszystkich flag znajdziecie tutaj Region Flags — WorldGuard 7.0 documentation (enginehub.org) Reszta kiedyś Uprawnienia działki Jak każdy plugin, tak i ten ma swoje uprawnienia. Aby je nadać, oraz aby gracze mogli korzystać z działek, trzeba posiadać plugin LuckPerms (PEX jest niewpierany od dawna, oraz zawiera masę błędów, przez głupotę autorów). Listę uprawnień znajdziecie tutaj Permissions · espidev/ProtectionStones Wiki (github.com), a dodajecie ją w sposób następujący /lp group default permission set UPRAWNIENIE true Informacje mniejsze i te większe Wszystko wziąłem stąd ProtectionStones [Updated for 1.13 - 1.16 + WG7] | SpigotMC - High Performance Minecraft oraz z configu pluginu.1 punkt -
Skarga na BrixNW
xMuffionex przyznał(a) reputację Libter za temat
Ze względu na przedstawione dowody oraz brak skruchy @BrixNW - na podstawie §2.1.2.1 regulaminu, w nawiązaniu do §1.2 rozporządzenia o zasłużonych oraz sekcji Kary rozporządzenia o Discordzie: @BrixNW traci tytuł zasłużonego. @BrixNW otrzymuje bana na Discordzie z możliwością odbanowania po kontakcie z administracją nie wcześniej niż 23.09.2020.1 punkt -
Wersja serwera 1.8.8, powiedz mi ile kosztowałby taki skrypt, który opisałem z Twojej strony a z ceną myślę, że byśmy się dogadali raczej0 punktów
-
AntyNogi
rusekh przyznał(a) reputację xxxxddddaaaaxxxx za pytanie
no ze free pluginem to ciężko ale masz ty skryptjeśli dobrze zrozumiałem co to antynogi możesz kogoś poprosić o napisanie pluginu package net.nocny.antynozki; import org.bukkit.plugin.java.JavaPlugin; public class Main extends JavaPlugin{ Main plugin = this; public void onEnable(){ getServer().getPluginManager().registerEvents(new Listeners(this), this); } } package net.nocny.antynozki; import java.util.ArrayList; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.inventory.ItemStack; import net.md_5.bungee.api.ChatColor; public class Listeners implements Listener{ ArrayList<String> pvp = new ArrayList<String>(); Main plugin; public Listeners(Main plugin){ this.plugin = plugin; } public void onDamage(EntityDamageEvent e){ if(e.getEntity() instanceof Player){ Player p = (Player) e.getEntity(); pvp.add(p.getName()); } } public void onPlace(BlockPlaceEvent e){ if(e.getBlock().getType().equals(new ItemStack(Material.COBBLESTONE))){ Player p = e.getPlayer(); if(pvp.contains(p.getName())); e.setCancelled(true); p.sendMessage(ChatColor.RED + "Nie mozesz budowac podczas walki!"); } } public void onLeave(PlayerQuitEvent e){ if(pvp.contains(e.getPlayer().getName())){ pvp.remove(e.getPlayer().getName()); } } }0 punktów
-
Najwięcej postów w tygodniu
-
Najwięcej tematów w tygodniu
-
Aktywni użytkownicy
-
1
-
2
-
