İçeriğe geç

Metin2 GM Nasıl Yapılır? gmlist Tablosu ve GM Yetki Seviyeleri

Hazırlayan: Metin2VIP Editörleri Yayın: 5 dk okuma

Kısaca: Metin2'de GM yetkisi, common veritabanındaki gmlist tablosuna hesap adı, karakter adı ve yetki seviyesi (LOW_WIZARD, HIGH_WIZARD, GOD ya da IMPLEMENTOR) yazılarak verilir. Liste oyun çekirdekleri açılırken yüklenir ve seviye karakter oyuna girerken atanır; satır eklendikten sonra sunucu yeniden başlatılır ya da IMPLEMENTOR bir GM oyunda /reload a yazar, karakter de oyuna yeniden girer.
İçindekiler
  1. gmlist tablosunun sütunları
  2. Adım adım GM yapma
  3. Metin2 GM yetki seviyeleri
  4. Komut seviyelerini CMD dosyasıyla değiştirmek
  5. GM_HOST_CHECK ve gmhost: yetkiyi IP'ye bağlamak
  6. GM karakterin oyundaki farkları
  7. GM yetkisini geri almak
  8. TEST_SERVER açıkken herkes GM olur
  9. GM yetkisini güvenli kullanmak

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

  1. GM yapılacak karakteri oyunda oluştur. mName sütunu 16 karakter olduğu için karakter adı bundan uzun olmamalıdır.
  2. Satırı ekle:
INSERT INTO common.gmlist (mAccount, mName, mContactIP, mServerIP, mAuthority)
VALUES ('hesapadi', 'KarakterAdi', '', 'ALL', 'IMPLEMENTOR');
  1. 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ından 1). Sunucuda zaten IMPLEMENTOR bir GM varsa oyunda /reload a yazması listeyi sunucuyu kapatmadan yeniler.
  2. 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 a listedeki ç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:

  • mContactIP doluysa oyuncunun bağlandığı IP bu değerle aynı olmalıdır.
  • mContactIP boşsa bağlanılan IP common.gmhost tablosundaki 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_LOGIN olarak, LOW_WIZARD ve üstü seviyedeki komutları log.command_log tablosuna 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çin pc.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 mContactIP alanı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

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?

Bu sayfa işine yaradı mı?

Giriş yap, oy ver ya da sayfayı kaydet. Okumak için üyelik gerekmez. WhatsApp X'te paylaş
Yanlış ya da eksik bir bilgi mi gördün? Bildir
Neyin yanlış olduğunu, doğrusunun ne olduğunu ve bunu nereden bildiğini yaz. Mesajın editörlere gider; yazı, kontrol edildikten sonra düzeltilir.
Yalnız editör görür.

Tartışma

Kurallar

Henüz yorum yok. Bu konuda bir deneyimin ya da sorun varsa ilk yorumu sen yaz.

Giriş yap ya da kayıt ol, sonra yorum yaz. Metin2VIP üyeliği hiçbir oyun sunucusunun hesabı değildir.