Przejdź do treści
PLSetti
Rozszerzony

qSpentTime - Zliczanie czasu gry danych graczy na spect lub w grze

autor: Qesik

Plugin do CS2 którego zadaniem jest zliczanie czasu graczy zarówno w grze jak i na spect, a całość zapisywana jest w bazie danych mysql co pozwala na tworzeniem statystyk na stronie.

Dostęp do klubu

Rozszerzony

Zakup dostępu kosztuje 100,00 zł, a każde przedłużenie za 40,00 zł daje 1 miesiąc wsparcia.

Zakup

100,00 zł

Przedłużenie

40,00 zł

Wsparcie

1 miesiąc

qSpentTime

qSpentTime to plugin dla CounterStrikeSharp, który zapisuje czas spędzony przez graczy na serwerze oraz czas na spectatorze. Dane są przechowywane w bazie MySQL, dzięki czemu można później sprawdzać statystyki graczy z wybranego okresu.

Plugin sprawdza się wszędzie tam, gdzie chcesz:

  • zliczać czas gry graczy,
  • zliczać czas spędzony na spect,
  • ograniczyć naliczanie czasu tylko do sytuacji, gdy na serwerze jest wystarczająco dużo graczy,
  • odczytywać czas z komendy gracza,
  • udostępnić czas gry także innym pluginom przez dołączone API.

Funkcje

  • zapis czasu gry i czasu spect do MySQL,
  • automatyczne tworzenie wymaganych tabel przy starcie,
  • odczyt czasu dla konkretnego gracza,
  • obsługa zakresu dni lub pełnej historii,
  • możliwość ograniczenia działania pluginu do graczy z uprawnieniem,
  • pliki językowe w katalogu lang.

Instalacja

  1. Wgraj paczkę do folderu csgo.
  2. Skonfiguruj plugin.
  3. Zrestartuj serwer bądź przeładuj plugin.

Konfiguracja

Plik konfiguracyjny znajduje się tutaj:

addons/counterstrikesharp/configs/Qesik/SpentTime.json

Przykładowa konfiguracja:

{
  "Database": {
    "Hostname": "hostname",
    "Database": "database",
    "UserName": "username",
    "Password": "password"
  },
  "ServerIp": "123.123.123.123:27015",
  "ServerName": "NazwaSieci.pl [MIRAGE]",
  "Permission": false,
  "MinPlayers": 2,
  "SaveDataCountdown": 240
}

Opis pól

  • Database.Hostname
    Adres hosta bazy danych MySQL.

  • Database.Database
    Nazwa bazy danych, w której plugin będzie zapisywał dane.

  • Database.UserName
    Login użytkownika MySQL.

  • Database.Password
    Hasło użytkownika MySQL.

  • ServerIp
    Adres serwera używany przy zapisie danych. Najczęściej IP:PORT.

  • ServerName
    Nazwa serwera zapisywana w bazie.

  • Permission
    true albo false.
    Gdy ustawisz true, plugin będzie działał tylko dla graczy z odpowiednim uprawnieniem.

  • MinPlayers
    Minimalna liczba aktywnych graczy potrzebna do naliczania czasu.
    0 oznacza brak limitu.

  • SaveDataCountdown
    Co ile sekund plugin zapisuje bieżące dane graczy do bazy.
    Mniejsza wartość oznacza częstszy zapis.

Uprawnienia

Jeżeli Permission jest ustawione na true, plugin sprawdza uprawnienie:

@qSpentTime/permission

Nadaj je tylko tym grupom lub graczom, dla których czas ma być zliczany.

Użycie

Komendy

  • !czasgry all Pokazuje pełny zapisany czas gracza.

  • !czasgry 7 Pokazuje czas z ostatnich 7 dni.

  • !czasgry <dni> <steamid64> Pozwala sprawdzić czas wskazanego gracza po SteamID64.

  • css_czasgry Wewnętrzna nazwa komendy konsolowej.

Baza danych

Plugin sam przygotowuje potrzebne struktury w bazie podczas uruchamiania. Konto MySQL powinno mieć uprawnienia pozwalające na:

  • tworzenie tabel,
  • modyfikację tabel,
  • dodawanie indeksów,
  • odczyt i zapis danych.

Najczęstsze problemy

  • Plugin nie zapisuje czasu: sprawdź dane dostępowe MySQL i upewnij się, że baza jest osiągalna z maszyny serwera.

  • Czas nie nalicza się: sprawdź MinPlayers oraz to, czy gracze nie są botami albo HLTV.

  • Plugin działa tylko części graczy: sprawdź, czy Permission nie jest ustawione na true bez przypisanego uprawnienia @qSpentTime/permission.

  • Brak tłumaczeń albo błędne komunikaty: sprawdź, czy katalog lang został skopiowany do folderu pluginu.

API

Paczka zawiera także qSpentTimeAPI.dll, dzięki któremu inne pluginy mogą korzystać z danych czasu gry. Jeżeli nie używasz integracji z innymi pluginami, po prostu zostaw tę bibliotekę w katalogu shared.

Interfejs API:

public interface ISpentTimeAPI
{
    int GetPlayerPlayTime(CCSPlayerController player);

    int GetPlayerSpectTime(CCSPlayerController player);

    Task<Tuple<int, int>?> GetPlayerTimeAsync(ulong steamId, DateTime from, DateTime to, string? serverAddress);
}

Opis metod:

  • GetPlayerPlayTime(CCSPlayerController player) Zwraca aktualny czas spędzony przez gracza w grze podczas bieżącej sesji, w sekundach.

  • GetPlayerSpectTime(CCSPlayerController player) Zwraca aktualny czas spędzony przez gracza na spect podczas bieżącej sesji, w sekundach.

  • GetPlayerTimeAsync(ulong steamId, DateTime from, DateTime to, string? serverAddress) Pobiera zapisany czas gracza z bazy danych dla podanego zakresu dat. Zwracany Tuple<int, int> zawiera kolejno: czas gry i czas spect. Jeżeli gracz nie ma danych albo zapytanie nie może zostać wykonane, metoda zwraca null.

Parametr serverAddress pozwala ograniczyć wynik do konkretnego serwera. Jeżeli przekażesz null, plugin użyje aktualnie skonfigurowanego adresu serwera.