Zaloguj się przez SteamResetuj swoje statystyki, dodawaj serwery do ulubionych, obserwuj Pulse serwerów i graczy, oceniaj i komentuj, dodawaj oraz przypinaj wpisy, edytuj własne serwery i znacznie więcej…
Zaloguj
Plugin RustOxideCarbonDarmowy

Dokumentacja MajestatTopCore

Architektura, instalacja, moduły, komendy czatu i konsoli, uprawnienia, pełna konfiguracja i pliki danych.

Spis treści
  1. Architektura
  2. Instalacja i zależności
  3. Połączenie z siecią Majestat — ID serwera i token
  4. Serwer jest już na liście (najczęstszy przypadek)
  5. Serwera nie ma na liście (prywatny / nowy)
  6. Skąd wziąć token (NET - Token)
  7. Masz już dwa wpisy tego samego serwera?
  8. Moduły
  9. Komendy czatu
  10. Rankingi i statystyki (Core)
  11. Panel INFO / regulamin (Info)
  12. Głosowanie na mapę (Vote)
  13. Sieć globalna (Net)
  14. Komendy konsoli / RCON
  15. Core
  16. Core — komendy wewnętrzne UI (wywoływane przez przyciski panelu)
  17. Info
  18. Vote
  19. Net
  20. Uprawnienia
  21. Pełna konfiguracja
  22. MajestatTopCore.json (pełny, w kolejności generowania)
  23. CORE — opis pól
  24. NET — sieć globalna (ranking między serwerami)
  25. WEB — panel WWW, czat, mapa
  26. VOTE — głosowanie na mapę następnego wipe
  27. INFO — panel /help / regulamin + broadcast
  28. Pliki danych
  29. Wydajność i zachowanie w czasie pracy

System statystyk, rankingów, panelu WWW, głosowania na mapę i sieci globalnej dla serwerów Rust (Oxide/uMod). Autor: Wo0t. Aktualna wersja: 4.0.0 (Release Candidate 1 — pierwsze wydanie produkcyjne).

Jeden plugin, jeden config. Cały system to jeden plik MajestatTopCore.cs i jeden płaski config oxide/config/MajestatTopCore.json. Statystyki (Build/Gather/Loot), panel WWW, mapa, głosowanie, panel info i sieć globalna to wewnętrzne moduły jednej klasy, włączane przełącznikami Enable Panel, WEB - Enable Module, VOTE - Enable Module, INFO - Enable Module. Lista zmian wersja po wersji: Historia zmian.

