Metin2 GM Nasıl Yapılır? gmlist Tablosu ve GM Yetki Seviyeleri
Hazırlayan: Metin2VIP Editörleri Yayın: 5 dk okuma
İçindekiler
Metin2'de bir karaktere GM yetkisi, common veritabanındaki gmlist tablosuna hesap adı, karakter adı ve yetki seviyesi yazılarak verilir. Liste oyun çekirdekleri açılırken yüklenir, seviye ise karakter oyuna girerken atanır. Bu yüzden satır eklendikten sonra sunucu yeniden başlatılır ya da IMPLEMENTOR yetkili bir GM oyunda /reload a yazar; karakter de oyuna yeniden girer.
Aşağıdaki kurallar sunucu kaynak kodunun GM yönetiminden gelir. Komutların hangi seviyede açıldığı ise sunucudan sunucuya değişebilir: sunucu sahipleri komut seviyelerini CMD dosyasıyla ya da kaynak kodda değiştirebilir.
gmlist tablosunun sütunları
| Sütun | Ne yazılır |
|---|---|
mID |
Otomatik numara, boş bırakılır |
mAccount |
Karakterin bulunduğu hesabın adı; büyük-küçük harf fark etmez |
mName |
GM yapılacak karakterin adı; büyük-küçük harf dahil birebir aynı olmalı, en fazla 16 karakter |
mContactIP |
GM_HOST_CHECK açıksa izin verilen IP; boş bırakılırsa gmhost listesi kullanılır |
mServerIP |
Yetkinin geçerli olduğu çekirdek IP'si; ALL bütün çekirdekler demektir |
mAuthority |
IMPLEMENTOR, GOD, HIGH_WIZARD, LOW_WIZARD ya da PLAYER |
Yetki karakter adına verilir: aynı hesaptaki başka bir karakter GM olmaz, her GM karakteri için ayrı satır gerekir. Hesap adı ise karakterin doğru hesaptan girdiğini denetlemek için kullanılır. mAuthority değeri PLAYER olan satırlar yüklenirken atlanır. Tablonun bulunduğu veritabanı ve diğer tablolar Metin2 veritabanları yazısında.
Adım adım GM yapma
- GM yapılacak karakteri oyunda oluştur.
mNamesütunu 16 karakter olduğu için karakter adı bundan uzun olmamalıdır. - Satırı ekle:
INSERT INTO common.gmlist (mAccount, mName, mContactIP, mServerIP, mAuthority)
VALUES ('hesapadi', 'KarakterAdi', '', 'ALL', 'IMPLEMENTOR');
- Listeyi yükle. db çekirdeği her oyun çekirdeği bağlandığında
gmlist'i yeniden okur ve listeyi o çekirdeğe gönderir. İlk GM için sunucuyu yeniden başlatmak gerekir (sh admin_panel.sh 2, ardından1). Sunucuda zaten IMPLEMENTOR bir GM varsa oyunda/reload ayazması listeyi sunucuyu kapatmadan yeniler. - Karakterle oyuna yeniden gir. GM seviyesi karakter oyuna girerken atanır; yetki geldiğinde karakterin üstünde GM işareti görünür.
/reload alistedeki çevrimiçi karakterlerin seviyesini hemen günceller, GM işareti ve koruma modu ise yeniden girişte gelir.
Metin2 GM yetki seviyeleri
Her komutun bir seviyesi vardır ve GM kendi seviyesindeki ve altındaki komutların hepsini kullanabilir. Seviyesi yetmeyen bir komut yazıldığında oyun, olmayan bir komut yazılmış gibi "Bu düzenleme mevcut değil." iletisini verir; yetkisiz oyuncu komutun var olduğunu bu yüzden anlamaz.
| Seviye | Sayı | gmlist'e yazılır mı | Bu seviyeyle açılan komutlardan örnekler |
|---|---|---|---|
| PLAYER | 0 | Satır atlanır | Herkesin kullandığı komutlar: duygu hareketleri, kanal değiştirme |
| LOW_WIZARD | 1 | Evet | /warp, /goto, /transfer, /dc, /level, /invisible, /setskill, /stat_reset, /full_set, /all_skill_master |
| WIZARD | 2 | Hayır, sütun bu değeri kabul etmez | /purge, /respawn |
| HIGH_WIZARD | 3 | Evet | /notice, /big_notice, /user, /mob, /kill, /eventflag, /priv_empire, /safebox, /shutdown |
| GOD | 4 | Evet | /item, /advance, /weaken |
| IMPLEMENTOR | 5 | Evet | /reload, /set, /who, /book, /private, /observer, /change_attr, /add_attr, /flush, /force_logout |
| DISABLE | 6 | Hayır | Yalnız CMD dosyasında: komutu herkese kapatır |
WIZARD seviyesi kodda tanımlıdır ama mAuthority sütununda bu seçenek yoktur. Bu yüzden WIZARD seviyesindeki komutlar pratikte HIGH_WIZARD ve üstü GM'lere açıktır.
Komutların kullanımı ve parametreleri GM komutları rehberi yazısında, tam liste GM komutları sayfasında.
Komut seviyelerini CMD dosyasıyla değiştirmek
share/conf/CMD dosyası her çekirdek klasörüne CMD adıyla bağlıdır ve her satırda bir komut adı ile yeni seviyesini tutar. Dosya çekirdek açılırken okunur, değişikliğin geçerli olması için çekirdekler yeniden başlatılır. Dosyanın yeri ve diğer ortak dosyalar Metin2 server dosyaları yazısında.
full_set IMPLEMENTOR
item_full_set IMPLEMENTOR
attr_full_set IMPLEMENTOR
all_skill_master IMPLEMENTOR
level GOD
book DISABLE
Geçerli seviyeler PLAYER, LOW_WIZARD, WIZARD, HIGH_WIZARD, GOD, IMPLEMENTOR ve DISABLE'dır. Tanınmayan bir seviye ya da boş bir satır sözdizimi hatası sayılır ve çekirdek açılmaz, bu yüzden dosyada boş satır bırakılmamalıdır. Komut adı tam yazılır; oyunda geçerli olan kısaltmalar burada işe yaramaz. PLAYER bu kaynakta sonradan eklenmiş bir seçenektir ve bir yönetici komutunu bütün oyunculara açar.
GM_HOST_CHECK ve gmhost: yetkiyi IP'ye bağlamak
Varsayılan ayarda oyun yalnız hesabı denetler: karakter gmlist'teki hesaptan giriş yapmışsa yetki verilir. Bu kaynakta CONFIG'e ya da ortak ayar dosyasına GM_HOST_CHECK: 1 yazılırsa denetim IP'ye geçer:
mContactIPdoluysa oyuncunun bağlandığı IP bu değerle aynı olmalıdır.mContactIPboşsa bağlanılan IPcommon.gmhosttablosundaki adreslerden biri olmalıdır.
Bu modda hesap adı ayrıca denetlenmez. Sabit IP ile bağlanan yönetici ekipleri için uygundur; IP'si değişen bir yönetici bu modda yetkisini kaybeder. gmhost'a adres eklemek:
INSERT INTO common.gmhost (mIP) VALUES ('IP_ADRESI');
CONFIG satırlarının ayrıntısı CONFIG ayarları yazısında.
GM karakterin oyundaki farkları
- Karakterin üstünde GM işareti görünür.
- Oyuna koruma modunda girer ve seviye atlasa da bu moddan çıkmaz. Koruma modundaki karakter kendi krallığının haritalarında ve başka krallıktan oyuncularla savaşa girmez.
- Ölünce eşya düşürme cezası uygulanmaz.
- Başka krallıkların sohbetini çözülmüş halde görür.
- Oyuna girişi log tablosuna
GM_LOGINolarak, LOW_WIZARD ve üstü seviyedeki komutlarılog.command_logtablosuna yazılır. - Normal oyuncunun bir saniyede 10 komut göndermesi bağlantısını kestirir; bu koruma GM'lere uygulanmaz.
- Questlerde
pc.is_gm()yalnız HIGH_WIZARD ve üstü için doğru döner; LOW_WIZARD bir GM,pc.is_gm()ile ayrılmış quest seçeneklerini göremez. Seviyeyi sayı olarak almak içinpc.get_gm_level()kullanılır. Quest tarafındaki diğer fonksiyonlar quest fonksiyonları yazısında.
GM yetkisini geri almak
DELETE FROM common.gmlist WHERE mName = 'KarakterAdi';
Ardından sunucu yeniden başlatılır ya da /reload a yazılır. /reload a listede kalan karakterlerin seviyesini yeniler; listeden çıkarılan karakter o sırada oyundaysa yetkisini oyundan çıkana kadar korur. Yetki alındıktan sonra karakterin oyundan çıkması sağlanmalıdır; aynı çekirdekteki bir karakterin bağlantısı /dc KarakterAdi ile kesilebilir.
TEST_SERVER açıkken herkes GM olur
CONFIG ya da ortak ayar dosyasında TEST_SERVER: 1 yazılıysa oyun gmlist'e hiç bakmaz ve her karakteri IMPLEMENTOR sayar; bütün oyuncular eşya üretebilir, sunucuyu kapatabilir. Bu ayar geliştirme sunucusu içindir, canlı sunucuda 0 kalmalıdır. Oyunda herkesin GM işaretiyle dolaştığı görülürse ilk bakılacak satır budur.
GM yetkisini güvenli kullanmak
- Her yönetici için ayrı hesap ve karakter aç, GM hesaplarına güçlü parola ver.
- Yetkiyi işin gerektirdiği en düşük seviyede ver; LOW_WIZARD'ın güçlü komutlarını CMD dosyasıyla yukarı taşı.
- Sabit IP'li ekiplerde GM_HOST_CHECK'i aç ve
mContactIPalanını doldur. - GM komutlarını düzenli kontrol et:
SELECT date, username, ip, command FROM log.command_log ORDER BY date DESC LIMIT 50;
Bu kayıtlar log veritabanına yazım açıkken tutulur; CONFIG'de DB_LOG_LEVEL: 0 yazılıysa komut kaydı da tutulmaz.
Sık sorulan sorular
- GM yaptım ama komutlar "Bu düzenleme mevcut değil" diyor, neden?
- Bu ileti hem olmayan hem de seviyesi yetmeyen komutlarda çıkar. Karakter satır eklendikten sonra oyuna yeniden girmemiş, mName ya da mAccount farklı yazılmış ya da komutun seviyesi karakterin seviyesinden yüksek olabilir.
- WIZARD seviyesi neden gmlist'e yazılamıyor?
- mAuthority sütununun kabul ettiği değerler IMPLEMENTOR, HIGH_WIZARD, GOD, LOW_WIZARD ve PLAYER'dır. Kod WIZARD'ı tanısa da sütun bu değeri almaz; WIZARD seviyesindeki komutlar pratikte HIGH_WIZARD ve üstüne açıktır.
- /reload a ne işe yarar?
- gmlist ve gmhost tablolarını sunucuyu kapatmadan yeniden yükler. IMPLEMENTOR yetkisi ister; ilk GM atanırken oyunda bu yetkide kimse olmadığı için o durumda sunucu yeniden başlatılır.
- Oyunda herkes GM oldu, sebebi ne olabilir?
- CONFIG ya da ortak ayar dosyasında TEST_SERVER açıktır. Bu ayar açıkken oyun gmlist'e bakmadan her karakteri IMPLEMENTOR sayar; canlı sunucuda 0 olmalıdır.
İlgili sayfalar
- Metin2 CONFIG Ayarları: Game Çekirdeği Seçenekleri ve Anlamları (Server kurma)
- Metin2 GM Komutları: En Çok Kullanılan Komutlar ve Yetki Seviyeleri (Server kurma)
- Metin2 Quest Fonksiyonları: En Çok Kullanılan pc, npc, item ve game Fonksiyonları (Server kurma)
- Metin2 Server Dosyaları: Klasör Yapısı ve Her Dosyanın Görevi (Server kurma)
- Metin2 Server Nasıl Kurulur? Adım Adım PvP Server Kurulumu (Server kurma)
Kategori: Server Kurma Server Kurulumu gm komutları server kurulumu gm gmlist
Bu sayfadaki bilgiler Metin2'nin sunucu yazılımındaki hesaplamalara ve standart oyun dosyalarına dayanır. Oyun dosyalarını değiştiren sunucularda değerler farklı olabilir. İçerikleri nasıl hazırlıyoruz?