OYUN GÜNDEMİ

Metin2 Boss İsimlerini Farklı Renkte Gösterme

Metin2’de küçük ama göze hoş gelen client düzenlemelerinden biri de boss isimlerini normal moblardan farklı renkte göstermektir. Oyuncu açısından da işe yarıyor aslında, çünkü kalabalık slotlarda veya event bölgelerinde boss’u ayırt etmek daha kolay oluyor. Özellikle metin, boss ve normal mobların iç içe olduğu haritalarda bu tarz ufak görsel düzenlemeler oyunu daha okunabilir hale getiriyor.

image-440 Metin2 Boss İsimlerini Farklı Renkte Gösterme

Bu paylaşımda boss rankına sahip canavarların isim rengini ayrı bir renk olarak tanımlayacağız. Sistem client taraflı çalışıyor, yani server source ile uğraşmadan sadece client dosyaları üzerinden düzenleme yapılacak.

Yapılacak İşlem

Düzenleme yapılacak ana bölümler şunlar:

Client/UserInterface
Client/root

UserInterface tarafında boss için yeni bir name color index tanımlıyoruz. Root tarafında ise bu index’e karşılık gelecek RGB rengini ekliyoruz.

Locale_inc.h Düzenlemesi

Öncelikle şu dosyayı açıyoruz:

Client/UserInterface/Locale_inc.h

Dosyanın uygun bir yerine şu define eklenir:

#define ELISIA_BOSS_NAMECOLOR

Bu define sayesinde boss isim rengi sistemi aktif/pasif kontrol edilebilir hale geliyor. İleride kaldırmak isterseniz sistemi komple silmek yerine bu define üzerinden kapatabilirsiniz.

InstanceBase.h Düzenlemesi

Şimdi şu dosyayı açıyoruz:

Client/UserInterface/InstanceBase.h

Şu satırı bulun:

NAMECOLOR_WAYPOINT,

Altına ekleyin:

#ifdef ELISIA_BOSS_NAMECOLOR
NAMECOLOR_BOSS,
#endif

Ardından yine aynı dosyada şu satırı bulun:

BOOL IsStone();

Altına ekleyin:

BOOL IsBoss();

Burada client’a yeni bir kontrol eklemiş oluyoruz. Yani oyun artık bir yaratığın boss olup olmadığını IsBoss() fonksiyonu ile anlayabilecek.

InstanceBase.cpp Düzenlemesi

Şimdi şu dosyayı açıyoruz:

Client/UserInterface/InstanceBase.cpp

Şu fonksiyonu bulun:

BOOL CInstanceBase::IsStone()
{
return m_GraphicThingInstance.IsStone();
}

Altına ekleyin:

BOOL CInstanceBase::IsBoss()
{
const CPythonNonPlayer::TMobTable* pkTab = CPythonNonPlayer::Instance().GetTable(GetRace()); if (pkTab != nullptr)
{
if (pkTab->bRank >= 4 && !IsStone() && pkTab->bType == 0)
return TRUE;
} return FALSE;
}

Burada mantık şu: Mob tablosundan yaratığın bilgisi alınıyor. Eğer rank değeri boss seviyesindeyse, taş değilse ve mob tipi uygunsa boss olarak kabul ediliyor.

bRank >= 4 kısmı boss ayrımını yapan ana nokta. Yani rank değeri belirli seviyenin üstünde olan yaratıkların isim rengi farklı gösterilecek.

InstanceBaseEffect.cpp Düzenlemesi

Şimdi şu dosyayı açıyoruz:

Client/UserInterface/InstanceBaseEffect.cpp

Dosya içinde şu fonksiyonu bulun:

UINT CInstanceBase::GetNameColorIndex()

Bu fonksiyonun içinde şu bloğu bulun:

else if (IsNPC())
{
return NAMECOLOR_NPC;
}

Altına ekleyin:

#ifdef ELISIA_BOSS_NAMECOLOR
else if (IsBoss())
{
return NAMECOLOR_BOSS;
}
#endif

Bu kısım önemli. Çünkü oyun bir karakterin, NPC’nin, mobun veya boss’un ismini hangi renkte göstereceğine burada karar veriyor. Boss kontrolünü NPC’den sonra ekleyerek boss yaratıkların ayrı renk index’i kullanmasını sağlıyoruz.

PythonApplicationModule.cpp Düzenlemesi

Şu dosyayı açın:

Client/UserInterface/PythonApplicationModule.cpp

Şu satırı bulun:

PyModule_AddIntConstant(poModule, "CAMERA_STOP", CPythonApplication::CAMERA_STOP);

Altına ekleyin:

#ifdef ELISIA_BOSS_NAMECOLOR
PyModule_AddIntConstant(poModule, "ELISIA_BOSS_NAMECOLOR", 1);
#else
PyModule_AddIntConstant(poModule, "ELISIA_BOSS_NAMECOLOR", 0);
#endif

Bu ekleme ile root tarafında app.ELISIA_BOSS_NAMECOLOR kontrolünü kullanabileceğiz. Yani Python tarafı bu sistemin açık olup olmadığını anlayacak.

PythonCharecterManagerModule.cpp Düzenlemesi

Şu dosyayı açın:

Client/UserInterface/PythonCharecterManagerModule.cpp

Şu satırı bulun:

PyModule_AddIntConstant(poModule, "NAMECOLOR_WAYPOINT", CInstanceBase::NAMECOLOR_WAYPOINT);

Altına ekleyin:

#ifdef ELISIA_BOSS_NAMECOLOR
PyModule_AddIntConstant(poModule, "NAMECOLOR_BOSS", CInstanceBase::NAMECOLOR_BOSS);
#endif

