Karaktere Başlangıçta Efsun Verme Fonksiyon (Farklı)

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Verdiğim kodları questlua_pc.cpp dosyanızda uygun alanlara ekleyiniz. Daha Sonra quest_function dosyanıza pc.give_eqboni ekleyin ve başlangıç questinizde eşyaları verdiği satırın altına pc.give_eqboni() eklemeniz yeterlidir sistem çalışacaktır
Not: Sistemin tam stabil çalışabilmesi için başlangıçta verilen eşyaları otomatik karakter üzerinde başlatın
pc.give_item komutunu pc.give_and_equip_item olarak değiştirmeniz yeterli olacaktır​

Kod:
int pc_give_eqboni(lua_State* L)     {         LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();         BYTE job = ch->GetJob();         LPITEM item;         switch (job)         {             case JOB_WARRIOR:             case JOB_ASSASSIN:             case JOB_SURA:             case JOB_SHAMAN:             {                    item = ch->GetWear(WEAR_HEAD);                    if (item != NULL)                    {                        item->ClearAttribute();                        item->SetForceAttribute(0, APPLY_ATT_SPEED, 8);                        item->SetForceAttribute(1, APPLY_HP_REGEN, 30);                        item->SetForceAttribute(2, APPLY_SP_REGEN, 30);                        item->SetForceAttribute(3, APPLY_DODGE, 15);                        item->SetForceAttribute(4, APPLY_STEAL_SP, 10);                    }                    item = ch->GetWear(WEAR_WEAPON);                    if (item != NULL)                    {                        item->ClearAttribute();                        item->SetForceAttribute(0, APPLY_CAST_SPEED, 20);                        item->SetForceAttribute(1, APPLY_CRITICAL_PCT, 10);                        item->SetForceAttribute(2, APPLY_PENETRATE_PCT, 10);                        item->SetForceAttribute(3, APPLY_ATTBONUS_ANIMAL, 20);                        item->SetForceAttribute(4, APPLY_NORMAL_HIT_DAMAGE_BONUS, 20);                    }                    item = ch->GetWear(WEAR_SHIELD);                    if (item != NULL)                    {                        item->ClearAttribute();                        item->SetForceAttribute(0, APPLY_CON, 12);                        item->SetForceAttribute(1, APPLY_BLOCK, 15);                        item->SetForceAttribute(2, APPLY_STR, 12);                        item->SetForceAttribute(3, APPLY_IMMUNE_STUN, 1);                        item->SetForceAttribute(4, APPLY_INT, 12);                    }                    item = ch->GetWear(WEAR_BODY);                    if (item != NULL)                    {                        item->ClearAttribute();                        item->SetForceAttribute(0, APPLY_MAX_HP, 2000);                        item->SetForceAttribute(1, APPLY_CAST_SPEED, 20);                        item->SetForceAttribute(2, APPLY_STEAL_HP, 10);                        item->SetForceAttribute(3, APPLY_REFLECT_MELEE, 10);                        item->SetForceAttribute(4, APPLY_ATT_GRADE_BONUS, 50);                    }                    item = ch->GetWear(WEAR_FOOTS);                    if (item != NULL)                    {                        item->ClearAttribute();                        item->SetForceAttribute(0, APPLY_MAX_HP, 2000);                        item->SetForceAttribute(1, APPLY_EXP_DOUBLE_BONUS, 20);                        item->SetForceAttribute(2, APPLY_MOV_SPEED, 8);                        item->SetForceAttribute(3, APPLY_ATT_SPEED, 8);                        item->SetForceAttribute(4, APPLY_CRITICAL_PCT, 10);                    }                    item = ch->GetWear(WEAR_WRIST);                    if (item != NULL)                    {                        item->ClearAttribute();                        item->SetForceAttribute(0, APPLY_MAX_HP, 2000);                        item->SetForceAttribute(1, APPLY_MANA_BURN_PCT, 10);                        item->SetForceAttribute(2, APPLY_PENETRATE_PCT, 10);                        item->SetForceAttribute(3, APPLY_STEAL_HP, 10);                        item->SetForceAttribute(4, APPLY_ATTBONUS_ANIMAL, 20);                    }                    item = ch->GetWear(WEAR_NECK);                    if (item != NULL)                    {                        item->ClearAttribute();                        item->SetForceAttribute(0, APPLY_MAX_HP, 2000);                        item->SetForceAttribute(1, APPLY_GOLD_DOUBLE_BONUS, 20);                        item->SetForceAttribute(2, APPLY_CRITICAL_PCT, 10);                        item->SetForceAttribute(3, APPLY_PENETRATE_PCT, 10);                        item->SetForceAttribute(4, APPLY_HP_REGEN, 20);                    }                    item = ch->GetWear(WEAR_EAR);                    if (item != NULL)                    {                        item->ClearAttribute();                        item->SetForceAttribute(0, APPLY_MOV_SPEED, 10);                        item->SetForceAttribute(1, APPLY_GOLD_DOUBLE_BONUS, 20);                        item->SetForceAttribute(2, APPLY_POISON_REDUCE, 8);                        item->SetForceAttribute(3, APPLY_ATTBONUS_ANIMAL, 20);                        item->SetForceAttribute(4, APPLY_ATTBONUS_ORC, 20);                    }             }             break;         }     } { "give_eqboni", pc_give_eqboni },

Metin2 Karaktere Başlangıçta Efsun Verme Fonksiyon (Farklı)


