Efsun Aktarma Sistemi

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Aynı türdeki itemler arasında efsun transferi yapmanızı sağlayan efsun nesnesi





Game Source;

Game;

Kod:
//Arat;                                     else if (item->GetVnum() == 76014)                                     {                                         int aiChangeProb[ITEM_ATTRIBUTE_MAX_LEVEL] =                                         {                                             0, 10, 50, 39, 1                                         };                                         item2->ChangeAttribute(aiChangeProb);                                     } //Altına ekle;                                     else if (item->GetVnum() == 72350)                                     {                                         if (item2->GetType() != ITEM_WEAPON && item2->GetType() != ITEM_ARMOR)                                         {                                             ChatPacket(CHAT_TYPE_INFO, "Bu nesneyi sadece silahlar ve iç itemler üzerinde kullanabilirsin !");                                             return false;                                         }                                         if (item->GetAttributeType(0) == 0)                                         {                                             for (int i = 0; i < ITEM_ATTRIBUTE_MAX_NUM; ++i)                                             {                                                 item->SetForceAttribute(i, item2->GetAttributeType(i), item2->GetAttributeValue(i));                                             }                                             item->SetForceAttribute(5,0,item2->GetType());                                             item->SetForceAttribute(6,0,item2->GetWearFlag());                                             item2->ChangeAttribute();                                             ChatPacket(CHAT_TYPE_INFO, "Bonuslar başarıyla %s isimli eşyandan emildi.",item2->GetName());                                         }                                         else                                         {                                             auto itemtype = item->GetAttributeValue(5);                                             if ((item2->GetType() == itemtype) && (itemtype == ITEM_WEAPON))                                             {                                                 if (item->GetAttributeType(0) == 72 || item->GetAttributeType(0) == 71)                                                 {                                                     if (item2->GetAttributeType(0) != 72 && item2->GetAttributeType(0) != 71)                                                     {                                                         ChatPacket(CHAT_TYPE_INFO, "Bu nesneyi sadece ortalama ve/veya beceri hasarı gelebilen esyalarda kullanabilirsin !");                                                         return false;                                                     }                                                 }                                                 else                                                 {                                                     if (item2->GetAttributeType(0) == 72 || item2->GetAttributeType(0) == 71)                                                     {                                                         ChatPacket(CHAT_TYPE_INFO, "Bu nesneyi ortalama ve/veya beceri hasarı gelebilen esyalarda kullanamazsın !");                                                         return false;                                                     }                                                 }                                             }                                             else                                             {                                                 auto itemwearflag = item->GetAttributeValue(6);                                                 if (itemwearflag != item2->GetWearFlag())                                                 {                                                     ChatPacket(CHAT_TYPE_INFO, "Bonusları emilen eşya ile aktarmak istediğin eşyanın türü uyumlu değil!");                                                     return false;                                                 }                                             }                                             for (int i = 0; i < ITEM_ATTRIBUTE_MAX_NUM; ++i)                                             {                                                 item2->SetForceAttribute(i, item->GetAttributeType(i), item->GetAttributeValue(i));                                             }                                             ChatPacket(CHAT_TYPE_INFO, "Bonuslar başarıyla %s isimli eşyana aktarıldı.",item2->GetName());                                             item->SetCount(item->GetCount() - 1);                                         }                                         break;                                     }


Pack;

Root;

Kod:
#Arat         ### Weapon ###         if item.ITEM_TYPE_WEAPON == itemType:

Kod:
#Üstüne ekle;         if 72350 == itemVnum:             itemwearflag = attrSlot[6][1]             if itemwearflag > 0:                 wearNames = ""                 if itemwearflag == 1:                     wearNames = "Zırh"                 elif itemwearflag == 2:                     wearNames = "Kask"                 elif itemwearflag == 4:                     wearNames = "Ayakkabı"                 elif itemwearflag == 8:                     wearNames = "Bilezik"                 elif itemwearflag == 16:                     wearNames = "Silah"                 elif itemwearflag == 32:                     wearNames = "Kolye"                 elif itemwearflag == 64:                     wearNames = "Küpe"                 elif itemwearflag == 256:                     wearNames = "Kalkan"                 self.AppendTextLine(wearNames, self.NEED_SKILL_POINT_COLOR)                 self.AppendSpace(3)                 self.__AppendAffectInformation()                 self.__AppendAttributeInformation(attrSlot)             else:                 self.AppendTextLine("[BOŞ]", self.NEGATIVE_COLOR)


Locale;

Kod:
#En sona ekle; 72350    ETC    icon/item/71084.tga


Proto;

Kod:
72350    Efsun Aktarma Nesnesi

Kod:
72350    Efsun Aktarma Nesnesi    ITEM_USE    USE_CHANGE_ATTRIBUTE    1    ANTI_DROP | ANTI_SELL | ANTI_STACK    NONE    NONE        500    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

