[ROZWIĄZANE] Czas gracza online
Last One
16.12.2014
Witam. Mam HUD w bf2 takie jak w codzie i chciałem do niego dodać łączny czas spędzony na serwerze.
I tu jest moje pytanie. Jakiej funkcji użyć, aby czas był zapisywany każdemu graczowi z osobna i sumowany? Jak w wyświetlaniu ustawić godziny i minuty?
Jestem u początków pisania pluginów. Obecnie mam wpisaną funkcję get_user_time lecz ona liczy tylko w sekundach i resetuje się przy reconnect'cie.
Z góry dziękuję
Wielkie Jol
16.12.2014
Musisz poczytać trochę o zapisie informacji ( nvault, sql ) i wtedy zapisywać po każdym wyjściu gracza z serwera czas, jaki spędzał na serwerze, dodawać go i przy wejściu gracza na serwer pobierać.
Tu masz przykładowy plugin napisany przez Miśka i ByczQa, ale różni się on tym, że nie jest wyświetlane w grze, tylko na podanej przez Ciebie stronie.
Last One
16.12.2014
Dzięki wielkie.
A masz może rozwiązanie na to, aby czas był pokazywany w godzinach i minutach a nie tylko sekundach?
Last One
16.12.2014
Piszę w odpowiedzi bo nie mogę edytować postu.
Jeśli ktoś z forum miałby chwilkę czasu i mi pomógł to byłbym naprawdę wdzięczny. Nie liczę na to że ktoś zrobi to za mnie, bo jak bym wiedział to bym sam to zrobił, tylko proszę o pomoc w napisaniu tego.
Ten kod chciałbym później umieścić w bf2 tak, aby w HUD pokazywany był wynik, czyli czas łącznie spędzony na serwerze. HUD mam już gotowe i dodanie tego do HUD to moment. Tylko jeszcze jest jeden szkopuł. Funkcja get_user_time pobiera czas w sekundach. Jak zrobić, aby było to pokazywane w minutach i godzinach.
Z góry dzięki i pozdrawiam.
Wielkie Jol
16.12.2014
Czysta matematyka, załóżmy, że masz do wyświetlenia same minuty.
Minuta to 60 sekund.
Więc patrzysz, ile grasz przegrał sekund
ilosc_minut = ilosc_sekund / 60
Wyjdzie nieładna liczba przy dzieleniu, jeżeli dla przykładu gracz będzie miał przegrane 63 sekundy, więc radzę to liczbę zaokrąglać w dół do najbliższej liczby całkowitej( mowa oczywiście o minutach, nie o sekundach ) .
Następnie sprawdzamy ile gracz przegrał sekund, no bo minuty już w zasadzie mamy policzone. Wykorzystamy do tego operację modulo, która zwraca resztę z dzielenia. Dzielimy więc w takim razie naszą ilość sekund przez 60
W ten sposób otrzymamy np. taki kod:
public test(id){ ilosc_sekund = get_user_time(id, 1) // pobieramy ile gracz gral sekund na serwerze ilosc_minut = floatround(ilosc_sekund / 60, floatround_floor); // sprawdzamy czy ilosc sekund przegranych dzieli sie przez 60, zaokraglamy w dol. client_print(id, print_chat, "Czas przegrany w minutach i sekundach: %d - %d", ilosc_minut, ilosc_sekund % 60); // wyswietlamy }
Powinno działać, ja to zrobiłem w pascalu, bo specjalnie mi się CS'a nie chciało odpalać by sprawdzić, ale powinno działać na tej samej zasadzie.
Edited by Wielkie Jol, 16.12.2014 20:35.
dasiek
17.12.2014
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz, raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
Z pozdrowieniami,
Zespół AMXX.PL