michal1250 0 Opublikowano 16 grudnia 2020 Udostępnij Opublikowano 16 grudnia 2020 witam zmienna {opu::%player%} ma opóźniać komende /bonus dla nowych graczy automatycznie resetuje się ale nie dam rady jej zresetować dla obecnych graczy, jej wartość dla obecnych wynosi <none> oto kod Odnośnik do komentarza https://skript.pl/temat/43703-problem-z-resetowaniem-zmiennej-player/ Udostępnij na innych stronach Więcej opcji udostępniania...
0 Kormic 1951 Opublikowano 16 grudnia 2020 Udostępnij Opublikowano 16 grudnia 2020 (edytowane) 11 minut temu, michal1250 napisał: witam zmienna {opu::%player%} ma opóźniać komende /bonus dla nowych graczy automatycznie resetuje się ale nie dam rady jej zresetować dla obecnych graczy, jej wartość dla obecnych wynosi <none> oto kod Pamiętasz jak obiecałem ci, że jeżeli będziesz starał się to zrobić to dostaniesz mój sposób? Ponieważ widzę jak z tym walczysz, to nie widzę problemu, aby się nim z tobą podzielić. Oto on: command /test: trigger: # Sprawdzamy czy zmienna jest ustawiona, jeżeli tak to sprawdzamy różnicę, jeżeli nie, to cały warunek jest pomijany, a zmienna zostaje ustawiona w linijce nr 14 if {cooldown::%player%} is set: # Sprawdzamy różnicę między czasem w zmiennej a czasem obecnym if difference between {cooldown::%player%} and now is less than 24 hours: # Jeżeli jest mniejszy niż 24 godziny, wysyłamy do gracza wiadomość i zatrzymujemy skrypt send "&cNie możesz jeszcze użyć tej komendy!" to player stop # Ustawiamy czas obecny do zmiennej gracza, aby móc w przyszłości kontrolować cooldown set {cooldown::%player%} to now # Dalszy kod Powinien ci pomóc rozwiązać wszelkie problemy z twoim kodem. Dzięki niemu linijka 11. w twoim kodzie jest całkowicie zbędna. Co do twojego skryptu mam jeszcze parę uwag: W linijce 16. niepotrzebny jest 'wait 1 second'. W linijce 251. nie powinieneś ustawiać ostatniego odbioru przez gracza nagrody jako czasu obecnego. Z moim sposobem powinno tam się znaleźć: clear {opu::%player%} Komenda /bonusinfo używa zmiennej lokalnej {_slown}, która nigdzie nie jest ustawiona. Należy pamiętać o tym, że zmienne lokalne są czyszczone po dojściu do końca kodu, w którym się znajdują. Komenda /bonusset jest dziwnie skonstruowana. Z tego co widzę w kodzie wyżej to zmienna {log.%player%} nalicza ile razy gracz wszedł na serwer, a w tej komendzie ustawiasz wartość tego jako tekst, przez co dodawanie będzie niemożliwe. Jeżeli już to ta komenda powinna posiadać jedynie argument [<integer=1>] (należy pamiętać, że nawiasy kwadratowe oznaczają opcjonalność, więc można nie podać liczby, a i tak skrypt zapisze wartość, której nie będzie; dlatego też należy dodać do argumentu domyślną wartość, która będzie przyznana do argumentu w przypadku niepodania go) i wtedy zapisujemy do zmiennej wartość argumentu 1. Edytowane 16 grudnia 2020 przez Kormic Odnośnik do komentarza https://skript.pl/temat/43703-problem-z-resetowaniem-zmiennej-player/#findComment-273715 Udostępnij na innych stronach Więcej opcji udostępniania...
0 CoFFeIN04 696 Opublikowano 16 grudnia 2020 Udostępnij Opublikowano 16 grudnia 2020 (edytowane) on first join: add 1 to {log.%player%} set {opu::%player%} to now zamień powyższą na: on join: if {opu::%player%} is not set: set {opu::%player%} to now if {log.%player%} is not set: set {log.%player%} to 1 on first join nie będzie działać, jeśli gracz już był na serwerze Edytowane 16 grudnia 2020 przez CoFFeIN04 Odnośnik do komentarza https://skript.pl/temat/43703-problem-z-resetowaniem-zmiennej-player/#findComment-273716 Udostępnij na innych stronach Więcej opcji udostępniania...
0 michal1250 0 Opublikowano 16 grudnia 2020 Autor Udostępnij Opublikowano 16 grudnia 2020 (edytowane) Godzinę temu, Kormic napisał: Pamiętasz jak obiecałem ci, że jeżeli będziesz starał się to zrobić to dostaniesz mój sposób? Ponieważ widzę jak z tym walczysz, to nie widzę problemu, aby się nim z tobą podzielić. Oto on: command /test: trigger: # Sprawdzamy czy zmienna jest ustawiona, jeżeli tak to sprawdzamy różnicę, jeżeli nie, to cały warunek jest pomijany, a zmienna zostaje ustawiona w linijce nr 14 if {cooldown::%player%} is set: # Sprawdzamy różnicę między czasem w zmiennej a czasem obecnym if difference between {cooldown::%player%} and now is less than 24 hours: # Jeżeli jest mniejszy niż 24 godziny, wysyłamy do gracza wiadomość i zatrzymujemy skrypt send "&cNie możesz jeszcze użyć tej komendy!" to player stop # Ustawiamy czas obecny do zmiennej gracza, aby móc w przyszłości kontrolować cooldown set {cooldown::%player%} to now # Dalszy kod Powinien ci pomóc rozwiązać wszelkie problemy z twoim kodem. Dzięki niemu linijka 11. w twoim kodzie jest całkowicie zbędna. Co do twojego skryptu mam jeszcze parę uwag: W linijce 16. niepotrzebny jest 'wait 1 second'. W linijce 251. nie powinieneś ustawiać ostatniego odbioru przez gracza nagrody jako czasu obecnego. Z moim sposobem powinno tam się znaleźć: clear {opu::%player%} Komenda /bonusinfo używa zmiennej lokalnej {_slown}, która nigdzie nie jest ustawiona. Należy pamiętać o tym, że zmienne lokalne są czyszczone po dojściu do końca kodu, w którym się znajdują. Komenda /bonusset jest dziwnie skonstruowana. Z tego co widzę w kodzie wyżej to zmienna {log.%player%} nalicza ile razy gracz wszedł na serwer, a w tej komendzie ustawiasz wartość tego jako tekst, przez co dodawanie będzie niemożliwe. Jeżeli już to ta komenda powinna posiadać jedynie argument [<integer=1>] (należy pamiętać, że nawiasy kwadratowe oznaczają opcjonalność, więc można nie podać liczby, a i tak skrypt zapisze wartość, której nie będzie; dlatego też należy dodać do argumentu domyślną wartość, która będzie przyznana do argumentu w przypadku niepodania go) i wtedy zapisujemy do zmiennej wartość argumentu 1. dzięki użyłem tego kodu i opóźnienie świetnie działa tylko chciałem aby podczas zbyt częstego powtarzania tej komendy pokazywało za ile można jej użyć i coś mi nie działa if {cooldown::%player%} is set: if difference between {cooldown::%player%} and now is less than 24 hours: set {_cos.%player%} to difference between {cooldown::%player%} and {_jeszcze.%player%} add {cooldown::%player%} to {_jeszcze.%player%} wait 1 tick add 86400 second to {_jeszcze.%player%} # Jeżeli jest mniejszy niż 24 godziny, wysyłamy do gracza wiadomość i zatrzymujemy skrypt send "&cNie możesz jeszcze użyć tej komendy! %{_cos.%player%}%" to player stop Edytowane 16 grudnia 2020 przez xNightPower_ Umieszczam kod w code. Odnośnik do komentarza https://skript.pl/temat/43703-problem-z-resetowaniem-zmiennej-player/#findComment-273742 Udostępnij na innych stronach Więcej opcji udostępniania...
0 Kormic 1951 Opublikowano 16 grudnia 2020 Udostępnij Opublikowano 16 grudnia 2020 Teraz, michal1250 napisał: dzięki użyłem tego kodu i opóźnienie świetnie działa tylko chciałem aby podczas zbyt częstego powtarzania tej komendy pokazywało za ile można jej użyć i coś mi nie działa if {cooldown::%player%} is set: if difference between {cooldown::%player%} and now is less than 24 hours: set {_cos.%player%} to difference between {cooldown::%player%} and {_jeszcze.%player%} add {cooldown::%player%} to {_jeszcze.%player%} wait 1 tick add 86400 second to {_jeszcze.%player%} # Jeżeli jest mniejszy niż 24 godziny, wysyłamy do gracza wiadomość i zatrzymujemy skrypt send "&cNie możesz jeszcze użyć tej komendy! %{_cos.%player%}%" to player stop Musisz wysłać różnicę między {_jeszcze.%player%} a {cooldown::%player%}. Wtedy otrzymasz czas pozostały do ponownego odbioru. Odnośnik do komentarza https://skript.pl/temat/43703-problem-z-resetowaniem-zmiennej-player/#findComment-273744 Udostępnij na innych stronach Więcej opcji udostępniania...
0 michal1250 0 Opublikowano 16 grudnia 2020 Autor Udostępnij Opublikowano 16 grudnia 2020 8 minut temu, Kormic napisał: Musisz wysłać różnicę między {_jeszcze.%player%} a {cooldown::%player%}. Wtedy otrzymasz czas pozostały do ponownego odbioru. jeśli dobrze rozumiem to chodzi o send "&cNie możesz jeszcze użyć tej komendy! %{_cos::%player%}%" to player mam taką linijkę i wyświetla wartość zmiennej jak <none> Odnośnik do komentarza https://skript.pl/temat/43703-problem-z-resetowaniem-zmiennej-player/#findComment-273751 Udostępnij na innych stronach Więcej opcji udostępniania...
0 Kormic 1951 Opublikowano 16 grudnia 2020 Udostępnij Opublikowano 16 grudnia 2020 Teraz, michal1250 napisał: jeśli dobrze rozumiem to chodzi o send "&cNie możesz jeszcze użyć tej komendy! %{_cos::%player%}%" to player mam taką linijkę i wyświetla wartość zmiennej jak <none> Nie, źle to robisz. Niech stracę, pokażę ci. set {_zmienna} to {cooldown::%player%} add 24 hours to {_zmienna} send "Musisz odczekać jeszcze %difference between {_zmienna} and {cooldown::%player%}%!" Już rozumiesz? Jeżeli chcesz przetłumaczyć ten czas na polski, musisz utworzyć funkcję, która będzie przyjmowała typ 'timespan', będzie zmieniała go na tekst, w tekście będzie zamieniała angielski czas na polskie odpowiedniki i na końcu zwróci tekst. Brzmi zagmatwanie, wiem. Jeżeli mimo wszystko chciałbyś to osiągnąć, mogę ci pokazać jak to zrobić. Tutaj masz mały wstęp do funkcji: https://wiki.skript.pl/Funkcje Odnośnik do komentarza https://skript.pl/temat/43703-problem-z-resetowaniem-zmiennej-player/#findComment-273753 Udostępnij na innych stronach Więcej opcji udostępniania...
0 michal1250 0 Opublikowano 16 grudnia 2020 Autor Udostępnij Opublikowano 16 grudnia 2020 dzięki ładnie działa do zamknięcia Odnośnik do komentarza https://skript.pl/temat/43703-problem-z-resetowaniem-zmiennej-player/#findComment-273754 Udostępnij na innych stronach Więcej opcji udostępniania...
0 Gość Usunięty#34161 Opublikowano 16 grudnia 2020 Udostępnij Opublikowano 16 grudnia 2020 Problem został rozwiązany. Odnośnik do komentarza https://skript.pl/temat/43703-problem-z-resetowaniem-zmiennej-player/#findComment-273758 Udostępnij na innych stronach Więcej opcji udostępniania...
Pytanie
michal1250 0
witam zmienna {opu::%player%} ma opóźniać komende /bonus dla nowych graczy automatycznie resetuje się ale nie dam rady jej zresetować dla obecnych graczy, jej wartość dla obecnych wynosi <none>
oto kod
Odnośnik do komentarza
https://skript.pl/temat/43703-problem-z-resetowaniem-zmiennej-player/Udostępnij na innych stronach
8 odpowiedzi na to pytanie
Rekomendowane odpowiedzi