Efsun Aktarma Sistemi Nedir?
Metin2 özel sunucularında oyuncuların karakterlerini daha güçlü hale getirmek için kullandıkları birçok sistem bulunur. Bu sistemlerden birisi de Efsun Aktarma Sistemi'dir. Bu sistem sayesinde oyuncular, elde ettikleri güçlü efsunları başka eşyalara aktarabilirler. Böylece hem mevcut eşyalarını koruyabilir hem de daha güçlü ekipmanlar edinebilirler. Bu sistem genellikle C++ tabanlı sunucu kaynak kodlarında geliştirilerek entegre edilir ve oyuncuların deneyimini zenginleştirir.

Sistemin Amacı
Efsun Aktarma Sistemi, oyuncuların elde ettikleri değerli efsunları başka eşyalara güvenli bir şekilde aktarmalarını sağlar. Bu sayede oyuncular, zorlu PvE veya PvP mücadelelerinde kullanmak üzere güçlü ve özelleştirilmiş ekipmanlar oluşturabilirler. Sistem, aynı zamanda eşya yönetimi konusunda da kolaylık sunar. Oyuncular, sahip oldukları düşük kaliteli eşyaların üzerine yüksek seviye efsunları aktararak onları kullanışlı hale getirebilirler.

Nasıl Çalışır?
Bu sistem genellikle bir GUI arayüzü ile entegre edilir. Oyuncu, Efsun Aktarma penceresini açtığında iki slot ile karşılaşır: Kaynak eşya ve hedef eşya. Kaynak eşya, efsunun alınacağı eşyadır. Hedef eşya ise bu efsunun aktarılacağı eşyadır. Sistem, belirli koşulları kontrol eder: Eşyanın seviyesi, tipi, efsun miktarı gibi. Eğer tüm kontroller olumluysa, efsun başarıyla aktarılır. Bu işlem sırasında genellikle belli miktarda yang veya özel item tüketilir.

Python ve C++ Entegrasyonu
Bu tür sistemlerin geliştirilmesinde hem Python hem de C++ dillerinden faydalanılır. Python tarafında genellikle UI (grafiksel arayüz) geliştirilir. Bu arayüz, uiscript dosyaları ile entegre edilir. C++ tarafında ise efsun aktarma mantığı, güvenlik kontrolleri ve veritabanı işlemleri yer alır. Bu işlemler sırasında game core ve db core modülleri kullanılır.

Sunucu Tarafında Uygulama
Sunucu tarafında bu sistemin çalışması için öncelikle auth ve game server yapılandırması yapılmalıdır. Sistem, py root ve pack yapısı içinde düzenlenir. Ayrıca, martysama gibi gelişmiş sistemlerle de entegre edilebilir. Bu sayede sistem daha stabil ve kullanıcı dostu hale gelir. Oyuncular, aktarma işlemi sırasında yaşayabilecekleri olası sorunları en aza indirgemek için sunucu geliştiricileri tarafından sıkı kontroller yapılır.

Avantajları
Efsun Aktarma Sistemi, oyunculara birçok avantaj sunar. Öncelikle, oyuncular eşyalarını optimize edebilir ve güçlü kombinasyonlar oluşturabilirler. Aynı zamanda, bu sistem oyun içi ekonomiyi de destekler. Yang tüketimi ve özel item gereksinimleri sayesinde oyuncuların kaynaklarını stratejik kullanmaları teşvik edilir. Bu da oyun deneyimini daha keyifli ve dengeli kılar.


What is the Enchantment Transfer System?
In Metin2 private servers, there are various systems that players use to enhance their characters. One such system is the Enchantment Transfer System. This system allows players to transfer powerful enchantments they have acquired to other items. In this way, players can both protect their current items and acquire stronger equipment. The system is typically integrated by developing it within C++ based server source codes, enriching the overall player experience.

Purpose of the System
The Enchantment Transfer System enables players to securely transfer valuable enchantments they have obtained to other items. This allows players to create strong and customized equipment for challenging PvE or PvP battles. Additionally, the system facilitates inventory management. Players can make low-tier items useful again by transferring high-level enchantments onto them.

How Does It Work?
This system is usually integrated with a GUI interface. When a player opens the Enchantment Transfer window, they see two slots: Source Item and Target Item. The source item is the one from which the enchantment will be taken, while the target item is where the enchantment will be transferred. The system checks certain conditions: the item level, type, enchantment amount, etc. If all checks pass, the enchantment is successfully transferred. During this process, usually a certain amount of yang or special items are consumed.

Python and C++ Integration
Both Python and C++ languages are used during the development of such systems. On the Python side, the UI (graphical user interface) is typically developed. This interface integrates with uiscript files. On the C++ side, the enchantment transfer logic, security checks, and database operations are handled. During these processes, game core and db core modules are used.

Server-Side Implementation
To run this system on the server-side, first an auth and game server configuration must be set up. The system is configured within the py root and pack structures. Furthermore, it can also be integrated with advanced systems like martysama. This makes the system more stable and user-friendly. Strict controls are implemented by server developers to minimize potential issues players might face during the transfer process.

Advantages
The Enchantment Transfer System provides several benefits to players. First, players can optimize their items and create powerful combinations. Additionally, this system supports the in-game economy. Yang consumption and special item requirements encourage players to strategically manage their resources. This makes the gameplay more enjoyable and balanced.
 

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

Geri
Üst Alt