hepinize selamlar arkadaşlar bugün
öncelikle game sourcemizi açalım ve aşağıdakilere uyalım
açılır constants.cpp
bulunur
değiştirilir
sayıların 100 olma sebebi arttırma kağıdının hangi oranla efsunu ekleyeceğinden kaynaklı değiştirebilirsiniz size kalmış.
açılır char_item.cpp
bulunur
bunu bulamayanlar 5 olarak aratsınlar
değiştirilir
bu sizin normal efsun sayınıza göre değişir ve kutsama küresi olmadan ekler eğer kutsama küresi ile ekletmek istiyorsanız iş değişir (yıl olmuş 2020 kutsama küresi kullanan var mı onuda tartışmak lazım)
açılır item.h
bulunur
altına iki satır boşluk bırakılıp eklenir
açılır item_attribute.cpp
bulunur
komple değiştirilir
yine aynı dosyada bulunur
ikiside değiştirilir
aranır
değiştirilir
aranır
değiştirilir
cpp nin en altına eklenir
item_manager.h açılır
aranır
değiştirilir
game ile işimiz bu kadar şimdi dbye geçelim
db/src cache.cpp açılır
aranır
komple değişilir
clientmanager.cpp açılır
aranır
değiştirilir
aranır
değiştirilir
aranır
değiştirilir
clientmanagerplayer.cpp açılır
aranır
değiştirilir
aranır
değiştirilir
common item_lenght.h açılır
aranır
değiştirilir
client source userinterface/gametype.h açılır
aranır
değiştirilir
navicat item.sql tablosuna eklenir
kanıt olarak
fileste rare efsunları ekli değildi o yüzden rare efsunlarıyla beraber çekemedim fakat gördüğünüz gibi 6 efsun sorunsuz çalışıyor rebootta kaybolma gibi sorunu yoktur herkese iyi forumlar.
daha önceden rare efsunlarıyla yaptığım kanıt
Laleci16 Kanıt
Normal veya Rare Efsun Sayısını Arttırma
Metin2 özel sunucularında oyun içi efsunlar, karakter gelişiminde önemli rol oynar. Bu efsunlar, oyuncuların zırh, silah veya diğer eşyalarını geliştirmelerini sağlar. Ancak bazı durumlarda, normal ya da rare (nadiren bulunan) efsunların sayısı yeterli olmayabilir. Bu yazıda, normal veya rare efsun sayısını arttırmak için kullanabileceğiniz yöntemlerden bahsedeceğiz.
Efsun Sistemine Genel Bakış
Efsun, Metin2 oyununda eşyaların rastgele özellikler kazanmasını sağlayan sistemdir. Oyuncular, eşyalarını yükseltmek için bu efsunları kullanırlar. Normal efsunlar, genellikle düşmanlardan veya sandıklardan elde edilirken, rare efsunlar daha nadir bulunur ve güçlü etkilere sahiptir.
Efsun Sayısını Arttırmanın Yöntemleri
1. Sunucu Tarafında Script ile Efsun Sayısı Ayarı
Sunucu geliştiricileri, C++ veya Python tabanlı sistemlerde efsun sayısını arttırmak için özel scriptler yazabilirler. Bu scriptler, oyuncuların belirli görevleri tamamlamasıyla veya belirli seviyeye ulaşmasıyla birlikte efsun verilebilmesini sağlar. Örneğin, bir oyuncu seviye atladığında otomatik olarak bir efsun paketi alabilir.
2. Event Sistemleri ile Efsun Kazandırma
Sunucularda düzenlenen özel etkinliklerle oyunculara bonus efsun verilebilir. Bu etkinlikler PvP veya PvE tabanlı olabilir. Oyuncular, etkinliklerde yüksek skorlar alarak veya belirli ödüller kazanarak rare efsunlara erişebilirler.
3. Paket Sistemleri ve Market Entegrasyonu
Oyunculara, oyun içi para veya gerçek para karşılığı satın alınabilen efsun paketleri sunulabilir. Bu paketlerde hem normal hem de rare efsunlar bulunabilir. Sunucu sahipleri, bu sistemleri özel market yapıları ile entegre ederek gelir elde edebilirler.
C++ ve Python ile Geliştirme
Metin2 özel sunucularında efsun sistemi, genellikle game core ve db core üzerinde çalışır. C++ dilinde yazılmış olan server src dosyaları üzerinde değişiklik yaparak efsun davranışlarını özelleştirebilirsiniz. Aynı zamanda Python ile yazılmış py root dosyalarında GUI tabanlı sistemlerle de efsun yönetimi yapılabilir.
Martysama ve Diğer Kaynaklar
Metin2 geliştiricileri arasında popüler olan Martysama gibi kaynaklar, efsun sistemi üzerinde çalışırken yardımcı olabilir. Bu tür kaynaklar sayesinde, script düzenlemeleri, client src üzerinde değişiklikler veya auth-server ile ilgili ayarlamalar kolayca yapılabilir.
Sonuç
Normal veya rare efsun sayısını arttırmak, Metin2 özel sunucularında oyuncu memnuniyetini artırır. Sunucu sahipleri, C++ ve Python bilgilerini kullanarak efsun sistemini özelleştirip, oyunculara daha fazla değer sunabilirler. Metin2Lobby üzerinden sunucu geliştirme konusunda destek alabilir ve kaynaklara erişebilirsiniz.
Increasing the Number of Normal or Rare Enchantments
In Metin2 private servers, enchantments play a crucial role in character progression. These enchantments allow players to enhance their armor, weapons, or other items. However, sometimes the number of normal or rare enchantments may not be sufficient. In this article, we will discuss methods for increasing the number of normal or rare enchantments.
Overview of the Enchantment System
Enchantments are part of the system that allows items in Metin2 to gain random properties. Players use these enchantments to upgrade their gear. Normal enchantments are usually obtained from monsters or chests, while rare enchantments are harder to find and provide stronger effects.
Methods of Increasing Enchantment Numbers
1. Setting Enchantment Amount via Scripts on Server Side
Server developers can write custom scripts based on C++ or Python to increase enchantment numbers. These scripts can reward players with enchantments upon completing certain quests or leveling up. For example, a player might receive an enchantment package automatically after gaining a level.
2. Awarding Enchantments Through Event Systems
Special events organized on servers can grant bonus enchantments to players. These events can be PvP or PvE-based. Players can earn rare enchantments by achieving high scores or winning rewards during events.
3. Package Systems and Shop Integration
Players can be offered enchantment packages purchasable with in-game or real money. These packages can include both normal and rare enchantments. Server owners can integrate such systems with special shop structures to generate revenue.
Development with C++ and Python
The enchantment system in Metin2 private servers generally operates on game core and db core. You can customize enchantment behaviors by modifying server src files written in C++. Additionally, enchantment management can be done via GUI-based systems within py root files written in Python.
Martysama and Other Resources
Martysama, popular among Metin2 developers, can assist when working on enchantment systems. Such resources make it easier to perform script modifications, client src adjustments, or settings related to the auth-server.
Conclusion
Increasing the number of normal or rare enchantments enhances player satisfaction in Metin2 private servers. Server owners can leverage their knowledge of C++ and Python to customize enchantment systems and offer more value to players. You can get support and access resources regarding server development through Metin2Lobby.
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
'inde katkılarıyla tamamladığım sistem demeyelimde konuyu paylaşıcam daha önce hiç bir forumda görmedim bunu bi neno rare vardı ama o çalışıyor mu emin değilim her neyse uzatmadan konuya geçelim.öncelikle game sourcemizi açalım ve aşağıdakilere uyalım
açılır constants.cpp
bulunur
Kod:
const int aiItemAttributeAddPercent[ITEM_ATTRIBUTE_MAX_NUM] =
değiştirilir
Kod:
100, 100, 100, 100, 100, 100, 100, 100,
sayıların 100 olma sebebi arttırma kağıdının hangi oranla efsunu ekleyeceğinden kaynaklı değiştirebilirsiniz size kalmış.
açılır char_item.cpp
bulunur
Kod:
if (item2->GetAttributeCount() < 4)
değiştirilir
Kod:
if (item2->GetAttributeCount() < 6)
bu sizin normal efsun sayınıza göre değişir ve kutsama küresi olmadan ekler eğer kutsama küresi ile ekletmek istiyorsanız iş değişir (yıl olmuş 2020 kutsama küresi kullanan var mı onuda tartışmak lazım)
açılır item.h
bulunur
Kod:
void PutAttributeWithLevel(BYTE bLevel);
altına iki satır boşluk bırakılıp eklenir
Kod:
public: void AddRareAttribute2(const int * aiAttrPercentTable = NULL); protected: void AddRareAttr(BYTE bApply, BYTE bLevel); void PutRareAttribute(const int * aiAttrPercentTable); void PutRareAttributeWithLevel(BYTE bLevel);
açılır item_attribute.cpp
bulunur
Kod:
int CItem::GetRareAttrCount()
komple değiştirilir
Kod:
int CItem::GetRareAttrCount() { int ret = 0; for (DWORD dwIdx = ITEM_ATTRIBUTE_RARE_START; dwIdx < ITEM_ATTRIBUTE_RARE_END; dwIdx++) { if (m_aAttr[dwIdx].bType != 0) ret++; } return ret; }
yine aynı dosyada bulunur
Kod:
m_aAttr[i + 5].bType = 0; m_aAttr[i + 5].sValue = 0;
ikiside değiştirilir
Kod:
m_aAttr[i + ITEM_ATTRIBUTE_RARE_START].bType = 0; m_aAttr[i + ITEM_ATTRIBUTE_RARE_START].sValue = 0;
aranır
Kod:
if (count >= 2)
değiştirilir
Kod:
if (count >= ITEM_ATTRIBUTE_RARE_NUM)
aranır
Kod:
int pos = count + 5;
değiştirilir
Kod:
int pos = count + ITEM_ATTRIBUTE_RARE_START;
cpp nin en altına eklenir
Kod:
void CItem::AddRareAttribute2(const int * aiAttrPercentTable) { static const int aiItemAddAttributePercent[ITEM_ATTRIBUTE_MAX_LEVEL] = { 40, 50, 10, 0, 0 }; if (aiAttrPercentTable == NULL) aiAttrPercentTable = aiItemAddAttributePercent; if (GetRareAttrCount() < MAX_RARE_ATTR_NUM) PutRareAttribute(aiAttrPercentTable); } void CItem::PutRareAttribute(const int * aiAttrPercentTable) { int iAttrLevelPercent = number(1, 100); int i; for (i = 0; i < ITEM_ATTRIBUTE_MAX_LEVEL; ++i) { if (iAttrLevelPercent <= aiAttrPercentTable[i]) break; iAttrLevelPercent -= aiAttrPercentTable[i]; } PutRareAttributeWithLevel(i + 1); } void CItem::PutRareAttributeWithLevel(BYTE bLevel) { int iAttributeSet = GetAttributeSetIndex(); if (iAttributeSet < 0) return; if (bLevel > ITEM_ATTRIBUTE_MAX_LEVEL) return; std::vector<int> avail; int total = 0; // ºÙÀÏ ¼ö ÀÖ´Â ¼Ó¼º ¹è¿À» ±¸Ãà for (int i = 0; i < MAX_APPLY_NUM; ++i) { const TItemAttrTable & r = g_map_itemRare[i]; if (r.bMaxLevelBySet[iAttributeSet] && !HasRareAttr(i)) { avail.push_back(i); total += r.dwProb; } } // ±¸ÃàµÈ ¹è¿·Î È®·ü °è»êÀ» ÅëÇØ ºÙÀÏ ¼Ó¼º ¼±Á¤ unsigned int prob = number(1, total); int attr_idx = APPLY_NONE; for (DWORD i = 0; i < avail.size(); ++i) { const TItemAttrTable & r = g_map_itemRare[avail[i]]; if (prob <= r.dwProb) { attr_idx = avail[i]; break; } prob -= r.dwProb; } if (!attr_idx) { sys_err("Cannot put item rare attribute %d %d", iAttributeSet, bLevel); return; } const TItemAttrTable & r = g_map_itemRare[attr_idx]; // Á¾·ùº° ¼Ó¼º ·¹º§ ÃÖ´ë°ª Á¦ÇÑ if (bLevel > r.bMaxLevelBySet[iAttributeSet]) bLevel = r.bMaxLevelBySet[iAttributeSet]; AddRareAttr(attr_idx, bLevel); } void CItem::AddRareAttr(BYTE bApply, BYTE bLevel) { if (HasRareAttr(bApply)) return; if (bLevel <= 0) return; int i = ITEM_ATTRIBUTE_RARE_START + GetRareAttrCount(); if (i == ITEM_ATTRIBUTE_RARE_END) sys_err("item rare attribute overflow!"); else { const TItemAttrTable & r = g_map_itemRare[bApply]; long lVal = r.lValues[MIN(4, bLevel - 1)]; if (lVal) SetForceAttribute(i, bApply, lVal); } }
item_manager.h açılır
aranır
Kod:
const static int MAX_NORM_ATTR_NUM = 5; const static int MAX_RARE_ATTR_NUM = 2;
değiştirilir
Kod:
const static int MAX_NORM_ATTR_NUM = ITEM_ATTRIBUTE_NORM_NUM; const static int MAX_RARE_ATTR_NUM = ITEM_ATTRIBUTE_RARE_NUM;
game ile işimiz bu kadar şimdi dbye geçelim
db/src cache.cpp açılır
aranır
Kod:
if (isAttr)
komple değişilir
Kod:
if (isAttr) { iLen += snprintf(szColumns + iLen, sizeof(szColumns) - iLen, ", attrtype0, attrvalue0, attrtype1, attrvalue1, attrtype2, attrvalue2, attrtype3, attrvalue3" ", attrtype4, attrvalue4, attrtype5, attrvalue5, attrtype6, attrvalue6, attrtype7, attrvalue7"); iValueLen += snprintf(szValues + iValueLen, sizeof(szValues) - iValueLen, ", %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d", p->aAttr[0].bType, p->aAttr[0].sValue, p->aAttr[1].bType, p->aAttr[1].sValue, p->aAttr[2].bType, p->aAttr[2].sValue, p->aAttr[3].bType, p->aAttr[3].sValue, p->aAttr[4].bType, p->aAttr[4].sValue, p->aAttr[5].bType, p->aAttr[5].sValue, p->aAttr[6].bType, p->aAttr[6].sValue, p->aAttr[7].bType, p->aAttr[7].sValue); iUpdateLen += snprintf(szUpdate + iUpdateLen, sizeof(szUpdate) - iUpdateLen, ", attrtype0=%d, attrvalue0=%d" ", attrtype1=%d, attrvalue1=%d" ", attrtype2=%d, attrvalue2=%d" ", attrtype3=%d, attrvalue3=%d" ", attrtype4=%d, attrvalue4=%d" ", attrtype5=%d, attrvalue5=%d" ", attrtype6=%d, attrvalue6=%d" ", attrtype7=%d, attrvalue7=%d", p->aAttr[0].bType, p->aAttr[0].sValue, p->aAttr[1].bType, p->aAttr[1].sValue, p->aAttr[2].bType, p->aAttr[2].sValue, p->aAttr[3].bType, p->aAttr[3].sValue, p->aAttr[4].bType, p->aAttr[4].sValue, p->aAttr[5].bType, p->aAttr[5].sValue, p->aAttr[6].bType, p->aAttr[6].sValue, p->aAttr[7].bType, p->aAttr[7].sValue); }
clientmanager.cpp açılır
aranır
Kod:
"attrtype6, attrvalue6 "
değiştirilir
Kod:
"attrtype6, attrvalue6, " "attrtype7, attrvalue7 "
aranır
Kod:
"attrtype6, attrvalue6) " "VALUES(%u, %u, %d, %d, %u, %u, %ld, %ld, %ld, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d)",
değiştirilir
Kod:
"attrtype6, attrvalue6, " "attrtype7, attrvalue7) " "VALUES(%u, %u, %d, %d, %u, %u, %ld, %ld, %ld, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d)",
aranır
Kod:
p->aAttr[6].bType, p->aAttr[6].sValue);
değiştirilir
Kod:
p->aAttr[6].bType, p->aAttr[6].sValue, p->aAttr[7].bType, p->aAttr[7].sValue);
clientmanagerplayer.cpp açılır
aranır
Kod:
attrtype0,attrvalue0,attrtype1,attrvalue1,attrtype2,attrvalue2,attrtype3,attrvalue3,attrtype4,attrvalue4,attrtype5,attrvalue5,attrtype6,attrvalue6 "
değiştirilir
Kod:
attrtype0,attrvalue0,attrtype1,attrvalue1,attrtype2,attrvalue2,attrtype3,attrvalue3,attrtype4,attrvalue4,attrtype5,attrvalue5,attrtype6,attrvalue6,attrtype7,attrvalue7 "
aranır
Kod:
attrtype0,attrvalue0,attrtype1,attrvalue1,attrtype2,attrvalue2,attrtype3,attrvalue3,attrtype4,attrvalue4,attrtype5,attrvalue5,attrtype6,attrvalue6 "
değiştirilir
Kod:
attrtype0,attrvalue0,attrtype1,attrvalue1,attrtype2,attrvalue2,attrtype3,attrvalue3,attrtype4,attrvalue4,attrtype5,attrvalue5,attrtype6,attrvalue6,attrtype7,attrvalue7 "
common item_lenght.h açılır
aranır
Kod:
ITEM_ATTRIBUTE_MAX_NUM = 7,
değiştirilir
Kod:
ITEM_ATTRIBUTE_NORM_NUM = 6, ITEM_ATTRIBUTE_RARE_NUM = 2, ITEM_ATTRIBUTE_NORM_START = 0, ITEM_ATTRIBUTE_NORM_END = ITEM_ATTRIBUTE_NORM_START + ITEM_ATTRIBUTE_NORM_NUM, ITEM_ATTRIBUTE_RARE_START = ITEM_ATTRIBUTE_NORM_END, ITEM_ATTRIBUTE_RARE_END = ITEM_ATTRIBUTE_RARE_START + ITEM_ATTRIBUTE_RARE_NUM, ITEM_ATTRIBUTE_MAX_NUM = ITEM_ATTRIBUTE_RARE_END, // 8
client source userinterface/gametype.h açılır
aranır
Kod:
ITEM_ATTRIBUTE_SLOT_MAX_NUM
değiştirilir
Kod:
ITEM_ATTRIBUTE_SLOT_MAX_NUM = 8,
navicat item.sql tablosuna eklenir
Kod:
`attrtype7` tinyint(4) NOT NULL DEFAULT 0, `attrvalue7` smallint(6) NOT NULL DEFAULT 0,
kanıt olarak
fileste rare efsunları ekli değildi o yüzden rare efsunlarıyla beraber çekemedim fakat gördüğünüz gibi 6 efsun sorunsuz çalışıyor rebootta kaybolma gibi sorunu yoktur herkese iyi forumlar.
daha önceden rare efsunlarıyla yaptığım kanıt
Laleci16 Kanıt
Normal veya Rare Efsun Sayısını Arttırma
Metin2 özel sunucularında oyun içi efsunlar, karakter gelişiminde önemli rol oynar. Bu efsunlar, oyuncuların zırh, silah veya diğer eşyalarını geliştirmelerini sağlar. Ancak bazı durumlarda, normal ya da rare (nadiren bulunan) efsunların sayısı yeterli olmayabilir. Bu yazıda, normal veya rare efsun sayısını arttırmak için kullanabileceğiniz yöntemlerden bahsedeceğiz.
Efsun Sistemine Genel Bakış
Efsun, Metin2 oyununda eşyaların rastgele özellikler kazanmasını sağlayan sistemdir. Oyuncular, eşyalarını yükseltmek için bu efsunları kullanırlar. Normal efsunlar, genellikle düşmanlardan veya sandıklardan elde edilirken, rare efsunlar daha nadir bulunur ve güçlü etkilere sahiptir.
Efsun Sayısını Arttırmanın Yöntemleri
1. Sunucu Tarafında Script ile Efsun Sayısı Ayarı
Sunucu geliştiricileri, C++ veya Python tabanlı sistemlerde efsun sayısını arttırmak için özel scriptler yazabilirler. Bu scriptler, oyuncuların belirli görevleri tamamlamasıyla veya belirli seviyeye ulaşmasıyla birlikte efsun verilebilmesini sağlar. Örneğin, bir oyuncu seviye atladığında otomatik olarak bir efsun paketi alabilir.
2. Event Sistemleri ile Efsun Kazandırma
Sunucularda düzenlenen özel etkinliklerle oyunculara bonus efsun verilebilir. Bu etkinlikler PvP veya PvE tabanlı olabilir. Oyuncular, etkinliklerde yüksek skorlar alarak veya belirli ödüller kazanarak rare efsunlara erişebilirler.
3. Paket Sistemleri ve Market Entegrasyonu
Oyunculara, oyun içi para veya gerçek para karşılığı satın alınabilen efsun paketleri sunulabilir. Bu paketlerde hem normal hem de rare efsunlar bulunabilir. Sunucu sahipleri, bu sistemleri özel market yapıları ile entegre ederek gelir elde edebilirler.
C++ ve Python ile Geliştirme
Metin2 özel sunucularında efsun sistemi, genellikle game core ve db core üzerinde çalışır. C++ dilinde yazılmış olan server src dosyaları üzerinde değişiklik yaparak efsun davranışlarını özelleştirebilirsiniz. Aynı zamanda Python ile yazılmış py root dosyalarında GUI tabanlı sistemlerle de efsun yönetimi yapılabilir.
Martysama ve Diğer Kaynaklar
Metin2 geliştiricileri arasında popüler olan Martysama gibi kaynaklar, efsun sistemi üzerinde çalışırken yardımcı olabilir. Bu tür kaynaklar sayesinde, script düzenlemeleri, client src üzerinde değişiklikler veya auth-server ile ilgili ayarlamalar kolayca yapılabilir.
Sonuç
Normal veya rare efsun sayısını arttırmak, Metin2 özel sunucularında oyuncu memnuniyetini artırır. Sunucu sahipleri, C++ ve Python bilgilerini kullanarak efsun sistemini özelleştirip, oyunculara daha fazla değer sunabilirler. Metin2Lobby üzerinden sunucu geliştirme konusunda destek alabilir ve kaynaklara erişebilirsiniz.
Increasing the Number of Normal or Rare Enchantments
In Metin2 private servers, enchantments play a crucial role in character progression. These enchantments allow players to enhance their armor, weapons, or other items. However, sometimes the number of normal or rare enchantments may not be sufficient. In this article, we will discuss methods for increasing the number of normal or rare enchantments.
Overview of the Enchantment System
Enchantments are part of the system that allows items in Metin2 to gain random properties. Players use these enchantments to upgrade their gear. Normal enchantments are usually obtained from monsters or chests, while rare enchantments are harder to find and provide stronger effects.
Methods of Increasing Enchantment Numbers
1. Setting Enchantment Amount via Scripts on Server Side
Server developers can write custom scripts based on C++ or Python to increase enchantment numbers. These scripts can reward players with enchantments upon completing certain quests or leveling up. For example, a player might receive an enchantment package automatically after gaining a level.
2. Awarding Enchantments Through Event Systems
Special events organized on servers can grant bonus enchantments to players. These events can be PvP or PvE-based. Players can earn rare enchantments by achieving high scores or winning rewards during events.
3. Package Systems and Shop Integration
Players can be offered enchantment packages purchasable with in-game or real money. These packages can include both normal and rare enchantments. Server owners can integrate such systems with special shop structures to generate revenue.
Development with C++ and Python
The enchantment system in Metin2 private servers generally operates on game core and db core. You can customize enchantment behaviors by modifying server src files written in C++. Additionally, enchantment management can be done via GUI-based systems within py root files written in Python.
Martysama and Other Resources
Martysama, popular among Metin2 developers, can assist when working on enchantment systems. Such resources make it easier to perform script modifications, client src adjustments, or settings related to the auth-server.
Conclusion
Increasing the number of normal or rare enchantments enhances player satisfaction in Metin2 private servers. Server owners can leverage their knowledge of C++ and Python to customize enchantment systems and offer more value to players. You can get support and access resources regarding server development through Metin2Lobby.
