Un cont de **GM** (Game Master, administrator în joc) poate crea iteme, muta jucători, chema monștri și chiar opri serverul. Dacă dai aceste puteri prea ușor, un singur cont furat sau un prieten nervos îți poate strica economia într-o seară. În această lecție vezi unde se dau drepturile de GM, ce înseamnă fiecare nivel și cum verifici ce comenzi au fost folosite.
gmlist din baza de date common. Fiecare GM primește un nivel, de la LOW_WIZARD (cel mai mic) la IMPLEMENTOR (totul). Dai fiecărui om cel mai mic nivel cu care își poate face treaba și verifici periodic jurnalul de comenzi.Cuvinte pe care le vei întâlni
| Cuvânt | Ce înseamnă |
|---|---|
| GM | Un jucător cu drepturi speciale, care poate folosi comenzi de administrare în chat. |
| Nivel de autoritate | Cât de multe comenzi are voie să folosească un GM. |
gmlist | Tabela din baza de date common în care scrii cine e GM și cu ce nivel. |
| Cont / personaj | Contul e ce scrii la login. Personajul e eroul din joc. Un cont are mai multe personaje. |
| Principiul celui mai mic drept | Fiecare primește doar puterile de care are nevoie, nimic în plus. |
Unde se dau drepturile de GM
Gândește-te la o firmă: nu toți angajații au cheia de la seif. Paznicul are cheia de la ușă, contabilul are acces la bani, iar doar patronul are toate cheile. La Metin2, „lista cu chei” este tabela gmlist.
În pachetul pe care l-am verificat, tabela arată așa:
| Coloană | Ce pui în ea |
|---|---|
mID | Un număr dat automat. Nu-l completezi tu. |
mAccount | Numele contului (login-ul) GM-ului. |
mName | Numele exact al personajului care primește drepturile. |
mContactIP | O adresă IP de la care are voie să intre. De obicei se lasă goală. |
mServerIP | Pe ce server se aplică. ALL înseamnă peste tot. |
mAuthority | Nivelul: PLAYER, LOW_WIZARD, HIGH_WIZARD, GOD sau IMPLEMENTOR. |
Important: drepturile se dau unui personaj anume, nu întregului cont. În pachetul verificat, serverul cere ca și numele personajului, și contul să se potrivească cu rândul din gmlist. Dacă cineva își face un personaj cu același nume pe alt cont, nu primește drepturile. La alte pachete se verifică și IP-ul (mContactIP), deci la tine poate diferi.
Ce poate face fiecare nivel
Nivelurile sunt în ordine, de la mic la mare. Un nivel mai mare poate tot ce poate unul mai mic. Exemplele de mai jos sunt din sursa pachetului verificat; la tine comenzile și nivelurile lor pot fi altele.
| Nivel | Exemple de comenzi | Pentru cine |
|---|---|---|
PLAYER | niciuna de administrare | jucătorii obișnuiți |
LOW_WIZARD | /goto, /warp, /dc, /transfer, /invisible | ajutoare care răspund la întrebări și deblochează jucători |
HIGH_WIZARD | /notice, /big_notice, /mob, /kill, /eventflag, /shutdown | GM-i care organizează evenimente |
GOD | /item, /advance | foarte puțini oameni de încredere |
IMPLEMENTOR | /reload, /set, /observer | doar proprietarul serverului |
Observă două lucruri: /item (crearea de iteme) e la nivelul GOD, iar /shutdown (oprirea serverului) e deja la HIGH_WIZARD. Un GM de evenimente poate deci închide serverul. Gândește-te bine cui dai acest nivel.
Pasul 1: Schimbă contul de administrator implicit
Multe pachete vin cu un cont gata făcut. În pachetul verificat, în gmlist există de la început rândul: cont admin, personaj [SA]Admin, nivel IMPLEMENTOR. Parola contului admin e cunoscută de oricine a descărcat același pachet.
Cel mai simplu și sigur:
- Fă-ți un cont nou, normal, prin pagina de înregistrare a site-ului tău, cu o parolă lungă și unică.
- Intră în joc și creează personajul tău de administrator.
- Adaugă-l în
gmlist(Pasul 2). - Șterge sau dezactivează contul
adminimplicit și rândul lui dingmlist.
Înainte de orice modificare în baza de date, fă un backup, cum ai învățat în lecția despre backup. Ideal, exersează mai întâi pe serverul de test.
Pasul 2: Adaugă un GM nou
Te conectezi la MySQL (vezi lecția despre MySQL) și scrii:
INSERT INTO common.gmlist (mAccount, mName, mContactIP, mServerIP, mAuthority)
VALUES ('contul_lui_andrei', 'Andrei', '', 'ALL', 'LOW_WIZARD');Bucată cu bucată:
INSERT INTO common.gmlistînseamnă „adaugă un rând în tabelagmlistdin bazacommon”.'contul_lui_andrei'e login-ul contului, exact cum îl scrie la intrare.'Andrei'e numele personajului, cu literele mari și mici exact ca în joc.''lasă IP-ul gol,'ALL'aplică drepturile peste tot.'LOW_WIZARD'e nivelul. Începi mereu cu cel mai mic.
Ca să vezi lista completă de GM-i:
SELECT mAccount, mName, mAuthority FROM common.gmlist;Ce ar trebui să vezi: un tabel mic, cu un rând pentru fiecare GM.
Pasul 3: Aplică schimbarea și verific-o
Serverul citește lista de GM-i la pornire. Ca s-o recitească fără restart, un IMPLEMENTOR poate scrie în joc:
/reload aDacă nu se aplică, fă un restart controlat (vezi oprirea și restartul serverului). Apoi GM-ul nou se deconectează și intră din nou.
Ce ar trebui să vezi: GM-ul poate folosi o comandă de nivelul lui (de exemplu /goto), dar primește refuz la una de nivel mai mare (de exemplu /item). Testează întotdeauna și refuzul, nu doar ce merge.
Pasul 4: Verifică ce comenzi s-au folosit
În pachetul verificat, comenzile GM-ilor se salvează în baza de date log, tabela command_log. Ultimele 20:
SELECT date, username, command FROM log.command_log ORDER BY id DESC LIMIT 20;username e numele personajului, command e textul comenzii. Uită-te aici cel puțin o dată pe săptămână. Dacă vezi /item folosit de cineva care nu trebuia, ai aflat la timp.
Atenție la TEST_SERVER
În fiecare CONFIG există rândul TEST_SERVER: 0. În sursa pachetului verificat, dacă pui TEST_SERVER: 1, orice jucător devine IMPLEMENTOR. E util pe un server de test închis, dar pe serverul live ar fi un dezastru. Verifică rapid toate fișierele:
grep -r "TEST_SERVER" /usr/home/game --include=CONFIG(Calea e un exemplu.) Toate rândurile trebuie să arate TEST_SERVER: 0.
Greșeli des întâlnite
- Același cont de GM pentru toată echipa. Nu mai știi cine a făcut ce. Fiecare om are contul lui.
- Toți GM-ii primesc IMPLEMENTOR „ca să nu întrebe”. Un singur cont furat înseamnă control total.
- Ai lăsat contul
admindin pachet. E primul lucru pe care îl încearcă un atacator. - Ai scris numele personajului greșit (altă literă mare). Drepturile pur și simplu nu apar.
- Ai uitat să scoți din
gmlistun fost GM. Când cineva pleacă din echipă, îi ștergi rândul în aceeași zi.
Întrebări frecvente
GM-ul meu nu are drepturi, deși e în gmlist. De ce?
Verifică trei lucruri: numele personajului (exact), contul (exact) și dacă ai dat /reload a sau restart. Apoi reloghează personajul.
Pot avea GM-i de încredere cu nivel GOD?
Poți, dar ține-i puțini. GOD creează iteme, deci poate influența direct economia. Pentru evenimente, de obicei ajunge HIGH_WIZARD.
Contul de GM poate juca normal?
Tehnic da, dar e o idee proastă. Ține personajul de GM separat de cel cu care joci, ca să nu existe suspiciuni.
Ce urmează
Drepturile din joc sunt doar o ușă. Următoarea e chiar intrarea pe server: cum securizezi accesul SSH. Dacă lucrezi des cu tabelele, recitește și tabelele player și account, fără riscuri. Toate lecțiile sunt în lista tutorialelor Metin2.
Server Metin2 gata de joc
Găzduire Metin2 în România, cu instalare de serverfiles, bază de date MySQL și protecție Anti-DDoS inclusă.