[C++]6 ve 7 Efsun Configli Yapımı

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Bazı sourcelerde 6 7 efsun devre dışı bırakılmış olabiliyor.Bu konu sayesinde tekrar aktifleştirebilirsiniz yada aktifse configli bir şekilde tekrar ekleyebilirsiniz.



char_item.cpp açılır

Aratılır

const int ITEM_BROKEN_METIN_VNUM = 28960;

Altına Eklenir

Kod:
extern bool attr_rare_enable;


Aratılır


case 71051


Kod Bloğu Değiştirilir

Kod:
case 71051 : // ÁøÀç°¡                                 {                                     if(!attr_rare_enable)                                     {                                         ChatPacket(CHAT_TYPE_INFO, LC_TEXT("rare attributues have been disabled!"));                                         return false;                                     }                                     // À¯·´, ½Ì°¡Æú, º£Æ®³² ÁøÀç°¡ »ç¿ë±İÁö                                     LPITEM item2;                                     if (!IsValidItemPosition(DestCell) || !(item2 = GetInventoryItem(wDestCell)))                                         return false;                                     if (item2->IsExchanging() == true)                                         return false;                                     if (item2->IsEquipped())                                     {                                         ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can not modify equipped items."));                                         return false;                                     }                                                                          if (item2->GetType() == ITEM_COSTUME)                                     {                                           ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¨ùO¨ù¨¬A¡í ¨¬?¡Æ©¡CO ¨ùo ¨ú©ª¢¥A ¨ú¨¡AIAUAO¢¥I¢¥U."));                                           return false;                                       }                                     if (item2->GetAttributeSetIndex() == -1)                                     {                                         ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¼Ó¼ºÀ» º¯°æÇÒ ¼ö ¾ø´Â ¾ÆÀÌÅÛÀÔ´Ï´Ù."));                                         return false;                                     }                                     if (item2->AddRareAttribute() == true)                                     {                                         ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¼º°øÀûÀ¸·Î ¼Ó¼ºÀÌ Ãß°¡ µÇ¾ú½À´Ï´Ù"));                                         int iAddedIdx = item2->GetRareAttrCount() + 4;                                         char buf[21];                                         snprintf(buf, sizeof(buf), "%u", item2->GetID());                                         LogManager::instance().ItemLog(                                                 GetPlayerID(),                                                 item2->GetAttributeType(iAddedIdx),                                                 item2->GetAttributeValue(iAddedIdx),                                                 item->GetID(),                                                 "ADD_RARE_ATTR",                                                 buf,                                                 GetDesc()->GetHostName(),                                                 item->GetOriginalVnum());                                         item->SetCount(item->GetCount() - 1);                                     }                                     else                                     {                                         ChatPacket(CHAT_TYPE_INFO, LC_TEXT("´õ ÀÌ»ó ÀÌ ¾ÆÀÌÅÛÀ¸·Î ¼Ó¼ºÀ» Ãß°¡ÇÒ ¼ö ¾ø½À´Ï´Ù"));                                     }                                 }


Aratılır


case 71052

Kod Bloğu Değiştirilir
Kod:
case 71052 : // ÁøÀç°æ                                 {                                     if(!attr_rare_enable)                                     {                                         ChatPacket(CHAT_TYPE_INFO, LC_TEXT("rare attributues have been disabled!"));                                         return false;                                     }                                     // À¯·´, ½Ì°¡Æú, º£Æ®³² ÁøÀç°¡ »ç¿ë±İÁö                                     LPITEM item2;                                     if (!IsValidItemPosition(DestCell) || !(item2 = GetItem(DestCell)))                                         return false;                                     if (item2->IsExchanging() == true)                                         return false;                                     if (item2->IsEquipped())                                     {                                         ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can not modify equipped items."));                                         return false;                                     }                                     if (item2->GetAttributeSetIndex() == -1)                                     {                                         ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¼Ó¼ºÀ» º¯°æÇÒ ¼ö ¾ø´Â ¾ÆÀÌÅÛÀÔ´Ï´Ù."));                                         return false;                                     }                                     if (item2->ChangeRareAttribute() == true)                                     {                                         char buf[21];                                         snprintf(buf, sizeof(buf), "%u", item2->GetID());                                         LogManager::instance().ItemLog(this, item, "CHANGE_RARE_ATTR", buf);                                         item->SetCount(item->GetCount() - 1);                                     }                                     else                                     {                                         ChatPacket(CHAT_TYPE_INFO, LC_TEXT("º¯°æ ½Ãų ¼Ó¼ºÀÌ ¾ø½À´Ï´Ù"));                                     }                                 }


config.h açılır

Aratılır

extern int gPlayerMaxLevel;

Altına Eklenir
Kod:
extern bool attr_rare_enable;
config.cpp açılır

Aratılır
int gPlayerMaxLevel = 250;

Altına Eklenir

Kod:
bool attr_rare_enable = true;

Aratılır

TOKEN("max_level")

Kod Bloğu Altına Eklenir

Kod:
TOKEN("attr_rare_enable")         {             int flag = 0;             str_to_number(flag, value_string);             //if (1 == flag && LC_IsEurope() )             if (0 == flag)             {                 attr_rare_enable = false;                 fprintf(stderr, "ATTR_RARE_ENABLE: %i\n", flag);             }         }
Source kısmında yapılcaklar bu kadar

CH'lere ve Game99 Config'ine eklenecek kod
Kod:
ATTR_RARE_ENABLE: 1

İyi Forumlar :)
Metin2'de 6 ve 7 Efsun Configli Sistemi Geliştirme Rehberi

