Przejdź do treści
PLSetti
qProRanks

qProRanks - System rankingowy połączony z rangami

autor: Qesik

Plugin do CS2 który wprowadza rozbudowany system rankingowy oparty o punkty rang oraz punkty rankingowe, zapisując przy tym kilkadziesiąt różnych statystyk wraz z tworzeniem podium.

Dostęp do klubu

qProRanks

Zakup dostępu kosztuje 125,00 zł, a każde przedłużenie za 25,00 zł daje 6 miesięcy wsparcia.

Zakup

125,00 zł

Przedłużenie

25,00 zł

Wsparcie

6 miesięcy

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 menu
    • MenuType: 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 jest Kitsune-Menu.

Instalacja

  1. Skopiuj paczkę do folderu csgo.
  2. Skonfiguruj plugin.
  3. 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_rank
  • css_faceit
  • css_ranga
  • css_lvl
  • css_statsme
  • css_playtime
  • css_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ślnie css_hazard, css_h

Komendy administratora

  • css_addpoints
  • css_setpoints
  • css_addrankxp
  • css_setrankxp
  • css_resetpoints
  • css_resetrankxp
  • css_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 menu
    • 2 - 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żnik Rank XP.

PermissionBoost

Boost za konkretne uprawnienia lub flagi.

  • Permission - np. grupa VIP.
  • PointsMultiplier - mnożnik punktów.
  • RankXpMultiplier - mnożnik Rank 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 - minimalne Rank XP wymagane do użycia.
  • MaximumRankXp - maksymalne Rank XP uwzglę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 o Kitsune-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, poprzedni rankId i nowy rankId.
  • GetPlayerRankXp(CCSPlayerController clientId) - zwraca aktualną wartość Rank XP gracza.
  • SetPlayerRankXp(CCSPlayerController clientId, int value) - ustawia graczowi konkretną wartość Rank XP.
  • AddPlayerRankXp(CCSPlayerController clientId, int value, bool isBoost) - dodaje Rank XP do aktualnego stanu i zwraca końcową wartość po zmianie. Parametr isBoost okreś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. Parametr isBoost okreś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) - zwraca true, 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 qProRanks jest 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 XP z uwzględnieniem boostów, użyj metod AddPlayerRankPoints(..., true) lub AddPlayerRankXp(..., 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.