Bu kısım da boss name color index’ini Python tarafına aktarıyor. Bunu eklemezseniz root içinde chrmgr.NAMECOLOR_BOSS kullanıldığında hata alabilirsiniz.

Root Dosyaları

Şimdi client root tarafına geçiyoruz.

colorinfo.py Düzenlemesi

Şu dosyayı açın:

Client/root/colorinfo.py

Şu satırı bulun:

CHR_NAME_RGB_WAYPOINT = (255, 255, 255)

Altına ekleyin:

CHR_NAME_RGB_BOSS = (255, 177, 0)

Buradaki değer boss isim rengini belirler. Bu örnekte turuncu / altın tonunda bir renk kullanılıyor. Boss isimleri normal moblardan daha dikkat çekici görünür.

İsterseniz farklı renk de verebilirsiniz. Mesela kırmızıya yakın yapmak isterseniz RGB değerlerini değiştirebilirsiniz. Ama çok parlak renk seçerseniz oyun içinde biraz göz yorabilir, ona dikkat etmek lazım.

introloading.py Düzenlemesi

Şu dosyayı açın:

Client/root/introloading.py

Dosya içinde şu fonksiyonu bulun:

def __RegisterColor(self):

Bu fonksiyonun içinde NAME_COLOR_DICT yapısını göreceksiniz. Şuna benzer bir blok olur:

NAME_COLOR_DICT = {
chrmgr.NAMECOLOR_PC : colorInfo.CHR_NAME_RGB_PC,
chrmgr.NAMECOLOR_NPC : colorInfo.CHR_NAME_RGB_NPC,
chrmgr.NAMECOLOR_MOB : colorInfo.CHR_NAME_RGB_MOB,
chrmgr.NAMECOLOR_PVP : colorInfo.CHR_NAME_RGB_PVP,
chrmgr.NAMECOLOR_PK : colorInfo.CHR_NAME_RGB_PK,
chrmgr.NAMECOLOR_PARTY : colorInfo.CHR_NAME_RGB_PARTY,
chrmgr.NAMECOLOR_WARP : colorInfo.CHR_NAME_RGB_WARP,
chrmgr.NAMECOLOR_WAYPOINT : colorInfo.CHR_NAME_RGB_WAYPOINT, chrmgr.NAMECOLOR_EMPIRE_MOB : colorInfo.CHR_NAME_RGB_EMPIRE_MOB,
chrmgr.NAMECOLOR_EMPIRE_NPC : colorInfo.CHR_NAME_RGB_EMPIRE_NPC,
chrmgr.NAMECOLOR_EMPIRE_PC+1 : colorInfo.CHR_NAME_RGB_EMPIRE_PC_A,
chrmgr.NAMECOLOR_EMPIRE_PC+2 : colorInfo.CHR_NAME_RGB_EMPIRE_PC_B,
chrmgr.NAMECOLOR_EMPIRE_PC+3 : colorInfo.CHR_NAME_RGB_EMPIRE_PC_C,
}

Bu bloğun hemen altına şunu ekleyin:

if app.ELISIA_BOSS_NAMECOLOR:
NAME_COLOR_DICT[chrmgr.NAMECOLOR_BOSS] = colorInfo.CHR_NAME_RGB_BOSS

Bu ekleme ile boss isim rengi Python tarafında aktif olarak kaydedilmiş olur.

Sistem Ne İşe Yarıyor?

Bu düzenlemeden sonra boss olarak algılanan yaratıkların isimleri normal moblardan farklı renkte görünür. Mesela normal yaratık isimleri standart renkte kalırken, boss isimleri altın / turuncu renkte görünebilir.

Oyuncu tarafında çok büyük bir sistem gibi görünmeyebilir ama kullanım hissi güzel. Boss’u seçmek, kalabalıkta fark etmek, eventlerde hedefi daha hızlı görmek falan daha rahat oluyor. Özellikle boss farm, event mapleri ve kalabalık PvM alanlarında işe yarayan bir düzenleme.

Dikkat Edilmesi Gerekenler

Bu sistem boss kontrolünü şu şarta göre yapıyor:

pkTab->bRank >= 4 && !IsStone() && pkTab->bType == 0

Yani rank değeri boss seviyesinde olan, metin taşı olmayan ve mob tipinde bulunan varlıklar boss olarak kabul ediliyor.

Bazı fileslerde rank veya type değerleri farklı düzenlenmiş olabilir. Eğer sistem çalışmazsa önce mob_proto tarafındaki boss rank değerlerini kontrol etmek gerekir. Çünkü client tarafı burada gelen tablo bilgisine göre karar veriyor.

Ayrıca PythonCharecterManagerModule.cpp ve introloading.py tarafındaki eklemeler unutulursa boss renk index’i root tarafında tanınmayabilir.

Boss isimlerini farklı renkte göstermek küçük ama hoş bir client düzenlemesi. Oyuncular açısından bossları fark etmek kolaylaşıyor, oyun içi görünüm de biraz daha düzenli hale geliyor. Özellikle PvM ve boss farm ağırlıklı serverlarda bu tarz detaylar oyuncu deneyimini daha iyi hissettiriyor.

Düzenlemeleri yaptıktan sonra client source derlenmeli, root dosyaları da paketlenip test edilmelidir.

Kaynak: Client/UserInterface ve Client/root düzenlemeleri
Paylaşım: MMOOYUN.COM

Not

Daha fazla Metin2 sistemi, client-source düzenlemesi, hazır files, özel geliştirme ve teknik destek için geliştirici tarafındaki adresimizi ziyaret edebilirsiniz:

dev.mmooyun.com

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