Bir Metin2 sunucusunu yönetirken işinizi en çok kolaylaştıran araç sohbet kutusuna yazdığınız komutlardır. Metin2 GM komutları, oyun içinde eşya vermekten canavar çağırmaya, oyuncu ışınlamaktan proto dosyalarını yeniden yüklemeye kadar her şeyi tek satırda yapmanızı sağlar. Ancak bu güç yanlış ellerde ekonomiyi çökertebilir, bu yüzden komutları öğrenmek kadar yetkilendirmeyi doğru kurmak da önemlidir. Bu yazıda en sık kullanılan komutları, yetki seviyelerini ve bir hesaba GM yetkisini güvenli şekilde nasıl vereceğinizi anlatıyorum.
GM komutları nasıl çalışır?
Standart Metin2 sunucu kaynağında komutlar oyun çekirdeği (game süreci) içinde bir tabloya kayıtlıdır. Oyuncu sohbet kutusuna / ile başlayan bir metin yazdığında input katmanı bunu yakalar, komut adını çözer ve karşılık gelen fonksiyonu çalıştırır. Önemli nokta şudur: her komut belirli bir minimum yetki seviyesi ister. Yetkisi yetmeyen bir oyuncu komutu yazsa bile çekirdek onu sessizce reddeder. Kavramsal olarak komut tablosu şuna benzer:
// cmd_general / cmd_gm içindeki kayıt mantığı
{ "item", do_item, GM_IMPLEMENTOR },
{ "advance", do_advance, GM_HIGH_WIZARD },
{ "notice", do_notice, GM_LOW_WIZARD },
{ "warp", do_warp, GM_LOW_WIZARD },
Yani komutun varlığı değil, oyuncunun yetkisi belirleyicidir. Bu yüzden yetki seviyelerini iyi anlamak gerekir.
Yetki seviyeleri (GM authority)
Metin2 kaynağında yetki, gm.h içindeki bir enum ile tanımlanır. Düşükten yükseğe doğru kademeler şunlardır:
GM_PLAYER— normal oyuncu, hiçbir GM komutu çalışmaz.GM_LOW_WIZARD— sınırlı destek yetkisi (duyuru, ışınlanma gibi).GM_WIZARD— orta seviye etkinlik yetkisi.GM_HIGH_WIZARD— gelişmiş yönetim (seviye atlatma, mob yönetimi).GM_GOD— neredeyse sınırsız yetki.GM_IMPLEMENTOR— en üst yetki; eşya üretme vereloadgibi tehlikeli komutlar buradadır.
Mantık basittir: bir komut GM_HIGH_WIZARD istiyorsa, o seviye ve üzeri herkes kullanabilir. Bir destek ekibine en alt yetkiyi, sadece kendinize en üst yetkiyi vermek en sağlıklı yaklaşımdır.
En çok kullanılan Metin2 GM komutları
Aşağıdaki komutlar hemen hemen tüm standart sunucularda bulunur. Test ederken hep canlı sunucuda değil, önce kapalı bir test ortamında deneyin.
/item <vnum> [adet]— verilen vnum'lu eşyayı envanterinize ekler./give <isim> <vnum> [adet]— hedef oyuncuya eşya verir./mob <vnum>— bulunduğunuz noktaya tek bir canavar doğurur./group <vnum>— bir canavar grubunu (sürü) doğurur./purge— hedeflediğiniz NPC veya mob'u haritadan siler./advance <isim> <seviye>— bir oyuncuyu istenen seviyeye çıkarır./transfer <isim>— bir oyuncuyu yanınıza ışınlar./warp <x> <y>— kendinizi belirtilen koordinata ışınlar./notice <mesaj>— tüm sunucuya sarı sistem duyurusu yollar./restart_here//restart_town— öldüğünüzde olduğunuz yerde veya şehirde dirilir./reload <bayrak>— yapılandırmayı yeniden yükler; örneğin/reload pitem/mob proto'yu tazeler.
Örnek bir akış: bir etkinlikte oyunculara ödül verirken önce hedefi seçer, sonra eşyayı gönderirsiniz:
/notice 30 dakika icinde merkez meydanda etkinlik var!
/transfer KazananOyuncu
/give KazananOyuncu 71001 5
/reload komutu çok güçlüdür: item_proto veya mob_proto üzerinde yaptığınız değişiklikleri sunucuyu kapatmadan uygulamanızı sağlar. Yine de büyük şema değişikliklerinde tam yeniden başlatma daha güvenlidir.
Bir hesaba GM yetkisi verme
Komutların çalışması için yetkinin nereden okunduğunu bilmek gerekir. Metin2 yetkileri player veritabanındaki gmlist tablosundan yükler. Bu tabloya bir satır eklediğinizde ilgili hesap GM olur. Tipik sütunlar şunlardır:
mID— birincil anahtar.mAccount— yetkilenecek hesabın login adı.mName— yetki verilecek karakter adı (genelde*ile tüm karakterler).mContactIP— komutların sadece bu IP'den çalışmasını sağlayan kısıt.mAuthority— yetki seviyesi (IMPLEMENTOR,GOD,HIGH_WIZARD...).
Örnek bir kayıt:
INSERT INTO player.gmlist (mAccount, mName, mContactIP, mServerIP, mAuthority)
VALUES ('adminhesap', '*', '85.100.20.10', 'ALL', 'IMPLEMENTOR');
Satırı ekledikten sonra değişikliğin etkinleşmesi için sunucuyu yeniden başlatmanız (ya da kaynağınız destekliyorsa GM listesini yeniden yüklemeniz) gerekir. Çoğu kurulumda mContactIP alanını boş bırakmak komutu her yerden açar; bu yüzden güvenlik için kendi sabit IP'nizi yazın.
Güvenlik: GM yetkisini sızdırmayın
GM komutları bir sunucunun en hassas yüzeyidir. Tek bir /item sızıntısı tüm ekonomiyi çökertebilir. Birkaç temel kural:
- En az yetki ilkesi: destek ekibine
GM_IMPLEMENTORdeğil, işine yetecek en düşük seviyeyi verin. - IP kısıtı:
mContactIPalanını mutlaka doldurun; çalınan bir hesap bile yabancı IP'den GM komutu çalıştıramasın. - Loglama: Metin2 GM komutlarını
logveritabanındakicommand_logtablosuna yazar. Bu logu düzenli inceleyin; kim ne zaman ne verdi takip edin. - Ayrı hesap: günlük oynadığınız karakterle GM olmayın; yalnızca yönetim için ayrı bir hesap tutun.
- Test ortamı: yeni komutları ve
/reloaddenemelerini önce kapalı bir test sunucusunda yapın.
Bu kuralları uyguladığınızda komutların gücünden faydalanır ama riski en aza indirirsiniz.
Sık Sorulan Sorular
GM komutu yazdım ama hiçbir şey olmuyor, neden?
En yaygın sebep yetki seviyenizin yetersiz olması veya gmlist kaydınızın okunmamış olmasıdır. Hesabınızın mAuthority değerini kontrol edin ve değişiklikten sonra sunucuyu yeniden başlatın. Ayrıca mContactIP sizin bağlandığınız IP ile aynı değilse komutlar sessizce çalışmaz.
Tüm komutların tam listesini nereden bulurum?
Kesin liste kullandığınız kaynağa göre değişir. En güvenilir yöntem, sunucu kaynağınızdaki cmd.cpp / cmd_general.cpp / cmd_gm.cpp dosyalarındaki kayıt tablosunu okumaktır; orada her komutun adı ve gerektirdiği yetki seviyesi açıkça yazılıdır.
/reload komutu sunucuyu çökertir mi?
Doğru kullanıldığında hayır; proto ve yapılandırmayı tazelemek için tasarlanmıştır. Yine de bozuk bir item_proto veya eksik bir dosyayla çalıştırırsanız hatalara yol açabilir. Bu yüzden büyük değişiklikleri canlıya almadan önce test ortamında doğrulayın.
Metin2 sunucunuzu güvenli kurmak mı istiyorsunuz? GM yetkilendirmesi, log altyapısı ve komut güvenliği konusunda yardıma ihtiyacınız varsa benimle iletişime geçin — sunucunuzu birlikte sağlamlaştıralım.