Dla właścicieli serwerów

Jak nadać uprawnienia GM w Metin2? Poziomy i bezpieczne użycie

Jak nadać uprawnienia GM w Metin2? Poziomy i bezpieczne użycie

Nadanie uprawnień GM na serwerze Metin2 to kilka linijek w bazie danych; trudniejsze jest przyznanie ich właściwej osobie, na właściwym poziomie, i zapobieganie nadużyciom. W tym poradniku wyjaśniamy, gdzie definiuje się uprawnienia GM, jakie są poziomy uprawnień, jak je nadać i odebrać oraz jakie środki bezpieczeństwa zastosować. Informacje opierają się na publicznie dostępnym kodzie źródłowym serwera Metin2 i plikach SQL; zależnie od wersji plików serwera i wprowadzonych zmian szczegóły mogą się różnić.

Gdzie definiuje się uprawnienia GM?

Uprawnienia są przechowywane w tabeli gmlist w bazie danych common. Rdzeń db odczytuje tę tabelę i przekazuje ją rdzeniom gry; poziom uprawnień postaci jest ustalany na podstawie tej listy w chwili wczytywania postaci do gry.

Kolumna Znaczenie
mAccount Nazwa użytkownika konta gry GM-a
mName Nazwa postaci, która dostaje uprawnienia
mContactIP Dozwolony adres IP połączenia (zob. uwagę niżej)
mServerIP Serwer gry, na którym uprawnienia obowiązują; ALL oznacza wszystkie
mAuthority Poziom uprawnień

Uprawnienia są przypisane do postaci; inna postać na tym samym koncie nie zostaje GM-em. Przy tureckich i europejskich ustawieniach regionalnych kodu źródłowego porównywana jest też nazwa konta: nawet jeśli postać GM zostanie usunięta, a jej nazwę ktoś zajmie na innym koncie, to konto nie zdobędzie uprawnień.

Poziomy uprawnień

W kodzie źródłowym poziomy są ułożone od najniższego do najwyższego, a każdy poziom może używać także komend niższych poziomów:

Poziom Przykładowe komendy dodawane w standardowej tabeli komend
LOW_WIZARD /warp, /goto, /transfer, /dc, /invisible, /notice_map
WIZARD /purge, /respawn
HIGH_WIZARD /notice, /mob, /kill, /eventflag, /shutdown
GOD /item, /advance
IMPLEMENTOR /reload, /set, /who

W niektórych plikach SQL wśród dozwolonych wartości kolumny mAuthority nie ma WIZARD; nawet jeśli kod rozpoznaje tę wartość, nie przypiszesz tego poziomu, gdy kolumna na to nie pozwala. Opisy komend znajdziesz w naszej liście komend GM.

Nadawanie uprawnień GM krok po kroku

  1. Załóż osobne konto: Dla GM-a utwórz konto gry i postać oddzielne od swojego konta gracza.

  2. Dodaj do listy: W bazie danych common uruchom takie zapytanie, zmieniając wartości na własne:

    INSERT INTO gmlist (mAccount, mName, mContactIP, mServerIP, mAuthority)
    VALUES ('gmhesap', 'GMKarakter', '', 'ALL', 'LOW_WIZARD');
    
  3. Odśwież listę: Wpisz w grze /reload a postacią z poziomem IMPLEMENTOR albo zrestartuj serwer. W kodzie źródłowym odświeżenie od razu obejmuje też postacie z listy, które są w tym momencie w grze.

  4. Przetestuj: Wejdź do gry postacią GM i uruchom nieszkodliwą komendę zgodną z jej poziomem, np. /state.

Odbieranie uprawnień

Usuń wiersz GM-a, który kończy swoją funkcję, i odśwież listę:

DELETE FROM gmlist WHERE mName = 'GMKarakter';

Następnie wpisz /reload a. Tu ważny szczegół: w kodzie źródłowym odświeżenie nie obniża poziomu postaci, która została usunięta z listy, ale w tej chwili jest w grze; uprawnienia zostają do ponownego wczytania postaci. Dlatego rozłącz tę osobę komendą /dc i zmień hasło do konta GM.

