Skocz do zawartości
  • 0

Timer i exp


ItsMeTeyahi
 Udostępnij

Pytanie

Witam.

Krótko i na temat:

1. Jak zrobić timer z dokładnością co do 0,001s?

Zrobiłem za pomocą System.currentTimeMillis(), ale po jakimś czasie skapłem się ze nie mierzy to dokładnie. Przewazne czasy to, np. 1,550sekundy, 2,350 sekundy, 7,400sekundy, a chcialbym dokładne, np. 1,583sekundy :/

2. Chol*rny pasek exp.

Chciałem zrobić aby zapełniał się razem z timerem, tj. 1sekunda - 1lvl (płynnie)

Robiłem np. p.giveExp(p.getExpToLevel() *10 /100); w schedulerze co 2 ticki, wiec czysto matematycznie powinno sie zgadzac, ale w ostatecznosci nie dostaje nic expa.

Próbowałem juz chyba wszystkie kombinacje i przeszukiwałem fora ale no nie ma odpowiedzi, lub nie dalem rady znalezc.

Ogarnie ktoś :/ ?

Odnośnik do komentarza
Udostępnij na innych stronach

2 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 1
12 godzin temu, ItsMeTeyahi napisał:

Witam.

Krótko i na temat:

1. Jak zrobić timer z dokładnością co do 0,001s?

Zrobiłem za pomocą System.currentTimeMillis(), ale po jakimś czasie skapłem się ze nie mierzy to dokładnie. Przewazne czasy to, np. 1,550sekundy, 2,350 sekundy, 7,400sekundy, a chcialbym dokładne, np. 1,583sekundy :/

2. Chol*rny pasek exp.

Chciałem zrobić aby zapełniał się razem z timerem, tj. 1sekunda - 1lvl (płynnie)

Robiłem np. p.giveExp(p.getExpToLevel() *10 /100); w schedulerze co 2 ticki, wiec czysto matematycznie powinno sie zgadzac, ale w ostatecznosci nie dostaje nic expa.

Próbowałem juz chyba wszystkie kombinacje i przeszukiwałem fora ale no nie ma odpowiedzi, lub nie dalem rady znalezc.

Ogarnie ktoś :/ ?

1. Mozesz sprobowac jeszcze z nanoTime() (pamietaj ze zeby z niego zrobic milisekunde musisz podzielić przez 1,000,000). Millis i nanoTime to chyba najlepsze sposoby na timer, a działać tak ci moze dlatego bo pewnie masz serwer na swoim kompie lub moze idealnie konczysz timer kiedy sa równe liczby :P 

2. Właśnie czysto matematycznie się nie zgadza :o 

Skoro startujesz z 0 lvlu, to do pierwszego potrzebujesz 7xp'a, podstawiając 7 do równania wychodzi pod koniec, że 7 chcesz podzielic przez 10, a w związku z tym, że są to int'y, to nie mają nigdy nic po przecinku, czyli zamiast 0,7xp'a, daje mu 0xp. Błędne koło :) 

Spróbuj z większym procentem albo baw się if'ami, wiedząc, że dopiero od 3 lvl'a potrzebny exp > 10 i będzie działać.

Powodzonka :D 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
16 minut temu, LikeIkeOne (Nupix) napisał:

1. Mozesz sprobowac jeszcze z nanoTime() (pamietaj ze zeby z niego zrobic milisekunde musisz podzielić przez 1,000,000). Millis i nanoTime to chyba najlepsze sposoby na timer, a działać tak ci moze dlatego bo pewnie masz serwer na swoim kompie lub moze idealnie konczysz timer kiedy sa równe liczby :P 

2. Właśnie czysto matematycznie się nie zgadza :o 

Skoro startujesz z 0 lvlu, to do pierwszego potrzebujesz 7xp'a, podstawiając 7 do równania wychodzi pod koniec, że 7 chcesz podzielic przez 10, a w związku z tym, że są to int'y, to nie mają nigdy nic po przecinku, czyli zamiast 0,7xp'a, daje mu 0xp. Błędne koło :) 

Spróbuj z większym procentem albo baw się if'ami, wiedząc, że dopiero od 3 lvl'a potrzebny exp > 10 i będzie działać.

Powodzonka :D 

Ahaaa xd 

Dobra dzięki za odpowiedź, problem rozwiązany :D 

Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...