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.csi jeden płaski configoxide/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łącznikamiEnable 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 pozostajeMajestatTopCore, więc plik configu to nadaloxide/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,WEBz trybem API i portem,VOTE), poziom logów. Po pierwszym połączeniu z siecią globalną pojawia się liniaMajestat 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) iFameStats(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#
- Wgraj
MajestatTopCore.csdooxide/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. - 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śliDatabase Mode = MYSQL). Skąd wziąć ID i token: Połączenie z siecią Majestat. - 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)#
-
Znajdź swój serwer w wyszukiwarce na liście serwerów i otwórz jego profil.
-
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.
-
Skopiuj ID serwera: profil → Ustawienia serwera → pole „ID serwera (NET - Server ID)” z przyciskiem Kopiuj. (To też wartość
id=w adresie profilu.) -
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>", -
Przeładuj plugin (
oxide.reload MajestatTopCore/c.reload MajestatTopCore). W konsoli pojawi się[Net] Server ID set from config: …, a po chwiliHeartbeat [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.
- 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). - Wejdź w Moje konto → przy serwerze kliknij „Poproś o weryfikację”.
- Po decyzji administracji token przyjdzie w Wiadomościach (Moje konto).
- Wklej go do
NET - Token, upewnij się, żeNET - Master Integration=true, i przeładuj plugin. W konsoli:[Net] Verification: VERIFIEDiMode: 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 gdyEnable 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śniejmajestattopinfo.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.csi jeden configoxide/config/MajestatTopCore.json. Nie ma już osobnych plikówMajestatTopWeb.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.jsonz 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ładekINFO - 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 doPlay 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 = truesieć 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.FriendlyFirelubPvE.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 = truekary friendly fire może ustalić sieć globalna (także0= 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 komendamtopcore.xpdiagi 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, poprawnyNET - Tokeni 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 = 1i próg10000→ 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 bannerPowiadomienie po przekroczeniu progu: baner u góry ekranu (jak kill), wiadomość na czacie albo brak. offtylko przyNET - Master Integration = false; przy włączonej integracjioff=banner. Tylko źródła z progiem > 1.NET - Master Integrationbool trueWłą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 na0wyłącza ją; wartość > 0 aktywuje jej próg.Sumy :
Loot.TotaliBuild.Totaldają 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 na0; żeby tylko pozycje — XP sumy na0.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). ZmianaNET - Server IDró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 polaGather.HQMiGather.Dieseldopiszą się z domyślnym1.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ł; pozaGather.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 naBuild.Water(pompy, zbiorniki, łapacze deszczówki, oczyszczacze, zraszacze, prysznic, fluid switch/splitter/combiner) iBuild.Industrial(przenośniki, industrial crafter, storage adaptor, industrial splitter/combiner).doorcontrollertrafia do Elektryki (nie do Drzwi). Stare wartościBuild.Pipeszostają w danych i wBuild.Total, ale kolumna nie jest już pokazywana.
- Dawne
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 jawneGather./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-GGMMSSi 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ę zserver.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żeGlobal PVP page URL(przycisk GLOBAL i tak prowadzi na stronę rankingu globalnego sieci),Map Show sleeping players for adminiMap 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 |