Zawężanie poziomów komend plikiem CMD

Plik CMD w folderze rdzenia gry pozwala zmienić poziom wymagany przez komendy. W każdej linii wpisuje się jedną komendę i jeden poziom; DISABLE wyłącza komendę dla wszystkich:

item IMPLEMENTOR
shutdown IMPLEMENTOR
full_set DISABLE

W standardowej tabeli nawet najniższy poziom LOW_WIZARD ma dostęp do komend testowych takich jak /full_set i /all_skill_master, które dają postaci GM-a pełny ekwipunek, bonusy i umiejętności; nie uważaj najniższego poziomu za nieszkodliwy. W kodzie źródłowym błędna linia uniemożliwia uruchomienie rdzenia, dlatego zmianę najpierw przetestuj na serwerze testowym.

Zalecenia dotyczące bezpiecznego użycia

  • Minimalne uprawnienia: Każdemu GM-owi dawaj najniższy poziom wystarczający do jego pracy; dla zespołu pomocy zwykle wystarcza LOW_WIZARD.
  • Silne i unikalne hasło: Hasła do kont GM nie powinny być używane nigdzie indziej ani udostępniane w zespole.
  • Ograniczenie IP: Choć istnieje kolumna mContactIP, w przeanalizowanym przez nas kodzie źródłowym przy tureckich i europejskich ustawieniach regionalnych adres IP nie jest sprawdzany, a jedynie nazwa konta. Jeśli chcesz ograniczenia IP, zleć jego wdrożenie w plikach serwera swojemu programiście albo stosuj je przy dostępach administracyjnych, takich jak baza danych, SSH i panel.
  • Wyłączony tryb testowy: Gdy w pliku CONFIG rdzenia gry włączone jest ustawienie TEST_SERVER, w kodzie źródłowym każdy dostaje uprawnienia IMPLEMENTOR. Sprawdź wartość tej linii w plikach CONFIG dołączonych do gotowych plików serwera; upewnij się, że na żywym serwerze jest wyłączone.
  • Przeglądaj logi: W kodzie źródłowym logowania GM-ów i przedmioty utworzone komendą /item trafiają do bazy logów; przy tureckich i europejskich ustawieniach komendy GM są dodatkowo zapisywane w tabeli command_log. Przeglądaj te wpisy raz w tygodniu.
  • Regularne porządki: Wpisy GM-ów, którzy odeszli z zespołu albo są nieaktywni, usuwaj bez zwłoki.

Gdy zespół i pliki będą gotowe, możesz bezpłatnie dodać swój serwer do listy, a doświadczeniami z innymi właścicielami serwerów podzielisz się na naszym forum.

Najczęściej zadawane pytania

Dlaczego komendy nie działają mimo nadanych uprawnień GM?

Jeśli nie odświeżysz listy komendą /reload a albo nie zrestartujesz serwera, uprawnienia nie będą aktywne. Sprawdź, czy nazwa konta i postaci jest dokładnie taka sama jak w wierszu gmlist i czy poziom wystarcza do danej komendy.

Czy mogę dać jednemu GM-owi uprawnienia na kilku postaciach?

Tak, ale dla każdej postaci musisz dodać osobny wiersz. Każda dodatkowa postać to jednak nowe ryzyko; jeśli nie jest to naprawdę potrzebne, ogranicz się do jednej postaci.

Dlaczego na serwerze testowym każdy jest GM-em?

W kodzie źródłowym, gdy włączone jest TEST_SERVER, każda postać dostaje najwyższy poziom. To zachowanie jest przeznaczone dla środowiska testowego; na żywym serwerze nigdy nie zostawiaj tego ustawienia włączonego.

Czy uprawnienia GM można nadać z poziomu gry?

W standardowym kodzie źródłowym nie ma do tego komendy w grze; uprawnienia nadaje się w tabeli gmlist i odświeża komendą /reload a. W niektórych plikach serwera mogą być do tego dodatkowe narzędzia.

0 Polubień

Więcej wpisów

Komentarze 0

Nie dodano jeszcze żadnych komentarzy.