OYUN GÜNDEMİ

Metin2 Oyuncuya EP Verme Komutu mmooyun.com’da

Bu rehberde oyun içinden belirli bir oyuncunun hesabına EP eklemek için basit bir GM komutu ekliyoruz. Komut mantığı şu şekilde çalışıyor: GM oyunda /ep_g oyuncu_adı miktar komutunu yazıyor, sistem oyuncuyu buluyor ve oyuncunun bağlı olduğu account ID üzerinden account.account tablosundaki coins değerini artırıyor.

Ekran-goruntusu-2026-04-25-143412-1024x862 Metin2 Oyuncuya EP Verme Komutu mmooyun.com'da

Komut örneği:

/ep_g ZacqooLeaven 1881

veya:

/ep_g ZacqooLeaven 1938

Yani kullanım yapısı şu şekilde:

/ep_g oyuncu_adı ep_miktarı

cmd.cpp Düzenlemesi

İlk olarak cmd.cpp dosyasını aç.

Şunu ara:

ACMD(do_block_chat_list);

Altına bunu ekle:

ACMD(do_ep_ver);

Sonra yine cmd.cpp içinde şu satırı bul:

{ "block_chat_list",	do_block_chat_list,	0,	POS_DEAD,	GM_PLAYER },

Altına bunu ekle:

{ "ep_g",	do_ep_ver,	0,	POS_DEAD,	GM_IMPLEMENTOR },

Burada komutu GM_IMPLEMENTOR seviyesine tanımlıyoruz. Çünkü bu komut direkt hesaba EP eklediği için normal GM seviyesine açık bırakılması doğru olmaz. Sadece en yüksek yetkide kullanılması daha güvenli olur.

cmd_gm.cpp Düzenlemesi

Şimdi cmd_gm.cpp dosyasını aç.

Dosyanın en alt tarafına aşağıdaki fonksiyonu ekle:

ACMD(do_ep_ver)
{
char arg1[256], arg2[256];
long cnsvalue;
const char* Name; two_arguments(argument, arg1, sizeof(arg1), arg2, sizeof(arg2)); if (!*arg1 || !*arg2)
{
ch->ChatPacket(CHAT_TYPE_INFO, "Kullanim: /ep_g oyuncu ep");
return;
} Name = arg1;
cnsvalue = atoi(arg2); if (cnsvalue <= 0)
{
ch->ChatPacket(CHAT_TYPE_INFO, "EP miktari 0'dan buyuk olmalidir.");
return;
} LPCHARACTER tch = CHARACTER_MANAGER::instance().FindPC(Name); if (!tch)
{
ch->ChatPacket(CHAT_TYPE_INFO, "Oyuncu %s bulunamadi.", Name);
return;
} std::auto_ptr<SQLMsg> msg(DBManager::instance().DirectQuery(
"UPDATE account.account SET coins = coins + %ld WHERE id = %d",
cnsvalue,
tch->GetAID()
)); tch->ChatPacket(
CHAT_TYPE_INFO,
"Administrator %s hesabiniza %ld EP yukledi.",
ch->GetName(),
cnsvalue
); ch->ChatPacket(
CHAT_TYPE_INFO,
"%s isimli oyuncunun hesabina %ld EP yukledin.",
tch->GetName(),
cnsvalue
);
}

Bu haliyle komut sadece oyunda aktif olan oyuncular için çalışır. Çünkü burada oyuncu şu satırla aranıyor:

LPCHARACTER tch = CHARACTER_MANAGER::instance().FindPC(Name);

FindPC sadece oyunda olan karakterleri bulur. Yani oyuncu offline ise sistem oyuncuyu bulamaz ve şu mesajı verir:

Oyuncu bulunamadi.

Eğer oyuncu online ise sistem oyuncunun account ID değerini alır:

tch->GetAID()

Sonra bu account ID ile account.account tablosundaki coins alanını artırır:

UPDATE account.account SET coins = coins + miktar WHERE id = account_id

Komut Kullanımı

Oyuna girip implementor yetkisindeki karakterle şu şekilde kullanabilirsin:

/ep_g ZacqooLeaven 1881

Bu komut ZacqooLeaven isimli oyuncunun hesabına 1881 EP ekler.

Başka bir örnek:

/ep_g TestPlayer 500

Bu da TestPlayer isimli oyuncunun hesabına 500 EP ekler.

İşlem başarılı olursa EP alan oyuncuya şu tarz mesaj gider:

Administrator GM_ADI hesabiniza 500 EP yukledi.

Komutu kullanan GM tarafında da şu tarz mesaj görünür:

TestPlayer isimli oyuncunun hesabina 500 EP yukledin.

Daha Güvenli Kullanım İçin Log Eklemek

