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

Z wiki.skript.pl
Przejdź do nawigacji Przejdź do wyszukiwania
(Utworzono nową stronę "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ła...")
 
m (3meraldK przeniósł stronę Ograniczenia częstotliwości do Odstępy czasowe: normalne spolszczenie ?xD)
 
(Nie pokazano 5 wersji utworzonych przez 3 użytkowników)
Linia 1: Linia 1:
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 [[ekspresje]].
+
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 ==
+
==Cooldown w kodzie==
 
Na początku należy napisać, co ma wywoływać kod. Przykład rzucanego TNT z cooldownem:
 
Na początku należy napisać, co ma wywoływać kod. Przykład rzucanego TNT z cooldownem:
 
<pre>on rightclick on tnt:
 
<pre>on rightclick on tnt:
Linia 7: Linia 7:
 
[[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''.
 
[[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:
 
Teraz należy użyć dwóch zmiennych:
* zmiennej tymczasowej
+
 
* zmiennej przypisanej do gracza
+
*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.
 
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
 
<pre>set {_czas} to difference between {tntrzut::%player%} and now
Linia 18: Linia 20:
 
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.
 
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 load:
 +
    createCooldown("Komendy", 3 second)</pre>Nastepnie w naszym kodzie musimy sprawdzić czy Cooldown juz minął:</pre>
 +
<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]]
 
[[Kategoria:Skript]]

Aktualna wersja na dzień 22:09, 2 lis 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")"%"