←  Pytania dotyczące pluginów

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] Czas gracza online

Locked

  • +
  • -
Last One's Photo 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ę

Quote

  • +
  • -
Wielkie Jol's Photo 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.

http://amxx.pl/topic...85-czas-online/

Quote

  • +
  • -
Last One's Photo 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?

Quote

  • +
  • -
Last One's Photo 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.

Quote

  • +
  • -
Wielkie Jol's Photo 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.
Quote

  • +
  • -
Last One's Photo Last One 16.12.2014

Dziękuję. :)
Quote

  • +
  • -
dasiek's Photo dasiek 17.12.2014

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Quote
Locked