Bu tarz komutlarda log tutmak iyi olur. Çünkü direkt hesaba EP ekleyen bir sistem olduğu için daha sonra kimin, kime, kaç EP verdiğini görmek isteyebilirsin.

Fonksiyon içinde SQL işleminden sonra şunu ekleyebilirsin:

sys_log(
0,
"EP_COMMAND: %s gave %ld EP to %s account_id %d",
ch->GetName(),
cnsvalue,
tch->GetName(),
tch->GetAID()
);

Böylece komut kullanıldığında syslog tarafında kayıt oluşur.

Negatif Değer Kontrolü

Orijinal kodda girilen değer direkt atoi ile alınıyor. Bu durumda biri yanlışlıkla negatif değer girerse oyuncunun EP’si düşebilir. Bu yüzden şu kontrolü eklemek önemli:

if (cnsvalue <= 0)
{
ch->ChatPacket(CHAT_TYPE_INFO, "EP miktari 0'dan buyuk olmalidir.");
return;
}

Bu kontrol sayesinde /ep_g oyuncu -500 gibi bir kullanım çalışmaz.

std::auto_ptr Notu

Eski Metin2 source yapılarında genelde std::auto_ptr<SQLMsg> kullanılıyor. Eğer source eskiyse bu şekilde kalabilir:

std::auto_ptr<SQLMsg> msg(DBManager::instance().DirectQuery(
"UPDATE account.account SET coins = coins + %ld WHERE id = %d",
cnsvalue,
tch->GetAID()
));

Ama daha güncel C++ kullanan bir source varsa auto_ptr yerine std::unique_ptr tercih edilir. Yine de birçok Metin2 source eski standartla derlendiği için burada auto_ptr kullanımı normal.

Offline Oyuncuya EP Verme Hakkında

Bu komutun mevcut hali sadece online oyuncuya EP verir. Offline oyuncuya da EP vermek istiyorsan karakter adından account ID çekmek için database sorgusu yazmak gerekir. Ama bu ayrı bir sistem sayılır. Çünkü oyuncu online değilse FindPC ile karakter nesnesine ulaşamazsın.

Online oyuncu için bu hali yeterli ve daha basit çalışır.

Kısa Özet

cmd.cpp içine komut tanımı ekleniyor.

cmd_gm.cpp içine do_ep_ver fonksiyonu ekleniyor.

Komut kullanımı:

/ep_g oyuncu_adı ep_miktarı

Oyuncu online ise hesabındaki coins değeri artırılıyor.

Komut sadece GM_IMPLEMENTOR yetkisinde çalışıyor.

Negatif veya sıfır EP girişi engelleniyor.

Log eklenirse kimin kime EP verdiği daha rahat takip edilir.

Paylaş :

Bu Kategoriden

Metin2 Cinsiyet Değiştirme Quest Sistemi: Sorunsuz Çalışan Güncel Kod 09.05.2026 Metin2 sistem ekleme aracı ile source dosyalarına otomatik kod uygulama ve patch sürecini gösteren arayüz görseli. Metin2 Sistem Ekleme Aracı: Kodları Otomatik Uygulayan Yardımcı Program 09.05.2026 Metin2 ruh taşı scripti ile Grand Master beceri geliştirme sistemini anlatan Seungryong Vadisi görseli. Metin2 Ruh Taşı Scripti: Tek Seferde Çoklu Grand Master Eğitimi 06.05.2026 Metin2 Shader Sistemi: Grafik Kodlarında Tam Temizlik ve Stabilizasyon Süreci 06.05.2026
Okuma Önerisi

Benzer rehberlere ve güncel oyun içeriklerine göz atabilirsin.

Okumaya Devam Et

Subnautica 2'de derin deniz keşiflerini mümkün kılan Modification Station ve araç modüllerinin üretim paneli. Subnautica 2 Modification Station Rehberi: Araç Yükseltmeleri ve Celestine Tarımı 19.05.2026 Subnautica 2 Biomod yetenek listesindeki en güçlü siber-biyolojik gen mutasyonları ve hücre paneli gösterimi. Subnautica 2 En İyi Yetenekler Tier List: En Güçlü Biomod Seçimleri 19.05.2026 Subnautica 2 Feedback Resonator yükseltmesini açmak için Root Canyon biyomunda taranması gereken antik laboratuvar kalıntıları. Subnautica 2 Feedback Resonator Nasıl Alınır? Root Canyon ve Tarama Rehberi 19.05.2026 Subnautica 2 Power Center ana salonunda yer alan ve dördüncü Angel Comb ile kilitleri açılan devasa uzaylı türbini. Subnautica 2 Power Center Türbini Nasıl Çalıştırılır? Alien Ruins Bulmaca Rehberi 19.05.2026

Hızlı Geçiş

Rehber Haber Önizleme Mobil Oyun