ÖNİZLEME
[/RIGHT]
Merhaba, derece sınırını kaldırmanın yanı sıra tamamen yeni bir derece eklemeyle ilgili küçük bir eğitim.
32k'nin üzerinde yeni bir rank eklemek istiyorsak (Type) değişkenini int olarak ayarlamazsak, bu mümkün olmayacaktır.
İlk yapacağımız şey, bu sınırı kaldıralım,
Packet.h açıyoruz(SRC/GAME)
Yani değişkenin (Type) değeri :
değiştir
( Packet.h )
İçinde:
ve şu şekilde değiştirin:
Ardından bu işlevi arayın:
İçinde:
ve şu şekilde değiştirin:
Şimdi aynısını düzenlememiz gerekiyor
Source_Client / Client / UserInterface / InstanceBase.cpp
Sonra bu kodu arayın:
yukarıdaki ile aynıdır değiştir: ( short yerine int )
Ardından Source_Client / Client / UserInterface / InstanceBase.h Dosyasını arayın
değiştir ( Short yerine int ) (Bu 2 kez gerçekleşir.)
değiştir ( Short için int )
Source_Client / Client / UserInterface / NetworkActorManager.h
Bunu arayın:
ve gelen değişim ( Short yerine int ) (Bu 2 kez gerçekleşir)
Source_Client / Client / UserInterface / Packet.h
Ara:
ve gelen değişim ( Short yerine int ) (Bu 2 kez gerçekleşir)
Source_Client / Client / UserInterface / Packet.h
Ara:
ve değişim ( Short yerine int ) (Bu 3 kez gerçekleşir)
Şimdi yeni bir Kademe ekleyeceğiz
/ Src / Game / ve File Char_Battle.cpp'yi aç
Şimdi arıyoruz:
Burada buna benzer bir şey görüyoruz:
Ve kendimiz için düzenleriz. Örneğimde şu şekilde düzenliyorum:
Zaten kendiniz için düzenleme yaptıysanız, devam edelim (aynı dosyada, Char_Battle.cpp)
Aşağıdaki kodu arıyoruz:
burada sınırımızın olduğu yerde durumumuza giriyoruz:
Sonra ara:
Ve kendimiz için düzenleriz, benim durumumda - 85.000 ve + 100.000
Zaten yaptıysanız, oyununuzu derleyin
Source_Client / Client / InstanceBase.h'yi açıyoruz ve bunu arıyoruz:
Şimdi Source_Client / Client / InstanceBase.cpp'ye gidiyoruz ve arıyoruz:
InstanceBase.cpp
Eklendikten sonra şöyle görünecek:
Düzenlemeyi bitirdiyseniz, derleyebilirsiniz
şimdi Client / Root'a gidin ve LocaleInfo.py ve Open'ı arayın
Şimdi bunu arıyoruz:
burada 3 yeni Rütbemizi eklemeliyiz Benim durumumda:
Kaydedin ve sonraki Dosyaya gidin, yani IntroLoading.py (Client / Root)
Bunu arıyoruz:
Kendimiz için düzenleriz
Benim durumumda:
Kaydedin ve UiCharacter.py'ye gidin (Client / Root)
bunu arıyoruz:
kendimiz için düzenleriz
Benim durumumda:
Kaydedin ve ardından şu adrese gidin: Client / Root / Locale / pl / Locale_Game.txt
ve içinde dereceleri ararız, yani:
kendimiz için düzenleriz, benim durumumda:
Derece renklerini düzenleme:
Client / Root ve ColorInfo.py açılır
ve böyle bir şey var:
Kendimiz için düzenleriz, benim durumumda:
Metin2'de Derece Sınırını Değiştirme ve Yeni Derece Ekleme
Metin2 özel sunucularında oyuncuların ilerlemesini desteklemek ve daha fazla oyun içi motivasyon yaratmak için derece sınırlarının genişletilmesi veya yeni derecelerin eklenmesi oldukça yaygın bir geliştirme pratiğidir. Bu işlem genellikle C++ ve Python[/CODE] tabanlı sistemler üzerinden yapılır. Bu rehberde hem game server hem de client tarafında yapılması gereken adımları detaylıca ele alacağız.
1. Derece Sınırı Nedir?
Metin2'de her karakter belirli bir dereceye kadar ilerleyebilir. Varsayılan sistemde bu sınır genellikle 120 ile sınırlıdır. Ancak bazı özel sunucularda bu değer 130, 150 hatta daha yüksek seviyelere çıkarılabilmektedir. Bu işlem için hem sunucu tarafında hem de istemci tarafında değişiklikler yapılması gerekir.
2. C++ Tarafında Derece Sınırı Değiştirme
Sunucu tarafında derece sınırını değiştirmek için öncelikle game server source code üzerinde çalışmanız gerekir. Bu kodlar genellikle C++ dilinde yazılmıştır. Örnek olarak:
- char.cpp dosyasında karakter seviyesiyle ilgili kontrol edilen alanlar vardır. Burada max level değerleri değiştirilebilir.
- constants.h veya benzeri sabit tanımlamaların yapıldığı dosyalarda da MAX_LEVEL gibi sabitler yer alabilir. Bu değerler yeni seviyeye göre güncellenmelidir.
3. Python Tarafında UI ve İstemci Ayarları
İstemci tarafında derece bilgileri genellikle Python ile yazılmış UI sistemleri tarafından yönetilir. Bu nedenle uiscript dosyalarında seviye listeleri, progress bar aralıkları ve diğer görsel öğelerin güncellenmesi gerekir.
Py Root klasörlerinde bulunan character.py veya player.py gibi dosyalarda karakterin mevcut seviyesi gösterilir. Bu dosyaların içerdiği limit kontrolleri yeni seviyeye göre yeniden düzenlenmelidir.
4. Yeni Derece Ekleme
Yeni dereceler eklemek, sadece bir sınır değeri değiştirmekten daha karmaşık olabilir. Oyuncu her yükseldikçe kazandığı bonuslar, yetenek noktaları ve istatistik artışı gibi sistemler de buna göre ayarlanmalıdır. Bu durumda game core ve db core üzerinde değişiklikler yapmak gerekebilir.
Örneğin, 120+ dereceler için yeni bir exp tablosu tanımlamak gerekebilir. Bu tablo genellikle game server veritabanında saklanır ve her yeni derece için gereken tecrübe puanı buradan alınır.
5. Derleme ve Test İşlemi
Tüm değişiklikler yapıldıktan sonra source edit işlemleri tamamlandıktan sonra compile işlemi yapılmalıdır. Derleme sırasında hata alınırsa, yapılan değişiklikler kontrol edilmeli ve düzeltilmelidir. Her yeni derece için test karakterleri ile denemeler yaparak sistemin doğru çalıştığından emin olunmalıdır.
Sonuç
Metin2 özel sunucularında derece sınırı değiştirmek veya yeni dereceler eklemek, C++ ve Python bilgisi gerektiren ancak oldukça faydalı bir geliştirme uygulamasıdır. Doğru yapıldığında oyuncular için daha uzun vadeli bir ilerleme sistemi sunabilir. Bu işlemi yaparken martysama gibi gelişmiş kaynaklardan yardım almak da faydalı olabilir. Her zaman game, auth ve db sistemlerini dikkatli şekilde senkronize etmeyi unutmayın.
Changing Degree Limit and Adding New Degrees in Metin2 [C++ / Python]
In Metin2 private servers, expanding degree limits or adding new degrees is a common development practice to support player progression and create more in-game motivation. This process is typically done through C++ and Python based systems. In this guide, we will cover the steps required on both the game server and client side in detail.
1. What is a Degree Limit?
In Metin2, each character can advance up to a certain degree. By default, this limit is usually capped at 120. However, on some private servers, this value can be increased to 130, 150, or even higher levels. To do so, modifications are required on both the server and client sides.
2. Changing Degree Limit on the C++ Side
To change the degree limit on the server side, you first need to work with the game server source code. These codes are generally written in C++. For example:
- In char.cpp, there are areas where character level checks occur. The max level values here can be adjusted.
- In files like constants.h, constants such as MAX_LEVEL may exist and should be updated according to the new level.
3. Client-Side UI Settings with Python
On the client side, degree information is generally managed by UI systems written in Python. Therefore, uiscript files must be updated with new level lists, progress bar ranges, and other visual elements.
In Py Root folders, files such as character.py or player.py display the current character level. Level cap checks within these files must be restructured for the new degree range.
4. Adding New Degrees
Adding new degrees can be more complex than simply changing a limit value. As players level up, bonuses gained, skill points awarded, and stat increases must also be adjusted accordingly. In this case, modifications may be needed in the game core and db core.
For instance, a new exp table might be defined for levels above 120. This table is usually stored in the game server database and contains the experience points required for each new level.
5. Compilation and Testing
After all changes are made and source edit processes are completed, the compile step must be performed. If errors occur during compilation, the changes should be reviewed and corrected. Ensure that the system works correctly by testing with characters created specifically for each new degree.
Conclusion
Changing the degree limit or adding new degrees in Metin2 private servers is a development task requiring knowledge of C++ and Python, but it is highly beneficial. When done correctly, it can offer a longer-term progression system for players. When performing this task, resources like martysama can also be helpful. Always remember to carefully synchronize your game, auth, and db systems.
Merhaba, derece sınırını kaldırmanın yanı sıra tamamen yeni bir derece eklemeyle ilgili küçük bir eğitim.
32k'nin üzerinde yeni bir rank eklemek istiyorsak (Type) değişkenini int olarak ayarlamazsak, bu mümkün olmayacaktır.
İlk yapacağımız şey, bu sınırı kaldıralım,
Packet.h açıyoruz(SRC/GAME)
Kod:
short sAlignment;
Yani değişkenin (Type) değeri :
Kod:
Short
değiştir
Kod:
Int
( Packet.h )
Kod:
typedef struct packet_update_char
İçinde:
Kod:
short sAlignment;
ve şu şekilde değiştirin:
Kod:
int sAlignment;
Ardından bu işlevi arayın:
Kod:
typedef struct packet_char_additional_info
İçinde:
Kod:
short sAlignment;
ve şu şekilde değiştirin:
Kod:
int sAlignment;
Şimdi aynısını düzenlememiz gerekiyor
Source_Client / Client / UserInterface / InstanceBase.cpp
Sonra bu kodu arayın:
Kod:
void CInstanceBase::SetAlignment(short sAlignment)
yukarıdaki ile aynıdır değiştir: ( short yerine int )
Ardından Source_Client / Client / UserInterface / InstanceBase.h Dosyasını arayın
Kod:
WYSZUKAJ - short m_sAlignment;
değiştir ( Short yerine int ) (Bu 2 kez gerçekleşir.)
Kod:
WYSZUKAJ - void SetAlignment(short sAlignment);
değiştir ( Short için int )
Source_Client / Client / UserInterface / NetworkActorManager.h
Bunu arayın:
Kod:
WYSZUKAJ - void SetAlignment(short sAlignment);
ve gelen değişim ( Short yerine int ) (Bu 2 kez gerçekleşir)
Source_Client / Client / UserInterface / Packet.h
Ara:
Kod:
short m_sAlignment;
ve gelen değişim ( Short yerine int ) (Bu 2 kez gerçekleşir)
Source_Client / Client / UserInterface / Packet.h
Ara:
Kod:
short sAlignment;
ve değişim ( Short yerine int ) (Bu 3 kez gerçekleşir)
Şimdi yeni bir Kademe ekleyeceğiz
/ Src / Game / ve File Char_Battle.cpp'yi aç
Şimdi arıyoruz:
Kod:
int iAlignIndex;
Burada buna benzer bir şey görüyoruz:
Kod:
if (GetRealAlignment() >= 120000) // Kahraman iAlignIndex = 0; else if (GetRealAlignment() >= 80000) // Soylu iAlignIndex = 1; else if (GetRealAlignment() >= 40000) // İyi iAlignIndex = 2; else if (GetRealAlignment() >= 10000) // Arkadaşca iAlignIndex = 3; else if (GetRealAlignment() >= 0) // Tarafsız Sıra (Yani 0'da) iAlignIndex = 4; else if (GetRealAlignment() > -40000) // iAlignIndex = 5; else if (GetRealAlignment() > -80000) // iAlignIndex = 6; iAlignIndex = 8; // (bu durumda 20k olan sınırı kapatır 20k)
Ve kendimiz için düzenleriz. Örneğimde şu şekilde düzenliyorum:
Kod:
if (GetRealAlignment() >= 1000000) // Turkmmo (Yeni Sıralamam) iAlignIndex = 0; else if (GetRealAlignment() >= 500000) // Replicant (Yeni Sıralamam) iAlignIndex = 1; else if (GetRealAlignment() >= 120000) // Kahraman iAlignIndex = 2; else if (GetRealAlignment() >= 80000) // Soylu iAlignIndex = 3; else if (GetRealAlignment() >= 40000) // iyi iAlignIndex = 4; else if (GetRealAlignment() >= 10000) // Arkadaşça iAlignIndex = 5; else if (GetRealAlignment() >= 0) iAlignIndex = 6; else if (GetRealAlignment() > -40000) iAlignIndex = 7; else if (GetRealAlignment() > -80000) iAlignIndex = 8; else if (GetRealAlignment() > -120000) iAlignIndex = 9; else if (GetRealAlignment() > -820000) // Replicant (Yeni Negatif Sıram ) iAlignIndex = 10; else iAlignIndex = 11;
Zaten kendiniz için düzenleme yaptıysanız, devam edelim (aynı dosyada, Char_Battle.cpp)
Aşağıdaki kodu arıyoruz:
Kod:
if (g_iUseLocale && pkKiller->GetParty()) { FPartyAlignmentCompute f(-20000, pkKiller->GetX(), pkKiller->GetY()); pkKiller->GetParty()->ForEachOnlineMember(f); if (f.m_iCount == 0) pkKiller->UpdateAlignment(-20000); else { sys_log(0, "ALIGNMENT PARTY count %d amount %d", f.m_iCount, f.m_iAmount); f.m_iStep = 1; pkKiller->GetParty()->ForEachOnlineMember(f); } else pkKiller->UpdateAlignment(-20000); } }
burada sınırımızın olduğu yerde durumumuza giriyoruz:
Kod:
if (g_iUseLocale && pkKiller->GetParty()) { FPartyAlignmentCompute f(-85000, pkKiller->GetX(), pkKiller->GetY()); pkKiller->GetParty()->ForEachOnlineMember(f); if (f.m_iCount == 0) pkKiller->UpdateAlignment(-85000); else { } else pkKiller->UpdateAlignment(-850000); } }
Sonra ara:
Kod:
m_iRealAlignment = MINMAX(-200000, m_iRealAlignment + iAmount, 200000);
Ve kendimiz için düzenleriz, benim durumumda - 85.000 ve + 100.000
Kod:
m_iRealAlignment = MINMAX(-850000, m_iRealAlignment + iAmount, 1000000);
Zaten yaptıysanız, oyununuzu derleyin
Source_Client / Client / InstanceBase.h'yi açıyoruz ve bunu arıyoruz:
Kod:
TITLE_NUM = 9, TITLE_NONE = 4,
- <li data-xf-list-type="ul">TITLE_NUM - Toplam Sıralar.
TITLE_NONE - Tarafsız Sıra Numarası.
Ve kendimize göre değiştiriyoruz
Kod:
TITLE_NUM = 12, TITLE_NONE = 6,
Şimdi Source_Client / Client / InstanceBase.cpp'ye gidiyoruz ve arıyoruz:
Kod:
UINT CInstanceBase::GetAlignmentGrade() { if (m_sAlignment >= 12000) return 0; else if (m_sAlignment >= 8000) return 1; else if (m_sAlignment >= 4000) return 2; else if (m_sAlignment >= 1000) return 3; else if (m_sAlignment >= 0) return 4; else if (m_sAlignment > -4000) return 5; else if (m_sAlignment > -8000) return 6; else if (m_sAlignment > -12000) return 7; return 8; }
InstanceBase.cpp
Kod:
int CInstanceBase::GetAlignmentType() { switch (GetAlignmentGrade()) { case 0: ------> Ranga Pozytywna // Kahraman case 1: ------> Ranga Pozytywna // Soylu case 2: ------> Ranga Pozytywna // İyi case 3: ------> Ranga Pozytywna // Arkadaşça { return ALIGNMENT_TYPE_WHITE; break; case 8: ------> Ranga Negatywna // Zalim { return ALIGNMENT_TYPE_DARK; break; } } return ALIGNMENT_TYPE_NORMAL; }
Eklendikten sonra şöyle görünecek:
Kod:
int CInstanceBase::GetAlignmentType() { switch (GetAlignmentGrade()) { case 0: ------> Ranga Pozytywna // Turkmmo (Yeni derece 2) case 1: ------> Ranga Pozytywna // Replicant (Yeni derece) case 2: ------> Ranga Pozytywna // Kahraman case 3: ------> Ranga Pozytywna // Soylu case 4: ------> Ranga Pozytywna // İyi case 5: ------> Ranga Pozytywna // Arkadaşça { return ALIGNMENT_TYPE_WHITE; break; } case 7: ------> Ranga Negatywna // Agresif case 8: ------> Ranga Negatywna // Hileli case 9: ------> Ranga Negatywna // Kötü Niyetli case 10: ------> Ranga Negatywna // Zalim case 11: ------> Ranga Negatywna // Turkmmo (Yeni Negatif Derece) { return ALIGNMENT_TYPE_DARK; break; } }
Düzenlemeyi bitirdiyseniz, derleyebilirsiniz
şimdi Client / Root'a gidin ve LocaleInfo.py ve Open'ı arayın
Şimdi bunu arıyoruz:
Kod:
TITLE_NAME_LIST = ( PVP_LEVEL0, PVP_LEVEL1, PVP_LEVEL2, PVP_LEVEL3, PVP_LEVEL4, PVP_LEVEL5, PVP_LEVEL6, PVP_LEVEL7, PVP_LEVEL8, )
burada 3 yeni Rütbemizi eklemeliyiz Benim durumumda:
Kod:
( PVP_LEVEL0, PVP_LEVEL1, PVP_LEVEL2, PVP_LEVEL3, PVP_LEVEL4, PVP_LEVEL5, PVP_LEVEL6, PVP_LEVEL7, PVP_LEVEL8, PVP_LEVEL9, PVP_LEVEL10, PVP_LEVEL11, )
Kaydedin ve sonraki Dosyaya gidin, yani IntroLoading.py (Client / Root)
Bunu arıyoruz:
Kod:
## Title TITLE_COLOR_DICT = ( colorInfo.TITLE_RGB_GOOD_4, colorInfo.TITLE_RGB_GOOD_3, colorInfo.TITLE_RGB_GOOD_2, colorInfo.TITLE_RGB_GOOD_1, colorInfo.TITLE_RGB_NORMAL, colorInfo.TITLE_RGB_EVIL_1, colorInfo.TITLE_RGB_EVIL_2, colorInfo.TITLE_RGB_EVIL_3, colorInfo.TITLE_RGB_EVIL_4, )
Kendimiz için düzenleriz
Benim durumumda:
Kod:
## Title TITLE_COLOR_DICT = ( colorInfo.TITLE_RGB_GOOD_6, colorInfo.TITLE_RGB_GOOD_5, colorInfo.TITLE_RGB_GOOD_4, colorInfo.TITLE_RGB_GOOD_3, colorInfo.TITLE_RGB_GOOD_2, colorInfo.TITLE_RGB_GOOD_1, colorInfo.TITLE_RGB_NORMAL, colorInfo.TITLE_RGB_EVIL_1, colorInfo.TITLE_RGB_EVIL_2, colorInfo.TITLE_RGB_EVIL_3, colorInfo.TITLE_RGB_EVIL_5, )
Kaydedin ve UiCharacter.py'ye gidin (Client / Root)
bunu arıyoruz:
Kod:
COLOR_DICT = { 0 : colorInfo.TITLE_RGB_GOOD_4, 1 : colorInfo.TITLE_RGB_GOOD_3, 2 : colorInfo.TITLE_RGB_GOOD_2, 3 : colorInfo.TITLE_RGB_GOOD_1, 4 : colorInfo.TITLE_RGB_NORMAL, 5 : colorInfo.TITLE_RGB_EVIL_1, 6 : colorInfo.TITLE_RGB_EVIL_2, 7 : colorInfo.TITLE_RGB_EVIL_3, 8 : colorInfo.TITLE_RGB_EVIL_4, }
kendimiz için düzenleriz
Benim durumumda:
Kod:
COLOR_DICT = { 0 : colorInfo.TITLE_RGB_GOOD_6, 1 : colorInfo.TITLE_RGB_GOOD_5, 2 : colorInfo.TITLE_RGB_GOOD_4, 3 : colorInfo.TITLE_RGB_GOOD_3, 4 : colorInfo.TITLE_RGB_GOOD_2, 5 : colorInfo.TITLE_RGB_GOOD_1, 6 : colorInfo.TITLE_RGB_NORMAL, 7 : colorInfo.TITLE_RGB_EVIL_1, 8 : colorInfo.TITLE_RGB_EVIL_2, 9 : colorInfo.TITLE_RGB_EVIL_3, 10 : colorInfo.TITLE_RGB_EVIL_4, 11 : colorInfo.TITLE_RGB_EVIL_5, }
Kaydedin ve ardından şu adrese gidin: Client / Root / Locale / pl / Locale_Game.txt
ve içinde dereceleri ararız, yani:
Kod:
PVP_LEVEL0 Kahraman PVP_LEVEL1 Soylu PVP_LEVEL2 İyi PVP_LEVEL3 Arkadaşça PVP_LEVEL4 Tarafsız PVP_LEVEL5 Agresif PVP_LEVEL6 Hileli PVP_LEVEL7 Kötü Niyetli PVP_LEVEL8 Zalim
kendimiz için düzenleriz, benim durumumda:
Kod:
PVP_LEVEL0 Turkmmo (Yeni Derece) PVP_LEVEL1 Replicant (Yeni Derece) PVP_LEVEL2 Kahraman PVP_LEVEL3 Soylu PVP_LEVEL4 İyi PVP_LEVEL5 Arkadaşça PVP_LEVEL6 Tarafsız PVP_LEVEL7 Agresif PVP_LEVEL8 Hileli PVP_LEVEL9 Kötü Niyetli PVP_LEVEL10 Zalim PVP_LEVEL11 Turkmmo (Yeni Negatif Derece)
Derece renklerini düzenleme:
Client / Root ve ColorInfo.py açılır
ve böyle bir şey var:
Kod:
TITLE_RGB_GOOD_4 = ( 0, 204, 255) TITLE_RGB_GOOD_3 = ( 0, 144, 255) TITLE_RGB_GOOD_2 = ( 92, 110, 255) TITLE_RGB_GOOD_1 = (155, 155, 255) TITLE_RGB_NORMAL = (255, 255, 255) TITLE_RGB_EVIL_1 = (207, 117, 0) TITLE_RGB_EVIL_2 = (235, 83, 0) TITLE_RGB_EVIL_3 = (227, 0, 0) TITLE_RGB_EVIL_4 = (255, 0, 0)
Kendimiz için düzenleriz, benim durumumda:
Kod:
TITLE_RGB_GOOD_6 = ( 0, 204, 255) // Yeni Sıra 2 TITLE_RGB_GOOD_5 = ( 0, 204, 255) // Yeni Sıra 1 TITLE_RGB_GOOD_4 = ( 0, 204, 255) // Kahraman TITLE_RGB_GOOD_3 = ( 0, 144, 255) // Soylu TITLE_RGB_GOOD_2 = ( 92, 110, 255) // İyi TITLE_RGB_GOOD_1 = (155, 155, 255) // Arkadaşça TITLE_RGB_NORMAL = (255, 255, 255) // Tarafsız TITLE_RGB_EVIL_1 = (207, 117, 0) // Agresif TITLE_RGB_EVIL_2 = (235, 83, 0) // Hileli TITLE_RGB_EVIL_3 = (227, 0, 0) // Kötü Niyetli TITLE_RGB_EVIL_4 = (255, 0, 0) // Zalim TITLE_RGB_EVIL_5 = (255, 0, 0) // Turkmmo (Yeni Negatif Derece)
Metin2'de Derece Sınırını Değiştirme ve Yeni Derece Ekleme
Metin2 özel sunucularında oyuncuların ilerlemesini desteklemek ve daha fazla oyun içi motivasyon yaratmak için derece sınırlarının genişletilmesi veya yeni derecelerin eklenmesi oldukça yaygın bir geliştirme pratiğidir. Bu işlem genellikle C++ ve Python[/CODE] tabanlı sistemler üzerinden yapılır. Bu rehberde hem game server hem de client tarafında yapılması gereken adımları detaylıca ele alacağız.
1. Derece Sınırı Nedir?
Metin2'de her karakter belirli bir dereceye kadar ilerleyebilir. Varsayılan sistemde bu sınır genellikle 120 ile sınırlıdır. Ancak bazı özel sunucularda bu değer 130, 150 hatta daha yüksek seviyelere çıkarılabilmektedir. Bu işlem için hem sunucu tarafında hem de istemci tarafında değişiklikler yapılması gerekir.
2. C++ Tarafında Derece Sınırı Değiştirme
Sunucu tarafında derece sınırını değiştirmek için öncelikle game server source code üzerinde çalışmanız gerekir. Bu kodlar genellikle C++ dilinde yazılmıştır. Örnek olarak:
- char.cpp dosyasında karakter seviyesiyle ilgili kontrol edilen alanlar vardır. Burada max level değerleri değiştirilebilir.
- constants.h veya benzeri sabit tanımlamaların yapıldığı dosyalarda da MAX_LEVEL gibi sabitler yer alabilir. Bu değerler yeni seviyeye göre güncellenmelidir.
3. Python Tarafında UI ve İstemci Ayarları
İstemci tarafında derece bilgileri genellikle Python ile yazılmış UI sistemleri tarafından yönetilir. Bu nedenle uiscript dosyalarında seviye listeleri, progress bar aralıkları ve diğer görsel öğelerin güncellenmesi gerekir.
Py Root klasörlerinde bulunan character.py veya player.py gibi dosyalarda karakterin mevcut seviyesi gösterilir. Bu dosyaların içerdiği limit kontrolleri yeni seviyeye göre yeniden düzenlenmelidir.
4. Yeni Derece Ekleme
Yeni dereceler eklemek, sadece bir sınır değeri değiştirmekten daha karmaşık olabilir. Oyuncu her yükseldikçe kazandığı bonuslar, yetenek noktaları ve istatistik artışı gibi sistemler de buna göre ayarlanmalıdır. Bu durumda game core ve db core üzerinde değişiklikler yapmak gerekebilir.
Örneğin, 120+ dereceler için yeni bir exp tablosu tanımlamak gerekebilir. Bu tablo genellikle game server veritabanında saklanır ve her yeni derece için gereken tecrübe puanı buradan alınır.
5. Derleme ve Test İşlemi
Tüm değişiklikler yapıldıktan sonra source edit işlemleri tamamlandıktan sonra compile işlemi yapılmalıdır. Derleme sırasında hata alınırsa, yapılan değişiklikler kontrol edilmeli ve düzeltilmelidir. Her yeni derece için test karakterleri ile denemeler yaparak sistemin doğru çalıştığından emin olunmalıdır.
Sonuç
Metin2 özel sunucularında derece sınırı değiştirmek veya yeni dereceler eklemek, C++ ve Python bilgisi gerektiren ancak oldukça faydalı bir geliştirme uygulamasıdır. Doğru yapıldığında oyuncular için daha uzun vadeli bir ilerleme sistemi sunabilir. Bu işlemi yaparken martysama gibi gelişmiş kaynaklardan yardım almak da faydalı olabilir. Her zaman game, auth ve db sistemlerini dikkatli şekilde senkronize etmeyi unutmayın.
Changing Degree Limit and Adding New Degrees in Metin2 [C++ / Python]
In Metin2 private servers, expanding degree limits or adding new degrees is a common development practice to support player progression and create more in-game motivation. This process is typically done through C++ and Python based systems. In this guide, we will cover the steps required on both the game server and client side in detail.
1. What is a Degree Limit?
In Metin2, each character can advance up to a certain degree. By default, this limit is usually capped at 120. However, on some private servers, this value can be increased to 130, 150, or even higher levels. To do so, modifications are required on both the server and client sides.
2. Changing Degree Limit on the C++ Side
To change the degree limit on the server side, you first need to work with the game server source code. These codes are generally written in C++. For example:
- In char.cpp, there are areas where character level checks occur. The max level values here can be adjusted.
- In files like constants.h, constants such as MAX_LEVEL may exist and should be updated according to the new level.
3. Client-Side UI Settings with Python
On the client side, degree information is generally managed by UI systems written in Python. Therefore, uiscript files must be updated with new level lists, progress bar ranges, and other visual elements.
In Py Root folders, files such as character.py or player.py display the current character level. Level cap checks within these files must be restructured for the new degree range.
4. Adding New Degrees
Adding new degrees can be more complex than simply changing a limit value. As players level up, bonuses gained, skill points awarded, and stat increases must also be adjusted accordingly. In this case, modifications may be needed in the game core and db core.
For instance, a new exp table might be defined for levels above 120. This table is usually stored in the game server database and contains the experience points required for each new level.
5. Compilation and Testing
After all changes are made and source edit processes are completed, the compile step must be performed. If errors occur during compilation, the changes should be reviewed and corrected. Ensure that the system works correctly by testing with characters created specifically for each new degree.
Conclusion
Changing the degree limit or adding new degrees in Metin2 private servers is a development task requiring knowledge of C++ and Python, but it is highly beneficial. When done correctly, it can offer a longer-term progression system for players. When performing this task, resources like martysama can also be helpful. Always remember to carefully synchronize your game, auth, and db systems.