Nazwa wyświetlana vs. techniczna. W konsoli plugin przedstawia się teraz jako Majestat (prefiks logów [Majestat], „Loaded plugin Majestat v4.0.0"). Techniczna nazwa klasy pozostaje MajestatTopCore, więc plik configu to nadal oxide/config/MajestatTopCore.json, a wszystkie wewnętrzne odwołania działają bez zmian.

Komunikat startowy to jedna ramka: nazwa + wersja + tryb bazy + liczba profili, stan modułów z configu (INFO, WEB z trybem API i portem, VOTE), poziom logów. Po pierwszym połączeniu z siecią globalną pojawia się linia Majestat ready [OK][MASTER] albo [OK][LOCAL] — przy LOCAL mimo tokenu i integracji plugin dopisuje powód. Komunikaty sieci ([Net] …, [Update] …) pojawiają się chwilę później.

Architektura#

Wszystko działa w jednej klasie MajestatTopCore (nazwa wyświetlana: Majestat). Wewnątrz są moduły, które rozmawiają ze sobą bezpośrednimi wywołaniami metod, a z innymi pluginami — przez publiczne hooki API_* (patrz API).

                    ┌──────────────────────────── Majestat (MajestatTopCore.cs) ─────────────────────────────┐
  hooki Rusta  ───► │  CORE: profile graczy, XP, progi XP, baza JSON/SQLite/MySQL, rankingi /top, pop-upy    │
  (kille, gather,   │    ▲                                                                                   │
   loot, build)     │    │ API_AddStat / API_RegisterTab                                                     │
                    │  STATS: zakładki GATHER / LOOT / BUILD                                                  │
                    │                                                                                         │
                    │  WEB  (HttpListener :28020) ── MAP (obraz + pozycje) ── VOTE (RustMaps) ── INFO (/help) │
                    │                                                                                         │
                    │  NET: połączenie z siecią globalną rustserverlist.online, weryfikacja, /global        │ ──► sieć
                    └─────────────────────────────────────────────────────────────────────────────────────────┘

Zasady, które warto znać:

  • Stats vs Fame. Każdy gracz ma dwa zestawy liczników: Stats (sezon, zerowany resetem) i FameStats (wszech czasów).
  • Dwa tryby XP — nigdy mieszane. MASTER (serwer zweryfikowany, stawki z sieci globalnej) albo LOCAL (stawki z configu). Szczegóły: Pełna konfiguracja → „Źródło punktów XP”.
  • Lokalny licznik działa zawsze. Każde zdarzenie jest liczone lokalnie; w trybie MASTER statystyki trafiają też do sieci globalnej. Tabela /top czyta lokalne dane.
  • Nic nie ginie przy braku połączenia. Gdy sieć globalna jest niedostępna, statystyki czekają lokalnie i zostaną wysłane, gdy połączenie wróci.

Instalacja i zależności#

  1. Wgraj MajestatTopCore.cs do oxide/plugins/. Usuń stare pliki, jeśli zostały po wcześniejszych wersjach: MajestatStats.cs, MajestatTopBuild.cs, MajestatTopGather.cs, MajestatTopLoot.cs, MajestatTopWeb.cs, MajestatTopMap.cs, MajestatTopVote.cs, MajestatTopInfo.cs, MajestatTopNet.cs — inaczej zdublują zakładki i komendy.
  2. Przy pierwszym starcie powstaje oxide/config/MajestatTopCore.json. Uzupełnij co najmniej: NET - Server ID (gdy serwer jest już na liście — inaczej powstanie drugi wpis), NET - Token (sieć globalna), VOTE - RustMaps API Key (głosowanie), dane MySQL (jeśli Database Mode = MYSQL). Skąd wziąć ID i token: Połączenie z siecią Majestat.
  3. Przeładuj plugin (oxide.reload MajestatTopCore) albo, dla samego configu, mtopcore.reloadcfg.

Zależności zewnętrzne:

Potrzebne do Co
Obrazy map w głosowaniu (CUI) wtyczka ImageLibrary
Losowanie map do głosowania klucz RustMaps API (VOTE - RustMaps API Key)
Panel WWW otwarty port TCP WEB - HTTP Port (domyślnie 28020)
Weryfikacja w sieci NET - Token + NET - Master Integration = true
Tryb MySQL serwer MySQL
Czat klanu / znajomych, FF opcjonalnie wtyczki Clans, Friends (wykrywane automatycznie)

Połączenie z siecią Majestat — ID serwera i token#

Najpierw sprawdź, czy Twój serwer już jest na liście. Publiczne serwery Rust są wykrywane automatycznie (lista Steam, odpytywanie A2S), więc najpewniej Twój serwer już ma wpis na rustserverlist.online. Plugin przy pierwszym starcie nadaje sobie losowe ID — gdyby tak zostało, ten sam serwer pojawiłby się na liście dwa razy: raz jako wpis A2S, raz jako wpis z pluginem. Żeby dane z pluginu trafiły do istniejącego wpisu, trzeba mu podać jego ID.

Serwer jest już na liście (najczęstszy przypadek)#

  1. Znajdź swój serwer w wyszukiwarce na liście serwerów i otwórz jego profil.

  2. Przejmij go: przycisk „Przejmij serwer” na profilu (kod w nazwie serwera, kod w opisie albo logowanie RCON). Po przejęciu serwer jest na Twoim koncie Steam.

  3. Skopiuj ID serwera: profil → Ustawienia serwera → pole „ID serwera (NET - Server ID)” z przyciskiem Kopiuj. (To też wartość id= w adresie profilu.)

  4. W oxide/config/MajestatTopCore.json (Carbon: carbon/configs/MajestatTopCore.json) ustaw:

    "NET - Master Integration": true,
    "NET - Server ID (empty = auto)": "<ID skopiowane z profilu>",
    "NET - Admin / Owner SteamID64": "<Twój SteamID64>",
  5. Przeładuj plugin (oxide.reload MajestatTopCore / c.reload MajestatTopCore). W konsoli pojawi się [Net] Server ID set from config: …, a po chwili Heartbeat [OK]. Od tej pory ten sam wpis dostaje dane z pluginu — wykres co minutę, graczy, czat, wejścia i wyjścia.

Zapomniałeś o ID? Nic się nie zepsuje. Jeśli plugin z nowym, losowym ID zgłosi się z tego samego IP:portu co istniejący wpis, sieć nie zakłada drugiego wpisu, tylko odsyła ostrzeżenie w konsoli: [Net] DUPLICATE: a server with this IP:port already exists in the network as ID '<id>'. To merge the entries, set "NET - Server ID (empty = auto)": "<id>" in the config and reload the plugin. Wpisz podane ID do configu i przeładuj plugin.

Serwera nie ma na liście (prywatny / nowy)#

Zostaw NET - Server ID puste i wpisz swój SteamID64 w NET - Admin / Owner SteamID64. Plugin sam zarejestruje serwer przy pierwszym heartbeacie i przypisze go do Twojego konta. Nadane ID zobaczysz w Ustawieniach serwera — warto je potem wpisać do configu na stałe (przetrwa usunięcie folderu data).

Skąd wziąć token (NET - Token)#

Token daje weryfikację: zieloną odznakę ✓, tryb MASTER (stawki XP z sieci) i statystyki graczy w rankingu globalnym. Bez tokenu plugin działa i raportuje serwer (wykres, gracze, czat), ale w trybie LOCAL.

  1. Najpierw podłącz serwer pod właściwe ID (kroki wyżej) — token jest przypisany do ID wpisu. Z innym ID sieć go odrzuci (401 bad token).
  2. Wejdź w Moje konto → przy serwerze kliknij „Poproś o weryfikację”.
  3. Po decyzji administracji token przyjdzie w Wiadomościach (Moje konto).
  4. Wklej go do NET - Token, upewnij się, że NET - Master Integration = true, i przeładuj plugin. W konsoli: [Net] Verification: VERIFIED i Mode: MASTER.

Masz już dwa wpisy tego samego serwera?#

Ustaw NET - Server ID na ID wpisu, który chcesz zachować (zwykle ten przejęty, z historią i komentarzami), przeładuj plugin, a drugi wpis usuń: jego Ustawienia serwera → Strefa ryzyka → Usuń serwer.

Moduły#

Moduły to części jednego pluginu. Nie mają osobnych plików ani configów.

Moduł Co robi Włącznik w configu
CORE Profile graczy, XP i progi XP, baza danych, pop-upy zabójstw, friendly fire, API zawsze włączony
PANEL Okno rankingu w grze (/top, /fame, /gather…) i XP INFO Enable Panel
STATS Zakładki GATHER, LOOT, BUILD i ich liczniki zawsze włączony
WEB Panel WWW: rankingi, profile, czat, konsola admina, XP INFO, Game Info, eksport JSON WEB - Enable Module
MAP Mapa na żywo w panelu WWW (obraz rendermap, gracze, eventy, sklepy) razem z WEB
VOTE Głosowanie na mapę następnego wipe (w grze i w WWW) VOTE - Enable Module
INFO Panel /help / regulamin i cykliczny broadcast na czacie INFO - Enable Module
NET Sieć globalna: status serwera, statystyki do rankingu globalnego, /global, weryfikacja zawsze włączony (bez tokenu działa w LOCAL)

Zakładki rankingu (kolejność order): PvP (0) → GATHER (10) → LOOT (15) → BUILD (20) → FAME (zawsze ostatnia).

Kolumny:

  • PvP: XP, zabójstwa PvP, zgony PvP, zgony PvE, Heli, Bradley, Naukowcy, Zombie, Zwierzęta, Friendly fire, czas gry (każda kolumna ma włącznik Show … Column)
  • GATHER: TOTAL, DREWNO, KAMIEŃ, METAL, HQ, SIARKA, ZŁOM, JEDZENIE, DIESEL
  • LOOT: TOTAL, ELITE, MILITARY, HELI/APC, LOCKED, AIRDROP, PODWODNE, JEDZENIE, POJAZDY, SKRZYNKI, BECZKI
  • BUILD: TOTAL, ŚCIANY, FUNDAM., PODŁOGI, DACH, DRZWI, WIEŻYCZKI, PUŁAPKI, ELEKTR., WODA, INDUSTR.

Komendy czatu#

Rankingi i statystyki (Core)#

Komenda Opis
/top Otwiera panel rankingu (zakładka PvP)
/gather / /topgather Ranking — zakładka GATHER
/loot / /toploot Ranking — zakładka LOOT
/build / /topbuild Ranking — zakładka BUILD
/fame Ranking Fame (wszech czasów, PvP)
/famepvp Fame na zakładce PvP
/famegather Fame na zakładce GATHER
/fameloot Fame na zakładce LOOT
/famebuild Fame na zakładce BUILD
/stats [nick] Podsumowanie XP na czacie. Bez argumentu = własne; z nickiem = wymaga admina
/xpinfo Tabela ile XP daje każda aktywność
/mtopreset [confirm] Reset statystyk sezonowych (admin). Bez confirm → ostrzeżenie i 15 s na potwierdzenie
/crateinfo (admin) Informacja o skrzyni/beczce, na którą patrzysz (do 10 m): prefab, ścieżka, typ, wysokość, kategoria Loot.*.
/topreset Alias /mtopreset (kompatybilność z 2.9.2)

/fame* działa tylko gdy Enable Fame Leaderboard = true.

Panel INFO / regulamin (Info)#

Komenda Opis
/help /info /rules /regulamin Otwiera panel informacyjny (lista komend konfigurowalna — pole Commands)
/topinfo reload Przeładowanie konfiguracji Info bez reloadu pluginu (admin)
/broadcast <tekst> Ręczne ogłoszenie na czacie w stylu broadcastu (admin)

Głosowanie na mapę (Vote)#

Komenda Opis
/vote /glosuj Otwiera panel głosowania na następną mapę (komendy konfigurowalne — Chat Commands)
/voteadmin status Stan głosowania: sesja, czas do końca, mapy i liczba głosów (admin)
/voteadmin open Ręczne otwarcie głosowania, gdy żadne nie trwa (admin)
/voteadmin close Zamknięcie głosowania i wyłonienie zwycięzcy (admin)
/voteadmin restart Przerwanie bieżącego (bez zwycięzcy) i start od nowa: nowe mapy, zero głosów (admin)
/voteadmin reroll Wylosowanie nowego zestawu map w trwającym głosowaniu (admin)

Te same akcje są dostępne z konsoli serwera / RCON jako mtopcore.vote <akcja> — patrz Komendy konsoli / RCON → Vote.

Sieć globalna (Net)#

Komenda Opis
/global Panel globalnego rankingu między serwerami (tylko gdy serwer zweryfikowany Tokenem)

Komendy konsoli / RCON#

Core#

Komenda Opis
mtopcore.reloadcfg Przeładowanie configu Core. Tylko konsola serwera / RCON (blokowane dla gracza)
mtopcore.reset <steamid|nick> Reset statystyk sezonowych jednego gracza (Fame zostaje). Admin/konsola
mtopcore.resetall Reset statystyk sezonowych wszystkich graczy, natychmiast, bez potwierdzenia (Fame zostaje)
mtopcore.mapdiag Diagnostyka encji/mapy (Bradley, Heli, CH47, Cargo, NPC, zwierzęta) — pomaga w klasyfikacji zabójstw. Admin
mtopcore.xpdiag Efektywne stawki XP i ich źródło (MASTER / LOCAL): dystans, headshot, czas gry, tryb powiadomień. Wskazuje, co wyłącza XP za dystans. Admin
mtopcore.hold Statystyki czekające na wysłanie do sieci globalnej (np. nowe liczniki, których sieć jeszcze nie przyjmuje). Admin

Core — komendy wewnętrzne UI (wywoływane przez przyciski panelu)#

Komenda Opis
majestattopcore.ui <tab> <fame0/1> <fameTab> <xpinfo0/1> Otwiera panel na konkretnej zakładce
majestattopcore.close Zamyka panel rankingu
majestattopcore.openinfo <tab> Otwiera osadzony panel Info
majestattopcore.openvote Otwiera panel głosowania
majestattopcore.infotab <tab> Przełącza zakładkę w panelu Info
majestattopcore.closeinfo Zamyka panel Info i wraca do rankingu

Info#

Komenda Opis
majestattopinfo.open <tab> Otwiera panel Info (standalone)
majestattopinfo.tab <tab> Przełącza zakładkę Info
majestattopinfo.dismiss <tab> Oznacza panel jako „nie pokazuj przy wejściu" dla gracza
majestattopinfo.undismiss <tab> Cofa powyższe
majestattopinfo.openurl <url> Wyświetla graczowi link do skopiowania w konsoli F1
majestattopinfo.close Zamyka panel Info

Vote#

Zarządzanie głosowaniem z konsoli / RCON (admin nie musi wchodzić na serwer). Z konsoli gracza (F1) — tylko admin lub majestattopcore.voteadmin.

Komenda Opis
mtopcore.vote status Stan głosowania: ID sesji, OTWARTA / ZAMKNIĘTA / PRZERWANA, czas do końca, lista map (rozmiar / seed / głosy, zwycięzca)
mtopcore.vote open Otwiera głosowanie (gdy żadne nie trwa). Zamknięcie wg harmonogramu wipe; gdy termin już minął — za 5 min
mtopcore.vote close Kończy głosowanie teraz i ogłasza zwycięzcę (plik zwycięzcy / komenda / convary wg configu)
mtopcore.vote restart Przerywa bieżące głosowanie bez zwycięzcy i otwiera nowe: nowe mapy z RustMaps, głosy wyzerowane, ten sam termin zamknięcia
mtopcore.vote reroll W trwającym głosowaniu losuje nowe mapy (głosy wyzerowane)

Przykład przez RCON: mtopcore.vote restart. Odpowiedź wraca do konsoli RCON i trafia do logu serwera. Automatyczny harmonogram nie otworzy ponownie głosowania zamkniętego ręcznie dla tego samego wipe.

Komendy wewnętrzne UI (wywoływane przez przyciski panelu):

Komenda Opis
majestattopvote.open Otwiera panel głosowania
majestattopvote.vote <idx> Oddaje głos na mapę o indeksie idx
majestattopvote.close Zamyka panel głosowania
majestattopvote.backtotop Zamyka panel i wraca do rankingu (majestattopcore.ui pvp)

Net#

Komenda Opis
mjnet.flush Wymusza natychmiastową synchronizację z siecią globalną. Admin/konsola
mtglobal.close Zamyka panel globalny (wewnętrzne)

Mapa i panel WWW nie mają własnych komend czatu/konsoli — działają przez HTTP.

Uprawnienia#

Uprawnienie Nadaje dostęp do
majestattopcore.admin Reset statystyk (/mtopreset, mtopcore.reset*), /stats <nick>, admin w panelu WWW
majestattopcore.info Dostęp do panelu Info, gdy INFO - Require permission = true
majestattopcore.infoadmin /topinfo reload, /broadcast
majestattopcore.voteadmin /voteadmin

Poprawka do 4.0.0 RC1: uprawnienia Info i Vote mają prefiks majestattopcore. (wcześniej majestattopinfo.use, majestattopinfo.admin, majestattopvote.admin). Oxide wymaga, by uprawnienie zaczynało się od nazwy pluginu, więc stare nazwy po scaleniu nie były rejestrowane (w konsoli: Missing plugin name prefix 'majestattopcore') i nie działały. Uprawnienia nadane pod starymi nazwami trzeba nadać ponownie pod nowymi.

Nadawanie, np.:

oxide.grant user <steamid> majestattopcore.admin
oxide.grant group admin majestattopcore.admin

Flaga admina serwera (IsAdmin) również omija ograniczenia.

Pełna konfiguracja#

Build 4.0.0 — jeden plugin, jeden config. Po pełnym scaleniu cały system to jeden plik MajestatTopCore.cs i jeden config oxide/config/MajestatTopCore.json. Nie ma już osobnych plików MajestatTopWeb.json, MajestatTopVote.json, MajestatTopInfo.json, MajestatTopNet.json — wszystkie klucze żyją w jednym, płaskim obiekcie.

JSON nie pozwala na sekcje/separatory, więc przynależność klucza do modułu poznajesz po prefiksie w nazwie: brak prefiksu = CORE, INFO -, WEB -, VOTE -, NET -. Kolejność kluczy w wygenerowanym pliku jest stała: baza danych → Language (pl/en) → NET (token i integracja z Masterem są na górze, bo decydują o źródle XP) → reszta CORE → WEB → VOTE → INFO (zawsze na końcu, bo zawiera długie zakładki i broadcast). Przykład poniżej jest generowany automatycznie z kodu, więc odpowiada 1:1 temu, co zapisze plugin.

Migracja ze starych plików: przy pierwszym starcie 4.0.0 plugin utworzy nowy MajestatTopCore.json z domyślnymi wartościami. Przenieś do niego swoje ustawienia ze starych configów (zwłaszcza dane MySQL, VOTE - RustMaps API Key, NET - Token, treści zakładek INFO - Tabs). Stare pliki configów można usunąć.

MajestatTopCore.json (pełny, w kolejności generowania)#

{
  "Database Mode (JSON, SQLITE, MYSQL)": "JSON",
  "MySQL Host": "localhost",
  "MySQL Port": 3306,
  "MySQL Database Name": "rust_stats",
  "MySQL User": "root",
  "MySQL Password": "password",
  "Language (pl/en)": "pl",
  "NET - Master Integration": true,
  "NET - Token": "",
  "NET - Server ID (empty = auto)": "",
  "NET - Admin / Owner SteamID64": "",
  "NET - Verified notice (both/broadcast/banner/off)": "both",
  "NET - Icon SteamID (0 = none)": 76561199874842386,
  "NET - Server type": "modded",
  "NET - Wipe schedule": "monthly",
  "NET - Web panel port": 28020,
  "NET - Web panel URL (empty = auto)": "",
  "Enable Panel": true,
  "Enable Fame Leaderboard (/fame)": true,
  "Leaderboard Sorting Mode (XP, PVP_KILLS, PLAY_TIME)": "XP",
  "Fame Leaderboard Sorting Mode (XP, PVP_KILLS, PLAY_TIME)": "XP",
  "Show Total XP Column": true,
  "Show PvP Kills Column": true,
  "Show PvP Deaths Column": true,
  "Show PvE Deaths Column": true,
  "Show Heli Kills Column": true,
  "Show Bradley Kills Column": true,
  "Show Scientist Kills Column": true,
  "Show Zombie Kills Column": true,
  "Show Animal Kills Column": true,
  "Show Friendly Fire Column": true,
  "Show Play Time Column": true,
  "Points Per PvP Kill": 5,
  "Points Per Zombie Kill": 2,
  "Points Per Animal Kill": 1,
  "Points Per Bradley Kill": 20,
  "Points Per Heli Kill": 20,
  "Points Per Scientist Kill": 3,
  "Points Per Headshot (extra, PvP + Scientist/Zombie)": 2,
  "Play Time - Minutes per award": 30,
  "Play Time - XP per award": 1.0,
  "Points Per Distance Step (extra per step; 0 = off)": 1,
  "Distance Step (m) for distance XP + pop-up": 100,
  "Show Distance Line In Kill Pop-up": true,
  "Friendly Fire - PvP XP Penalty (0 = off)": 0,
  "Friendly Fire - PvE XP Penalty (0 = off)": 0,
  "Friendly Fire - Friendly NPC prefabs (substring match)": [
    "waterwell_shopkeeper",
    "shopkeeper",
    "bandit_shopkeeper",
    "missionprovider"
  ],
  "Gather.Wood": 1.0,
  "Gather.Stone": 1.0,
  "Gather.Metal": 1.0,
  "Gather.HQM": 1.0,
  "Gather.Sulfur": 1.0,
  "Gather.Food": 1.0,
  "Gather.Scrap": 1.0,
  "Gather.Diesel": 1.0,
  "Loot.EliteCrate": 1.0,
  "Loot.MilitaryCrate": 1.0,
  "Loot.LockedCrate": 1.0,
  "Loot.HackableCrate": 1.0,
  "Loot.Airdrop": 1.0,
  "Loot.UnderwaterCrate": 1.0,
  "Loot.FoodCrate": 1.0,
  "Loot.VehicleCrate": 1.0,
  "Loot.NormalCrate": 1.0,
  "Loot.Barrel": 1.0,
  "Loot.Total": 1.0,
  "Build.Walls": 1.0,
  "Build.Foundation": 1.0,
  "Build.Floors": 1.0,
  "Build.Roof": 1.0,
  "Build.Doors": 1.0,
  "Build.Turrets": 1.0,
  "Build.Traps": 1.0,
  "Build.Electrical": 1.0,
  "Build.Water": 1.0,
  "Build.Industrial": 1.0,
  "Build.Total": 1.0,
  "XP - Amount per award (units per XP award)": {
    "Gather.Wood": 10000.0,
    "Gather.Stone": 10000.0,
    "Gather.Metal": 10000.0,
    "Gather.HQM": 200.0,
    "Gather.Sulfur": 5000.0,
    "Gather.Food": 100.0,
    "Gather.Scrap": 2000.0,
    "Gather.Diesel": 30.0,
    "Loot.EliteCrate": 50.0,
    "Loot.MilitaryCrate": 50.0,
    "Loot.LockedCrate": 30.0,
    "Loot.HackableCrate": 30.0,
    "Loot.Airdrop": 20.0,
    "Loot.UnderwaterCrate": 50.0,
    "Loot.FoodCrate": 100.0,
    "Loot.VehicleCrate": 50.0,
    "Loot.NormalCrate": 100.0,
    "Loot.Barrel": 100.0,
    "Loot.Total": 100.0,
    "Build.Walls": 100.0,
    "Build.Foundation": 100.0,
    "Build.Floors": 100.0,
    "Build.Roof": 100.0,
    "Build.Doors": 50.0,
    "Build.Turrets": 20.0,
    "Build.Traps": 20.0,
    "Build.Electrical": 100.0,
    "Build.Water": 100.0,
    "Build.Industrial": 100.0,
    "Build.Total": 100.0
  },
  "XP - Award notice (banner/chat/off)": "banner",
  "XP - Progress bar": true,
  "XP - Progress bar position Y": 0.115,
  "Auto-Save Interval (seconds)": 60.0,
  "Unknown NPC fallback category (animal, scientist, zombie, none)": "animal",
  "Log Level (all, system, alert, none)": "system",
  "Leaderboard Cache TTL (seconds)": 30.0,
  "Max rows per leaderboard tab": 10,
  "Number Format (none, K, M, KM)": "M",
  "Number Format Decimal Places": 1,
  "Show pop-up kills": true,
  "Type pop-up kills (pvp, pve, all)": "all",
  "Kill pop-up duration (seconds)": 4.0,
  "Kill pop-up fade-in animation (seconds, 0 = off)": 0.25,
  "WEB - Enable Module": true,
  "WEB - Mode (json, http, both)": "both",
  "WEB - HTTP Port": 28020,
  "WEB - API Key (empty = no auth)": "",
  "WEB - JSON Export Interval (seconds)": 30,
  "WEB - Leaderboard rows per tab": 10,
  "WEB - Server Type (e.g. Vanilla, Modded, PvE)": "Vanilla",
  "WEB - Table Number Format (none, K, M, KM)": "KM",
  "WEB - Table Number Decimal Places": 1,
  "WEB - Profile XP Number Format (none, K, M, KM)": "KM",
  "WEB - Profile XP Decimal Places": 2,
  "WEB - Chat Auth Mode (steam, played, readonly, open)": "steam",
  "WEB - Chat History Lines (0=none, -1=separate tab)": 50,
  "WEB - Chat cache (ram, file)": "ram",
  "WEB - Chat cache file - max lines (when cache=file)": 1000,
  "WEB - Chat Web prefix in game": "[WEB]",
  "WEB - Chat Web prefix color (hex)": "#4a90d9",
  "WEB - Chat Session timeout (minutes)": 120,
  "WEB - Chat Max message length": 200,
  "WEB - Chat Rate limit (messages per minute)": 10,
  "WEB - Social - Facebook URL (empty = hide)": "",
  "WEB - Social - Instagram URL (empty = hide)": "",
  "WEB - Social - TikTok URL (empty = hide)": "https://www.tiktok.com/@koldrix.group",
  "WEB - Social - Discord URL (empty = hide)": "https://discord.gg/46QPXh5yzV",
  "WEB - Social - TeamSpeak3 address host:port (empty = hide)": "voip.koldrix.com:9987",
  "WEB - Social - label prefix (empty = no label)": "Sociale:",
  "WEB - Map update interval (seconds)": 2.0,
  "WEB - Map image refresh interval (seconds, 0=never)": 0.0,
  "WEB - Map file path override (leave empty for auto-detect)": "",
  "WEB - Map sea margin (units added by rendermap on each side, default 500)": 500,
  "VOTE - Enable Module": true,
  "VOTE - RustMaps API Key": "",
  "VOTE - Map Size Min": 3000,
  "VOTE - Map Size Max": 3750,
  "VOTE - Map Size Step": 250,
  "VOTE - Map Options": 3,
  "VOTE - Use Staging Maps": false,
  "VOTE - Wipe Schedule": "",
  "VOTE - Read Schedule From Tags": true,
  "VOTE - Wipe Weekday": 4,
  "VOTE - Wipe Hour": 17,
  "VOTE - Days Before Wipe": {
    "monthly": 7,
    "biweekly": 5,
    "weekly": 3
  },
  "VOTE - Auto Close At Wipe": true,
  "VOTE - Auto Open Window": true,
  "VOTE - Close Before Wipe (minutes)": 60,
  "VOTE - Save Map Images To Disk": true,
  "VOTE - Allow Vote Change": true,
  "VOTE - Who Can Vote (all, players)": "all",
  "VOTE - Show Panel On Connect": true,
  "VOTE - Show On Connect Delay (sec)": 10.0,
  "VOTE - Yield To Info Panel": true,
  "VOTE - Announce Winner": true,
  "VOTE - Write Winner File": true,
  "VOTE - Winner File": "MajestatTopVote_nextmap.json",
  "VOTE - Set Convars On Winner": false,
  "VOTE - Winner Command": "",
  "VOTE - Chat Commands": [
    "vote",
    "glosuj"
  ],
  "VOTE - Icon SteamID (0 = none)": 76561199874842386,
  "VOTE - Broadcast Start": true,
  "VOTE - Broadcast Interval (min)": 60,
  "VOTE - Broadcast Before Open": true,
  "VOTE - Broadcast Before Open (days)": 2,
  "VOTE - Msg Start": "<color=#4cf>[Vote]</color> Ruszyło głosowanie na mapę! Wpisz /vote. Map do wyboru: {maps}",
  "VOTE - Msg Time Left": "<color=#4cf>[Vote]</color> Do końca głosowania zostało {time}. Wpisz /vote",
  "VOTE - Msg Starts In": "<color=#4cf>[Vote]</color> Głosowanie na mapę rozpocznie się za {time}.",
  "VOTE - Time Show Days": true,
  "VOTE - Time Show Hours": true,
  "VOTE - Time Show Minutes": true,
  "INFO - Enable Module": true,
  "INFO - Plugin title": "INFORMACJE O SERWERZE",
  "INFO - Title color (RGBA 0-1)": "0.3 0.85 1 1",
  "INFO - Tab bar width (fraction)": 0.21,
  "INFO - Default tab id": "rules",
  "INFO - Commands (chat)": [
    "help",
    "info",
    "rules",
    "regulamin"
  ],
  "INFO - Show on first connect (auto-open)": true,
  "INFO - Show on every connect (ignore dismissed flag)": false,
  "INFO - Delay on connect (seconds)": 3.0,
  "INFO - Require permission (majestattopcore.info)": false,
  "INFO - Integrate with MajestatTopCore (if present)": true,
  "INFO - Tabs": [
    {
      "id": "rules",
      "label": "Regulamin",
      "icon": "📋",
      "color": "0.2 0.6 0.9",
      "lines": [
        "…"
      ]
    }
  ],
  "INFO - Icon SteamID (0 = none)": 76561199874842386,
  "INFO - Broadcast": {
    "Enabled": true,
    "Interval minutes": 15.0,
    "Tag (e.g. [INFO])": "[INFO]",
    "Tag color (#RRGGBB)": "#2ec4f0",
    "Nick (sender name)": "Serwer",
    "Nick color (#RRGGBB)": "#ffffff",
    "Message text color (#RRGGBB)": "#cccccc",
    "Messages (cycled in order)": [
      "Wpisz /help aby zobaczyć informacje o serwerze.",
      "Sprawdź rankingi wpisując /top.",
      "Pamiętaj o zapoznaniu się z regulaminem (/help → Regulamin).",
      "Dołącz do naszego Discorda! Link znajdziesz w /help → Kontakt."
    ]
  }
}

CORE — opis pól#

Baza danych

Klucz Typ Domyślnie Opis
Database Mode (JSON, SQLITE, MYSQL) string "JSON" Silnik składowania statystyk: JSON (plik oxide/data), SQLITE (lokalna baza), MYSQL (zdalna baza — wymaga pól MySQL poniżej).
MySQL Host string "localhost" Adres serwera MySQL (tylko dla trybu MYSQL).
MySQL Port int 3306 Port MySQL.
MySQL Database Name string "rust_stats" Nazwa bazy.
MySQL User string "root" Użytkownik bazy.
MySQL Password string "password" Hasło do bazy.
Language (pl/en) string "pl" Jeden język dla całego pluginu (od 4.0.0): nagłówki i teksty panelu WWW, komunikaty głosowania, komunikaty sieci (NET), odpowiedzi komend konsoli. Zastępuje dawne WEB - Language…, VOTE - Language i NET - Language (pl/en) — przy pierwszym starcie wartość przenosi się sama (kolejność: WEB → NET → VOTE), a stare klucze znikają. Teksty CUI w grze (panel /top, pop-upy) nadal idą przez Lang API, czyli wg języka klienta gracza.

Panel i rankingi

Klucz Typ Domyślnie Opis
Enable Panel bool true Główny włącznik panelu rankingu w grze (CUI). false = komendy /top, /fame, /topgather, /topbuild itd. nie otwierają okna (metoda OpenUI kończy się natychmiast). Statystyki są nadal liczone i zapisywane.
Enable Fame Leaderboard (/fame) bool true Włącza ranking Fame (wszech czasów) i komendy /fame*.
Leaderboard Sorting Mode (XP, PVP_KILLS, PLAY_TIME) string "XP" Kryterium sortowania rankingu sezonowego.
Fame Leaderboard Sorting Mode (…) string "XP" Kryterium sortowania rankingu Fame.

Widoczność kolumn zakładki PvP — każde pole Show … Column (bool) pokazuje/ukrywa jedną kolumnę w panelu PvP (Show Play Time Column od 4.0.0 RC1 ukrywa kolumnę czasu gry na wszystkich zakładkach panelu w grze): Total XP, PvP Kills, PvP Deaths, PvE Deaths, Heli Kills, Bradley Kills, Scientist Kills, Zombie Kills, Animal Kills, Friendly Fire, Play Time. Domyślnie wszystkie true. Kolumna Show Friendly Fire Column pokazuje sumaryczny licznik incydentów friendly fire (PvP + PvE) — w panelu w grze (TOP /top) oraz w rankingu WWW — na czerwono.

Punkty XP za zdarzenia (kompatybilne z 2.9.2) — ile XP dolicza się za pojedyncze zdarzenie:

Klucz Domyślnie Opis
Points Per PvP Kill 5 za zabójstwo gracza
Points Per Zombie Kill 2 za zombie
Points Per Animal Kill 1 za zwierzę
Points Per Bradley Kill 20 za Bradleya
Points Per Heli Kill 20 za helikopter patrolowy
Points Per Scientist Kill 3 za naukowca
Play Time - Minutes per award 30 co ile minut gry przyznać XP (1–1440)
Play Time - XP per award 1 ile XP za każdy próg czasu gry; 0 = wyłączone

Migracja : dawne Points Per 30 Min Play Time (XP za 30 min) jest przy pierwszym starcie przenoszone do Play Time - XP per award, a klucz znika z pliku. Na serwerze zweryfikowanym oba parametry czasu gry ustala sieć globalna. Po przekroczeniu progu gracz dostaje baner lub wiadomość (XP - Award notice).

XP za dystans celnego strzału

Za najdalszy zmierzony strzał w zabitą ofiarę doliczamy XP proporcjonalnie do dystansu. Dotyczy zabójstw PvP, naukowców, zombie i zwierząt (Heli/Bradley i friendly fire nie dają XP za dystans). Wzór: floor(dystans / krok) * stawka.

Klucz Typ Domyślnie Opis
Points Per Distance Step (extra per step; 0 = off) int 1 XP za każdy pełny krok dystansu. 0 = XP za dystans wyłączone (linia metrów w pop-upie może nadal się pokazywać).
Distance Step (m) for distance XP + pop-up int 100 Rozmiar kroku w metrach. Przy 100 m: 214 m → 2 kroki → +2 XP; 99 m → 0 XP; 350 m → +3 XP.
Show Distance Line In Kill Pop-up bool true Pokazuj linię „Dystans N m" + XP w pop-upie. Linia pojawia się tylko gdy strzał daje co najmniej 1 XP za dystans (czyli ≥ jeden krok, dom. ≥ 100 m). Poniżej progu linii nie ma.

Serwer zweryfikowany. Przy NET - Master Integration = true sieć globalna może ustalić własną stawkę i krok XP za dystans; jeśli tego nie zrobi, plugin używa wartości z configu. Rekord najdalszego strzału trafia do rankingu globalnego (tylko w trybie MASTER). XP za dystans nalicza się lokalnie zawsze (także w LOCAL).

Friendly fire — kara XP za zabicie sojusznika / przyjaznego NPC

Serwer może karać za „strzelanie do swoich". Kara jest odejmowana z puli XP.Total (sezon) oraz z Fame, nigdy poniżej 0. 0 XP = funkcja wyłączona (zabójstwo liczone normalnie).

Klucz Typ Domyślnie Opis
Friendly Fire - PvP XP Penalty (0 = off) int 0 Kara XP, gdy gracz zabije innego gracza z tej samej drużyny (Team), klanu (Clans) lub znajomego (Friends). 0 = wyłączone → zabójstwo liczone jak zwykłe PvP.
Friendly Fire - PvE XP Penalty (0 = off) int 0 Kara XP, gdy gracz zabije przyjaznego NPC z listy poniżej (np. waterwell_shopkeeper). 0 = wyłączone → NPC klasyfikowany jak dotychczas.
Friendly Fire - Friendly NPC prefabs (substring match) list\<string> patrz niżej Lista fragmentów nazw prefabów uznawanych za przyjaznych NPC (dopasowanie „zawiera"). Domyślnie: waterwell_shopkeeper, shopkeeper, bandit_shopkeeper, missionprovider.

Zachowanie po wykryciu friendly fire:

  • zabójca traci XP (-N), a nie zyskuje — brak nagrody za zabójstwo,
  • zabójcy wyświetla się czerwony pop-up „FRIENDLY FIRE!" z nazwą ofiary, bronią i karą -N XP,
  • do zabójcy dopisywany jest licznik PvP.FriendlyFire lub PvE.FriendlyFire,
  • przy friendly fire PvP ofiara nadal dostaje PvP.Deaths (zginęła), a zdarzenie trafia do „ostatniego zgonu",
  • na serwerze zweryfikowanym incydent trafia też do sieci globalnej.

Serwer zweryfikowany. Przy NET - Master Integration = true kary friendly fire może ustalić sieć globalna (także 0 = FF wyłączone w sieci) — tak jak pozostałe stawki XP. Jeśli sieć ich nie ustala, plugin używa wartości z configu. Efektywne wartości i ich źródło (MASTER / LOCAL) pokazuje komenda mtopcore.xpdiag i log pluginu.

Gdzie widać friendly fire

Friendly fire pojawia się w trzech miejscach, w dwóch formach — jako licznik incydentów (ile razy) oraz jako punkty XP (kara):

  • TOP w grze (CUI) i ranking WWW — kolumna FRIENDLY FIRE (czerwona) z sumarycznym licznikiem incydentów PvP + PvE. Włącznik: Show Friendly Fire Column. W profilu gracza na WWW (karta PVP / PVE) friendly fire jest rozbite osobno na „gracze" i „NPC".
  • INFO / /xpinfo (tabela XP, w grze i na WWW) — friendly fire jako punkty XP w formie kary -N XP (na czerwono), w sekcji zabójstw.

Źródło punktów XP: LOCAL vs MASTER (wszystko-albo-nic)

Serwer ma jeden, spójny tryb liczenia XP — nigdy mieszany:

  • MASTER — wszystkie stawki XP pochodzą z sieci globalnej. Warunek: NET - Master Integration = true, poprawny NET - Token i zweryfikowany serwer. Wtedy serwer liczy po stawkach sieci i wysyła statystyki graczy do rankingu globalnego.
  • LOCAL — jeżeli którykolwiek z powyższych warunków nie jest spełniony cały serwer liczy po stawkach z configu i nie wysyła statystyk graczy do rankingu globalnego. Nie ma sytuacji „część z siecia, część z configu". Serwer jest nadal widoczny na liście rustserverlist.online (status, gracze, Pulse) także w LOCAL.

Gdy warunki znów są spełnione, serwer sam przełącza się na MASTER i dosyła zaległe statystyki graczy. Aktywne źródło widać w znaczniku LOCAL (config) / MASTER (sieć) w panelu w grze i na WWW, w linii startowej Majestat ready [OK][MASTER|LOCAL], oraz w logu (przy LOCAL mimo tokenu plugin wypisuje powód). Endpoint /api/xpinfo zwraca pole source (local/master) oraz obiekt friendlyFire { pvp, pve, source }.

XP za źródła — Gather.*, Loot.*, Build.* (XP za próg)

Wartość pola to XP za każdy pełny próg z XP - Amount per award. Przykład: Gather.Wood = 1 i próg 10000 → 1 XP za każde 10 000 drewna (12 000 drewna = 1 XP + 2 000 postępu do następnego progu). Źródło bez progu (albo z progiem 1) działa jak dawniej: XP za każdą sztukę — tak jest domyślnie dla Loot i Build. Zmieniasz zwykle tylko XP; progi mają rozsądne wartości domyślne.

Pole Typ Domyślnie Opis
XP - Amount per award (units per XP award) mapa patrz przykład configu Ile jednostek na jedno przyznanie XP, per źródło. Brak klucza = 1.
XP - Award notice (banner/chat/off) string banner Powiadomienie po przekroczeniu progu: baner u góry ekranu (jak kill), wiadomość na czacie albo brak. off tylko przy NET - Master Integration = false; przy włączonej integracji off = banner. Tylko źródła z progiem > 1.
NET - Master Integration bool true Włączona = XP i progi z sieci globalnej (gdy serwer zweryfikowany). false = własne ustawienia XP z configu.

Ilości w powiadomieniu są zawsze efektywne — przy weryfikacji pokazują próg sieci (np. 500 drewna), nie lokalny (10 000). Dzięki temu lokalny config nie wpływa na to, co gracz widzi i co liczy się w sieci.

Loot i Build mają domyślne progi i XP 1.0 (np. 50 Elite Crate = 1 XP). Ustawienie XP pozycji na 0 wyłącza ją; wartość > 0 aktywuje jej próg.

Sumy : Loot.Total i Build.Total dają XP za każdy próg łącznie otwartych/postawionych rzeczy dowolnego typu (domyślnie 100 = 1 XP). Liczą się równolegle z pozycjami szczegółowymi — postawienie ściany posuwa postęp i Ścian, i Sumy. Żeby nagradzać tylko sumę, ustaw XP pozycji szczegółowych na 0; żeby tylko pozycje — XP sumy na 0.

Brakujące progi są przy starcie dopisywane wartościami domyślnymi (istniejące zostają). Usunięcie klucza z mapy nie włączy już „XP za sztukę” — do tego ustaw próg 1.

| XP - Progress bar | bool | true | Mały pasek postępu do kolejnego progu na dole ekranu (tekst „8 000 / 10 000” nad paskiem). Znika po 5 s bez postępu. | | XP - Progress bar position Y | float | 0.115 | Dolna krawędź paska jako ułamek wysokości ekranu (nad paskiem szybkim). Zwiększ, jeśli nachodzi na UI innych pluginów. |

Gdzie jest postęp: w oxide/data/MajestatProgress. Plik jest chroniony — jego edycja albo przeniesienie z innego serwera zeruje postęp (nie daje XP). Zmiana NET - Server ID również zeruje postęp.

Przy zweryfikowanym serwerze próg i XP bierze plugin z sieci globalnej; wartości lokalne nie są nadpisywane i wracają do użycia w trybie LOCAL. Postęp do progu jest wspólny (zmiana MASTER → LOCAL nie zeruje postępu). Reset sezonu zeruje postęp.

Aktualizacja ze starszych wersji: istniejące pole Gather.* zmienia znaczenie z „XP za sztukę” na „XP za próg”. Jeśli miałeś Gather.Wood = 1 (1 XP za każde drewno), po aktualizacji to 1 XP za 10 000 drewna. Nowe pola Gather.HQM i Gather.Diesel dopiszą się z domyślnym 1.0 — jeśli zbieranie ma nie dawać XP, ustaw je na 0.

Wcześniej te stawki były ukryte w słowniku XP Sources (managed automatically). Teraz to zwykłe pola configu (typ double, domyślnie 0.0) — edytujesz je wprost. Wartość to XP za jedną jednostkę danej aktywności; przy 0.0 dana aktywność nie daje XP (ale nadal jest liczona w statystykach/rankingach). Po zmianie wartości przeładuj plugin, aby weszła w życie.

  • Gather.Wood, Gather.Stone, Gather.Metal, Gather.HQM, Gather.Sulfur, Gather.Food, Gather.Scrap, Gather.Diesel — XP za próg zebranego surowca. Gather.Metal = Metal Ore bez HQ; Gather.HQM = HQ Metal Ore — osobny surowiec (HQ nie wlicza się do Metal, ani w statystyce, ani w XP). Gather.Diesel — beczki diesla z ziemi, skrzyń i żył; poza Gather.Total. Złom i diesel z automatu, skrzyń graczy, TC i zwłok graczy nie są liczone; złom z recyklera — tak (tylko produkt recyklingu).
  • Loot.EliteCrate, Loot.MilitaryCrate, Loot.LockedCrate (Heli / Bradley), Loot.HackableCrate (Locked Crate — CH47 / Oil Rig), Loot.Airdrop, Loot.UnderwaterCrate, Loot.FoodCrate (pudełka/skrzynki z jedzeniem), Loot.VehicleCrate (części samochodowe), Loot.NormalCrate, Loot.Barrel — XP za otwarcie danego typu skrzyni/beczki.
  • Loot.Total — XP za próg łącznie otwartych skrzyń/beczek (dowolnego typu).
  • Build.Walls, Build.Foundation, Build.Floors, Build.Roof, Build.Doors, Build.Turrets, Build.Traps, Build.Electrical, Build.Water, Build.Industrial — XP za postawienie danego elementu bazy.
  • Build.Total — XP za próg łącznie postawionych elementów (dowolnego typu).
    • Dawne Build.Pipes (woda + przemysł razem) zostało rozdzielone na Build.Water (pompy, zbiorniki, łapacze deszczówki, oczyszczacze, zraszacze, prysznic, fluid switch/splitter/combiner) i Build.Industrial (przenośniki, industrial crafter, storage adaptor, industrial splitter/combiner). doorcontroller trafia do Elektryki (nie do Drzwi). Stare wartości Build.Pipes zostają w danych i w Build.Total, ale kolumna nie jest już pokazywana.

Dawny klucz XP Sources (managed automatically) zniknął z pliku — stawki ustawiasz wyłącznie w polach opisanych wyżej.

Zapis / cache / format liczb

Klucz Typ Domyślnie Opis
Auto-Save Interval (seconds) float 60.0 Co ile sekund zapisywane są „brudne" profile graczy (tryb JSON: jeden zapis całego pliku na cykl).
Unknown NPC fallback category (…) string "animal" Do jakiej kategorii zaliczyć niesklasyfikowane NPC: animal / scientist / zombie / none.
Log Level (all, system, alert, none) string "system" all = wszystko (kille, gather, build + system), system = starty/rejestracje/aktualizacje (czyste logi), alert = tylko błędy i dostępne aktualizacje, none = cisza.
Leaderboard Cache TTL (seconds) float 30.0 Jak długo cache'owane są wyniki rankingu. Od 4.0.0 RC1 ranking (w grze i WWW) odświeża się właśnie w tym rytmie — pojedyncze zdarzenia nie kasują już cache.
Max rows per leaderboard tab int 10 Ile wierszy pokazuje jedna zakładka rankingu w grze.
Number Format (none, K, M, KM) string "M" Skracanie liczb: none (123456789), K (od tysięcy: 1.2k), M (od milionów: 1.2M), KM (oba).
Number Format Decimal Places int 1 Liczba miejsc po przecinku przy skracaniu (0–3).

Usunięte z CORE (względem starych wersji): XP Sources (managed automatically) (zastąpione przez jawne Gather./Loot./Build.), Auto-reload modules on Core reload, Auto-reload delay between modules, Auto-reload module order — po pełnym scaleniu nie ma osobnych modułów do przeładowania. Od 4.0.0 RC1 usunięte też z kodu. Przy uszkodzonym configu Core robi kopię *.broken-RRRRMMDD-GGMMSS i nie nadpisuje pliku.


NET — sieć globalna (ranking między serwerami)#

Klucz Typ Domyślnie Opis
NET - Token string "" Token weryfikacji: Moje konto → „Poproś o weryfikację” → przychodzi w Wiadomościach. Przypisany do NET - Server ID; bez niego serwer nie jest zweryfikowany (/global niedostępne).
NET - Verified notice (both/broadcast/banner/off) string "both" Sposób powiadomienia o weryfikacji.
NET - Icon SteamID (0 = none) ulong 76561199874842386 SteamID64, którego avatar jest ikoną komunikatów sieci. 0 = domyślna ikona Rust. Dawny klucz NET - Chat icon SteamID64 (0 = none) — wartość przenosi się sama.
NET - Admin / Owner SteamID64 string "" SteamID właściciela/admina sieci.
NET - Server ID (empty = auto) string "" ID wpisu serwera w sieci. Jeśli serwer jest już na liście — wpisz ID z jego profilu (Ustawienia serwera → „ID serwera”), inaczej powstanie drugi wpis. Puste = auto (losowe ID, tylko dla serwerów spoza listy).
NET - Server type string "modded" Typ serwera zgłaszany do sieci.
NET - Wipe schedule string "monthly" Harmonogram wipe: monthly / biweekly / weekly.
NET - Web panel port int 28020 Port panelu WWW zgłaszany do sieci.
NET - Web panel URL (empty = auto) string "" Adres panelu WWW (puste = auto).

Usunięte z NET: Net - Game Port — port gry zawsze bierze się z server.port.


WEB — panel WWW, czat, mapa#

Klucz Typ Domyślnie Opis
WEB - Enable Module bool true Włącznik modułu Web. false = serwer HTTP, eksport JSON i mapa nie startują.
WEB - Mode (json, http, both) string "both" json (tylko eksport pliku danych), http (tylko serwer WWW), both.
WEB - HTTP Port int 28020 Port HttpListener panelu WWW (musi być otwarty).
WEB - API Key (empty = no auth) string "" Klucz do endpointów API (puste = bez autoryzacji). Zalecane, gdy port panelu WWW jest dostępny z internetu.
WEB - JSON Export Interval (seconds) int 30 Co ile sekund eksportować dane do pliku (tryb json/both).
WEB - Leaderboard rows per tab int 10 Ile wierszy w tabeli rankingu na stronie WWW.
WEB - Server Type (e.g. Vanilla, Modded, PvE) string "Vanilla" Typ serwera pokazywany na WWW.
WEB - Table Number Format (none, K, M, KM) string "KM" Format liczb w tabelach WWW.
WEB - Table Number Decimal Places int 1 Miejsca po przecinku w tabelach.
WEB - Profile XP Number Format (none, K, M, KM) string "KM" Format liczby XP w profilu gracza.
WEB - Profile XP Decimal Places int 2 Miejsca po przecinku w XP profilu.
WEB - Chat Auth Mode (steam, played, readonly, open) string "steam" steam (logowanie Steam), played (tylko grający na serwerze), readonly (podgląd), open.
WEB - Chat History Lines (0=none, -1=separate tab) int 50 Ile linii historii czatu; 0 = brak, -1 = osobna zakładka.
WEB - Chat cache (ram, file) string "ram" Gdzie trzymać cache czatu.
WEB - Chat cache file - max lines (when cache=file) int 1000 Limit linii przy cache file.
WEB - Chat Web prefix in game string "[WEB]" Prefiks w grze dla wiadomości z WWW (admin: <prefiks>[ADMIN], drużyna: [TEAM]<prefiks>). Działa od 4.0.0 RC1.
WEB - Chat Web prefix color (hex) string "#4a90d9" Kolor prefiksu WEB (wiadomości admina zawsze #e07840).
WEB - Chat Session timeout (minutes) int 120 Wygaśnięcie sesji WWW.
WEB - Chat Max message length int 200 Limit długości wiadomości z WWW.
WEB - Chat Rate limit (messages per minute) int 10 Limit wiadomości na minutę z WWW.
WEB - Social - Facebook/Instagram/TikTok/Discord URL string — Linki do ikon społecznościowych (puste = ukryj daną ikonę).
WEB - Social - TeamSpeak3 address host:port string voip…:9987 Adres TS3 (puste = ukryj).
WEB - Social - label prefix (empty = no label) string "Sociale:" Etykieta przed ikonami (puste = bez etykiety).
WEB - Map update interval (seconds) float 2.0 Jak często odświeżać pozycje na mapie WWW (min. 0,5 s). Działa od 4.0.0 RC1 (wcześniej na sztywno 2 s).
WEB - Map image refresh interval (seconds, 0=never) float 0.0 Odświeżanie obrazu mapy (0 = nigdy).
WEB - Map file path override (…) string "" Ręczna ścieżka pliku mapy (puste = auto).
WEB - Map sea margin (…) int 500 Margines morza dodawany przez rendermap z każdej strony.

Usunięte z WEB: Wipe Schedule (e.g. Co tydzien w czwartek) (harmonogram w pasku info bierze się z tagów serwera: weekly/biweekly/monthly/daily). Od 4.0.0 RC1 usunięte także Global PVP page URL (przycisk GLOBAL i tak prowadzi na stronę rankingu globalnego sieci), Map Show sleeping players for admin i Map Mini-chat height (px) — nigdy nie miały wpływu na działanie.


VOTE — głosowanie na mapę następnego wipe#

Klucz Typ Domyślnie Opis
VOTE - Enable Module bool true Włącznik głosowania. false = scheduler, komendy /vote i panel głosowania nie startują.
VOTE - RustMaps API Key string "" Klucz API RustMaps (wymagany do losowania map).
VOTE - Map Size Min / Max / Step int 3000 / 3750 / 250 Zakres i krok losowanej wielkości mapy.
VOTE - Map Options int 3 Ile map do wyboru (2–6).
VOTE - Use Staging Maps bool false Czy używać map ze staging.
VOTE - Wipe Schedule string "" Ręczne nadpisanie harmonogramu (monthly/biweekly/weekly; puste = auto z tagów).
VOTE - Read Schedule From Tags bool true Odczyt harmonogramu z tagów serwera.
VOTE - Wipe Weekday int 4 Dzień tygodnia wipe (0=niedz … 4=czw).
VOTE - Wipe Hour int 17 Godzina wipe.
VOTE - Days Before Wipe obiekt {monthly:7, biweekly:5, weekly:3} Ile dni przed wipe otworzyć głosowanie, zależnie od harmonogramu.
VOTE - Auto Close At Wipe bool true Automatyczne zamknięcie głosowania przy wipe.
VOTE - Auto Open Window bool true Automatyczne otwarcie okna głosowania.
VOTE - Allow Vote Change bool true Czy gracz może zmienić głos.
VOTE - Who Can Vote (all, players) string "all" Kto może głosować: all = każdy; players = tylko gracze z rekordem na tym serwerze. Reguła egzekwowana w pluginie dla panelu i Mastera.
VOTE - Show Panel On Connect bool true Pokaż panel głosowania po wejściu.
VOTE - Show On Connect Delay (sec) float 10.0 Opóźnienie pokazania panelu.
VOTE - Yield To Info Panel bool true Ustąp pierwszeństwa panelowi Info przy wejściu.
VOTE - Announce Winner bool true Ogłoś zwycięską mapę.
VOTE - Write Winner File bool true Zapisz zwycięzcę do pliku.
VOTE - Winner File string MajestatTopVote_nextmap.json Nazwa pliku zwycięzcy.
VOTE - Set Convars On Winner bool false Ustaw convary po wyłonieniu zwycięzcy.
VOTE - Winner Command string "" Komenda uruchamiana po wyłonieniu zwycięzcy.
VOTE - Chat Commands lista ["vote","glosuj"] Komendy otwierające panel głosowania.
VOTE - Icon SteamID (0 = none) ulong 76561199874842386 SteamID64, którego avatar jest ikoną komunikatów głosowania. 0 = domyślna ikona Rust. Dawny klucz VOTE - Icon SteamID — wartość przenosi się sama.
VOTE - Broadcast Start / Interval (min) / Before Open / Before Open (days) — true / 60 / true / 2 Ogłoszenia o głosowaniu (start, co ile minut, wyprzedzenie przed otwarciem i ile dni wcześniej).
VOTE - Msg Start / Msg Time Left / Msg Starts In string (PL) Treści komunikatów. Zmienne: {maps}, {time}.
VOTE - Time Show Days / Hours / Minutes bool true Które jednostki pokazywać w odliczaniu.

INFO — panel /help / regulamin + broadcast#

Klucz Typ Domyślnie Opis
INFO - Enable Module bool true Włącznik modułu Info. false = panel /help i broadcast nie startują (komendy /help, /info, /rules, /regulamin nie są rejestrowane).
INFO - Plugin title string "INFORMACJE O SERWERZE" Nagłówek okna Info.
INFO - Title color (RGBA 0-1) string "0.3 0.85 1 1" Kolor tytułu (RGBA 0–1, spacje).
INFO - Tab bar width (fraction) float 0.21 Szerokość paska zakładek (ułamek szerokości okna).
INFO - Default tab id string "rules" Zakładka otwierana domyślnie (musi zgadzać się z id w INFO - Tabs).
INFO - Commands (chat) lista ["help","info","rules","regulamin"] Komendy czatu otwierające panel.
INFO - Show on first connect (auto-open) bool true Auto-otwarcie panelu przy pierwszym wejściu gracza.
INFO - Show on every connect (ignore dismissed flag) bool false true = pokazuj przy każdym wejściu, ignorując „nie pokazuj więcej".
INFO - Delay on connect (seconds) float 3.0 Opóźnienie auto-otwarcia po wejściu.
INFO - Require permission (majestattopcore.info) bool false true = panel wymaga uprawnienia majestattopcore.info.
INFO - Integrate with MajestatTopCore (if present) bool true true = przycisk GAME INFO w rankingu Core; false = tryb standalone.
INFO - Tabs lista obiektów 4 zakładki Zakładki panelu. Każda: id, label, icon, color (RGB 0–1), lines (treść). lines obsługuje tagi rich-text Rust: [b], [i], [color=#hex], [size=N], [url=…], [img]url[/img]. Pusta lista = 4 domyślne zakładki.
INFO - Icon SteamID (0 = none) ulong 76561199874842386 SteamID64, którego avatar jest ikoną wiadomości Info i broadcastu na czacie. 0 = domyślna ikona Rust. Do 4.0.0 było to pole Avatar SteamID (…) wewnątrz INFO - Broadcast — wartość przenosi się sama.
INFO - Broadcast obiekt — Cykliczne ogłoszenia na czacie (opis niżej).

INFO - Broadcast (obiekt zagnieżdżony):

Klucz Domyślnie Opis
Enabled true Włącza broadcast.
Interval minutes 15.0 Co ile minut wysyłać kolejną wiadomość.
Tag (e.g. [INFO]) "[INFO]" Prefiks-tag przed treścią.
Tag color (#RRGGBB) "#2ec4f0" Kolor tagu.
Nick (sender name) "Serwer" Nazwa nadawcy.
Nick color (#RRGGBB) "#ffffff" Kolor nazwy nadawcy.
Message text color (#RRGGBB) "#cccccc" Kolor treści.
Messages (cycled in order) lista Wiadomości rotowane po kolei.

Pliki danych#

W oxide/data/:

Plik Co zawiera Można edytować?
MajestatCore.json Statystyki graczy w trybie JSON (sezon + Fame). Przy uszkodzonym pliku plugin wstrzymuje autozapis, żeby nie nadpisać danych pustką ostrożnie, przy wyłączonym pluginie
MajestatCore.db Statystyki w trybie SQLite —
MajestatTop.json Dane ze starej wersji 2.9.2 — migrowane jednorazowo (tylko gracze, których nie ma w nowych danych) —
MajestatProgress Postęp do progów XP i niepełne minuty czasu gry (plik chroniony) nie — zmiana zeruje postęp wszystkim
MajestatQueue Statystyki czekające na wysłanie do sieci globalnej nie
MajestatEvents Trwały outbox zdarzeń NET (vote, chat, FF, long_shot…), czyszczony po 200 nie
MajestatServerId Stały identyfikator serwera w sieci (nadpisywany przez NET - Server ID, jeśli ustawiony) nie
MajestatTopWeb.json Eksport rankingów co WEB - JSON Export Interval (tryb json/both) plik wyjściowy
MajestatTopWeb_chat Historia czatu WWW (tylko gdy WEB - Chat cache = file) tak
MajestatTopVote_session Bieżąca sesja głosowania (mapy, głosy, zwycięzca) nie w trakcie głosowania
MajestatTopVote_nextmap.json Zwycięska mapa następnego wipe (nazwa z VOTE - Winner File) plik wyjściowy
MajestatTopVoteMaps/ Zapisane bitmapy map z głosowania (mtv_<size>_<seed>.png) można usuwać stare
MajestatTopInfo_dismissed Gracze, którzy zaznaczyli „nie pokazuj przy starcie” w panelu Info tak

W trybie MySQL statystyki są w tabelach majestat_stats (klucze zgodne z 2.9.2) i majestat_dynamic_stats (wszystkie pozostałe klucze, value = sezon, fame_value = Fame).

Reset sezonowy (/mtopreset, mtopcore.reset*) zeruje statystyki bieżącego wipe i postęp do progów XP, ale Fame (wszech czasów) zostaje.

Wydajność i zachowanie w czasie pracy#

Co Jak często Uwagi
Autozapis profili Auto-Save Interval (60 s) JSON: jeden zapis pliku na cykl; SQL: zapytania tylko dla zmienionych graczy
Cache rankingu Leaderboard Cache TTL (30 s) Ranking w grze i w WWW może być opóźniony maks. o tyle
Czas gry → XP co 60 s Domykanie sesji online graczy
Sprzątanie co 60 s Liczniki trafień do pop-upu (> 90 s), policzone skrzynie (> 2 h)
Mapa na żywo WEB - Map update interval (2 s) Jedno przejście po encjach serwera; wyłączone, gdy WEB wyłączony
Eksport JSON WEB - JSON Export Interval (30 s) Tylko tryb json/both
Synchronizacja z siecią globalną co 60 s (statystyki graczy co 5 min i przy wyjściu gracza) Bez tokenu — tylko status serwera
Sprawdzanie aktualizacji co 6 h Wynik w stopce panelu WWW
Ostatnia aktualizacja treści: