Neler yeni

Foruma hoş geldin, Ziyaretçi

Metin2Lobby.com Metin2 Private Server Tanıtım Advertising Ve Geliştirme Forumudur.Metin2 pvp serverler,1-99,1-105,1-120,55-120 global serverları paylaş yada ara.
Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Yere Düşen İtemlere Efekt Verme

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Konular
48,291
Mesajlar
48,601
Tepkime puanı
75
M2 Yaşı
3 yıl 11 ay 10 gün
Trophy Puan
48
Konum
Web sitesi
M2 Yang
488,879
Ticaret : 1 / 0 / 0
Ticaret Oranı : 100%
Herkese Merhaba Arkadaşlar; Bu Sistem Client Src tabanlı bir sistem yere düşen itemlere nesnelere herhangi bir şeyin cinsine(type ve subtype) ya da koduna göre ufak düzenlemeler ile istediğiniz efekti vermeyi sağlar.

1108_210707.jpg

Efekti kendinize göre ayarlayabilirsiniz.

İlk Olarak
UserInterface/PythonItem.h açalım ve aratalım.
Kod:
typedef struct SGroundItemInstance

Sonra Üstüne Şunu ekleyelim;(İsteğe göre arttırılıp azaltılabilir)

Kod:
enum EDropItemEffects         {             DROP_ITEM_EFFECT_NORMAL,             DROP_ITEM_EFFECT_RARE,             DROP_ITEM_EFFECT_EPIC,             DROP_ITEM_EFFECT_LEGENARY,             DROP_ITEM_EFFECT_NUM,         };

Sonra Şu kodu Aratalım ;

Kod:
DWORD    __Pick(const POINT& c_rkPtMouse);

Yine Üstüne Şu Kodu Ekleyelim ;

Kod:
void    __RegisterEffect(int iIndex, const char* szFile);         int        __AttachEffect(DWORD dwVnum, BYTE byType, BYTE bySubType);

Sonra Şu Kodu Arayalım;

Kod:
DWORD m_dwDropItemEffectID;

Aşağıdaki Gibi Değiştirelim;

Kod:
DWORD m_dwDropItemEffectID[DROP_ITEM_EFFECT_NUM];

2.adım

UserInterface/PythonItem.cpp açalım


Şu Kodu Aratalım;

Kod:
// attaching effect         CEffectManager & rem =CEffectManager::Instance();         pGroundItemInstance->dwEffectInstanceIndex =         rem.CreateEffect(m_dwDropItemEffectID, D3DXVECTOR3(x, -y, z), D3DXVECTOR3(0,0,0));

Aşağıdaki Gibi Değiştirelim;

Kod:
// attaching effect         DWORD dwEffectIndex = __AttachEffect(dwVirtualNumber, pItemData->GetType(), pItemData->GetSubType());         if(dwEffectIndex < DROP_ITEM_EFFECT_NUM && dwEffectIndex >= 0)         {             dwEffectIndex = m_dwDropItemEffectID[dwEffectIndex];             if(dwEffectIndex != 0)             {                 CEffectManager & rem =CEffectManager::Instance();                 pGroundItemInstance->dwEffectInstanceIndex =                 rem.CreateEffect(dwEffectIndex, D3DXVECTOR3(x, -y, z), D3DXVECTOR3(0,0,0));                   }         }

Sonra Şu Kodu Aratalım;
Kod:
void CPythonItem::Create()

Şu Şekilde Değiştirelim ; (Efekt(mse) Yollarını ve İsimlerini Kendinize Göre Değiştirebilirsiniz UserInterface/PythonItem.h'nin ilk adımında ekleme yada değişiklik yaptıysanız Buraya da uygulayın)

Kod:
void CPythonItem::Create() {     //Default     __RegisterEffect(DROP_ITEM_EFFECT_NORMAL, "d:/ymir work/effect/etc/dropitem/dropitem.mse");         //Rare     __RegisterEffect(DROP_ITEM_EFFECT_RARE, "d:/ymir work/effect/etc/dropitem/dropitem_rare.mse");         //Epic     __RegisterEffect(DROP_ITEM_EFFECT_EPIC, "d:/ymir work/effect/etc/dropitem/dropitem_epic.mse");         //Epic     __RegisterEffect(DROP_ITEM_EFFECT_LEGENARY, "d:/ymir work/effect/etc/dropitem/dropitem_legendary.mse"); }

Sonra Bu Kodu aratalım;
Kod:
m_dwPickedItemID = INVALID_ID;

Altına Bu Kodu Ekleyelim;

Kod:
memset(m_dwDropItemEffectID, 0, sizeof(m_dwDropItemEffectID));

Son Olarak Bu kodu Aratıp;
Kod:
CPythonItem::~CPythonItem() {     assert(m_GroundItemInstanceMap.empty()); }

Altına Bu Kodu Ekleyelim; (İtemleri Tipine Subtypene ya da Koduna göre burada düzenleyeceğiz.)

Kod:
void CPythonItem::__RegisterEffect(int iIndex, const char* szFile) {     if(iIndex >= DROP_ITEM_EFFECT_NUM || iIndex < 0)     {         TraceError("CPythonItem::__RegisterEffect - Invalid index: %d - %s", iIndex, szFile);         return;     }         CEffectManager::Instance().RegisterEffect2(szFile, &m_dwDropItemEffectID[iIndex]); } int CPythonItem::__AttachEffect(DWORD dwVnum, BYTE byType, BYTE bySubType) {     //Örnek         // itemin Vnumuna göre efekt     switch(dwVnum)     {         //İtemin Vnumuna Göre Rare Olarak         case 101:         case 2001:             return DROP_ITEM_EFFECT_RARE;                     //İtemin Vnumuna Göre Epic Olarak(Daha Fazla Ekleme Yapılabilir)         case 3025:         case 3229:             return DROP_ITEM_EFFECT_EPIC;     }         // itemin type/subtype'ine göre ekleme     switch(byType)     {         //Epic Olarak istenin efekt type ayrımı ile (        case CItemData::ITEM_TYPE_WEAPON: Vesaire eklenebilir)         case CItemData::ITEM_TYPE_ARMOR:             return DROP_ITEM_EFFECT_EPIC;         //İtem Type Material olan efektler isteğe bağlı         case CItemData::ITEM_TYPE_MATERIAL:         {             switch(bySubType)             {                 //Epic İtem ayrımı (Subtype Ayrımı olarak)                 case CItemData::MATERIAL_LEATHER:                     return DROP_ITEM_EFFECT_EPIC;                                     //İtem Typesi kolye Küpe Bilezik felan                 case CItemData::MATERIAL_JEWEL:                     return DROP_ITEM_EFFECT_LEGENARY;             }                         //ITEM_TYPE_MATERIAL dışında kalanlar isteğe bağlı             return DROP_ITEM_EFFECT_RARE; //boş         }     }         return DROP_ITEM_EFFECT_NORMAL; //boş }

1115_192457.jpg

Yere Düşen İtemlere Efekt Verme | Metin2 Lobby


Metin2 özel sunucularında oyun deneyimini artırmak istiyorsanız, yere düşen itemlere efekt ekleme işlemi oldukça etkili bir yöntemdir. Bu işlem, hem PvP savaşlarında hem de PvE içeriklerinde görsel olarak dikkat çekici bir atmosfer yaratır. Bu rehberde, C++ sistem üzerinden nasıl yere düşen itemlere efekt verileceğini adım adım inceleyeceğiz.

Yere Düşen Item Sistemine Genel Bakış
Metin2'de öldürülen moblardan veya oyunculardan yere düşen itemler, varsayılan olarak sadece bir model ve isimle görünür. Ancak bazı özel sistemlerle bu itemlerin etrafında parlama, ışık hüzmesi veya animasyon gibi efektler gösterilebilir. Bu sayede hem görsellik artırılır hem de oyuncuların düşen itemleri fark etmesi kolaylaşır.

Efekt Sistemi Nasıl Çalışır?
Efekt sistemi, C++ kaynak kod üzerinde geliştirilerek oyun sunucusuna entegre edilir. Bu sistemde, bir item yere düştüğünde belirlenen efekt dosyası (örneğin .gr2 veya .msm dosyası) o itemin konumuna yerleştirilir ve oynatılır. Bu efektler genellikle özel itemler, PvP ödülü itemleri veya sınırlı süreli etkinlik itemleri için tercih edilir.

Geliştirme Adımları
1. Client Tarafı: Oyuncu tarafında efektin doğru şekilde gösterilmesi için UI scriptleri ve efekt dosyalarının doğru şekilde yerleştirilmesi gerekir. Bu dosyalar genellikle uiscript ve py root klasörlerinde düzenlenir.
2. Server Tarafı[/COORD]: Game serverda itemin yere düşerken efekt çağrısı yapılması gerekir. Bu işlem için game core üzerinde değişiklik yapılmalıdır. Örneğin, bir item belirli bir ID aralığında ise özel efekt oynatılır.
3. Veritabanı Entegrasyonu: Efektli itemlerin ID'leri DB'de belirlenmiş olabilir. Bu sayede sadece belirli itemler efektle düşer. Bu yapı db core üzerinde ayarlanabilir.

Python ve Py GUI Kullanımı
Bazı durumlarda, efekt sisteminin yönetim paneli Py GUI kullanılarak geliştirilebilir. Bu sayede adminler, hangi itemlerin efekt alacağını daha kolay yönetebilir. Bu panel, Python sistem üzerine kurulmuş bir GUI uygulamasıdır ve sunucu yönetimini kolaylaştırır.

Martysama ve Diğer Araçlar
Metin2Dev toplulukları arasında popüler olan martysama gibi araçlar da efekt sistemi geliştirilirken yardımcı olabilir. Bu araçlarla efekt dosyaları dönüştürülebilir, test edilebilir veya optimize edilebilir.

Sonuç
Yere düşen itemlere efekt vermek, Metin2 özel sunucularında oyun içi deneyimi ciddi anlamda artırır. Hem görsel açıdan hem de kullanıcı etkileşimi açısından bu sistem, Metin2 development sürecinde oldukça değerlidir. Doğru uygulandığında, oyuncuların dikkatini çekecek ve sunucunuzun diğerlerinden ayrılmasını sağlayacaktır.


Adding Effects to Dropped Items | Metin2 Lobby


If you want to enhance the gaming experience on your Metin2 private servers, adding effects to dropped items can be a very effective method. This process creates visually appealing atmospheres during both PvP battles and PvE content. In this guide, we will examine step by step how to add effects to dropped items using C++ system.

Overview of Dropped Item System
In Metin2, items dropped from defeated monsters or players appear with only a model and a name by default. However, special systems can display effects such as glows, light beams, or animations around these items. This increases visual appeal and helps players notice dropped items more easily.

How Does the Effect System Work?
The effect system is developed over C++ source code and integrated into the game server. When an item drops, a designated effect file (e.g., .gr2 or .msm) is placed at the item's location and played. These effects are typically used for special items, PvP reward items, or limited-time event items.

Development Steps
1. Client Side: To properly display effects on the player side, UI scripts and effect files must be correctly placed. These files are usually edited within uiscript and py root folders.
2. Server Side: The game server needs to trigger an effect when an item drops. Modifications must be made to the game core. For example, if an item falls within a specific ID range, a special effect is played.
3. Database Integration: The IDs of items with effects may be defined in the database. This ensures only certain items drop with effects. Such structures can be configured within the db core.

Using Python and Py GUI
In some cases, a management panel for the effect system can be developed using Py GUI. This allows administrators to manage which items receive effects more easily. This panel is a GUI application built on the Python system and simplifies server administration.

Martysama and Other Tools
Metin2Dev communities often use popular tools like martysama during effect system development. These tools can convert, test, or optimize effect files.

Conclusion
Adding effects to dropped items significantly enhances the in-game experience on Metin2 private servers. Visually and interactively, this system is highly valuable in the Metin2 development process. When applied correctly, it captures players' attention and helps distinguish your server from others.
 

Forumdan daha fazla yararlanmak için giriş yapın yada üye olun!

Forumdan daha fazla yararlanmak için giriş yapın veya kayıt olun!

Kaydol

Forumda bir hesap oluşturmak tamamen ücretsizdir.

Üye ol
Giriş Yap

Eğer bir hesabınız var ise lütfen giriş yapın

Giriş Yap

Tema düzenleyici

Tema özelletirmeleri