40
edycji
Zmiany
Przejdź do nawigacji
Przejdź do wyszukiwania
brak opisu edycji
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 [https://skript.pl/temat/34625-axcooldown-zarz%C4%85dzanie-cooldownem/ AxCooldown] który służy do zarządzania cooldownem autorstwa [[Użytkownik:XAxee|xAxee]].
== Cooldown w kodzie==
Na początku należy napisać, co ma wywoływać kod. Przykład rzucanego TNT z cooldownem:
<pre>on rightclick on tnt:
[[Zdarzenia|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.
<pre>set {_czas} to difference between {tntrzut::%player%} and now
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:<pre>
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"
</pre><br />
== AxCooldown - Opis funkcji ==
Skrypt posiada wiele funkcji które ułatwiaja korzystanie z cooldownu. Wszystkie funkcje:
{| class="wikitable"
|+
!Funkcjia
!Opis
!Typ zwracanej wartości
!Przykład zwracanej wartości
|-
|<code>createCooldown(%string%, %time span%)</code>
|Tworzy cooldown
| ---
| ---
|-
|<code>deleteCooldown(%string%)</code>
|Usuwa cooldown
| ---
| ---
|-
|<code>setCooldown(%player%, %boolean%)</code>
|Ustawia graczowi cooldown na true / false
| ---
| ---
|-
|<code>getCooldown(%player%, %string%)</code>
|Zwraca czy cooldown gracza już minął
|boolean
|<code>'''true'''</code>
|-
|<code>getCooldownBoolean(%player%, %string%)</code>
|Zwraca czy cooldown gracza już minął
|boolean
|<code>'''true'''</code>
|-
|<code>getCooldownDate(%player%, %string%)</code>
|Zwraca date wygaśnięcia cooldownu
|date
|<code>'''28.12.19 15:00'''</code>
|-
|<code>getCooldownTime(%player%, %string%)</code>
|Zwraca czas wygaśnięcia cooldownu
|time span
|<code>'''12 second'''</code>
|-
|<code>getCooldownText(%player%, %string%)</code>
|Zwraca przetłumaczony czas wygaśnięcia cooldownu
|Text
|<code>'''12 sekund'''</code>
|}
== AxCooldown - Wykorzystanie ==
=== Wzór ogólny: ===
<pre>
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>)
</pre>
=== Przykład i opisanie ===
Napoczątku musimy stworzyć nasz cooldown, najlepiej w evencie '''on load:''' <pre>
on laod:
createCooldown("Komendy", 3 second)
</pre>Nastepnie w naszym kodzie musimy sprawdzić czy Cooldown juz minął:<pre>
on command:
if getCooldown(player, "Komendy") is true:
</pre>Następnie ustawiamy cooldown gracza, i wysyłamy wiadomość gdy nasza funkcja zwróciła wartość '''false'''<pre>
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")"%"
</pre>Całość powinna wyglądać tak:<pre>
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")"%"
</pre>
[[Kategoria:Skript]]