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
- Wgraj paczkę do folderu csgo.
- Skonfiguruj plugin.
- 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ęściejIP:PORT. -
ServerName
Nazwa serwera zapisywana w bazie. -
Permission
truealbofalse.
Gdy ustawisztrue, plugin będzie działał tylko dla graczy z odpowiednim uprawnieniem. -
MinPlayers
Minimalna liczba aktywnych graczy potrzebna do naliczania czasu.
0oznacza 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 allPokazuje pełny zapisany czas gracza. -
!czasgry 7Pokazuje czas z ostatnich 7 dni. -
!czasgry <dni> <steamid64>Pozwala sprawdzić czas wskazanego gracza poSteamID64. -
css_czasgryWewnę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ź
MinPlayersoraz to, czy gracze nie są botami albo HLTV. -
Plugin działa tylko części graczy: sprawdź, czy
Permissionnie jest ustawione natruebez przypisanego uprawnienia@qSpentTime/permission. -
Brak tłumaczeń albo błędne komunikaty: sprawdź, czy katalog
langzostał 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. ZwracanyTuple<int, int>zawiera kolejno: czas gry i czas spect. Jeżeli gracz nie ma danych albo zapytanie nie może zostać wykonane, metoda zwracanull.
Parametr serverAddress pozwala ograniczyć wynik do konkretnego serwera. Jeżeli przekażesz null, plugin użyje aktualnie skonfigurowanego adresu serwera.