[Frozen] Kostüm Efsunu Artırma ve Değiştirme

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 38

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Yabancı Forumdan Alıntıdır

Kostüm Efsunlama ve Değiştirmedir.



Kostümü efsunla
Köstümü dönüştür


char_item.cpp açılır ve aratılır;

Kod:
if (ITEM_COSTUME == item2->GetType()

;
Kod:
if (ITEM_COSTUME == item2->GetType() &&  item->GetVnum() != 70063 && item->GetVnum() != 70064)  //Kostumu Donustur ve Kostumu efsunla                         {                             ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ogenin ozelligi degistirilemez."));                             return false;                         }

tekrar aratılır;

Kod:
case USE_CHANGE_ATTRIBUTE :



Kod:
case USE_CHANGE_ATTRIBUTE :                                     if (item->GetVnum() == 70063)                                     {                                          if (item2->GetType() != ITEM_COSTUME)                                          {                                              ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ITEM_ISNT_COSTUME"));                                              return false;                                          }                                          if  (item2->GetAttributeCount() < 3 &&  item2->GetAttributeCount() > 0)                                           {                                              if (number(1, 100) < 30)                                              {                                                  while(item2->GetAttributeCount() < number(2, 3))                                                    item2->AddAttribute();                                              }                                          }                                     }                                       // Enchant costume                                     if (item->GetVnum() == 70064)                                     {                                          if (item2->GetType() != ITEM_COSTUME)                                          {                                          ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ITEM_ISNT_COSTUME"));                                           return false;                                          }                                     }                                     if (item2->GetAttributeSetIndex() == -1)                                     {                                         ChatPacket(CHAT_TYPE_INFO,  LC_TEXT("ì†ì‱ì†ë³â‚¬ê²½í•  ìˆËÅ“ ìâ€â€â€  ëІì•â€ì´í…œì…니다."));                                         return false;                                     }                                     if (item2->GetAttributeCount() == 0)                                     {                                         ChatPacket(CHAT_TYPE_INFO,  LC_TEXT("ë³â‚¬ê²½í•  ì†ìâ€±ì´ ìâ€â€â€ ìÅ  µë‹ˆë‹¤."));                                         return false;                                     }                                     if (GM_PLAYER == GetGMLevel() && false == test_server)                                     {                                         //                                         // Event Flag 를 통해  ì´ì â€ìâ۠ì•â€ì´í…œ ì†ì‱  ë³â‚¬ê²½ì†í•œ 시ê°â€ìÅ“¼ë¡Å“  ë¶â‚¬í‰ ì¶©ë¶â€í•œ 시ê°ââ‚¬ì´ íËÅ“ë €ëÅ  â€ì§â‚¬ ê²â‚¬ì‚¬í•ËÅââ‚¬Å“ê³                                         // 시ê°ââ‚¬ì´  ì¶©ë¶â€íˆ íËÅ“ë €ë‹¤ë©´ íËÅ“ââ‚¬ì¬ ì† ì‱ë³â‚¬ê²½ìâ۠ëÅâ€â•€í•œ  시ê°â€ì†ì․ì •í•´ ì¤â‚¬ë‹¤.                                         //                                         DWORD dwChangeItemAttrCycle =  quest::CQuestManager::instance().GetEventFlag(msc_szChangeItemAttrCycleFlag);                                         if (dwChangeItemAttrCycle < msc_dwDefaultChangeItemAttrCycle)                                             dwChangeItemAttrCycle = msc_dwDefaultChangeItemAttrCycle;                                         quest::PC* pPC = quest::CQuestManager::instance().GetPC(GetPlayerID());                                     if (pPC)                                                                        {                                         DWORD dwNowMin = get_global_time() / 60;                                                                            //Comment for 0 switch players start                                         //DWORD dwLastChangeItemAttrMin = pPC->GetFlag(msc_szLastChangeItemAttrFlag);                                                                            //if (dwLastChangeItemAttrMin + dwChangeItemAttrCycle > dwNowMin)                                         //{                                             //ChatPacket(CHAT_TYPE_INFO,  LC_TEXT("LOL?R≫ aU¸UAo %d?D REl≫z^´A ´U¨A ?Z°cCN Lo  lr¨R´D´U.(%d ?D l¸R¨)"),                                                 //dwChangeItemAttrCycle,  dwChangeItemAttrCycle - (dwNowMin - dwLastChangeItemAttrMin));                                             //return false;                                             //}                                         //Comment for 0 switch players end                                                                            pPC->SetFlag(msc_szLastChangeItemAttrFlag, dwNowMin);                                         }                                     }                                     if (item->GetSubType() == USE_CHANGE_ATTRIBUTE2)                                     {                                         int aiChangeProb[ITEM_ATTRIBUTE_MAX_LEVEL] =                                         {                                             0, 0, 30, 40, 3                                         };                                         item2->ChangeAttribute(aiChangeProb);                                     }                                     else if (item->GetVnum() == 76014)                                     {                                         int aiChangeProb[ITEM_ATTRIBUTE_MAX_LEVEL] =                                         {                                             0, 10, 50, 39, 1                                         };                                         item2->ChangeAttribute(aiChangeProb);                                     }                                     else                                     {                                         // ì ì¬ê²½ íÅ ¹ìˆËÅ“ì²ËÅ“리                                         // ì ˆëÅâ€â•€ë¡Å“  ì ì¬ê°â‚¬ ì¶â€ê°â‚¬ 안ë ê±°ë¼  í•ËÅ“ìâ€‬ í•Ëœ드 ì½â€ë
함.                                         if (item->GetVnum() == 71151 || item->GetVnum() == 76023)                                         {                                             if ((item2->GetType() == ITEM_WEAPON)                                                 || (item2->GetType()  == ITEM_ARMOR && item2->GetSubType() == ARMOR_BODY))                                             {                                                 bool bCanUse = true;                                                 for (int i = 0; i < ITEM_LIMIT_MAX_NUM; ++i)                                                 {                                                     if  (item2->GetLimitType(i) == LIMIT_LEVEL &&  item2->GetLimitValue(i) > 40)                                                     {                                                         bCanUse = false;                                                         break;                                                     }                                                 }                                                 if (false == bCanUse)                                                 {                                                      ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ì ìÅ¡© ë ˆ벨보다 ë† â€â•앆사ìÅ¡©ì´ ë¶Ë†ê°â‚¬ëÅ  ¥í•©ë‹ˆë‹¤."));                                                     break;                                                 }                                             }                                             else                                             {                                                  ChatPacket(CHAT_TYPE_INFO, LC_TEXT("무기ìâ•€  ê°â€ËÅ“ìËÅ“·ìâ€â€ë§Åâ€╠사ìÅ¡© ê°â‚¬ëÅ  ¥í•©ë‹ˆë‹¤."));                                                 break;                                             }                                         }                                         item2->ChangeAttribute();                                     }                                     ChatPacket(CHAT_TYPE_INFO,  LC_TEXT("ì†ì‱ì†ë³â‚¬ê²½í•ËÅ“ìËœ€ìÅ  µë‹ˆë‹¤."));                                     {                                         char buf[21];                                         snprintf(buf, sizeof(buf), "%u", item2->GetID());                                         LogManager::instance().ItemLog(this, item, "CHANGE_ATTRIBUTE", buf);                                     }                                     item->SetCount(item->GetCount() - 1);                                     break;                                 case USE_ADD_ATTRIBUTE :                                     if (item2->GetAttributeSetIndex() == -1)                                     {                                         ChatPacket(CHAT_TYPE_INFO,  LC_TEXT("ì†ì‱ì†ë³â‚¬ê²½í•  ìˆËÅ“ ìâ€â€â€  ëІì•â€ì´í…œì…니다."));                                         return false;                                     }                                     if (item2->GetAttributeCount() < 4)                                     {                                         // ì ì¬ê°â‚¬ íÅ ¹ìˆËÅ“ì²ËÅ“리                                         // ì ˆëÅâ€â•€ë¡Å“  ì ì¬ê°â‚¬ ì¶â€ê°â‚¬ 안ë ê±°ë¼  í•ËÅ“ìâ€‬ í•Ëœ드 ì½â€ë
함.                                         if (item->GetVnum() == 71152 || item->GetVnum() == 76024)                                         {                                             if ((item2->GetType() == ITEM_WEAPON)                                                 || (item2->GetType()  == ITEM_ARMOR && item2->GetSubType() == ARMOR_BODY))                                             {                                                 bool bCanUse = true;                                                 for (int i = 0; i < ITEM_LIMIT_MAX_NUM; ++i)                                                 {                                                     if  (item2->GetLimitType(i) == LIMIT_LEVEL &&  item2->GetLimitValue(i) > 40)                                                     {                                                         bCanUse = false;                                                         break;                                                     }                                                 }                                                 if (false == bCanUse)                                                 {                                                      ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ì ìÅ¡© ë ˆ벨보다 ë† â€â•앆사ìÅ¡©ì´ ë¶Ë†ê°â‚¬ëÅ  ¥í•©ë‹ˆë‹¤."));                                                     break;                                                 }                                             }                                             else                                             {                                                  ChatPacket(CHAT_TYPE_INFO, LC_TEXT("무기ìâ•€  ê°â€ËÅ“ìËÅ“·ìâ€â€ë§Åâ€╠사ìÅ¡© ê°â‚¬ëÅ  ¥í•©ë‹ˆë‹¤."));                                                 break;                                             }                                         }                                         char buf[21];                                         snprintf(buf, sizeof(buf), "%u", item2->GetID());                                         if (number(1, 100) <= aiItemAttributeAddPercent[item2->GetAttributeCount()])                                         {                                             item2->AddAttribute();                                             ChatPacket(CHAT_TYPE_INFO,  LC_TEXT("ì†ì‱ ì¶â€ê°â‚¬ìâ۠ ì‱공í•ËÅ“ìËœ€ìÅ µë‹ˆë‹¤."));                                             int iAddedIdx = item2->GetAttributeCount() - 1;                                             LogManager::instance().ItemLog(                                                     GetPlayerID(),                                                     item2->GetAttributeType(iAddedIdx),                                                     item2->GetAttributeValue(iAddedIdx),                                                     item->GetID(),                                                     "ADD_ATTRIBUTE_SUCCESS",                                                     buf,                                                     GetDesc()->GetHostName(),                                                     item->GetOriginalVnum());                                         }                                         else                                         {                                             ChatPacket(CHAT_TYPE_INFO,  LC_TEXT("ì†ì‱ ì¶â€ê°â‚¬ìâ۠ 실íÅâ€╨í•ËÅ“ìËœ€ìÅ µë‹ˆë‹¤."));                                             LogManager::instance().ItemLog(this, item, "ADD_ATTRIBUTE_FAIL", buf);                                         }                                         item->SetCount(item->GetCount() - 1);                                     }                                     else                                     {                                         ChatPacket(CHAT_TYPE_INFO,  LC_TEXT("ëâ€ì´ìÆââ‚¬â• ì´ ì•â€ì´í…œì† ì´ìÅ¡©í•ËÅ“ìâ€‬ ì†ì‱ì†ì¶â€ê°â‚¬í•   ìˆËÅ“ ìâ€â€â€ ìÅ µë‹ˆë‹¤."));                                     }                                     break;



uiinventory.py açılır ve aratılır;

Kod:
elif "USE_CHANGE_ATTRIBUTE" == useType:

;
Kod:
elif "USE_CHANGE_ATTRIBUTE" == useType:                 if srcItemVNum == 70063 or srcItemVNum == 70064:                     if self.__CanChangeCostumeAttrList(dstSlotPos):                         return True                 else:                     if self.__CanChangeItemAttrList(dstSlotPos):                         return True
tekrar aratılır;
Kod:
if item.ITEM_TYPE_BELT == item.GetItemType():                     return True         return False

;
Kod:
def __CanChangeCostumeAttrList(self, dstSlotPos):         dstItemVNum = player.GetItemIndex(dstSlotPos)         if dstItemVNum == 0:             return False         item.SelectItem(dstItemVNum)         if item.ITEM_TYPE_COSTUME != item.GetItemType() and not  item.GetItemSubType() in (item.COSTUME_TYPE_BODY,  item.COSTUME_TYPE_HAIR):             return False         for i in xrange(player.COSTUME_ATTRIBUTE_MAX_NUM):             if player.GetItemAttribute(dstSlotPos, i)[0] != 0:                 return True         return False     def __CanResetCostumeAttr(self, dstSlotPos):         dstItemVNum = player.GetItemIndex(dstSlotPos)         if dstItemVNum == 0:             return False         item.SelectItem(dstItemVNum)         if item.ITEM_TYPE_COSTUME != item.GetItemType() and not  item.GetItemSubType() in (item.COSTUME_TYPE_BODY,  item.COSTUME_TYPE_HAIR):             return False         return True



item_proto.txt eklenecekler;
Kod:
70063    transform_costume    ITEM_USE    USE_CHANGE_ATTRIBUTE    1    ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_MYSHOP    ITEM_STACKABLE | LOG    NONE    NONE    0    0    0    0    0    LIMIT_NONE    0    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    0    0    0    0    0    0    0    0    0 70064    enchant_costume    ITEM_USE    USE_CHANGE_ATTRIBUTE    1    ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_MYSHOP    ITEM_STACKABLE | LOG    NONE    NONE    0    0    0    0    0    LIMIT_NONE    0    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    0    0    0    0    0    0    0    0    0

item_names.txt eklenecekler;
Kod:
70063 Köstümü dönüştür 70064 Kostümü efsunla

itemdesc.txt eklenecekler;
Kod:
70063 Köstümü  dönüştür    Kostümlerinden birinin bonuslarını kaldırır ve yenilerini  ekler. Şansın yaver giderse bu arada bonuslarının sayısı değişir. (en  fazla 3 olacak kadar) 70064 Kostümü efsunla    Kostümlerinden birinin bonuslarını kaldırır ve yenilerini ekler.

item_list.txt eklenecekler;
Kod:
70063    ETC    icon/item/70063.tga  70064    ETC    icon/item/70064.tga



Metin2 Lobby'de Frozen Kostüm Efsunu Artırma ve Değiştirme Rehberi


Giriş
Metin2 özel sunucularında oynarken karakterlerinizin güçlenmesi ve dikkat çekici görünmesi büyük önem taşır. Özellikle PvP odaklı sistemlerde güçlü ekipmanlar, doğru enchant seviyeleri ve görsellik açısından etkileyici kostümler büyük fark yaratır. Bu makalede, Frozen Kostüm'ün efsunlarının nasıl artırılabileceğini ve değiştirilebileceğini detaylı olarak ele alacağız. Bu rehber özellikle Metin2 lobby kullanıcıları, özel sunucu geliştiricileri ve PvP sistemlerinde aktif olan oyuncular için değerli bilgiler sunmaktadır.

Frozen Kostüm Nedir?
Frozen Kostüm, Metin2 oyununda karakterlerin giyebileceği özel kostümlerden biridir. Bu kostümler genellikle PvP mücadelelerinde yüksek dayanıklılık ve bonus özellikler sunar. Ancak bu kostümler, doğrudan donanım gücü sunmasa da, doğru efsunlarla birlikte kullanıldığında ciddi avantaj sağlayabilir. Kostümün efsun seviyesi ne kadar yüksekse, sağladığı bonuslar da o kadar artar. Bu nedenle, Frozen kostüm efsunlarını artırmak veya değiştirmek, oyuncuların güçlü bir görünüm sergilemesinin yanı sıra daha etkili savaşabilmesi için kritik öneme sahiptir.

Efsun Artırma Sistemleri
Frozen kostüm efsunlarını artırmak için genellikle özel sistemler kullanılır. Bu sistemler genellikle C++ tabanlıdır ve özel sunucularda özelleştirilebilir. Sunuculara özel geliştirilen bu sistemler sayesinde oyuncular, kostüm efsunlarını belirli materyaller kullanarak yükseltme şansına sahip olur. Örneğin, +7, +9 gibi efsun seviyelerine ulaşmak mümkündür. Bu işlem sırasında başarısız olma riski de mevcuttur; ancak bazı sunucularda koruma sistemleriyle bu risk azaltılabilir.

Efsun Değiştirme Yöntemleri
Bazı durumlarda oyuncular, sahip oldukları efsunun tipini değiştirmek isteyebilir. Örneğin, HP bonusu veren bir efsundan MP bonusu veren bir efsuna geçmek gibi. Bu işlem genellikle özel itemler veya NPC sistemleri aracılığıyla yapılır. Bu tür sistemler, Python tabanlı GUI arayüzlerle de entegre edilebilir. Böylece oyuncular, kolayca efsun tiplerini seçip değişim işlemini gerçekleştirebilirler. Bu işlemler için genellikle py root ve uiscript gibi sistemler kullanılır.

C++ ve Python Tabanlı Geliştirme
Metin2 özel sunucularında Frozen kostüm efsun sistemlerini geliştirmek isteyen geliştiriciler, hem C++ hem de Python bilgisi gerektirir. Oyunun temel yapısı game server tarafında C++ ile yazılmıştır. Bu yüzden efsun sistemi gibi core işlemler C++ üzerinde geliştirilmelidir. Ancak kullanıcı arayüzü, seçim ekranları gibi alanlar Python ile oluşturulabilir. PyGUI veya UIScript gibi arayüz sistemleri bu işlemleri kolaylaştırır. Geliştiriciler, server src, client src, db, auth gibi yapıları da bilmelidir. Bu bilgi seti sayesinde komple bir efsun değiştirme sistemi kurulabilir.

Efsun Artırma Materyalleri ve Kaynaklar
Efsun artırma işlemleri için özel itemler gerekebilir. Bu itemler genellikle PvP savaşlarında düşmanlardan elde edilebilir ya da NPC'lerden satın alınabilir. Bazı sunucularda bu itemlerin isimleri ve özellikleri özelleştirilmiştir. Örneğin 'Efsun Kristali', 'Soğuk Taşı', 'Buz Ruhu' gibi isimler kullanılabilir. Bu materyallerin elde edilmesi için genellikle zorlu görevler veya özel etkinlikler düzenlenir. Bu sayede efsun sistemi hem eğlenceli hem de dengeli bir yapıya kavuşur.

Sonuç
Frozen kostüm efsun artırma ve değiştirme işlemleri, Metin2 özel sunucularında karakterlerin güçlü ve estetik görünüme kavuşması için önemli adımlardır. Bu işlemler, hem oyuncuların hem de geliştiricilerin teknik bilgiye sahip olmasına ihtiyaç duyulur. C++ ve Python tabanlı sistemler sayesinde güçlü ve özelleştirilmiş efsun sistemleri kurulabilir. Metin2 Lobby kullanıcıları, bu tür gelişmiş sistemlerle karakterlerini daha da güçlendirebilir ve rakiplerine karşı üstünlük sağlayabilirler.


Frozen Costume Enchant Enhancement and Modification Guide at Metin2 Lobby


Introduction
While playing on Metin2 private servers, strengthening your characters and making them visually appealing is crucial. Especially in PvP-oriented systems, strong equipment, correct enchant levels, and visually striking costumes can make a significant difference. In this article, we will detail how to increase and modify the enchantments of the Frozen Costume. This guide provides valuable information for Metin2 lobby users, private server developers, and players active in PvP systems.

What is the Frozen Costume?
The Frozen Costume is one of the special costumes that characters can wear in Metin2. These costumes generally offer high durability and bonus attributes during PvP battles. Although these costumes do not directly provide hardware-level power, they can offer significant advantages when used with the right enchantments. The higher the enchant level of the costume, the greater the bonuses it provides. Therefore, increasing or changing Frozen costume enchants is critical for players to display a powerful appearance and fight more effectively.

Enchant Enhancement Systems
To enhance Frozen costume enchants, special systems are usually employed. These systems are typically based on C++ and can be customized on private servers. Thanks to these custom-developed systems, players have the chance to upgrade their costume enchants using specific materials. For example, reaching enchant levels like +7 or +9 is possible. There is also a risk of failure during this process; however, some servers reduce this risk through protection mechanisms.

Methods for Enchant Modification
In certain situations, players may wish to change the type of enchant they possess. For instance, switching from an enchant that provides HP bonus to one that offers MP bonus. This process is generally done through special items or NPC systems. Such systems can also be integrated with Python-based GUI interfaces. Thus, players can easily select and perform enchant type changes. For these operations, py root and uiscript systems are commonly used.

C++ and Python-Based Development
Developers who want to build Frozen costume enchant systems on Metin2 private servers require knowledge of both C++ and Python. The core structure of the game is written in C++ on the game server side. Therefore, core operations like enchant systems must be developed in C++. However, user interfaces, selection screens, etc., can be created using Python. Interface systems like PyGUI or UIScript simplify these processes. Developers should also be familiar with structures such as server src, client src, db, and auth. With this knowledge base, a complete enchant modification system can be built.

Enchant Enhancement Materials and Resources
Special items are required for enchant enhancement processes. These items can generally be obtained from enemies during PvP battles or purchased from NPCs. On some servers, the names and properties of these items are customized. For example, names like 'Enchant Crystal', 'Cold Stone', 'Ice Spirit' might be used. Obtaining these materials often involves challenging quests or special events. This ensures the enchant system remains both fun and balanced.

Conclusion
Increasing and modifying Frozen costume enchants are important steps for characters to become stronger and more aesthetically appealing on Metin2 private servers. These processes require technical knowledge from both players and developers. Thanks to C++ and Python-based systems, powerful and customizable enchant systems can be built. Users of Metin2 Lobby can strengthen their characters further and gain superiority over opponents using such advanced systems.​
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Benzer konular

Geri
Üst Alt