Odstępy czasowe: Różnice pomiędzy wersjami

Z wiki.skript.pl
Przejdź do nawigacji Przejdź do wyszukiwania
(Przykład i opisanie)
(Przykład i opisanie)
Linia 97: Linia 97:
  
 
=== Przykład i opisanie ===
 
=== Przykład i opisanie ===
Napoczątku musimy stworzyć nasz cooldown, najlepiej w evencie '''on load:''' <pre>
+
Napoczątku musimy stworzyć nasz cooldown, najlepiej w evencie '''on load:'''  
on load:
+
<pre>on load:
     createCooldown("Komendy", 3 second)
+
     createCooldown("Komendy", 3 second)</pre>Nastepnie w naszym kodzie musimy sprawdzić czy Cooldown juz minął:</pre>
</pre>Nastepnie w naszym kodzie musimy sprawdzić czy Cooldown juz minął:<pre>
+
<pre>on command:
on command:
+
     if getCooldown(player, "Komendy") is true:</pre>
     if getCooldown(player, "Komendy") is true:
+
Następnie ustawiamy cooldown gracza, i wysyłamy wiadomość gdy nasza funkcja zwróciła wartość '''false'''
</pre>Następnie ustawiamy cooldown gracza, i wysyłamy wiadomość gdy nasza funkcja zwróciła wartość '''false'''<pre>
+
<pre>on command:
on command:
 
 
     if getCooldown(player, "Komendy") is true:
 
     if getCooldown(player, "Komendy") is true:
 
         setCooldown(player, "Komendy")
 
         setCooldown(player, "Komendy")
 
     else:
 
     else:
 
         cancel event
 
         cancel event
         send "&7Nie mozesz uzyc jeszcze komendy przez: &c%getCooldownText(player, "Komendy")"%"
+
         send "&7Nie mozesz uzyc jeszcze komendy przez: &c%getCooldownText(player, "Komendy")"%"</pre>
</pre>Całość powinna wyglądać tak:<pre>
+
Całość powinna wyglądać tak:
on load:
+
<pre>on load:
 
     createCooldown("Komendy", 5 second)
 
     createCooldown("Komendy", 5 second)
 
on command:
 
on command:
Linia 118: Linia 117:
 
     else:
 
     else:
 
         cancel event
 
         cancel event
         send "&7Nie mozesz uzyc jeszcze komendy przez: &c%getCooldownText(player, "Komendy")"%"
+
         send "&7Nie mozesz uzyc jeszcze komendy przez: &c%getCooldownText(player, "Komendy")"%"</pre>
</pre>
 
 
[[Kategoria:Skript]]
 
[[Kategoria:Skript]]

Wersja z 21:09, 28 paź 2019

Tworzenie cooldownów polegających na użyciu periodicalu nie są opłacalne, wręcz są one zagrażające dla wydajności serwera i bardzo go obciążają zakładając dużą liczbę graczy na serwerze, dlatego aby zapobiec temu i dodatkowo napisać działający cooldown dla komend, wydarzeń i efektów należy wykorzystać zmienne i wyrażenia. Można również pomóc sobie skryptem AxCooldown który służy do zarządzania cooldownem autorstwa xAxee.

Cooldown w kodzie

Na początku należy napisać, co ma wywoływać kod. Przykład rzucanego TNT z cooldownem:

on rightclick on tnt:
    if player's tool is tnt of unbreaking 10 named "&cRzucane TNT":

Zdarzenie on rightclick: wywołuje się wtedy, kiedy gracz naciśnie prawy przycisk myszy. Skript sprawdza, czy gracz trzyma TNT o nazwie &cRzucane TNT. Teraz należy użyć dwóch zmiennych:

  • zmiennej tymczasowej
  • zmiennej przypisanej do gracza

Zmienna tymczasowa pozwoli nam na określenie ile upłynęło czasu od ostatniego rzutu TNT i czasu obecnego określanego wyrażeniem %now%. Zmienne tymczasowe nie obciążają serwera, ponieważ zostają one automatycznie usuwane po zakończeniu sekcji kodu.

set {_czas} to difference between {tntrzut::%player%} and now
if {_czas} isn't less than 10 seconds:
    #kod
    set {tntrzut::%player%} to now
else:
    send "Poczekaj 10 sekund"

Jeżeli zmienna tymczasowa nie jest mniejsza niż <timespan>, w tym przypadku 10 sekund to kod powinien się wykonać. W innym przypadku gracz otrzyma wiadomość "Poczekaj 10 sekund". Po wykonaniu części kodu ustawiamy zmienną {tntrzut::%player%} na %now% czyli teraz.

Cooldown w komendzie

Skript od pewnej wersji posiada wspomaganie do cooldownów w komendach. Aby go użyć, starczy dodać w sekcji komendy cooldown: <timespan> możemy również użyć cooldown message: <text>, które wyświetli wiadomość, gdy cooldown nie minął.

np:

command /prezent [<text>]:
	cooldown: 1 day
	cooldown message: Jeszcze nie mozesz uzyc tej komendy
	trigger:
		add (diamond or iron ingot or gold ingot) to player
		send "&7Odebrano"


AxCooldown - Opis funkcji

Skrypt posiada wiele funkcji które ułatwiaja korzystanie z cooldownu. Wszystkie funkcje:

Funkcjia Opis Typ zwracanej wartości Przykład zwracanej wartości
createCooldown(%string%, %time span%) Tworzy cooldown --- ---
deleteCooldown(%string%) Usuwa cooldown --- ---
setCooldown(%player%, %boolean%) Ustawia graczowi cooldown na true / false --- ---
getCooldown(%player%, %string%) Zwraca czy cooldown gracza już minął boolean true
getCooldownBoolean(%player%, %string%) Zwraca czy cooldown gracza już minął boolean true
getCooldownDate(%player%, %string%) Zwraca date wygaśnięcia cooldownu date 28.12.19 15:00
getCooldownTime(%player%, %string%) Zwraca czas wygaśnięcia cooldownu time span 12 second
getCooldownText(%player%, %string%) Zwraca przetłumaczony czas wygaśnięcia cooldownu Text 12 sekund

AxCooldown - Wykorzystanie

Wzór ogólny:

on load:
    createCooldown(<cooldown name>, <time>)
<zdarzenie/komenda/interwał>:
    if getCooldown(<player>, <cooldown name>) is true:
        setCooldown(<player>, <cooldown name>)
        #kod
    else:
        send getCooldownText(<player>, <cooldown name>)

Przykład i opisanie

Napoczątku musimy stworzyć nasz cooldown, najlepiej w evencie on load:

on load:
    createCooldown("Komendy", 3 second)

Nastepnie w naszym kodzie musimy sprawdzić czy Cooldown juz minął:

on command:
    if getCooldown(player, "Komendy") is true:

Następnie ustawiamy cooldown gracza, i wysyłamy wiadomość gdy nasza funkcja zwróciła wartość false

on command:
    if getCooldown(player, "Komendy") is true:
        setCooldown(player, "Komendy")
    else:
        cancel event
        send "&7Nie mozesz uzyc jeszcze komendy przez: &c%getCooldownText(player, "Komendy")"%"

Całość powinna wyglądać tak:

on load:
    createCooldown("Komendy", 5 second)
on command:
    if getCooldown(player, "Komendy") is true:
        setCooldown(player, "Komendy")
    else:
        cancel event
        send "&7Nie mozesz uzyc jeszcze komendy przez: &c%getCooldownText(player, "Komendy")"%"