Metin2 özel sunucularında oyun deneyimini zenginleştirmek adına birçok geliştirici tarafından çeşitli sistemler entegre edilmektedir. Bu sistemlerden birisi de karaktere başlangıçta efsun verme fonksiyonudur. Ancak standart sistemlerin ötesine geçen farklı bir yaklaşım, oyunculara daha dengeli ya da avantajlı bir başlangıç sunabilir. Bu yazıda, Metin2 özel sunucularında karaktere başlangıçta efsun verme işlemi için farklı bir fonksiyon nasıl geliştirilir ve uygulanır, detaylı olarak ele alınacaktır.

Karaktere Başlangıçta Efsun Verme Nedir?

Genellikle Metin2 sunucularında karakter yaratıldığında belirli başlangıç envanteri verilir. Bu envanterde silah, zırh veya bazı aksesuarlar yer alabilir. Ancak karaktere başlangıçta efsun verme işlemi, oyuncunun doğduğu andan itibaren üzerinde efsunlanmış bir eşya veya doğrudan efsun bonusuyla başlatılması anlamına gelir. Bu, özellikle PvP sunucularında oyuncuların daha hızlı bir şekilde aktif savaşa girmesini sağlar.

Farklı Bir Yaklaşım: Dinamik ve Rastgele Efsun Sistemi

Standart sistemlerde genellikle sabit efsunlar atanır. Örneğin, tüm yeni karakterler 7 seviye efsunla başlar. Ancak farklı bir fonksiyon ile rastgele efsunlar veya dinamik efsun sistemleri geliştirilebilir. Bu sistemde, karakter yaratılırken belirlenen sınırlar dahilinde rastgele bir efsun değeri atanabilir. Bu değer, sunucu ayarlarına göre minimum ve maksimum aralıklarla belirlenir.

Örneğin:
- Minimum efsun seviyesi: 3
- Maksimum efsun seviyesi: 7
- Efsun türü rastgele seçilebilir (Hasar artışı, Zırh artışı, Can artışı vb.)

Bu yaklaşım, oyuncuların her karakterinde farklı bir başlangıç deneyimi yaşamasını sağlar. Aynı zamanda haksız avantaj engellenir çünkü herkesin efsunu aynı değil, rastgele olur.

Uygulama Adımları

1. Python Script tarafında karakter yaratma event'ine müdahale edilir.
2. Oyuncu karakter yarattığında, rastgele efsun seçimi yapılır.
3. Seçilen efsun, karakterin envanterindeki eşyaya otomatik olarak uygulanır.
4. Bu işlem sırasında DB (veritabanı) ile senkronizasyon sağlanır.

Dikkat Edilmesi Gerekenler

- Sunucu dengesi bozulmamalıdır.
- Efsun seviyesi çok yüksek olursa yeni başlayan oyuncular deneyimli oyuncularla eşit rekabete girer.
- Efsun türleri dengeli seçilmelidir.
- Hata ayıklama ve test aşaması eksiksiz yapılmalıdır.

Sonuç

Karaktere başlangıçta efsun verme fonksiyonunun farklı bir versiyonu, Metin2 özel sunucularında kullanıcı deneyimini ciddi anlamda artırabilir. Rastgelelik ve dinamizm katarak oyunculara daha eğlenceli bir başlangıç sunar. Bu sistem, doğru şekilde geliştirildiğinde sunucunuzun diğerlerinden fark çıkarmasını sağlar. Eğer Metin2 özel sunucu geliştirme konusunda ilerlemek istiyorsanız, bu gibi sistemleri öğrenmek ve uygulamak büyük fayda sağlar.


Metin2 Character Starting Enchant Function (Different Approach)


In order to enhance the gaming experience on Metin2 private servers, many developers integrate various custom systems. One such system is the character starting enchant function. However, going beyond standard implementations, a different approach can provide players with a more balanced or advantageous start. In this article, we will discuss in detail how to develop and implement a different function for giving enchants to characters at the beginning in Metin2 private servers.

What Is Giving Enchants to Characters at Start?

In most Metin2 servers, when a character is created, a predefined starting inventory is provided. This inventory may include weapons, armor, or some accessories. However, giving enchants to a character upon creation means that the player starts the game with an enchanted item or direct enchant bonuses from the very beginning. This allows players to enter active combat faster, especially on PvP-focused servers.

A Different Approach: Dynamic and Random Enchant System

Standard systems usually assign fixed enchants. For example, all new characters might start with level 7 enchants. However, with a different function, random enchants or dynamic enchant systems can be developed. In this system, when a character is created, a random enchant value is assigned within predefined limits. This value is determined based on server settings with minimum and maximum ranges.

For example:
- Minimum enchant level: 3
- Maximum enchant level: 7
- Enchant type can be randomly selected (Damage increase, Defense boost, HP boost, etc.)

This approach allows each player to have a different starting experience with every new character they create. Additionally, unfair advantages are prevented because not everyone receives the same enchant; instead, they are randomized.

Implementation Steps

1. Modify the character creation event in the Python script.
2. When a player creates a character, randomly select an enchant value/type.
3. Automatically apply the selected enchant to an item in the character's inventory.
4. Ensure synchronization with the database (DB) during this process.

Important Considerations

- Server balance must not be disrupted.
- If enchant levels are too high, new players may compete unfairly with experienced ones.
- Enchant types should be chosen in a balanced way.
- Debugging and testing phases must be completed thoroughly.

Conclusion

A different version of the character starting enchant function can significantly enhance the user experience on Metin2 private servers. By adding randomness and dynamism, it provides a more enjoyable start for players. When properly developed, this system helps your server stand out among others. If you aim to advance in Metin2 private server development, learning and implementing such systems will offer great benefits.
 

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

Benzer konular

Geri
Üst Alt