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

API MajestatTopCore

Publiczne hooki dla innych pluginów i endpointy panelu WWW.

Spis treści
  1. Publiczne API dla pluginów
  2. Panel WWW — endpointy HTTP

Integracja z pluginem MajestatTopCore: publiczne hooki API_* dla innych pluginów Oxide/Carbon oraz endpointy HTTP wbudowanego panelu WWW.

Publiczne API dla pluginów#

Publiczne API (dla innych pluginów, przez plugins.Find("MajestatTopCore").Call(...)):

Hook Zwraca Opis
API_RegisterTab(Dictionary<string,object> def) bool Własna zakładka rankingu (id, label, sort, fame_sort, order, columns)
API_UnregisterTab(string tabId) — Usunięcie zakładki
API_RegisterXpSource(string statKey, double xp) — Źródło XP dla API_AddStat(..., addXP: true)
API_AddStat(steamId, statKey, amount, addToFame, addXP) — Dopisanie statystyki (i XP wg progu)
API_GetStat(steamId, statKey, fame) double Jedna statystyka
API_GetAllStats(steamId, fame) Dictionary<string,double> Wszystkie statystyki (pusty słownik dla nieznanego gracza)
API_GetLeaderboard(tabId, fame, limit) List<Dictionary> Ranking zakładki
API_GetTabs() / API_GetModules() List<Dictionary> Zakładki / zarejestrowane moduły
API_RegisterModule(Dictionary) / API_UnregisterModule(name) bool / — Wpis w stopce panelu WWW
API_GetPlayerName(steamId) string Ostatni znany nick
API_GetCombatMeta(steamId) Dictionary Ostatni kill / ostatnia śmierć
API_GetOnlinePlayers() List<Dictionary> Gracze online z XP, killami, czasem sesji
API_GetServerInfo() / API_GetXpInfo() Dictionary Info o serwerze / efektywne stawki XP
API_GetMapData(steamId, isAdmin) / API_GetMonuments() / API_GetMapInfo() / API_GetVendingMachines() … Dane mapy
API_GetChatHistory(limit, channel) List<Dictionary> Historia czatu
API_SendWebChat(nick, text, channel, steamId, isAdmin) — Wiadomość do gry w imieniu WWW
API_GetVoteData() / API_CastVoteFor(steamId, index) / API_IsVoteActive() / API_OpenPanel(player) … Głosowanie
API_OpenInfoPanel(player, tab, dismiss) / API_CloseInfoPanel(player) / API_IsInfoOpen(player) / API_GetInfoData() … Panel Info
API_GetPendingUpdates() / API_ReportUpdateResult(name, latest, url) … Rejestr dostępnych aktualizacji (stopka WWW)
API_GetLogLevel() / API_IsAutoReloading() int / bool Poziom logów / czy trwa start pluginu

Hooki wysyłane: OnMajestatChatMessage(steamId, nick, text, channel, source, isAdmin, timestamp), OnMajestatMapUpdate(object[] entities) (tylko przy włączonym WEB), OnMajestatInfoClosed(BasePlayer).

Panel WWW — endpointy HTTP#

Moduł WEB uruchamia HttpListener na porcie WEB - HTTP Port (domyślnie 28020), gdy WEB - Mode = http lub both. Każde żądanie obsługuje osobny wątek z puli; strumienie SSE mają własne wątki (limit 50 klientów czatu).

Strony HTML

Ścieżka Opis
/ /index Strona główna: rankingi, XP INFO, Game Info, czat, mapa, głosowanie
/player/<steamId> Profil gracza (sezon + Fame). 404 dla nieznanego lub błędnego SteamID
/avatar/<steamId> Przekierowanie 302 na avatar Steam (cache w pamięci)

Logowanie Steam

Ścieżka Opis
/auth/steam Start logowania OpenID (?ret= = strona powrotu)
/auth/steam/callback Powrót ze Steam; tworzy sesję (cookie session + ?session_token=)
/auth/logout Wylogowanie
/api/auth/me Dane zalogowanego: steamId, nick, isAdmin, teamId

Token sesji można podać nagłówkiem X-Session-Token, cookie session albo parametrem ?token= (dla proxy i Androida).

Dane (JSON)

Ścieżka Metoda Opis
/api/server GET Info o serwerze (m.in. friendlyFirePvp, friendlyFirePve, friendlyFireNpc[], friendlyFireSource)
/api/tabs GET Lista zakładek rankingu
/api/top/<tab> GET Ranking sezonowy zakładki (pvp, gather, loot, build)
/api/top/<tab>/fame GET Ranking Fame zakładki
/api/all GET Serwer + wszystkie rankingi (sezon i Fame)
/api/player/<steamId> GET Statystyki gracza (sezon i Fame). 404 dla nieznanego gracza
/api/xpinfo GET Tabela XP (pole source = local/master, wiersze FF jako kara ujemna, obiekt friendlyFire, progi amounts)
/api/gameinfo GET Treść zakładek panelu Info

Czat i konsola

Ścieżka Metoda Opis
/api/chat/messages GET Historia czatu (?channel=global|team|clan|friends; team/clan tylko dla zalogowanych, filtrowane po drużynie)
/api/chat/channels GET Dostępne kanały dla zalogowanego (inTeam, clan, friends)
/api/chat/team-members GET Członkowie drużyny zalogowanego (online/offline, lider)
/api/chat/send POST Wysłanie wiadomości z WWW do gry ({text, channel, nick?}), limit WEB - Chat Rate limit
/api/chat/stream GET (SSE) Czat na żywo
/api/console/logs GET Logi konsoli — tylko admin
/api/console/stream GET (SSE) Konsola na żywo — tylko admin

Mapa

Ścieżka Metoda Opis
/api/map/img GET Obraz mapy (PNG z rendermap)
/api/map/image GET {has_image, page_url} — czy obraz jest gotowy + link RustMaps
/api/map/info GET worldSize, seed, name, seaMargin
/api/map/monuments GET Monumenty (name, x, z, size)
/api/map/data GET Encje na mapie. Bez sesji: nic; zalogowany: eventy + siebie + drużynę/klan/znajomych; admin: wszystkich
/api/map/vending GET Aktywne sklepy z ofertami (name, x, z, items[{item, amount, cost, currency}])
/api/map/stream GET (SSE) Pozycje na żywo

Głosowanie

Ścieżka Metoda Opis
/api/vote GET Stan głosowania (mapy i głosy)
/api/vote/cast POST Oddanie głosu {index} — wymaga sesji Steam; podlega VOTE - Who Can Vote
/api/vote/img?index=N GET Bitmapa mapy zapisana na dysku serwera (nie wygasa jak link RustMaps)

Autoryzacja: gdy WEB - API Key nie jest pusty, każde żądanie musi mieć nagłówek X-Api-Key. Tryb czatu: WEB - Chat Auth Mode = steam / played / readonly / open. Zalecamy ustawić klucz, jeśli port panelu jest dostępny z internetu — bez niego dane rankingów i graczy są dostępne dla każdego.

Ostatnia aktualizacja treści: