[C++/PYTHON] Vnum'a göre efekt ekleme

  • 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
Client-> InstanceBase.cpp

Arat
Kod:
CInstanceBase::__GetRefinedEffect(CItemData* pItem)

Arat
Kod:
case CItemData::ITEM_TYPE_WEAPON:

Buranın altına efektlerinizi ekleyin kılıç için örnek bırakıyorum:

Kod:
if (pItem->GetSubType() == CItemData::WEAPON_SWORD)     DWORD itemVnum = pItem->GetIndex();     if (itemVnum == silahID)         m_swordRefineEffectRight = EFFECT_REFINED+ORNEK_EFFECT;            if (m_swordRefineEffectRight)               m_swordRefineEffectRight = __AttachEffect(m_swordRefineEffectRight);


InstanceBase.h 'a açın

EFFECT_BODYARMOR_SPECIAL,

Aratın

EFFECT_ORNEK_EFFECT

Altına ekleyin


Root> PlayerSettingsModule.py

Arat:
chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+20, "Bip01", "D:/ymir work/pc/common/effect/armor/armor-4-2-2.mse")

Altına Ekle( sizde kaç effect varsa artık):
chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+22, "PART_WEAPON", "D:/ymir work/item/kiliceffect.mse")

MSE Dosyası bırakmıyorum kendiniz herhangibir yerden bulup kullanabilirsiniz iteme efekt ekleme bu şekilde oluyor
Bunu oyuna Kayıp silah sistemi eklerken kullanmıştım 65 Level+ Her silahın kendine özel Kayıp versiyonu oluyordu ekstradan hasar ve özelliklere sahip sadece kayıp silahların belli olması için kayıp silahlara özel efekt oluşturup vermiştim

Konu çok genel daha önce açıldımı bilmiyorum hep effect sistem şeklinde açılmış

Kendi serverımdan kanıt:

Metin2 Sunucularında Vnum'a Göre Efekt Ekleme Rehberi (C++ / PYTHON)

Metin2 özel sunucularında geliştirme yaparken, belirli item vnum'larına özel efektler eklemek isteyebilirsiniz. Bu efektler, oyuncuların deneyimini artırabilir veya belirli item'ların kullanım amacını daha belirgin hale getirebilir. Bu rehberde, hem C++ hem de Python tarafında vnum'a göre efekt ekleme yöntemlerini detaylı olarak ele alacağız.

C++ Tarafında Vnum'a Göre Efekt Ekleme

Metin2 sunucu tarafında efekt ekleme işlemi genellikle game core üzerinde yapılır. Oyunun çalıştığı ana yapıdır. Bu işlem sırasında, src dosyaları üzerinde değişiklik yapmanız gerekir. Özellikle char_item.cpp, item_manager.cpp gibi dosyaları incelemeniz önerilir.

1. Item Kullanım Event'i: Oyuncu bir item kullandığında tetiklenecek fonksiyonları inceleyin. Genellikle UseItem gibi fonksiyonlar kullanılır.

2. Belirli Vnum Kontrolü: Kullanılan item'in vnum değerini kontrol edip, özel işlemler gerçekleştirmeniz gerekir. Örneğin:

Kod:
[COLOR=#9365b8]int vnum = pItem->GetVnum();[BR][/BR]if (vnum == 70001) { // Özel item vnum[BR][/BR]    // Efekt ekleme kodları buraya[BR][/BR]}[/COLOR]


3. Efekt Tetikleme: Belirli bir vnum ile eşleştiğinde, efekt tetikleme fonksiyonunu çağırabilirsiniz. Örneğin, PointChange(POINT_HP, 100); gibi bir işlem HP artışı sağlayabilir.

Python Tarafında UI Script ile Efekt

Client tarafında, yani py root ve uiscript üzerinde de vnum'a göre efekt eklenebilir. Özellikle GUI üzerinden kullanıcıya özel animasyonlar veya bildirimler göstermek için Python kullanılır.

1. Item Kullanımı Dinlenir: uiinventory.py dosyasında item kullanımı kontrol edilir. Burada belirli bir vnum için özel işlem yapılabilir.

2. Efekt Tetikleme: vnum karşılaştırması yapıldıktan sonra, örneğin bir ses çalabilir veya efekt animasyonu başlatılabilir.

Kod:
[COLOR=#9365b8]if item_vnum == 70001:[BR][/BR]    self.__PlaySpecialEffect()[/COLOR]


Not: Item vnum'ları doğru tanımlamalısınız. Aksi halde efektler yanlış item'lar üzerinde çalışabilir.

DB ve Game Core Entegrasyonu

Efekt sisteminizi DB (database) ile entegre etmek isterseniz, item bilgilerini veritabanında tutabilir ve dinamik olarak efekt atamaları yapabilirsiniz. Bu sayede yönetim kolaylığı artar ve daha esnek bir sistem oluşturulabilir.

Martysama gibi sistemlerde de bu tür efekt sistemleri oldukça yaygın kullanılır. Özellikle metin2dev topluluklarında paylaşılan kaynaklar sayesinde birçok geliştirici bu konuda deneyim kazanmaktadır.

Sonuç

Vnum'a göre efekt ekleme işlemi, Metin2 özel sunucularında kullanıcı deneyimini artıran önemli bir özelliktir. Hem C++ hem de Python tarafında bu işlem yapılabilmektedir. Geliştiricilerin hem client hem de server tarafında kodlama bilgisine sahip olması bu işlemleri daha etkili hale getirir. Metin2Lobby üzerinden daha fazla kaynak ve rehber bulabilirsiniz.


Adding Effects Based on Vnum in Metin2 (C++ / PYTHON)

While developing custom Metin2 servers, you may want to add special effects to specific item vnus. These effects can enhance player experience or make the purpose of certain items more obvious. In this guide, we will detail how to add effects based on vnum on both C++ and Python sides.

Adding Effects Based on Vnum in C++

Adding effects on the Metin2 server side usually occurs within the game core. This is the main structure where the game runs. During this process, you need to modify src files. Particularly, examining files like char_item.cpp, item_manager.cpp is recommended.

1. Item Usage Event: Examine functions triggered when a player uses an item. Usually functions like UseItem are used.

2. Specific Vnum Check: You need to check the vnum value of the item being used and perform special operations. For example:

Kod:
[COLOR=#9365b8]int vnum = pItem->GetVnum();[BR][/BR]if (vnum == 70001) { // Special item vnum[BR][/BR]    // Effect addition code goes here[BR][/BR]}[/COLOR]


3. Triggering Effect: When a specific vnum matches, you can call the effect triggering function. For example, PointChange(POINT_HP, 100); can provide an HP increase.

Effects with UI Script in Python

On the client side, within py root and uiscript, you can also add effects based on vnum. Especially for showing custom animations or notifications to users through the GUI, Python is used.

1. Listening for Item Use: In uiinventory.py, item usage is checked. Here, special actions can be performed for a specific vnum.

2. Triggering Effect: After the vnum comparison, for example, a sound can be played or an effect animation started.

Kod:
[COLOR=#9365b8]if item_vnum == 70001:[BR][/BR]    self.__PlaySpecialEffect()[/COLOR]


Note: You must correctly define item vnus. Otherwise, effects might run on incorrect items.

DB and Game Core Integration

If you want to integrate your effect system with the database (DB), you can store item information in the database and assign effects dynamically. This increases management ease and allows for a more flexible system.

Such effect systems are widely used in systems like Martysama. Thanks to resources shared in metin2dev communities, many developers gain experience in this area.

Conclusion

Adding effects based on vnum is an important feature that enhances user experience in Metin2 custom servers. This operation can be done on both C++ and Python sides. Having coding knowledge on both client and server sides makes these operations more effective. You can find more resources and guides on Metin2Lobby.
 

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

Benzer konular

Geri
Üst Alt