qProRanks
qProRanks to rozbudowany plugin rankingowy dla CounterStrikeSharp w Counter-Strike 2. Zlicza statystyki graczy, przyznaje punkty i Rank XP, obsługuje rangi, topki, boosty, podium, obstawianie punktów oraz menu rankingowe.
Funkcje
- Ranking punktowy i system rang.
- Osobny progres
Rank XP. - Rozbudowane statystyki graczy zapisywane w MySQL.
- Topki rankingowe pod komendami czatu/konsoli.
- Hazard oparty o
Rank XP. - Boosty za nazwę oraz za flagi/uprawnienia.
- Podium mapowe.
- Obsługa menu w dwóch wariantach:
MenuType: 1- center/html menuMenuType: 2-Kitsune-Menu
- Komendy gracza do podglądu rangi, punktów, statystyk i czasu gry.
- Komendy administratora do ręcznej edycji punktów oraz
Rank XP. - Wielojęzyczne tłumaczenia z plików
lang. - Walidacja licencji po kluczu przypisanym do adresu serwera.
Wymagania
- Serwer Counter-Strike 2 z CounterStrikeSharp.
- Działająca baza MySQL.
- Poprawnie ustawione IP i port serwera.
- Ważny klucz licencyjny.
- Jeśli chcesz używać
MenuType: 2, wymagane jestKitsune-Menu.
Instalacja
- Skopiuj paczkę do folderu csgo.
- Skonfiguruj plugin.
- Zrestartuj serwer bądź przeładuj plugin.
Pierwsze uruchomienie
Przed startem ustaw w Main.json:
- dane MySQL,
Main.LicenseKey,- komendy rankingowe,
- wartości punktów i
Rank XP, - ustawienia menu,
- opcjonalne boosty, hazard i podium.
Plugin sam tworzy wymagane tabele w bazie danych przy pierwszym poprawnym połączeniu.
Komendy gracza
css_rankcss_faceitcss_rangacss_lvlcss_statsmecss_playtimecss_czasgry- komendy z
Main.RankingCommand, np.css_top,css_top5,css_ranking - komendy z sekcji
RankingTop, np.points,rankxp,kills,damage - komendy z sekcji
Hazard.Commands, domyślniecss_hazard,css_h
Komendy administratora
css_addpointscss_setpointscss_addrankxpcss_setrankxpcss_resetpointscss_resetrankxpcss_podium
Konfiguracja
Główny plik konfiguracyjny:
configs/Qesik/qProRanks/Main.json
Database
Połączenie z bazą MySQL.
Hostname- adres hosta MySQL.Database- nazwa bazy danych.UserName- użytkownik bazy.Password- hasło użytkownika.
Main
Podstawowe ustawienia pluginu.
MinPlayers- minimalna liczba graczy potrzebna do naliczania progresu.WarmupEnable- czy naliczać statystyki podczas warmupu.ShowHint- sposób lub częstotliwość wyświetlania informacji graczowi.SaveDataCountdown- co ile sekund zapisywać dane do bazy.InactiveDays- po ilu dniach nieaktywności usuwać stare dane.StartPoints- liczba punktów startowych dla nowego gracza.SumRoundPoints- sposób zliczania punktów z rundy.TimePlay- interwał naliczania czasu gry.TiebreakerType- sposób rozstrzygania remisów w rankingu.MenuType- typ menu:1- center/html menu2-Kitsune-Menu
LicenseKey- klucz licencyjny pluginu.RankingCommand- lista komend otwierających główne topki rankingu.PlayTimeCommand- włącza lub wyłącza komendy czasu gry.
Promotion
Ustawienia awansów i powiadomień.
Enable- włącza system ogłoszeń awansu.MinRankAnnounceAll- od którego ranku ogłoszenie idzie globalnie.DiscordWebhook- opcjonalny webhook Discord.
NameBoost
Boost za fragment nicku.
NameTag- wymagany tekst w nicku.PointsMultiplier- mnożnik punktów.RankXpMultiplier- mnożnikRank XP.
PermissionBoost
Boost za konkretne uprawnienia lub flagi.
Permission- np. grupa VIP.PointsMultiplier- mnożnik punktów.RankXpMultiplier- mnożnikRank XP.
Hazard
Mini-system hazardu oparty o Rank XP.
Enable- włącza lub wyłącza funkcję.Commands- lista komend aktywujących hazard.ConsolationRewardAmount- nagroda pocieszenia.MinPlayers- minimalna liczba graczy.WinChance- procentowa szansa wygranej.Cooldown- czas odnowienia.WinMultiplier- mnożnik wygranej.WinAnnounceAll- czy ogłaszać wygraną wszystkim.MinimumRankXp- minimalneRank XPwymagane do użycia.MaximumRankXp- maksymalneRank XPuwzględniane przez hazard.
Podium
Ustawienia podium mapowego.
Enable- włącza podium.Type- typ wyświetlania podium.RoundCache- liczba rund używana przez cache.FontName- czcionka używana przez podium.WorldUnitsPerPx- skala renderowania.MaxNickSize- maksymalna długość nicku.
Rank
Lista wszystkich rang.
Każdy wpis zawiera:
Name- nazwa rangi.Points- liczba punktów potrzebna do osiągnięcia rangi.Type- typ wizualny lub logiczny rangi.Id- unikalny identyfikator rangi.
WeaponEnable
Lista broni, dla których plugin ma naliczać statystyki i progres. true włącza broń, false ją pomija.
PointsSettings
Punktacja dla strony Terrorist oraz CounterTerrorists.
Możesz ustawić między innymi:
- punkty za zabójstwa, asysty, zgony i first blood,
- dodatkowe punkty za headshot lub noscope,
- punkty za akcje rundowe, takie jak MVP, clutch, plant, defuse,
- nagrody za wygraną lub przegraną rundę,
- nagrody
MapTop, - osobne premie dla konkretnych broni.
RankXpSettings
Działa analogicznie do PointsSettings, ale steruje przyznawaniem Rank XP.
RankingTop
Definicje dostępnych topów i rankingów szczegółowych.
Każdy wpis zawiera:
Enable- włącza dany ranking.Name- klucz tłumaczenia lub nazwa wyświetlana.Command- komenda otwierająca ranking.Weapon- opcjonalna broń dla rankingu broni.Limit- liczba pozycji do pokazania.Type- typ rankingu.
Menu
Plugin obsługuje dwa tryby menu:
MenuType = 1- klasyczne menu center/html.MenuType = 2- menu oparte oKitsune-Menu.
Jeśli wybierzesz MenuType = 2, upewnij się, że biblioteka Kitsune-Menu jest poprawnie wgrana do shared i działa na serwerze.
API
qProRanks udostępnia publiczne API przez PluginCapability, dzięki czemu inny plugin może odczytywać i modyfikować dane rangi gracza bez bezpośredniej ingerencji w bazę danych.
Capability:
qproranks:api
Interfejs:
public interface IRankAPI
{
event Action<CCSPlayerController, int, int>? OnClientUpdateRank;
int GetPlayerRankXp(CCSPlayerController clientId);
void SetPlayerRankXp(CCSPlayerController clientId, int value);
int AddPlayerRankXp(CCSPlayerController clientId, int value, bool isBoost);
int GetPlayerRankPoints(CCSPlayerController clientId);
void SetPlayerRankPoints(CCSPlayerController clientId, int value);
int AddPlayerRankPoints(CCSPlayerController clientId, int value, bool isBoost);
int GetPlayerRankPosition(CCSPlayerController clientId);
int GetPlayerRankId(CCSPlayerController clientId);
bool PlayerHasMaxRank(CCSPlayerController clientId);
}
Opis metod
OnClientUpdateRank- event wywoływany przy zmianie rangi gracza. Zwraca obiekt gracza, poprzednirankIdi nowyrankId.GetPlayerRankXp(CCSPlayerController clientId)- zwraca aktualną wartośćRank XPgracza.SetPlayerRankXp(CCSPlayerController clientId, int value)- ustawia graczowi konkretną wartośćRank XP.AddPlayerRankXp(CCSPlayerController clientId, int value, bool isBoost)- dodajeRank XPdo aktualnego stanu i zwraca końcową wartość po zmianie. ParametrisBoostokreśla, czy mają zostać uwzględnione mnożniki boosta.GetPlayerRankPoints(CCSPlayerController clientId)- zwraca aktualną liczbę punktów rankingowych.SetPlayerRankPoints(CCSPlayerController clientId, int value)- ustawia graczowi konkretną liczbę punktów rankingowych.AddPlayerRankPoints(CCSPlayerController clientId, int value, bool isBoost)- dodaje punkty rankingowe i zwraca końcową wartość po zmianie. ParametrisBoostokreśla, czy mają zostać uwzględnione mnożniki boosta.GetPlayerRankPosition(CCSPlayerController clientId)- zwraca aktualną pozycję gracza w rankingu.GetPlayerRankId(CCSPlayerController clientId)- zwraca identyfikator aktualnej rangi gracza.PlayerHasMaxRank(CCSPlayerController clientId)- zwracatrue, jeśli gracz osiągnął maksymalną rangę.
Przykład użycia
using CounterStrikeSharp.API.Core;
using CounterStrikeSharp.API.Core.Capabilities;
using qProRanksAPI;
public static class PluginApis
{
public static PluginCapability<IRankAPI> RankApi { get; } = new("qproranks:api");
}
public class ExamplePlugin : BasePlugin
{
private IRankAPI? _rankApi;
public override void Load(bool hotReload)
{
_rankApi = PluginApis.RankApi.Get();
if (_rankApi != null)
{
_rankApi.OnClientUpdateRank += OnClientUpdateRank;
}
}
public override void Unload(bool hotReload)
{
if (_rankApi != null)
{
_rankApi.OnClientUpdateRank -= OnClientUpdateRank;
}
}
private void OnClientUpdateRank(CCSPlayerController player, int oldRank, int newRank)
{
Server.PrintToChatAll($"{player.PlayerName} awansowal z rangi {oldRank} na {newRank}");
}
}
Uwagi do API
- API działa tylko wtedy, gdy
qProRanksjest poprawnie załadowany i aktywny. - Najbezpieczniej sprawdzać, czy capability zostało poprawnie pobrane, zanim wywołasz metody.
- Metody operują na aktualnych danych gracza w pamięci pluginu.
- Jeśli chcesz dodać punkty lub
Rank XPz uwzględnieniem boostów, użyj metodAddPlayerRankPoints(..., true)lubAddPlayerRankXp(..., true).
Uwagi
- Nie zostawiaj domyślnych danych MySQL w produkcji.
- Po większych zmianach w punktacji i rangach warto wykonać test na serwerze lokalnym.
- Jeśli zmieniasz
RankingTop, zadbaj o spójność nazw komend i tłumaczeń. - Jeśli używasz boostów, ustaw rozsądne mnożniki, żeby nie rozjechać ekonomii rankingu.