Metin2 özel sunucularında güçlü sistemler geliştirmek isteyen geliştiriciler için efsun configleri hayati öneme sahiptir. Bu rehberde C++ tabanlı Metin2 kaynak kodları üzerinde 6 ve 7 efsun yapılandırmasının nasıl yapılacağını detaylıca inceleyeceğiz. Bu sistem, oyuncuların eşyalarına belirli limitlerde efsun yapabilmesini sağlar ve PvP deneyimini ciddi anlamda etkiler.

Efsun Sistemine Giriş

Metin2 dünyasında efsunlar, karakterlerin güçlerini artırmada kilit rol oynar. Standart olarak sistem 0-5 arası efsun destekler ancak özel sunucularda bu değerler değiştirilebilir. 6 ve 7 efsun yapılandırmaları, oyuncuların eşyalarına daha yüksek bonuslar kazandıran gelişmiş bir özelliktir. Bu yapılandırmalar, hem PvP savaşlarında üstünlük sağlar hem de oyuncular için cazip bir hedeftir.

C++ Kaynak Kodlarında Değişiklik Yapma

Bu işlem için öncelikle game server kaynak kodlarına erişmeniz gerekir. Genellikle Martysama veya diğer Metin2 geliştirme kaynakları üzerinden çalışılır. 6 ve 7 efsun için yapılandırma dosyalarında değişiklik yapılması gerekir.

Öncelikle item_proto.txt dosyasında efsunlanabilir eşyaların hangi seviyeye kadar efsunlanabileceğini tanımlamalısınız. Bu dosya sunucu veritabanında yer alır ve eşya prototipleri buradan yönetilir.

Ardından, char_item.cpp ve char_item.h[/BR] dosyalarında efsun mekanizmasıyla ilgili sınırlar ve fonksiyonlar düzenlenmelidir. Burada efsun seviyesi kontrolünü yapan fonksiyonlar üzerinde değişiklik yapılmalıdır.

Python Client Tarafında UI Ayarları

Py Root ve UIScript dosyalarında da efsun menüsüne özel eklemeler yapılmalıdır. Özellikle enhance_dialog.py gibi UI dosyalarında 6 ve 7 efsunun görsel olarak desteklenmesi gerekir. Bu dosyalarda efsun seviyesi göstergesi ve butonlar güncellenmelidir.

Compile ve Test İşlemi

Değişiklikler tamamlandıktan sonra kaynak kodları compile edilmelidir. Derleme işlemi sırasında hata alınmaması için tüm dosyalar doğru şekilde düzenlenmiş olmalıdır. Compile sonrası test sunucusunda efsun sisteminin düzgün çalışıp çalışmadığı kontrol edilmelidir.

Database Ayarları

Efsun yapılandırmasında DB Core tarafında da bazı ayarlar yapılması gerekir. Özellikle efsunlanan eşyaların veritabanına doğru şekilde yazılması önemlidir. player.item tablosunda efsun değerleri doğru şekilde saklanmalıdır.

Sonuç

6 ve 7 efsun yapılandırması, Metin2 özel sunucularında ciddi avantajlar sunar. Bu yapı sayesinde oyuncular daha güçlü ekipmanlar elde eder ve PvP mücadelesi daha keyifli hale gelir. C++ ve Python tabanlı sistemlerde yapılan bu değişiklikler, Metin2 Development sürecini zenginleştirir ve sunucunuzun benzersiz özellikler kazanmasını sağlar.


Guide to Developing 6 and 7 Bless Config Systems in Metin2

Metin2 private server developers often focus on powerful item enhancement features like blessing configurations. In this guide, we will detail how to implement 6 and 7 blessing configurations within C++-based Metin2 server sources. This system allows players to apply higher-level enhancements to their items, significantly impacting PvP gameplay experiences.

Introduction to Blessing System

In the world of Metin2, blessings play a crucial role in enhancing character strength. Standard systems support blessings from 0 to 5, but private servers can modify these limits. 6 and 7 blessing configurations offer advanced bonuses to items, providing significant advantages in PvP battles and making them attractive goals for players.

Modifying C++ Source Code

To begin, you need access to game server source files. Typically, developers use sources like Martysama or other Metin2 development resources. Configuration files must be updated to support 6 and 7 blessings.

Firstly, define the maximum blessing level for items in the item_proto.txt file. This file is part of the server database and manages item prototypes.

Next, modify functions related to blessing mechanics in char_item.cpp and char_item.h[/BR]. Adjust the functions that handle blessing level checks and ensure they accommodate up to level 7 blessings.

UI Adjustments in Python Client Side

Updates are also needed in Py Root and UIScript files to visually support 6 and 7 blessings. Files such as enhance_dialog.py must be updated to display and interact with the higher blessing levels correctly.

Compilation and Testing Process

After all changes are applied, the source code must be compiled. Ensure no errors occur during compilation by double-checking all modifications. Once compiled, thoroughly test the blessing system on a test server to verify functionality.

Database Configurations

On the database side, adjustments may be required in the DB Core layer. Ensuring blessed items are saved correctly into the database, especially in the player.item table, is critical for accurate data tracking.

Conclusion

6 and 7 blessing configurations offer significant advantages in Metin2 private servers. These setups allow players to acquire more powerful gear and enhance PvP combat excitement. Modifications made in both C++ and Python systems enrich the Metin2 Development process and provide your server with unique features.
 

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

Benzer konular

Geri
Üst Alt